leechcraft
Учат в школе
Давно я не писал сюда. Это по большей части потому, что сейчас я обитаю в жуйке (да, сраный микроблоггинг поглотил и меня), учусь на втором курсе и въя^W работаю по трем направлениям.
Проблема, мой дорогой бложек. Может быть, я хороший программист. Пишу говнокод на плюсцах и немного на пейтонах, пытаюсь на хаскелях. Но вот возникает та самая проблема: не могу я работать в команде. Не получается.
Возьмем те же личкрафты. Казалось бы, отличный проект для командной работы: один программист пишет один модуль, второй — другой, третий — еще какой-то. Стандартизуешь API, если надо, между плагинами, и всё. А если плагины не связаны между собой (один пилит IM, а другой — плеер), то и этого не нужно. Но не все так просто.
Начнем с того, что ВНЕЗАПНО, несмотря на описания, хаутушки и мануалы (и даже гайд по написанию плагинов на примере простенькой скриншотилки), код среднему человеку, пытавшемуся тыкать личкрафты, кажется сложным. C++! STL! Qt! Boost!
IM, мессенджер, то бишь. Архитектура проста. Отдельным процессом ядро мессенджера, запускается, получает список .so-шек с реализациями протоколов от личкрафта, грузит их и использует для коннекта к серверу. Это чтобы от сервера не отключаться, когда личкрафты упадут. А ядро IM'а, в свою очередь, через какой-нибудь локальный IPC связывается с соответствующим плагином к личкрафтам, который уже рендерит ростер, показывает табы с чятиками и делает множество других интересных вещей.
API этого всего дела. Да не знаю я API. Не могу я сейчас предугадать, какие сегодня абстракции понадобятся для libpurple-based протокольного плагина, какие завтра — для iris-based, а через неделю — для SIP. API я буду рожать по мере написания кода. И изменять буду. И удалять старое, и добавлять новое. Да и код в моей голове. Архитектура в моей голове. Идеи и цели в моей голове. Я все это вижу, чувствую, но быстрее написать самому, нежели кому-то что-то объяснять.
Что делать, моя любимая жежешечка? И почему меня в моих физтехах учат какому-то жалкому подобию C++, учат умирающим технологиям типа SQL на примере MS SQL, но не учат таким банальным вещам?
WYFV (Watch Your Fuc^W Funny Video)
Теперь не нужен флеш, чтобы смотреть видео на ютубе. Плагин Poshuku WYFV юзает любой установленный плагин для медиа-плеера, чтобы заменить стандартный флешевый плеер:
![]()
(Кликабельно, 193kB)
Соответственно, есть поддержка выбора желаемого качества: от 3gp, 176x144 до HD, 1280x720, но не у всех файлов поддерживается каждое разрешение. Скоро добавлю навигацию по related videos.
И да, ищутся могущие добавить поддержку других видеохостингов. Там не особо сложно, я б и сам мог, да траффик сильно дорогой.
Экспорт фидов в fb2
Посмотрел я сегодня с утра на 674 непрочитанных новости в слешдоте и решил сделать экспорт фидов в fb2, дабы прочитать потом все с КПК по дороге куда-нибудь.
Вот так выглядит диалог экспорта:
![]()
(Кликабельно, 126kB)
Можно выделить несколько разных фидов, выбрать категории для экспорта, а также экспортировать либо все новости, либо только непрочитанные.
И вот так потом все это смотрится в Okular:
![]()
(Кликабельно, 210kB)
AlReader на КПК тоже читает. Уже проверено :)
Кое-что новое в личкрафтах
Почитал я RSS-фиды и решил теперь освещать всякие новые фичи в LeechCraft. Понтовые и не очень, грандиозные и не очень, трудновыполнимые и не очень.
Начнем с предложения добавить некие стандартные RSS-фиды и OpenSearch-поисковики в мастере первого запуска. Выглядит это так:
![]()
(Кликабельно, 223kB)
LeechCraft автоматически определяет пользовательскую локаль и выводит релевантные фиды. Кроме того, есть набор неких глобальных (возможно, интересных всем) фидов (Slashdot, Euronews), которые добавляются ко всем локализованным наборам и выводятся, если для данной локали нет набора. Аналогично с OpenSearch'ем. Кстати, по-прежнему принимаются предложения на тему фидов по умолчанию.
Вторым пунктом идет упрощенная и переработанная система поиска. С пылу, с жару, только что закоммитил и push'нул:
![]()
(Кликабельно, 148kB)
По умолчанию предлагается простой поиск, где пользователь может выбрать одну или несколько категорий (автоматически сразу подхватываются новые из плагинов по мере их появления) и тип поиска, а потом ввести обычную строку, без всяких логических выражений. Сняв галочку с чекбокса, он активирует продвинутый режим, который соответствует поведению LeechCraft до этого. В этом режиме пользователь сам может целиком и полностью сформировать самый извращенный запрос, который только пожелает.
Ну и напоследок, представим новый плагин с символичным названием AnHero. При наличии кед позволяет личкрафтам падать красиво и со спецэффектами, удобно посмотреть бектрейс и отправить кому-нибудь отчет:
![]()
(Кликабельно, 151kB)
LeechCraft в rion overlay
Благодаря славному товарищу Andor личкрафты появились в gentoo-оверлее rion. Так что делаем layman -a rion и эмержим leechcraft-9999 с полным набором юз-флагов. Ну, кроме DC, она пока еще не компилится под гентой почему-то. Если кто разберется, почему — сто интернетов тому.
Teh lulz
19 августа выпущен LeechCraft 0.3.0, наконец, почти через полтора года после предыдущего, выпущенного 5 апреля 2008 года. И я попал на глагне Хабра и ЛОРа с этой новостью. В конференцию leechcraft@c.j.r подтянулись посанчеги с упомянутых сайтов.
В тот день количество скачиваний личкрафта — около 300, на следующий — больше 100, хотя обычно в последнее время в день скачивают 20-30 раз.
Почти сразу после поста на Хабре статью на Википедии один товарищ поставил под удаление, хотя остальные товарищи против. Посмотрим, что будет. Да, особенно интересно сравнить со статьями про rTorrent и CTorrent, например. Эти клиенты тоже упомянуты в BitTorrent-шаблонах, тоже ни одного официального ресурса, и никто не сомневается в их значимости. Чую личный интерес.
Какой-то чувак зачем-то добавил ссылочку на мой бложек. Я уже выпилил и попросил у него в обсуждении обосновать, схренали. Нефиг. Посмотрим.
Состояния псто
Нет времени читать френдленту, нет времени читать слешдот, нет времени читать лор, нет времени срать в бложек как раньше.
1 августа релиз 0.3.0 личкрафтов, все большему количеству людей показываю, чо-то как-то не слышу криков, что он говно. Разве что, от тру олдфагов, слепо поклоняющихся юниксвейности и разнесению фич в разные процессы.
Разработка с майлстоунами понравилась. Бранчинг на master-ветку с новыми фичами и на ветку с текущим релизом с замороженными фичами понравился. Отдельный бранч на рефакторинг модуля — понравилось. Впервые опробовал git merge. git cherry-pick и, в который раз, git bisect — фапабельны чуть более, чем. Надо освоить TDD уже наконец и писать следующий проектик с тестами. Благо, там никаких гуйков, всего-то метаФС на FUSE с тегами и всякми метаинформациями в SQL.
Придти в конфу christian@conference.jabber.ru, посмотреть, чокак там, увидеть заветые буквы «Qt», затроллить конфу личкрафтами. У меня случайно получилось, честно!
10 дней назад пришло письмо из некой софтпедии, что мой личкрафт туда включен. Я их не просил. Приятно чтоле.
Готовить сайт, пилить джангу, писать заготовки поста на хабр и на лор. Приготовиться отражать атаки олдфагов, велосипедофобов, троллей, лжецов и девственников.
Вот такой состояния псто.
Трансляторы
Нашел переводчика на арабский. Он уже перевел кусочек ядра и кусочек Aggregator'а.
![]()
(Кликабельно, 141kB)
Также нашел еще переводчиков на итальянский, турецкий, татарский. Такие дела. Французский и немецкий бы заиметь...
Еще один вечер
За этот вечер был написан тупенький, но работающий password manager для LeechCraft::Poshuku. Осталось немного допилить мелочи (не сохранять уже сохраненный пароль), и ништяк.
Данные форм хранятся в БД целиком, поэтому есть пространство для расширения. Например, для запоминания заполненных форм из закрытых вкладок или даже автокомплита для полей ввода. Правда, для последнего все же придется ждать Qt 4.6, ибо без нормального DOM traversal из кода, а не из JS, реализовать это будет туго.
Офигенни
Если при запущенном OpenOffice убить LeechCraft, то OpenOffice тоже убьется. Потому что опенофисовский плагин цепляется личкрафтом. Kekeke.
WTF
Обновился до Qt 4.5.1. Да, пофиксили один хитрожопый баг. Да, ошибок рендеринга стало гораздо меньше. Но. Если какой-то сайт в кеше уже есть, то скрипты с этого сайта не работают, как будто JavaScript отключен. GMail не грузится, не растет кокос. И вообще, кстати, GMail странно ведет себя под этим вашим вебкитом. Зато когда откатился до 4.5.0, магическим образом заработал flash. Так что теперь могу смотреть видео с ютюба/контакта и вообще всяко радоваться жизни.
Footsteps
Да, пора взрослеть. Потому что надо много чего решать с проектом, по какой дороге пойти, как все это оформить и вообще. Все, что я скажу сейчас, будет очень сумбурным, потому что самому еще не понятно, что, как и какого черта. По крайней мере, теперь у меня достаточно всепоглощающей работы в количестве двух штук, чтобы не оставалось времени на пожрать.
Надо спать немного больше, а то совсем разучился. Сегодня спал четыре часа, больше не смог.
Лингвистическое
Коллега фиксил мои травяные переводы LeechCraft'а на русский, собрал коллекцию лулзов.
Также, пользуясь случаем, такой вопрос. Ты идешь, видишь знакомого тебе человека, говоришь ему «Привет!» на автомате. Какой смысл для тебя несет это приветствие? Знак, что распознал человека, или что-то еще?
Немного плохого
В адрес Qt 4.5. Собственно, в этом релизе программа стала регулярно падать где-то в недрах QtNetwork при работе с SSL, где-то в недрах QtCore при работе с QSortFilterProxyModel (что раздражает, потому что основная вкладка проги построена на куче вложенных QSortFilterProxyModel). Надеюсь, к 4.5.1 починят. Да и ваще, нефиг было софт из experimental ставить )
Превьюшечки же!
Теперь личкрафт показывает предпросмотр веб-страницы шириной 200 пикселей и высотой как получится (надо бы обрезать, кстати) при наведении мышки на закладку в табах. Кстати, это помогло также найти баг в куте, который заставил передвинуть те три контрола из левого верхнего угла в правый верхний.
![]()
(Кликабельно, 214kB)
Над этой хренью я парился последние 3 часа. А все потому, что кутешный rich text engine не умеет ури-схему data: в src тега img. Пришлось юзать Qxt. А когда увидел, как оно выглядит — пробило на ржач.
Также, на комменты к предыдущему посту отвечу завтра. Сегодня задолбан и хочу спать.