Как стать автором
Обновить

Компания Семинары Станислава Сидристого временно не ведёт блог на Хабре

Сначала показывать

CLRium: 10 дней до мини-конференции по нутрям .Net

Время на прочтение2 мин
Количество просмотров5.5K
Что такое .Net? Java? Автомагическая система управления вашим кодом. Это целые заповедники со своими правилами, законами, которые нельзя нарушить и которые призваны сделать ваш труд проще, добавляя автоматизм в рутинные задачи. Задачи управления памятью, ресурсами, безопасностью, потоками. В те задачи, на которые вы отвлекаетесь, создавая свой код. Мне нравится сравнивать платформы типа .Net и Java c Матрицей. Вам дают идиллию, в которой вы живете не зная ничего про реальный мир. Программист, получив новые знания, уходит от реальности и начинает терять знания о потоках, процессорных регистрах и вообще, целиком уходит в терминологию фреймворков. Но, хоть реальный мир и менее практичен, знания о реальности вносят коррективы в понимание правил Матрицы и добавляют те возможности, о которых ранее не могло быть и речи.

Сетка докладов




Подробности — за катом
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии6

CLRium. Как создать любую конференцию + плюшки для предстоящей Питерской встречи

Время на прочтение7 мин
Количество просмотров4.7K
Сегодня на улицах Питера славная солнечная погода сменилась хмурым небом. Чем не повод посидеть в Интернете? В этой статье я хотел бы напомнить дорогим читателям что во-первых 19-го июня пройдет встреча .Net разработчиков Питера, на которую мы приглашаем как начинающих, так и профессионалов своего дела. В отличии от других мероприятий по .Net здесь не будет разговоров в стиле Капитана Очевидность, что вышла новая версия фреймворка такого-то. Большинство тем конференций, если постараться, можно найти в Интернете. Не платя много денег за прослушивание уже выложенных тех же самых докладов с прошлых конференций. Эта встреча раскроет исключительно свежие и общие для всех разработчиков знания: как все работает. Что такое поток и как им манипулировать. Что такое домен и как сделать IoC с динамически отгружаемыми типами. Как сделать ветвление потока на два? Причем чтобы второй поток начинал работу с точки ветвления первого? Что нам дает декомпиляция и какими средствами можно заменить PostSharp? Даже если нет особого интереса, просто советую прочитать список тем семинара

И, перед тем как рассказать, как же все-таки организовывалась Московская встреча, объявляю акцию для Санкт-Петербурга, которая действует с сегодняшнего дня:
  • Первые два человека, оплатившие участие, получат по кружке в форме объектива фотоаппарата
  • Не зависимо от даты оплаты каждый десятый, оплативший участие, получает возврат средств. Т.е. идет на мероприятие совершенно бесплатно!
  • Каждый оплативший из диапазона (5, 25, 45,… по счету) в период до 18-го числа включительно имеют право заказать у меня любые книги стоимостью до 1500 рублей (что в полтора раза дороже билета) и они будут торжественно вручены на семинаре (мне необходимо будет скинуть ссылку на интернет-магазин ozon.ru).

А проходить все будет тут ( страница с подробностями, страница с регистрацией, +7 (921) 948-16-08):


Итак, как же организовывалась Московская встреча? Об этом под катом
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии7

CLRium: мини-конференция по нутрям .Net в Санкт-Петербурге

Время на прочтение2 мин
Количество просмотров6.5K
Буквально на прошлой неделе была проведена мини-конференция по внутренностям CLR и как ими можно манипулировать. Сам тренинг очень сильно ждали и хотели увидеть не только в Москве, но и в остальных городах (ссылка на статью на Хабре с опросом). И исходя из того что сам я живу в Санкт-Петербурге, анонсирую его грядущее проведение именно в этом городе. Прошу заметить, что время проведения этой мини-конференции — вечернее. Это сделано для того чтобы Вы смогли сходить на него не отпрашиваясь с работы и не беря отгул. На этот раз день проведения — четверг. А это значит что у вас будет свободен вечер пятницы. А это, согласитесь, прекрасно -)

На текущей мини-конференции появилась новая тема — декомпиляция и обратная компиляция. Разбор библиотеки Mono.Cecil и личного опыта замены ей продукта PostSharp.

На этой мини-конференции будут освещены следующие темы:
  • Управление памятью .Net/Windows/процессора
  • Строение объектов .Net в памяти
  • Передаем объекты между AppDomains без сериализации: без накладных расходов.
  • Как работают исключения? Вклиниваемся в процессы обслуживания исключений.
  • Пишем пул объектов вне .Net памяти
  • Пишем ядро Memory Profiler’а — делаем дамп виртуальной памяти с распознанием .Net объектов в ней.
  • Пишем метод fork(): метод, создающий поток, который стартует с того же места, на котором был вызван fork (ветвление потоков) — C++/CLI/asm
  • Декомпиляция, редактирование и обратная компиляция. Что такое MSIL и так или он прост?


Картинка для затравки (после вызова CloneThread, текущий поток ветвится на два, каждый из которых идет в свою часть условия if):

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии9

CLRium: до конца регистрации — 4 дня

Время на прочтение3 мин
Количество просмотров4.7K
Впереди череда выходных, на которых можно отлично и полезно провести время. И на мой скромный взгляд, когда современный человек имеет тысячи дел, отвлекающих его от возможности расширить свои знания, наличие мастер-класса будет очень полезным. Ведь это как минимум возможность прийти и не отвлекаясь на домашние хлопоты сделать что-то интересное, полезное, а главное – новое для себя.
Несколько дней назад (а кажется, еще вчера) я опубликовал анонс мастер-класса по .Net Framework Internals, который сегодня был назван CLRium. На этой мини-конференции будет показано, как работает любое .Net приложение, и как внести в .Net приложение возможности, которые не закладывались при проектировании платформы. Зачем? Каждый из вас может преследовать свои интересы. Однако, на мой взгляд, можно вывести несколько групп интересов:

  • Вам очень интересно, как .Net Framework работает. Ведь если узнать как оно работает, можно понять ее сущность и начать как-то по-другому относиться в самой платформе. Без единорогов, розовых очков и фей в виде Garbage Collector’а;
  • Вы хотите подтянуть знания чтобы с легкостью отвечать на собеседованиях глубже чем требовалось, тем самым забирая более оплачиваемые вакансии
  • Вам интересно понять как можно легко и непринужденно взламывать .Net приложения в режиме реального времени (в, конечно же, академических целях, не нарушая законодательства и без злого умысла. Ну вы поняли)


Однако чем бы вы ни руководствовались, вы начнете понимать, почему в .Net Framework что-то сделано так или иначе. Откуда растут ноги не правильного подсчета count++ в разных потоках, почему сделали ThreadPool, почему есть потоки, а есть процессы… И на множество других вопросов, корни которых уходят за пределы платформы.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии4

Мастер-класс по нутрям .Net Framework

Время на прочтение3 мин
Количество просмотров20K
< Прежде всего хочу отметить что я имею ввиду под internals. В данном случае я имею ввиду именно внутренние структуры данных .Net Framework. Ведь, находясь под его опекой, что мы видим? Стройную архитектуру классов, строгую типизацию, настройки безопасности. И все вроде как автомагически работает и не надо ни о чем задумываться. И вроде как даже прекрасно. Но вы по сути, находитесь в Матрице. В Матрице, о законах которой вы знаете только понаслышке. Что GC работает именно так, вам сказали. Но Вы ведь не уверенны что это именно так?

Так вот если продолжать метафору, курс направлен на программный выход из границ CLR. Прослушав курс, проделав прямо на месте практические задания, вы научитесь выходить из .Net средствами .Net. Менять структуру типов .Net не прибегая к рефлексии. Вмешиваться в процесс многопоточности, и проделывать по-настоящему шаманские вещи.

Я очень надеюсь, что программа Вам очень понравится, т.к. по сути — это результат собственных исследований, и все что тут есть, нагуглить не получится.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии42

Получение указателя на объект .Net

Время на прочтение5 мин
Количество просмотров27K

Сразу отвечу на вопрос «а зачем?». Просто интересно получить указатель на объект и потом подумать, что с ним особенного можно сделать :) Ведь если получить указатель, то дальше можно сделать все что угодно. Например, становится возможным изучить поведение SyncBlockIndex, или взять MethodTable и изучив, где что находится, изменить его содержимое. Можно мастерить собственные типы данных, не прибегая к Reflection. В общем можно делать много странных вещей, которые относятся больше к спортивному программированию и к саморазвитию. Однако, приступим.


Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии6

Оптимизация и Generics в CLR

Время на прочтение7 мин
Количество просмотров6.7K
В этой статье Джон Скит будет описывать как простейшие конструкции языка замедляют вашу программу и как их можно ускорить.

Как и в любой работе, сваязанной с производительностью приложений, результат может варьироваться в зависимости от условий (в частности, например, 64-разрядный JIT может работать несколько иначе), и в большинстве случаев это не должно вас волновать. Несмотря на это, относительно небольшое количество разработчиков пишут продакшен-код, состоящий из большого количества микрооптимизаций. Потому, пожалуйста, не принимайте этот пост как призыв к усложнению кода ради иррациональной оптимизации, которая якобы ускорит вашу программу. Используйте это только там, где это реально может понадобиться.

Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии18

Проблема циклических зависимостей при инициализации типов

Время на прочтение10 мин
Количество просмотров19K
Некоторые из читателей, которые когда-либо сталкивались с проблемой, описанной в названии статьи, наверняка оставались на работе до поздна и проводили много часов в отладчике. Для других это может быть не более чем игрой слов и жаргонными словечками. Однако, давайте отойдем от жаргона в сторону и раскроем понятия:
  • Инициализация типа: это код, который выполняется чтобы проинициализировать все статические переменные класса и выполнить статический конструктор;
  • Циклическая зависимость: два кусочка кода, которые зависят друг от друга. В нашем случае это два класса, инициализация типов которых требует уже проинициализированного типа другого класса.

Ну и небольшой пример, чтобы показать, о чем идет речь:
using System; 
	
class Test 
{     
    static void Main() 
    { 
        Console.WriteLine(First.Beta); 
    } 
} 
	
class First 
{ 
    public static readonly int Alpha = 5; 
    public static readonly int Beta = Second.Gamma; 
} 
	
class Second 
{ 
    public static readonly int Gamma = First.Alpha; 
}


Результатом выполнения этого кода будет 0
Читать дальше →
Всего голосов 37: ↑34 и ↓3+31
Комментарии20

С Днем Программиста

Время на прочтение1 мин
Количество просмотров8.4K
image

День Программиста традиционно отмечается на 256-й день года. Число 256 выбрано потому, что это количество чисел, которые можно выразить с помощью одного байта. В високосные годы этот праздник попадает на 12 сентября, в невисокосные — на 13 сентября.
Читать дальше →
Всего голосов 288: ↑264 и ↓24+240
Комментарии185