Pull to refresh
0
0

User

Send message

Краткое руководство как стать Google Certified Associate Android Developer

Reading time 7 min
Views 31K
image В данной статье я вкратце опишу процесс получения сертификата начинающего андроид разработчика. Разработкой под андроид я занимаюсь уже более 4-х лет, но до настоящего момента так и не удосужился обзавестись никаким соответствующим сертификатом, хотя парочкой сертификатов по Java я обзавелся. А сложилось так по одной простой причине — сертификаты андроид разработчиков выдавали какие угодно компании, кроме собственно компании разработчика этого самого Android. Вышеупомянутые Java сертификаты были выданы компанией Oracle, что делает их наличие хоть немного осмысленными.

И вот наконец свершилось — Google открыла свою программу сертификации андроид разработчиков. Но и тут не обошлось без ложки дегтя — пока доступен только сертификат начинающего андроид разработчика. Мне он в общем-то без надобности, но любопытство и тяга к коллекционированию подтолкнули меня к его получению. Полезность получения сертификатов как таковая является отличной темой для холивара. Я немного затрону этот вопрос в конце статьи, а пока перейду к описанию процесса.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 10

12 млрд реквестов в месяц за 120$ на java

Reading time 6 min
Views 27K
Когда Вы запускаете свой продукт — Вы совершенно не знаете, что произойдет после запуска. Вы можете так и остаться абсолютно никому не нужным проектом, можете получить небольшой ручеек клиентов или сразу целое цунами пользователей, если про Вас напишут ведущие СМИ. Не знали и мы.

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

Упрощенно задача выглядела так — нужно соединить микроконтроллер с мобильным приложением через интернет. Пример — нажимаем кнопку в приложении зажигается светодиод на микроконтроллере. Тушим светодиод на микроконтроллере и кнопка в приложении соответственно меняет статус.

Так как мы стартовали проект на кикстартере, перед запуском сервера в продакшене у нас уже была довольно большая база первых пользователей — 5000 человек. Наверное многие из Вас слышали про известный хабра эффект, который положил в прошлом многие веб ресурсы. Мы, конечно же, не хотели повторять эту участь. Поэтому это отразилось на подборе технического стека и архитектуре приложения.

Сразу после запуска вся наша архитектура выглядела так:



Это была 1 виртуалка от Digital Ocean за 80$ в мес (4 CPU, 8 GB RAM, 80 GB SSD). Взяли с запасом. Так как “а вдруг лоад пойдет?”. Тогда мы действительно думали, что, вот, запустимся и тысячи пользователей ринут на нас. Как оказалось — привлечь и заманить пользователей та еще задача и нагрузка на сервер — последнее о чем стоит думать. Из технологий на тот момент была лишь Java 8 и Netty с нашим собственным бинарным протоколом на ssl/tcp сокетах (да да, без БД, spring, hibernate, tomcat, websphere и прочих прелестей кровавого энтерпрайза).

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

try (BufferedWriter writer = Files.newBufferedWriter(fileTo, UTF_8)) {
  writer.write(user.toJson());
}

Читать дальше →
Total votes 58: ↑56 and ↓2 +54
Comments 64

Как работает Git

Reading time 19 min
Views 148K
В этом эссе описана схема работы Git. Предполагается, что вы знакомы с Git достаточно, чтобы использовать его для контроля версий своих проектов.

Эссе концентрируется на структуре графа, на которой основан Git, и на том, как свойства этого графа определяют поведение Git. Изучая основы, вы строите своё представление на достоверной информации, а не на гипотезах, полученных из экспериментов с API. Правильная модель позволит вам лучше понять, что сделал Git, что он делает и что он собирается сделать.

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

После прочтения для ещё более глубокого погружения можно обратиться к обильно комментируемому исходному коду моей реализации Git на JavaScript.
Читать дальше →
Total votes 110: ↑99 and ↓11 +88
Comments 38

Безопасность Android-приложений. Лекция в Яндексе

Reading time 10 min
Views 32K
Разработчик Дмитрий Лукьяненко, чью лекцию мы публикуем сегодня, не только является специалистом Яндекса, но и умеет проверять на прочность решения разработчиков других компаний. Это позволяет учиться на чужих ошибках — не исключая порой своих, конечно. В докладе Дмитрий поделится примерами Android-уязвимостей, в том числе найденных им собственноручно. Каждый пример сопровождается рекомендациями — как нужно и как не нужно писать приложения под Android.



Меня зовут Дмитрий, я работаю в компании Яндекс в минском офисе, занимаюсь разработкой аккаунт-менеджера. Это библиотека, которая отвечает за авторизацию пользователей. Поэтому мы поговорим о безопасности Android-приложений.
Total votes 68: ↑68 and ↓0 +68
Comments 14

Анализ трафика Android-приложений: обход certificate pinning без реверс-инжиниринга

Reading time 4 min
Views 45K
Иногда нужно исследовать работу бэкенда мобильного приложения. Хорошо, если создатели приложения не заморачивались и все запросы уходят по «голому» HTTP. А что, если приложение для запросов использует HTTPS, и отказывается принимать сертификат вашего корневого удостоверяющего центра, который вы заботливо внедрили в хранилище операционной системы? Конечно, можно поискать запросы в декомпилированом приложении или с помощью реверс-инжиниринга вообще отключить применение шифрования, но хотелось бы способ попроще.

image
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 11

DUMP-2016: видео всех докладов в одном посте. Бесплатно. Без СМС

Reading time 9 min
Views 22K
8 апреля в Екатеринбурге прошла конференция DUMP. Под катом — видео 60-и докладов про frontend, serverside, devops, mobile, дизайн, управление разработкой и тестирование, плюс все презентации и фотографии с прошедшей конференции. А вот короткий отчетный ролик про DUMP-2016.


Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Comments 2

1 разработчик. 2 приложения. 3 года

Reading time 15 min
Views 28K
Всем здравствуйте! Давно уже собирался написать историю своего проекта на Хабр, более того, даже обещал. И тем не менее, этот момент откладывался на потом: когда выйдет новый релиз, когда закончится обновление дизайна, когда все заработает, как задумано. Причина одна – лень, прикрывающаяся отсутствием времени.

image

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

Читать дальше →
Total votes 39: ↑35 and ↓4 +31
Comments 40

Кюветы Android, Часть 3: SDK и RxJava (Финал)

Reading time 18 min
Views 20K
Android SDK и «внезапности» — почти близнецы. Вы можете наизусть знать development.android.com, но при этом продолжать рвать на себе волосы при попытке сделать что-то покруче, чем форма-кнопка-прогрессбар.
Это заключительная, третья, часть из серии статей о Кюветах Android'а. На деле конечно их должно было быть десятка два, но я слишком скромный. На этот раз я наконец дорасказываю о неприятностях в SDK, с которыми мне довелось столкнуться, а так же затрону популярную нынче технологию ReactiveX.
В общем, Android SDK, RxJava, Кюветы — поехали!
image
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 17

Делаем UI плагина в IntelliJ Idea «как у maven'a»

Reading time 5 min
Views 8.1K

Предыстория


Встала задача создать для разработчиков и QA удобный способ стартовать порядка 20 серверных приложений, живущих в общем репозитрии (Spring с XML конфигурацией и общим для все частей приложения бутстрап классом).


Как сделать нечто удобное человеку, который последний раз GUI рисовал в Borland Delphi 6.0? Взять что-то уже готовое и приспособить для своих нужд, ну и раз уж будущие пользователи работают в IntelliJ Idea, появилась мысль соорудить плагин, который будет выглядеть и вести себя так, как это делает Maven Integration Plugin.


image


Под катом классы и некоторые утилитарные методы, которые помогут это сделать.

Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 0

Микросервисная архитектура, Spring Cloud и Docker

Reading time 14 min
Views 257K

Привет, Хабр. В этой статье я кратко расскажу о деталях реализации микросервисной архитектуры с использованием инструментов, которые предоставляет Spring Cloud на примере простого концепт-пруф приложения.



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

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 32

«Половина научных работ по Concurrency — полная чушь!» — интервью с Романом Елизаровым из Devexperts

Reading time 26 min
Views 43K
Добрый день, это «Без слайдов». В гостях у меня побывал Роман Елизаров aka elizarov, Java Champion, эксперт по Java и многопоточности (а с недавнего времени — еще и по финансовой математике), спикер многочисленных конференций, председатель жюри Северо-Восточного Европейского региона ACM-ICPC, престижнейшей в мире олимпиады по программированию, лектор в ИТМО и, наконец, VP по технологиям в компании Devexperts. В общем, «человек и пароход».

В разговоре мы затронули следующие темы:
  • что такое финансовая математика и как ее учить;
  • как устроен софт для финансовой индустрии;
  • как в компании Devexperts появилась исследовательская лаборатория по многопоточности;
  • куда развивается Concurrency, и что будет в моде в ближайшее время;
  • как всемирная олимпиада по программированию пришла в Россию.




Текстовая версия — под катом.
Читать дальше →
Total votes 75: ↑67 and ↓8 +59
Comments 27

Есть ли жизнь без Google Play? Альтернативы и обновление приложений

Reading time 7 min
Views 105K

На днях я сделал приложение для обхода блокировки rutracker, однако уже дважды получил от Google отбой по разным надуманным причинам. Это очень огорчило, и возник вопрос — что делать? Поиск по хабру показал, что такие проблемы возникли очень у многих (пруфы: один, два, три, четыре… Тысячи их).
А помимо бана есть ещё много причин, по которым ваше приложение может оказаться «за бортом» Google Play — например, если оно предназначено для использования только в компании, для друзей или для другого круга лиц. Так же возможно, что ваше приложение по определению не может быть выложено на Google Play — например, если оно является само по себе установщиком приложений.

Готовой статьи на эту тему я не нашёл, так что решил, что верным решением будет разобраться и написать свою. Итак, принципиальных варианта есть всего два.
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Comments 36

Google's beacon platform. Часть 1 — Proximity beacon API

Reading time 7 min
Views 11K
Google's beacon platform — это решение для работы с Bluetooth маячками. Платформа работает с разными маячками от разных производителей, предоставляя разработчикам единый, простой и гибкий инструмент.


Перед прочтением этой статьи я рекомендую ознакомиться с концепцией Physical Web о которой я рассказывал в своей прошлой статье: Концепция Physical web. Bluetooth маячки. Сравнение стандартов iBeacon, AltBeacon и Eddystone.

Google's beacon platform. Часть 1 — Proximity beacon API
Google's beacon platform. Часть 2 — Nearby meassages API

Google's beacon platform позволяет нам избежать необходимости физического контакта с маячками для их переконфигурирования, как и в случае с Physical Web, когда мы транслируем обычный URL(Eddystone-URL), мы можем лишь менять вложения которые привязаны к маячкам, тем самым управлять маячками удаленно. Данное решение так же позволяет мониторить все наши маячки удаленно. Как это реализовано я расскажу дальше.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 0

С-вызовы в Go: принцип работы и производительность

Reading time 14 min
Views 21K

Язык Go в последнее время неоднократно обсуждался на хабре — его и критиковали , и хвалили. Мы в Intel любим Go и участвуем в open-source разработке этого проекта. Если вы тоже используете Go, интересуетесь его внутренним строением и вопросами наиболее эффективного программирования на этом замечательном языке, то добро пожаловать под кат. Статья будет о том, каким образом в Go реализован механизм внешних вызовов, и насколько быстро он работает.
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Comments 4

Создание плагина для Intellij IDEA. Заметки и мелкие советы

Reading time 4 min
Views 23K
Полгода назад или около того я загорелся-таки идей написать свой плагин для Intellij IDEA. Согласно задумке, он должен был считать, сколько времени разработчик потратил на проект (всего, за день, за сеанс) и отображать результат на диаграмме. Никакой магии, но такая функция здорово помогла бы мне рассчитывать время работы.


И что из этого вышло?
Total votes 16: ↑16 and ↓0 +16
Comments 17

Достаточно Git-а, чтобы быть (менее) опасным

Reading time 23 min
Views 131K
imageТы просто-напросто ненавидишь Git? Ты абсолютно счастлив с Mercurial (или, фу, с Subversion), но раз в месяц тебе приходится отважно сталкиваться с Git, потому что каждый, даже его чертова собака, теперь использует GitHub? Тебя терзают смутные подозрения, что половина всех команд Git на самом деле удалят всю твою работу навсегда, но ты не знаешь какие именно и не хочешь проводить три недели, углубляясь в документацию?

Хорошие новости! Я написал тебе этот изумительный Интернет-пост. Я надеюсь, что смогу размазать достаточно Git-а по твоему лицу, чтобы понизить вероятность сделать что-то непоправимое, а так же уменьшить твой страх что-то сломать. Этого должно быть также достаточно, чтобы сделать документацию Git немного более понятной; она крайне тщательно и глубоко проработана и очень глупо, если ты все еще не прочитал половину.

Я постараюсь излагать коротко, но также, чтобы это было потенциально полезно тем людям, кто вообще никогда не сталкивался с контролем версий, поэтому повсюду будет разбросан 101 совет. Не бойся! Я не думаю, что пользователи Mercurial понятия не имеют, что такое патч.
Но подожди! Там еще...
Total votes 131: ↑103 and ↓28 +75
Comments 365

Чеклист: Как загружать страницы быстрее

Reading time 2 min
Views 30K
Мы постоянно работаем над тем, чтобы IaaS был простым и понятным даже для тех, кто не сталкивался с ИТ-сферой. Для этого мы проводим оптимизацию всех систем и рассказываем о своем опыте в нашем блоге на Хабре.

Пара примеров:


Сегодня мы поговорим о том, как ускорить загрузку страниц, и взглянем на советы эксперта по Ruby Нейта Беркопеца (Nate Berkopec).

Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 22

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

Reading time 11 min
Views 27K


Ночная зала. Тысячи таинственных ликов в темноте, подсвеченных голубоватым свечением мониторов. Оглушительный треск миллиона клавиш. Подобные выстрелам автомата удары по клавишам «Enter». Зловещее стрекотание сотен тысяч мышек… Так, наверняка, играло воображение каждого разработчика высоконагруженной системы. И если его вовремя не остановить, то может выйти целый триллер или фильм ужасов. Но в данной статье мы будем гораздо ближе к земле. Мы кратко рассмотрим известные подходы к решению задачи поисковых подсказок, как мы научились делать их полнотекстовыми, а также расскажем о парочке уловок, на которые мы пошли, чтобы придать им скорости, но при этом не научить жадности к ресурсам. В конце статьи вас ждёт бонус — небольшой рабочий пример.
Читать дальше →
Total votes 64: ↑60 and ↓4 +56
Comments 14

Некоторые возможности Python о которых вы возможно не знали

Reading time 8 min
Views 112K

Предисловие


Я очень полюбил Python после того, как прочитал книгу Марка Лутца «Изучаем Python». Язык очень красив, на нем приятно писать и выражать собственные идеи. Большое количество интерпретаторов и компиляторов, расширений, модулей и фреймворков говорит о том, что сообщество очень активно и язык развивается. В процессе изучения языка у меня появилось много вопросов, которые я тщательно гуглил и старался понять каждую непонятую мной конструкцию. Об этом мы и поговорим с вами в этой статье, статья ориентирована на начинающего Python разработчика.

Подробности
Total votes 92: ↑75 and ↓17 +58
Comments 31

Материалы продвинутого уровня по Питону

Reading time 5 min
Views 43K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее
Total votes 136: ↑133 and ↓3 +130
Comments 23

Information

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