четверг, 22 апреля 2010 г.

Бобик ожил

Из сервиса сообщили, что читалка успешно работает и ее можно забирать. Внезапная разрядка батареи осталась для меня загадкой. Но то, что читалка не заряжалась, объяснили незакрытой защелкой на зарядке. Очень может быть, последние дни я довольно рассеян. Или дочь помогла, или нес в сервис и задел... . В общем сейчас уже неважно, время покажет.

среда, 21 апреля 2010 г.

Бобик сдох

Приказала долго жить электронная читалка книг. Жаль, но некоторое время перетерплю.
Решается это достаточно просто, прибор пока на гарантии (еще бы гарантийник найти). Главное, что есть сервисный центр в родном городе: хвалю себя за прозорливость в составлении требований при выборе электронных устройств.

воскресенье, 18 апреля 2010 г.

Баг запуска сервиса

Баг в mongodb на freebsd.
При старте сервиса mongod руками (из консоли) он сразу падает.
Лечится сменой локали на C:
env LANG=C sudo /usr/local/etc/rc.d/mongo start

пятница, 16 апреля 2010 г.

Старые английские эпиграммы всегда актуальны

Перевод С.Я.Маршака

- Расскажите-ка мне, что вы видите, дети?
- Дурака, что попался религии в сети.

Увидя "Таймс", черт взял газету
И рёк, багровый от стыда:
"О да, я лжи отец, но эту
Не порождал я никогда".

Не всякий лебедь должен петь,
Почуяв близость смерти,
Иному лучше помереть
До первых нот в концерте.

Эпитафия
Спит ростовщик в могиле этой.
Прохожий, не звени монетой.

вторник, 6 апреля 2010 г.

Заверните костыли

Какой же грязный хак обходится без костылей? Правильно -- никакой. Без них эти создания шевелятся из чистой случайности. И хак для mutt из предыдущего поста не исключение.

1. Обнаружилась неприятность с переопределением редактора. Вызов встроенного примитивного редактора (который должен быстро отдать назад управление) мешает вставке подписей к письму (из переменной $signature). Если назначить редактором любую стороннюю софтину, то она получит письмо со вставленной подписью. Встроенному -- кукиш.
Выход -- выставлять abort_unmodified=no и назначать редактором тупую внешнюю обертку, которая ничего не делает с полученным именем файла.

2. Если переменная $sendmail выставляется динамически, в зависимости от отправителя, прийдется поменять send-hook на send2-hook. Ведь запущенный "дочерний" mutt-процесс понятия не имеет о runtime своего родителя. Пилить это прийдется каждому под себя.

3. Грязные хаки в многозадачной среде сбоят, так задумано. Идея отложить письмо и запустить новый процесс, который подхватит отложенное, вполне логична, но есть нюанс. Новый процесс может запуститься раньше, чем письмо будет отложено. Причем mutt хитро откладывает письма, видимо сначала очищая postponed, а потом заново его заполняя. Иначе я не могу объяснить ситуацию, когда у меня валяется пяток отложенных писем, а запущенный "mutt -p" говорит что писем для отправки не найдено.
Тупая задержка запуска дочернего процесса в качестве синхронизации неудобна и ненадежна.

Итог. С хаками жить можно, но трудно. Пока что mutt остается одноконным приложением и его возможности для сложных взаимодействий мало подходят, с чем прийдется смириться.

четверг, 1 апреля 2010 г.

Грязный хак для Mutt

UPD: Глючное и не всегда работающее.
К почтовому клиенту mutt я привык, и менять на другой не горю желанием. Однако среди его некоторых недостатоков есть один существенный (для меня) -- отсылка письма у него блокирующая: не позволяет одновременно отвечать на письмо и в это же время читать остальные письма (а иногда нужно). Открывать "руками" отдельное окно, запускать mutt с нужным почтовым ящиком довольно утомительно, а зря держать запущенную копию программы в соседнем окошке терминала не удобно.
Но mutt позволяет сконструировать нужное решение самому, чем я и воспользовался: добавил альтернативные биндинги для reply и list-reply, которые сами открывают новое окно терминала с mutt, в котором немедленно запускается редактирование ответа на нужное письмо. Старое окно mutt не блокируется -- можно спокойно пользоваться для работы с остальными сообщениями.

Т.е. нужно заставить mutt отложить текущее сообщение в postponed, а новой запущенной программе приказать использовать последнее отложенное сообщение. Быстрый и грязный хак, но мне пока достаточно.

.muttrc
set my_editor="vim -c 'set et sts=4 tw=70 co=80 fo=cql autoindent nobackup'"
set editor=$my_editor
...
# Custom non-blocking Reply
macro index R ":unset editor\rr\n\n.\nP:set editor=\"$my_editor\"\n!process-last-postponed\n"
macro pager R ":unset editor\rr\n\n.\nP:set editor=\"$my_editor\"\n!process-last-postponed\n"
# Custom non-blocking List-Reply
macro index L ":unset editor\rL\n\n.\nP:set editor=\"$my_editor\"\n!process-last-postponed\n"
macro pager L ":unset editor\rL\n\n.\nP:set editor=\"$my_editor\"\n!process-last-postponed\n"
$HOME/bin/process-last-postponed
xterm -e mutt -e "push '<recall-message><last-entry><enter>'" &
Все.