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

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

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

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


    UPD: Чтобы было видно, напишу тут: по ссылке ниже вы попадете на timepad площадку регистрации билетов. Там вы билет Бронируете. Я вам пришлю письмо с подробностями как оплатить

    Программа мастер-класса



    Основы управления памятью в .Net и не только

    • Small Objects Heap/Large Objects Heap
    • Thread Stack, High / Low Frequency Heaps, Code Heap, Stubs Heap
    • Ephemeral Segments
    • Pages, Memory mapped files

    Как устроены объекты в памяти

    • Как устроен любой Object? Что он содержит?
    • MethodTable
    • EEClass
    • Son Of Strike (SOS) расширение отладчика для просмотра внутренностей объектов .Net
    • Основные команды отладчика
    • Рассмотрим что в реальности представляют из себя объекты в памяти
    • Считаем sizeof() любого .Net типа (стандарнтый sizeof считает только по Value типам)

    Практика: базовые трюки

    • Получаем указатель на объект.Net, исследуем его реальную структуру
    • Практически интересный пример: передаем объекты между AppDomains без сериализации: без накладных расходов.
    • Практически интересный пример: загружаем сборку так что ее типами можно пользоваться в текущем домене, но при этом ее можно отгрузить.
    • Немного развлечемся: создадим RefType экземпляр на стеке
    • Что такое Исключение? Какие структуры данных создаются при написании try/catch/finally? Как их получить и как ими управлять? Почему исключение безошибочно пробрасывается через методы, которые не поддерживают исключения?
    • Помещаем в цепочку свой обработчик, который будет просто слушать все что через него идет.
    • Вручную, без catch перехватываем исключение
    • Как реализуется catch(){ throw; }

    Практика: продвинутые трюки

    • Разрабатываем класс для выделения .Net объектов вне .Net памяти (вне SOH/LOH)
    • Пишем пул объектов вне .Net памяти
    • Вызываем конструктор по указателю — избавляемся от тормозов рефлексии
    • Практически интересный пример: Пишем ядро Memory Profiler’а — делаем дамп виртуальной памяти с распознанием .Net объектов в ней.
    • Создадим тип вручную прямой генерацией внутренних структур CLR (таблиц виртуальных методов и интерфейсов)
    • Практичеcки интересный пример: Расшарим .Net объект между процессами (через использование Paging файла)
    • Практичеcки интересный пример: Пишем метод fork(): метод, создающий поток, который стартует с того же места, на котором был вызван fork (ветвление потоков) — C++/CLI/asm


    Когда и где?
    • 16-го мая, в Пятницу, с 18:00 до 23:00, Москва, 1-й Волоколамский проезд, д.10, стр. 3. Так что если отпрашиваться с работы, то совсем не на долго. Если будет много регистраций, то вторую часть проведем в субботу. Тут все welcome: пишите на почту, кому когда удобнее (sunex.development@gmail.com)


    Страница регистрации:


    Что от вас надо:
    • Прийти с ноутбуком и установленной Visual Studio. Я вам на почту скину перед началом ссыль на DropBox или Google Drive с файлами (будет MSIL, C++/CLI, которые писать долго без подготовки, а потому — можем все не успеть). Их — надо будет скачать и проверить.


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

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Я хочу в своем городе! Shut up and take my money!!!

    А в каком городе? (и вы бы при этом пошли бы)

    Luxoft
    94,39
    think. create. accelerate.
    Поддержать автора
    Поделиться публикацией

    Комментарии 42

      +1
      Место проведения
      Default City, 1-й Волоколамский проезд, д.10, стр. 3
        +1
        Да, спасибо )) Сам из Питера, про Москву забыл уточнить :)
        +2
        Киев.
          –2
          Киев (кармы для голосования нет)
          +1
          Прийти с ноутбуком и установленной Visual Studio

          Розеток на всех хватит?
            +1
            Хватит, разберемся -)
              +1
              Зарегистрировался, жду подробностей по вариантам оплаты )
            +2
            а видео записи не будет?
              –5
              нет, записи не будет
                +8
                Если у организаторов мастер-класса нет возможности записать, может стоит регистрирующимся предложить прийти со своей видео-техникой?
                  +7
                  А может все таки подумаете об организации профессиональной видеозаписи? Темы интересные, но нет возможности приехать. Лично я буду готов заплатить за запись.
                +1
                Очень жду вас в Питере. .Net internals для меня всегда ассоциировалось с Рихтером, однако судя по вашей программе, у вас будет интереснее. Планируется ли онлайн трансляция для мероприятия в Москве?
                  –5
                  Трансляции не планируется: встретимся уютной компанией и будем кодить -))
                  +6
                  А что делать тем, кто очень хочет послушать, но возможности приехать нет?
                    +4
                    Я бы предложил город Минск, думаю, многие тут заинтересуются)))
                      +1
                      Прийти с ноутбуком и установленной Visual Studio

                      Зарегистрировался. Visual Studio какой версии?
                        +1
                        2010+, на любой -)
                        +2
                        И всего за 1000 рублей?! Блин, даже обидно что так далеко от Москвы. :(
                          0
                          Город Самара, ждем! )
                            +2
                            Таганрог
                              +3
                              Отдам 1100 рублей пейпалом за видео.
                                0
                                В. Новгород.
                                PS У нас так мало всего интересного происходит, а тут такое…
                                  0
                                  Уважаемые хабравчане, может заодно подскажете, как Москвичей заманить? Есть мысль в софтверные компании писать. Но так это надо знать кому конкрентно писать ))
                                    +2
                                    Ростов. С удовольствием бы сходил.
                                      +4
                                      Интересно какие из этих практических трюков автор реально юзал в продакшне :)
                                        +1
                                        +1. Я за 10 лет дотнета ничего хитрее чем P/Invoke не использовал.
                                        0
                                        Если будет много регистраций, то вторую часть проведем в субботу.

                                        А уточните, что значит эта фраза? Вы всех зарегистрировавшихся разобьете на две группы?
                                        Я, например, очень хочу пойти именно 16 мая, а вот 17 уже никак физически не могу. Как записаться конкретно на 16?
                                          +2
                                          Это значит, что 16 мая мастер-класс состоится точно. А вот если народу наберется очень много, получится что будет сложно вести практическую часть. Тогда я проведу 17-го числа повторно, и при этом свяжусь с зарегистрировавшимися: может кому-то будет удобнее 17-го.
                                            0
                                            Все ясно, спасибо за ответ!
                                          0
                                          Онлайн
                                            0
                                            Вызываем конструктор по указателю — избавляемся от тормозов рефлексии
                                            А я всегда для этого делал Expression и компилил. Работает быстро и без всякой магии.
                                              –1
                                              А почему это платная встреча, да ещё и без видеозаписи? Попахивает бизнес-тренингами. «Выброси свой томик Рихтера, это абсолютно уникальная информация!»

                                              Стоимость проведения легко свести к минимуму, устроив вебинар — это не повод драть деньги с людей, тем более такой крупной конторе, у которой наверняка нашлись бы средства.
                                                +1
                                                Ну я просто работаю в Люксофте, а так это личная инициатива.
                                                  +1
                                                  Так и что мешает сделать хотя бы запись? (Если нет возможности, то силами других участников, как выше предлагали. Вроде даже заплатить за нее согласны люди)
                                                0
                                                А я хочу в Южно-Сахалинске! Даже нет, не так… Я очень хочу в Южно-Сахалинске! :)
                                                  0
                                                  Томск
                                                    +1
                                                    Владивосток!
                                                      0
                                                      Уверен что автор проделал большую работу, с удовольствием схожу если будет в СПб.

                                                      Но было бы интересно услышать от посетивших отзывы, насколько информация действительно оригинальна, потому что на вскидку вспоминаются следующие материалы на схожие темы:
                                                      msdn.microsoft.com/en-us/magazine/cc163791.aspx
                                                      * Thread Stack, High / Low Frequency Heaps, Code Heap, Stubs Heap /
                                                      * Как устроен любой Object? Что он содержит?
                                                      * MethodTable
                                                      * EEClass
                                                      * Рассмотрим что в реальности представляют из себя объекты в памяти
                                                      msdn.microsoft.com/en-us/magazine/cc163528.aspx
                                                      * SOS
                                                      msdn.microsoft.com/en-us/library/ee851764(v=vs.110).aspx
                                                      * Ephemeral Segments
                                                        0
                                                        Отвечу сам.
                                                        — Первая ссылка — описание, основанное на MS Shared Source CLI. В общем — это почти .Net, только не он. Это ядро CLR, которое не нарушает ECMA-334, но при этом не является тем что есть в .Net Framework. Т.е. вы не сможете по описанным там структурам данных что-то делать. Но сможете примерно понять как все работает.
                                                        — Вторая и третья ссылки — SOS. По SOS ничего нового я не скажу, но и говорить много не буду. Просто упомяну что он есть, и как его использовать. По нему есть превосходная книга Advanced .Net Debugging
                                                        0
                                                        А почему все вопросы и уточнения про запись игнорируются?:) (не считая первого ответа «нет, не будет»)
                                                          0
                                                          потому что я до сих пор думаю что с этим делать, и ничего конкретного пока написать на тот момент не мог
                                                        • НЛО прилетело и опубликовало эту надпись здесь

                                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                          Самое читаемое