суббота, 13 октября 2012 г.

Gotta Share 00 - Пилотный выпуск (Сентябрь)


Праздную двухтысячный твит новым постом в блоге.

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

Программирование

[Java] "Introduction to Spring" Tutorial Series. Толковый (что редкость) набор статей по разработке приложения на базе Spring Framework. И что примечательно, код покрыт unit-тестами и написан по вполне себе фэн-шую.

[Design Patterns] Как два программиста хлеб пекли. Статья о двух радикальных способах разработки и проектирования ПО. Но мы то знаем, что всегда можно свалить вину на PM-а что истина где-то посередине. Путь джедая, то он не простой. И еще в комментариях проскакивает картинка с гениальной анимацией про суть рефакторинга.

[JS] Visual Event. Эта "полезняшка" для визуализация событий (events), привязанных к html-объектам страницы. Работает очень просто: перетаскиваем на панель закладок в браузере эту ссылку: Visual Event. Затем, кликаем по закладке находясь на той странице, где нужно визуализировать js-события. Вуаля.

[Java] Ребята из Jelastic получили своего "Java-Оскара", с чем я их от души и поздравляю. Кстати, я говорил, что давно хочу себе фигурку Дюка? По-моему, у Java нереально крутой талисман.

[CSS] Эволюция CSS-верстки: с 90-х в будущее. Обстоятельный такой скринкаст о том какую работу над спецификациями CSS проводили (и будут проводить) в консорциуме W3C. Ну и вдогонку, у авторов данной статьи вышел монументальный труд "Инлайновый контекст форматирования", который думаю осилить на досуге.

[PM] Реальная оценка или почему наступают дедлайны?. Статья доступно и в концентрированной форме (хотя и упрощенно) объясняет то, как и почему неверно оценивает сроки практически любой программист. А все на самом деле потому, что опыт оценки сроков (который, к слову, не зависит от опыта программирования) можно только заработать.

IT-индустрия

[Common] Потрясающая, но невидимая глубина. Хорошая статья. Показывать людям, которые считают, что "разбираются в компьютерах". Ну и про биологов в комментариях верно подмечено, потому что "любая достаточно развитая технология неотличима от магии" (с) Артур Кларк.

[Finances] Самый богатый айтишник на этой улице. Хабрахабр разродился серией статей о финансовом благосостоянии IT-шников, но как обычно на коллективный здравый смысл спускает с небес на землю. Для людей грезящих внезапным обогащением, которые все еще надеются найти серебряную пулю в финансах, чтение обязательно.

[Communication] Как из болота вытягивать IT-шника или об общении в стрессовых ситуациях. Вот не умеют братья-ботаники эффективно общаться не с собой подобными, поэтому и появляются такие статьи :)

Доклады

[Architecture] WTF Architecture. "Когда в проекте появляется SOA, то обычно это делается через жопу..." (с) А. Солнцев. Ну люблю я такие доклады. Называю их "о трезвости ума". Просто включайте и смотрите.

Разное

[Shows] Inspector Spacetime. Отличный сайт. Где-то месяц назад начал их читать. Пишут буквально обо всем: фильмы, сериалы, игровые вселенные. Отличаются неплохой аналитикой, адекватным взглядом на ситуацию и помимо трендовых вещей не брезгуют рассказать, например, о юбилярах-старичках: Fallout, Mafia и т.д. В общем такой коктейль явно в моем вкусе. А еще у них есть подкаст "Чудоториум" и разные рубрики. Ну, не мне вам объяснять где находится кнопка RSS :)

[Media] Журнал Кэтти Мэй. Городской журнал, которые ведут ребята "с района". Не знаю как они себя позиционируют, но я его рассматриваю как пародию на городской журнал. Потому что посты "Как я провёл этим летом" и "Пьяные лавочки Москвы" это ну просто шикарный стеб и угар. Должно понравится тем, кого достала эта "суррогатная красота" в куче похожих друг на друга изданий. В общем, я за такую периодику.

Рекомендую на YouTube

Призрачные сиськи
Трейлер несуществующего фильма. Ой, не хотел бы я в такую ситуацию попасть...
Fallout - в реальной жизни
Веселая пародия на тему того, как бы выглядел Fallout 3 в реальной жизни.
Реклама почты России
Вот даже и стебаться не хочется :) Видно, что девчонки от души делали. Молодцы.
Hipster Disney Princess - The Musical
Прекрасный мюзикл про диснеевских принцесс-хипстеров. Девушки очень даже очень.
Handsome Men's Club
Заседание клуба красивых мужчин. Звездный состав говорит сам за себя, правда не хватает Хью Джекмана :)
Семен Слепаков - Море работы
Семен Слепаков очень душевно исполнил. Как говорится "было бы смешно, если не было бы так грустно".
Пора валить (часть 1 и 2)

Psychodozer и Усачев - гремучая смесь :) Вот ведь просто угарают, а позитивом заряжают неимоверно.
Масяня 107. Свой Чужой
Куваев возобновил работу над Масяней спустя N лет. Причем на канале для каждого выпуска описываются контекст и причины его создания. Я для себя даже новые смыслы открыл.

P.S. Вот как-то запоздало, но так :). Комментарии всегда welcome.

четверг, 7 июня 2012 г.

Игра престолов - 2 сезон

Закончился 2-ой сезон "Игры престолов". Сюжет закручивается все больше и смотрится буквально на одном дыхании. Но, как мне уже успел заспойлерить друг читавший книгу, замес в дальнейшем тише не становится, да и ситуация не устаканивается. Однако пока драйв сериала решает - смотрим.
Захотелось пару мыслей зафиксировать:
  • Я в последнее время очень внимательно слежу за актерами, исполняющими роль отрицательных персонажей. Это сложная работа и большой талант. Джоффри в этом сезоне я стал люто ненавидеть, за это игравшему его Джеку Глисону большой респект.
  • Сезон поддерживает мировой тренд, увеличивая частоту появления обнаженки на экране. Не знаю как далеко зайдет хваленая американская толерантность (например, в одной из серий появилась гомосексуальная сцена), но в общем авторы уловили нить: средневековье эстетика + разврат и похоть (в ногу с любимым мной Borgias). Однако это вполне честно, секс и пошлость ведь всегда были, есть и будут, разве что с "перерывом" на Советский союз :)
  • Из эпичных сцен - просто замечательная битва за замок Железного Трона. Получил огромное удовольствие от этой серии, и конечно жду еще более масштабных сражений.
  • Поняв основную фишку сериала, что даже бравые ребята и мегаактеры по сюжету долго не задерживаются, я стараюсь успеть насладится игрой персонажей. В этом сезоне лучшим для меня является Тирион Ланнистер. Парень просто-напросто держит весь сезон. Хитросплетения и закулисные интриги в духе Макиавелли он исполняет мастерски. Так что хвала полумужу! :)
  • Еще было желание прочитать книгу, но решил что пока не стоит. Банально жалко времени, да и понимаю, что уже буду предвзято сравнивать ее с сериалом.
Ну и конечно же, второй сезон богат на яркие диалоги и сочные цитаты. Приведу наиболее запомнившиеся:
- Вы хотите убить Джоффри? И что дальше?
- Не знаю.
- Вы хотите свергнуть короля, не думая что будет потом?
- Для начала нужно победить.
(с) Нэд Старк и медсестра, S02E04

- Я не обучена военному искусству, но даже арифметика на стороне больших армий.
- Будь война арифметикой, то миром бы правили математики...
(c) Жена кого-то там и Лорд Бэйлиш, S02E04

- Взгляни на те поля, братец. Видишь сколько там знамен?
- Думаешь эти тряпки сделают тебя королем?
- Нет. Королем меня сделают люди, что их держат.
(с) Из разговора братьев Станниса и Рэнли, S02E04

- Властью обладает тот, в чью власть верят остальные.
- Это трюк, тень на стене.
- Да, но даже совсем маленький человек способен отбрасывать большую тень.
(с) Варис "Паук" в разговоре с Тирионом, S02E03

- У нас были злобные короли, короли-идиоты... Но злобных-идиотов королей у нас ещё не было.
(с) Тирион Ланнистер о Джоффри, S02E06

- Скажите, когда ваши люди убивали людей Неда Старка в тронном зале, приказ отдали вы?
- Я. И отдал бы снова. Этот человек был предателем. Он пытался меня подкупить.
- Дурак! Он не знал, что вы уже продались.
(с) Тирион Ланнистер с бывшим начальником стражи, S02E02

- Она [великая воительница Висенья Таргариен] твой кумир, как я понимаю. Разве большинство девочек не предпочитает прекрасных дев, о которых сложены песни?
— Большинство девочек дуры!
(с) Тайвин Ланнистер и Арья Старк, S02E07

- Владыка света хочет, чтобы врагов жгли, утонувший бог - чтобы топили. Почему все боги такие злобные твари? Где же бог сисек и вина?
- На летних островах поклоняются богине плодородия с шестнадцатью сосками.
- Немедленно плывем туда.
(с) Тирион Ланнистер и Варис, S02E08

P.S. Кстати, понял, что в сети нет ни одного удобного и адекватного сервиса с цитатами из сериалов (и прочей медийщины) с более-менее вразумительным комьюнити.

среда, 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. И да, рубашка у него реально клевая!)))