воскресенье, 18 декабря 2011 г.

Linus Torvalds "Just for fun". Впечатления

Так получилось, что две последние книжки я прочитал с подачи Вадима. Я уже писал свои впечатления о "Rework" от парней из "37signals". А вчера я прочел книгу Линуса Торвальдса "Just for fun".



Когда я взял в руки планшет, то еще не знал о чем пойдет речь: может быть об истории Linux, может это автобиография Линуса или его размышления о свободном ПО. И сперва мне показалось, что это автобиография. Я даже немного расстроился. Мне не очень-то нравится читать просто биографии. Но тут речь шла об одном из лучших программистов в мире. Ближе к середине, Линус рассказывает о том, как родилась идея сделать ОС, о том как Linux набирала популярность, как со временем к проекту подключались все больше и больше разработчиков. А затем он переходит к мыслям о свободном ПО, об интеллектуальной собственности, об эволюции, о правомерности навязывания своего мнения другим и т.д. И заканчивает размышлениями о смысле жизни...

Мне не совсем понравился русский перевод. На мой взгляд, "для удовольствия" довольно неудачный перевод названия, хотя он близок к смыслу.

Не знаю, какая была основная цель у Линуса, когда он писал эту книгу, но вот некоторые мои мысли после прочтения:
  • В жизни нужно заниматься тем, что приносит тебе кайф. Я как и Линус испытываю кайф от программирования. Конечно у меня несколько другая область, я занимаюсь не системным программированием, а web-разработкой. Но это направление я выбрал вполне осознанно, как и язык PHP, как и фреймворк Symfony.
  • Успех всегда наполовину зависит от случая. 
  • Это нормально, когда человек не заглядывает далеко в будущее. Часто трудности, которые, кстати, могут и не возникнуть, отбивают всякое желание продолжать над чем-то трудится. А, вдруг, у тебя получится создать что-то действительно стоящее... Но даже если не получится, все равно ты получишь кайф от процесса работы. 
  • Навязывать свое мнение относительно чего-либо почти всегда плохо. Здорово иметь свое мнение на каждый случай, но лучше оставить его при себе. Нужно быть готовым к тому, что свою точку зрения при необходимости нужно будет отстоять. Но между защитой своего мнения и навязыванием его другим есть тонкая грань, лучше ее не переступать.
  • О преимуществах открытого ПО и совместной разработки я не буду ничего говорить. Лично для меня тут все лежит на поверхности... Я, вообще, сторонник открытости во многих вещах. Но часто жадность побуждает компании скрывать "фирменные секреты". Это в общем-то не всегда плохо, но во многих случаях этот фактор ограничивает общее развитие отрасли.
  • Интересны взгляды Торвальдса и на интеллектуальную собственность. В эпоху информационного общества интеллектуальная собственность становится едва ли ни самым прибыльным ресурсом.


В целом я получил массу положительных эмоций от чтения. Не стоит относится к книге сильно серьезно, ее стоит читать just for fun...

среда, 14 декабря 2011 г.

Иван Иванович

Позавчера не стало дедушки. Он умер 12 декабря 2011 года в возрасте 75 лет. Я знал, что последнее время дедушка болел тяжело. Хотел проведать его на следующие выходные, но... не успел.


Дедушка мог бы остаться живой, если бы он согласился пройти обследование и лечение. Но он не хотел лечиться. И что-то было в его характере, что не позволило сделать это насильно. Его слова и в 75 лет заставляли близких подчиняться его воле.


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


Большую часть времени, дедушка работал на шахте "Краснолиманской", на "передовой", в проходке. Он был комбайнером, на шахте это почетная должность. Не раз бывал на доске почета, получил немало трудовых орденов и наград. Когда моему отцу пришлось устроиться на работу на шахте, он услышал много хороших отзывов и историй о дедушке.

Мне трудно себе представить работу комбайнера, т.к. я сам ни разу в шахту не спускался. Но я попытаюсь передать то, что слышал от других. Работа в проходке требует повышенного напряжения и внимания, постоянно несет самую настоящую угрозу для жизни. Это в условиях совершенно адских: температура под 50 градусов, ужасная теснота и позы самые различные, очень сильный шум и темнота, угольная пыль, огромные тяжести, постоянные сквозняки, вода. Для работы в проходке нужна огромная сила и нечеловеческая выносливость. Любая невнимательность, секундная проволочка может стоить жизни. Дедушка не раз получал тяжелые травмы. Конечно же, все это сказалось на здоровье. Но он никогда не рассказывал о шахте, во всяком случае мне, это всегда оставалось только с ним. Он хотел оградить от шахты свою семью. И оба сына его получили хорошее образование: мой дядя, Владимир Иванович, окончил медицинский институт, стал врачом; мой отец, Сергей Иванович, окончил авиационный институт.



После выхода на пенсию дедушка по состоянию здоровья уже работал в шахте на поверхности, в ламповой. Это отдел, ответственный за обеспечение шахтеров лампами для освещения, "коногонками", как говорят в нашем крае. Меня маленького несколько раз оставляли с дедушкой на работе, и я до сих пор помню идеальный порядок на его рабочем месте. Порядок был и в гараже, где дедушка мастерил всякие штуки: ножи, садовый инструмент, различные приспособления, удочки, поплавки, зарядные устройства, полки  и много чего другого он собирал руками, любил это делать и у него это хорошо получалось. Пока позволяло здоровье, сам и с папиной помощью ремонтировал свою машину - Жигули "тройку". Он купил ее в 76 году, но и через 35 лет машина была почти в идеальном состоянии. 


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

Дедушка любил футбол, и как большинство шахтеров, болел за Донецкий "Шахтер", радовался его успехам, критиковал за поражения. Спасибо, им, что выиграли "Кубок УЕФА" в 2009, дедушка сильно радовался этой победе. Как жаль, что он уже не сможет посмотреть финал Евро 2012.

Но самое главное, что в нем было - это пренебрежение ко всему напыщенному, показному. Он всегда жил и старался поступать по совести. Честь и совесть для него были не пустые слова. Он был таким как был, простым, настоящим человеком, каких много было тогда и каких не часто встретишь теперь, честным, открытым, большим и благородным.

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

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

Нашел на диске несколько фотографий с ним.






Тут дедушка с моей сестрой Анютой у нас на даче, год вспомнить тяжело, судя по Анюте - год 1995 или 1996. 




А эта фотография сделана приблизительно в то же самое время, к нам приезжали родственники из Харькова. Дедушкин племянник и мой дядя, Андрей Федорович Колесников, справа. Обратите внимание на внешнее сходство и одинаковый рост, на следующем фото он рядом со мной и двумя дедушкиными сыновьями.



Колесниковы. Слева направо: Владимир Иванович (мой родной дядя), Андрей Федорович (мой двоюродный дядя), Сергей Иванович (мой отец), я.




А тут дедушка с младшим внуком - Всеволодом Владимировичем. Скорее всего лето 1993 (дедушке тут около 57 лет  )



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


Покойся с миром, дедушка! Пусть земля тебе будет пухом!
  

четверг, 8 декабря 2011 г.

Живи этим или брось это. Рецензия на книгу "Rework".

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

Кратко и лаконично описан собственный опыт построения и ведения бизнеса. Множество занимательных фактов. Книга хороша и как источник вдохновения, и как источик советов (я считаю, весьма логичных) для реализации собственных идей. Кроме того большинство советов и призывов противоречат стандартным понятиям в мире бизнесса. Ну, например, кто бы еще мог посоветовать передать инициативу конкуренту в конкурентной борьбе (ответ на вопрос "Зачем?" найдете в книге).

Приведу несколько цитат, которые особено поравились:



  • "Живи этим или брось это!"
  • "Ограничения - это скрытые возможности"
  • "Истина редко окрашена в белое или черное"

В общем спсибо большое авторам и Вадиму за ссылку.

вторник, 22 ноября 2011 г.

Symfony2 Security. Аутентификация.



В последнем проекте пришлось достаточно глубоко покопаться в Security компоненте Symfony2. Это была одна из моих первых задач на этом фреймворке. И, скажу, что я не сразу ощутил всю мощь этого компонента, т.е. сначала было сложно и не понятно. А компонент действительно мощный. С помощью него можно решить, например, такие задачи:
  • Разграничение по ролям зон доступа на сайт. При этом для каждой из зон доступа можно сделать свой механизм аутентификации. К примеру, для обычных пользователей можно сделать вход через twitter и/или facebook, а для доступа в админку использовать локальные пароли из БД или из конфигурационного файла. 
  • Ограничение времени прибывания на сайте (например не более двух часов в день).
  • Временные учетные записи (например, учетная запись, которая действительна до какой-то даты).
  • Учет количества попыток входа на сайт и, например, бан IP-адреса после определенного количества неудачных попыток или дополнительно запрашивать ввод captcha.
  • Блокировка любых диапазонов IP-адресов.
  • Блокировка пользователей по рейтингу, по какому-то балансу,в принципе, можно блокировать доступ по чему угодно.
  • Из коробки доступен производительный ACL (не используется ORM для хранения правил, используются ObjectIdentities вместо самих объектов).
  • Можно использовать любые механизмы аутентификации и легко создавать собственные. Многие из них уже реализованы во множестве бандлов. Например, Максим, сделал бандл для аутентификации через OpenID.
Это далеко не полный список возможностей Security в Symfony2. И практически любая кастомизация, почти любое расширение функционала легко впишутся в общую концепцию, благодаря хорошо продуманному API.


Сегодня напишу несколько строк об аутентификации. 


Итак, весь процесс аутентификации выглядит примерно так:




(Кликабельно)

Я употребил слово "примерно", потому как тут, как и в Symfony в целом, все очень гибко. Если вы захотите изменить этот процесс и заставить систему аутентификации работать иначе, вам не понадобится переписывать полностью всю систему.



1. Token (Токен)


Токен представляет собой абстракцию хранилища данных, идентифицирующих пользователя (User). Токен может находится в аутентифицированном и неаутентифицированном состоянии. Он хранит также список ролей пользователя (Roles) или знает как их получить. Также токен содержит методы для получения и обновления своего состояния (isAuthenticated, setAuthenticated). Можно хранить в токене и разные другие данные в виде аттрибутов (Attributes). Сам  токен не содержит методов для проверки идентификационных данных, за это отвечает провайдер аутентификации (Authentication Provider).


В Symfony уже будут несколько реализаций токенов. К примеру, AnonymousToken, UsernamePasswordToken и др. Лучший путь сделать свой кастомный токен - это унаследовать свой класс от AbstractToken.


2. Authentication Provider (Провайдер аутентификации)


Провайдер аутентификации отвечает за проверку идентификационных данных у пользователя. Чтобы написать свой провайдер аутентификации, вы должны реализовать интерфейс AuthenticationProviderInterface. Или можно унаследовать свой класс от абстрактного класса. AuthenticationProviderInterface описывает два метода: authenticate и supports. Оба метода принимают токен, в качестве  параметра. Метод supports должен вернуть true, если он может обработать предоставленный токен и false в противном случае. Метод authenticate должен вернуть аутентифицированный токен или выбросить AuthenticationException, если токен не удалось аутентифицировать. 
В Symfony уже есть несколько провайдеров аутентификации. К примеру, DaoAuthenticationProvider. Этот  провайдер аутентификации использует другую абстракцию - провайдер пользователей (User Provider). См. ссылки в конце поста, чтобы найти больше информации по провайдерам пользователей.


3. Security Listener (Подписчик)


Подписчик отвечает за получение информации из запроса (Request), создание нужного токена и установку в него идентификационных данных. Также в его задачу входит вызов провайдера аутентификации и передачу в него токена, установку токена в Security Context. А также тут можно сделать обработку исключений аутентификации. Метод handle принимает  объект запроса (Request) и может вернуть аутентифицированный токен или объект ответа (Response). Тут также доступен абстрактный класс AbstractListener. Унаследовав свой  подписчик (Listener) от него, мы сможем избавиться от черновой работы. Нужно будет только реализовать метод attemptAuthentication.


4. Security Factory (Фабрика)


Через фабрику мы объединяем вместе все три предыдущих участника и "рассказываем" о них фреймворку. Тут тоже есть абстрактный класс, реализующий "лишний" функционал. Factory должна быть описана в конфигурации в разделе (security/factories) и помечена тэгом "security.listener.factory".


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

Уже существуют множество бандлов, реализующих аутентификацию через twitter, facebook, openid и др. Если же будет необходимость, легко реализовать свой механизм. Например, в моем проекте была аутентификация через удаленный сервер по протоколу SOAP. Также был реализован дополнительный запрос капчи, если удаленный сервер сообщал о необходимости проверить пользователя.

Эта статья получилась небольшой. Но, надеюсь кому-то она окажется полезной.

Несколько ссылок по теме:

Официальная документация по Security в Symfony2 (английский)

Русский перевод официальной документации

Доклад от Johannes Schmitt (видео на английском), отличная презентация от одного из разработчиков Security в Symfony2.

Как сделать кастомный провайдер аутентификации (английский), пример реализации для протокола WSSE.

Справка по конфигурации Security (английский), тут тоже есть кое-что интересное.

Коротенькая статья по созданию Authentication Provider(английский), запомнилась картинкой, которая меня изначально еще больше запутала, чем что-то прояснила.

Статья перевод по Security Component'у на хабре (русский), в ней больше внимания уделено провайдерам пользователей и ролям.



Удачи в освоении Symfony! И ждите в скором времени вторую часть статьи, посвященную авторизации.

воскресенье, 30 октября 2011 г.

Symfony road trip, или Как мы на Symfony Camp ездили





Сегодня утром вернулся из поездки на Symfony Camp 2011. Впечатления отличные, причем не столько от самой конференции, сколько от поездки в целом.


Выезжали в Киев  в четверг вечером. Cам Camp был в суботу, а в пятницу мы еще должны были посетить мастер-класс от Костантина Кудряшова. Туда ехали втроем, и так как билеты покупали заранее, ехали в одном купе. Забавно, но четвертый попутчик оказался также программистом, только на С#. Выпив текилы "за единение родов войск", разговорились о насущных проблемах. Влад, так звали нашего попутчика, был не очень осведомлен о текущем состоянии развития php. Видно было, что в его понимании программисты на php клепают по одному сайту в неделю минимум :-) Нас здорово повеселила его фраза: "Вы вряд ли знаете, что такое Doman Driven Design, вам же это не надо..." Особого желания его разубедить не было, но я думаю, после наших ночных посиделок, он стал гораздо лучшего мнения о php девелоперах. Закончился вечер разговорами о горах, лыжах и сноуборде :-)


Пятничное утро далось тяжело. Спали мы не больше, чем два часа, но настроение было отличное. Перекусив в McDonald's на вокзале, отправились в Киевский офис Ciclum, мастер-класс проходил именно там. Офис Ciclum, конечно, крутой. На этой картинке у левого здания на 20-м этаже своеобразная "тарелка" - это и есть конференц-зал, вид оттуда потрясный. Пока народ подтягивался, успели занять места в первом ряду, выпить кофейка и даже немного попедалить. 


Начался МК с отвалившегося Wi-Fi :-) 40 человек с ноутами просто положили точку доступа. До окончания МК Интернета толком так и не было, несмотря на все попытки решить проблему. Пришлось отложить ноут в сторону и просто слушать. Теперь о содержании МК. В начале было скучно, с настройкой установкой и базовыми понятиями и так уже разобрался к этому времени и нового ничего не услышал. А вот когда началось тестирование при помощи Behat, мне стало интересно. Behat вживую я раньше не видел. Максим с Вадимом откровенно скучали... После обеда Behat закончился, заскучал и я тоже. Интересного больше не было :-) Пафосное название: "Symfony2: от новичка до ниндзя" на поверку оказалось фейком. Впрочем я предполагал, что примерно так и будет, и не особенно расстроился. На следующий день услышал мнение, что если бы вчера на МК были бы люди, которые приехали за свой счет, то они "перегрызли бы горло" за такой МК. Я  хоть и ездил за свой счет, но горло грызть не стал :-) Не могу судить, о том, смогли вынести для себя что-нибудь полезное, те кто не был знаком с symfony2 до этого. Скорее всего да, но по некоторым вопросам из зала было понятно, что люди вообще "не в теме".


После МК я поехал встретиться со своими друзьями. Отдыхали в заведении "Пивной Сомелье", что находится в одном из дворов по улице Саксоганского. Выбор пива там шикарен, а настроение было еще лучше :-) 

Camp в субботу, начался с доклада Кирилла Чебунина, который рассказывал о Service контейнере в Symfony2, было живо и интересно. Видно было, что Кирилл глубоко разобрался в тематике, была новая и интересная информация. Забегая вперед, скажу, что это был лучший доклад на Camp'e :-)


Следующие доклады не порадовали вообще. TestGuy - после Behat смотрелся убого. Классификацию мобильных приложений было слушать откровенно скучно. Докладчик по Redis читал мануал вслух, что очень расстроило. Доклад по Twig был неплох, но лишь как введение для тех, кто Twig еще не использовал. Впрочем автор и не скрывал этого. В конце вечера порадовал доклад Степана Танасийчука. Степан рассказывал о том, как Symfony2 может сэкономить время разработчика. По сути это был обзор must have бандлов для Symfony2. Также немного подсластили впечатление от Camp'a несколько забавных историй от Степана.


В самом конце конференции разыграли пять лицензий на PhpStorm, одну из которых выиграл представитель Харьковской делегации :-) А перед розыгрышем было небольшое обсуждение того, как наиболее безболезненно можно перевести разработчиков с symfony на symfony2.



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


Что полезного вынес я из двухдневной поездки в Киев?


  1. Behat.
  2. Текстовый редактор Sublime Text 2, которым пользовался Кудряшов - крутая штука.
  3. Новые знания о Service контейнере в symfony2.
  4. Сэт рекомендованных бандлов.
  5. Хороший отдых и отличное настроение.
  6. А, еще надолго останутся в памяти такие "термины" как "проперсистить пропертя" и "проинхеритить до синих веников" :-)




Поеду ли я еще на Symfony Camp?


  • Да, конечно же, да!

воскресенье, 16 октября 2011 г.

Все побежали и я побежал, или Размышления вслух о выборе IDE

IDE, наверное, самый важный инструмент в работе программиста. Впрочем, некоторые их не любят и пользуются простым текстовым редактором, вроде, gedit, notepad++ или даже консольным vim. Аргумент в пользу текстового редактора, конечно же может быть только один. Обычно редактор гораздо менее прожорливый, чем IDE. 


Впрочем, в марте 2009 мне пришлось около месяца работать на ноутбуке с WinXP на котором был установлен процессор с тактовой частотой 1 ГГц и памятью 512 Мб. Свой я перед этим благополучно забыл в попоутке, положив рядом с собой на сидение. Так вот, на этом ноутбуке мне удавалось работать используя NetBeans + Firefox. Правда на это время приходилось отключать даже explorer :-)

В общем, следует принять как аксиому, что текстовый редактор работает быстрее IDE и при этом потребляет системных ресурсов в разы меньше. Чем же тогда лучше IDE?

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

Второе, что не менее важно для меня - я использую один и тот инструмент под всеми операционными системами. В то время, как я не смогу пользоваться notepad++ под Linux, а gedit не будет работать в Windows. Это важно для меня, т.к. у меня три ОС только дома. MacOS на ноуте, Windiows и Ubuntu на десктопе. Осталось только фрю на работе поставить для полного счастья :-)

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

Первой моей IDE был Eclipse PDT, потом пробовал ZendStudio. Полтора года работал в NetBeans. Много хорошего слышал о PhpStorm, а недавно, после восторженных отзывов многих коллег, решил его попробовать.

Хочу теперь поделиться впечатлениями. Их можно описать одним словом "Супер!". На мой взгляд, это лучшая IDE на текущий момент. PhpStorm очень быстр, есть все необходимые фичи и даже больше. Я первый раз стал делать коммиты в svn используя IDE, а не консольный клиент :-) 

Забавный факт, в выдаче Яндкса по запросу "PhpStorm" на первом месте ссылка на rutracker, а не на официальный сайт компании.

Да, IDE платная, персональная лицензия стоит 99 у. е., лицензия для компании обойдется в 199 у.е., но есть еще и бесплатная лицензия для open source разработчиков и для учебных заведений. В общем, цены очень демократичные.

Закончить хочется фразой из знаменитой рекламы с Малаховым: "Вы все еще кипятите? Тогда мы идем к вам!"



воскресенье, 9 октября 2011 г.

Как увеличить производительность MySQL в 5 раз

В дев режиме не составит труда увеличить производительность MySQL в пять раз. Все что нужно сделать - переместить базы данных в оперативную память. К примеру, в моем последнем проекте билд выполнялся за 5 минут. А после перемещения баз в оперативку - всего за 50-55 секунд. 


В общем, как сделать по шагам:


1. Копируем базы данных во временное хранилище:
 sudo cp /var/lib/mysql /var/lib/mysql.tmp -R
2. Создаем скриптик такого содержания:#!/bin/bash
set -e
cd /var/lib
mount tmpfs mysql -t tmpfs -o size=300M
cp mysql.tmp/* mysql -r
chown mysql:mysql -R mysql
/etc/init.d/mysql restart

Я назвал его mysqltomemory. "size=300M" - тут указываем необходимый размер раздела под базы.


3. Ложим скрипт в /usr/bin и помечаем как исполнимый.

4. Запускаем скрипт от имени рута.

Все, базы теперь находятся в оперативке. Недостаток - изменения, конечно же не сохранятся при перезагрузке. Поэтому мне нужно каждый раз после перезагрузки запустить скрипт и перебилдить проект.

На Винде также можно сделать подобное, существуют утилиты для создания разделов в оперативной памяти.

Да надеюсь, что всем понятно, что не стоит такого делать на продакшене :-)


З.Ы. Спасибо, Жене Афоничеву. Идея принадлежит ему.

воскресенье, 18 сентября 2011 г.

Тесты знаний на brainbench.com

Каждого программиста время от времени беспокоят вездесущие рекрутеры. Как известно, программисты сейчас в цене и многие компании готовы платить неплохие деньги за привлечение оных в свои ряды. Рекрутры стучатся в почту, в социалки, в скайп. В основном, подход стандартный, как и описание вакансий: "Просторный офис... Интересные проекты... Требования: PHP 5, MySQL... Бла-бла-бла...". Кого-то может такой подход и способен заинтересовать. А я обычно отвечаю, что если захочу сменить место работы, я обязательно свяжусь с ними. Но пару недель назад мне позвонила девушка из компании "Wildix". Она начала разговор с фразы: "Мы ищем крутых PHP разработчиков". В общем после непродолжительного общения выяснилось, что компания ищет PHP разработчиков с переездом в Одессу. Интереса ради я согласился пройти их тесты. И только сегодня нашел время. Для оценки уровня знаний предлагался сет из трех тестов на brainbench.com. О чем, собственно, и хочу рассказать. 

Все тесты на английском языке и состоят из 40 вопросов с вариантами ответов. На каждый ответ дается 3 минуты. Первый тест по SQL (ANSI), на мой взгляд наиболее сложный. С учетом того, что мой небольшой опыт SQL ограничивается СУБД MySQL считаю, что прошел я его достаточно хорошо. Система сообщила, что набрал я 3.39 баллов. А также, что я набрал больше баллов, чем 73% проходивших тест. Немого отдохнув я приступил к тесту по PHP 5.3. И тут меня ждало небольшое разочарование. Первая задача и сразу вопрос по MySQL, потом было еще несколько, потом были задачи по формам и html. Непонятно каким боком это все относится к PHP 5.3. В общем, я считаю это тест абсолютно не показательным. Тем не мене мой результат составил 3.42, что больше, чем у 75% проходивших тест. По javascript тест был наиболее простым на мой взгляд, но учитывая отсутствие какого-нибудь серьезного опыта в этой области, результат составил всего 3.02, что больше, чем результат 54% участников. 

Ну и, напоследок, пару слов о сервисе brainbench. Тут доступно большое количество бесплатных тестов для оценки знаний в самых различных отраслях. По бесплатным тестам можно получить бесплатный электронный сертификат и за сумму порядка 16 у.е. можно получить бумажную копию сертификата. Для компаний предлагается также много сервисов по оценке знаний. В общем, пока еще сам толком не разобрался, какие еще возможности есть, но профиль себе завел. Мой Transcript ID#: 9925861.

вторник, 13 сентября 2011 г.

256

Типичное утро. Начало девятого, я уже в офисе. Вчера закончился очередной спринт, закончился со скрежетом, на надрыве. С оверхедами, с коддингом в выходные и допоздна в будни. И во всей этой суете я совершенно забыл о том, что сегодня 256 день в году, а значит, как минимум мои российские коллеги сегодня празднуют День программиста.


К слову, если кто-то хочет мне что-нибудь подарить, подарки можно приурочить к одному из моих профессиональных праздников:
  • 12 апреля, когда Юра в ксомос слетал, я отмечаю День космонавтики, т.к. я учился в ХАИ;
  • 7 мая, когда товарищ Попов изобрел радио, я праздную День связи, т. к. в ХАИ я учился на радиофаке;
  • 19 июля, когда была написана первая программа (между прочим девушкой), можете поздравлять с Международным днем  программиста, т.к. работаю я программистом; 
  • последняя пятница июля - День сисадмина, традиционный праздник всех айтишников;
  • 13 сентября (в високосный год 12 сентября) - 256й день в году - День программиста, в Украине не официальный, но тем не менее;

Всем коллегам желаю стройного и изящного кода без багов! Пусть помагают вам юнит-тесты! Пусть IDE никогда не глючит! А менеджер пусть бережет от "индусского" кода!

И желаю как можно чаще испытывать чувство "Я это сделал!"



ВСЕХ С ПРАЗДНИКОМ! УРА ТОВАРИЩИ!(party)

День программиста — Википедия

Джатака о понимании

Забавный доклад Андрея Аксенова (да, это тот, который Сфинкс написал). Достаточно старенький, но от этого не менее полезный. Для тех, кто может еще не видел.





Все, пошел тренировать ежеминутный дзен :-)

понедельник, 12 сентября 2011 г.

Месяц+ на Toyota Corolla City

Не так давно стал счастливым обладателем Toyota Corolla в комплектации City. Для тех, кто не в курсе, комплектация City немного урезана по сравнению с Terra, и основное отличие в двигателе. City поставляется с двигателем 1,33L. "Она вообще ездит?" это самое безобидное, что я могу услышать от людей, когда узнают объем двигателя. Но этот движок способен выжать аж 105 л.с. Ездить по городу очень комфортно, по трассе бывет проблематично при обгонах, приходится раскручивать двигатель и при этом он сильно шумит или обгон получается плавным. Средний расход по трассе ~6-7 литров,а по городу ~8 л. Это учитывая мой мизерный водительский стаж, обкатку двигателя и езду на повышенных оборотах. Подвеская мягкая, на скорости автомобиль ведет себя послушно.


В восторге я остался и от комплектации. Да, мне не хватает, конечно, управляения магнитолой с руля и климат-контроля. Но, все равно, салон просто шикарный - просторный и удобный, очень эргономичный. В общем, всем кто сомневается, какой приобрести автомоболь до 20 тысяч вечнозеленых, всячески рекомендую присмотреться именно к этому варианту. При выборе альтернативой был KIA Ceed, но японское качество и более солидный внешний вид победили. 

Теперь, пара советов для будущих покупателей. Посадка у автомобиля достатчно низкая, поэтому не поскупитесь и закажите 16-дюймовые колеса вместо 15-дюймовых. В Terra они по умолчанию. Я например на второй день оторвал пластмассовую защиту воздухозаборника. В оправдание себе скажу, что ехал я по полному бездорожью. Поэтому совет номер 2 - установите сразу защиту картера двигателя, неоригинал обойдется всего в 500 гривен. 



Кто-то пугал дорогим ТО. Так вот сравнив регламентные ТО c Hyundai Accent получил суммарно ~13 000 грн у Toyota на 105 тысяч против ~20 000 грн 120 тысяч у Hyundai. Ну и напоследок пару обзоров от экспертов.
 
Обзор №1


Обзор №2

Пробег: 1700 км.

Let's begin

Незаметно прошло четыре пива и одна серия Интернов. Лида уже спит, она измотана трехдневной поездкой по маршруту Харьков-Киев-Алушта-Харьков. Наслаждаясь остатками выходных (точнее, выходного... а еще точнее, нескольких часов без кодинга), сравниваю сервисы для блогинга :-) В лидерах LJ, WP и Blogger. И именно последний произвел наиболее приятное впечатление. И пофиг, что он не особо популярен в СНГ. Мне здесь нравится.


http://tyomo4ka.blogspot.com