Tags: development

пакман

PDF preview bookmarklet

Написал букмарклет для просмотра PDF в браузере (при помощи Google Docs, например так).

Таких букмарклетов в принципе полно, и наверняка кто-то уже такой написал (для Greasemonkey есть несколько скриптов, но я не хочу, чтоб это выполнялось для каждой страницы), но сходу я его не нашёл, плюс мой вдобавок ко всему умеет делать превью PDF с CiteSeerX (как давно я об этом мечтал! — у них был только download).

Делаете “New bookmark” («Новая закладка», или как-нибудь так в случае руссифицированного интерфейса), называете его как-нибудь вроде “PDF Preview”, копируете в поле “Location” следующую строчку:

javascript:var%20links=document.links,link,i;for(i=0;i!=links.length;i++){var href=links[i].href;var ext=href.substr(-4);if((href.indexOf('://docs.google.com/')==-1&&(ext=='.pdf'||ext=='.ppt'||ext=='.doc'))||(href.indexOf('://citeseerx.ist.psu.edu/viewdoc/download')!=-1&&(ext=='=pdf'))){links[i].href='http://'+'docs.google.com/viewer?url='+encodeURIComponent(href);}}void(null);

(к сожалению LJ не даёт создать JavaScript'овую ссылку, которую можно было бы просто перетащить в тулбар).

Клик по этому букмарку поменяет все ссылки на PDF, DOC и PPT на текущей странице так, что они будут открываться в Google Docs (см. пример ссылки выше).
пакман

Презентация “Scrap Your Boilerplate & Uniplate”

Мою презентацию на крайнем собрании St.Petersburg Haskell User Group вместе с исходниками (LaTeX + Beamer + lhs2TeX) можно найти здесь. Скоро там же появится и аудиозапись.

Прямая ссылка на презентацию: “Scrap Your Boilerplate & Uniplate”.
пакман

ICFP notes

Кто-то на конференции заметил, что я очень похож на другого участника конференции: на Simon Marlow (один из основных разработчиков GHC). Кроме того, в одном из докладов (про необходимость упрощения внутренностей GHC и как это можно делать) был шуточный слайд „что же мы будем делать, если Саймона переедет автобус? Никто же не понимает, что там внутри творится!”. В результате, после конференции отдельные товарищи начали интересоваться, знаю ли я что-нибудь про внутренности GHC, а после стали предлагать забэкапить мозг Саймона „в меня” (чтоб смог подхватить).


Наконец объявили результаты ICFP Programming Contest 2007. Организаторы рассказали, как они готовили задание, что творилось в „штабе” во время самого соревнования. Эндо, кстати, выжил, и даже появился на конференции. Подробности будут на SPbHUG. Поздравления и уважуха команде ryba, занявшей 4 место. Ещё важное замечание: Алексей из команды jabber-ru (и единственный её участник) — монстр. Он шёл практически тем же путём что и мы и успел сделать гораздо больше (организаторы показали последовательность картинок, соответствовавших его префиксам — это просто невероятно). Мечтаю услышать его рассказ (а то и мастер-класс) о том, как ему удалось сделать так много за такое короткое время).

Как отметили организаторы, люди часто „теряли веру в свой любимый язык” и меняли его на „быстрый” C или C++, потому как уж очень медленно работало у них преобразование из DNA в RNA. Да, переписанная программа работала чуть быстрее (в небольшую константу раз), только вот для нормального участия нужно было ускорение на несколько порядков. Правильный вывод: сначала думай, потом пиши.

Кстати, в случае с Haskell в нашей команде всё было немного по-другому. Мы не потеряли веру (и akamaus у нас продолжал ковырять DNA→RNA преобразование на Haskell даже после написания его на C++), но поняли, что нам не хватает инструментов для обнаружения проблем в нашем коде (в условиях жёсткой нехватки времени). Плюс мы много было потеряно из-за miscommunication (как это по-русски? „коммуникационная неудача”?): я с самого начала предложил сделать REPL-style выполнение DNA в GHCi, но эта идея потерялась, а я это не отследил. Но ладно, про то, как мы участвовали в ICFPC будет отдельный пост. Пользуясь случаем шлю alar'у луч бессонницы, ибо он так и не написал краткий отчёт и задерживает выход подробного разбора.

жирафа

новый слоган для Ruby

После написания бóльшей части относительно сложного тула на Ruby, придумал слоган, отражающий процесс программирования:

Ruby Programming Language: welcome to the Dark Side of [meta]-programming

Надо бы понять, как (точнее, почему) программы написанные мной* в таком стиле вообще могут работать. Юнит-тесты, конечно, придают уверенности, но, если взглянуть на всё это как на целое, причины работы остаются для меня загадкой.


* а я, вообще говоря, пурист в плане практик программирования и радикал в отношении к чистоте кода