22
05/2010

Symfony Camp UA 2010

Всем, у кого есть желание и возможность побывать на конференции разработчиков Symfony, добро пожаловать на Symfony CAMP UA 2010.

Конференция пройдет 3 июля 2010 года, участие бесплатное. Буду освещаться тенденции развития фреймворка, актуальные проблемы разработки и многое другое.

Также приглашаются люди, которые будут помогать в закулисных делах конференции. Если у вас есть желание помочь, при регистрации в комментариях к заявке укажите «хочу в help team».

03
01/2010

Твиттер-бот Полиглот

Сегодня за день наваял и запустил твиттер-бота с рабочим названием «Полиглот».

Адрес@_polyglot

Суть работы: бот отвечает на реплаи (reply) и личные сообщения (direct message) их переводом. С помощью хеш-тегов задаются исходный и конечный языки перевода в формате #from_lang2to_lang.

Пример

Запрос:

salikhov: @_polyglot Мороз и солнце — день чудесный #ru2en
salikhov: D _polyglot It is wonderful #en2de

Ответ:

_polyglot: D salikhov Frost and sun - a wonderful day
_polyglot: D salikhov Es ist wunderbar

Бот на данный момент поддерживает следующие хеш-теги:

#zh2en #nl2en #en2ar #en2nl #en2fr #en2de #en2el #en2it #en2ja #en2ko #en2pt #en2ru #en2es #en2sv #fr2sv #de2fr #de2sv #el2en #it2en #ja2en #ko2en #pt2en #ru2en #es2en #es2sv #nl2sv #sv2de #sv2en #sv2es #sv2fr

В твиттере для такой штуковины, как мне кажется самое место, т.к. бывают случаю, когда нужно узнать перевод слова, а под рукой только телефон. Лезть через браузер на сайты-переводчики долго, а быстренько настрочить через твиттер-клиент сообщение не составляет труда.

Если говорить о технической части, то бот написан на Ruby с использованием gem-пакетов rsay и twitter4r. На данный момент бот обрабатывает входящие сообщения с частотой раз в минуту.

Писал бота в рамках продолжающегося фонового изучения Ruby, плюс ко всему поработал с Twitter API, которое к слову сказать очень «прозрачно» и понятно.

При обнаружении косяков в работе сообщайте мне в личку или здесь в комментарии.

В общем, фоловьте и пользуйтесь на здоровье :)

PS Кстати можете считать меня мазохистом, т.к. разрабатывал, отлаживал и развертывал «Полиглота» я через GPRS.

UPD Все переводы «Полиглот» теперь высылает только на DM во избежание засорения френд-ленты и появления спама. Запросы как и раньше можно отправлять через reply и DM.

11
11/2009

Мысли по поводу минимизации js файлов

Мысли по поводу минимизации js файловСейчас достаточно стандартной практикой стала минимизация js- и css-файлов. Сформировались как сервисы (Packer от Дена Эдвардса, JS Minifier), так и server-side скрипты для автоматической минимизации файлов (YUI Comressor, JSMin для PHP). Все это очень хорошо, я не спорю. Но мне сейчас хотелось бы обсудить «стратегию» минимизации.

Дело в том, что при оптимизации загрузки страницы, как правило, рассматривают вопрос снижения времени скачивания js-файлов, но упускают вопрос инициализации загруженного кода.

читать далее...

07
11/2009

Коррекция адреса веб-страницы

Бывает, мы делаем ошибки при наборе адреса страницы. Классика жанра. Как результат, мы видим 404 страницу. Вчера я попробовал сделать обработчик таких ситуаций, который ищет похожий адрес и при обнаружении такого, переадресовывает на него.

На самом деле задача решается очень просто. Достаточно обратиться к расстоянию Левенштейна — понятию, обозначающему разницу двух строк в виде количества операций вставки, удаления и замены, необходимых для перевода одной строки в другую.

Если говорить о конкретных реализациях, то есть несколько готовых способов определения расстояния Левенштейна.

Существуют готовые функции levenshtein в PHP и PostgreSQL, у которых присутствует ограничение на длину сравниваемых строк в 255 символов. Для MySQL и Oracle я обнаружил только хранимые процедуры, которые рассчитывают данное расстояние.

Данную фичу я добавил на этом блоге. Для демонстрации ее работы возьмем адрес:

http://blog.salikhovilyas.ru/2009/06/07/did-you-know/

При вводе более-менее похожего адреса, система сразу перенапраляет на правильный:

http://blog.salikhovilyas.ru/2009/06/07/didyouknow/

Если адрес отличается достаточно сильно, то система выдает 404 страницу, а также предлагает наиболее похожие адреса:

http://blog.salikhovilyas.ru/2009/06/7/didknow/

Аналогичную логику я добавил в небольшую symfony based cms, которую мы используем в своих проектах.

Если говорить о популярных на данный момент CMS, аналогичный функционал я заметил только в umi.cms, в остальных системах ничего подобного я не нашел.

01
09/2009

И поработать, в принципе, можно

Пришло сегодня на job@intaro.ru:

Добрый день! Очень хочу работать! Не все умею, но быстро научусь.
Пишу на php. Зовите, приеду пообщаемся, может сгожусь. 

Человек даже не напрягся указать, как его зовут. Такое письмо-надежда в никуда.

А если серьезно, то у нас открыты вакансии php-программиста и js-программиста. Работы много, проекты интересные. Резюме — на указанный выше или мой ящик.

20
08/2009

Закончили тут этап проекта

Закрыли сегодня первый этап крупного проекта (начался в ноябре). Многому научился за это время — и в организационном плане, и в плане разработки.

Во-первых, пересмотрел свои взгляды на оценку сроков разработки. В первую очередь это касается тестирования — не недооценивайте сроки, отводимые на тестирование! Еще в Древней Руси знали толк в тестировании, все знают про 7 раз отмерь и один раз отрежь. В общем, многие наступают на эти грабли, только пока сам не наступишь, всерьез не воспринимаешь.

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

Поэтому важно на первых порах максимально детализировать требования к создаваемой системе, дабы потом не возникало диалогов: «Я заказывал вам соковыжималку, а вы мне миксер сделали, а вообще я хочу теперь блендер со встроенным радио».

Во-вторых, понял, что перед началом проекта обязательно нужно проводить подготовительные работы:

  1. Настроенные и готовые к работе средства коллективной разработки: система версионного контроля (svn, cvs, git, на любителя), багтрекер и средства планирования/обсуждения в отдельных или одном лице.
  2. Документация и материалы. Сюда входят ТЗ, описаниях архитектуры, интерфейса, дизайн, а также согласованные командой документы по организации кода, комментариев, базы данных и т.п.

Хаос в этих моментах приведет к хаосу во всем проекте (не путать с Доктором Хаусом ;).

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

P.S. Да, и если вам предлагают поучаствовать в проекте по разработке мессенджера за 2 месяца командой из 2-х человек, я настоятельно вам не рекомендую соглашаться. 

_