Епизод 142 – част 2 – .NET 8

Разговор на тема новостите в .NET 8

Директен линк към част 2 (mp3)

Announcing .NET 8
Подобрения в производителността в .NET 8
Announcing ASP.NET 8
Annoncing .NET MAUI in .NET 8
Announcing Entity Framework 8
F# 8
Announcing .NET Aspire
C# 12

Епизод 139 – част 2 – Calcpad

Разговор с Неделчо Ганчовски на тема Calcpad

Директен линк към част 2 (mp3)

Calcpad Web версия

Tags: ,
| Posted in Uncategorized | No Comments »

Епизод 132 – част 2 – C# 10 и .NET ? 6

Разговор на тема C# 10 и .NET ? 6

Директен линк към част 2 (mp3)

Подобрения в производителността в .NET ? 6
Новите неща в C# 10

Епизод 125 – част 2 – IDisposable

Разговор на тема IDisposable в C# и AutoClosable в Java

Директен линк към част 2 (mp3)

Как да имплементираме IDisposable

Епизод 122 – част 2 – Бъдещето на .NET

Разговор на тема бъдещето на .NET

Директен линк към част 2 (mp3)

Blazor WebAssembly
YARP
.NET Multi Platform App UI
Бъдещето на .NET
C# 9.0 (може би)

Tags: , ,
| Posted in Uncategorized | 7 Comments »

Епизод 116 – част 2 – C# 8

Разговор на тема C# 8

Директен линк към част 2 (mp3)

Какво ново в C# 8

Tags: ,
| Posted in Uncategorized | 14 Comments »

Епизод 41 – част 2 – Xamarin

Разговор с Живко Петьов за Xamarin
Тези слайдове (цък) ще ви помогнат да разберете концепциите по-лесно!

Директен линк към част 2 (mp3) (ogg)

Tags: ,
| Posted in Uncategorized | 2 Comments »

Епизод 18 – част 2 – LINQ

Директен линк към част 2 (mp3) (ogg)

Коментираният код:


public class Employee
{
     public string Name { get; set; }
     public decimal Salary { get; set; }
}

IEnumerable employees = ...;  //алтернативно IQueryable;
IEnumerable names =  employees.Where(e => e.Salary > 1000).Select(e => e.Name);
IEnumerable names2 = from e in employees
                             where e.Salary > 1000
                             select e.Name;

Tags: ,
| Posted in Uncategorized | 12 Comments »

Епизод 7

Епизод 7 на Nerds2Nerds записан на 28.06.2013 с основна тема асинхронно програмиране с yield и async/await.

Част 1 – обзор на новините

 

Директен линк към част 1 (mp3) (ogg)

00:50 – наши математици с 6 медала от балканската олимпиада
03:10 – Google Maps вече без облаци
05:10 – Google не искат да трият информация за потребители
15:30 – Аndroid 4.3?
15:50 – Google подготвят гейм конзола базирана на Android
16:50 – колко са космическите станции? Може би две?
18:30 – вграждат софтуер против принтирането на оръжия в 3D принтерите
20:50 – акциите на Apple паднаха под $400
23:40 – Intel имат технология, която позволява да разбират за какво си мислиш в момента
24:50 – Firefox 22 вече е налична
26:00 – Google лансират нов мрежов протокол
30:10 – Какво се случва, ако пиете Кока-Кола вместо вода
33:40 – Kinect на Xbox One няма да е съвместим с PC
38:30 – Конференцията Build
Oracle продукти в Azure
Новости в Azure
Windows 8.1
Internet Explorer 11 с WebGL и SPDY

Част 2 – Асинхронно програмиране с yield и async/await

 

Директен линк към част 2 (mp3) (ogg)

Синхронният код, който обсъждаме в част 2:

public static void Test()
{
    for (int i = 0; i < 10; i++)
    {
        try
        {
            int firstCallResult = GetIntFromService();
            string secondCallResult = GetStringFromService(firstCallResult);
            Console.WriteLine("Result: " + secondCallResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

Примерна асинхронна версия с callbacks:

public static void Test(int iteration)
{
    GetIntFromServiceAsync()
        .ContinueWith(t =>
            {
                if (t.Exception == null)
                {
                    int firstCallResult = t.Result;
                    GetStringFromServiceAsync(firstCallResult)
                        .ContinueWith(t2 =>
                            {
                                if (t2.Exception == null)
                                {
                                    string secondCallResult = t2.Result;
                                    Console.WriteLine("Result: " + secondCallResult);
                                    Continue(iteration);
                                }
                                else
                                {
                                    Console.WriteLine("Error: " + t.Exception.Message);
                                    Continue(iteration);

                                }
                            });
                }
                else
                {
                    Console.WriteLine("Error: " + t.Exception.Message);
                    Continue(iteration);
                }
            });
}

public static void Continue(int iteration)
{
    iteration++;
    if (iteration < 10)
    {
        Test(iteration);
    }
}

Асинхронна версия с async/await:

public async static Task Test()
{
    for (int i = 0; i < 10; i++)
    {
        try
        {
            int firstCallResult = await GetIntFromServiceAsync();
            string secondCallResult = await GetStringFromServiceAsync(firstCallResult);
            Console.WriteLine("Result: " + secondCallResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

Презентация за използване на yield за асинхронно програмиране:
http://channel9.msdn.com/blogs/charles/jeffrey-richter-and-his-asyncenumerator - изисква Silverlight за да се гледа в браузъра, но може да се свали файл.
Допълнителна информация за async/await - http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx

Обща информация за генераторите - http://en.wikipedia.org/wiki/Generator_(computer_programming)

Tags: ,
| Posted in Uncategorized | 89 Comments »