Evernote на planet33.ru

Недавно на хабре Evernote объявил о долгожданной кнопке Site Memory.
Сам очень много пользуюсь evernote и подумал, что полезно будет добавить эту кнопку и на planet33.ru, чтоб можно было запоминать адреса мест и событий, ну и вообще все на сайте :)

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

3D панорамы лучших мест Владимира на iPhone/iPad и возможно Android

В iPad все хорошо, но на нем нельзя смотреть 3D flash панорамы :(  Давно уже хотел сделать, чтоб панорамы planet33 работали и на iPhone/iPad, да все руки никак не доходили….

Вчера выдалась свободная минутка и вот, теперь можно смотреть полноэкранные 3d панорамы прямо с любимого девайса.

Так же должно работать и на Android девайсках, но проверить нет возможности. Android пользователи, проверьте пожалуйста :)

Улучшение алгоритма построения расписания для киноафиш

Недавно мы переписали алгоритм автоматического построения расписания фильмов для кинотеатров Киномакс Владимир и Руськино Владимир.
Все бы хорошо, но Руськино не очень машино-дружелюбно оформляет нон-стопы, например:

 - Обитель зла 3D и Край на самом деле Обитель зла 4. Жизнь после смерти 3D и Край
 - Аватар с.в. 3D и Пир. 3D на самом деле Аватар специальная версия 3D и Пираньи 3D
 
Простой подстановкой оригинальных названий определить фильмы в нонстопе не получалось.
Решили пока просто пропускать непонятные нон-стопы и не добавлять их в киноафишу на planet33.

На днях на github-е появилась интерессная библиотечка на питоне для сравнения строк - jellyfish.

Очень захотелось попробовать Jaro/Winkler Distance, Levenshtein Distance и Hamming Distance для решения проблемы нон-стопов. Вообщем, не долго думая, сделал порт для ruby - rubyfish, добавил несколько алгоритмов Longest Substring, Double Metaphone и Longest Subsequence и стал тестить :)

Ну и как следовало ожидать, Longest Substring дал очень хорошие результаты (так сказать использован по назначению). Теперь на планете самое точное расписание сеансов к фильмам

Afisha

A Jaro, Levenshtein, Hamming расстояния мы еще поюзаем :)

Креведки :)

Сегодня с Ольгой забацали очень вкусный завтрак.

Что получилось:

Еслиб были чищеные креветки - было бы гораздо быстрей, а так пришлось изрядно покряхтеть :)

Mechanize и кодировки

Для скинскрепинга мы используем mechanize. В mechainizе все просто замечательно, если парсить сайты, которые отдают контент в ASCII или UTF-8 кодировках. Но если, попробовать отпарсить сайт в windows-1251 кодировке, то mechanize/nokogiri лажают.

Например, если сделать запрос к kinopoisk.ru,  то получим непонятный результат:
Код:
результат:

Решения в гугле найти не получилось, пробовали всяки манкипатчи, но как-то не очень красиво получалось :( 
В итоге выкрутились через Mechanize#post_connect_hooks:
Добавили MechanizeEncodingHook
И в итоге получаем нормальный результат:

генерация thumbnail в imagemagick

Не нашел в инете простого рецепта как сгенерить квадратные тубнейлы (все какие-то большие скрипты), покурил мануал к imagemagick и вот рузельтат:

mogrify -thumbnail 52x52^ -gravity center -extent 52x52 -quality 75% -strip *.jpg

это я так, чтоб не забыть.

Негодую

В набитый автобус вошла семейная пара с маленьким ребеноком. Сидачих мест нет, мать с ребенком на руках села на выступ. Я посадил ее на кресло, а сам сел на пол ( где она сидела раньше ). Поехали... Через несколько остановок появилось свободное сидячее место и муж спокойно уселся в кресло, а я продолжал ехать скорчившись на полу. Расстроился...