Search
Write a publication
Pull to refresh
13
0
Михаил @Mikhail_dev

User

Send message

Построение Android приложений шаг за шагом, часть первая

Reading time8 min
Views146K


В этой статье мы поговорим о проектировании архитектуры и создании мобильного приложения на основе паттерна MVP с использованием RxJava и Retrofit. Тема получилась довольно большой, поэтому подаваться будет отдельными порциями: в первой мы проектируем и создаем приложение, во второй занимаемся DI с помощью Dagger 2 и пишем тесты unit тесты, в третьей дописываем интеграционные и функциональные тесты, а также размышляем о TDD в реалиях Android разработки.
Читать дальше →

Несколько вещей, о которых стоит помнить программисту в возрасте

Reading time11 min
Views128K
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже став немного старше всё ещё ощущаете страсть к программированию, радуетесь виду кода и не можете устоять перед желанием написать ещё что-нибудь, тогда продолжайте читать.

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

Я смирился с мыслью, что мой лучший код уже написан — в прошлом. Мне было уже 54 года (немало!) и я, вероятно, уже не мог писать код так же хорошо, как и раньше. Кто знает — может быть у меня уже начала отказывать память, ну или я просто выучил всё, что был способен в жизни выучить. Мой настрой подкреплялся наблюдениями окружающей меня реальности. Все новые технологии выглядели для меня чудаковато. Я ненавидел Node.js. Я считал все фреймворки для веб-разработки ужасными. И я сетовал на то, что классические способы разработки ПО разрушились и превратились в набор клише, которые нынче впариваются под умными названиями типа Agile или «экстремальное программирование». Я скучал за днями, когда люди писали спецификацию на будущее ПО, программировали, а затем тщательно тестировали его. И когда в каждой статье не было тысячи жаргонных словечек.
Читать дальше →

Самые радиоактивные места на Земле [Озвучка Vert Dider]

Reading time1 min
Views23K


Кто на Земле подвергается наиболее сильному ионизирующему излучению? Дерек Мюллер на своем канале Veritasium рассказывает, как он проехался по земному шару в поисках наиболее радиоактивных мест в рамках съёмки документального фильма для телевидения об уране и о том, как он изменил современный мир.

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

Gradle: управляя зависимостями

Reading time10 min
Views138K
Управление зависимостями – одна из наиболее важных функций в арсенале систем сборки. С приходом Gradle в качестве основной системы сборки Android-проектов в части управления зависимостями произошёл существенный сдвиг, закончилась эпоха ручного копирования JAR-файлов и долгих танцев с бубном вокруг сбоящих конфигураций проекта.



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

Внимание много текста и изображений

Тотальная шаблонизация

Reading time9 min
Views28K


Когда собаке программисту нечего делать, он начинает все автоматизировать. Мне по роду своей деятельности приходится писать много кода и, конечно, хочется какие-то повторяющие вещи обобщить в виде библиотек, скриптов или шаблонов для Android Studio. О них и поговорим.

Поехали

Итоги 2015 года для Android-разработчиков

Reading time8 min
Views19K
2015 год закончился, а это значит, что настала пора подвести итоги. Что же важного, полезного и интересного для Android-разработчиков произошло в ушедшем году — читайте в нашем блоге.


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

Почему в России почти нет гражданского/коммерческого высокотехнологичного производства?

Reading time27 min
Views412K
Статью с обзором ситуации с микроэлектроникой в России я закончил утверждением, что сейчас в России есть технические возможности для создания любых военных микросхем (если не считаться с ценой). Однако и в комментариях к той статье, и во многих других — всех больше волновал вопрос отсутствия (на уровне погрешности измерений) производства чисто-коммерческих (гражданских) высокотехнологичных продуктов. Этот вопрос волновал и меня, потому я постоянно мучил вопросами всех, кто так или иначе связан с высокими технологиями и бизнесом в России.

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

Под катом попробуем разобраться чем отличаются «высокотехнологичные» компании от «низкотехнологичных», что нужно, чтобы высокотехнологичные компании могли рождаться и выживать, почему с софтом у нас лучше, чем с хардом, с чего начиналась кремниевая долина в США и можно ли её «скопировать», почему Китай всех рвет, а также — окинем взором все, что происходит в Сколково, Роснано, фонде перспективных исследований и приведут ли они к расцвету российских инноваций. Безусловно, я где-то могу ошибаться — буду рад дополнениям в комментариях.

Сразу нужно отметить, что в связи с многогранностью проблемы объем статьи получился довольно большой, так что можно начать читать с резюме в конце, и затем прочитать лишь те разделы, которые вызовут интерес. Сразу хочу предупредить — повествование «нелинейное», соседние заголовки могут описывать разные аспекты проблемы и быть друг с другом практически не связанными.
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #135 (21-27 декабря)

Reading time3 min
Views11K
В последнем дайджесте 2015 года история Сбербанка, песочница для Swift, конкурс игр Unity для Windows Store, конкурс приложений ВКонтакте, много аналитики. Ну а вообще – с Новым годом! Делайте хорошие приложения, не делайте плохих! :)

C наступающим!

Приобретение пользователей для мобильных приложений: Post install оптимизация

Reading time4 min
Views5K
Покупка больших объемов дешевого трафика, в том числе мотивированного, уже не так эффективна, как раньше. В чем причины? Во-первых, на это повлиял рост конкуренции в магазинах приложений. Во-вторых, рекламные сети начинают конкурировать за паблишеров – соответственно, стоимость установки растет. И третья причина — это ухудшение качества мобильных игр из-за ускорения скорости разработки.

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

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

Диванный маркетинг мобильной игры (120.000 установок в первый месяц. Совпадение?)

Reading time4 min
Views17K

Часто ли вам приходилось слышать фразы “я не собираюсь тратить ни копейки на продвижение”, “хорошая игра сама себя продаёт”, “у тех парней получилось, и у меня получится”, а чуть позже — “игра не пошла”, “на рынке нет места независимому одиночке”, “золотое время инди-игр прошло”?

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

Мне никогда не нравился такой подход, поэтому на старте мы немного потратились на неумелый “диванный” маркетинг. И наша первая игра не провалилась. Отбила затраты, заработала сверху, получила отличные отзывы — 5 звезд в (AppStore) и 4.7 в (GooglePlay), и даже спустя 9 месяцев не спешит отправляться в “Долину Смерти” приложений. Но сейчас, видя такой отклик аудитории, появляются сомнения — а действительно ли был толк в нашей небольшой “PR-кампании” или нам просто повезло? Ошибка выжившего? Совпадение? Может, попав в топ новинок GooglePlay, мы бы и так нашли своих игроков?

Я изложу факты, покажу графики и цифры, а выводы предлагаю сделать вместе в комментариях — раскрутилась бы игра сама или всё-таки без продвижения никто бы о ней не узнал?
Читать дальше →

Dagger 2 и структура приложения для Android

Reading time11 min
Views81K

Добрый день! Наша команда уже больше года занимается разработкой почтового клиента МойОфис для платформы Android (приложения МойОфис мы разрабатываем для всех популярных платформ).

Сегодня мы хотим рассказать о технологиях, которые мы используем в разработке нашего почтового клиента. А именно, о механизмах Dependency Injection в виде библиотеки Dagger 2. В статье мы опишем основные части библиотеки и расскажем, как их использовать в Android-проекте.
Подробности

Сбербанк делится опытом создания приложения в Material Design: стили и темы

Reading time20 min
Views53K
Привет, Хабрахабр! Не так давно мы подводили итоги конкурса по Material Design, и в комментариях нас просили показать реально популярные и красивые Material-приложения. Что же, встречайте: «Сбербанк Онлайн» в новом, современном интерфейсе. Про процесс создания приложения интереснее узнать от самих создателей.

Мы передаём слово команде разработчиков Android-приложения Сбербанка, чтобы вы услышали об опыте создания такой сложной штуки, как UI мобильного банк-клиента, из первых уст. Большую часть поста написал freeuser, так что спасибо говорите ему. ;)
Читать дальше →

Гайдлайны Apple для iOS-приложений устарели

Reading time2 min
Views48K
Без Стива Джобса Apple стала часто идти на компромиссы. И вот что случается, когда из компании уходит человек, который способен говорить «Нет» не до конца проработанным решениям:



Но сегодня я хочу обратить внимание на UI/UX проблему iPhone 6 и 6 Plus, которая существует уже более 2-х лет и которую большинство UI/UX дизайнеров игнорируют.
Читать дальше →

Немного о сборке мобильного приложения

Reading time23 min
Views29K
image

Я помню то замечательное время, когда сборка релизной версии мобильного приложения сводилась к тому, что нужно было выставить debug = false и запустить экспорт apk-файла. Проходит 2 минуты, пока пыхтит IDE, и все готово. Все усилия сосредотачивались на необходимости указать данные сертификата подписи. Это было совсем недавно. Cейчас процесс сборки того самого приложения разросся настолько, что, если мне, вдруг, потребуется выполнить все операции самостоятельно, и даже если я все вспомню и проделаю безошибочно (во что я не верю), то это займет не час, который сегодня кажется непозволительно долгим, а, скорее всего, сутки, после чего терапевт обязан будет прописать мне больничный по усталости недели на две.

Итак, процесс сборки мобильного приложения. Попробую рассказать, из чего он у нас состоит — не потому, что в последнее время стало модным катать посты о CI той или иной мобильной команды (с покером, русалками и прочими обязательными атрибутами), а потому, что это отличный опыт, который я получил, работая над Почтой Mail.Ru для Android, и потому, что этой возможности, вероятнее всего, не было бы, работай я в другой команде, над другим проектом или в другой компании.
Читать дальше →

Дайджест интересных материалов для мобильного разработчика #134 (14-20 декабря)

Reading time3 min
Views12K
В новом дайджесте мы сравниваем Swift и Rust, оцениваем гайдлайны Apple, следим Xamarin.Forms, обновляем приложения в Google Play к Новому году, выводим в топ и смотрим за покупками.

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

Коллекции в Java: о чём многие забывают

Reading time6 min
Views143K
Из опыта code-review и ответов на StackOverflow набралось немало моментов, касающихся Java Collections API, которые мне казались очевидными, но другие разработчики о них почему-то не знали или знали, но не чувствовали уверенности их применять. В этой статье я собираю в общую кучу всё, что накопилось.

Содержание:


  1. List.subList
  2. PriorityQueue
  3. EnumSet и EnumMap
  4. Set.add(E) и Set.remove(E) возвращают булево значение
  5. Map.put(K, V), Map.remove(K), List.set(idx, E), List.remove(idx) возвращают предыдущий элемент
  6. Map.keySet() и Map.values()
  7. Arrays.asList может быть ключом
  8. Collections.max
  9. LinkedList, Stack, Vector, Hashtable
Читать дальше →

Как попасть на дачу президента в пять часов утра

Reading time6 min
Views323K
Этот пост о том, как обычный взлом обернулся муками совести и душевными терзаниями. Исходников будет не много, больше фоток и анализа. Итак, некто Вася работает «плохим парнем». Степень падения Васи такова, что средства на жизнь ему приносит поиск и разбор информации, доступ к которой был скомпрометирован вследствие неграмотного обслуживания, безалаберности или экономии на обслуживающем персонале.


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

Зимняя стажировка для разработчиков в Redmadrobot

Reading time2 min
Views13K
image
Привет, Хабр! Мы открываем набор на вторую стажировку для разработчиков в Redmadrobot. Старт — в середине января.
Интересно? Подробности под катом.

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 1. «Ключ»

Reading time7 min
Views82K
imageКевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

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

Начало и план перевода тут: «Шкворень: школьники переводят книгу про хакеров».
Пролог
Глава 1. «Ключ»
Глава 3. «The Hungry Programmers»
Глава 5. «Cyberwar!»
Глава 34. DarkMarket
(публикуем по мере готовности переводов)

Логика выбора книги для работы со школьниками у меня следующая:
  • книг про хакеров на русском языке мало (полторы)
  • книг про кардинг на русском нет вообще (UPD нашлась одна)
  • Кевин Поулсен — редактор WIRED, не глупый товарищ, авторитетный
  • приобщить молодежь к переводу и творчеству на Хабре и получить обратную связь от старших
  • работать в спайке школьники-студенты-специалисты очень эффективно для обучения и показывает значимость работы
  • текст не сильно хардкорный и доступен широкому кругу, но затрагивает вопросы информационной безопасности, уязвимости платежных систем, структуру кардингового подполья, базовые понятия инфраструктуры интернет
  • книга иллюстрирует, что «кормиться» на подпольных форумах — плохо заканчивается

Кто хочет помочь с переводом других глав пишите в личку magisterludi.

Глава 1. Ключ

(текст переведен в рамках коллективного проекта школьников в лагере GoToCamp, спасибо Алене, Кате, Соне, Грише, Саше и хабраюзеру ShiawasenaHoshi)

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

Как устроены дыры в безопасности: переполнение буфера

Reading time29 min
Views138K
Прим. переводчика: Это перевод статьи Питера Брайта (Peter Bright) «How security flaws work: The buffer overflow» о том, как работает переполнение буфера и как развивались уязвимости и методы защиты.

Беря своё начало с Червя Морриса (Morris Worm) 1988 года, эта проблема поразила всех, и Linux, и Windows.



Переполнение буфера (buffer overflow) давно известно в области компьютерной безопасности. Даже первый само-распространяющийся Интернет-червь — Червь Морриса 1988 года — использовал переполнение буфера в Unix-демоне finger для распространения между машинами. Двадцать семь лет спустя, переполнение буфера остаётся источником проблем. Разработчики Windows изменили свой подход к безопасности после двух основанных на переполнении буфера эксплойтов в начале двухтысячных. А обнаруженное в мае сего года переполнение буфера в Linux драйвере (потенциально) подставляет под удар миллионы домашних и SMB маршрутизаторов.

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

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity