Pull to refresh
21
0
Dmitriy Tarasov @TheDimasig

Пользователь

Send message

ASO оптимизация. Составление семантического ядра для магазинов приложений

Reading time 7 min
Views 33K
Всем привет! Меня зовут Владимир Баранов, я занимаюсь ASO и обладаю экспертизой в оптимизации приложений, начиная от малобюджетных читалок, заканчивая приложениями с многомиллионной аудиторией: дейтингами, играми и чатами.

Это будет первая статья цикла “Популяризация ASO”. В этом цикле я опишу все этапы оптимизации приложения, какими сервисами пользуюсь и на что нужно обращать внимание при проведении оптимизации.

Конкретно эта статья будет про составление семантическая ядра. И да, она будет полезна для владельцев приложений всех сторов и разработчиков, т.к. мы рассмотрим концепцию сбора семантического ядра, которую можно применять к любому магазину приложений. Также, будет рассмотрено несколько очень полезных инструментов, которыми я пользуюсь при его сборе.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 17

Пошаговый алгоритм работы с ASO

Reading time 11 min
Views 26K
App Store Optimization – самый недооцененный фактор при продвижении мобильного приложения.

У этого есть две причины:

1. По последним данным 60% от общего кол-ва органических (бесплатных) установок приложения получают именно из поиска в сторах.
2. Средний CTI (конверсия из просмотра страницы в установку) по рынку составляет 25%. Визуальная оптимизация странички приложения позволяет поднять CTI до 40-50%, что соответственно уменьшает стоимость установки в 2 раза.

В данной статье мы распишем каждый из шагов по ASO, как его настраивать, покажем примеры как нужно и как не нужно делать. Статья будет полезна новичкам в сфере ASO а также разработчикам, CTI которых ниже 20%.

Если интересно, добро пожаловать под кат.

image
Total votes 19: ↑17 and ↓2 +15
Comments 8

Разработка быстрых мобильных приложений на Android. Часть вторая

Reading time 14 min
Views 32K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.

Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.

(Читать первую часть)


Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 5

Разработка быстрых мобильных приложений на Android. Часть первая

Reading time 8 min
Views 39K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.
Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.



Несколько недель назад я выступил на Droidcon в Нью-Йорке с докладом об оптимизации производительности Android.

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

Мои основные правила, которым я следую при работе с оптимизацией:
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 2

Путеводитель по реализации 2Д платформеров (начало)

Reading time 10 min
Views 48K
Так как ранее я был разочарован количеством информации по этому вопросу, я решил восполнить этот пробел, собрав разные виды реализации 2Д платформеров, описав их сильные и слабые стороны и порассуждав над деталями реализации.

Моей целью было создать исчерпывающий и понятный путеводитель по реализации 2Д платформеров.



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

Четыре решения


Мне приходит на ум четыре основных варианта решений при создании платформера. В рамках этой статьи будут рассмотрены все четыре, но из-за большого объема статья поделена на 2 части (прим. пер).
Читать дальше →
Total votes 56: ↑53 and ↓3 +50
Comments 30

Best practices от Google по разработке Android приложений

Reading time 8 min
Views 45K
В данной статье я хотел бы вкратце рассказать про самые последние best practices от Google. Я постарался выделить самые основные моменты, чтобы читатель сразу мог понять, что именно какая-либо фича дает разработчику. Не удивляйтесь, если где-то повторяюсь. Конспектировал + добавлял от себя по ходу просмотров видео в www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg

Также к каждому пункту приводятся все необходимые ссылки для более подробного ознакомления с конкретной best practice.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 18

Налоговый суслик. Особенности упрощенной системы налогообложения при работе по договорам с Apple, Google и другими

Reading time 46 min
Views 53K
В данной статье я постараюсь провести краткий юридический ликбез для разработчиков по некоторым положениям Гражданского кодекса, имеющим значение в контексте деятельности индивидуальных предпринимателей и организаций, применяющих упрощенную систему налогообложения, в работе по договорам с Apple, Google и другими компаниями, а также обратить внимание на некоторые не всегда очевидные налоговые нюансы, которые, как показал личный опыт изучения данной темы, довольно часто ускользают от внимания разработчиков или вызывают множество вопрос и споров.

Прочтите внимательно эту статью, если вы применяете упрощенную систему налогообложения с объектом налогообложения «доход» по ставке 6 процентов и продаете игры или приложения в Google Play, Apple App Store, а также прочий цифровой контент — например, 3D-модели — в Steam, Unity Asset Store или на других площадках, в условиях договоров с которыми фигурируют комиссии, агентские вознаграждения и прочие формы разделения выручки между сторонами.

Из материала вы узнаете:

  • Почему разработчику желательно обладать хотя бы базовой юридической грамотностью
  • Чем с точки зрения Гражданского кодекса являются игры и приложения и какие права на них есть у разработчиков помимо авторского права
  • Что такое агентский договор и почему все это важно при работе по договору с Apple или Google
  • Кто такой налоговый суслик и почему он может превратиться в пушного зверя
  • Какой «подвох» существует для применяющих «упрощенку» в части определения налоговой базы
  • Почему налог на добавленную стоимость (НДС) продолжает преследовать нас, даже когда мы не являемся его плательщиками
  • Как, с точки зрения Федеральной налоговой службы, облагаются НДС внутриигровые покупки (InApp Purchases)
Покажите мне суслика!
Total votes 40: ↑36 and ↓4 +32
Comments 84

Кастомные функции SQLite Android или своя LOWER_FNC()

Reading time 5 min
Views 8.9K
SELECT * WHERE LOWER_FNC(name) like '%" + filterText + "%'"

При разработке Android приложения столкнулся с проблемой в запросе SQLite фильтра с русскими буквами. Для английской локализации проблем нет. Для других интернациональных раскладок некорректно обрабатывались заглавные буквы в запросе.
Немного разобравшись я наткнулся на следующее описание:

(18) Case-insensitive matching of Unicode characters does not work.

The default configuration of SQLite only supports case-insensitive comparisons of ASCII characters. The reason for this is that doing full Unicode case-insensitive comparisons and case conversions requires tables and logic that would nearly double the size of the SQLite library. The SQLite developers reason that any application that needs full Unicode case support probably already has the necessary tables and functions and so SQLite should not take up space to duplicate this ability.

Instead of providing full Unicode case support by default, SQLite provides the ability to link against external Unicode comparison and conversion routines.

Вероятно текущая реализация SQLite Android и есть
only supports case-insensitive comparisons of ASCII characters


Видел решение через CursorWrapper но решил все таки собрать свою версию SQLite и использовать addCustomFunction

Что из этого получилось читайте под катом
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 1

История еще одной игры на Libgdx+Box2d

Reading time 5 min
Views 28K
Идеей написать игру я загорелся еще в 2011 году. В августе 2011 года, не имея опыта разработки на PHP, обложившись книгами и этими вашими интернетами, по ночам писал небольшую браузерную космическую стратегию в реальном времени. Этакий клон OGame. Разумеется, со своими дамами и преферансом. Но проекту этому не суждено было родиться, в декабре 2011-го Родина-мать вдруг попросила отдать долг.

Вернувшись в декабре 2012 года, первым делом устроился в местную крупную IT-компанию. Нужно было максимально быстро вновь войти в рабочий ритм. К весне я уже не мог спокойно спать — мечтал писать игры. Второй попыткой было написать простенькую TD на Unity. Что-то даже получилось — пушки стреляли, мобы двигались. Но постоянно мучил страх, что не смогу довести дело до конца. Так оно и получилось. Семья, работа — свободного времени не было совсем. И только осенью 2014 года твердо решил — я сделаю игру и точка. Не буду спать, не буду есть, но сделаю. Этакий вызов на «слабо». Что из этого получилось читайте дальше.
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Comments 15

Реактивное программирование под Android

Reading time 10 min
Views 90K
Отказоустойчивость, отзывчивость, ориентированность на события и масштабируемость — четыре принципа нынче популярного реактивного программирования. Именно следуя им создаётся backend больших систем с одновременной поддержкой десятков тысяч соединений.

Отзывчивость, простота, гибкость и расширяемость кода — принципы, которые можно закрепить за реактивным UI.

Наверняка, если совместить реактивные backend и UI, то можно получить качественный продукт. Именно его мы и попытались сделать, разрабатывая 2GIS Dialer — звонилки, которая работает через API и при этом должна оставаться быстрой и удобной.


Читать дальше →
Total votes 52: ↑49 and ↓3 +46
Comments 58

Google Play — работаем легально!

Reading time 4 min
Views 179K
Привет, Хабр!



Сегодня, я хочу рассказать о том как сделать свое хобби по разработке Android-приложений пусть небольшим, но официальным бизнесом. О том, как легально получать деньги, заработанные на Google Play, о «страшном» валютном контроле и «таинственном» паспорте сделки.
Читать дальше →
Total votes 92: ↑88 and ↓4 +84
Comments 115

Как получать доход с Google Play на расчётный счёт ООО

Reading time 3 min
Views 55K
Эта статья будет интересна российским компаниям, которые продают приложения через Google Play. У меня такая компания, и на своём опыте расскажу, как мы настроили денежные потоки с GP, чтобы они были легальными. Если вы не белые и не пушистые, т.е. считаете, что налоги можно не платить, то смело закрывайте эту статью.

Проблема:
Доходы с Google Play – такие же доходы, с них нужно платить налоги. Не все разработчики знают, как настроить получение доходов так, чтобы удовлетворять требованиям НК РФ.

Решение:
Получать доход на ИП либо на ООО и официально платить подоходный.
Если интересно про ИП читайте здесь и здесь.
В этой статье про получение доходов на счёт ООО.

Исходные данные
У вас есть аккаунт разработчика на Google Play – как его создать, читайте здесь
У вас есть приложение, которое генерирует доход – как его создать, одним линком не отделаешься.
У вас есть ООО.

Настройка
Google Play ведёт расчёты в USD, поэтому вам понадобится валютный расчётный счёт. Открыть валютный счёт можно в любом нормальном банке. Позвоните туда, Вам объяснят процедуру. Открыть счёт обойдётся в 2-3 т.р.
Когда Вам откроют валютный счёт, Вы получите реквизиты счёта. Вам понадобятся:
1. Название банка по-английски
2. БИК
3. Номер открытого счёта
4. BIC банка (или ещё его называют SWIFT)
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 15

Отладка NDK и JNI под Android

Reading time 2 min
Views 17K
В данной статье речь пойдет об отладке кода под Android.
За последнее время произошло много подвижек в этом направление. Появился Android Studio, google добавило поддержку отладки нативного кода в eclipse.
Если необходимо отладить только Java, то Android Studio покроет ваши потребности полностью.
Если необходима отладка с++ или Java кода то ADT Bundle со встроенным Eclipse опять же поможет решить вашу проблему.
Если вкратце
  • Дать понять Eclipse что проект содержит нативную часть(Add native support)
  • Убедиться что в команде сборки стоит NDK_DEBUG=1
  • Нажать Debug as Android Native Application

на некоторых девайсах реобходимо еще и поставить в манифесте debuggable в true
Но если необходимо отлаживать jni код, где попеременно работают c++ и Java функции, то вам этот способ не подойдет, потому-что в зависимости от выбранного способа отладки(Android Native Application, Android Application) работает отладка либо с++ либо java кода.
О том как отлаживать смешанный код пойдет речь далее в статье.
Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 13

Можно ли украсть деньги из мобильного банкинга? Часть 2

Reading time 13 min
Views 30K
image
Продолжаем тему безопасности мобильного банкинга, которую мы начали в первой части. Наверное, многие уже догадались, речь в данной статье пойдет об атаке «человек посередине», MitM. Данная атака была выбрана не случайно. В случае, если канал передачи данных между приложением мобильного банкинга и сервером контролируется злоумышленником, последний может украсть деньги со счета клиента, то есть нанести прямой финансовый ущерб. Но обо всем по порядку.

Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 9

Создание standalone библиотеки под android

Reading time 2 min
Views 15K
В этой статье я расскажу как создать библиотеку, которая использует другие библиотеки и при этом уместить всё в одном jar.

Допустим мы пишем библиотеку, она использует другие библиотеки и, в частности, для примера, support library. Если бы мы использовали maven, то в pom файле просто прописали зависимости и не парились. Но что если нашу библиотеку будут использовать люди, которые не пользуются системами сборок или пользуются ant' ом?

Мы можем положить зависимости рядом с нашим jar. Но тогда неизбежны конфликты библиотек разных версий, например, если мы используем одну версию support library, а в самом приложении другая. Тогда придется руками одну из них удалять.

Можно пойти другим путем, вспомним что jar это обычный zip файл. Мы распакуем все зависимости, получим байт-код в виде .class файлов, далее компилируем код нашей библиотеки, кладем все .class файлы в одно место и собираем из них jar. Но если в приложении используются те же библиотеки что и у нас, то получим ошибку что в проекте два одинаковых класса.
Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Comments 8

«65К методов хватит всем» или как бороться с лимитом DEX методов в Android

Reading time 6 min
Views 34K
Это произошло внезапно. Только что вы писали код для своего приложения под андроид, вам это нравилось, и вы наслаждались процессом. Вы добавили крутую библиотеку чтобы получить дополнительные возможности и писать более простой код. Но вместо работающего приложения на выходе вы получаете ужасающую надпись:

Unable to execute dex: method ID not in [0, 0xffff]: 65536
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

И вы в ступоре, вы неспособны создать DEX файл для APK. Вы не имеете ни малейшего представления о том, что это и как это исправить. И что бы вы не делали, оно будет приводить вас к самому логичному состоянию: ПАНИКА.
Что же произошло?
Total votes 59: ↑55 and ↓4 +51
Comments 7

Wi-Fi сети: проникновение и защита. 1) Матчасть

Reading time 9 min
Views 621K


Синоптики предсказывают, что к 2016 году наступит второй ледниковый период трафик в беспроводных сетях на 10% превзойдёт трафик в проводном Ethernet. При этом от года в год частных точек доступа становится примерно на 20% больше.

При таком тренде не может не радовать то, что 80% владельцев сетей не меняют пароли доступа по умолчанию. В их число входят и сети компаний.

Этим циклом статей я хочу собрать воедино описания существующих технологии защит, их проблемы и способы обхода, таким образом, что в конце читатель сам сможет сказать, как сделать свою сеть непробиваемой, и даже наглядно продемонстрировать проблемы на примере незадачливого соседа (do not try this at home, kids). Практическая сторона взлома будет освещена с помощью Kali Linux (бывший Backtrack 5) в следующих частях.

Статья по мере написания выросла с 5 страниц до 40, поэтому я решил разбить её на части. Этот цикл — не просто инструкция, как нужно и не нужно делать, а подробное объяснение причин для этого. Ну, а кто хочет инструкций — они такие:
Используйте WPA2-PSK-CCMP с паролем от 12 символов a-z (2000+ лет перебора на ATI-кластере). Измените имя сети по умолчанию на нечто уникальное (защита от rainbow-таблиц). Отключите WPS (достаточно перебрать 10000 комбинаций PIN). Не полагайтесь на MAC-фильтрацию и скрытие SSID.

Оглавление:
1) Матчасть
2) Kali. Скрытие SSID. MAC-фильтрация. WPS
3) WPA. OpenCL/CUDA. Статистика подбора
Как работают WEP, WPA и WPS
Total votes 185: ↑176 and ↓9 +167
Comments 76

Шифрование и генерация случайных чисел в Android приложениях. Тестовые примеры

Reading time 5 min
Views 20K
В этой статье мы приведем тестовые фрагменты кода, реализующего две основополагающие с точки зрения безопасности функции в Android приложениях: генерацию случайных чисел и шифрование данных. Рекомендуем попробовать все приведенные варианты, а по прочтении текста – скомпилировать тестовое приложение, скачав его по ссылке.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 3

Лямбда-выражения в Java 8

Reading time 19 min
Views 460K
В новой версии Java 8 наконец-то появились долгожданные лямбда-выражения. Возможно, это самая важная новая возможность последней версии; они позволяют писать быстрее и делают код более ясным, а также открывают дверь в мир функционального программирования. В этой статье я расскажу, как это работает.

Java задумывалась как объектно-ориентированный язык в 90-е годы, когда объектно-ориентированное программирование было главной парадигмой в разработке приложений. Задолго до этого было объектно-ориентированное программирование, были функциональные языки программирования, такие, как Lisp и Scheme, но их преимущества не были оценены за пределами академической среды. В последнее время функциональное программирование сильно выросло в значимости, потому что оно хорошо подходит для параллельного программирования и программирования, основанного на событиях («reactive»). Это не значит, что объектная ориентированность – плохо. Наоборот, вместо этого, выигрышная стратегия – смешивать объектно-ориентированное программирование и функциональное. Это имеет смысл, даже если вам не нужна параллельность. Например, библиотеки коллекций могут получить мощное API, если язык имеет удобный синтаксис для функциональных выражений.

Главным улучшением в Java 8 является добавление поддержки функциональных программных конструкций к его объектно-ориентированной основе.
Читать дальше →
Total votes 60: ↑51 and ↓9 +42
Comments 24

Пару слов о перехвате HTTP/HTTPS трафика iOS приложений

Reading time 3 min
Views 47K
В этой статье я расскажу о простом методе заработка в сети перехвата HTTP/HTTPS трафика iOS приложений, включая трафик приложений использующих certificate pinning (а это например Twitter, Facebook и куча других приложений). От прочих методов, где бедным людям рекомендуют в командной строке руками генерировать какие-то сертификаты и куда-то их запихивать, этот метод отличается (относительной) безгеморройностью, хотя кое-какие телодвижения сделать конечно прийдется.
Читать дальше →
Total votes 32: ↑27 and ↓5 +22
Comments 17

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity