Недавно мой знакомый попросил меня ответить на несколько вопросов по продвижению приложений для Android. Мы договорлись, что я напишу пост. За последний год у меня сложилось определенное впечатление о работе на рынке Android Market. С удовольствием поделюсь своим мнением. Надеюсь, что мой опыт будет полезен разработчикам. Буду рад, если пост породит конструктивную дискуссию.
Антон @jRon
Пользователь
Рекомендации к стилю кода
9 мин
172KПеревод
Правила языка Java
Мы следуем стандартным соглашениям по оформлению кода на Java. Мы добавили к ним некоторые правила:
- Исключения: никогда не перехватывайте и не игнорируйте их без объяснения.
- Исключения: не используйте обобщенные исключения, кроме кода в библиотеках, в корне стека.
- Финализаторы: не используйте их.
- Импорты: полностью уточняйте импорты.
+28
HTML в PDF
2 мин
120KВ далеком 2008 году уже была написана подобная статья и я попытался применить знания, но, к сожалению, не справился с русским языком (на denwer-е работал, на хостинге нет). Возможно сказалось отсутствие опыта. А недавно нашел хорошую библиотеку и решил поделиться. Топик, скорее всего, адресован начинающим программистом и ни на, что не претендует.
+114
Использование Android Search Dialog. Часть 3 — Custom Suggestions
15 мин
12KЭто заключительная статья по использованию Android Search Dialog (предыдущие находятся здесь и здесь). В ней я расскажу, как добавить в диалог динамические подсказки к поиску, а также, как интегрировать поиск по вашему приложению в системный Quick Search Box (QSB). Преимущество QSB в том, что с его помощью можно получать информацию из практически любого места в OS.
+6
Стандарт разработки приложений под Android
3 мин
17KРазработчик Андроида сталкивается с большим количеством файлов и ресурсов предназначенных для разных частей программы. Даже он сам через месяц не может вспомнить, какой файл или ресурс к чему относится.
Предлагаемый ниже материал основан на моем опыте разработок многих проектов для Андроида и опробован уже в нескольких проектах. В результате простых правил нагромождение файлов и ресурсов превращается в удобочитаемый проект, экономит время и нервы. Особенно оказалось удобным при работе в команде, когда к проекту могут присоединяться новые программисты. В Eclipse вы легко находите любые ресурсы, поскольку они становятся уникальными, легко находимыми и сортируются в понятном порядке в любых списках. Общие удобные правила позволяют легко читать чужой код и находить нужные ресурсы.
Большинство из указанного является моими личным мнением.
Предлагаемый ниже материал основан на моем опыте разработок многих проектов для Андроида и опробован уже в нескольких проектах. В результате простых правил нагромождение файлов и ресурсов превращается в удобочитаемый проект, экономит время и нервы. Особенно оказалось удобным при работе в команде, когда к проекту могут присоединяться новые программисты. В Eclipse вы легко находите любые ресурсы, поскольку они становятся уникальными, легко находимыми и сортируются в понятном порядке в любых списках. Общие удобные правила позволяют легко читать чужой код и находить нужные ресурсы.
Большинство из указанного является моими личным мнением.
+29
Работа с прогресс диалогами
5 мин
4KУ начинающих работать с андроидом возникают вопросы по поводу создания прогресс диалогов. Моя заметка возможно поможет им.
Создать и запустить диалог можно несколькими способами, но всех их объединяет одно: все изменения видимой части пользовательского интерфейса после создания Activity должны происходить в специальном потоке. Многие об этом забывают и потом удивляются, почему не происходит видимых изменений. Простейший вариант это вызов следующей конструкции:
или для View:
Ваши команды на изменение ставятся в очередь и в определенный момент вызываются Activity. Преимущество есть, хотя на первый взгляд не очевидно. Программа перестает тормозить при каждом изменении интерфейса, все перерисовки проходят как бы фоново, программа не подвисает при исполнении каких то вычислительных задач связанных одновременно с рассчетами/загрузкой и с отображение хода процесса. С другой стороны это немного усложняет код.
Создать и запустить диалог можно несколькими способами, но всех их объединяет одно: все изменения видимой части пользовательского интерфейса после создания Activity должны происходить в специальном потоке. Многие об этом забывают и потом удивляются, почему не происходит видимых изменений. Простейший вариант это вызов следующей конструкции:
вашаАктивити.runOnUiThread(new Runnable() {
@Override
public void run() {
// Изменение видимой части
}
});
или для View:
вашеВию.post(new Runnable() {
@Override
public void run() {
// Изменение видимой части
}
});
Ваши команды на изменение ставятся в очередь и в определенный момент вызываются Activity. Преимущество есть, хотя на первый взгляд не очевидно. Программа перестает тормозить при каждом изменении интерфейса, все перерисовки проходят как бы фоново, программа не подвисает при исполнении каких то вычислительных задач связанных одновременно с рассчетами/загрузкой и с отображение хода процесса. С другой стороны это немного усложняет код.
+36
+188
Игровой контроллер для ПК на Android
7 мин
10KВсем привет! В данной статье я хочу рассказать о том, как можно сделать из своего Adndroid смартфона игровой контроллер (в простонародье — джойстик) для обычного ПК, а именно руль.
Поведение руля будет эмулироваться с помощью акселерометра. Для этого ведется непрерывное сканирование пространственных координат и эмпирическим путем подбираются границы для каждого направления движения. Исходя из этих данных в реальном времени генерируются сочетания игровых клавиш. Например: W — вперед, WA — вперед и влево и т. д.
Для доставки этих данных на ПК должен быть запущен сервер, который принимает входящие команды и эмулирует нажатия соответствующих клавиш. Сервер можно сделать однопоточным, чтобы подключался только один смартфон. Соединение будет осуществляться по Wi-Fi.
Описание задачи
Поведение руля будет эмулироваться с помощью акселерометра. Для этого ведется непрерывное сканирование пространственных координат и эмпирическим путем подбираются границы для каждого направления движения. Исходя из этих данных в реальном времени генерируются сочетания игровых клавиш. Например: W — вперед, WA — вперед и влево и т. д.
Для доставки этих данных на ПК должен быть запущен сервер, который принимает входящие команды и эмулирует нажатия соответствующих клавиш. Сервер можно сделать однопоточным, чтобы подключался только один смартфон. Соединение будет осуществляться по Wi-Fi.
+47
Реверс-инжиниринг android приложений
9 мин
112K+79
Пишем своё первое приложение на Android
10 мин
1.8MПредисловие
Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
+108
76 новых материалов на русском
3 мин
1.6KНедавно был снова обновлен центр по Internet Explorer на MSDN. Были добавлены 76 статей и книг, посвященных следующим темам:
Полный список материалов со ссылками под катом
+30
AndroidDev #1. Создаем файловый менеджер
10 мин
71KAndroid — перспективная и динамично развивающаяся операционная система. И многие программисты хотят научиться программировать приложения для OS Android, но беглый поиск структурированных материалов в сети Интернет и, в частности, Рунете, приводит их в ступор. Действительно, до сих пор существует проблема поиска обучающих статей (особенно на русском языке) по разработке приложений для этой весьма популярной операционной системы.
Ну, что ж, будем потихоньку улучшать данную ситуацию при помощи Хабра.
Сразу предупрежу, что материалы предназначены для тех, кто не имеет опыта разработки приложений для Android, но очень-очень хочет этот опыт приобрести.
+82
Самый простой способ создать трафик на сетевом интерфейсе
1 мин
34KЕсть программа iperf, которая позволяет проверять скорость интерфейсов (у меня на тестах из 10G интерфейса она выжимала 9.37 Гбит/с).
Пакет (в дебиане и убунте) так и называется — iperf.
Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто
На клиентской части пишем
Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем
Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.
Пакет (в дебиане и убунте) так и называется — iperf.
Применение очень простое: на одном сервере запускаете iperf -s X.X.X.X (свой собственный адрес сервера, на котором слушать). Можно запустить просто
iperf -s
, тогда слушать будет на всех интерфейсах.На клиентской части пишем
iperf -c X.X.X.X
(адрес сервера из предыдущего этапа). Клиент подключается, работает 10 с и показывает скорость работы канала.Пример: сервер имеет адрес 192.0.2.1, клиент 192.0.2.200. На сервере запускаем
iperf -s 192.0.2.1
на клиенте iperf -c 192.0.2.1
.Для того, чтобы сделать много байтов (привет хостерам с соотношениями) нужно просто указать опцию -t (время в секундах). Многие гигабайты трафика в нужном направлении вам обеспечены. С учётом текущих тарифов для дома — можно даже с домашней машины, за 3-4 часика можно выправить любое соотношение с минимальной нагрузкой как на сервер, так и на клиента.
+42
Авторизация пользователей через Mail.Ru API: большой эффект маленькой кнопки
5 мин
30KПривет, с вами снова команда Платформы@Mail.Ru!
В предыдущем посте мы рассказывали о различных социальных плагинах Моего Мира, а также сравнивали их эффективность на примере собственных проектов портала.
Настало время поговорить о других возможностях Mail.Ru API, возможностях более тесной интеграции сайтов с социальной сетью. И, конечно же, дело снова не обойдется без кейсов – уже кейсов независимых проектов с реальными показателями эффективности.
Поехали!
В предыдущем посте мы рассказывали о различных социальных плагинах Моего Мира, а также сравнивали их эффективность на примере собственных проектов портала.
Настало время поговорить о других возможностях Mail.Ru API, возможностях более тесной интеграции сайтов с социальной сетью. И, конечно же, дело снова не обойдется без кейсов – уже кейсов независимых проектов с реальными показателями эффективности.
Поехали!
+27
C# for beginners. Лекция 2. Hello, World! и знакомство с Visual C# Express 2010
1 мин
5.6KПрежде всего, хотелось бы поблагодарить arinoki за публикацию первой лекции видеокурса, который вызвал большой интерес среди хабрапользователей. Благодаря вашим голосам, я могу выкладывать новые лекции от своего имени, а, прочитав комментарии я понял, что тема программирования на С# очень актуальна, а значит я буду и дальше стараться для вас и публиковать новые лекции.
Вышла вторая лекция видеокурса для начинающих программировать на C#. Вы познакомитесь со средой разработки приложений Visual C# Express, а также напишете свое первое
Разбор синтаксиса языка C# начнется уже в следующей лекции!
А теперь — по теме:
Вышла вторая лекция видеокурса для начинающих программировать на C#. Вы познакомитесь со средой разработки приложений Visual C# Express, а также напишете свое первое
"Hello, World!"
приложение. Также для студентов прилагается еще некоторая полезная информация. Приятного просмотра!Разбор синтаксиса языка C# начнется уже в следующей лекции!
-1
Рейтинг языков программирования (октябрь, 2010 год)
2 мин
8.4KГолландская компания TIOBE представила очередной рейтинг языков программирования. Рейтинг строится по данным популярных поисковых систем о количестве разработчиков и компаний, использующих язык, а также о количестве обучающих курсов по этому языку.
Что нового в октябрьском рейтинге? В первую очередь это быстро набирающий обороты Objective-C от Apple, который набрал 2.54% за год, и стремится стать языком 2010 года. Появление в первой двадцатке языка Go уже было в начале этого года. И не просто появление — он стал языком 2009 года по версии TIOBE. Сейчас он сместился с 13 места (данные на январь 2010) на 20 место, но продолжает активно собирать последователей.
Помимо языков от Google и Apple в 2009 высокого уровня достигли C# от Microsoft и Actionscript от Adobe. Что касается Java, то он по прежнему остался на первой строчке, хотя его популярность продолжает падать, а Си снова медленно, но верно идёт к первому месту.
Интересно также неожиданное падение популярности PHP, и JavaScript. Если ситуация с PHP еще более-менее понятна, то что касается повсеместно используемого JavaScript — непонятно откуда такое падение рейтинга.
Пожалуй, самое удивительное — появление в двадцатке легендарного военного американского языка Ada, интерес к которому вознёс его аж на 17 строчку рейтинга (по сравнению с 29 местом год назад).
Что нового в октябрьском рейтинге? В первую очередь это быстро набирающий обороты Objective-C от Apple, который набрал 2.54% за год, и стремится стать языком 2010 года. Появление в первой двадцатке языка Go уже было в начале этого года. И не просто появление — он стал языком 2009 года по версии TIOBE. Сейчас он сместился с 13 места (данные на январь 2010) на 20 место, но продолжает активно собирать последователей.
Помимо языков от Google и Apple в 2009 высокого уровня достигли C# от Microsoft и Actionscript от Adobe. Что касается Java, то он по прежнему остался на первой строчке, хотя его популярность продолжает падать, а Си снова медленно, но верно идёт к первому месту.
Интересно также неожиданное падение популярности PHP, и JavaScript. Если ситуация с PHP еще более-менее понятна, то что касается повсеместно используемого JavaScript — непонятно откуда такое падение рейтинга.
Пожалуй, самое удивительное — появление в двадцатке легендарного военного американского языка Ada, интерес к которому вознёс его аж на 17 строчку рейтинга (по сравнению с 29 местом год назад).
+28
Ликвидатор велосипедов: часть 2
3 мин
34K Исходя из того, что первая статья насобирала много плюсов и попала в избранное большого количества человек, я понял что тема актуальна и во-первых призываю подтянуться сообщество (ведь я не могу знать абсолютно все библиотеки и решения), а во-вторых буду продолжать своими силами рассказывать о том какие библиотеки можно подтянуть, если необходимо что-то сделать вместо того чтобы делать все новые и новые велосипеды, состоящие из водопроводных труб.
В этом топике я затрону важную для многих тему — тему рисования графиков в платформе .NET. Вспомните: ведь наверняка когда-то было просто необходимо вывести на экран красивый график… И что происходило? Правильно, появлялся новый велосипед.
Часть первая из серии
В этом топике я затрону важную для многих тему — тему рисования графиков в платформе .NET. Вспомните: ведь наверняка когда-то было просто необходимо вывести на экран красивый график… И что происходило? Правильно, появлялся новый велосипед.
Часть первая из серии
+57
jQuickForm = генератор форм на PHP (большое обновление)
8 мин
11KПрошло несколько дней с публикации анонса о появлении на свет jQuickForm (если в двух словах, то jQuickForm это сборка jQuery + HTML_QuickForm2).
Была получено масса положительных отзывов, в т.ч. в личку, много посетителей сайта проекта сказали «LikeIt», а это говорит о том, работа нужная и своевременная.
Итак, сегодня я хочу сказать о том, что на данный момент практически все явные и потайные возможности jQuickForm описаны, а это ни много, ни мало:
Элементы
InputText, InputPassword, Date (выбор даты, состоящий из нескольких элементов типа select), DatePicker (jQueryUI), Slider (jQueryUI — «ползунок»), SliderRange (jQueryUI — диапазон значений), Select, Buttons, Textarea, Page (элемент для построения многостраничного мастера), Static (элемент формы для вставки произвольного HTML), jWysiwyg (простейший редактор), Autocomplete One Array (автокомплит с единственным значением и инициализацией при помощи передачи массива), Autocomplete One Remote (то же самое, но источник — аякс-скрипт), Autocomplete Multiple Array (автокомплит с множеством значений через запятую, используется, например, для формирования списка веб2.0 меток, источник — массив), Autocomplete Multiple Remote (тоже самое с удаленным источником), File Upload (обычный элемент загрузки файлов), и, по заявкам телезрителей — File MultiUpload
+49
WEBO Pulsar — проверь доступность сайта
4 мин
1.2KСпешу порадовать любителей быстрых и доступных сайтов. Теперь проверить время ответа сервера и доступен ли сайт вообще можно в полностью автоматическом режиме - при помощи сервиса WEBO Pulsar.
Если совсем кратко, то WEBO Pulsar — аналогия Pingdom, только на территории РФ и отдающая верное время серверных (а не сетевых) задержек. Если чуть подробнее, то доступность сайта можно проверять по протоколам HTTP/HTTPS методами HEAD/GET/POST с частотой от раза в сутки до раза в минуту. И стоимость одной проверки — порядка 0,3 копеек.
Если совсем кратко, то WEBO Pulsar — аналогия Pingdom, только на территории РФ и отдающая верное время серверных (а не сетевых) задержек. Если чуть подробнее, то доступность сайта можно проверять по протоколам HTTP/HTTPS методами HEAD/GET/POST с частотой от раза в сутки до раза в минуту. И стоимость одной проверки — порядка 0,3 копеек.
+25
Плагин для всплывающих подсказок Simpletip
2 мин
14KМинусы jQuery Tools Tooltip, плюсы SimpleTip, а так же немного о том, как решить некоторые проблемы его использования.
+49
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Server Administrator, Database Administrator
Senior