Кое-какие proof-of-concepts
От: Зверёк Харьковский  
Дата: 01.12.06 06:51
Оценка: 26 (5)
Я тут нарисовал одну штуку
Автор: Зверёк Харьковский
Дата: 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 мб, весь рантайм тягает за собой); с другой стороны, можно спокойно изучать исходники.

Имейте ваше удовольствие!
FAQ — це мiй ай-кью!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.