2011-10-04

tail -F

Кто бы мог подумать, что у меня будут претензии к coreutils: а именно, к небезызвестной tail.

Суть проблемы в следующем - в процессе перемещения нашей системы с etch на squeeze (или, с 4 на 6 версию Debian), был получен непонятный глюк, связанный с потерей данных при ротейте файлов. Оказалось, что дело в tail! Схема использования выглядит так:

1. Есть основная программа, которая непрерывно пишет в некий file, в ней есть обработчик сигнала (допустим, USR1).
2. Есть tail, который запущен в режиме следования за именем файла:
tail --follow=name --retry file.

И есть простейший скрипт ротейта, который работает в два приема:

1. Переименовывает файл (допустим, в file.прошло_секунд_с_1970-01-01). Сам файл, естественно, продолжает увеличиваться и после переименовывания.
2. Посылает основной программе сигнал USR1, который заставляет ее закрыть текущий дескриптор и открыть по-новой файл file.

При таких обстоятельствах, tail в режиме следования за именем файла бросает следить за старым и пересаживается на новый. Таким образом, по идее, обеспечивается непрерывность потока данных во время ротейтов.

Так вот - поведение "старого" tail-а 5.95 из etch однозначно - он будет "сосать" данные из  переименованного файла до тех пор, пока снова не появится файл со старым именем - и лишь тогда переключится на него. А вот "новый" tail 8.5 (а по факту, его поведение изменилось уже в версиях 6.x), как только файл переименован, бросает его и тупо ждет появления файла со старым именем. В итоге, данные, которые успели записаться в "старый" файл до момента обработки основной программой сигнала USR1, игнорируются tail-ом, образуя некую "дыру" в потоке - обычно пара секунд данных таким образом безвозвратно теряется.

Первым делом хочется увеличить время сна tail-а, чтобы переоткрывание все-таки успело произойти. Но потом понимаешь, что это обычный sleep, и вероятность, что tail проснется в неподходящий момент, сохраняется. 

Именно поэтому пришлось делать специальный пакет со "старым" tail-ом - бы было чуть больше времени, сделал бы значение ключа --follow=descritpor_than_name или что-то в этом духе. 

2011-03-13

Как перекодировать видео для Caanoo?

Вот именно таким вопросом я задался, когда очередной лостфильмовский файл был проигран с безумным набором цветов, не имеющих ничего общего со здравым смыслом.

Надо сказать, что ответ пришел довольно быстро - скрипт tablet-encode из статьи про mediaserv. Напомню, это - обычный скрипт на старом добром Perl, который вычисляет правильную командную строку для утилиты mencoder, входящей в состав MPlayer. Получившийся в итоге файл можно проиграть на устройстве Nokia/Maemo, но весь фокус в том, что и для Caanoo это вполне приемлемо.

Проверьте, что необходимые пакеты установлены в вашем Debian/Ubuntu:

apt-get install perl mplayer mencoder

Скачайте скрипт tablet-encoder и откройте его любимым текстовым редактором. В самом начале вы увидите определения переменных, исправьте следующее:

my $idealRatio    = 320/240; 
my $defaultPreset = 'caanoo';

А также добавьте одну строчку в конец хэш-массива %PRESET, получится примерно так:


%PRESET = (
    smallest => { abitrate => 32, vbitrate => 80, width => 240, fps => 15 },
    small    => { abitrate => 96, vbitrate => 150, width => 240, fps => 15 },
    average  => { abitrate => 128, vbitrate => 350, width => 320 },
    good     => { abitrate => 160, vbitrate => 600, width => 352 },
    best     => { abitrate => 192, vbitrate => 768, width => 400, height => 240 },
    mplayer  => { abitrate => 192, vbitrate => 1200, width => 400, height => 240 },
    n900     => { abitrate => 192, vbitrate => 2000, width => 800, height => 480 },
    caanoo   => { abitrate => 128, vbitrate => 350, width => 600, height => 375 },
);

Если по каким-то причинам боитесь редактировать скрипт, можно скачать уже исправленный.

Ну а дальше, можно использовать его так:

./tablet-encode -7 --original-aspect --hq --preset=caanoo source.avi destination.avi

Всегда указывайте "-7" - пусть вас не смущает, что это опция для Nokia n770 - у них с Caanoo общая проблема, которая решается подстановкой нужного FOURCC. 

Приведенные мной исправления и опции запуска - первый вариант, который меня устроил, поэтому при наличии свободного времени и желания, можете самостоятельно поэкспериментировать и найти оптимальный.

Upd: теперь Caanoo можно купить и в России... 



2011-03-03

Caanoo приехал

Несмотря на китайский новый год и сезонные процессы на нашей российской почте, я таки получил свою игровую приставку Caanoo и даже немного освоился с ней, приобретя некий опыт. Именно им я и хочу поделиться - возможно, это пригодится тем, кто первый раз берет ее в руки.

Итак, смотрим на содержимое коробки. Вот минимальный комплект:
  • собственно, сам девайс с абсолютно незаряженным аккумулятором;
  • запасной стилус;
  • петелька для ношения на руке;
  • шнурок для связи с PC и одновременной зарядки от USB (специального сетевого адаптера в комплекте нет);
  • книжечка "быстрый старт" с абсолютным минимумом полезной информации (не ищите русский язык, скажите спасибо за english ;)
  • диск с руководством пользователя - он содержит только два файла (на английском и на корейском, ни байтом больше).
Устройство представляет собой маленькую машинку, работающую под управлению Linux (о технических характеристиках я писал в предыдущем посте). Но для обычного человека - это просто игровая консоль, сделанная, кстати вполне добротно.

Самое время заметить, что в устройстве нет ни одной встроенной игры - их придется скачать в интернете и установить на SD-карту. Самой карты в комплекте, кстати, тоже нет. Подойдет любая полноразмерная - поддерживаются SD и SHDC до 32Gb включительно. 

Карту перед использованием форматировать необязательно (поддерживается только FAT и FAT32), но желательно. Как только вы установите карточку в Caanoo и включите ее, она запишет в корень служебные файлы NED_LIC.SYS и NED_SID.SYS, а также, по мере того, как вы будете перебирать пункты основного меню, создаст там каталоги apps, game, music, photo, movie и ebook.

Необходимые файлы можно просто копировать на карту - либо через кард-ридер, либо прямо через саму консоль, для этого надо подключить ее прилагаемым кабелем к PC.



Если соединение установилось, на экране будет отображаться такая картинка:     



Логично предположить, что вы купили эту консоль для того, чтобы играть. Что ж, по обилию игр Caanoo далеко не самая первая - но не спешите огорчаться! Уж где-где, а в области эмуляторов она может похвастаться довольно внушительным набором: а это, в свою очередь, значит, что на ней можно играть в игры, написанные для других игровых консолей и приставок - от старого доброго ZX Spectrum до SEGA Mega Drive. 

Итак, я обнаружил два основных абсолютно легальных источника приложений:
  1. Родной сайт Caanoo и Wiz - fungp.com. Только там можно скачивать платные приложения, зарегистрировать свою консоль и общаться в форуме с техподдержкой;
  2. Сайт openhandhelds.com - там можно скачать исключительно бесплатные игры и  программы - в том числе и для Caanoo. Может показаться странным, но там их гораздо больше, чем на официальном сайте.
Куда же податься?

Я считаю, что без FunGP вполне можно обойтись. Тем более, что сайт этот поистине уникален своим подходом к интерфейсу с пользователем. Перед его посещением усвойте простую истину: представления сотрудников GPH об эргономике в целом и здравом смысле в частности не совпадают с общепринятыми.

Итак, идем на fungp.com и создаем свой аккаунт. Это сравнительно легко, но имейте ввиду - на страницу с регистрацией мы попадаем по протоколу https через порт 442, а не через общепринятый 443 (будьте внимательны, если используете proxy). Ищите "SIGN UP" и смело нажимайте - должно появиться Membership Agreement, которое положено внимательно прочитать и согласиться при при помощи чекбокса "I accept the membership policy". На следующем экране вводим свою информацию, включая логин (нет различия между прописными и строчными буквами) и мыло. Последнее надо вводить аккуратно, потому что на него приходит письмо с активацией и если промахнуться - придется регистрироваться по-новой и выбирать другой логин - возможности изменить мыло до его подтверждения, увы, не предусмотрено.

Допустим, вы успешно зарегистрировали пользовательский аккаунт. Теперь можно скачать и установить программу PC Manager  на вашу Windows - поищите квадратный баннер на заглавной странице сайте, приблизительно такой:



Или скачайте по прямой ссылке (если она еще работает, конечно). После установки дистрибутива, он первым делом сам себя обновит - то есть, скачает и установит самого себя еще раз. Это нормально, не удивляйтесь.


После старта будет предложено ввести логин и пароль от аккаунта FunGP, который мы создали   на предыдущих шагах. Если вы подключите консоль первый раз, программа может поинтересоваться, надо ли зарегистрировать это чудесное оборудование. Соглашаться или нет - решайте сами, но если согласитесь, в аккаунте появится запись, примерно такого вида:

Можно ли воспользоваться гарантией в России и как это делается - понятия не имею, но если (тьфу-тьфу-тьфу) появится опыт - обязательно поделюсь им ;)

Вернемся к программе PC Manager. К счастью, она не пытается управлять вашим компьютером (как это может показаться из названия), напротив - она управляет приложениями для Caanoo. Под приложением понимается исключительно целый подкаталог (он же фолдер, папка - как вам привычнее).

Для работы с программой в настройках потребуется жестко задать каталог, куда вы будете помещать распакованные (готовые для перемещению на Caanoo) программы:



Тут мы видим первую крупную логическую несостыковку: по каким бы каталогам вы не перемещались в дереве файловой системы (слева вверху), файлов вы не увидите. На панели справа можно увидеть хоть какую-то информацию только если будут соблюдены два условия 1) вы зайдете в этот самый "Downloaded contents folder" из настроек выше 2) в этом каталоге будут существовать подкаталоги с программами для Caanoo. Вот пример - скачанные с сайта FunGP программы успешно распакованы в папку C:\GP2X, и именно она выбрана слева:


Далее, надо подключить консоль в режиме USB-накопителя и нажать на кнопку "Search device". В случае успеха, окно расширится еще одной секцией, где можно увидеть - опять-таки, не файлы, а подкаталоги! - на вашем Caanoo. Установите курсор на нужный каталог внизу (например, games), выберите каталоги для закачки при помощи чекбоксов вверху и нажмите на красивую полупрозрачную оранжевую кнопку "Apps transfer":



Начнется пофайловое копирование, будьте терпеливы! ;)


Вот, собственно, и всё - дальше обращаться с консолью надо также, как и с любой флешкой или иным USB-MassStorage  устройством - сначала "безопасно извлечь" и только потом отключать кабель USB.

Если потребуется удалить подкаталоги или программы с Caanoo - это можно сделать также через нижнее окно. Удаление также происходит пофайлово, но уже без красивых диалогов и даже без прогресс-бара. Программа только задумается на 15-20 секунд, надо просто подождать ;)

И по поводу иероглифа на кнопке в окошке - да, привыкайте. Корейский учить, к счастью, не придется, но подобные "уши" постоянно нет-нет, да напомнят нам о стране-производителе этой машинки ;)

Но вернемся к сайту FunGP - а точнее к тому, как с него качать игры и программы. Для этого надо ткнуть в линк App Store:



Попробуем разобраться, что к чему. Звездочки - народный рейтинг голосования, причем они отражают действительно реальное положение вещей. Далее - надпись Free - означает, что программу можно получить бесплатно, в противном случае что-то типа 5000G или 3000G - это так называемые G-поинты, которые можно купить за деньги, из расчета приблизительно 1000G = 1 USD. Правда, покупать их надо на сайтах-партнерах, а на FunGP - исключительно регистрировать.

И, наконец, самое главное - если название игры заканичается на _C - например, JumpToTheMoon_C, то это игра для Caanoo! Но если на конце мы видим _W, то это - игра для Wiz - консоль-предшественница Caanoo. И поскольку прямой совместимости нет, не тратьте время зря - скачанные игры для Wiz не будут запускаться на Caanoo.

Самое время выбрать игру и нажать на кнопку Purcashe. Можно, конечно, для начала аккуратно собрать их в корзинку (Add to cart), но программ на самом деле не настолько много - запутаться сложно. Да и удалить из этой корзины ничего нельзя, так что при неумелом использовании она через некоторое время превратится к копию каталога приложений ;)

Откроется новое окно:



Смело нажимайте "Buy now" - никаких уловок, платить не придется. После появления этого окна:


...игра считается купленной. Осталось дело за малым - скачать ее на наш PC.

Вот тут опять мы сталкиваемся с экзотикой. Дело в том, что скачиванием занимается не непосредственно браузер, а специальный Java-апплет, поэтому браузер должен уметь запускать Java - это непременное условие.

Теперь надо найти ссылку для скачивания. Для этого идем в список скачанного. Это можно сделать через пункт Game Purcashe history, или через бокс "My Apps", если он показывается слева - жмите на плюсик или на слово "In Box" (судя по всему, они еще не скоро что-то изменят в своем веб-интерфейсе ;)



Нажимайте кнопку Download - откроется всплывающее окно и запустится апплет (а если не запустится - будет, по крайней мере, линк - откуда можно скачать Java для вашего браузера).  Далее надо последовательно выполнить следующее:

1. Разрешить апплету хозяйничать на вашем HDD. Я это сделал и вроде бы ничего страшного не случилось:



2. Дожидаемся полной загрузки апплета (курсор ожидания во всплывшем окне заменяется на стандартный).


3. Жмем "Change folder", указываем каталог на жестком диске для скачивания (как правило, все тот же C:\GP2X), нажимаем ОК - диалог выбора каталога закрывается.

4. Нажимаем на кнопке OK со стрелочкой направа (ввиде знака больше), под полосой загрузки - она может и не отобразится толком, но все равно - мстительно покликайте туда мышкой (на всякий случай несколько раз) и идите пить чай. Это надолго.

После скачивания, игру можно установить при помощи PC Manager, как это было описано выше.  

продолжение обязательно следует

2011-02-11

Мастерхост и Почта(3)

Сегодня прочел в твиттере мастерхоста:

Ван нужна "бесплатная" почта? Вам в Gmail или к другим любопытствующим перлюстраторам. У нас другая бизнес-модель, мы честно продаем услуги.

Я уже представил себе, как офигенный штат специально нанятых сотрудников Gmail с живым интересом читает мои письма. Точно так же ясно я вижу сотрудника ФСБ, приходящего в Masterhost с требованием обеспечить рабочее место для выборочного анализа почтовых сообщений.

А резюме такое: если кто-то кричит, что он честный, возникает вопрос: а зачем он это делает? Его что, кто-то обвиняет в нечестности? Или проблема в другом?...

2011-01-26

Мастерхост и Почта(2)

Итак, неотвратимо приближался день окончания авансовой оплаты моей площадки по тарифному плану "Эффективный". Воспользовавшись ценными советами читателей к моему предыдущему посту на эту тему, выяснил следующее:

Во-первых, Google Apps - это хорошо, но у меня много пересылок, а маршрутизировать почту на основе имени получателя бесплатная версия не умеет. Надо быть как минимум учебным заведением ;)

Во-вторых, действительно - можно сидеть на "старой" почте и устаревшем тарифе "Эффективный" до посинения. Правда, с нового года на него подняли ценник - 360 рублей в месяц, о чем радостно поведали в панели сообщений.

Тогда я решил попробовать эту самую новую "Почту"... результаты превзошли самые смелые ожидания. 

Охарактеризовать это можно одним емким словом - убожество

Я понимаю, что невольно задену или обижу тех людей, которые эту услугу запускали и разрабатывали, тратили силы, время и деньги. Но, если задуматься, не очень-то сильно они и напрягались, судя по результату.

Итак, вы перешли по ссылке https://m.mastermail.ru/, и радостно наблюдаете экран логина. В подвальчике этого экрана сразу бросается в глаза упоминание о Microsoft:



Дурное предзнаменование не обмануло: меня ждала смена браузера (Chrome почему-то этому интерфейсу не понравился, пришлось туда идти через Firefox). Заходим и видим псевдоокошечный интерфейс внутри страницы (честно говоря, бывает и покруче, да и побыстрее), долго тупим - где же администрирование почтовых ящиков... После чтения документации, выясняется - надо справа тыкнуть в drop-down box "параметры", там будет "показать все параметры". После выбора загружается визуально совершенно другой экран, где я вижу потрясающую статистику:



(кто разъяснит мне фразу про то, что "в 49.5Гб нельзя отправлять почту" - а куда ее можно отправлять?!)

Ну вот, теперь надо найти слева другой дроп-даун бокс, и там сменить "Управление Самостоятельно" на "Моя организация". Попутно можно узнать, что есть такая штука, как "почтовый ящик места" - вот именно так он и упоминается в настройках. 

И вот, наконец, можно конфигурить почтовые ящики и правила пересылок. 

Тут надо вспомнить, что перенос информации со "старой" почты на "новую" - осуществляется либо платно компанией Мастерхост и бесплатно вами самими. При этом компания не позаботилась ни о каких примитивных средствах импорта - если у вас есть 100-200 почтовых ящиков - закатывайте рукава и в бой! Надо 100-200 раз нажать "Создать", заполнить информацию, и далее - ОК. И все это, увы, происходит не так быстро, как хотелось бы.

Но мне немного повезло - у меня ящиков-то было штук 10 от силы, но зато пересылок - 35. Я аккуратно создал 35 правил пересылки (как это было в старой почте) и полез проверять. Увы, при попытке отослать почту на этот адрес, письмо возвращается с вердиктом "такого mailbox-а не существует". Ура, теперь надо тупо создать 35 мэйлбоксов, исключительно затем, чтобы почта все-таки добиралась до правил пересылки. Да, и пароль при создании тоже надо вводить - два раза.

И вот, наконец-то дело сделано - создано энное количество мейлбоксов! Теперь время воспользоваться рекламируемой фичей "несколько почтовых доменов на одной услуге". Но и тут облом - как выясняется, полноценной поддержки не существует. Все, что можно сделать после присоединения нового домена - это добавлять адрес из этого нового домена к уже созданным почтовым ящикам (в качестве альтернативного). Таким образом, если в присоединенном домене есть какой-то юзер, то он должен быть и в основном. А если, простите, это два разных человека (ну или "места", если на то пошло) - называются одинаково, но в разных доменах? А никак. Видимо, надо делать новую площадку и еще одну "Почту" заказывать.

Меня постигла в процессе еще одно удивительное открытие. Ящики бывают "Домашние" и "Рабочие"- названия весьма условные, можно было бы сразу "Халявные" и "Платные" - так хоть понятно, в чем разница. Так вот, по умолчанию система подсовывает при создании ящика именно "Рабочий", и... короче, не углядел я - при создании ящиков наплодил парочку "Рабочих" (просто ошибся). При этом мудрый GUI от Mirosoft никак и нигде не сообщает, сколько "Домашних" и "Рабочих" ящиков числится в услуге. И уведомление не приходит "внимание, вы только что увеличили стоимость услуги на XXX рублей".  Об этом можно узнать только через контрольную панель - если зайти в "Древо услуг" и дальше в "Почту". Но если мы этого не сделаем - то всё, со счета будет минусоваться столько, сколько задумано "Мастерхостом". Узнаете, когда средства на счету будут подходить к концу.

Короче, я банально посчитал, что сумма на счету и "прогнозируемая дата отключения" как-то расходятся со здравым смыслом и  тарифами, после чего потратил на разборки во всех веб-интерфейсах управления какие-то пару часов. 

Ну и под финал перешел таки на новый тариф, полюбуйтесь, как это выглядит:



Ну и резюмируя все вышесказанное - я в тихом ужасе. 

2011-01-25

Caanoo

Перелистывал на досуге первый в 2011 году номер LXF и наткнулся на описание игровой консоли на Linux, называется Caanoo:

Технические характеристики следующие:

  • SoC (система на чипе): MagicEyes Pollux VR3520F
  • CPU: ARM926EJ 533 MHz, встроен в SoC (тег архитектуры - ARMv5TEJ)
  • GPU: аппаратный 3D engine, тоже встроен в SoC (поддерживается OpenGL ES 1.1)
  • производительность 3D: 133M треугольников/с и 1,33M полигонов в сек.
  • основная RAM: 128 МБайт DDR SDRAM 133 MHz (пиковая пропускная способность: 533 Мбайт/с)
  • видео буфер: около 16 Mbytes от основной RAM резервируется на видео и текстуры
  • ОС:GNU/Linux 
  • Flash-память: отсутствует (128 Мбайт зарезервировано для OS)
  • Подключение к PC: USB 2.0 High Speed через EXT порт
  • USB Host: USB 1.1 стандартный разъем
  • Поддерживает карты памяти SD / SDHC (до 32 Гигабайт)
  • G-сенсор/монитор вибрации
  • Аналоговый джойстик с высоким разрешением
  • Дисплей: 3.5" LCD 320×240 пикселов (резистивный тачскрин)
  • Встроенные микрофон и стерео-динамики
  • Питание: литий-полимерный аккумулятор 1850mAh (около 5-6 часов просмотра видео/игр)
  • Размеры : 146 × 70 × 18.5 мм
  • Вес : 136г
  • WiFi через адаптер (USB донгл - покупается дополнительно)
  • Цвета: Черный/Голубой/Белый

Собственно, устройство появилось не на пустом месте - у него были предшественники, сделанные славной фирмой Gamepark в Южной Корее (так сказать, южнокорейский ответ японским игровым консолям - почти нацпроект ;). Существует оно с осени 2010 года, так что уже успело достаточно насытить определенные круги ;)

Привлекло меня в этой железке два фактора: невысокая цена (около 5000 руб) и полная открытость. До такой степени, что можно на ней резвиться практически как угодно - например, модифицировать в рутовую файловую систему. Ну и писать программы, конечно же - существует полноценный SDK и toolchain, которые можно свободно скачать и установить.

Что потребуется для программирования под Ubuntu? Попросите apt-get установить следующее:
  • codeblocks ( весьма симпатичная IDE с плагинами );
  • g++
  • libgl1-mesa-glx
  • libfreetype6-devlibgl1-mesa-devlibglu1-mesa-dev, etc
Итак, скачайте и распакуйте в домашний каталог SDK (я для примера буду использовать /var/caanoo).  В зависимости от того, что у нас выступает в качестве хоста - Windows или Linux, делать надо немного разные вещи, но суть едина, поэтому я буду рассматривать только Linux. 

Обязательный пункт программы: скопируйте файлы для wizard-а из распакованного SDK в  Code::blocks:

sudo cp -r /var/caanoo/GPH_SDK/tools/codeblocks/wizard/* /usr/share/codeblocks/templates/wizard

После этого команда New|Project будет показывать возможность создать GP2X-проект:



Далее, надо зайти в настройки Settings|Compiler and debugger и выставить там на закладке Toolchain следующее:

Чтобы проверить правильность настройки, можно открыть любой из примеров, входящих в SDK и попробовать скомпилировать. Компиляция возможна либо в host, либо в target (выбирайте через Select|Build target) - в первом случае в каталоге проекта создается файл target.out, во втором - target.gpe, для запуска на вашем компьютере и на консоли соответственно. Во всех каталогах с примерами есть Makefile, они достаточно простые и помогут сориентироваться тем, кто с недоверием относится к GUI и предпочитает командную строку.

Если в процессе компиляции вы наблюдаете сообщения о ненайденных библиотеках, например GL или GLU - надо установить соответствующие пакеты, только с -dev на конце. Именно там находятся статические библиотеки типа libGL.a, которые требуются для линковки в проектах.

Продолжение обязательно следует