Ковыряемся. KHotkeys скорее мертв, чем жив. Заставить его работать у меня не вышло.
KWin-у нельзя повесить на одно действие более нескольких хоткеев (в 3.x было можно). Также пропала возможность повесить хоткей на переключение к следующему и предыдущему окну (в порядке отображения в таскбаре, а не между последними окнами, как по Alt+Tab).
Запуск терминала по Win+K повесил с помощью xbindkeys.
После запуска Openoffice плазму начинает очень сильно колбасить. Она странно перерисовывается.
Композитные эффекты выключил нафиг, ибо только мешают. Порадовал gtk-qt-engine-kde4 своей безглючностью. Плазма за это время ни разу не упала. Что даже странно.
В целом жить пока можно :)
Поставил себе релиз. Предварительно снес libqt3-mt, чтобы гарантированно не осталось ничего от KDE3. Ставил на реальное железо (ноут с GeForce Go 7400).
Первое, что бросается в глаза — стабильность. За час-полтора работы ни разу ничего не упало. Имеющийся функционал работает достаточно стабильно. Обрадовало, что kwallet умеет читать пароли из бумажника KDE3.
Тем не менее, недостатки бросаются в глаза.
continue reading
Известной фичей http://ya.ru/ является возможность автоматического импорта постов со сторонних сервисов (в частности livejournal, liveinternet.ru). Также имеется возможность импорта постов с любой RSS-ленты. После указания URL-и, её запросит бот с весьма интересным User-agent-ом: YandexBlog/0.99.101 (compatible; DOS3.30; Mozilla/5.0; B; robot)
В случае поддержки другой стороной OpenID, импорт осуществляется моментально. В противном случае нужно разместить в RSS-ленте специальный код, который будет являться подтверждением авторства этой RSS-ленты. Через некоторое время бот яндекса должен перекачать ленту и, если все нормально, в аккаунт на ya.ru добавиться новый источник постов ;).
Как оказалось, настроить какие-либо параметры для импортированных таким образом постов нельзя. В частности нельзя выставить уровень доступа и разрешить/запретить комментирование. Изобретая очередной велосипед можно это побороть. :)
continue reading
Степень кривизны http://beta.ya.ru настолько высока, что вытянуть оттуда что-то в виде RSS нормальными методами невозможно (ну или почти невозможно). Либо это таки продуманный ход Яндекса, направленный на завлечение в свои сервисы максимального количества народа.
continue reading
Поигрался с powertop-ом. Посмотрел, как влияет включение C1E на потребляемую мощность от батареи.
continue reading
Есть тут в BIOS-е такая штука под названием “Advanced powersaving”. Что оно делает, нигде не написано, но от батареи ноут с ней работает чуть дольше. То есть оно таки что-то делает. Для 2.6.25, при загрузке с этой опцией и без нее, различие заключается в следующей строке в dmesg:
AMD C1E detected late. Force timer broadcast.
Так вот, выключение этой самой опции в BIOS-е чинит загрузку ядра 2.6.26. Получается, что с этим самым advanced powersaving ядро не грузится вообще, а без него — работает как положено.
Нагуглилось два треда в LKML по этому поводу:
http://www.mail-archive.com/linux-kernel%40vger.kernel.org/msg240281.html — декабрь 2007
http://thread.gmane.org/gmane.linux.kernel/693198 — июнь 2008.
Первый — какой-то костыль для отключения C1E (очевидно для тех BIOS-ов, в которых этот самый Advanced powersaving неотключаем).
Второй — фиксит что-то в этом районе. Патчи для 2.6.26-rc5. Если к релизу приложатся, посмотрю, поможет или нет.
TODO: померять, на сколько этот C1E экономит батарею (например с помощью powertop).
Некоторые фотки из Бердянска:
(~800 kb)
continue reading
После примерно полугодовалого затишья обновил свои патчи к Bombus. Единственное, что они делают полезного — улучшают поддержку некоторых Motorola EZX телефонов, в частности моего E680i. В основном это назначение аппаратным кнопкам действий.
http://inhex.net/dion/bombus/patches/
Также добавляется автоматическая NICKSERV авторизация в IRC через irc-транспорт, добавляется возможность отключения выделения контактов в ростере жирным шрифтом.
Да, имеется возможность при приходе сообщения моргать подсветкой джойстика. Доступа к этой подсветке из Java нет (во всяком случае я в свое время не нашел). В связи с этим, реализована эта гордость костылестроения фича весьма интересно.
На мобилке запускается некий демон, слушающий определенный UDP-ный порт (у меня — 9000). При приходе сообщения, bombus посылает на UDP-ный localhost:9000 датаграмму. Сишная часть при получении этой датаграммы моргает подсветкой джойстика.
Исходник сишной части (zbombus.c) и прочий мусор, полезный и не очень, по ссылке ниже.
http://inhex.net/dion/bombus/
Теперь устанавливал только в VirtualBox-е.

Нижнюю панельку я специально делаю как можно меньше, чтобы не занимала место по вертикали.
Плазмоиды на панели теперь действительно можно переносить. Но в произвольное место их засунуть все ещё нельзя. На скрине system tray на левой панели висит по центру.. Я бы хотел, чтобы он был внизу, рядом с пейджером.
Konsole все ещё тормозит. Вот тут это всё сваливают на кривой драйвер nvidia. Но в VirtualBox то NVIDIA не используется. Обычный xterm работает заметно быстрей (на несколько порядков). Konsole из KDE3 тоже летает.
IMHO если бы не тормоза konsole, то можно было бы использовать, отключив все эффекты.
А вот скрин моего текущего KDE3:

Собственно вот
9713277607f9eac7d655c6854dd92bc2ce1b6f02 is first bad commit
commit 9713277607f9eac7d655c6854dd92bc2ce1b6f02
Author: Glauber de Oliveira Costa <gcosta @redhat.com>
Date: Wed Mar 19 14:25:43 2008 -0300
x86: boot cpus from cpu_up, instead of prepare_cpus
After all the infrastructure work, we're now prepared
to boot the cpus from cpu_up, and not from prepare_cpus.
So the difference between cold boot and hotplug is effectively
over, and the functions are used to the purposes they're meant to.
Signed-off-by: Glauber Costa <gcosta @redhat.com>
Signed-off-by: Ingo Molnar <mingo @elte.hu>
:040000 040000 c191cf15825af14a8f4e2842105c33e19ad9df1d 3a6e4c6a5489a20722e83c98204f16d29bdc01fd M arch
bisect рулит. Достаточно быстро разгреб 10k коммитов. Спасибо TuxOnIce за то, что не пришлось полностью перезагружать машину после каждой сборки :)
Bisecting: 5243 revisions left to test after this
Не так уж и много….
Попробовал обновиться с git-а Nigel-а, т.к. TuxOnIce патча под 2.6.26 еще нет. Собственно собрал. Ребутнулся. Получил мертвый вис еще до монтирования корня. Ребутнулся еще раз. Аналогично.
Ну думаю, git он и в Африке git. Качаю патч 2.6.25 -> 2.6.26. Собираю…. Аналогично. Нажимаю кнопку Power чтобы перезагрузиться (на ноуте нет reset-а).. Оно «развисает» и продолжает грузиться. Тыцкая Enter и другие клавиши можно таки дозагрузиться до конца. В шелле даже можно относительно нормально работать. Пробую запустить вот такой вот скрипт:
while true; do
echo "`date`: Hello world!"
sleep 5
done
Hello world выводится ровно 1 раз… И дальше опять висит. Начинаю нажимать кнопки… Работает…
Перезагружаюсь и начинаю играться стандартными noapic, noacpi, pci=nommconfig. acpi=off. Помогает только последнее. Правда работать на ноуте с acpi=off как-то не очень кошерно…
Перезагружаюсь обратно в рабочее 2.6.25.6, пробую запустить собранное 2.6.26 в qemu и virtualbox. Работает и там и там.
В итоге повесил багу в ядерной багзилле. Первый раз такое вижу.
Сегодня после очередного фикса получилось нечтно типа DoS в одной из конференций на conference.jabber.ru.
В конфигураторе глюкса стоит галочка “запрашивать версию всех входящих посетителей” и таймаут на ответ в 1 секунду. Если за одну секунду бот не получает ответ на запрос версии, то просто забивает на это и считает что версия скрыта. Если же ответ на запрос версии таки дойдет через время, большее таймаута, то глюкс в ответ отправит стазу
<iq type='error' to='muc-room@conference.jabber.ru/User' id='some_id'>
<query xmlns='jabber:iq:version'/>
</iq>
что в принципе не совсем корректно. Хотя с другой стороны, этот ответ не был обработан, и об этом можно сообщить другой стороне.
Другой бот, Talisman, на cтанзу вида
<iq type='error' to='foo@conference.jabber.ru/Talisman' id='uid74'>
<query xmlns='jabber:iq:version'/>
</iq>
шлет информацию о своей версии. Глюкс не знает, что делать с такой вот информацией и посылает очередной отлуп.. Собственно круг замкнулся и получился iq-флуд. :)
Я кажется его таки запинал. Первое, с чем столкнулся — авторизация на NNTP-сервере. В debian-овском mm_cfg.py про такие переменные, как NNTP_USERNAME, NNTP_PASSWORD вообще ничего нет. Собственно я их узнал из исходника.
Дальше наткнулся на грабли, что если NNTP-серверов, требующих авторизацию, больше одного, то указать login/password для каждого сервера по отдельности нельзя. Нарисовал патч, который позволяет задавать в конфиге логины/пароли per-server. Если логин.пароль для конкретного сервера не указан, используются глобальные значения из NNTP_(USERNAME|PASSWORD).
Т.е. теперь в конфиге можно писать вот так:
NNTP_USERNAME='default-username'
NNTP_PASSWORD='default-password'
NNTP_CRED={}
NNTP_CRED['server1']=('login1', 'password1');
NNTP_CRED['server2']=('login2', 'password2');
Возможность корректной отправки сообщений в newsgroup не проверял, т.к. они у меня обычно read-only. Хотя должно работать.
Также оказалось, что для newsgroup с multipart-сообщениями mailman выставляет Content-type: text/plain и, соответственно, получается мусор. Тоже пропатчил. Скорее всего это можно было сделать ровнее, но python я не знаю совсем :).
continue reading
Понадобилось с dokuwiki рассылать уведомления о изменении страниц на более чем 1 адресс. Чтобы не переделывать потом, сразу решил поднять какой-нибудь Mailing list manager. В итоге остановился на mailman.
Весьма неожиданным для меня оказалось то, что nginx не умеет CGI. В итоге поднял рядом thttpd для CGI-only.
Также обнаружил, что mailman умеет быть гейтвеем между mailing list-ами и usenet news-группами. Хотя это у меня еще нормально не завелось.
Есть у меня такой вот девайс. Прошито там OpenWRT. Крутится это все на ядре 2.4.
Возникла необходимость при подключении USB-модема автоматом поднимать pppd на нем. И соответственно опускать при выключении. По непонятной причине местный hotplug генерирует по 4-5 одинаковых событий как на включение так и на выключения. После беглого просмотра /bin обнаружил там некий /bin/lock — симлинк на busybox, который и был использован для блокировки:
#!/bin/sh
if [ "$PRODUCT" = "16d8/5533/0" ]; then
touch /tmp/pppd.lock
lock /tmp/pppd.lock
PPPD=`pidof pppd`
if [ "$ACTION" = "add" ]; then
if [ -z "$PPPD" ]; then
/sbin/start-stop-daemon -p /var/run/pppd.pid -m -b -S -x \
/usr/sbin/pppd -- call default
sleep 1
fi
fi
if [ "$ACTION" = "remove" ]; then
if [ -n "$PPPD" ]; then
kill $PPPD
fi
fi
lock -u /tmp/pppd.lock
fi
Второй раз попытался поставить KDE4. В прошлый раз это был релиз 4.0, теперь какая-то alpha или beta с номером 4.0.84. На этот раз панелька таки меняет свой размер, и даже двигается по углам экрана.
Первое, что бросилось в глаза — невозможность двигать виджеты по панели. Они автоматом выравниваются по левому (или верхнему для вертикальной панели) углу. При чем Task Manager пытается занять все свободное место. Вообще это интересная идея, только не хватает еще виджета типа Spacer (пружинка), с поведением как в Qt Designer.
В трее неправильно рисуется backround для иконок. Но это все фигня.. Наиболее сильно напрягают тормоза konsole. Тормоза очень заметны при перерисовке. Ощущение, как будто работаешь по ssh. Плюс хоткеи типа Alt+S, Alt+F открывают соответствующие пункты в меню, а не передаются в терминал, что тоже не есть хорошо..
Короче говоря снес нафиг.. Хотя плазма упала всего 1 раз и то при логауте.
После того, как уперлись в ограничение на количество конференций, где можно сидеть одновременно, составил нечто типа рейтинга конференций, который определяет, сколько разных JID-ов побывало в конференции с 01.07.2008.
Для текущей структуры базы, такую информацию можно вытащить запросом:
select conferences.name, (select count(distinct jid)
from conference_nicks
where conference_nicks.conference_id=conferences.id and lastaction > '2008-07-01') as cnt
from conferences where autojoin=true and online=true and autoleave=true order by cnt;
Вот что вышло (больше — конференция популярнее)
continue reading
mysql> select count(*) from conferences where online=1 and name like "%@conference.jabber.ru";
+----------+
| count(*) |
+----------+
| 51 |
+----------+
1 row in set (0.09 sec)
Все. Напоролся на ограничение в количество заджойненых конференций для одного JID-а на conference.jabber.ru.
Послушал remastered версию этого альбома (2007 года разлива). От оригинальной 2005 отличается достаточно сильно. Звучит заметно лучше. Как-то более живо…
PS. Оба альбома слушал в lossless
Разобрался, как отфорвардить Single Sign-on авторизацию с iName на свой OpenID-ный сервис. Для этого нужно чуть изменить Service End Point (SEP), отвечающий за авторизацию. Вот оригинальный вариант:
http://openid.net/signon/1.0
https://2idi.com/openid/
http://2idi.com/openid/
Сюда можно дописать свой сервер. Меньшее значение атрибута priority означает более высокий приоритет. Т.е. будет выбран сервер с минимальным значением атрибута priority. Вот, что у меня вышло:
http://openid.net/signon/1.0
http://dion.inhex.net/?openidserver=1
https://2idi.com/openid/
http://2idi.com/openid/
Теперь на сервисах, поддерживающих OpenID 2.0 или iNames, можно указывать просто “=dion” в качестве логина.
Попытался разобраться в, так называемых, iNames, которые официально поддерживаются OpenID 2.0. Честно говоря звучит как очередная централизованная авторизация типа Passport.NET. На всякий случай зарегил себе =dion
Мой iNumber: =!6E0F.5E21.558C.7926
Съездили в Днепропетровск. Выехали в 7:30 из Запорожья, где-то за час сорок доехали.
Сначала позавтракали в пузатой хате, потом пошли гулять по городу.. В киоске прессы купили местную газету, которую буквально через пол часа потеряли непонятно где. Залезли в два фонтана, проехались на весьма интересном трамвайчике без дверей, без стекл в окнах. Вагон разделен на части какими-то перегородками. Кондуктора — экстремалка, прыгает из одной части вагона в другую на ходу. Местные жители говорят, что такие трамвайчики каждые пол часа ходят. Пообедали в пиццерии Челентано, купили билеты и на маршрутке обратно.. Домой добрался к 17:30.
Дождя в принципе не было.. Чуть покапало и все.
Завтра на 7:15 маршрутка в Днепропетровск. Поболтаемся и обратно…
Вечером обещают дождь. Должны успеть.
Jabber-ный MUC совсем не приспособлен для боевых действий работы в рунете.
Первый попавшийся человек может нарегистрировать кучу JID-ов, заходить и спамить.. Что сейчас и наблюдается. Флудобот вообще пишется за час.
Как минимум нехватает бана по IP. Или режима модерирования всех сообщений (это вполне можно было бы поручить боту). Бан по IP фиг реализуешь, т.к. его знает только сервер юзера. Либо какого-то способа получить уникальный id-к _клиента_. Хотя такое тоже можно было бы обойти буквально однострочным патчем.
Режим Members only тоже не спасает, т.к. новый участники зайти не могут. Требование наличия VCard — вообще фигня полная.. Просто чуть затрудняет процесс регистрации новых аккаунтов. Можно пытаться анализировать скорость канала, типа время пингов или еще что-то.. Но это все кажется малореальным.
Децентрализация имеет свои негативные стороны…
Есть кстати вариант сделать что-то типа muc_proxy. Чтобы “обернуть” conference.jabber.tld во что-то и получить другой сервер (aka proxy.domain2.tld), который должен будет выполнять все необходимые премодераторские проверки станзы и, в случае корректности содежимого, перенаправлять её на оригинальный conference.jabber.tld. Обертка не должна получиться слишком сложной, т.к. там по сути нужно только атрибуты “from” и “to” у станз менять… Надо будет подумать по этому поводу…
Торжественно вручили диплом
continue reading
Посмотрел я на этот новый релиз. Очень качественно починили Indexer. Он теперь даже нормально кушает Qt-ную кучу #define. На ходу подсвечивает места, которые indexer не может распарсить.
В inline методе класса индексер не видит приватные члены класса:
class Foo {
public:
void test() { bar_->[тут]; }
private:
Bar* bar_;
}
В #213561 описано как дебажить проблемы индексера.
Переехал. Все что было, импортировал кое как. OpenID работает в обе стороны. Переезжаю
http://dion.inhex.net/
ЖЖ-аккаунт бахну по таймауту