Я тут
нарисовал одну штукуАвтор: Зверёк Харьковский
Дата: 29.11.06
, сдуру положил ее в tools (кстати, если здесь есть модераторы, нельзя ли ее сюдой принести?).
Развил идею еще чуток, и наконец-то появились собственно те concept, которых proof.
Что это такое?
Клиент к различным веб-словарям. Берет ваш запрос (например "w Nemerle"), превращает его в url (
http://en.wikipedia.org/wiki/Nemerle), загружает кусок страницы (грубо говоря, первые несколько значащих абзацев) и отображает лаконично.
Как загружать — указывается в настройках шаблонами (пока не сильно гибкими). Конфигов для словарей опять же пока немного, но планируется (и словарных словарей, и всяко-разных man'ов, msdn-ов и проч.)
Зачем это надо?
...если все современные браузеры и так умеют выполнять преобразование урлов рода "w Nemerle" =>
http://en.wikipedia.org/wiki/Nemerle
Несколько причин:
1. отображение только значимой информации (никаких баннеров, менюшек, "обсудить эту страницу" и проч.)
2. отображение лаконичной информации (из википедии берет только первые абзацы, из лингвы выбрасывает текст примеров и т.п.) — ориентация на "быстро посмотреть разъяснение/перевод"
3. некоторая экономия трафика (грузит не всю страницу целиком, а только до нужного места, не грузит css, js, картинки и проч.)
4. словарно-ориентированный интерфейс (например, можно в пару нажатий клавиш без использования мыши скопировать перевод; история и кеширование запросов и т.п. очевидные радости)
5. в задумке — еще и некоторая автоматизация (сложные стратегии загрузки вроде "загрузить страницу по УРЛу, найти в ней ссылку определенного вида, загрузить страницу по ссылке, отобразить")
Это с точки зрения зачем нужна такая программа. А пишу я в этот форум, потому как решил поиграться с несколькими собственными не вполне стандартными идеями. Их-то и хотелось обсудить.
Итак:
0. для начала, чтоб было понятно о чем я, вот это пустое окошко (да, куча разноцветных прямоугольников — это чудовищно, я знаю, спасибо):
вот это окошко, в которое загрузили одну статью
(обратите внимание, что каретка находится внутри статьи — это позволяет быстро скопировать кусок текста, например перевод; если же нажать какую-либо редактирующую клавишу — начнется редактирование запроса)
1. ответы на запросы представлены "бесконечной лентой":
2. скроллбары здесь отсутствуют как класс. то ись вообще.
в замену им принято два решения:
а) чтобы посмотреть непоместившийся кусок слишком длинной статьи, изменяется размер самого окна, путем прокручивания колесика мышки (ага, вместо скролла
), либо Ctrl+Gray Plus, Ctrl+Gray Minus, либо как обычно ресайзят окна.
б) чтобы перемещаться по "бесконечной ленте", используем вот эти странные квадратики сверху и снизу от статей
Это загруженные статьи в хронологическом порядке загрузки: по центру читаем текущую, ниже нее — те, что были загружены раньше; если кликнуть на одну из них, она будет по центру, над ней будут загруженные позже нее, под ней — загруженные раньше. Перемещение по ленте также возможно с помощью Ctrl+вверх, Ctrl+вниз; кроме того, если еще раз задать уже загруженный запрос, соответствующая статья из ленты окажется по центру.
3. работу с клавиатурой я постарался сделать максимально естественной, поэтому:
* Tab не работает вообще
* стрелки перемещения работают так, как можно предположить
* все клавиши редактирования переключают фокус в поле ввода запроса и срабатывают там
* дополнительные действия повешены на Ctrl+клавиша (перемещение по ленте, изменение размеров окна, теоретически еще будет удаление статьи из ленты — Ctrl+Del)
* Esc — выход, как и положено уважающему себя ненавязчивому словарю
/увы, лента запросов между сеансами не сохраняется, и это, конечно,
/
Собственно, интересны комментарии к этим решениями.
Если кто-то хочет подержать это в руках
Брать тута.
Помнить, что это proof-of-concept, то есть никаких настроек подключения/прокси и вообще ничего умного там нету.
Работающие на данный момент словари:
g — google
gc — google calculator
gd — google definition
gs — google spell (почему-то только аглицкий)
w — wikipedia
в — википедия русская
ll — lingvo (en->ru, мог бы в обе стороны, но переадресацию я пока не обрабатываю)
l — тот же lingvo, но более лаконичный (с выброшенными примерами)
и всо пока.
кто сильно храбрый, может попытаться определить свои словари, ориентируясь на файлы sites/*.conf
Поскольку написано на Ruby — с одной стороны, весит порядочно (1.2 мб, весь рантайм тягает за собой); с другой стороны, можно спокойно изучать исходники.
Имейте ваше удовольствие!