Блог:Виталий Филиппов
Технические вопросы и вменяемые заметки от меня, Виталика.
У меня, конечно, уже есть блог simply_a_man.
2010-03-08 SlideIT
Даааа, вот игрушка этот андроид… Нет предела кастомизации. Просто праздник какой-то.)))
Поставил SlideIT keyboard: типа, набор в одно касание. Просто приблизительно двигаешь пальцем по нужным буквам, а она по Т9 выбирает слово.
Весьма прикольно)) набирать текст на человеческом языке можно с офигической скоростью. Простые слова ловятся на ура… Всякие «интоксикации» чуть похуже, но тоже набираются. Обычный режим она тоже поддерживает. И кстати имеет символьную клавиатуру с большим числом всякой фигни, включая даже символы стрелок вверх-вниз-влево-вправо. Попробую поиспользовать))
И ядро с поддержкой мультитача тоже уже поставил… И эмулятор Денди тоже ^_^
2010-02-28 Копирование из PDF в иероглифы
Наверняка все сталкивались с PDF-ками, которые отображаются совершенно корректно, но при этом никуда не копируются — при копировании получаются некие Юникодные иероглифы.
Так вот, тайна их раскрыта и довольно проста. Кривые приложения, создающие такие PDF’ки, берут однобайтовый CP1251, дополняют его нулевым байтом до двух байт, решают, что это UTF-16BE (Big Endian, младший байт по старшему адресу), и сохраняют текст в таком виде в PDF’ку, дополняя шрифтами, которые включаются рядом же. При этом в шрифты, которые включаются рядом же, по полученным «кривоюникодным» кодам CP1251-символов записываются правильные русские буковки, и поэтому при просмотре всё отображается нормально. Одновременно при копировании текста ни одно приложение понять, что же эта за кодировка такая любопытная, не может.
Помочь в понимании под UNIX’ом можно следующей командой:
LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 pdftotext INPUT.pdf - | iconv -f utf-8 -t utf-16be | tr -d '\0' | iconv -c -f cp1251
А под виндой — любым продвинутым текстовым редактором, умеющим сохранить файл в UTF-16BE, потом открыть его как бинарный и удалить все символы \0 (с нулевым кодом), а потом снова открыть его как CP1251.
2010-01-31 Проектор!
Купил себе DLP-проектор Optoma DX319p и проекционный экран (180 см). Оочень прикольно было с этим переться пешком, а потом в метро =) приделали скотчевую ручку, хорошо приделали, я следил — равновесие было соблюдено, в землю экран не втыкался =)
Демонстрацию хорошо провёл! У нас на кухне стоит старый чёрно-белый телевизор «Юность 406-Д». По телевизору шёл «Перевозчик»… Папа его смотрел… Тут, накатавшись на коньках, домой пришёл я, и думаю — хе-хе! Перевозчик, говоришь. Чёрно-белая юность, говоришь… И включил того же «Перевозчика» на проекторе =)) учитывая, что папа и в кино-то последний раз был лет где-то 10 назад, был полный восторг =)) «а как дысал, дысал» — когда я высказал идею покупки проектора, первой реакцией было, скажем так, неодобрение…
Если кто-то не знает, дешёвые проекторы бывают LCD и DLP. Первые — это обычная ЖК-матрица, работающая на просвет лампой. А вторые — это матрица микрозеркал, отражающая свет от лампы. Однако матрица у дешёвых DLP одна, и поэтому, чтобы изображение было цветное, попеременно показывается то красная, то зелёная, то синяя его часть. Отсюда цветное мерцание, эпилепсия и самоубийства. Но зато цвета ярче и насыщеннее, и показатели контраста тоже. В общем, я выбрал цвета.
Итак, DLP. Цвета таки действительно классные, а чёрный цвет — действительно чёрный. Тень от руки на экране в тёмной комнате разве что чуть-чуть темнее, чем отображаемый чёрный цвет. Радуга видна отчётливо! Но «по мозгам», вроде, не бьёт.
Сейчас пробую пошизить и поработать «на проекторе». При этом на экране ноутбука одновременно запущен фильм)))
Между прочим, сильно обиделся на KDE4 — Plasma, оказывается, не поддерживает несколько мониторов на одном X-экране (то есть, через xrandr).
2010-01-15 InnoDB не разваливается, разваливается память!
Однако, история с InnoDB исчерпана.
Сначала было подозрение на OPTIMIZE. Попробовал — не воспроизвелось.
Часик повосстанавливал, танцами с бубном вокруг разных значений опции innodb_force_recovery. В какой-то момент непонятным образом удалось снять mysqldump предположительно повреждённой базы и потом залить его обратно, после чего MySQL запустился более-менее без ошибок, по крайней мере, без segmentation fault’ов. Тут мне бы, конечно, снять полный дамп всех баз, увидеть ошибки, если они есть, либо получить копию данных, если их нет, но нет! Появилась новая идея.
Потом было подозрение на checkarray софтового RAID’а, запускающийся каждую неделю из крона. Попробовал. Воспроизвелось. Да так воспроизвелось, что при восстановлении данных таки похерилось, правда, лишь чуть-чуть и ненужных (немножко старых ревизий статьи, у которой их всего > 200, велика потеря). Ну, думаю, вот ты гадина, а! Ну, думаю, снова меня XFS, пусть даже в связке с mdadm’ом и InnoDB, обидел! Ну, думаю, ах я его! И сделал его ах — /var/ перенёс на ext3 — не ext4, потому что ядро ещё было 2.6.26, а в нём, дебиановском, ext4 нема, и InnoDB на «сырой раздел» (Raw Device) повесил, просто на RAID’овый, то есть без XFS’а в качестве слоя промежуточного. Провёл checkarray одновременно с обновлениями базы — уцелела. Лёг спать.
А за ночь база успела рассыпаться снова и уже без посторонней помощи mdadm’а. А я, зайдя на сервер, совершенно случайно стал архивировать 2-гиговый лог bzipом2. Архивировал он, архивировал, а потом и сказал — не хочу больше, устал. Может, у меня самого баг, но я в это не верю и надеюсь, что не будет никогда этого (заявление прекрасное), может, это компилятор скомпилил не туда и не то… А может, это у тебя с памятью что-то? Ну а частично записанный файл я, конечно, удалю, нафига тебе мусор всякий собирать.
Я и подумал — а может, у меня и правда с памятью что-то? Оказалось, действительно, даже memtester — не путать с memtest86/memtest86+, запускающимся вне операционной системы какой бы то ни было — на одном тесте и некоторых проходах обнаруживал ошибки. Правда только на одном тесте и не на всех проходах, но мы-то знаем, что их быть не должно вообще. Вот так и решилась проблема с разваливающимся InnoDB — заменой памяти. Для сервера её объём, кстати, был уже почти неприличен (2 гб). Теперь 4 гб. Тоже немного, но сервер-то изначально за «корок сопеек» самосборный, да и то халявит-простаивает, так что нефикЪ.
Кстати, памятью были две 1 гб планки Kingston’а 533 МГц’овых, полный мемтест я по ним ещё не гонял, но судя по тому, что с заменой всё починилось — именно они и были виновны. Мемтест погоняю и отчёт выложу, а пока запомним, что прожили они — парой, вместе и счастливо — всего примерно 2.5 года. А на новые 2гб Hynix’а во Флеше дали гарантию аж 5 лет, так что временно — до того, как накроется уже и Hynix — запишем, что Kingston — говно.
А ещё я из этой истории извлёк урок — бэкапы надо делать не на случай, что харды накроются — харды просто так не накроются, и от них RAID спасёт, а на случай, что чьи-то кривые ручки (программистов, конечно), внесут Страшный Баг в твои данные, и RAID не спасёт, а только размножит ошибку радостно по всем дискам. Либо ещё один вид бэкапов — «Larin-style». Которые закатываются на диски и закапываются на даче. Это на случай уничтожения или утраты. Или визита гоблинов.
2010-01-11 InnoDB разваливается!
Как он меня достал, капец!
Чего происходит, понять не могу, но время от времени база берёт и разваливается. Без каких-либо видимых предпосылок, просто берёт и разваливается. Все остальные базы целы (тоже InnoDB), а FeedOnFeeds разваливается.
Я уже даже с Debian’овского мискля слез и на Ourdelta перешёл, а база всё равно разваливается. А tablespace в InnoDB общий. Посему обламываются запросы ко всем базам.
Единственное, чего FeedOnFeeds делает отличного от других — это, похоже, OPTIMIZE TABLE. Так что я его сейчас отключу и попробую пожить без него, вдруг поможет?
А может, вообще пора на PBXT валить?
2009-12-27 И снова авиамодельные видео
Как же я прусь с FPV (First-Person View, вид от первого лица) видеороликов с авиамоделек — это капец =) бесконечно могу смотреть. Ну ничего, скоро соберу себе Great Planes Slinger и попробую не убить его при первом же полёте :-D
А вот видео от первого лица с установленной системой RVOSD (RangeVideo On-Screen Display) — телеметрия, GPS и автопилот:
FPV stryker autopilot maiden flight from Vova Reznik on Vimeo.
Правда не всё бывает гладко, бывают и вот такие катаклизмы… O_O
Данное резонансное явление называется «Flutter» (флаттер) — примерно от него, кстати, знаменитый Такомский мост развалился.
2009-12-23 Мечты о Bugzilla и Testopia
Выкинуть из багзиллы:
- Template Toolkit. Жестоко и полностью.
- Из шаблонов «логику уровня приложения», которой там процентов 50.
- Из шаблонов все сообщения и строки в отдельный уровень локализации а-ля MediaWiki.
Выкинуть из тестопии:
- 4 описания (Setup, Breakdown, Action, Expected Results), и заменить их «Description», интегрированным с Wiki.
- Документы тест-планов, и заменить их интеграций с Wiki.
- Почти весь AJAX. Можно оставить чуть-чуть — в местах, где он ДЕЙСТВИТЕЛЬНО требуется. Можно оставить механизм dashboard’а, но сделать его лучше (произвольное расположение) и сильно сбоку.
- Типы планов. Уж больно они «сбоку».
Сделать в багзилле как надо:
- Форму пользовательских настроек.
- Форму поиска багов.
- Форму редактирования бага.
- (Сделано в нашей CustISzilla) HTML-почту.
- ORM в основе объекта «баг».