Tom Adler’s blog

тихая радость

эх, хорошо всё-таки в мире скриптовых языков и открытых исходников! Не нравится, как себя ведёт будильник? Буквально блокнотом залезаешь ему внутрь, правишь несколько символов — и лепота…

с редактором интерфейса похуже, конечно, но glade достаточно хорош

,

борьба с tinyurl.com

многим людям не нравятся длинные ссылки. Я могу их понять, если эти ссылки не относятся к человекопонятным урлам, и содержат большей частью мешанину из разных символов. Однако даже в таких ссылках доменное имя обычно легко читается, и само по себе несёт некоторую информацию. Только вот даже эти крохи всяческие «сокращатели ссылок» вроде tinyurl.com или b23.ru безжалостно скрывают за другой мешаниной символов, хотя и намного более короткой

с этим можно бороться, благо каждый сам хозяин своему браузеру, в котором показываются эти ссылки. Берётся простой user script, вставляется в браузер — и вуаля! Достаточно навестись мышью на короткую ссылку, чтобы она развернулась во всю длину

а теперь о технических подробностях. Вроде всё просто — нужно отправить запрос по этому адресу, и прочитать заголовок редиректа. Двойной облом: редирект происходит автоматически, да и отправить запрос на другой домен нельзя. Можно только использовать JSONP, но для этого нужен сервер. О, Simon Willison недавно делал сервис json-head, который как раз возвращает заголовки, отдаваемые урлом! Опять облом: сервис использует запрос HEAD, на который «сокращатели» реагируют неправильно. Пришлось делать свой сервис, только не показывать его никому — хостинг потенциальной нагрузки не выдержит. Впрочем, для проблемы нагрузки появилось решение: Google App Engine, который недавно открылся-таки для всех желающих

алгоритм работы в итоге такой: находим на странице все ссылки длиной меньше 30 символов, ведущие на другой домен, и вешаем на них обработчик mouseover и focus, который подгружает с сервера развёрнутый урл и заменяет им ссылку. При изменении документа повторяем

эх, давно не удавалось вот так прийти домой и напрограммить что-нибудь : )

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

, ,

безопасные кроссдоменные запросы

яваскриптом можно делать кроссдоменные запросы, используя технику JSONP, но она небезопасна, поскольку посторонний скрипт добавляется в контекст страницы. Многое изменится благодаря гениальному хаку: CSSHttpRequest позволяет получить данные с другого домена, ничем не рискуя! Нет, конечно, вектор атаки можно придумать и для этого случая, но возможностей у злоумышленника намного меньше

via Simon Willison

миртесен, php и javascript

в скором времени я перестану работать над МирТесен, в связи с этим хочется найти себе подходящую замену. Мне нужен программист на php с неплохим знанием javascript. С яваскриптом будет не очень много работы — 20-30% времени, остальное PHP. База кода довольно большая, но довольно аккуратная. Работать, естественно, не в одиночку — тут есть и другие php-программисты. Команда вообще хорошая : )

если заинтересовало, пишите, спрашивайте : )

ps: этот блог скоро опять оживёт, просто некоторые хлопоты в реальной жизни пока что отвлекают

, ,

своя сборка пакета за 2 шага

сегодня в комментариях к багу выпадающей консоли tilda нашёл чрезвычайно простой способ делать свои сборки пакетов в убунте:

  1. sudo apt-get build-dep tilda
  2. sudo apt-get source -b tilda

естественно, имя пакета нужно подставить своё, и выполнять эти шаги во временном каталоге. Теоретически это может вам что-нибудь соптимизировать. Хотя если вам хочется оптимизации, скорее всего вы уже сидите в генту : )

кстати, ещё одна полезная программа для дистрибов с менеджером пакетов — checkinstall. Она мониторит работу с файловой системой в процессе установки через make install, например, и по итогам создаёт пакет, выполняющий те же действия. Этот пакет можно установить повторно, и тогда все только что созданные файлы будут под контролем менеджера пакетов, чтобы при необходимости он смог их всех почистить с диска.