03-04 Апреля в Москве и 29-30 мая — в Санкт-Петербурге пройдет серия семинаров CLRium. У данного семинара нет определенной целевой аудитории, мы рады всем. И начинающим свою карьеру, разработчикам, и махровым, повидавшим виды, архитекторам.
Как люди и хотят, у нас будут не просто технические доклады, без воды и маркетинга. У нас будет много тем, одна из которых — настоящая разминка для мозгов. Мы будем по дампам памяти понимать как устроена CLR и как с ней взаимодействовать не привычным для всех способом — напрямую.
У нас будет:
- Максимально глубокие, отборные доклады по редко-раскрываемым вопросам
- Целый вечер, посвященный исключительно ядру .Net. Как с ним работать «без перчаток», напрямую, со структурами в памяти, без рефлексии.
Чем мы гордимся:
- Наш материал не встретишь в сети Интернет: он полностью авторский
- Материал освещает самые интересные области .Net, которые почему-то не покрыты материалом.
- Мы не берем лишних денег с вас и потому у нас — самая дешевая конференция и всех существующих. 2,000 рублей за два дня — такого не предлагает никто. Это ведь как в магазин сходить.
Анатомия CLR
В данном вопросе я варюсь уже около года и достаточно плотно изучил как устроен CLR в качестве структур данных чтобы рассказать вам о них максимально подробно. Интерес к данному мероприятию должен возникнуть как минимум потому что эта тема практически не освещена в Интернете и знания, которые вы получите, помогут Вам взглянуть на платформу под совершенно новым углом. Также данный раздел знаний по CLR является чрезвычайно интересным. Microsoft с каждым днем давит на нас словом «безопасность». А так ли она безопасна, эта CLR? А так ли много там «магии», позволяющей нам не думать о безопасности? Это авторский проект и является результатом исследований с отладчиком: каково строение.Net объектов в памяти и что с этим можно сделать.
- Во-первых мы посмотрим на реальное строение объектов в памяти
- Во-вторых мы исследуем структуры данных в памяти, относящиеся к построению виртуальных методов, реализации интерфейсов и классов (этого не было на CLRium #1)
- Далее, на основе полученных данных мы построим прокси-тип в памяти
- И исследуем возможность сделать множественное наследование в .Net
- Также попробуем совместить в одном объекте и Java и .Net объект, запустив одновременно оба рантайма (привет, Xamarin)
- После чего, воспользовавшись полученным опытом расшарим объект .Net между процессами так чтобы он одновременно существовал бы в обоих мирах.
- Полученные знания мы используем для ответа на вопрос: какие стандартные конструкции языка приводят к проседанию производительности и каким образом?
- Подключим компилятор и сделаем собственный JIT с блекджеком .
CoreCLR
В этой теме мы во всех подробностях раскроем возможности, которые встают перед вами при использовании открытого ядра .Net
- Рассмотрим архитектуру CLR, доступную нам по исходным кодам
- Построим первое приложение, рассчитанное на кроссплатформенность и работающее на нашем собственном ядре
- Встроим в ядро метрики призводительности ядра, которые будет считывать само приложение
- Запустим ASP.NET приложение на ядре CoreCLR
- [сетка формируется]
Roslyn:
- Мы не будем делать вводную: в интернете все доклады – это вводные и вы их видели
- Мы разберем от простого к сложному, как устроены существующие правила в поставке Roslyn (C# 6 features). Но рассмотрим не список, как это делают на конференциях, а их исходный код
- Как только мы их рассмотрим, мы рассмотрим существующие метрики на Roslyn. Как они написаны, как строятся метрики кода.
- Далее мы напишем не просто «подсчитаем количество букв «а» во всех словах исходных текстов, мы напишем поддержку кортежей для C#:
var (x,y) = CalcCoords(); public (int,int) CalcCoords() { return (0,0); }
- И сделаем Nemerle оператор match
match (i) { | 1 => Console.WriteLine(1) | 2 => Console.WriteLine(2) | x => Console.WriteLine(x) } match (i) { | x when (x < 0) => WriteLine("negative") | x when (x > 36) => WriteLine("more than 36") | x when (x % 2 == 0)=> WriteLine($"valid even number $x") | x => WriteLine($"valid odd number $x") } match (obj) { | iDisp is IDisposable => iDisp.Dispose() | _ => (); }
- Это очень сложные примеры, которые так просто не напишешь за вечерок и это то, что вы хотите найти в сети Интернет, но не можете.
JetBrains Nitra
Почему JetBrains выкупила себе всех разработчиков проекта N2 и сделала ставку на его будущее? Потому что возможно перед нами будущая часть ядра или плагин для ReSharper: тула создания языков и трансляторов к ним. Мы рассмотрим все ее преимущества и попробуем в бою на примере создания парсеров языков DSL.
- Мы рассмотрим по шагам существующие примеры парсинга и попробуем в действии существующие тулы, которые его поддерживают
- Мы сделаем парсер собственной DSL и оценим трудозатраты, которые необходимы на построение собственного языка и поддержки IntelliSense
- Мы рассмотрим создание языка SpecFlow для поддержки тестирования.
RyuJIT
- Мы опишем что нам даст его использование
- Попробуем запустить на нем проект и померить производительность приложения с ним и без него на наборе синтетических тестов
- Рассмотрим сценарии, когда бы его открытость, которая близится с каждым днем, дала бы нам преимущества
CoreFx
Многие говорят что открытость.Net Framework для сообщества и предоставление сообществу возможностей для свободного внесения правок — это плохо и черевато бесконечными багами, небрежным кодом и не стабильным API. Так ли это?
- Итоги полугода открытого.Net Framework CoreFx.
- Возросшая производительность от 10х до 1000х кратной в некоторых местах
- Закрытые баги
- Соотношение кода сообщества к коду команды.Net Framework
- Попробуем скомпилировать и разобрать по косточкам приложение, написанное под CoreFx
Что-то пропустили?
Если по-вашему мы что-то пропустили, пишите в комментах, о чем еще рассказать =)
Почитать и зарегистрироваться
- Ссылка на регистрацию в Москве, 03 — 04 апреля
- Ссылка на регистрацию в Питере, 29 — 30 мая
- На онлайн вещание из другого города можно купить билет по Московской ссылке
- Стоимость участия — 1500 на один день, 2000 — на два дня или на оба дня — через онлайн трансляцию
Контакты:
- Станислав Сидристый
- sunex.development@gmail.com
- +7 (921) 948-16-08
Автор: sidristij