Рубрика «C#» - 134

В этой серии статей хочу рассказать о том, как создать tcp мультиплеерный сервер. Плюс к этому я хочу сделать его лучше, чем он ей сейчас, и научится лучше программировать — с помощью комментариев.

В этом посте мы изучим, как подключиться к серверу, в следующем я планирую разобраться с тем, как передавать цельные пакеты данных.

Первым делом надо создать решение и 2 проекта в нем. Два проекта — это, собственно, сам сервер, а так же тесты к нему. Первым делом сделаем тесты доверительной библиотекой для сервера для доступа к internal c помощью добавления в AssemblyInfo.cs строчк: [assembly: InternalsVisibleTo(«НАЗВАНИЕ ПРОЕКТА»)]. Так же добавим к проекту с тестами библиотеку NUnit (это лишь мое предпочтение). На этом первоначальные приготовления закончены.
Читать полностью »

Дорогие друзья! Мы рады представить вам вторую волну докладчиков конференции DevCon 2015 и открыть вам некоторые темы и очередные подробности технической программы конференции. Ранее мы уже анонсировали более десяти докладчиков DevCon 2015, описание и подробную информацию о их докладах вы можете найти в этой статье.

DevCon 2015: анонс второй волны спикеров и докладов конференции - 1

В самом начале хочется поделиться с вами информацией о зарубежных гостях, которые посетят нашу страну и специально для участников конференции DevCon 2015 расскажут о самом интересном и поделятся своим опытом.

Jon-Square-Cropped Dmitry_Nikonov2 Chigirinsky

Джон Галловей (Jon Galloway) специалист по веб-разработке, ASP.NET и Azure из команды экспертов компании Microsoft в США поделится самыми последними новостями из мира веб-разработки на платформе Microsoft. Джон выступит с двумя докладами, которые будут посвящены самым актуальным новинкам – новой версии фреймворка ASP.NET MVC 6 и внутреннему устройству платформы ASP.NET 5. С нетерпением ждем Джона в России на DevCon 2015! Вы можете следить за его активностью на твиттере @jongalloway и его блоге.

Конференция DevCon 2015 приветствует Дмитрия Никонова – вице-президента по инновационным технологиям компании VIAcode из США, который специально согласился приехать к нам в гости и выступить с докладом на глубокую и важную тему DevOps, управления релизами и организации замкнутого цикла ALM.

Мы снова рады видеть на конференции Евгения Чигиринского – руководителя команды разработчиков и опытнейшего ветерана из компании Microsoft. В этом году Евгений поделится с аудиторией DevCon 2015 своим богатым опытом разработки крупнейших облачных проектов, в том числе MSN.com — крупнейшего портала в интернете. Другой темой с которой выступит Евгений будет тема развертывания облачных приложений в облаке Azure, в том числе с помощью популярной технологии Chef.
Читать полностью »

В прошлом году мы провели две конференции .NEXT: в апреле в Питере и в декабре в Москве. Поскольку в этом году апрель у нас и так перегружен мероприятиями, мы решили перенести питерский .NEXT на начало июня.

Итак, в пятницу, 5 июня в Санкт-Петербурге в гостинице «Пулковская» пройдет третья независимая конференция для .NET-программистов .NEXT. Конференция соберет более 400 человек непосредственно на площадке и более 100 человек в онлайне.

Конференция .NEXT возвращается в Питер - 1

Традиционно среди наших спикеров будут:

  • лидеры .NET-хабов хабрахабра
  • ведущие инженеры JetBrains
  • евангелисты Microsoft

и другие замечательные специалисты. Не обойдется и без спикеров-сюрпризов. Впрочем, об этом в одном из следующих анонсов.

Читать полностью »

Я хочу поделиться со всеми читателями интересной темой, с которой столкнулся совсем недавно, и мне она понравилась. Развитие этой темы доставило мне удовольствие и добавило немного опыта в копилку. Вероятно, многие, а может и нет, сталкивались с пулом соединений БД. После ознакомления с этой интересной опцией мне захотелось написать статью и поделиться ею с вами. Возможно, статья получится немного длинной, но я думаю, что данный пост кому-то все же будет интересно почитать, и его заинтересует данная тема. Может быть наработки с этой статьи кто-то использует в своем проекте, в любом случае, мне будет интересно ее писать и рассказывать ее вам.

Читать полностью »

Оформление документации в Doxygen - 1

Недавно мной была написана статья, посвященная системе документации Doxygen (если вы не знакомы с данной системой, то советую обратить внимание на указанную статью и познакомиться с ней хотя бы в общих чертах). В комментариях к ней был поднят важный вопрос об оформлении документации в Doxygen, и этот вопрос актуален, поскольку зачастую используется стандартное оформление, которое хоть и практичное, но достаточно невзрачное.

В данной статье я отвечу на этот вопрос. Для этого мы рассмотрим общие принципы оформления документации Doxygen, познакомимся с ними, и посмотрим на примерах, чего можно добиться, основываясь на них.
Читать полностью »

Что такое фильтры исключений?

Фильтры исключений (Exception Filters) — новая фича C# 6, которая позволяет устанавливать специфические условия для блока catch. Этот блок будет исполнятся только в случае, если указанные условия выполнены. Проиллюстрируем синтаксис небольшим фрагментом кода:

public void Main()
{
  try
  { 
    throw new Exception("E2");
  }
  catch(Exception ex) when(ex.Message == "E1")
  {
    Console.WriteLine("caught E1");
  }
  catch(Exception ex) when(ex.Message == "E2")
  {
    Console.WriteLine("caught E2");
  }
}

Читать полностью »

Документируем код эффективно при помощи Doxygen - 1

Данная статья представляет собой введение в систему документирования исходных текстов Doxygen, которая на сегодняшний день, по имеющему основания заявлению разработчиков, стала фактически стандартом для документирования программного обеспечения, написанного на языке C++, а также получила пусть и менее широкое распространение и среди ряда других языков.

В этой статье мы сначала познакомимся с самой системой и её возможностями, затем разберёмся с её установкой и базовыми принципами работы, и, наконец, завершим знакомство рассмотрением различных примеров документации, примеров того, как следует документировать те или иные части кода. Словом, познакомимся со всем тем, что позволит вам освоится и начать работать с этой замечательной системой.
Читать полностью »

Семинар по анатомии .Net, Roslyn, CoreCLR, CoreFX, декомпиляции, хакерству - 1

Наверняка, прочитав заголовок, вы уже поняли, что речь идет про CLRium, который уже анонсирован в Санкт-Петербурге (03-04 апреля) и Москве (29-30 мая). Но теперь его оффлайн могут посетить жители города Екатеринбурга.

CLRium — два вечера, время проведения которых подобраны так, чтобы не отвлекать людей от работы и от запланированных на выходные, развлечений и домашних хлопот. Это два вечера, на которых будет рассказано множество эксклюзивного материала, которого нет нигде.

Данный семинар позволит вам отвлечься от бытовухи, которая стала гроздьями расти в наших головах. От энтерпрайсщины, веб-технологий и прочего-прочего-прочего, что килотоннами падает на наши головы ежедневно и в продакшене.

Темы семинара — хобби его авторов, не работа. Потому мы приготовили его с большой любовью к деталям и хотим рассказать максимально глубоко про все, что успели узнать.

Чем мы еще выделяемся? Ценой! Всего за 2,000 можно сходить на семинар и, возможно, получить новое хобби, которое отогреет вас, как программиста и даст не один день беспрерывного кодинга нового расширения на Студию или копания в ядре CoreCLR.

cool Полный список тем выступлений и ссылки на регистрацию — под катом
Читать полностью »

Каждый C#-разработчик знает, что C#-компилятор переводит исходный код программы в промежуточный язык под названием Intermediate Language (IL). А за превращение IL в последовательность машинных команд чаще всего отвечает Just-In-Time-компилятор (JIT). Да, на сегодняшний день есть NGen, Mono AOT, .NET Native, но JIT-компиляция всё ещё лидирует в мире .NET-приложений. А вот работает этот самый JIT, знают далеко не все. Если брать в расчёт только реализацию .NET от Microsoft, то стоит различать JIT-x86 и JIT-x64. А ещё за дверями стоит RyuJIT который уже совсем скоро займёт почётное место основного JIT-компилятора. А если вы любите старые версии .NET, то полезно знать, что в разных версиях CLR логика работы JIT отличалась. Исходники у нас теперь открыты, вы можете их посмотреть и осознать, насколько же это большая и сложная тема. Сегодня мы не будем пытаться охватить её, а лишь кратко посмотрим на несколько интересных особенностей отдельных версий JIT-компиляторов. Итак, сегодня в номере:

  • Почему короткий метод может не быть заинлайнен и как этого избежать
  • JIT-баги: опасные и беспощадные
  • Кто и как разматывает циклы
  • Чем отличается размотка маленьких и больших циклов

Разные версии JIT в .NET - 1Читать полностью »

Чем больше я пишу на C# 6, тем больше убеждаюсь в том, насколько оператор ?. (null coalescing operator) помогает писать чистый простой и понятный код. Сегодня я покажу 4 ситуации, в которых он может быть очень полезен.

Большая вложенность

Рассмотрим следующую задачку. Имеется поставщик, у поставщика есть контактное лицо, у контактного лица есть домашний адрес, у домашнего адреса есть первая строка, а эту самую первую строку мы и хотим найти. Раньше мне пришлось бы писать код с большим уровнем вложенности, проверяя на null каждое значение в цепочке:

var location = default(string);
if (vendor != null)
{
    if (vendor.ContactPerson != null)
    {
        if (vendor.ContactPerson.HomeAddress != null)
        {
            location = vendor.ContactPerson.HomeAddress.LineOne;
        }
    }
}

Но теперь у нас есть C# 6, с ним код можно привести на намного более читаемому виду:

var location = vendor?.ContactPerson?.HomeAddress?.LineOne;

Оператор ?. сделает так, что как только в одном из свойств цепочки окажется null, дальнейшее вычисление выражения производится не будет. Посмотрим ещё несколько примеров.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js