воскресенье, 29 января 2012 г.

Список языков с переводом названий (ISO 639-1).

Занимаюсь локализацией своего Android приложения Animated Widget Contact. Потребовалось найти список языков, поддерживаемых Android, с переводом названий. Т.е. в виде Ru-Russian-Русский, da-Danish-Dansk и т.д. Как ни странно, готовый список найти не удалось. Поэтому составил такой список самостоятельно, взяв за основу следующие источники: 1, 2, 3, 4. В список включил только языки имеющие двухбуквенный код по стандарту ISO 639-1, т.к. именно они актуальны для Android приложений. Вот что в итоге получилось.

понедельник, 16 января 2012 г.

Сдача налоговой отчетности ИП за 2011 год

ИП на УСН без работников сдает за 2011 год в налоговую следующую отчетность:
  • Сведения о среднесписочной численности работников за предшествующий календарный год (не позднее 20 января)
  • Книга учета доходов и расходов организаций и индивидуальных предпринимателей, применяющих УСН (не позднее 30 апреля)
  • Налоговая декларация по налогу, уплачиваемому в связи с применением УСН (не позднее 30 апреля)
Рассмотрим, как эту отчетность можно подготовить.

пятница, 6 января 2012 г.

Статические анализаторы кода для Android-приложения.

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

Для разработчиков, ведущих кодирование в одиночку, статические анализаторы вещь вообще неоценимая. Ведь им некому показать код своего приложения. Так что "электронный помощник", способный грамотно выполнить "code review", может им здорово пригодится.

Вопрос - какие статические анализаторы кода доступны разработчику Android приложений? Для Java статических анализаторов существует множество (см. список lint приложений для Java в википедии), но не все они умеют работать с Android-приложениями и, тем более, учитывать их специфику.

Мне удалось отыскать следующие статические анализаторы кода, которые умеют работать с Android-приложениями:
  • Lint. "Родной" анализатор кода для Android, входит в состав Android SDK начиная с r16.
  • FindBugs (бесплатный).
  • Checkstyle (бесплатный).
  • CodePro Analytix (бесплатный).
  • PMD (бесплатный)
  • Motodev App Validator (бесплатный). Входит в состав среды разработки MOTODEV Studio for Android. Есть online вариант.
  • Klocwork Solo (платный). Доступна триальная версия
  • JTest от Parasoft (платный).
  • Julia (платный). Доступен бесплатный online вариант.
Далее представлены результаты сравнения всех этих анализаторов - какой анализатор что умеет, для чего предназначен, насколько удобно пользоваться, какие ошибки находит, насколько он полезен на практике.

Чтобы было интереснее сравнивать, я "натравил" каждый из этих анализаторов на одно и то же тестовое приложение. В качестве такового я взял код одной из ранних версий моего приложения Animated Widget Contact Launcher. Версию я выбрал годичной давности, багов и проблем в ней было вагон (с FindBugs на тот момент я был не знаком). Так что "что поискать" в ней точно было.

суббота, 17 декабря 2011 г.

Диалог выбора на Android или контекстное меню с картинками.

Задача выбора элемента из списка возникает в Android-приложениях регулярно. В принципе, для выбора элемента можно воспользоваться стандартным контекстным меню. Но у контекстного меню есть ряд ограничений:
  • В контекстном меню функции вызова (onCreateContextMenu) и обработки результатов(onContextItemSelected) реализуются в Activity.
  • Нельзя выбрать несколько элементов.
  • В контекстном меню показывается только название элемента. Картинки не отображаются.
Наиболее напрягает необходимость реализации функций в Activity. Типичная ситуация - вам нужна вспомогательная функция, которая предлагает пользователю что-нибудь выбрать из списка и затем выполняет действие над выбранным элементом. Такая функция может вызываться из множества разных Activity. И что, мне в каждой Activity реализовывать функции onCreateContextMenu и onContextItemSelected? Так не пойдет.

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

пятница, 28 октября 2011 г.

Три недели в Као-Лаке.Отдых в Таиланде в октябре 2011.

Несколько дней назад вернулся из Таиланда. Отдыхали всей семьей в курортном городе Као-Лак (Khaolak, 80 км от Пхукета) в течении трех недель. Отдохнули хорошо, хотя и не без проблем.

Путешествовали мы самостоятельно, без турагентства. На Као-Лак летели через Бангкок. Из Бангкока мы успели уехать до начала наводнения, так что обошлось без экстрима.

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