Pull to refresh
73
0
Constantine @Vacxe

Mobile infrastructure nerd

Send message

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

Reading time 8 min
Views 3.9K

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


Вот мы и подошли к заключительной части цикла статей о Канареечных релизах в 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 и решить для себя, стоит ли эта связка более глубокого изучения.

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

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

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



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

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

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

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


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

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

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

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

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

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

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

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



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

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

Reading time 4 min
Views 23K

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


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

Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 5

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

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

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

Reading time 26 min
Views 89K


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

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

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

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

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

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

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

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

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

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



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

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

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

Reading time 8 min
Views 164K


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


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

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

Reading time 11 min
Views 7.5K

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


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


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

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

Reading time 5 min
Views 187K
Знаете сколько в памяти занимает строка? Каких только я не слышал ответов на этот вопрос, начиная от «не знаю» до «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 байтам!

Читать дальше →
Total votes 118: ↑107 and ↓11 +96
Comments 39

Dagger 2.11 & Android

Reading time 8 min
Views 49K

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


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

Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 12

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

Reading time 8 min
Views 15K

image


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


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

Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Comments 2

Основы Elasticsearch

Reading time 12 min
Views 668K

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


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


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

Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 78

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

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

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

Reading time 13 min
Views 60K


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


Содержание


Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 11

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

Reading time 10 min
Views 67K



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


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

Читать дальше →
Total votes 41: ↑38 and ↓3 +35
Comments 18

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

Reading time 8 min
Views 19K


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

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

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

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

Reading time 6 min
Views 22K


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

Information

Rating
Does not participate
Location
Brisbane, Queensland, Австралия
Date of birth
Registered
Activity