понедельник, 1 августа 2011 г.

Untitled

По тесту Тест Айзенка на интеллект (IQ), 40 вопросов на сайте Психологические тесты у меня следующие результаты:

Правильных ответов - 30 из 40. Коэффициент интеллекта - 135. Уровень Вашего интеллекта находится выше среднего уровня. Поздравляем!!! Или Вы сейчас занимаете в жизни хорошую позицию или у Вас хорошие перспективы! Согласно исследованиям, таким уровнем интеллекта обладает небольшая часть населения, что можно наблюдать ниже.

Вот как распределяются значения IQ у всех людей:

Пройдите и вы тесты

Развлекаловка конечно, но приятно.

Posted via email from Комуникликабельность

вторник, 19 июля 2011 г.

Заглядываем сайту под капот

На хабре промелькнула ссылка на очень любопытный ресурс, который по косвенным и не только признакам определяет какие технологии использует сайт.
Про сайты билайна и МТС он говорит что они хостятся на IIS и крутятся поверх ASP.NET, хотя руками я viewstate в коде странички вроде бы не нашел. А сайт мегафона - на nginx (подозреваю что на пхп).
В общем то ресурс выдает кучу инфы, которая будет полезна разработчикам. 
Кроме этого, вспоминается ресурс, который умеет распознавать популярные CMS движки. Правда про сайты мобильных операторов он мало что говорит, но остальное угадывает достаточно неплохо.

Posted via email from Комуникликабельность

четверг, 12 мая 2011 г.

dotPeek похоже "жульничает"

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

Тогда закрались в мою голову подозрения о том, что тулза вовсе не дезасемблирует код, а просто находит по атрибуту CodeBase сборки файлик, где лежат исходники и открывает его. Чтобы не быть голословным – открываю сборку в dotPeek, меняю файлик без перекомпиляции и получаю вот такую картину:

Image001

Отсюда вывод – будьте осторожны, когда будете применять тулзу чтобы узнать, актуален ли код сборки.

UPD:

Нашел в опциях интересную галочку

Image002

Она как раз и определяет, будет ли использоваться для отображения кода информация из pdb файликов.

Posted via email from Комуникликабельность

пятница, 15 апреля 2011 г.

Бажная терминология

Image001
Гейзенбаг (англ. Heisenbug) — термин, используемый в программировании для описания программной ошибки, которая исчезает или меняет свои свойства при попытке её обнаружения. Примером могут являться ошибки, которые проявляются в окончательном варианте программы (релизе), однако не видны в режиме отладки, или ошибки синхронизации в многопоточном приложении. Гейзенбаги очень сложно искать, поскольку они проявляются в зависимости от случайных факторов и воспроизводятся нестабильно (свою роль играет и сложность анализа состояния многопоточной системы). Поэтому их стараются отсечь еще на этапе проектирования, продумывая процедуры синхронизации.

Борбаг (англ. Bohr bug) — термин, используемый в программировании для описания программной ошибки, которая, в противоположность гейзенбагу, не исчезает и не меняет своих свойств при попытке её обнаружения. Это слово, в отличие от слова «баг», в русском языке практически не используется. Близкий по значению русскоязычный аналог — «стабильный» или «устойчивый» баг.

Мандельбаг (англ. Mandelbug) — термин, используемый в программировании для описания программной ошибки, чьё поведение столь сложно, что выглядит хаотичным. Это также подразумевает, что говорящий полагает, что это скорее борбаг, чем гейзенбаг.

Шрёдинбаг (англ. Schroedinbug) — термин, используемый в программировании для описания программной ошибки, которая никак не проявляет себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде или попытается использовать программу в необычных условиях и осозна́ет, что система вообще не могла работать при наличии такой ошибки. После этого программа перестаёт работать вообще до тех пор, пока ошибка не будет исправлена. Хотя это звучит невероятно, некоторые программы содержат в себе такие ошибки.

Баги фазы луны

Термин «фаза луны» зачастую возникает, как понятие о глупом параметре, от которого может зависит баг, после того, как все утомились искать истинные причины. Jargon File отмечает два редких случая, в которых проблемы с обработкой данных действительно вызваны фазами луны.

Статистические баги

Статистические баги можно отловить только при многократном запуске фрагмента кода. Обычно эти ошибки появляются при создании случайных или псевдослучайных результатов. Например, программа, равномерно распределяющая точки по поверхности, скажем, сферы, в результате демонстрирует, что в нижнем полушарии значительно больше точек, чем в верхнем. Пошаговое исполнение создания одной точки совершенно не может пролить свет на происхождение ошибки, потому что невозможно назвать каждый отдельный результат неверным — в конце концов, он же должен быть случайным! Проблема становится понятной только при создании множества точек. Стандартные приемы отладки, вроде проверки начальных и конечных условий, тоже мало чем помогут. Похожие пробемы часто случаются в численных методах, где каждая конкретная операция точна в пределах выбранной погрешности, но после большого числа итераций накапливаются ошибки, особенно при наличии статистического смещения.

Альфа-баг

Термин альфа-баг происходит от исторического феномена «ошибок железа», вызванных излучением альфа-частиц. Эти частицы, появляющиеся случайным образом, могут повлиять на электроны в RAM и превратить 0 в 1 или наоборот. То есть термин используется для описания типа ошибок, продемонстрировавших неверный результат, но анализ кода говорит, что баг невозможен. Таким образом, единственный вариант разгадки — это альфа-частицы, повлиявшие на электрон. Обычная причина таких багов — ошибки билда или сборки, или какой-то необычный дефект памяти.

Posted via email from Комуникликабельность

среда, 9 марта 2011 г.

SOLID демотивация

Нашел классные демотиваторы SOLID принципов.

Image001

Принцип единственности ответственности - На каждый объект должна быть возложена одна единственная ответственность.

Image002

Принцип открытости\закрытости - Программные сущности должны быть открыты для расширения, но закрыты для изменения.

Image003

Принцип подстановки Лисков - Объекты в программе могут быть заменены их наследниками без изменения свойств программы

Image004

Принцип изоляции интерфейса - Много специализированных интерфейсов лучше, чем один универсальный.

Image005

Принцип инверсии зависимостей - Зависимости внутри системы строятся на основе абстракций. Модули верхнего уровня не зависят от модулей нижнего уровня. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Image006

Posted via email from Комуникликабельность

воскресенье, 23 января 2011 г.

Роман об управлении проектами.

На одном дыхании прочитал «Deadline. Роман об управлении проектами» Тома ДеМарко. Читается легко и непринужденно. Полезно разнообразить техническую литературу и блоги такими книгами. По ходу чтения ловил себя на мысли что некоторые моменты уже подмечал в текущей работе. Другие были достаточно новы. В общем, чтение зря явно не прошло.

Posted via email from Комуникликабельность

суббота, 22 января 2011 г.

Игрушка с генетическим алгоритмом

Весь вечер играюсь в игрульку для гиков и видимо сумасшедших который я удачно подглядел на хабре. Суть в построении машины с помощью гинетического алгоритма. Прикольно смотреть и предсказывать в самом начале сколько примерно проедет тот или иной вариант мутаций и скрещивания.

Для 34 поколения большинство вариантов уже вполне приличненько ездят. Проблема пока только в том, чтобы взбираться в большие крутые горки. Видимо разработчик не предусмотрел что есть вообще вариант забраться так далеко.

До правдоподобности игрушке конечно далековато, но все равно прикольно и симпотично.

Posted via email from Комуникликабельность