2010

Интересно, а какие ещё современные инсталлеры ОС умеют выполнять параллельно интерактивные (выбор раскладки клавиатуры и ввод имени пользователя) и неинтерактивные (копирование файлов) задачи, как это умеет Ubuntu 10.10? Про игры в инсталлере, как в старом (?) ASP Linux молчу, их, кажется, так никто и не повторил.

Спустя всего 2 с небольшим недели после отправки пришли заказанные на eBay книжки геймановского комикса The Sandman: Brief Lives (#7), The Wake (#10) и The Song of Orpheus (Sandman Special). Качество отличное, сборники в твёрдой обложке и суперобложке. У The Song of Orpheus по идее должна светиться обложка, но это почему-то не происходит (хотя если материал подзаряжается от солнечного света, то понятно почему). В каком году реально напечатано, выяснить не удалось, но выглядят идеально.

UPD: да, теперь обложка светится.


Внутри ещё фотки, всё кликабельно.
Continue reading ‘The Sandman’ »

Интересный факт: если на хосте с 2 ядрами + HT выдать виртмашине с WinXP 3 виртуальных процессора, виртмашина начинает жрать около 40-50% хостовой процессорной мощности (жаль, не посмотрел, как это распределяется по хостовым ядрам), в гостевой системе это выглядит как непонятная загрузка, раскиданная по ≈6 процессам с максимумом на csrss. При этом работать довольно сложно, всё тормозит как-то неадекватно показываемым цифрам загрузки. Если же выдать виртмашине 1 процессор, никакой лишней загрузки нет, как и ощутимых тормозов.

Впрочем, это всё может быть регрессией 3.2.10.

По итогам месяца использования могу заявить: видяхи, интегрированные в процессор, не только существуют, но даже позволяют вполне комфортно жить и играть в современные игры.

Обнаружил, что при майской миграции bash.altlinux.org с SQLite на MySQL побились кавычки и некоторые другие спецсимволы. Дело в том, что тогда я не придумал ничего лучше, чем снять дамп БД и каким-то кривым скриптом с StackOverflow сконвертить его в дамп для MySQL.

Некоторое время я медитировал над скриптом и обоими вариантами дампа, в итоге придумал способо лучше. Поскольку старая SQLite-база локально осталась, я переключил локальную копию сайта обратно на SQLite и слил нужные данные через интерфейс ORM прямо из ipython. После чего через pickle перенёс их на рабочий сайт и аналогично через ipython обновил записи правильными данными. Похоже, что при наличии готовой универсальной обёртки к разным СУБД (в данном случае SQLAlchemy, но это наверно необязательно должна быть ORM) именно её и надо использовать для конвертации.

Некоторое время назад я стал получать почту со своего сервера не по POP3, а по IMAP. С клиентской стороны ничего не изменилось: письма по прежнему передавались поштучно procmail и раскладывались по ящикам. На сервере лежали только те письма, которые ещё не были переданы на десктоп, и потому при недоступности основной системы можно было легко увидеть всю неполученную почту (но без всякой сортировки, в одном ящике). Не устраивало в 1-ю очередь отсутствие сортировки по ящикам прямо на сервере и вытекающая отсюда бессмысленность сохранения почты на сервере. При этом IMAP позволяет иметь на сервере несколько ящиков и видеть их в клиенте, но нормальных способов получить локальную копию всех писем с такой же структурой папок, похоже, нет. Обычные решения заключаются в обычном скачивании писем локально с сохранением структуры и указании в почтовом клиенте этих локальных папок. Из нужного софта я слышал только про OfflineIMAP, но он уже помер, потому я решил попробовать mswatch+mbsync.

Continue reading ‘Offline IMAP на mswatch+mbsync’ »

В Fortunator я решил попробовать HTML5. Я о нём мало что знал и боялся, что результат не будет работать на многих браузерах, но решил изучить вопрос. Как оказалось, поддержка HTML5 вполне повсеместна (по крайней мере, незнакомые фичи ничего не ломают) и уже есть рекомендации использовать некоторые конструкции HTML5 (начиная с доктайпа) всегда, что уже даже делает Google. Я же решил использовать по максимуму всё, что можно, учитывая минималистичность разметки и функциональности сайта и отсутствие нужды поддерживать какие-либо браузеры (впрочем, в Chromium, FF и Opera я всё равно не увидел проблем).

Что было использовано:

Из замеченных выгод, впрочем, только атрибуты полей: autofocus работает понятно как, required не даёт отправить форму, если поле не заполнено (в Opera оно при этом страшно мигает красным, плюс выводится сообщение, что надо ввести значение), а у поиска в Chromium появилась прозрачная кнопка очистки содержимого.

This is going into Mstone-X until we have a UI design that satisfies our other Chrome constraints (not prompting, etc), and it’s not something that is currently on our list. We do understand it’s a commonly requested feature however so it is possible we’ll consider it in the next 6-12 months.

Комментарий неплохо показывает отношение к пожелалкам, причём для Linux-версии (специфичные фичи либо фичи, которые есть только в вендоверсии) всё ещё плачевнее из-за недостатка девелоперов.

Наконец-то написан и открыт цитатник ALT Linux, пока что только с цитатами с IRC-канала (aka пакет fortunes-ALT-irc) и без голосования, зато с поиском и экспортом.

Самым сложным и интересным был импорт старых цитат. Хотелось хоть как-то близко к реальности выставить время добавления, тем более что некоторая информация об этом есть: для последних нескольких лет — дата коммита пачки из нескольких цитат в git (погрешность — пожалуй, в большинстве случаев меньше недели), для более ранних — дата сборки очередной версии пакета, видимая тоже как дата коммита, но с гораздо большей погрешностью (не берусь оценить навскидку, скорее всего не меньше полугода для самых ранних цитат каждого коммита). Задача осложена тем, что поверх уже закоммиченных цитат могли коммититься изменения форматирования и т.д., поэтому в лучшем случае blame для разных строк одной цитаты может показать разные даты, в худшем — одну неправильную. К счастью, у blame есть ключ -w, отключающий сравнение пробельных символов, а в случае разных дат можно брать самую раннюю. Дальше была проблема разбора данных blame из кода. Обёртка из GitPython то ли не работает вообще, то ли что, но нужного я от неё добиться не смог. Я несколько раз метался между использованием/исправлением/изменением этой обёртки и ручным разбором машинночитаемого вывода blame, но в итоге всё-таки вернулся к первоначальной идее парсинга обычного вывода blame в лоб регексами (да, это ужасно, и всё было бы вообще замечательно и даже без регексов, если бы не столбец с именем автора, содержащий неэскейпнутую произвольную строку с пробелами, отключаемый только вместе со столбцом даты). Получившиеся даты, конечно, неточны, но лучше вряд ли получится.

Ask Google to recognise Towel Day

Ну и не забудьте сегодня своё полотенце :)