There’s a string of weekends ahead where you can have a great and rewarding time. And in my humble opinion, when the modern man has thousands of things to do that distract him from the opportunity to expand his knowledge, having a workshop would be very helpful. After all, it is at least an opportunity to come and not be distracted by household chores to do something interesting, useful, and most importantly – new for yourself.
A few days ago (and it seems like even yesterday) I posted Announcement of a master class on .Net Framework Internals , which today was called CLRium. This mini-conference will show how any .Net application works, and how to bring features into a .Net application that were not built into the design of the platform. Why? Each of you may have your own interests in mind. However, in my opinion, you can derive several groups of interests :
- You’re very curious about how the .Net Framework works. After all, if you know how it works, you can understand its essence and start treating the platform itself somehow differently. Without unicorns, rose-colored glasses and fairies in the form of Garbage Collector;
- You want to tighten up your knowledge so you can easily answer job interviews deeper than required, thereby winning better-paying jobs
- You’re curious to understand how you can easily and casually hack into .Net applications in real time (for academic purposes, of course, without breaking the law and without malice. You get the idea)
However, whatever you are guided by, you will start to understand why something is done this way or that way in the .Net Framework. Where do the wrong count++ counts in different threads come from, why they made ThreadPool, why there are threads and why there are processes… And many other questions rooted outside of the platform.
I don’t want to repeat myself, and it’s not customary on Habra, but I can lift the veil a little on what’s to come.
For a rough understanding of the level of problem solving, here’s a link to one of my articles in the past :
In addition, the following topics will be covered :
- Fundamentals of .Net/Windows/processor memory management
- How .Net objects are arranged in memory, how type information is stored. How inheritance is implemented at the physical content level of objects
- Son Of Strike (SOS) Debugger extension to look inside of .Net objects
- Counting sizeof() of any .Net type (standard sizeof counts only for Value types)
- Transfer objects between AppDomains without serialization : no overhead.
- Uploading build so that its types can be used in the current domain, but its can be shipped
- How do exceptions work? Cut into the exception maintenance processes.
- Develop a class to allocate .Net objects outside of .Net memory (outside SOH/LOH)
- Writing an object pool outside of .Net memory
- Writing Memory Profiler kernel – Make a dump of the virtual memory and recognize the .Net objects in it.
- Disseminate the .Net object between processes (by using a Paging file)
- We write a method fork(): a method which creates a thread which starts from the same place where fork was called (thread branching) C++/CLI/asm
When and where?
- On Friday, May 16th. , from 18:00 to 23:00, Moscow, 1st Volokolamsky proezd, 10, p. 3. 3. So if you have to be absent from work, then not for a long time at all. If there will be a lot of registrations. We will hold a repeat master class on Saturday. It’s all welcome: email me when it’s more convenient for you (email@example.com).
Registration Page :
- http://braingems.timepad.ru/event/120644/ This is a system for making reservations. After booking, you will receive an email with instructions on how to pay.
What do I need from you?
- Come with a laptop and installed Visual Studio. I’ll email you a link to DropBox or Google Drive with the files (there will be MSIL, C++/CLI, which will take a long time to write without preparation, and therefore – may not have time for everything). We will need to download and check them.
A picture for introductory purposes (after calling CloneThread, the current thread branches into two threads, each of which goes to its own part of the if condition):
See you there!