Как стать автором
Обновить
73
0
Constantine @Vacxe

Mobile infrastructure nerd

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

Canary деплой с Jenkins-X, Istio и Flagger

Время на прочтение8 мин
Количество просмотров4K

Доброго времени суток, читатель!


Вот мы и подошли к заключительной части цикла статей о Канареечных релизах в Kubernetes и методах их реализации. Желаю приятного чтения и надеюсь, что данный цикл был для вас полезным.




Использование решения Jenkins X для выполнения Canary деплоя в кластере Kubernetes





В этом цикле:


  1. Canary Deployment через GitlabCI + GitOps/Manual Approach
  2. Canary Deployment через Argo Rollouts
  3. Canary Deployment с Istio
  4. (эта статья)

Что мы будем делать здесь?


Мы создадим Jenkins X k8s кластер и тестовое приложение на Python шаг за шагом. Вы можете повторять по примеру, либо просто читать, смотреть иллюстрации и результаты для получения представления о взаимодействии JenkinsX+Flagger+Istio сanary deployment и решить для себя, стоит ли эта связка более глубокого изучения.

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Android изнутри: сравнение Dalvik и ART

Время на прочтение6 мин
Количество просмотров35K
Привет, Хабр! Около полугода назад я публиковал подробный «гайд» по JVM. Пост, в целом, зашел, а в комментариях спросили, не планируется ли “чего-то по андроиду”. Наконец, у меня дошли руки.



В этом посте поговорим о среде выполнения в Android. В частности, я постараюсь кратко, но емко изложить, чем отличается ART и Dalvik, и как со временем улучшились средства разработки в Android. Тема явно не новая, но, надеюсь, придется кстати тем, кто только начинает вникать. Кому интересно — добро пожаловать под кат.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии14

Open source: CI/CD и тестовая инфраструктура Авито для Android

Время на прочтение6 мин
Количество просмотров7.7K
Мы вынесли в open source инфраструктуру Авито для Android: Gradle плагины, эмуляторы и библиотеки для тестов. Наш код будет полезен при автоматизации CI/CD, а также облегчит написание и поддержку автотестов.

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


Читать дальше →
Всего голосов 32: ↑32 и ↓0+32
Комментарии2

«На чём корпорации вертели вашу приватность», Артур Хачуян (Tazeros Global)

Время на прочтение46 мин
Количество просмотров45K
День защиты персональных данных, Минск, 2019 год. Организатор: правозащитная организация Human Constanta.

Ведущий (далее – В): – Артур Хачуян занимается… Можно сказать «на тёмной стороне» в контексте нашей конференции?

Артур Хачуян (далее – АХ): – На стороне корпораций – да.

В: – Он собирает ваши данные, продаёт их корпорациям.

АХ: – На самом деле нет…

В: – И он как раз расскажет, как корпорации могут использовать ваши данные, что происходит с данными, когда они попадают в онлайн. Он не будет, наверное, рассказывать, что с этим делать. Мы подумаем дальше…



АХ: – Расскажу, расскажу. На самом деле долго рассказывать не буду, но на предыдущем мероприятии мне представили человека, которому «Фейсбук» даже аккаунт собаки заблокировал.
Всем привет! Меня зовут Артур. Я действительно занимаюсь обработкой и сбором данных. Конечно же, я не продаю никому никакие персональные данные в открытом доступе. Шучу. Моя сфера деятельности – это извлечение знаний из данных, находящихся в открытых источниках. Когда что-то юридически является не персональными данными, но из этого можно извлечь знания и сделать их такими же по значимости, как если бы эти данные были получены из персональных данных. Ничего на самом деле страшного рассказывать не буду. Здесь, правда, про Россию, но про Белоруссию у меня тоже есть цифры.
Всего голосов 78: ↑71 и ↓7+64
Комментарии92

Использование buildSrc для внедрения дополнительной логики в Gradle

Время на прочтение4 мин
Количество просмотров23K

Интересная заметка от Madis Pink в блоге ZeroTurnaround RebelLabs. Если кто-то вас разбудит посреди ночи и спросит: «какую фичу в Gradle должен знать каждый?» — с уверенностью отвечай, что это buildSrc. Это особый магический Gradle-проект внутри твоего репозитория, доступный всем файлам build.gradle в виде библиотеки.


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

Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии5

Говорящая панда или что можно сделать с FFmpeg и OpenCV на Android

Время на прочтение46 мин
Количество просмотров32K
Эта публикация о том, как можно в Windows скомпилировать библиотеку для обработки видео и аудио FFmpeg под Android в Eclipse с помощью NDK. Вы узнаете, как связать FFmpeg с библиотекой для обработки изображений OpenCV и как это всё можно использовать в Java-коде Android приложения. Всё это будет рассказано в контексте процесса создания Android приложения, основной функционал которого как раз и завязан на использовании этих библиотек и их взаимодействии. Итак, заинтересованных прошу под кат.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии13

Как работает Android, часть 4

Время на прочтение26 мин
Количество просмотров90K


Всем привет! Мы нашли время продолжить серию статей про внутреннее устройство Android. В этой статье я расскажу о процессе загрузки Android, о содержимом файловой системы, о том, как хранятся данные пользователя и приложений, о root-доступе, о переносимости сборок Android и о проблеме фрагментации.

Читать дальше →
Всего голосов 51: ↑51 и ↓0+51
Комментарии25

Настраиваем автоматический запуск UI тестов Android приложения через TeamCity

Время на прочтение5 мин
Количество просмотров5.8K
Рано или поздно любой тестер, развивающий практики автотестирования, сталкивается с проблемой автономного выполнения своих тестов. Причем, если специалист опытный, то он старается столкнуться с этим как можно раньше. Так и я, после первого успешного прогона автотеста локально, решил сразу настроить запуск в TeamCity.

Отмечу, что у нас в компании экспертизы по удаленному запуску инструментальных тестов Android практически нет, поэтому приходилось усердно гуглить, но и там развернутых гайдов не нашел. Посему и решил запилить данную инструкцию.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии0

Для чего хакерам Микротик и как я спрятал 100 тыс. RouterOS от ботнета

Время на прочтение9 мин
Количество просмотров318K
RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.

Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.

Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.

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



С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.

Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
Читать дальше →
Всего голосов 81: ↑80 и ↓1+79
Комментарии115

Kubernetes на голом железе за 10 минут

Время на прочтение8 мин
Количество просмотров165K


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


По ходу этой статьи мы установим Kubernetes 1.6 на реальную (не виртуальную) машину под управлением Ubuntu 16.04 примерно за 10 минут. В результате у вас появится возможность начать изучать взаимодействие с Kubernetes посредством его CLI kubectl.
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии32

Вышел GitLab 10.6: CI/CD для GitHub и углубленная интеграция с Kubernetes

Время на прочтение11 мин
Количество просмотров7.5K

Картинка для привлечения внимания


Непрерывная интеграция, поставка и развертывание являются основополагающими принципами DevOps. В GitLab включена функциональность CI/CD, которая пришлась по душе как разработчикам и аналитикам, так и компаниям в целом.


Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии19

Размер Java объектов

Время на прочтение5 мин
Количество просмотров188K
Знаете сколько в памяти занимает строка? Каких только я не слышал ответов на этот вопрос, начиная от «не знаю» до «2 байта * количество символов в строке». А сколько тогда занимает пустая строка? А знаете сколько занимает объект класса Integer? А сколько будет занимать Ваш собственный объект класса с тремя Integer полями? Забавно, но ни один мой знакомый Java программист не смог ответить на эти вопросы… Да, большинству из нас это вообще не нужно и никто в реальных java проектах не будет об этом думать. Но это, ведь, как не знать объем двигателя машины на которой Вы ездите. Вы можете быть прекрасным водителем и даже не подозревать о том, что значат цифры 2.4 или 1.6 на вашей машине. Но я уверен, что найдется мало людей, которые не знакомы со значением этих цифр. Так почему же java программисты так мало знают об этой части своего инструмента?

Integer vs int

Все мы знаем, что в java — everything is an object. Кроме, пожалуй, примитивов и ссылок на сами объекты. Давайте рассмотрим две типичных ситуации:
//первый случай
int a = 300;
//второй случай
Integer b = 301;

В этих простых строках разница просто огромна, как для JVM так и для ООП. В первом случае, все что у нас есть — это 4-х байтная переменная, которая содержит значение из стека. Во втором случае у нас есть ссылочная переменная и сам объект, на который эта переменная ссылается. Следовательно, если в первом случае мы определено знаем, что занимаемый размер равен:
sizeOf(int)

то во втором:
sizeOf(reference) + sizeOf(Integer)

Забегая вперед скажу — во втором случае количество потребляемой памяти приблизительно в 5 раз больше и зависит от JVM. А теперь давайте разберемся, почему разница настолько огромна.

Из чего же состоит объект?

Прежде чем определять объем потребляемой памяти, следует разобраться, что же JVM хранит для каждого объекта:
  • Заголовок объекта;
  • Память для примитивных типов;
  • Память для ссылочных типов;
  • Смещение/выравнивание — по сути, это несколько неиспользуемых байт, что размещаются после данных самого объекта. Это сделано для того, чтобы адрес в памяти всегда был кратным машинному слову, для ускорения чтения из памяти + уменьшения количества бит для указателя на объект + предположительно для уменьшения фрагментации памяти. Стоит также отметить, что в java размер любого объекта кратен 8 байтам!

Читать дальше →
Всего голосов 118: ↑107 и ↓11+96
Комментарии39

Dagger 2.11 & Android

Время на прочтение8 мин
Количество просмотров49K

В данной статье рассматривается использование специализированного модуля Dagger 2 под android и подразумевается, что у вас есть наличие базовых знаний по Dagger 2.


В Dagger 2.10 был представлен новый модуль специально для Android. Данный модуль поставляется как дополнение, состоящий из дополнительной библиотеки и компилятора.
В версии 2.11 были некоторые небольшие изменения, в частности некоторые классы, были переименованы, поэтому будет использоваться именно эта версия.

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии12

Изучаем App Shortcuts в Android Nougat 7.1

Время на прочтение8 мин
Количество просмотров15K

image


Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Exploring Android Nougat 7.1 App Shortcuts» от Andrei Catinean.


Google выпустил Android Nougat с версией 7.1 (API 25). Появились некоторые интересные функции под капотом. Одна из этих дополнительных функций — app shortcuts. Эта статья расскажет, что они собой представляют, как они работают, и как вы можете их реализовать.

Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии2

Основы Elasticsearch

Время на прочтение12 мин
Количество просмотров672K

Elasticsearch — поисковый движок с json rest api, использующий Lucene и написанный на Java. Описание всех преимуществ этого движка доступно на официальном сайте. Далее по тексту будем называть Elasticsearch как ES.


Подобные движки используются при сложном поиске по базе документов. Например, поиск с учетом морфологии языка или поиск по geo координатам.


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

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии78

AIDL (Android Interface Definition Language) и коммуникация между процессами (IPC)

Время на прочтение5 мин
Количество просмотров34K
В данной статье мы попытаемся описать свой опыт работы с AIDL в Android IPC.
В ней содержится пример приложения с сервисом, который запущен в отдельном процессе.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии7

Работа с сервером с помощью Alamofire на Swift

Время на прочтение13 мин
Количество просмотров60K


Сразу хочу сказать, данная статья предназначена прежде всего для новичков. Здесь не будет best practice, создание сервисов, репозиториев и прочей оптимизации кода. Расскажу про основы работы с запросами и покажу применение на примерах.


Содержание


Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии11

Как создать современную CI/CD-цепочку с помощью бесплатных облачных сервисов

Время на прочтение10 мин
Количество просмотров67K



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


Такой способ создания программного обеспечения используется в процессах Непрерывной интеграции (Continuous Integration) и Непрерывного развертывания (Continuous Deployment), или CI/CD-цепочке. В этой статье мы пройдем по всем шагам настройки такой цепочки, используя для ее построения бесплатные облачные сервисы.

Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии18

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

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


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

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

О том, как этого добиться и пойдет речь в данной статье.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии5

Android + Gradle + CI + CD или Как настроить кормушку для котов

Время на прочтение6 мин
Количество просмотров22K


Здравстуй дорогой читатель. Если тебе незнакомы понятия Continuous integration (CI), Continuous delivery (CD) или же у тебя нет представления как и зачем их нужно использовать, то прошу под кат, где тебя ждет небольшое описание как настроить данные сервисы в своем Android проекте, а также какие бонусы будут получены в итоге.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Комментарии7
1

Информация

В рейтинге
Не участвует
Откуда
Brisbane, Queensland, Австралия
Дата рождения
Зарегистрирован
Активность