Pull to refresh
16
0

DevOps, Architect

Send message

STM32. Подготавливаем среду разработки в Linux

Level of difficulty Easy
Reading time 21 min
Views 16K
В недавнем времени получилось так, что у меня появилась пара интересных проектов, где одна из составных частей — микроконтроллер STM32. И каждый раз при смене ноутбука или ОС на домашнем компе приходится настраивать окружение для разработки как в первый раз. Плюсом, последние проекты, которые я делал для STM32 — выполнял в Windows, в демо-версии Keil uVision. Но поскольку я давно переехал в Linux — возникла необходимость основательно разобраться и изложить процесс настройки окружения для будущих применений.

Всем, кому интересно — добро пожаловать под кат.

Читать дальше →
Total votes 63: ↑62 and ↓1 +61
Comments 31

Go — 100 вопросов/заданий с собеседований

Level of difficulty Medium
Reading time 87 min
Views 53K

Приветствую тебя, хаброжитель!

В этой статье разберём 100 вопросов, они покрывают львиную долю того, что могут спросить на собеседовании джуниор Go-разработчика с практически любой специализацией. Конечно же, в реальной работе на Go требуются немного другие скиллы, чем умение быстро ответить на любой вопрос. Однако сложилась добрая традиция делать из собеседования викторину с главным призом в виде трудоустройства — к этому нужно быть готовым.

Читать далее
Total votes 51: ↑42 and ↓9 +33
Comments 14

Создаем I2C Master Controller на Verilog. Проверим работу на реальном железе

Level of difficulty Medium
Reading time 22 min
Views 5.5K
После того, как Я реализовал битовый контроллер I2C Master — уж очень чесались руки опробовать его в реальной задаче. Теперь можно начинать строить уровни абстракции от манипуляции отдельными битами и уже формировать полноценные транзакции, которые приводят к какому-либо действию с подчиненным устройством. Я подумал, что было бы классно сделать такую проверку своего автомата во взаимодействии с простейшей I2C 2K-bit EEPROM.

Идея простая — читаем и записываем данные по нажатию клавиш на одной из отладок с Cyclone IV, которые я рассматривал в одном из своих обзоров.

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

image


Читать дальше →
Total votes 61: ↑60 and ↓1 +59
Comments 8

Разработка и интерпретация иерархической кластеризации

Level of difficulty Easy
Reading time 6 min
Views 2.2K

Привет Хабр!

Иерархическая кластеризация является мощным методом анализа данных, позволяющим группировать схожие объекты в кластеры. В этой статье мы рассмотрим процесс разработки и интерпретации иерархической кластеризации, погружаясь в методы создания кластеров и анализа результатов. Мы изучим этот подход, который визуализирует данные в виде дендрограммы, что позволяет наглядно оценить структуру полученных кластеров. Разберем основные шаги этого метода, включая выбор метрик расстояния, выполнение кластеризации и интерпретацию результатов. Давайте вместе углубимся в этот увлекательный мир анализа данных с использованием иерархической кластеризации.

Читать далее
Total votes 11: ↑10 and ↓1 +9
Comments 0

Web Workers в JavaScript: Параллельные вычисления и улучшение производительности

Level of difficulty Medium
Reading time 8 min
Views 9.2K

В современном мире пользователи становятся все более требовательными к производительности веб‑сайтов и хороший пользовательский опыт выходит на первый план. Даже малейшее зависание или отсутствие плавности могут привести к потере пользователей.

Есть случаи, когда эту проблему можно решить с помощью Web Workers, про них я и расскажу вам далее!

Бустануть производительность
Total votes 20: ↑19 and ↓1 +18
Comments 6

Где в Москве жить «неплохо»

Level of difficulty Easy
Reading time 5 min
Views 28K

В одной прошлых публикации получил массу полезных коментариев от читателей. Среди них просили для Москвы кроме "плохих" районов было бы интересно увидеть и хорошие.

Честно скажу, что определить какие хорошие непросто. Ведь у каждого свое понятие о том что такое хорошо и нужен доступ к данным, которого у нас нет. Поэтому давайте посмотрим где жить "неплохо". Не жить рядом с тем, что влияет на качество воздуха, уровень шума, ежедневное memento mori, близость к промышленности, безопасность. Найдем группы домов в Москве в пределах МКАД, отдаленные на 150м от перечисленных факторов. Если живете в Москве, то удивитесь - вашего дома скорее всего не будет на этой карте

Читать далее
Total votes 33: ↑31 and ↓2 +29
Comments 209

Учимся разворачивать микросервисы. Часть 4. Jenkins

Reading time 14 min
Views 110K


Привет, Хабр!


Это четвертая и заключительная часть серии статей "Учимся разворачивать микросервисы", и сегодня мы настроим Jenkins и создадим пайплайн для микросервисов нашего учебного проекта. Jenkins будет получать файл конфигурации из отдельного репозитория, собирать и тестировать проект в Docker-контейнере, а затем собирать Docker-образ приложения и пушить его в реестр. Последней операцией Jenkins будет обновлять кластер, взаимодействуя с Helm (более подробно о нем в прошлой части).

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

Учимся разворачивать микросервисы. Часть 3. Helm

Reading time 21 min
Views 67K


Привет, Хабр!


Это третья часть в серии статей "Учимся разворачивать микросервисы", и сегодня речь пойдет о Helm 3. В прошлой части мы создали Kubernetes конфигурацию для учебного проекта из 2 микросервисов (бекенда и шлюза) и задеплоили все это в Google Kubernetes Engine. В этой статье мы напишем Helm-чарт для нашей системы, создадим для него репозиторий на основе GitHub Pages и задеплоим проект в GKE с помощью Helm.

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

Учимся разворачивать микросервисы. Часть 2. Kubernetes

Reading time 17 min
Views 58K


Привет, Хабр!


Это вторая часть из серии статей "Учимся разворачивать микросервисы". В предыдущей части мы написали 2 простеньких микросервиса — бекенд и шлюз, и разобрались с тем, как их упаковать в docker-образы. В этой же статье мы будем организовывать оркестрацию наших docker-контейнеров с помощью Kubernetes. Мы последовательно составим конфигурацию для запуска системы в Minikube, а затем адаптируем ее для деплоя в Google Kubernetes Engine.

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

Учимся разворачивать микросервисы. Часть 1. Spring Boot и Docker

Reading time 7 min
Views 88K


Привет, Хабр.


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


Изначально я разбил создание проекта на несколько шагов:


  1. Создать два сервиса — 'бекенд' (backend) и 'шлюз' (gateway), упаковать их в docker-образы и настроить их совместную работу


    Ключевые слова: Java 11, Spring Boot, Docker, image optimization


  2. Разработка Kubernetes конфигурации и деплой системы в Google Kubernetes Engine


    Ключевые слова: Kubernetes, GKE, resource management, autoscaling, secrets


  3. Создание чарта с помощью Helm 3 для более эффективного управления кластером


    Ключевые слова: Helm 3, chart deployment


  4. Настройка Jenkins и пайплайна для автоматической доставки кода в кластер


    Ключевые слова: Jenkins configuration, plugins, separate configs repository



Каждому шагу я планирую посвятить отдельную статью.


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

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

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

Level of difficulty Medium
Reading time 17 min
Views 67K
image

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!
Читать дальше →
Total votes 250: ↑248 and ↓2 +246
Comments 137

Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто

Level of difficulty Easy
Reading time 11 min
Views 322K

В серии предыдущих статей я описывал, почему повсеместно используемые VPN- и прокси-протоколы такие как Wireguard и L2TP очень уязвимы к выявлению и могут быть легко заблокированы цензорами при желании, обозревал существующие гораздо более надежные протоколы обхода блокировок, клиенты для них, а также описывал настройку сервера для всего этого.

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

Кроме того, что этот протокол еще более устойчив к выявлению, приятным фактом будет и то, что настройка сервера XTLS-Reality гораздо проще, чем описанные ранее варианты - после предыдущих статей я получил довольно много комментариев типа "А что так сложно, нужен домен, нужны сертификаты, и куча всего" - теперь все будет гораздо проще.

Читать далее
Total votes 37: ↑37 and ↓0 +37
Comments 304

Подборка телеграм-каналов для DevOps инженеров

Reading time 3 min
Views 31K

Приветствую, братцы!

Задача получения актуальной информации и совета опытных коллег сегодня актуальна как никогда. С одной стороны, сложно превзойти крупнейшие ИТ-сообщества в Slack. С другой стороны, важно иметь контакт с коллегами в нашей стране, в своем городе. Телеграм за последние годы стал крупнейшей площадкой для русскоязычного ИТ-сообщества, присоединяйтесь, не отставайте :)

Подборка телеграм-каналов и чатов
Total votes 14: ↑14 and ↓0 +14
Comments 36

Повышаем прозрачность аудита работы в Gitlab

Level of difficulty Medium
Reading time 41 min
Views 2.1K

Многие компании выбирающие для себя средства хранения кода и «комбайны» организации процессов CI/CD останавливают свой выбор на Gitlab. С точки зрения небольших и больших организаций, функционала Gitlab вполне хватает, чтоб решать повседневные задачи разработки. Продукт хорошо документирован, имеет платные подписки с расширением функционала (множество доменов для аутентификации, полнотекстный поиск, системные хуки и прочее).

Как показала практика использования продукта, основные проблемы начинаются при попытке кастомизировать или расширить внутренний функционал системы. В нашем случае в качестве расширения функционала рассматривается улучшение уровня аудита по работе с репозиториями в части соответствия требованиям ЦБ и ГОСТ Р 56 939–2016.

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

11 полезных плагинов для kubectl

Level of difficulty Easy
Reading time 4 min
Views 7.1K

Kubectl (Kubernetes Control) — это по сути основной интерфейс для взаимодействия с Kubernetes-кластером. Сторонние разработчики сделали для него много полезных плагинов, которые в той или иной ситуации могут облегчить работу инженера и сэкономить время. В этой статье рассмотрим 11 удобных плагинов для расширения функционала kubectl.

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

Продвинутая работа с логами в Linux

Level of difficulty Medium
Reading time 6 min
Views 21K

Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.

Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.

Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.

Читать далее
Total votes 27: ↑26 and ↓1 +25
Comments 12

GlusterFS как внешнее хранилище для Kubernetes

Reading time 8 min
Views 28K
image
Поиск оптимального хранилища — это довольно сложный процесс, у всего есть плюсы и минусы. Разумеется, лидером в данной категории является CEPH, но это довольно сложная система, хотя и с очень богатым функционалом. Для нас такая система избыточна, учитывая то, что нам нужно было простое реплицируемое хранилище в режиме master-master на пару терабайт. Изучив много материала, было принято решение протестировать наиболее модный на рынке продукт для интересующей нас схемы. В связи с тем, что готового решения подобного плана найдено не было, хочется поделиться своими наработками по данной теме и описать проблемы, с которыми мы столкнулись в процессе развертывания.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 12

Оценка параметров системы дифференциальных уравнений по неточным наблюдениям

Level of difficulty Hard
Reading time 7 min
Views 2.3K

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

Читать далее
Total votes 13: ↑10 and ↓3 +7
Comments 11

Основы Ansible, без которых ваши плейбуки — комок слипшихся макарон

Reading time 12 min
Views 132K

Я делаю много ревью для чужого кода на Ансибл и много пишу сам. В ходе анализа ошибок (как чужих, так и своих), а так же некоторого количества собеседований, я понял основную ошибку, которую допускают пользователи Ансибла — они лезут в сложное, не освоив базового.


Для исправления этой вселенской несправедливости я решил написать введение в Ансибл для тех, кто его уже знает. Предупреждаю, это не пересказ манов, это лонгрид в котором много букв и нет картинок.


Ожидаемый уровень читателя — уже написано несколько тысяч строк ямла, уже что-то в продакшене, но "как-то всё криво".

Читать дальше →
Total votes 112: ↑110 and ↓2 +108
Comments 66

Information

Rating
Does not participate
Registered
Activity