вторник, 19 июля 2011 г.
Заглядываем сайту под капот
четверг, 12 мая 2011 г.
dotPeek похоже "жульничает"
Сегодня вся моя лента гугларидера мельтешит сообщениями о том, что вышел dotPeek. Скачал его, установил и запустил. И очень уж меня поразило что код, который показал мне этот инструмент был до жути похож на мой. Причем похож до последнего пробела, все комментарии были на месте (при компиляции все комментарии, и тем более пробелы игнорируются).
Тогда закрались в мою голову подозрения о том, что тулза вовсе не дезасемблирует код, а просто находит по атрибуту CodeBase сборки файлик, где лежат исходники и открывает его. Чтобы не быть голословным – открываю сборку в dotPeek, меняю файлик без перекомпиляции и получаю вот такую картину:
Отсюда вывод – будьте осторожны, когда будете применять тулзу чтобы узнать, актуален ли код сборки.
UPD:
Нашел в опциях интересную галочку
Она как раз и определяет, будет ли использоваться для отображения кода информация из pdb файликов.
пятница, 15 апреля 2011 г.
Бажная терминология

Борбаг (англ. Bohr bug) — термин, используемый в программировании для описания программной ошибки, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения. Это слово, в отличие от слова «баг», в русском языке практически не используется. Близкий по значению русскоязычный аналог — «стабильный» или «устойчивый» баг.
Мандельбаг (англ. Mandelbug) — термин, используемый в программировании для описания программной ошибки, чьё поведение столь сложно, что выглядит хаотичным. Это также подразумевает, что говорящий полагает, что это скорее борбаг, чем гейзенбаг.
Шрёдинбаг (англ. Schroedinbug) — термин, используемый в программировании для описания программной ошибки, которая никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит невероятно, некоторые программы содержат в себе такие ошибки.
Термин «фаза луны» зачастую возникает, как понятие о глупом параметре, от которого может зависит баг, после того, как все утомились искать истинные причины. Jargon File отмечает два редких случая, в которых проблемы с обработкой данных действительно вызваны фазами луны.
Статистические баги можно отловить только при многократном запуске фрагмента кода. Обычно эти ошибки появляются при создании случайных или псевдослучайных результатов. Например, программа, равномерно распределяющая точки по поверхности, скажем, сферы, в результате демонстрирует, что в нижнем полушарии значительно больше точек, чем в верхнем. Пошаговое исполнение создания одной точки совершенно не может пролить свет на происхождение ошибки, потому что невозможно назвать каждый отдельный результат неверным — в конце концов, он же должен быть случайным! Проблема становится понятной только при создании множества точек. Стандартные приемы отладки, вроде проверки начальных и конечных условий, тоже мало чем помогут. Похожие пробемы часто случаются в численных методах, где каждая конкретная операция точна в пределах выбранной погрешности, но после большого числа итераций накапливаются ошибки, особенно при наличии статистического смещения.
Термин альфа-баг происходит от исторического феномена «ошибок железа», вызванных излучением альфа-частиц. Эти частицы, появляющиеся случайным образом, могут повлиять на электроны в RAM и превратить 0 в 1 или наоборот. То есть термин используется для описания типа ошибок, продемонстрировавших неверный результат, но анализ кода говорит, что баг невозможен. Таким образом, единственный вариант разгадки — это альфа-частицы, повлиявшие на электрон. Обычная причина таких багов — ошибки билда или сборки, или какой-то необычный дефект памяти.
среда, 9 марта 2011 г.
SOLID демотивация
Нашел классные демотиваторы SOLID принципов.
Принцип единственности ответственности - На каждый объект должна быть возложена одна единственная ответственность.
Принцип открытости\закрытости - Программные сущности должны быть открыты для расширения, но закрыты для изменения.
Принцип подстановки Лисков - Объекты в программе могут быть заменены их наследниками без изменения свойств программы
Принцип изоляции интерфейса - Много специализированных интерфейсов лучше, чем один универсальный.
Принцип инверсии зависимостей - Зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
воскресенье, 23 января 2011 г.
Роман об управлении проектами.
На одном дыхании прочитал «Deadline. Роман об управлении проектами» Тома ДеМарко. Читается легко и непринужденно. Полезно разнообразить техническую литературу и блоги такими книгами. По ходу чтения ловил себя на мысли что некоторые моменты уже подмечал в текущей работе. Другие были достаточно новы. В общем, чтение зря явно не прошло.
суббота, 22 января 2011 г.
Игрушка с генетическим алгоритмом
Весь вечер играюсь в игрульку для гиков и видимо сумасшедших который я удачно подглядел на хабре. Суть в построении машины с помощью гинетического алгоритма. Прикольно смотреть и предсказывать в самом начале сколько примерно проедет тот или иной вариант мутаций и скрещивания.
Для 34 поколения большинство вариантов уже вполне приличненько ездят. Проблема пока только в том, чтобы взбираться в большие крутые горки. Видимо разработчик не предусмотрел что есть вообще вариант забраться так далеко.
До правдоподобности игрушке конечно далековато, но все равно прикольно и симпотично.
воскресенье, 12 декабря 2010 г.
Сводки с полей...
Несколько забил на блог, пора исправляться. За последнее время у меня произошло несколько достаточно крупных событий которыми хотелось бы поделиться.
Номер раз. Съездил в столицу нашей славной родины на одно из самых значимых событий в области ИТ - Платформу 2011. Ощущения на «горячую голову» высказывать не стал, а теперь уже достаточно поздно о них говорить. Может еще выложу материал, только скорей свое видение, а не отчет о конференции.
Номер два. Сдал на этой же самой платформе экзамен на статус MCTS по WCF 4. Тут интересней, поскольку к экзамену практически не готовился и сдавал его по принципу «авось пронесет». Чувствую что повезло только раз, так что к следующим буду готовиться основательно.
Номер три. Читаю «Чистый код» Роберта Мартина (спасибо коллеге за бумажный вариант). Постигаю умные мысли, ругаюсь, протестую, в общем пропускаю текст сквозь призму собственного сознания.