среда, 7 сентября 2011 г.

Прекращаем писать код

Это выступление отличается от всех виденных мною ранее. Не знаю как кого, но меня не пугает уместный мат и цитаты с udaff.com (все-таки под одними интернетами ходим). Итак, выступление проводилось в рамках конференции Devpoint 2 (октябрь 2010 года). Это как раз то мероприятие для которого в твиттере искали инвалида-колясочника, чтобы он встал и вышел во время доклада про IE9 :). Докладчик Андрей Аксенов. Разработчик движка для Санитаров подземелий, Kings Bounty, а также кучи никому неизвестных игрушек :). Автор популярного поискового движка Sphinx, который используют Mozilla, WordPress, Slashdot, Хабр и многие другие. В общем и целом этому человеку однозначно есть о чем поведать публике.
Повествует Андрей о следующих вещах (презентация здесь):
0. Для начала он предупреждает слушателей, что выложит весь свой опыт во всю длину на стол, а также то, что доклад ничего нового не откроет и все все уже знают.
1. Затем приводит классификацию программерских психотипов. Идеального программиста в которой само собой не существует. Все косячат и это надо принять за аксиому. Самым важным конечно в этой классификации это откровение о том, что большинство из этих психотипов докладчик уже видел в зеркале.
2. Далее следует рассказ на примерах о том как важно не впадать в крайности. Затрагиваются очень много вопросов: оптимизация, лишний код, проверки в коде, синдром NIH, изобретение велосипедов, тестирование и т.д. Все это преподнесено как набор дуализмов, которые должны показать как важно всегда находить золотую середину.
3. И за всем этим следуют императивы и "прописные истины", услышав которые каждый одобрительно кивает и разводя руками заверяет что-то типа "Ну, это все знают!". Однако при этом в реальной жизни этими правилами как минимум пренебрегает, а то и вовсе не использует.
Теперь о личных впечатлениях. Я смотрел это видео уже два раза (в конце прошлого года и этим летом) и эффект после просмотра был одинаковый: хочется действовать. И не просто чем-то заниматься, а делать свою работу оптимально и эффективно, не бросаясь при этом в крайности. Хочется мыслить трезво и резво, а также делать только то, что действительно важно.
Андрей повторяет не раз мысль о том, что доклад глубоко саморефлексивный. И это действительно так. Мне очень понравилась часть с классификацией типов программистов. Некоторых я сам уже видел в зеркале, а некоторых других уверен еще обязательно увижу.
Конечно, опыт докладчика большим образом относится к геймдеву (все-таки N лет в разработке игр сказываются), но поднимаемые темы выходят далеко за пределы программирования игр. И для меня главная цель выступления кроется в том, чтобы призвать слушателя обратиться к самому себе и побудить его к совершению осознанных поступков.
Отдельно отмечу презентацию: мысли лаконично выражены и разбавлены яркими подходящими иллюстрациями. Еще понравилось то, как прекрасно докладчик работает с аудиторией. Очень быстро затягивает и не отпускает ее внимание до конца доклада. У меня этому одно простое объяснение: потому что программист для программистов.
Ну и как обычно запомнившиеся и не связанные между собой тезисы:
  • Невозможно вот так вот сразу начать писать код правильно. Для начала его нужно ПЕРЕСТАТЬ ПИСАТЬ НЕПРАВИЛЬНО.
  • С наездами в сторону javadoc согласен. Не хочется начинать телегу про самодокументирующийся код, но в реальности в комментариях больше всего нуждаются именно сложные участки кода. Опять же важен здравый подход и умение видеть, где действительно необходимо пояснять и комментировать.
  • Преждевременная оптимизация должна быть востребована. Не стоит зашиваться в мелочах, пока неизвестно как работает сама система и где действительно ее слабые места.
  • Боязнь лишнего кода. Как часто бывает увидев, что несколько строчек дублируются, я начинаю судорожные метания по коду, ввожу по 3-4 дополнительных класса, произвожу обобщения, решаю метапроблемы и... И нахрена я это делаю? Когда можно тупо скопировать 4 строчки кода и продолжить работу. В общем, вовремя остановится - это безумно необходимый навык.
  • Программирование не искусство, а ремесло. Сравнивать с проституцией я думаю слишком радикально, но важно понимание, что это всего лишь инструмент, помогающий решать проблемы.
  • Тесты должны запускаться в один клик. Иначе тестирования нет.
  • Абсолютно согласен с тем, что задействовать мозг на полную приходится всего несколько раз в год, а остальное время достаточно мозжечка и рук, дабы жонглировать уже известным. Это правда. Нечего о себе мнить, что ты решаешь мегасложные задачи, когда только и занят тем что рисуешь формочки для банков. Решать хорошие, на самом деле сложные алгоритмические задачки на производстве выпадает ой как редко. Все больше сил уходит на кодирование очередной формочки; настройку системы, модулей и их взаимосвязей; написание проверок, тестов и прочего. Конечно, архитектурные задачи тоже возникают, но их решение опять же больше зависит от опыта и набитых шишек.
  • И вообще, программист – это небольшая природная склонность и 10-20 лет тренировок.
Резюмируя скажу, что уж очень понравился мне доклад и ненавязчивая, но при этом призывающая рефлексировать, манера исполнения. Теперь думаю даже взять за правило, пересматривать это видео, скажем, раз в год. Потому что реально вправляет мозги и заставляет трезво мыслить.

среда, 24 августа 2011 г.

Одиннадцать друзей Firefox

Наконец сумел победить в себе динозавра и решил перейти с покрывшейся мхом третьей версии лисьей мордашки (какое прозаическое начало поста!). Тут же принял решение форсировать события и сразу обновился на свежевыпущенную 6-ую версию. Обновление встало легко. Пока рыжая морда ничуть не наглая в отношении к ресурсам. Все довольно шустро и казусов в работе вроде не случалось. Единственное, отказались работать некоторые расширения из-за отсутствия совместимости. Усмирить их помог Add-on Compatibility Reporter (спасибо Экслеру за наводку).

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

Теперь о расширениях. В свое время, когда я переезжал c Maxthon на FF, то стащил у Алекса Экслера кучу мегаполезных дополнений (за что ему огромный респект). Так случилось, что большинство требований к работе браузера у нас совпадают (кроме того, что мне важны разные девелоперские тулзы: Firebug, Page Speed, и т.п.), однако и свои интересные находки у меня имеются. Вот о них я и хочу рассказать. Итак, путем несложных подсчетов всего расширений у меня оказалось не 11 (как в желтушном заголовке этого поста), а в два раза больше – целых 22 штуки. Ниже я попытался их немного описать, предварительно разделив их по сфере использования. Перейти на страницу расширения можно кликнув по его иконке. Также кое-где для наглядности снабдил описание скриншотами.

среда, 10 августа 2011 г.

Jelastic - манна небесная для java-разработчика

Jelastic — это облачный хостинг для java приложений. Казалось бы, что их ведь пруд пруди. Ан нет. Этот совсем другой. И я от него просто в восторге.

Разработчику хоть раз разворачивавшему веб-приложение на java не стоит объяснять сколько времени тратится впустую на рутинные действия (установка ОС, БД и сервлет-контейнера, их настройка и прочее). В Jelastic же ничего устанавливать не нужно. Все идет "из коробки" и настроено сразу. Удобный доступ к конфигам через дружелюбный веб-интерфейс, управление БД (phpMyAdmin для MySQL). В общем развернуть и задеплоить приложение теперь можно действительно за пару кликов.

Очень наглядно и просто о сервисе рассказано в этом видео. А еще подробнее можно почитать на хабре в статье "Jelastic is the new kind of Java hosting platform".

Мы на днях с infinity18 попробовали и сразу влюбились (я про Jelastic если что :)). Что в общем не удивительно. Оказалось этот хостинг разрабатывали программисты специально для программистов. И я не кривя душой скажу, что это действительно тот сервис за который не жалко платить. Кстати, о деньгах. Сейчас, что интересно, пользоваться всем этим добром можно абсолютно БЕСПЛАТНО! Дело в том, что проект находится на стадии бета-тестирования (в котором еще можно активно поучаствовать) и система тарификации еще в разработке. Разработчики обещают также, что цены будут меньше чем у конкурентов.

Как все это чудо попробовать? На данный момент регистрация возможна только по приглашениям. Однако инвайт приходит весьма оперативно (я свое письмо буквально через несколько минут получил). Задеплоить первое приложение тоже можно сразу. По умолчанию на сервере лежит файл HelloWorld.war (предусмотрительно оставленный разработчиками), который за пару кликов и заливается. К этому и сводится вся работа: просто заливаешь на сервер war-файл и наслаждаешься.

Из замеченых минусов можно сказать, что документация пока слабовата (бета-версия все же). Но уверен разработчики правильной дорой идут. Ведь главная идея сервиса: "Jelastic it's easy". И он действительно облегчает жизнь. Да и название классное, Jelastic - это звучит)

воскресенье, 24 июля 2011 г.

Кодекс братана & The Playbook


Я знаю, что тормоз, но только на прошлых выходных дочитал "Playbook" от Барни Стинсона. И вроде писать об этом уже как-то не особо актуально, но так как в черновиках уже полгода валялась заметка о "Кодексе братана", то решил, что нужно закрепить гештальт и завершить начатое.
Кодекс братана
Первый страйк!
Кодекс братана - это настоящая кладезь знаний о братанских правилах. Чего тут только нет. Многие статьи представляют собой просто народную мудрость сформированную годами. Кодекс простыми словами рассказывает о том, что все себя ведут так потому что... Ну ведь все себя так ведут! :)
Например, в книге раскрыт волнующий всех братанов вопрос: кто же должен сидеть на соседнем от водителя сиденье? А также что делать, если вы нечаянно прикоснулись кхм... к филейной части братана? Или какие права братан вправе предъявлять на пульт от телевизора? И прочие ответы на насущные вопросы. Причем все настолько близкие и понятные, что прямо весело и хорошо :)
И хотя некоторые статьи кодекса не для нашего менталитета (больше для Америки), но основные "братанские" ценности универсальны и не зависят от расы, культуры и вероисповедания (заговорил, как броповедник :) ).
Позабавили также поправки к статьям, которые полностью отменяют все что было сказано до этого. Этакий ход в стиле HIMYM. Также повеселило наличие математики в книге. Особенно пицце-интеграл Стинсона и возведение в нулевую степень. Ну и то что кодекс сам себе противоречит просто машинально заставляет улыбнуться. Не скажу что я ржал без удержки, но местами книга очень забавляет. В общем просто получил удовольствие от чтения.
Естественно книгу не стоит качать, а лучше купить (если вы прилетели с другой планеты или только что вышли из комы и до сих пор этого еще не сделали). Деньги будут точно потрачены не зря. Тем более что это перевод от Кураж-Бамбея, и лично я этой покупкой хотел поддержать человека, который внес в нашу повседневную жизнь огромную кучу мемов (ох ты ж ежик!, бугагашенька, ребанный йот и многие другие). Да и сам сериал без такого перевода был бы чем-то другим. В общем, must have и must read.
The Playbook
Это фердо... подожди-подожди ... пердозно!
Фердопердозно!
А вот рассказывать про очередную работу Мэтта Куна особо то и нечего... Вроде и весело местами, но по мере чтения все больше слаживается впечатление, что половина текста прямо высосана из пальца и книга написано понятно для чего. Однако есть и свои бугагашеньки. Например порадовал женский Playbook, метод со спасательницей на пляже и старый знакомый Лоренцо фон Маттерхон. Также весьма повеселило великолепное наблюдение: "Солнцезащитные очки авиатора - единственный известный мужской аксессуар, который одновременно поднимает коэффициент мужской крутости и глупости". Прямо в точку ;)
Ну а так, повторюсь, весьма средненько. Я бы даже сказал фердопердозненько:) Поэтому вторую книгу советую читать только ярым фанатам серии.

P.S. Еще очень прикольно наблюдать реакцию девушек, которые взглядом находят у тебя на книжной полке эти книги и с немым выражением начинают листать страницы до тех пор пока лицо не расплывается в улыбке :)

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

"Свои" сериалы на MyShows

Одним из моих любимых и весьма часто посещаемых сайтов является MyShows. Я как заядлый сериаломан даже и не знаю, что бы без него делал. Думаю, как минимум, потерялся бы в счете смотрел/не смотрел какую-то серию очередного шоу. А MyShows - это очень простой и удобный персональный список сериалов, работать с которым одно удовольствие. И за это сайт и получил огромную популярность. В общем, это как раз тот случай, когда четко выраженная функциональность и большое внимание к юзабилити сделали свое дело.

Так вот, на прошлой неделе я узнал каким образом туда можно добавлять свои сериалы. Этот процесс оказался довольно простым. Все дело в том, что вся база сериалов импортируется с сайта tvrage.com (списки серий, даты выхода и т.д.). Поэтому добавляя новое шоу на TVRage, оно автоматически появляется и на MyShows (таким образом поступил и человек, который не выдержал и добавил "Интерны").

Кстати, TVRage на самом деле чудесный сайт. Там дружелюбная и довольно быстрая регистрация. Есть личный кабинет, список сериалов и т.д. Например, для каждого вновь добавленного шоу или эпизода в личном кабинете, есть список "Pending New Shows", в котором указан текущий статус проверки. Есть также "Contribution center", где количественно оценивается вклад пользователя в проект. Естественно сразу хочется спросить, почему же тогда сразу не пользоваться TVRage? И здесь ответом выступает одно большое НО: просто ужаснейший внешний вид. Да, пусть все функции работают как часы, но когда картинка внешне не лицеприятна, то хочется уйти и не возвращаться. Поэтому заграничному "вырвиглазу" я не раздумывая предпочту наш чистый и опрятный MyShows.

Все бы хорошо, но тут встает еще один резонный вопрос: "А зачем вообще добавлять это русские мыльные оперы на сайт?". И хотя это конечно дело вкуса, но ни для кого ни секрет, что на западе съемка сериалов - это действительно индустрия, где шоу поставлено на поток, щедро финансируется и обладает стабильно высоким качеством во всем (от сценария и игры актеров до декораций и спецэффектов). А вот хороших отечественных сериалов раз, два и обчелся (хотя некоторые их добавляют пачками). Однако есть еще такое уникальное явление на русском ТВ, как юмористические передачи. Вот здесь действительно очень много интересного. И мне, как постоянному зрителю творчества участников Убойной лиги, Прожектора и прочих, хотелось бы иметь возможность видеть их на MyShows и отмечать свое целенаправленно просериаленое время.

Итак, что собственно я сделал. Для начала решил потренироваться на кошках и добавил несколько небольших ТВ-шоу, которые смотрел ранее:
Одноэтажная Америка
Тур де франс
Гордон Кихот

А затем принялся за юмористические передачи:
Убойная лига (в процессе)
Убойной ночи
Убойный вечер
Южное Бутово
Бункер News (в процессе)
КВН - Высшая лига (в процессе)
КВН - Премьер-лига (в процессе)

UPDATE (14.10.2011):
Минаев Live (в процессе)

P.S. Данный список я буду обновлять по мере появления сериалов на MyShows. И еще сейчас думаю над тем, как автоматизировать процесс добавления новых серий.

среда, 4 мая 2011 г.

СчастливоСпасибоЕщеПожалуйста!

- А что мы ей скажем, если она паршиво поёт?
- Скажем, что она красивая!
Этот фильм я запланировал посмотреть, еще не зная, что главный герой, сценарист, и, внимание, режиссер это один человек: Джош Рэднор (Тед Мосби из моего любимого HIMYM). Это его дебютная картина и получилась она по-моему более чем достойная. Здесь есть и хорошая игра актеров, и незаурядный сценарий, а также весь фильм не покидает чувство, что все действие происходит рядом с тобой.
Действие фильма происходит в Нью-Йорке. Однако герои ведут себя так как-будто вокруг и не существует всей этой суеты большого города. Они привыкли не обращать внимания и жить своей жизнью. Это словно маленький мир со своими радостями и проблемами. Для меня это было удивительным, так как общеизвестно, что жизнь в Нью-Йорке кипит не на шутку. Но в фильме атмосфера спокойствия и отрешенности воссоздана просто идеально.
Теперь об актерах. Ну, про Джоша все просто: весьма обычный такой парень, который по образу и стилю опять же очень похож на Теда (такое вот у него амплуа). А вот Малин Акерман мне понравилась особо. Вообще считаю, что она справилась со своей ролью просто прекрасно. Именно ее героине Энни я поверил больше всего. И... Вот только сейчас понял. Она же налысо специально для съемок подстриглась!!! Как же ее там уговаривали даже не представляю...
В общем, это очень легкое, можно даже сказать ненапряжное кино. Но если уж посмотрел его, то и задуматься есть над чем. Так что это прежде всего кино со смыслом. Хотя каждый отыщет его самостоятельно. Для меня, например, основной посыл фильма следующий:
Мы все, как и Энни, должны перестать мыслить стереотипами и научиться понимать, что "штаны Санты не обязательно должны быть красными". Это надо не просто понять, а осознать и прочувствовать. Это важная черта, к которой каждому (и лично мне) нужно стремится.
P.S. To Joshua: Happy! Thank you! More please :)

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

Tabs vs. Spaces

После очередного срача хабраспора решил разобраться для себя с проблемой пробелов и табов.
Вопрос, который на первый взгляд не стоит выеденного яйца, оказался не таким уж простым. Когда с кодом работаешь каждый день, то понимаешь, что стиль форматирования очень важен для повседневной работы. И чем более он продуман, тем проще чтение кода и, следовательно, выше производительность. Поэтому, я считаю, что стоит один раз потратить день-два на вдумчивое изучение вопроса, чтобы потом просто использовать решение на автомате и не задумываться об этом. Другими словами: "выработать собственный стиль".

Первый топик на хабре, как мне показалось, написан человеком не слишком объективным, а  ответный пост хоть и более качественный, но написан наспех. Отсюда куча комментариев, споров и толкований. Я в свою очередь, обстоятельно поразмыслив, хочу резюмировать некоторые мысли по этой теме:

1. Отступ (Indentation). Использовать отступы нужно обязательно. Это улучшает восприятие и читабельность программы, а также визуально отражает вложенную структуру кода. Использовать для отступов можно как табуляцию, так и пробелы. Это дело вкуса.

ИМХО:
Если раньше я предпочитал табуляцию, то с недавнего времени твердо решил: для себя only spaces. Объясню почему:
  • Во-первых, большинство IDE по нажатию на "Tab" умеет добавлять пробелы. Например, так делает IntelliJ IDEA, с которой я уходить в обозримом будущем не собираюсь;
  • Во-вторых, практически во всех IDE по умолчанию используется моноширинный шрифт. Это значит что ширина всех символов одинакова (будь то пробел или буква "Ш"). Поэтому код, с форматированием пробелами произведенным в одном редакторе, будет идентично отображаться в другом;
  • В-третьих, использовать пробелы нужно, чтобы не сталкиваться с такими косяками как в GitHub (нельзя изменить размер табуляции);
  • В-четвертых (очень субъективный аргумент), в своем коде мне ни разу не приходилось использовать отступы с длиной отличной от 4 пробелов. И подозреваю, что эта возможность мне вряд ли когда-либо пригодится.

2. Выравнивание (Alignment). В коде нужно стараться избегать использования выравнивания, потому что это зло по определению. Такие украшательства чаще всего ни к чему хорошему не приводят, т.к. после малейшего рефакторинга все "произведение искусства" приходится реставрировать. Стив Макконнелл в данном случае дает одно простое правило: "Исправление одной строки не должно приводить к изменению нескольких других". Отдельно замечу, что даже если пришлось воспользоваться выравниванием, то делать его можно исключительно пробелами, иначе, при изменении размера табуляции, вся красота разъедется по экрану.

ИМХО:
Тут я немного засомневался, потому что не раз использовал "Smart Tabs" для  выравнивания, но теперь осознал и понял свои ошибки :). Дело в том, что "умная табуляция" не идеальна, т.к. в некоторых случаях табы ставятся в том месте где должны быть пробелы.

3. Работа в команде. Естественно если в команде есть Coding Style Guide, то забываем про пункты 1-2 и пишем код беспрекословно следуя соглашениям. Как говорится: "Кто тимлид того и тапки" (с) MihallicA.

ИМХО:
Однако если меня не связывает никаких ограничений, то я делаю так, как удобно лично мне.

4. Чужой код. Разные способы форматирования - это не повод к разжиганию holy wars. Важно понимать, что практически вся польза от использования какого-то конкретного стиля заключается в том, что в проекте используется этот и ТОЛЬКО ЭТОТ стиль. Добиться единства - вот для чего затеваются все эти споры.

ИМХО:
Если же мне в руки попадает чужой код, который при всем желании исправить нельзя, то я работаю с тем что есть и не обращаю внимания ни на какие предрассудки.

И вместо заключения, я хотел бы процитировать классика: "Действительно хорошие программисты должны непредвзято относится к привычным для них способам форматирования и признавать другие варианты, даже если при переходе к новым методам  возникает некоторый начальный дискомфорт." (с) Стив Макконнелл

четверг, 28 апреля 2011 г.

Рефакторинг баз данных

Существует масса стереотипов типа "Проектирование БД - это сложно и поэтому должно проводиться один раз и на века". А фразу "изменение структуры БД" на работающем проекте стараются вообще не произносить вслух.  Ведь нужно не просто внести изменения, а сделать их так, чтобы после этого приложение работало как раньше... Все эти страхи и мифы и пытается разрушить Антон Кекс в своем докладе "Рефакторинг баз данных" (презентация).
Доклад предназначен не только для разработчиков баз данных (как можно подумать из названия), но и для обычных девелоперов. Так как, во-первых, не знаешь с чем столкнешься в будущем. А во-вторых, большой упор сделан именно на общепрограммерские ценности, и я лично услышал очень много мыслей касательно вообще подхода к программированию, который (с чем я полностью согласен) должен быть "agile" со всеми вытекающими. Я как приверженец рефакторинга  должен был обязательно посмотреть это видео и не прогадал. Антон действительно профессионал. Он прошелся по очень разным темам: некоторые из них лежат на поверхности, а другие наоборот очень глубокие. Если вкратце, то в презентации последовательно освещается 6+ пунктов:

0. Вступление. Рефакторинг БД: обстоятельные ответы на вопросы: "зачем?" и "почему?". 
1. Sandboxes. Использование continiues integration для эволюционного проектирования БД. Интеграция между БД в разных sandboxes при помощи системы контроля версий.
2. Testing. Очевидно, что рефакторинг без тестов - это очень опасный процесс. Поэтому  от тестирования никуда не деться. Но все на самом деле не так сложно как кажется. 
3. Changelog. Антон рассказал про интересные тулы dbdeploy и liqubase. Эти программы ничуть не страшные и бояться ими пользоваться не нужно. Все действия производимые ими достаточно тривиальны и использовать их очень легко. Я сразу же после просмотра попробовал dbdeploy и очень доволен.
4. Proper versioning. Полезный прием: baseline. Это когда несколько скриптов (отвечающих за какие-то атомарные задачи) объединяют в один большой скрипт.
5. Continiues integration наше все. Постоянная сборка проекта, контроль версий и прогон модульных тестов.
6. Teamwork. Мысли о культурных изменениях в команде и Agile DBA.

Стоит упомянуть, что видео получилось довольно долгим (около 100 минут), но в нем есть как теория, так и практика, поэтому заскучать у меня никак не получилось. Также не могу не сказать про книгу  "Рефакторинг баз данных:  эволюционное проектирование"  (Скотт В. Эмблер, Прамодкумар Дж. Садаладж). Честно говоря, я до этого вообще не представлял что за зверь такой "рефакторинг БД" и эту книгу я вряд ли бы прочитал в ближайшем времени. Но вот после просмотра видео задумался. В любом случае теперь мне  ясно где искать расширение границ моего знания в этой области.

В общем доклад получился весьма обширный. Поэтому вышло так, что я выделил для себя мысли, которые со стороны могут показаться никак не связанными между собой:
  • Вести сhangelog для БД очень полезно и, что самое главное, легко;
  • Deprecated-методы обязательно должны быть удалены в будущем. Для меня лично после долгого использования Java API этот тезис оказался не таким уж очевидным. Дело в том, что подход который практикуется в Java обусловлен прежде всего проблемой поддержки ранее написанного кода. А в собственном же приложении практически всегда имеется возможность отрефакторить код так, чтобы deprecated-методы больше не использовались. То же относится и к БД;
  • В очередной раз убедился, что ключевая мысль рефакторинга (не только БД) в том, что изменения - это нормально и от них никуда не денешься; 
  • Почти все проблемы в разработке ПО сводятся к коммуникации;
  • Teamwork: Культурные изменения должны произойти с каждым человеком в команде;
  • Проблемы будут всегда. Но если использовать системный подход в своей работе (писать  тесты, changelog и т.д.), то задача рефакторинга БД никакая не тупиковая и вполне себе решаема.
P.S. И да, рубашка у него реально клевая!)))

четверг, 31 марта 2011 г.

Андрей Солнцев. WTF Code

Сегодня я хочу рассказать о  достаточно популярном докладе из прошлого (май, 2010). Видео уже не новое, но я все-таки решил зафиксировать мое впечатление о нем.
Докладчик Андрей Солнцев - программист из Эстонии, завсегдатай devclub и просто хороший специалист. В докладе с ярким названием "WTF Code" он постарался систематизировать имеющиеся знания о говнокоде и преподнес их в легкой и увлекательной форме.
Выступление получилось очень живым. Аудитория в зале адекватная, положительно настроенная и часто вступает в диалог с докладчиком. Такой интерактив рождает интересные мысли над которыми можно нужно задуматься.
Я не хочу вдаваться в детали, т.к. видео длиною всего в час, и безусловно стоит потраченного времени. Рекомендую дальше ничего не читать, а смело начинать смотреть видео (+ презентацию на Google docs).
Да понимаю, сейчас нету времени смотреть и вообще не заинтересовало. Ну ладно, поделюсь еще некоторыми впечатлениями.
Представленные знания нисколько не секретны, и многие истины уже давно известны. Но проблема говнокода до сих пор была и будет актуальна. Об этом собственно и доклад.
Вообще это видео я бы даже посоветовал посмотреть в компании (если не пугает звук). Точно будет, что вспомнить и над чем посмеяться. В общем программистам и тем кто себя к ним относит это видео обязательно стоит посмотреть.
Теперь о немного грустном. Не могу не заметить, что качество звука оставляет желать лучшего. Так что иногда приходится сильно прислушаться, чтобы разобрать слова. Но это только маленькая ложка дегтя в бочке меда с надписью "Говнокод" :)

Ну и тезисы, которые я хотел бы выделить для себя:
  • Как ни странно, но говнокод работает;
  • Разумному человеку говнокод написать реально сложно;
  • Такой код пишется в помутненном сознании и, чаще всего, является следствием непонимания программируемой системы;
  • Говнокод – это код, который явно можно написать проще и быстрее;
  • Говнокод можно улучшать (как в лучшую, так и в худшую сторону);
  • Это интересно: индийский код сначала поют, а потом записывают;
  • 20% времени тратится на написание кода, и 80% на его чтение;
  • Ну и такая всегда актуальная банальщина: сначала подумать, а только потом писать код.
P.S. Кстати, уместно вспомнить про сайт govnokod.ru. Я, например, подписан на раздел посвященный Java и очень радуюсь когда он редко обновляется. Ведь это означает WTF-кода в мире становится меньше. А это ли не счастье? :)

понедельник, 14 марта 2011 г.

воскресенье, 13 марта 2011 г.

Три дня на смысл жизни

- Ты хотел быть архитектором?
- Да.
- Копай!
Из разговора перед могилой бабушки
Часть 1. Гневная
Вообще говоря, мне близка атмосфера постъядера и постапокалипсиса, а также тема выживания в этот период. И хотя "Три дня" - это триллер, в котором события происходят исключительно до конца света, но фильм все равно меня заинтересовал. Кратко расскажу о сюжете. На землю летит метеорит, а Брюс Уиллис точно завязал и не поможет. Так что через три дня всем наступит амба, капец, кранты (нужное подчеркнуть). Вот собственно и все.
Сразу скажу кино не очень. Если начало весьма впечатляющее и интригующее, то дальше начинается стабильно непонятная моему мозгу муть под названием артхаус. Я собирался посмотреть фильм о простых людях и их поведении в экстремальных ситуациях. Но вот беда, за которую я ненавижу артхаус, в том, что обычные люди ТАК себя не ведут. А без реалистичности мне наблюдать за этим мне как-то не очень... Я предвзят, но фильм действительно не оправдал того, что я хотел увидеть. Я посчитал, что в 2008 году по сценарию персонажи не обойдутся без интернета и высоких технологий, но кроме затасканного черно-белого ТВ и радио ничего не увидел. А ведь так хотелось посмотреть конец света в современных реалиях... Картинка у фильма также нарочно сделана несовременной. Это угнетает. И может быть такой ход подчеркивает атмосферу фильма, но к концу мне это уже окончательно приелось. И да, кроме кучи нестыковок и противоречий, есть еще один минус: концовка у фильма "очень неожиданная".
Ладно, хватит о грустном. Я не за этим начал писать этот текст.
Часть 2. Философская
Несмотря на все недостатки, фильм прямым и естественным образом наводит зрителя на вопрос: "А как бы ты себя вел за три дня до смерти?". Раньше я уже размышлял над этим вопросом и все время приходил к одному и тому же выводу: также как и до этого. Ведь, рассуждая логически, если ты в этот момент начинаешь кардинально менять свою жизнь, то значит до этого жил как-то неправильно. А я считаю, что живу правильно и иду верной дорогой. Поэтому вполне разумно вести себя точно также как и в обычной жизни, но с некоторыми коррективами (попрощаться с близкими, выделить время, чтобы увидится с ними напоследок и т.д.).
Но я не учитывал одну важную деталь: в этом мире не все поступки логичны. Человеческая психика неустойчива, мотивация часто скрыта или вовсе отсутствует, а нервы не железные. Вот тут фильм и дает понять, что как бы ты ни старался жить как прежде, но знание о скорой смерти все равно вносит свои коррективы (и чаще всего кардинальные). Главный герой прекрасно это иллюстрирует. Он типичный пофигист (всем своим поведением на это указывающий), не имеющий никакой мотивации в жизни. И как бы он ни старался плыть по течению дальше, ничего у него не получается. Все дело в том, что в экстремальных ситуациях меняется перспектива и открывается новый взгляд на жизнь. Стратегия перестает работать, в дело вступает тактика и человек начинает брать все прямо здесь и сейчас.
Я не хочу сказать, что не нужно долго и терпеливо идти к своей цели. Нет, обязательно нужно! Но при этом каждый день из этого пути нужно проживать как последний, брать и делать все, что возможно на данный момент. И вот тут после всех размышлений пора еще раз задать самому себе вопрос: "Как я буду себя вести если узнаю, что мне осталось всего три дня?". И я даю уже немного измененный ответ: "Постараюсь жить также как и до этого". Я буду очень рад, если Ваш ответ будет похожим. Если же нет, то самым логичным с моей стороны будет спросить:  "А вы точно понимаете зачем живете?"

понедельник, 28 февраля 2011 г.

Удивительные игры разума


-У вас бывают озарения, доктор Нэш? 
-Постоянно! 
Фильм 2001 года. Прошло 10 лет после выхода и я наконец добрался до него. На слуху он был у меня последние несколько месяцев,  так как повсеместно начали попадаться отсылки к этому фильму. Но, если честно, до просмотра я даже аннотации не прочел. Я просто знал, что этот фильм нужно посмотреть. Хотя почему-то также была уверенность, что в центре сюжета будет некая глобальная афера (видимо просмотр "Побег из Шоушенка" сказался). И как же я был приятно удивлен, когда мои домыслы не оправдались. Потому что: во-первых, это кино совсем не про то; во-вторых оно Восхитительно!
Этот фильм про математика. И я, как человек причастный, смотрел его с особым интересом. Конечно, при этом старался отыскать в фильме изъяны и нестыковки. Но, честно говоря, когда на экране появились титры, то на все противоречия мне стало плевать. Уж больно сильное кино. Такой превосходной игры актеров не часто встретишь. Рассел Кроу и Дженнифер Коннелли великолепны. Им не то что хочется верить, им веришь не задумываясь. Тут же и отличная режиссерская работа. Особенно мне запала в душу сцена с ручками. Очень проникновенная.
А какое шикарное музыкальное сопровождение! Под песню Джеймса Хорненра "Creating Governing Dynamics" и правда должны происходить настоящие открытия. Композитор смог передать непередаваемое и музыка просто слилась с фильмом в одно целое. Браво!
Правда, одна вещь, не особо относящаяся к фильму, меня очень сильно волновала и поражала на протяжении всего фильма: КАК? Как они тогда жили? Без мобильников и интернета. Это взрывает мой мозг. Как людям жилось, не то что без Google и Википедии, а без банальной возможности позвонить в скорую в любой момент! В наше время даже всю ту работу которую Нэш проводил со своими газетами можно было запрограммировать. Да, что тут говорить... Прогресс - великое дело. 
Еще очень понравилось упоминание про гипотезу Римана, которая, кстати, до сих пор остается важнейшей математических проблем 21 века. К слову, даже Давид Гильберт (1862 - 1943) считал что, если он по какой-либо причине проспит пятьсот лет и вдруг проснется, то первым делом спросит, была ли доказана гипотеза Римана. Да и вообще математическая сторона в фильме описана достаточно хорошо и, что важно для массового зрителя, довольно популярно. 
Также, по-моему очень здорово, что фильм не несет четко сформулированной мысли. Даже в своей идее он очень разносторонен и глобален. Кто-то увидит человеческий гений, кто-то великую любовь, кто-то непрерывную борьбу и противостояние тяжелой болезни. Не важно над чем, но фильм заставляет задуматься. Это удивительно.
Итак, фильм безусловно отличный, возможно один из лучших. И хотя я не знаю как скоро посмотрю его еще раз, но в том, что мне было бы безумно интересно испытать те же чувства и эмоции, что и при первом просмотре, я нисколько не сомневаюсь. Так что однозначно смотреть и пересматривать.
P.S. Теперь я знаю откуда взялась идея алгоритма на стекле у Цукерберга из "Социальной сети".

среда, 23 февраля 2011 г.

Белый хакер о безопасности сайтов

Наконец-то дошли руки до видео с последней встречи devclub.eu (26 января 2011). Докладчиком был Тыну Самуэль - эстонский эксперт по кибербезопасности с опытом работы в этой сфере больше 15 лет. Он называет себя белым и пушистым хакером и после просмотра в этом не остается никаких сомнений. Тема доклада: "О безопасности сайтов".
Доклад получился очень интересный, я бы даже сказал захватывающий. Там не было ни презентации, ни заготовленных речей и прочего. Но зато была масса примеров из личного опыта, веселые шутки и конечно же взломы в прямом эфире.
Основные тезисы, которые я для себя вывел:
1. Black List практически всегда можно взломать. Поэтому лучшее решение это делать White List.
2. Любая фича - это потенциальный баг.
3. [совет программисту] Получил что-то на входе - ОТРЕЖЬ. Но даже "обрезанные" данные все равно нужно проверять (шикарный пример про "9E9").
4. Ну и ещё раз убедился, что хакер - это очень творческая личность с нестандартным, но при этом конструктивным мышлением.
Вообще посмотреть этот доклад нужно обязательно. Это бесценный опыт, которым Тыну делится в легкой и непринужденной форме. Так что однозначно must see!