Search
Write a publication
Pull to refresh
46
0
Артур Терменжи @ara89

User

Send message

Правильная проверка XML данных в java-проектах

Reading time5 min
Views20K
Привет, %username%.

В ряде проектов мне потребовалось сравнивать XML данные в тестах.

Действительно, бывает, что результат работы твоего модуля — XML данные. Если это так, то как они генерятся нужно проверять в соответствии с принципами TDD. Я же в свою очередь стараюсь их придерживаться при разработке.

Под катом я постараюсь рассказать о том, как лучше всего, по моему мнению, тестировать генерацию XML в коде. В качестве инструмента сравнения XML я использовал XmlUnit.
Читать дальше →

Произносим правильно

Reading time2 min
Views153K
Из знакомых мне айтишников очень немногие стараются правильно произносить английские слова. Конечно, привычнее произносить C++ как «си-плюс-плюс», а не «си-плас-плас» или «опен-бэ-эс-дэ», а не «оупэн-би-эс-ди».
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.

В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.

♫ — прослушать произношение в словаре
► — прослушать произношение на youtube

Начнем с названий:
ABBYY аби
Adobe эдоуби [əˈdəʋbɪ]
Apache эпэчи [əˈpætʃiː] от «a-patchy»
Asus офиц. э́сус
амер. э́йсус

 
BenQ бенкью
Cisco сискоу [ˈsɪskoʊ]
EBay ибэй
Eee PC и писи
Ethernet изэрнэт [ˈiθərˌnɛt]
Itanium айтэйниум [aɪˈteɪniəm]
Juniper джу́нэпэр [ˈdʒunəpər]
LaTeX лэйтех
лэйтек
латех
латек
[ˈleɪtɛk]
['leɪtɛx]
[ˈlɑːtɛx]
[ˈlɑːtɛk]
Linux офиц. линэкс
вар. линукс
[ˈlɪnəks]
[ˈlɪnʊks]

 
Mac OS X мэк оу-эс тэн
MySQL офиц. май-эс-кью-эл
вар. май-сиквел
как «My Ess Que Ell», см. оф. сайт
nginx энджин-икс (от engine-x)
PuTTY пати [ˈpʌtɪ] см. оф. сайт
Qt кьют [kyut] см.
TeX тех
тек
[ˈtɛx]
[tɛk]
не «текс»
XBox 360 экс-бокс фри сискти
Xen зен [ˈzɛn]
Xeon зион
Xerox зирокс [ˈzɪərɒks]
Xilinx зайлинкс [ˌzaɪliːŋks]
ZyXel рус. зайксел
амер. зайзел
см.


Аббревиатуры:
GNU гну вар. гню
GWT гвит [ˈɡwɪt]
ICANN айкэн
IEEE ай-трипл-и как «I triple E»
ISO айсо
PNG пинг [ˈpɪŋ] как «ping», см. спецификацию
PXE пикси [ˈpɪksi]
RUP рап
SCSI скази ['skʌzi]
SOAP соуп [soʊp]
SQL эс-кью-эл [ˈɛsˈkjuˈɛl] неофиц. «сикуел»
SWF свиф [ˈswɪf] см. спецификацию
WYSIWYG визивиг [ˈwɪziˌwɪg]
XAML зэмл [ˈzæməl]
XUL зул [ˈzuːl]
Yii длинное «и» [ji:]

Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.

Обычные слова дальше

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views95K
Читать дальше →

Android Emulator и локальный веб-сервер (Denwer)

Reading time2 min
Views20K
imageЯ продолжу делиться некоторыми кейсами разработки под Android и теперь хочу рассказать о том, как просто заставить работать приложение, запущенное в эмуляторе, с вашим же серверным API, которое лежит на локальном веб-сервере. Простыми словами — как общаться приложению из эмулятора по http с localhost. Это не советы профессионала, а не более чем пример конкретного рабочего решения.
Читать дальше →

Правильная работа с БД в Android

Reading time7 min
Views154K
Приветствую всех дроидеров в эти непростые для нас времена.
Честно говоря, заколебала эта шумиха о патентах, войнах и т.д., но в данной статье речь пойдет не об этом.
Я не собирался писать статью на данную тему, так как везде всего полно о работе с базой данных в Android и вроде бы все просто, но уж очень надоело получать репорты об ошибках, ошибках специфичных и связанных с БД.
Поэтому, я рассматрю пару моментов с которыми я столкнулся на практике, чтобы предостеречь людей, которым только предстоит с этим разбираться, а дальше жду ваших комментариев на тему решения указанных проблем после чего внесу изменения в пост и мы сделаем отличный туториал, который будет образцом работы с SQLite в Android не только для начинающих, но и для тех, кто уже знаком с основами и написал простые приложения.
Читать дальше →

Иконифицированное окно настроек (Preferences)

Reading time4 min
Views6.3K
Все видели настройки в Android аппаратах — меню с иконками. Это стандартный PreferencesActivity, только вот стандартными функциями Андроида такого эффекта достичь невозможно.
Что бы получить такой внешний вид, используем код, позаимствованный из системного приложения Settings.apk, благо open-source это позволяет сделать.



И так, нам понадобится:
1. Класс IconPreferenceScreen.java;
2. Файл attrs.xml в папке values;
3. Лэйаут preference_icon.xml;
4. Свой класс PreferencesActivity.java;
5. Файл с настройками приложения preferences.xml

Читать дальше →

Карты в вашем Android-приложении

Reading time3 min
Views11K


Довольно часто перед разработчиком мобильного приложения возникает необходимость отобразить что либо на карте. Какие же варианты есть у разработчика?

Я рассматривал два варианта.
Читать дальше →

Разработка производительных приложений

Reading time9 min
Views5.7K

Производительные приложения



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

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

Что нужно знать Android-разработчику

Reading time7 min
Views57K
imageБуквально месяц назад на Хабре появился топик примерно с таким же названием и посвящалась она начинающим программистам, разжевывая некоторые особенности разработки под эту платформу. Еще тогда я подумал о написании этой статьи, так как показалось, что подходить к началу работы в новой среде лучше с другой стороны. А именно, с более философской. Чтобы не набивать шишки всегда лучше использовать чужой опыт, которым с вами и делюсь.

Прошлым летом совершенно неожиданно для себя я приобрел смартфон Nexus One. Своей покупкой был страшно доволен и подолгу ковырялся в его софтовой начинке, восхищаясь продуманностью системы. Поскольку я уже давно являюсь разработчиком игр, захотелось смастерить что-то свое и для этого устройства. После достаточно плотного изучения платформы, чтения специальной литературы, появились и первые ласточки в виде различных украшательств экрана. Надо заметить, что несмотря на то, что я с java никогда серьезно не работал, язык показался легко осваиваемым и интуитивно понятным. Очень сильно помогла и документация от Гугла. Все это в совокупности вселяло надежды на успешную разработку первого серьезного проекта, дизайн которого уже начал складываться с первых шагов изучения Android. Энтузиазма добавил и тот факт, что после пробного выкладывания приложения с живыми обоями на маркет за первые сутки его скачало почти тысяча пользователей. В голове завертелись мысли о коммерческих проектах и «легкой наживе».

Это была лирично-оптимистичная преамбула, а теперь перейдем к реальной действительности.
Читать дальше →

Сравнение потребления памяти у разных структур хранения данных

Reading time2 min
Views26K
Различные структуры в Java потребляют разное количество памяти. Поэтому для нас очень важен выбор наиболее эффективного метода хранения данных.

Какая будет разница по потреблению памяти между конструкциями `new int[1024]` и `new Integer[1024]`?

int[] ints = new int[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;

Integer[] ints = new Integer[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;

Узнать

Оценка сложности задач

Reading time2 min
Views13K

Оценка задач


При оценке сложности задач очень часто сложно выдать абсолютную оценку. Гораздо легче оценить относительный размер двух задач, т.е., например, сказать, что задача А в два раза больше задачи Б.
При agile-процессе разработки приходится оценивать много пользовательских историй.
Используя попарное сравнение снижается погрешность в определении оценок, и более того, эту погрешность можно вычислить.
Читать дальше →

RoboGuice или «Андроид подсел на инъекции»

Reading time8 min
Views12K
imageRoboGuice — это библиотека, которая позволяет пользоваться всеми преимуществами Contexts and Dependency Injection при разработке приложений на Андроиде.
Как несложно догадаться, RoboGuice основан на Google Guice.
Сразу оговорюсь, что в качестве перевода слова «injection» я буду использовать слово «инъекция».

Зачем колоться?


Думаю, что у многих читателей сразу возникнет вопрос: «Зачем эти сложности с CDI на мобильной платформе? Наверняка это всё занимает много места и медленно работает.»
Попробую убедить таких читателей в обратном, а именно в том, что CDI на мобильной платформе очень даже жизнеспособен и существенно облегчает жизнь разработчикам.
Читать дальше →

Регистрация глобальных нажатий клавиш с использованием JNA

Reading time15 min
Views12K
Здравствуйте, в этой статье я расскажу вам как регистрировать глобальные нажатия клавиш из Java под Windows, Linux, BSD и Mac OSX с использованием отличной библиотеки JNA.

Для чего нужен JNA


Java с десктопом дружит сложно, для некоторых вещей нужно писать мосты для взаимодействия с операционной системой. Одной из таких функциональностей являются глобальные хоткеи, весьма популярные в аудио плеерах, когда даже в скрытом состоянии программой можно управлять с помощью определенных сочетаний клавиш или медиа-кнопок. На помощь приходит JNA — надстройка над jni и libffi для вызова нативных библиотек, она поддерживает почти все популярные платформы, разрабатывается уже долгое время и весьма стабильна.

Для джавы уже есть несколько достаточно стабильных библиотек для всех платформ: JIntelliType для Windows, которая даже поддерживает медиа-кнопки, JXGrabKey для систем Linux, и ossuport-connector для Mac OSX. Однако, все они используют jni, имеют разный интерфейс, и с библиотеками на jni не всегда удобно работать, потому что нужно прописывать пути к нативным библиотекам, разбираться с разрядностью системы и пр. Плюс это будет интересным упражнением по использованию JNA, потому что эту задачу можно сделать полностью на java достаточно малыми усилиями и получить легко поддерживаемый кроссплатформенный код.
Читать дальше →

Пишем приложение под Android с поддержкой Cloud to Device Messaging (C2DM)

Reading time15 min
Views36K


Здравствуйте, читатели Хабрахабр!

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

Хотя C2DM является одной из фундаментальных возможностей платформы Android, информации о нем в рунете мало. Попытка изменить данную ситуацию и является одной из задач этого поста.

Под катом я расскажу, как написать простые клиентское и серверное приложения, покажу некоторые «подводные камни», а также дам ссылки на примеры кода.

Читать дальше →

Будущее гибкой разработки ПО

Reading time14 min
Views21K

Программное обеспечение проникает во все щели человеческого общества. Мы узнаем погоду через интернет, а не через обычный градусник за окном. Мы едем по новому адресу с навигатором, а не ищем квадрат G7 на странице 59. Мы включаем RunKeeper, когда катаемся на велосипеде, чтобы узнать среднюю скорость и похвастаться в твиттере. Мы используем софт каждый день. Наверное, бОльшую часть жизни мы уже проводим в обнимку с любимыми гаджетами и программным обеспечением, а не с любимым человеком.

Проблема в том, что никто не знает, как на самом деле писать классный софт быстро и правильно. Waterfall благополучно скончался на рубеже веков, а новые методы разработки (agile) пока не могут решить фундаментальные проблемы.
Узнать, что нам всем делать и как с этим жить

Помещаем файлы из Assets на SD-карту с помощью Infles

Reading time8 min
Views8.6K
Доброго времени суток, Хабравчане!

Описание:


Почти все пользователи ОС Android знают практику приложений использовать файлы с SD карты.
Большинство приложений скачивают с интернета эти файлы и помещают их в свою папку, но не у всех пользователей есть возможность скачивать их из сети и не у всех разработчиков содержать свой сервер, а вручную копировать файлы, согласитесь, неудобно.
Поэтому что бы упростить всем жизнь и была написана программа «Infles», она распространяется бесплатно с открытым исходным кодом и по лицензии MIT. Программа позволяет в 1 клик установить необходимые файлы в указанную в настройках папку на SD карте. Для этого необходимо поместить их в папку «assets», в коде в файле "\Infles\src\ru\boomik\infles\InflesActivity.java" в переменной «COPY_DIR» указать путь на карте памяти и скомпилировать программу.

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



Читать дальше →

Стандарт разработки приложений под Android

Reading time3 min
Views18K
Разработчик Андроида сталкивается с большим количеством файлов и ресурсов предназначенных для разных частей программы. Даже он сам через месяц не может вспомнить, какой файл или ресурс к чему относится.
Предлагаемый ниже материал основан на моем опыте разработок многих проектов для Андроида и опробован уже в нескольких проектах. В результате простых правил нагромождение файлов и ресурсов превращается в удобочитаемый проект, экономит время и нервы. Особенно оказалось удобным при работе в команде, когда к проекту могут присоединяться новые программисты. В Eclipse вы легко находите любые ресурсы, поскольку они становятся уникальными, легко находимыми и сортируются в понятном порядке в любых списках. Общие удобные правила позволяют легко читать чужой код и находить нужные ресурсы.

Большинство из указанного является моими личным мнением.

Читать дальше →

Развертывание приложений Play! framework в Google AppEngine

Reading time3 min
Views5.1K


Play! framework набирает популярность и на Хабре уже есть следующие топики:
Отличный Java MVC фреймворк — Play Framework
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 2)
Мои 5 любимых фишечек в Play Framework

Одна из замечательных возможностей Play! — развертывание приложения в облачную инфраструктуру App Engine от Google.

На приложения, которые исполняются в GAE накладываются довольно жесткие (по сравнению с обычными Play! приложениями) ограничения, в основном, это связано с модулем сохранения данных (JPA / Hibernate). Для того, чтобы приложение без проблем заработало в GAE следует отказаться от JPASupport/Model хелперов и использовать только базовые возможности JPA.
Альтернативой также может стать использование модуля Siena.

В данном топике я пошагово опишу процесс развертывания приложения Play! в Google AppEngine.
Процесс установки и использования описан применительно к ОС Linux, но существенных различий при использования других ОС возникнуть не должно.
Читать дальше →

10 способов улучшить свои навыки программирования

Reading time4 min
Views89K

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

Читать дальше →

Автоматизированное тестирование мобильных приложений

Reading time6 min
Views50K
Я провел настоящее исследование ситуации с автоматизированным тестированием интерфейса мобильных приложений. Речь идет не о тестировании модулей, а именно о тестировании интерфейса финального приложения. И, да, прямо на телефоне!

Зачем это нужно? В первую очередь, для гарантированного улучшения качества вашего ПО и улучшении настроения тестировщиков.

В чем идея? Чаще всего тестирование мобильных приложений осуществляется людьми: тестировщик берет приложение, iPhone 3, iPhone 4, iPad, если ему не повезло, то еще берет пару андроидов и GalaxyTab, и тестирует ваше приложение, 80% тестирования составляют примерно такие сценарии:
— запустить приложение, убедиться, что оно не падает;
— перейти на вкладку места, убедиться, что все пункты на месте;
— зайти в один из пунктов, убедиться, что описание на месте;


Такие тесты проводятся после каждого релиза и занимают очень много времени.

В свое время в вебе на помощь пришел Selenium, который позволил через специальный плагин к браузеру записывать действия тестировщика (все помнят макросы в MS Word?) и затем проигрывать их автоматически с проверкой результата. Можно запускать тесты даже на разных браузерах! Мы использовали это решение в своей компании, и оно, действительно, работает. Усилия на разработку тестов окупились.

По сравнению с вебом мобильная разработка еще очень молодая область, и я не ожидал увидеть хороших решений для автоматизированного тестирования интерфейсов. Оказалось, что их более чем достаточно. Хочу рассказать вам о некоторых из них.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity