LiteCoding

Заметки о программировании

Архив по тэгу ‘Java’

Коротко про YAFFS

без комментариев

YAFFS — довольно распространенная в файловая система, использующая преимущества и учитывая недостатки flash-накопителей. Сам я столкнулся с ней, когда разбирался с файлами прошивки для Zenithink ZT-180, но встречал упоминания о ней в контексте аудиоплееров и других карманных устройств. На данный момент есть 2 совместимые версии YAFFS (это название используется для названия всех версий этой файловой системы), но меня больше интересует yaffs2, о ней я и расскажу.
Читать далее »

Written by Дмитрий Воробьев

Январь 22nd, 2013 at 17:50

smali2java: От лексем к сущностям

без комментариев

В прошлый раз я рассказал о том, как происходит разбор smali-файла. Но на этом цепочка превращений не заканчивается. Для того, чтобы впоследствии получить java-код, нужно сначала вычленить и распознать smali-сущности. Парсер возвращает нам лишь лексемы, но мы уже на этапе разбора можем создать экземпляры сущностей с помощью реализации интерфейса Visitor.
Читать далее »

Written by Дмитрий Воробьев

Январь 18th, 2013 at 06:22

smali2java: Больше, чем просто парсер

без комментариев

Эта небольшая заметка открывает цикл публикаций о том, как устроен smali2java. Пока комментариев и документации к этой утилите явно недостаточно, я буду по возможности объяснять, что и как smali2java делает.
Читать далее »

Written by Дмитрий Воробьев

Январь 15th, 2013 at 06:55

smali2java: итоги года

без комментариев

Близится Новый Год, и пора уходить на зимние каникулы. Поэтому сейчас самое время рассказать о том, чем уже стал проект smali2java, и во что он превратится в наступающем году.
Читать далее »

Written by Дмитрий Воробьев

Декабрь 25th, 2012 at 10:02

Августовские обновления

без комментариев

Дорогие (не)многочисленные читатели этого блога,

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

1. Andor’s Trail Editor
Пару месяцев назад написал редактор сэйвов для Andor’s Trail и сегодня выложил первую альфу, которая все это время пылилась у меня на винчестере. Этот редактор пока может и умеет не так уж и много: читать, писать и редактировать количество уже имеющегося в инвентаре предмета. Но это только начало. Вся беда в том, что рисовать я не умею совсем, поэтому если у вас есть желание помочь этому опенсорсному проекту, то я буду рад скетчам GUI, иконкам для классов предметов и т.д. Естественно, каждый соавтор будет упомянут на странице проекта и в разделе «О приложении» (когда он появится).
Скачать apk и исходные коды можно с google code.

2. Smali2Java
Вернулся к своему долгострою, который «подвис» из-за возникших проблем с алгоритмизацией казалось бы простых действий. На данном этапе (pre-Alpha) он уверенно разбирает шапку smali-класса, импорты, поля и прототипы методов. Надеюсь, в ближайшем будущем он уже сможет осилить восстановление конструкторов и геттеров/сеттеров. Этому проекту также требуется помощь: ссылки на описание работы алгоритмов восстановления исходного кода, советы, патчи, запросы новых и баг-репорты по заявленным функциям.

В принципе, это все хорошие новости на данный момент. Не забывайте оставлять комментарии, даже если согласны (а тем более, если не согласны) с моим мнением.

Ваш блогмастер LiteCoding.

Written by Дмитрий Воробьев

Август 8th, 2012 at 14:44

Как бороться с INSTALL_PARSE_FAILED_NO_CERTIFICATES

без комментариев

Вот, предположим, собираете вы приложение с помощью ant, все прописано как надо, все ПО, участвующее в процессе сборки приложения последних версий, в т.ч. и JDK7. Все проходит успешно, на выходе получаете apk-файл, а приложение не устанавливается. При попытке установить через ADB появляется «информативное» сообщение INSTALL_PARSE_FAILED_NO_CERTIFICATES. Что делать? На самом деле, тут виноват именно JDK7, который по умолчанию использует SHA-256 вместо SHA-1 в утилите jarsigner. Решить эту проблему очень просто. Т.к. задание signjar в ant не поддерживает перегрузку алгоритма для генерации подписи, то вам придется установить JDK6 (вместе с JDK7 они отлично уживаются) и изменить значение переменной окружения JAVA_HOME на каталог bin установленного JDK6. После этого процесс сборки заработает как надо.

Written by Дмитрий Воробьев

Апрель 16th, 2012 at 14:54

Получение списка зависимостей классов в Java

без комментариев

Совсем недавно на хабре проскакивала статья «Определяем все классы, которые использует приложение на Java«, в которой рассматривался ряд хитроумных способов получить список зависимостей конкретного проекта. Ничего не могу сказать по поводу удобности предложенных решений, т.к. до сих пор мне не приходилось иметь дело с инструментацией в Java. Но вот подобная задача с небольшими вариациями уже появлялась в моем списке.

Все уже изобретено. А то, что не изобретено, на самом деле изобретено и основательно позабыто. Поэтому я хочу обратить ваше внимание на CDA (Class Dependency Analyzer), инструмент статического анализа классов Java. Сразу огорчу сторонников open source, вы не сможете найти исходный код данного инструмента в открытом доступе. Зато он freeware’ный, т.е. по-настоящему бесплатный. Никакой рекламы, ограничений функциональности и прочих трюков, заставляющих купить полную (full, pro, ultimate) версию продукта. Его GUI построен с помощью JGoodies, поэтому особых красивостей ожидать не стоит. Но зачем нам молоток с уникальным дизайном, если нужно просто вбить гвоздь? Главное, чтобы его рукоятка удобно лежала в руке, его баланс не напрягал, и чтобы он не рассыпался от первого серьезного удара. CDA именно такой инструмент — простой и надежный. У него есть единственный недостаток — не «понимает» рефлексию, но это беда всех статических анализаторов. В остальном этот инструмент полностью оправдывает ожидания.

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

Итак, если у вас есть подобная задача, попробуйте CDA для ее решения. Удачи!

Written by Дмитрий Воробьев

Апрель 16th, 2012 at 13:15

Использование aParse 2.0 для генерации парсера по ABNF-грамматике

без комментариев

Когда возникает задача что-то быстро распарсить, как правило, берется либо уже готовый парсер, либо пишется что-то свое, которое работает только с исходными данными определенного вида и постоянно требует контроля и ручной корректировки. Но есть еще один вариант — сгенерировать парсер по описанию грамматики входного языка и дальше иметь дело только с его лексическими единицами. Очень часто для таких целей используется Yacc или Bison. Однако, в этой статье речь пойдет о маленькой свободно распространяемой (freeware) утилите aParse.
Читать далее »

Written by Дмитрий Воробьев

Май 31st, 2011 at 15:41

FDB — JDBC с человеческим лицом

5 комментариев

Тот, кто имел дело с JDBC, наверное, согласится, что работать с этим API не так уж и просто. Поэтому его изучение, как правило, сводится к постижению азов и поиску решения, которое возьмет на себя большую часть рутинной работы. Есть ORM-решения, которые позволяют забыть про SQL, и работать непосредственно с сущностями системы. Яркий пример такого фреймворка — hibernate. Есть решения, берущие на себя только заботу об открытии/закрытии соединений, управлении ресурсами, например, jdbcTemplates.

У каждого из таких подходов есть свои плюсы и минусы. Недаром говорят, что настройка hibernate способна вынуть душу даже из админа с каменным сердцем. А в случае с jdbcTemplates все равно приходится совершать массу дополнительных действий, что не совсем подходит для написания маленьких утилит и простых проектов.

Осенью 2008-го года, когда мне понадобилось такое решение, я обратился за помощью к своему другу и коллеге Вадиму Шилову, который согласился взяться за эту задачу. Спустя две недели первая версия FDB была готова. Во всех своих последующих проектах мы использовали эту библиотеку, постоянно дорабатывая ее и исправляя ошибки.

Использовать эту библиотеку просто:
Читать далее »

Written by Дмитрий Воробьев

Март 3rd, 2011 at 14:10

Используем Apache Commons Daemon в Windows

без комментариев

Apache Commons Daemon — библиотека и набор утилит, позволяющих запустить приложение на Java как службу. Подробнее о назначении и конфигурации можно прочитать на сайте проекта, а тут мы остановимся на небольшой серии советов, которые наверняка облегчат вам жизнь.
Читать далее »

Written by Дмитрий Воробьев

Февраль 11th, 2011 at 16:56