Sony PRS-T1

Купил себе читалку. Sony PRS-T1. Подкупило наличие в кишках Андроида.

Прошил кастомизированной прошивкой с добавлением своей программы. Работает! Но так же, как и на Samsung Galaxy Note – не на полный экран почему-то. Теперь то уж точно придётся разбираться с этим глюком.

Вообще, устройство – то, о чём я мечтал. Они совместили e-ink и Андроид! То есть, в отличие от планшета, не будет сжираться батарейка, но при этом большинство андроидных программ идут без проблем. И читать книжки при этом комфортно.

Забавно, какой-то тупой француз с IP 88.191.95.247 пытается меня поломать, наугад пробуя найти где же у меня на сервере установлен PhpMyAdmin. А также пытаясь найти украинскую заразу muieblackcat. Ну-ну, удачи ему…

Zhongwen Cards, лень и неуверенность

Предлагал же мне Ма-сяньшэн порекламироваться на Магазете. Посмотрел, там недавно как раз в комментах искали хорошую программу под Андроид – как раз прозвучало слово “трёхсторонность”. И было сказано, что русских программ можно не искать – типа русские разработчики не хотят ничего делать. Первой идеей было написать коммент, рассказать о своей программе. Второй идеей было воспользоваться предложением Ма-сяньшэна. А затем появился вопрос, страшный и рукоопускающий.

А оно мне надо?

Вот так этот вопрос звучит. Программу я писал в первую очередь для себя и под себя, зарабатывать с её помощью не планирую. А вот поток негатива поиметь через это дело – легко. Потому что не бывает вещей, удобных всем. Поговорка японская такая есть, 十人十色 – читается “дзюнин то:иро”, десять человек – десять цветов. То есть, на вкус и цвет все фломастеры разные…

В общем, скорей всего предложением воспользуюсь, когда найду для этого сил и желания. Но не сейчас. А те люди пусть пользуются тем, что нашли – я для себя нашёл Android SDK и очень этим доволен :)

Свежая версия программы есть, но я её даю только при личном общении. Потому что я сволочь, да. И жлоб.

Проблемы с Samsung Galaxy Note

В торговом центре довелось пощупать новый Samsung Galaxy Note. Вообще, с момента презентации на Хабре хотелось пощупать, решить хочу ли я такое устройство…

Испросил разрешения и поставил на него Zhongwen Cards. Запустил и офигел – приложение НЕ растянулось на весь экран. При этом когда я пробовал его на Galaxy Tab’е с экраном гораздо большим – всё было нормально. Интересно. Пока не нашёл с чем это может быть связано…

Zhongwen Cards

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

Переписал модуль импорта XML. Подключил его в том числе и к работе с файлами на SD-карте. Пока формат только мой собственный, нужно будет сделать импорт также из Pleco, Anki и, возможно, ZDT (не помню, есть ли там экспорт в XML). Нужно теперь сделать еще возможность экспорта, исправить несколько юзабилити-неприятностей. Еще всё-таки очень хочется довершить ту старую идею с тестом на путающиеся инициали и финали, совместно с путающимися тонами. Ну а затем наверное стоит продумать что еще у меня не кастомизируется и сделать это кастомизируемым :)

Также подумываю над тем, чтобы разделить локали – возможный задел на монетизацию. Потому что я, конечно, альтруист, но в первую очередь для русскоязычного населения. У мериканьцев на английском и так дофига учебного софта и материалов :)

В чём отличие между MIL-STD-1553 и MIL-STD-1533?

Ответ один – ни в чём. Второе – это написанное с опечаткой первое. Не бывает шины 1533! Справедливости ради, можно сказать, что документ под номером MIL-STD-1533 существовал, но он описывал стандарт на разъёмы с подпружиненными контактами, но впоследствии этот стандарт был отменён.

Пока что для аэроспейса и авионики есть только MIL-STD-1553 (он же “ГОСТ Р 52070-2003″), ARINC 429, IEEE1355 (он же SpaceWire). Ну, и какие-то несознательные личности ещё пытаются туда CAN присобачить…

JTAG, BSDL и сопутствующие

..it is true that asking regexpes to parse arbitrary HTML is like asking Paris Hilton to write an operating system..

Заинтересовался протоколом IEEE-1149, который JTAG. Хочу попытаться освоить его на низком уровне. Вроде как всё довольно просто – конечный автомат Тестового порта доступа (TAP) управляется линией TMS по переднему фронту TCK, данные вводятся по линии TDI, выводятся по TDO. Плюс необязательная линия TRST, про которую можно не думать. Автомат достаточно неплохо расписан в стандарте – всё довольно стройно и логично.
Далее начинаются усложнения. Стандарт описывает интерфейс и требования к протоколу, а вот сам протокол может быть с некоторыми ограничениями каким угодно. Для каждого устройства, оснащенного портом JTAG, производителем пишется BSDL-файл, в котором данный протокол и описывается. После чего данный файл выкладывается или не выкладывается (если производитель очень жадный) на всеобщее обозрение. Также, в BSDL-файле может содержаться дополнительная информация о внутренней структуре устройства и способах доступа к этим кишкам всё через тот же JTAG – попросту говоря, описывается что нужно сплясать на входе TDI, когда автомат состояний находится в правильном состоянии (Capture-IR или Capture-DR – пока этот момент я не особо уяснил).

Теоретическая информация – это хорошо, но я уясняю информацию только в практическом ключе – поэтому захотелось изваять простенький JTAG-комплекс. Взять программатор, который изначально был разработан для работы с совершенно другим самописным протоколом и попробовать подцепиться им к какому-нибудь камню. Для начала мне бы хватило правильно считанного значения IDCODE.

Я не люблю делать одноразовую работу, поэтому к задаче решил подойти издалека – написать свой собственный парсер BSDL-файлов. Возвращаясь к фразе из эпиграфа – структура этих файлов представляет собой обычный исходник, похожий на исходники любого другого языка программирования. И подойти к нему с точки зрения обычных конфигурационных файлов довольно проблематично. Поэтому я снова заинтересовался задачей синтаксического анализа. Пока что сижу и изучаю форму Бэкуса-Наура, расширенную форму их же, выбираю инструмент, которым буду пытаться описать грамматику BSDL, пока что по принципу количества информации лидирует yacc и его форки вроде bison. Освоение синтаксического анализа впоследствии может пригодиться для построения скриптовых интерпретаторов для внутренних задач.

Zhongwen Cards v.1.0

С Андроид-маркетом я пока подожду. При регистрации в качестве разработчика с меня попробовали слупить 25 мёртвых американских президентов. Мне это дорого, особенно если учесть, что приложение я собирался делать бесплатным. Собственно, теперь я понял, почему большинство приложений в Маркете платные – надо же как-то стартовый взнос возвращать :)

Пока выложил первую ревизию приложения сюда. Ссылка: http://zwc.shengsu.org/zhongwencards.apk

 

А вот фотографии работающего приложения.

Главное меню – набор колод с картами. Колоды можно создавать, скачивать, переименовывать, удалять.

Карточки в колодах можно создавать, редактировать, удалять, копировать в другие колоды. При вводе пиньиня можно пользоваться цифрами для обозначения тонов – программа их сконвертирует в диакритические тоны сама. То есть можно ввести “huan1 ying2″, а в карточке получится “huān yíng”. Это очень удобно, т.к. в стандартной андроидной английской раскладке отсутствуют необходимые символы с диакритикой.


Основная часть программы. Собственно режим флэш-карточек. Порядок следования сторон карточки настраивается. Мне более всего удобен порядок “Пиньинь – Ханьцзы – Перевод”, где я по пиньиню пытаюсь вспомнить иероглифы, ну и перевод тоже. Вот здесь, как вы видите, я ошибся:

Перелистнул карточку и опечалился своей ошибке. Нарисованное можно стереть и пару раз нарисовать правильно, чтобы вбить в руку:

Программу буду развивать. На очереди – импорт XML файлов, в том числе и сгенерированных Pleco. В самой Pleco опция флэш-карт не входит в бесплатный набор, на этом я надеюсь получить некоторую популярность программы у англоязычных и немецкоязычных пользователей-халявщиков Pleco.

Zhongwen Cards: проблемы поддержки и монетизации

В общем, я уже доволен своей программой до той степени, когда её можно уже открыто презентовать. Это не означает, что реализовано уже всё. Еще буду допиливать, но на текущей стадии уже работает весь необходимый изначально функционал – те самые пресловутые три причины (см. ранее).

Далее, я считаю, нужно делать первый релиз программы. Пословица гласит, что встречают по одёжке. Это значит, что на главное место выходит домашняя страница программы. Она должна быть приятной. В моём понимании это означает (1) отсутствие вырвиглазности, (2) интуитивно понятные разделы и (3) безглючный сервис.

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

Идея замещающих колод, подсмотренная у OrangeOrApple.com, подкупает простотой использования. Не требуется регистрация – просто введи имя колоды, скопируй из Экселя свои карточки – обрабатываются четыре поля (Ханьцзы, пиньинь, перевод и примечание, которое может быть использовано, к примеру, под пример использования) – и нажми на кнопку отправить. Всё, колода в базе. Дальше из программы жмём “Скачать колоду”, вводим имя колоды – и колода скачивается. Далее можно переименовать колоду в программе. Маленькое но – имя колоде на сайте надо выбирать такое, чтобы быть уверенным, что за тот промежуток времени, пока колода не будет скачана в программу, никто не засунет в базу другую колоду под тем же именем…

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

Ханьцзы \t пиньинь \t перевод \t примечание \n

 

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

Первая и вторая проблема подбивают меня на то, что для домашних страничек программ и сервиса нужно ставить CMS. Сижу и думаю – какую же выбрать, чтобы не пришлось долго иметься с совершенно неинтересными мне веб-дизайном и HTML-кодингом. Джумла? Друпал? Что-то еще?

Ну и напоследок об монетизации. Модное словечко, ага. Это то, ради чего пишутся большинство программ и сервисов. Ненавижу, если честно. Единственный способ монетизации, который мне нравится – это парадигма DonationWare. При этом я прекрасно понимаю, что заработать прилично на этой парадигме практически нереально – сам я ни разу ни копейки не донейтил никому. Но зато можно купаться в посланных тебе лучах радости когда у людей всё работает и отбиваться бесплатностью от лучей поноса, когда что-то не работает. В общем, парадигма для тех, кому лениво осуществлять поддержку дурацких запросов тех, кто телескопами смотрит на инфузорий-туфелек только потому, что там есть увеличительное стекло.

 

Резюмирую. Мне нужен CMS, дизайн для него и иконка для программы. А дальше посмотрим.

Zhongwen Cards

Просто дико лениво доделывать программу после того, как она полностью заработала. Даже и не знаю что с этим делать – вот всегда так.

На данный момент не реализовано из того, что хотелось бы иметь:

  1. Перемещение и копирование карточек между колодами;
  2. Переименовывание колод; Сделал;
  3. Вывод всех карточек из всех колод с полным выводом всех полей и возможностью сортировки;
  4. Отображение комментария по карточке по запросу; Сделал;
  5. Закачка колоды из программы на сайт с последующей выгрузкой файла;
  6. Настройка тем оформления – не только цвет и размер шрифта на карточках (что уже есть), но и цвет подложки каждой стороны карточки отдельно; Сделал;
  7. Вывод карточек в случайном порядке – в данный момент они выводятся только строго по порядку; Сделал;
  8. Нормальный дизайн на сайте и нормальные скрипты с дурозащитой.
  9. Интернационализация приложения – все строки надо вызывать всё же из R.string.blah-blah, а не прописывать железно. Сделал.
  10. Нужно придумать и нарисовать иконку приложения.

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

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