Тренінг Windows OS Internals

П’ять днів у несамовитому темпі – інформація про “як воно там зроблено всередині”, про те які зміни були від версії до версії (Windows NT 4, XP, 2000, 2003, Vista/2008, 7/2008 R2). Перемикання між windbg, Process Explorer, Process Monitor та ще парою десятків інструментів… Доволі виснажливо треба сказати.

Обсяг інформації такий що ідея запам’ятатизаписати усе відпадає в перший же день – усим цим треба користуватися щодня, запам’ятовувати сенсу нема. Добре що на всих тренінгах видають роздруковані матеріали зі змістом курсу до яких потім можна звернутися коли знадобиться.

В цілому вражає які дива можна творити умілими руками використовуючи начебто давно знайомі інструменти.

По суті весь курс є швидким і стислим викладенням книги Windows Internals (http://technet.microsoft.com/en-us/sysinternals/bb963901). Але таку товстелезну і не саму легку для читання книгу навряд чи хто подужає за тиждень. Тим більше що останнє 6-те видання взагалі у двох томах – перший щойно вийшов, другий з’явиться у продажу в найближчий час.

Курс покриває такі теми як: інструменти, загальна архітектура ОС, архітектура ядра, процеси і потоки, пам’ять, системні об’єкти, безпека та аналіз крешів. Взагалі програмування ніякого – тобто жодного написаного рядка коду. Тут все навпаки – у нас вже є весь написаний і скомпільований код і треба розібратися що, де і чому йде не так.

Власне через цей тренінг я нічого і не писав останні дні. Ну та з наступного тижня продовжу Smile

Про силу спрощення і не тільки

Колись я ходив на курси з патернів програмування. Вів їх такий прикольний дядько з багатим досвідом роботи консультантом. Найцінніше було не самі патерни (про які легко можна прочитати будь-де), а приклади з його досвіду.

Одна з таких історій мені найбільше запам’яталася. Розкажу як пам’ятаю…

Сам цей лектор є великим фанатом космічних технологій, польотів і усього іншого. Але найбільший його інтерес це місячна програма. Він зустрічався особисто з багатьма її учасниками, причому не тільки з вченими та інженерами, але і з людьми які приймали участь у виготовленні і збірці залізяк, тренуваннях, транспортуванні, тощо.

Однією з найскладніших проблем була проблема з постійним коригуванням курсу ракети. Звісно приходили радіосигнали з Землі, але йшли вони повільно і повність покластися на них було не можна.

Значить треба розраховувати положення корабля на самому кораблі, а сигнали з Землі приймати лише для уточнення.

Комп’ютери ж в ті часи були розміром з невеличкий будинок, причому обчислювальні потужності їхні були в сотні разів менші ніж у сучасних недорогих телефонів.

І от університет що розробляв комп’ютер для місячної програми створив невеличке диво – комп’ютер розміром з пару шлакоблочин. Такого маленького комп’ютера в історії на той час ще не було. Це була технічна вершина.

А для того щоб результатами розрахунків можна було користувався треба щоб програма обчислювала нове положення тричі на секунду. Один раз з цих трьох допускалося не встигнути розрахувати.

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

І от дуже тривалий час талановиті інженери, програмісти і математики билися над цією проблемою. І все безрезультатно.

А тут один студент зацікавився проблемою і з’ясував що розрахунки дійсно важкуваті – в них враховувалося що Земля обертається навколо Сонця, Сонце рухається, Місяць обертається навколо Землі… І ледь не вплив Юпітера і Урана враховувся. Студент почав задавати питання – а чи так це важливо що Земля рухається навколо Сонця, і чи не достатньо враховувати лише рух Місяця навколо Землі. На це йому спочатку пояснювали що зараз не кам’яний вік і плотмеєвська модель застаріла і не точна. Спочатку пояснювали, потім і слухати перестали.

Студент, у відчаю від того що не може донести свою думку світилам самостійно у вільний час переписав програму зі спрощеною моделлю (це рівнозначно майже як зараз гугл самому переписати) і продемонстрував що вона видає 3 результати за секунду і точність результатів до якогось там знаку така сама.

Після прискіпливої перевірки кораблі літали на Місяць з програмою яку було написано так наче Земля є нерухомим центром Всесвіту навколо якого обертається Місяць (і Сонце).

Лектор приводив цю історію як приклад того що хоча програмна модель повинна відображати об’єкти реального світу та їх співвідношення, іноді треба робити спрощення які не відповідають реальному світу (Земля не центр Всесвіту і обертається разом з Місяцем навколо Сонця), але значно спрощують і реалізацію і архітектуру.

Але мені здається тут є це один важливий патерн. І полягає він у тому що навіть якщо ви знаєте що праві іноді щоб довести свою правоту треба докласти при всій очевидності непропорційно багато зусиль (читай зробити все самому). І виникає така ситуація тоді коли ви знаходитеся далеко від вершини ієрархії в плані позиції, досвіду, звань і нагород. І будьте ви очевидно праві вас не почують і не помітять просто через те що від вас не очікують притомних рішень та ідей такого рівня.

Останній день в bing…

Так, сьогодні мій останній день в bing, з понеділка починаю в новому проекті (теж в МС). А в якому не скажу, спробуйте вгадати Smile В кінці наступного тижня напишу.

Взагалі то у мене весь наступний тиждень буде тренінг з Windows Internals (windbg і інша веселуха) який ведуть Девід Соломон і Марк Русинович (одні з головних розробників Windows). П’ять днів з 9 ранку до 5 вечора. Має бути цікаво.

Буду працювати знову в Редмонді, ближче до дому. Тепер доведеться придумати як бігати чи їздити на велосипеді “в обхід” щоб більше кілометрів виходило.

Свій затишний маленький офіс з вікном міняю на темний але великий офіс без вікна (взагалі будинки у Редмонді нижчі і ширші, тому офісів з вікном там менше).

А потім візьму відпустку на кілька днів і вже після того почну.

Взагалі то збирався брати довгу відпустку, але не склалося з ріщних причин…

Таке тут часто трапляється що люди приходять в нову команду і перше що роблять – йдуть у відпустку. Найкращий варіант бо поки на тобі ніяких задач нема і критично від тебе ніхто не залежить.

А погода у нас зараз приблизно ось така:

Як я ходив на роботу у 2007 році

Це вже пару місяців як ми приїхали, переселилися із тимчасової квартири у ближчу до роботи. Власне там пішки було йти 15 хвилин через інші будівлі МС.

В цьому будинку ми колись жили на другому поверсі, це типу гуртожитку, у кожної квартири свій вхід.

Особливо мене вражали перший час “посадки”. Там наче ширина метрів 5 від сили, а чагарники такі що відчуття дикого лісу виникає. Крім того тут граблями землю не розчесують і поруч із дорогою з неслабим трафіком цілком може бути невеличка калюжа у якій регулярно бовтаються дикі качки та не менш дикі гуси.

Так, це самий що не є Редмонд, серце Microsoft. Близбко 50 будівель у яких працюють близько 50 тисяч людей. І так, це дійсно через дорогу від кампусу.

Ось такі приблизно види відкриваються у деяків з офісів. Хоча бувають і види на дорогу, столовку чи інші будівлі Smile

Ось так зненацька можна вискочити з лісу у якийсь комплекс будівель. По столикам на вулиці видно що десь поруч вхід у столовку.

Вид на те саме місце з протилежної точки (від кута червоного будинку на попередній фотографії):

Трошки фоток кампусу

Фотографував як тільки почав працювати (грудень 2007 року). Це в Редмонді де великий район міста це просто кампуси МС без будь-чого іншого. На кожен комплекс будівель (від 2 до 4 будівель на 500-1500 людей та стільки ж місць на парковці) є ще кафетерій. Про столовки читати тут. Усього будівель в Редмонді у компанії щось близько 50.

Я тоді працював у білдінгу 44 в проекті System Center Service Manager.

В самому Редмонді, і в МС-районі і у просто місті, доволі комфортно. Хоча тім і працює до чорта людей (щось тисяч з 50 щодня приїздить на роботу), проте відчуття того що це місто нема. Так собі – затишне ПГТ.

Цікава особливість – у Редмонді місцева влада не дозволяє зводити будинки вище трьох поверхів і з більше ніж одним рівнем підземних парковок. Чітко видно буває коли є комплекс з, наприклад, трьох будинків, а дин з них (навіть не через дорогу) має п’ять поверхів та 4 рівні підземної парковки. Це значить що вже у Белев’ю будинок Smile

В Редмонді також є річний план вирубки дерев – близько 10 дерев на рік. Навіть якщо дерево росте у твоєму дворі і корінням руйнує фундамент будинку ти не маєш права його зрубати. Чув історію про дядька одного на якого сусід поскаржився що той зрубав красиву сосну. Довелося бідоласі платити по кілька сотень штрафу щодні доки не привезли з парку сосну такої ж висоти (за кілька тисяч вже) і не вкопали на місце вирубаного дерева. В сусідніх містах таких звірств нема наче.

.NET Multithreading

Оце на такий цікавий тренінг я зараз ходю – 2 повні дні, веде Джефрі Ріхтер. Дуже, просто надзвичайно цікаво!

Розказує він просто заслухаєшся. Саме цінне що не просто технічна інформація яку в документації можна знайти, а чому саме так свого часу зробили, до яких проблем це приводило, і як їх вирішували.

Головні поради і висновки: можеш писати однопоточно – так і роби, уникай синхронізації, уникай створення нових потоків (реюзай старі), уникай синхронних операцій. І знову ж таки усе з прикладами коду.

Сильно дістається критики і Windows, і Офісу, і деяким іншим. Дуже хвалить .Net і в захваті від WinRT (нова версія WIN API для Windows 8).

Всьо, похвалився Smile

Офіс з вікном…

Переїхав у новий офіс, тепер з вікном. Фоточки потім якось.

Взагалі в МС офіси розподіляють не по рівню, а по відпрацьованому у компанії часу. Тобто спочатку сидиш у кімнаті з кількома людьми (але не у всих командах такі є). Потім ділиш офіс з кимось. Потім сам сидиш у офісі. А потім вже офіс з вікном займаєш.

Коли команда перебирається у нове приміщення (чи інший поверх) то так само за відпрацьованим часом люди по черзі вибирають собі офіси.

Оскільки конфігурація будівель сильно різна то і процент офісів з вікном різний. В нашому будинку у формі двох лінз приблизно третина офісів мають вікна. А от в білдінгах де сидять команди Windows Phone та XBox добре якщо хоча б шоста частина таких офісів була.

Засада тільки в тому що у нас чим далі від центру тим менші офіси. З іншого боку у мене вікно від підлоги до стелі, ніяких підвіконь. Вид на 405 трасу, Редмонд десь там та гори дуже далеко (16-й поверх).

А ще ми переїздимо в нову квартиру на днях, тому у вихідні мене в інтернетах не шукайте, не буде мене там.

Про наший спортклуб

Фотографій з самого клубу нема бо фотографувати у ньому заборонено.

Знову ж таки я вперше написав подібний пост у старому блозі як тільки почав ходити у спортклуб. Зараз, краще розумыючи як воно все я вам перепишу Smile

Наш козирний клуб називається ProSport Club (http://www.proclub.com/). Самі вони стверджують що це найбільший спортивний клуб Північної Америки що в принципі схоже на правду.

Ціни в клубі просто якісь безбашенно недемократичні – вступ обійдеться в $1000 і щомісячна плата десь в районі $300. Але для працівників МС все це набагато легше – вступ безкоштовний для працівника і членів родини, помісячна плтня безкоштовно для працівників і $70 для дорослих членів родини. Ну та воно і зрозуміло – клуб розташований у безпочсередній близкості до МС і 99.9% відвідувачів складають саме працівники МС.

Поруч із клубом є триповрхова парковка плюс парковки на вулиці, машин на 1500 в сумі. На вході береш рушники які потім кидаєш у спеціальні корзини (вірніше вази) з яких все йде у пральню.

Далі у роздягальню шукати вільну шафку. Засмучує що як і кругом тут шафки чомусь крихітні і вузенькі. В принципі всі речі влазять, але якось з совєцькими шафками, вчетверо більшими, у роздягальнях було простіше. В двері шафок вставляється картка з якою заходив у клуб, набираєш код – закрив, той самий код – відкрив.

В самому клубі (напевно щось забув):

  • 2 басейна для плавання по 25 ярдів (6 доріжок у кожному)
  • 2 басейна для дітей і занять фітнес-груп
  • кілька баскетбольних полів
  • кілька залів для йоги
  • ряди тренажерів – велосипеди, бігові доріжки, сходинки, гребля, лижі… Звісно ж тренажери для качання м’язів
  • Зали з залізом (штанги, гантелі та таке інше)
  • корти для рокетбола, сквоша, тенісу та бідмінтону (по десятку десь кожного)
  • Сауна, парна, джакузі, місця для відпочинку
  • в душових мило, шампунь, кондиціонер
  • біля дзеркал піна для гоління, крем для тіла, рідина для полоскання рота, …
  • спортивний магазин із шаленними цінами
  • ресторан та кафе
  • перукарня, спа-салон, масаж, …
  • автомийка

Причому це лише один з їхніх клубів (в Белев’ю), ще такі є в Сіетлі та парі маленьких міст. В нашому клубі обіцяють побудувати відкритий 50-метровий басейн в цьому році.

Крім усього цього є велика кількість класів, частина навіть безкоштовна. Є теніс, плавання, триатлон, біг, загальний ітнес, пілатес, його, футбол та ще пару десятків. Можні найняти тренерів індивідуально (працівники цього ж клубу).

Є