Интересно, а какие ещё современные инсталлеры ОС умеют выполнять параллельно интерактивные (выбор раскладки клавиатуры и ввод имени пользователя) и неинтерактивные (копирование файлов) задачи, как это умеет Ubuntu 10.10? Про игры в инсталлере, как в старом (?) ASP Linux молчу, их, кажется, так никто и не повторил.
2010
Спустя всего 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.
В Fortunator я решил попробовать HTML5. Я о нём мало что знал и боялся, что результат не будет работать на многих браузерах, но решил изучить вопрос. Как оказалось, поддержка HTML5 вполне повсеместна (по крайней мере, незнакомые фичи ничего не ломают) и уже есть рекомендации использовать некоторые конструкции HTML5 (начиная с доктайпа) всегда, что уже даже делает Google. Я же решил использовать по максимуму всё, что можно, учитывая минималистичность разметки и функциональности сайта и отсутствие нужды поддерживать какие-либо браузеры (впрочем, в Chromium, FF и Opera я всё равно не увидел проблем).
Что было использовано:
- Упрощённые доктайп и объявление кодировки.
- Семантическая разметка: каждая цитата — отдельный
<article>и т.д. - Дата публикации цитаты помещена в
<time pubdate>. - У элементов форм использованы новые атрибуты
requiredиautofocus, а у поля поиска —type="search".
Из замеченных выгод, впрочем, только атрибуты полей: autofocus работает понятно как, required не даёт отправить форму, если поле не заполнено (в Opera оно при этом страшно мигает красным, плюс выводится сообщение, что надо ввести значение), а у поиска в Chromium появилась прозрачная кнопка очистки содержимого.
Комментарий неплохо показывает отношение к пожелалкам, причём для Linux-версии (специфичные фичи либо фичи, которые есть только в вендоверсии) всё ещё плачевнее из-за недостатка девелоперов.
Наконец-то написан и открыт цитатник ALT Linux, пока что только с цитатами с IRC-канала (aka пакет fortunes-ALT-irc) и без голосования, зато с поиском и экспортом.
Самым сложным и интересным был импорт старых цитат. Хотелось хоть как-то близко к реальности выставить время добавления, тем более что некоторая информация об этом есть: для последних нескольких лет — дата коммита пачки из нескольких цитат в git (погрешность — пожалуй, в большинстве случаев меньше недели), для более ранних — дата сборки очередной версии пакета, видимая тоже как дата коммита, но с гораздо большей погрешностью (не берусь оценить навскидку, скорее всего не меньше полугода для самых ранних цитат каждого коммита). Задача осложена тем, что поверх уже закоммиченных цитат могли коммититься изменения форматирования и т.д., поэтому в лучшем случае blame для разных строк одной цитаты может показать разные даты, в худшем — одну неправильную. К счастью, у blame есть ключ -w, отключающий сравнение пробельных символов, а в случае разных дат можно брать самую раннюю. Дальше была проблема разбора данных blame из кода. Обёртка из GitPython то ли не работает вообще, то ли что, но нужного я от неё добиться не смог. Я несколько раз метался между использованием/исправлением/изменением этой обёртки и ручным разбором машинночитаемого вывода blame, но в итоге всё-таки вернулся к первоначальной идее парсинга обычного вывода blame в лоб регексами (да, это ужасно, и всё было бы вообще замечательно и даже без регексов, если бы не столбец с именем автора, содержащий неэскейпнутую произвольную строку с пробелами, отключаемый только вместе со столбцом даты). Получившиеся даты, конечно, неточны, но лучше вряд ли получится.
Ask Google to recognise Towel Day
Ну и не забудьте сегодня своё полотенце :)