Pull to refresh
-2
0

User

Send message

Шишки и грабли Android-разработчика за 2 года

Reading time10 min
Views41K
image

Я ясно помню тот день в далеком 2014 году, когда я решил заняться программирование под Android. Это оказалось лучшим решением, которое я принял в моей жизни. Уже прошло почти два с половиной года, и за это время у меня возможность кое-чему научиться.

Когда я только начал, я не знал никого, кто мог бы научить меня, показать, как правильно нужно делать. И я совершил МНОЖЕСТВО ошибок, в так же потратил кучу времени на то, чтобы потом их исправить.

Полтора года спустя, мне выпал шанс поработать с очень талантливыми и опытными Android-разработчиками, которые направляли меня и помогли мне привести все в порядок. Эти две составляющие научили меня многому. Я понял, что надо ДЕЛАТЬ, а самое главное, что НЕ НАДО.

И уже какое-то время я, как могу, стараюсь помогать другим разработчикам — прямо или косвенно. Вот мои профили: StackOverflow и Github.

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

Предупреждение: в этой статье я затрону Android, а также идеи и результаты программирования, так что если вы не знакомы с одним из этих пунктов, то вам может быть неинтересно дочитывать статью до конца. Остальные, просто читайте.
Читать дальше →
Total votes 34: ↑25 and ↓9+16
Comments17

Что разработчики интерфейсов могут почерпнуть из японских видеоигр начала девяностых

Reading time6 min
Views25K
image

Я пишу это с лёгкой печалью, пересматривая мои любимые ролевые игры для Super Nintendo, и понимаю:

современный дизайн пользовательского интерфейса избаловал меня.

И это ощущение довольно распространённое. Читатель Hugon на форуме Quarter to Three пишет:

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

Спасибо, «прекрасный интерфейс».

В прошлом я не слишком придирался к качеству. Когда я сидел сзади в автомобиле папы и ломал клавиатуру Nokia в попытке не позволить змее съесть свой хвост, мне в голову не приходили более глубокие мысли чем: «ага!», «супер!» или «ааааа!».

Впрочем, заново проходить классические игры — не такое уж неприятное занятие. Кроме мест, над проектированием которых явно никто сильно не напрягался, я заметил несколько вещей, которые сегодня используются в очень популярных приложениях.
Читать дальше →
Total votes 20: ↑16 and ↓4+12
Comments9

Простейший цикл на MySQL

Reading time1 min
Views38K
Сегодня, работая над сайтом, мне надо было отделить основной каталог от дополнительного. А в дополнительном каталоге надо было пронумеровать нужные записи в виде «Проект 1», «Проект 2». И тут какой то неведомый зверь не позволил мне сделать это по-быстрому на каком нибудь распространенном языке программирования. Мне захотелось попробовать, а можно ли сделать это используя лишь только средства MySQL?
Насколько я помню, в MySQL есть переменные, например @a. Но поиск в сети, как сделать цикл в MySQL, ничего мне не дал.
Тогда я поразмыслил, ведь мы можем написать
SELECT @i:=@i+1;

А UPDATE в свою очередь проходит каждую запись и заменяет значение по одному.
SELECT @i := 0;
UPDATE `table` SET `name`=CONCAT('Проект ', @i := @i+1) WHERE `type` = 1 ORDER BY `id`;

В итоге мы переименовали записи с типом 1 по порядку следования их ID.
PS: CONCAT объединяет строки.
Total votes 39: ↑18 and ↓21-3
Comments11

Готовим web-приложение под зоопарк версий Android

Reading time9 min
Views27K
Совсем недавно и достаточно неожиданно для самого себя я оказался ответственным за разработку программки для Android. Но ни под Android, ни вообще на Java мне ранее писать не приходилось. Нужно было сделать web-приложение, вроде phonegap и прочих, которое почти полностью работает в компоненте браузера. И все это под версии 2.2 — 4.3 (SDK 8 — 18).

О некоторых выкрутасах Android и костылях под них с точки зрения человека, впервые это все увидевшего, я и хотел бы рассказать. Надеюсь, вышло без HelloWorld, «OMG! Java», и т.п.

Поворот экрана/смена ориентации
Network unreachable
Грузим локальные ресурсы
Мост между Java и JavaScript

Самое интересное с последним пунктом
Total votes 33: ↑26 and ↓7+19
Comments16

Material Design. Динамический Toolbar на живом примере

Reading time6 min
Views152K
Уверен, что те, кто следят за изменениями в мире Android, заметили, что Toolbar начинает играть в приложениях всё более значимую роль. Например в последней версии Gmail клиента в Toolbar вынесен почти весь функционал по работе с почтой, а в новом Google Chrome Toolbar отвечает за работу с текстом страниц.

В данной статье я постараюсь рассказать о создании динамического Toolbar, который позволит пользователю работать с контентом четырьмя различными способами в рамках одного Activity. Мы рассмотрим весь процесс разработки Toolbar-a начиная с xml файлов стилей и заканчивая анимацией иконок, а в конце статьи я оставлю ссылку на GitHub репозиторий с примером полностью рабочего приложения.
Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments4

Пойманы преступники, опустошавшие банкоматы с помощью вируса Tyupkin

Reading time2 min
Views37K
Европол задержал преступников, которые опустошали банкоматы без использования пластиковой карты — с помощью заранее загруженного в банкомат вируса Tyupkin.

image

Сначала, с помощью загрузочного компакт-диска преступники получали доступ к установленным внутри банкоматов компьютерам под управлением одной из старых версий Windows и заражали их вредоносом. Данный вирус имел некоторые особенности: он отключал установленную антивирусную защиту, а также большую часть недели проводил «в спячке»: принимал команды от преступников по ночам — с субботы на воскресенье и с воскресенья на понедельник. Также троян мог отключать местную сеть, чтобы службы банка не могли удалённо подключиться к банкомату и проверить, что с ним происходит.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments44

Android 6.0: Doze Mode, App Standby, Runtime Permissions. Всё, что необходимо знать каждому разработчику

Reading time5 min
Views65K

В этой статье мы рассмотрим три самых важных изменения в новом Android, которые не могут быть проигнорированы ни одним разработчиком, который поставил у себя в проекте targetSdk = 23 и выше.
Doze Mode — режим «отключки», в который переходят все устройства на Marshmallow после некоторого времени обездвижения без зарядки.

App Standby — автоматическое лишение приложений доступа к ресурсам устройства, всех которые давно не открывал пользователь.

Runtime Permissions — новая модель запроса разрешений. Теперь мы, как разработчики, каждый раз обращаясь, например, к микрофону устройства, должны проверять, есть ли у нашего приложения разрешение на доступ к нему.
Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments17

Овладение Coordinator Layout

Reading time7 min
Views210K
На презентации Google I/O 15, компания Google представила новую версию библиотеки поддержки которая реализует несколько компонентов, сильно связанных со спецификациями Material Design, среди этих компонентов вы можете найти новые типы ViewGroup такие как AppbarLayout, CollapsingToolbarLayout и CoordinatorLayout.

При правильном комбинировании и настройке данные Viewgroup могут быть очень мощным инструментом, по этому я решил написать статью с некоторыми настройками и советами.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Анимация переходов между двумя фрагментами

Reading time4 min
Views27K
image Одним из краеугольных камней в Material design являются осмысленные движения между экранами. Lollipop предоставляет поддержку этих анимаций в форме фреймворка переходов между Activity и Fragment. Поскольку статей по данной теме не так много, я решил написать свою собственную!

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

Если вы желаете увидеть, что получилось — готовое приложение находится на GitHub.
Читать дальше →
Total votes 27: ↑23 and ↓4+19
Comments10

Получение удаленных данных в iOS. Часть 2

Reading time10 min
Views9.1K
Это продолжении статьи, которая является авторским переводом главы 6 Retrieving remote data из книги iOS7 in Action.

Продвинутые HTTP запросы


Пока что мы использовали только метод GET, но доступны и другие методы:
  • POST
  • PUT
  • DELETE
  • OPTIONS
  • HEAD
  • TRACE
  • CONNECT

Мы сосредоточимся на двух наиболее популярных методах: GET и POST.

GET – это простейший метод HTTP запроса, и именно его использует браузер для загрузки веб-страниц. Он используется для запроса содержимого, расположенного по определенному URL. Содержимое может быть, например, веб-страницей, рисунком или аудио-файлом. По соглашению, GET запросы осуществляют только чтение и в соответствии с W3C стандартом не должны быть использованы в операцих, изменяющий серверную сторону. Например, мы не будем использовать GET запрос для отсылания формы или пересылки фотографии, потому что эти операции требуют некоторых изменений на серверной стороне (мы будем использовать в этих случаях POST).

POST посылает данные для дальнейшей обработки на URL. Параметры включены в тело запроса, использующего тот же формат, что и GET. Например, если мы хотим запостить форму, содержающую два поля, имя и возраст, то мы пошлем что-то похожее на name=Martin&age=29 в теле запроса.

Такой способ пересылки параметров широко используется в веб-страницах. Наиболее популярные случаи – это формы. Когда мы заполняем форму на сайте и кликаем Submit, вероятнее всего запрос будет POST.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments1

Система подсчёта посетителей магазина: как Гугл.Аналитика, только на инфракрасных датчиках — и хитрая статистика, которую вы не видите

Reading time6 min
Views34K
В 1940-е вам нужна была специальная бабка, которая считает людей на входе в магазин. В 1950-е верхом прогресса была камера, плёнку с которой потом можно было анализировать. В конце 80-х в США и Европе (в т.ч. Германии) начали распространяться инфракрасные датчики или просто счётчики открывания-закрывания дверей на герконах. Сейчас технологии медленно дрейфуют к тому, чтобы засекать ваши широковещательные пакеты Wi-Fi и Bluetooth (рассылку поиска сетей), чтобы отслеживать перемещения телефона с точностью до 3 сантиметров. Плюс растёт значение распознавания потоков людей с видеосистем.

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

Just a random pretty girl
Самая простая реализация после геркона — пересечение ИК-луча

Может показаться, что кроме подсчёта посетителей в магазине, такие штуки ни для чего не нужны. Однако, если утыкать ими весь торговый центр, даже простая линейная аналитика даёт кучу полезного. Например, грамотный торговый центр по отслеживанию потоков знает, что магазин перестал нравиться его аудитории — и точно численно понимает, на место кого сажать нового арендатора.

Это, на мой взгляд, лучший пример того, что даже простые как бревно данные можно использовать в десятки раз эффективнее, чем обычно, если приложить голову.
Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments26

7 не самых обычных проблем мобильного приложения и способы их решения

Reading time4 min
Views14K


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

Сразу стоит упомянуть, что чаще всего неопытные разработчики не предусматривают двух вещей: систему безопасности для приложения и дополнительные ресурсы сервера на случай роста популярности (заказ пиццы, выбор одежды, поиск ресторана и т. п.). Обо всем этом сегодня мы и поговорим. Заметим, что в статье речь идет о «подключенных» приложениях — с собственным сервером, базой данных, динамическим контентом и прочими атрибутами.
Читать дальше →
Total votes 22: ↑13 and ↓9+4
Comments4

Хранение данных в Android

Reading time3 min
Views82K
В прошлом своем посте я писал о создании всплывающих менюшек, сегодня же мы поговорим о более важной теме такой, как хранение данных. В android есть несколько способов хранения данных: общие настройки, бд и тд. В этом посте я расскажу о том как хранить данные в БД.
Читать дальше →
Total votes 52: ↑43 and ↓9+34
Comments43

Ритм игрового процесса – зачем нужна база

Reading time6 min
Views27K


Самое интересное в игре, как правило, связано с напряжением. С другой стороны, постоянно находиться в напряжении нельзя, поэтому требуется «отпускать» игрока и давать ему расслабиться.

Механика базы работает чертовски просто:
  1. В игре создаётся некое место, где игроку приятно и безопасно проводить время.
  2. После периода напряжения игрок отправляется в это место.
  3. Закончить в этот момент сложно. Кто будет отказываться от приятного «отдыха»? Нет, из игры не выходят перед приятной частью.
  4. Далее мы стараемся без перехода выводить игрока в следующий цикл, требующий напряжения – так, чтобы игрок не успел понять, как там оказался.

В итоге получается механика, когда игрок просто не может остановиться перед следующим сложным этапом, потому что вместо выбора и рефлексии он уже там.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments33

Основы успешной реализации push-уведомлений для мобильных приложений

Reading time5 min
Views90K
Наши разработчики в Techmas часто сталкиваются с задачами создания уведомлений (push notifications). Несмотря на простоту и популярность технологии, в её реализации есть ряд особенностей, о которых и пойдёт речь в этой статье.




Читать дальше →
Total votes 20: ↑15 and ↓5+10
Comments7

Freemium в мобильных приложениях. История одной неудачи и одного успеха

Reading time4 min
Views12K


Одной из наиболее эффективных моделей монетизации мобильного приложения (игрового или обычного) может быть freemium. В прошлый раз мы рассказывали об основных факторах freemium-монетизации в игровых приложениях. А сейчас давайте рассмотрим случаи использования freemium-модели в неигровых приложениях на конкретных примерах.

Всего таких примеров два, и первый из них, не совсем удачный — история создателя приложения Comfy, Шавеба Хуссена, которая уже более месяца обсуждается в Сети. Второй пример – это опыт разработчика Пола Брауна, который на своем личном опыте решил решил показать, что freemium может быть весьма прибыльной моделью.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

iOS Инструменты разработчика

Reading time26 min
Views35K

Вступление


Всем привет, меня зовут Григорий, последние 5 лет занимался программированием под iOS. Сейчас решил сменить сферу деятельности и ударился в веб, но чтобы добро не пропадало, хочу поделиться с сообществом своими наработками, накопившимися за это время. Библиотеки выложены на GitHub и добавлены в CocoaPods. Инструкции по установке и использованию вы сможете найти по ссылкам на GitHub, здесь же будет краткое описание.

Минимальная поддерживаемая версия — iOS 6.0.
Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments27

Адаптация под различные экраны приложений Windows Store

Reading time8 min
Views19K

Заметил, что у разработчиков возникает множество вопросов по поводу адаптации приложения под экраны различного размера. Для того чтобы была возможность предоставить ссылку, по которой есть необходимая информация, я и решил написать этот небольшой материал. Рассматривать буду не только приложения под Windows 8.1, будет затронута и разработка приложений Windows 10 UWP.
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments1

Подборка курсов по разработке игр от Microsoft

Reading time1 min
Views35K


Разработка игр – одно из самых перспективных направлений в современном мире IT. Сегодня мы решили поделиться с вами подборкой самых востребованных, популярных и, что немаловажно, бесплатных курсов Microsoft, связанных с разработкой игр. Пять избранных курсов ждут вас под катом!
Читать дальше →
Total votes 25: ↑16 and ↓9+7
Comments12

Что вы хотели знать про Android Animation Framework, но боялись спросить

Reading time1 min
Views21K
Всем привет! Меня зовут Андрей Комрачков, я Android-разработчик в компании Aviasales и сегодня хочу показать вам видеозапись своего доклада, который я подготовил для LearnDroid – бесплатной online-школы Android-разработчиков, запущенной 30 марта компаниями Google и e-Legion.



Тема доклада: Android Animation Framework.
Цель урока: дать общие представления о том, какие у разработчика есть инструменты и возможности, а также как их применять на практике.
Продолжительность: 32 минуты полезной информации, без регистрации и смс.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments3

Information

Rating
Does not participate
Registered
Activity