Обновить
12
0
Юрий Кучанов@kuchanov

Разработчик под Android

Отправить сообщение

Тестирование на Android: Robolectric + Jenkins + JaСoСo

Время на прочтение5 мин
Охват и читатели30K
Тестирование Android приложений — тема большая и емкая, говорить о ней можно бесконечно. Мы в Rambler&Co автотесты любим, пишем и активно используем для всех наших приложений. В данной статье мы расскажем, как получать и анализировать результаты тестирования android (и не только) приложений. Покажем как настроить Robolectric, JaCoCo и Jenkins, чтобы было вот так:


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

Публикация Android библиотеки в jCenter

Время на прочтение8 мин
Охват и читатели19K


В жизни каждого андроид разработчика настаёт момент, когда количество самописных утилит и хелперов, качующих из проекта в проект, переваливает за десяток. В этом случае хорошей практикой будет оформление подобных хелперов в виде самостоятельных «модулей» в терминах Android Studio. Еще лучше, если Вы собираетесь поделиться Вашими наработками с комьюнити, снабдив исходный код подходящей лицензией. Но просто залить исходники на GitHub в этом случае будет недостаточно – хочется, чтобы любой желающий мог подключить библиотеку с помощью однострочной Gradle зависимости, например такой:

dependencies {
   compile 'com.github.romangromov:simpleprefs:0.0.8'
}

О том, как этого добиться и пойдет речь в данной статье.
Читать дальше →

Intel INDE Multi-OS Engine

Время на прочтение4 мин
Охват и читатели16K
Не так давно, в начале августа, на конференции Android Developer Conference (Andevcon) 2015, проходившей в Бостоне, корпорация Intel анонсировала INDE Multi-OS Engine — фреймворк для разработки нативных кроссплатформенных приложений на Java.

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

Как научиться делать игры: полезные ресурсы

Время на прочтение9 мин
Охват и читатели111K
Когда я начинал строить свою карьеру в игровой индустрии шесть лет назад, то часто задавался вопросами по геймдеву. Начиная от поиска общего понимания того, как разрабатываются и оперируются онлайн-игры, до частных вопросов типа того, как лучше рекламировать конкретную игру. Тогда было мало структурированной информации по созданию и продвижению игр, новичку разобраться и найти ответы было исключительно сложно. Практически единственным источником информации был собственный опыт и консультации более опытных коллег. Сейчас ситуация кардинально изменилась. Информации по игровой индустрии настолько много, что рискуешь в ней просто утонуть. Для того, чтобы упростить процесс получения нужных мне знаний, я структурировал и делал себе пометки по всем источникам информации о геймдеве. Далее в статье предлагаю всю эту информацию в удобной форме для общего пользования.

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

Зарабатывающая идея реального форекс-робота

Время на прочтение10 мин
Охват и читатели122K
Общеизвестно, что заработать на форекс невозможно. Изменения курсов валют носят случайный характер, а комиссия брокера уменьшает вероятность положительного итогового заработка, часто делая ее совсем непривлекательной, ― ниже, чем в казино, например. Тем не менее, я содержу себя и свои проекты исключительно за счет форекс уже три года, я шел к этому около 7 лет и, вспоминая этот путь, решил написать заметку для тех, кого привлекает эта антинаучная возможность заработка.

Речь пойдет не о чудесных Граалях, продаваемых в интернете, не о высокочастотной торговле и не о «безрисковых» вложениях в мифические ТОП-20 лучших трейдеров. Только хардкор: мы проводим многочисленные торговые операции, кто-то вручную, кто-то ― автоматически, и получаем в результате этих операций положительный прирост счета при статистически значимом количестве сделок.
Читать дальше →

Технокнига, часть 2: литература по СУБД, разработке фронтенда, проектированию интерфейсов и углубленному программированию на Java

Время на прочтение11 мин
Охват и читатели46K


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

[ libGDX ] Опыт разработки игры с использованием Box2D

Время на прочтение5 мин
Охват и читатели21K
Здравствуй, Хабр! Ух! Давно же я не писал здесь. Итак, начну пожалуй с небольшой предыстории и заодно приведу скриншот получившейся игры.

TOTAL100
Скриншот игрового процесса
Читать дальше →

Cколько инсталлов нужно для ТОП App Store

Время на прочтение3 мин
Охват и читатели19K
Совсем недавно я уже писал о том, сколько нужно получить загрузок для ТОП-10 бесплатных игр App Store. Сегодня хочу продолжить эту тему и рассказать о более значительных рубежах в рейтингах онлайн-магазина от Apple, а также о том сколько органических инсталлов можно получить с самых высоких позиций. Мне правда, так и не удалось поднять на первое место общего ТОПа, но я был к этому очень близок, и помешала мне только компания Viber. В общем дело было так:

На 31 августа был запланирован релиз моей игры 1-2-3-4 Premium. В российском App Store она стала видна на день раньше в 21:00 по московскому времени, и тут же началась активная PR-кампания. В ТОП-10 игр удалось попасть уже к 14:00, и для этого, как и в прошлый раз мне понадобилось около 6000 загрузок, которые, правда, на этот раз удалось сделать менее чем за сутки, потратив около 500 долларов.

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

Отправка сообщений через API VK средствами PHP для ленивых

Время на прочтение3 мин
Охват и читатели128K
Что мы будем делать: настроим отправку сообщений от имени конкретного пользователя в несколько чатов и другим пользователям используя HTTP запрос средствами PHP, с минимальными усилиями.

Собственно, одними сообщениями мы не ограничимся. Все будет работать через standalone приложение vk по тому принципу, что мы потенциально сможем делать все действия, которые будут доступны этому самому пользователю (точнее все то, на что мы выдадим сами себе права, но об этом чуть позже).

Сообщения рассматриваем именно по той причине, что с ними можно работать только в standalone-приложениях.

План действий:
1. Создаем приложение
2. Получаем access_token
3. отправляем сообщения
Читать дальше →

Введение в новый CoordinatorLayout

Время на прочтение5 мин
Охват и читатели55K
В этом году на конференции Google IO компания Google представила новую библиотеку Android Design Support Library, которая создана для того, чтобы помочь разработчикам внедрять материальный дизайн в их приложения. Билиотека содержит много компонентов, нужных для этого нового стиля, и работает со всеми уровнями API, начиная с седьмого. Если по какой-то причине вы пропустили её анонс, можете ознакомиться с постом Ian Lake, выложенным на Android Developers Blog.

Встречайте Android CoordinatorLayout


Из всех компонентов, включенных в Android Design Support Library, наиболее интересным выглядит новый «прокачанный FrameLayout», он же герой нашей статьи — CoordinatorLayout. По названию можно догадаться, что CoordinatorLayout позволяет координировать некие зависимости между включенными в него виджетами.

Всё, что нужно сделать — обернуть необходимые нам виджеты в CoordinatorLayout. Давайте посмотрим, как это будет выглядеть в коде. Наш демонстрационный код очень прост — Floating Action Button, по нажатию на которую на экране появляется Snackbar.
Читать дальше →

Наша Service и опасна и трудна или некоторые аспекты выживания служб в Android

Время на прочтение7 мин
Охват и читатели58K

Вместо введения


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

Официальная документация гласит, что ОС Android останавливает службу только в случае нехватки памяти. Тем не менее, существует и другие случаи. Пользователь может сам остановить службу, используя предоставляемые ему средства меню Settings/Apps, там же он может сделать и полную остановку приложения. Но для этого ему надо напрягаться и, в общем-то осознавать свои действия и их последствия. К сожалению, для уничтожения службы у него есть и другие возможности, которыми он может пользоваться бессознательно. В частности, если в нашем приложении ранее была запущена хоть одна Activity, видимая в истории, то пользователь буквально одним движением пальца сможет вынести соответствующую задачу. Как ни парадоксально, попутно Android вышибет и весь процесс вместе со службой.

Лично мне такое поведение Android логичным не кажется. Пользователь зачастую просто чистит Recent Apps от давно забытого хлама, совсем не обязательно он при этом желает отказаться от тех благ, которые ему предоставляла выполняющаяся служба. Однако разработчики Google мыслили немного по-другому. По-другому, так по-другому, их право, но в конце концов нам с вами тоже надо как-то жить.
Читать дальше →

Поле ввода числовых значений в Android

Время на прочтение5 мин
Охват и читатели36K
В этой статье я бы хотел осветить вопрос ввода пользователем чисел с заданной точностью.
Давайте посмотрим что имеется в арсенале Android и решим эту задачу.
Читать дальше →

Appodeal — бесплатный оптимизатор доходов от рекламы для мобильных разработчиков

Время на прочтение4 мин
Охват и читатели34K


Этим постом я бы хотел официально представиться и вкратце познакомить вас с нашим проектом. Меня зовут Павел Голубев, с 2009 года я работаю в сфере разработки и публикации мобильных приложений. Наша команда в свое время запустила SaaS-сервис Columbis для турагентств, позволяющий автоматизировать их деятельность. После этого я переехал в Соединенные Штаты, Сан-Франциско, и уже тут продолжил работу в сфере мобильной рекламы. В определенный момент у нас возникла потребность в платформе, которая позволила бы увеличить доход от рекламы в наших приложениях. На поиски подобного инструмента оптимизации трафика мы потратили несколько месяцев, после чего приняли решение сделать его сами. В итоге, разработка для внутренних нужд переросла в самостоятельный проект — Appodeal, в блоге которого и размещена данная публикация.

Appodeal сейчас — бесплатный оптимизатор доходов от мобильной рекламы. Проект наследовал первоначальную задумку, когда разрабатывался как внутренний инструмент: он ориентирован на разработчика мобильных приложений, а не на рекламодателя. Перед каждым создателем приложений рано или поздно встает вопрос монетизации и, если выбор делается в пользу размещения рекламы, то он сталкивается с рядом вопросов и трудностей:

  • какую рекламную сеть выбрать;
  • как к ней подключиться;
  • насколько высокая заполняемость (fill rate) у этой сети;
  • насколько высокий eCPM для региона вашей аудитории в конкретной сети;
  • какой тип оплаты подходит для вас (CPI/CPM/CPC);
  • есть ли плагин для фреймворка, в котором вы ведете разработку;
  • как в конечном итоге вывести свои деньги.

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

Новые возможности для разработчиков приложений в Search Console

Время на прочтение3 мин
Охват и читатели8.3K
Всем привет, а тем, кто читает нас в приложении Хабра, привет утроенный! Мы уже рассказывали вам, как изменить файл AndroidManifest.xml и добавить нужную разметку, чтобы контент приложения индексировался и отображался в наших результатах поиска. Рассказывали и как это отразилось на результатах мобильного поиска.

Однако раньше разработчики приложений завидовали владельцам сайтов, ведь у них был и новый инструмент анализа поисковых запросов, и возможность узнать, как сайт видит Googlebot. Теперь зависти конец!

Search Console, анализ поисковых запросов для приложений

Если вы хотите знать, где именно и по каким запросам в результатах поиска показывается контент вашего приложения (конечно, если вы уже внедрили индексирование приложений, и мы успели проиндексировать ваш контент), какие страницы наиболее популярны, а на каких есть ошибки, то Search Console – то что вам надо. Мы не только дали нашему сервису новое имя, но и наполнили его новыми возможностями. Теперь с помощью отчетов Search Console можно получить детальную информацию о том, кто, где и как видит контент ваших приложений в результатах поиска.
Читать дальше →

«ВКонтакте» запускает программу BugBounty

Время на прочтение1 мин
Охват и читатели31K
Всем известная социальная сеть «ВКонтакте» объявила о запуске программы BugBounty. Среди сервисов, заявленных в условиях:
  • *.vk.com
  • login.vk.com
  • *.vk.me
  • *.vk-cdn.net
  • *.vkmessenger.com
  • *.vkontakte.ru
  • *.vk.cc
  • Официальные мобильные приложения VK

О каждой найденной уязвимости можно сообщить, используя платформу HackerOne.

Минимальная награда за найденную брешь составляет 100$. При этом необходимо быть внимательным — эксплуатация обнаруженной уязвимости против пользователей социальной сети может привести к полному отказу от выплаты награды за нее.

Руководство по проектированию реляционных баз данных (14-15 часть из 15) [перевод]

Время на прочтение4 мин
Охват и читатели138K
Продолжение.
Предыдущие части: 1-3, 4-6, 7-9, 10-13
Продолжение. Каскадное удаление данных.

14. Другой пример: база данных интернет-магазина.


Вы познакомились, я надеюсь, с основными концепциями создания баз данных и теперь вы можете спроектировать простую реляционную базу данных. В примере ниже я резюмирую задачи, с которыми вы столкнетесь при разработке базы данных.
P.S. Информация ниже в очень упрощенной форме моделирует мыслительный процесс при создании базы данных.

Система интернет-магазина.

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

  • Отображение товаров
  • Классификация товаров
  • Регистрация клиентов
  • Добавление товаров в корзину покупок
  • Отображение содержимого корзины покупок
  • Оформление заказов посетителями
  • И т.д.


Определяем сущности и отношения.

Из списка задач мы можем вывести сущности, которые имеют важные роли в нашей системе. Товары, категории, клиенты и заказы – сущности, которые можно найти почти в каждой базе данных интернет-магазина. В данном примере я покажу вам модель, содержащую только следующие сущности: клиент, заказ и товар. Определившись с сущностями, мы можем подумать над связями между ними.
Читать дальше →

Обход CloudFlare ScrapeShield в Java (Android)

Время на прочтение4 мин
Охват и читатели22K


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

Причина достаточно тривиальна — являясь автором Android-клиента к весьма нишевому сайту, я в то же время не вхожу ни в число его администраторов, ни в число соучредителей. Таки образом ни о каких решениях руководства сайта я не осведомлён до момента их фактического вступления в силу.

Не так давно на этот сайт началась DDoS-атака, и администрация включила DDoS-защиту от CloudFlare. Соответственно, приложение-клиент, использовавшее до этого стандартные механизмы авторизации через POST+Cookie, перестало авторизовывать пользователей. Общение с администрацией ни к чему не привело — «что мы можем сделать, лучше уж без мобильных клиентов, чем вообще никак».

Естественно, всё это начало отражаться на рейтингах и породило весьма нелестные отзывы.
Читать дальше →

Убийцы жестких дисков. Коэрцитивный выстрел в голову

Время на прочтение9 мин
Охват и читатели237K
«Любую ценность контролирует лишь тот, кто в состоянии её уничтожить» Дюна, Фрэнк Герберт

Сегодня пойдет речь о том, как быстро убить 3.5" жесткий диск.

image

О весьма успешном захвате HDD спецслужбами:
Важность улики была настолько велика, что для получения ноутбука пришлось разыграть целую сцену в библиотеке, где брали Ульбрихта. Агенты ФБР (мужчина и женщина) начали публичную ссору. Ульбрихт отвлёкся, чтобы посмотреть на них — и в этот момент другой агент быстро вытащил ноутбук у него из-под рук. Затем уже был произведён стандартный арест.

В последующие часы айтишники ФБР тщательно исследовали ноутбук и фотографировали экран, тщательно следя, чтобы ноут не ушёл в спящий режим (с шифрованием информации). Потом они сделали копию содержимого жёсткого диска.

На компьютере найдены копии паспортов и водительских лицензий Ульбрихта, расчётные ведомости по выплате зарплаты сотрудникам Silk Road, логи активности персонала, сканы удостоверений личности админов Silk Road.

Личный дневник Ульбрихта ведёт начало с 2010 года, когда у Росса появилась идея создать сайт Silk Road и продавать там задёшево галлюциногенные грибы, которые он выращивал. Ульбрихт описывает всё, чем занимался ежедневно, включая личные цели, повседневную работу и выпивки с друзьями.


Представьте себе: вам уже пилят дверь (производитель которой гарантировал, что пилить ее будут не менее 30 секунд), а на жестком диске у вас много интересного. Какие ваши действия?
Читать дальше →

Как отличить день от ночи, если ты Android

Время на прочтение8 мин
Охват и читатели26K

Привет, Хабр.


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


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

DataSync API от Яндекс.Диска: облако для приложений и структурированных данных

Время на прочтение5 мин
Охват и читатели28K
Для синхронизации данных в приложениях не подходят обычные «файловые» облачные хранилища. Слишком много проблем с консистентностью данных приходится решать самим авторам приложений. Поэтому сегодня мы открываем всем желающим технологию DataSync API, которую команда Яндекс.Диска разрабатывала для собственных сервисов Яндекса. Она позволяет синхронизировать структурированные данные между облачным хранилищем и устройствами. API использует логин Яндекса, который есть почти у каждого пользователя интернета в России и у многих в других странах. DataSync мультиплатформенный и не завязан только на Android или iOS.



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

Уже более двух лет Яндекс.Браузер работает на технологиях синхронизации Я.Диска. В ближайшем будущем другие крупные сервисы Яндекса начнут объединять свои платформы на DataSync. Под катом — больше подробностей о том, как он устроен, зачем нужен, и примеры, на которых можно посмотреть и попробовать, как всё работает.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность