воскресенье, 25 марта 2007 г.
mmc
Сделал патч для MMC (консольный клиент для mud игр). С этим патчем mmc поддерживает 256 цветов в xterm/rxvt/putty, кривые терминалы (это когда "terminal cannot insert/delete characters") и символы с кейпада. Скриншот.
вторник, 13 марта 2007 г.
OSD Desktop
Еще один пост, который давно откладываю (уже годы). Вобщем, я записал ролик о том, как мой десктоп выглядит (640x480 10fps 2mb или 1024x768 10fps 6mb). Идея сделать его OSD'ным витала в воздухе задолго до того, как я написал первые строки кода. В результате эволюции десктопа, я привык работать в полноэкранном режиме. Часики, измерители и прочие пищали быстро сгинули с моего рабочего стола. И несмотря на то, что я оказался в мире без уведомлений, я был счастлив. И тогда OSD пришло ко мне как решение удержать программы в полноэкранном режиме и в то же время быть в курсе событий. Используя python и библиотеку OSD для него, я написал демона событий. Демон читает строки из файла ~/log/events и парсит их согласно шаблонам:
string - добавляет строку в список отображаемых строк.
[][][]\d\d\d\d: string - тоже самое, что и в предыдущем случае, но отображает строку заданное количество мс.
\d\d\:\d\d:\d\d: string - тоже, что и первый случай, но с датой. Дата не отображается на экране.
\d\d\:\d\d:\d\d: [][][]\d\d\d\d: string - тоже, что и второй случай, но с комментарием из третьего случая.
После этого пришло время реализовать программы, которые писали бы в файл ~/log/events. Первой такой программой стала aktimelog, которая пишет события о текущем времени каждые 25 минут. Еще сделал: плагин для irssi, чтобы видеть публичные сообщения, приватные или и то и то, мониторить переключение раскладки клавиатуры, переключение рабочих столов, уведомления о почте, уведомления шела. Так же стоит сказать, что переключение рабочих столов происходит по шоткатам. Например, если вы нажимаете MOD-E, то в дополнение к переключению, ion3 проверяет а запущен ли emacs, и если не запущен и вы подтвердите запуск, то запускает его. Я обычно знаю, куда хочу переключиться, поэтому не трачу время на бег по списку программ или тыкание на тулбар (как это делают виндузятники и прочие линуксойды). Итого, MOD-e для emacs, MOD-p -- revelation, MOD-c -- eclipse, MOD-b -- browser, MOD-1 -- первый терминал, MOD-2 -- второй терминал... и тд. Вот так устроен мой десктоп. А ваш как? :)
Исходники.
После этого пришло время реализовать программы, которые писали бы в файл ~/log/events. Первой такой программой стала aktimelog, которая пишет события о текущем времени каждые 25 минут. Еще сделал: плагин для irssi, чтобы видеть публичные сообщения, приватные или и то и то, мониторить переключение раскладки клавиатуры, переключение рабочих столов, уведомления о почте, уведомления шела.
Исходники.
пятница, 9 марта 2007 г.
LPTRA
Для EE фанатиков, я реализовал адаптер ресурсов (JCA 1.5 через CCI), это правильный способ работы с параллельным портом из J2ee приложения. Чтобы использовать адаптер, нужно установить UParPort. Затем продеплоить этот RAR (resource adapter archive) в сервер приложений. Когда это будет сделано, создайте датасоурс для LPTRA. При создании надо будет указать имена пинов, типа такого: 1PinName=eye1, 2PinName=eye2 и т.д.. Вот и все. В дополнение можно сказать исходники LPTRA.
Пример:
Пример:
@Resource (name = "eis/ParPort")
private ConnectionFactory connFactory;
Connection conn = null;
try {
conn = connFactory.getConnection();
Interaction interaction = conn.createInteraction ();
MappedRecord r =
connFactory.getRecordFactory ().createMappedRecord ("");
r.put ("eye1", true); // turn eye1 pin into the on state
r.put ("eye2", false); // turn eye2 off
interaction.execute (null, r);
} catch (ResourceException e) {
e.printStackTrace (); // Not sexy
} finally {
if (conn != null) {
try {
conn.close();
} catch (ResourceException e) {
e.printStackTrace (); // Not sexy
}
}
}
UParPort
Давно я планировал выложить эту программку. UParPort - библиотека для работы с параллельным портом (портом принтера) из Java программ. Но в отличии от parport, эта библиотека не требует привилегий root'а. Есть главный класс UParPort в пакете package ru.toril.uparport. В качестве аргумента он получает имя устройства. Имя устройства выглядит типа "/dev/par0" или "lpt1". После создания экземпляра класса можно использовать следующие методы: getData, getStatus setData, close. isClosed, toString. Итак, бинарники и исходники UParPort..
понедельник, 5 марта 2007 г.
WM5DevSpy
Выкладываю утилиту для мониторинга обращений к устройствам WM5. Если вы не программист-хакер, то вам программа не нужна. А нужна она вам, если вы хотите видеть с какими аргументами и когда вызываются функции того или иного драйвера. Перед использованием программу нужно скомпилировать. Имя устройсва без труда найдете в файле WM5DevSpy.c - если оно вам и правда нужно. Делать нормальный гуи лень. Как бонус данное приложение показывает какие программы обслуживают какие прерывания и какими нитями.
Пример лога:
Пример лога:
2007.02.22 00:15:32: Starting ------------------------------------------------------
2007.02.22 00:15:33: interrupt 5 (abs 13): event struct at 8ffb2818, thread struct at 8efb4024, owner proc at 8c5976d0, proc name=NK.EXE, thread start addr=8c215240
2007.02.22 00:15:33: interrupt 8 (abs 16): event struct at 8f7a5xf0, thread struct at 8e7a2a64, owner proc at 8c597ad0, proc name=gwes.exe, thread start addr=015c39b4
2007.02.22 00:15:33: interrupt 9 (abs 17): event struct at 8f796yc4, thread struct at 8e785400, owner proc at 8c597ad0, proc name=gwes.exe, thread start addr=01e944e4
[...]
2007.02.22 00:15:34: fsDev_t at: 06048c50
2007.02.22 00:15:34: LegalName: BAT1:
2007.02.22 00:15:34: DeviceName: BAT1
2007.02.22 00:15:34: BusName: BuiltInPhase1_0_26_0
2007.02.22 00:15:34: DeviceKey: Drivers\BuiltIn\Battery
2007.02.22 00:15:34: control (openData=0x00000001, code=0x00290400, inBuf=0x0806fa8c, inSize=0x00000004, outBuf=0x0806fa60, outSize=0x00000014, outUsed=0x0806fa20) -> 0x00000001
2007.02.22 00:15:34: [ *outUsed : 0x00000018 ]
2007.02.22 00:15:34: IN:
2007.02.22 00:15:34: 01 00 00 00
2007.02.22 00:15:34: OUT:
2007.02.22 00:15:34: 00 08 5a 00 ff ff ff ff
2007.02.22 00:15:34: ff ff ff ff 00 ff 00 00
2007.02.22 00:15:34: ff ff ff ff ff ff ff ff
2007.02.22 00:15:37: Calls to open function: 0
2007.02.22 00:15:37: Calls to close function: 0
2007.02.22 00:15:38: Calls to control function: 1
2007.02.22 00:15:38: Calls to read function: 0
2007.02.22 00:15:38: Calls to write function: 0
2007.02.22 00:15:38: Calls to seek function: 0
2007.02.22 00:15:38: Calls to powerup function: 0
2007.02.22 00:15:38: Calls to powerdn function: 0
2007.02.22 00:15:38: ----------------------- stop -------------------------
воскресенье, 4 марта 2007 г.
LooxLight 2007-03-04
Подробнее о Looxlight (утилита для Fujitsu-Siemens Loox N560/C550) смотрите здесь.
Сделал новую версию LooxLight. Изменения:
Полная поддержка GPS светодиода.
Поддержка bluetooth стека от Broadcom.
Полная поддержка индиктора питания.
Лучше реализована поддержка индикатора клавиатуры (теперь переживает изменение яркости).
LooxLight теперь не EXE, а DLL. Это лучше тем, что в wince есть ограничение в 32 процесса.
В два раза меньшее потребление памяти, чем раньше
CAB архив в ZIP'е: тут.
Исходные коды (GPL): тут.
Будущие версии программы можно будет найти здесь.
Другая программа для уменьшения расхода заряда батареи описана здесь.
Сделал новую версию LooxLight. Изменения:
CAB архив в ZIP'е: тут.
Исходные коды (GPL): тут.
Будущие версии программы можно будет найти здесь.
Другая программа для уменьшения расхода заряда батареи описана здесь.
Подписаться на:
Сообщения (Atom)