Как стать автором
Обновить
1
0
Igor K. @rev42

Пользователь

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

ogen: OpenAPI v3 генератор для Go

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

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


Генератор пишет клиент и сервер, а разработчику остаётся только реализовать интерфейс для сервера. И никаких interface{} и рефлексии, только строгая типизация и кодогенерация.


Я расскажу, чем ogen отличается от существующих решений и почему стоит его попробовать.

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

Развертывание Spring Boot приложения с помощью Nginx, Let's Encrypt и Docker Compose

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

Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.

Недавно я столкнулся с задачей разработать Telegram бота. Казалось бы, что тут сложного? Ну раз надо, то разрабатывай, где тут могут быть сложности? Но вот беда, ранее я не сталкивался с задачей развертывания проекта, тем более было много вопросов касаемо получения SSL сертификата так как Telegram API работает только с HTTPS протоколом. Увы после долгих поисков я так и не нашел статьи, которая ответила бы на все вопросы, поэтому процесс деплоя затянулся из-за того, что пришлось собирать весь материал по кусочкам. Теперь, когда у меня получилось разобраться с этой проблемой, я бы хотел вам рассказать как это сделать, чтобы сэкономить вам время и бонусом 2000 рублей за SSL сертификат.

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

Как правильно оформить Open Source проект

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

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

Читать дальше →
Всего голосов 89: ↑84 и ↓5+79
Комментарии135

Разработчики: не перерабатывайте

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

Старайтесь изо всех сил, чтобы произвести впечатление на своего начальника.

Думайте, что команда Вас уважает за Вашу работу, когда команда токсична.

Создайте иллюзию, что продвигаетесь вперед и Вас замечают.

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

И Вы сгорите, не продвинувшись вперед.

Читать далее
Всего голосов 59: ↑54 и ↓5+61
Комментарии34

Исповедь ничтожества

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

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

P.S. Извиняюсь за кликбейтный заголовок, но, мне кажется, он лучше всего описывает содержание этой статьи.

 P.P.S. Очень много текста внутри. 

Читать далее
Всего голосов 223: ↑211 и ↓12+247
Комментарии385

Моя шпаргалка по Скраму для подготовки к интервью. Часть 1

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

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

Читать
Всего голосов 15: ↑11 и ↓4+8
Комментарии18

Переезд с Evernote на Joplin

Время на прочтение4 мин
Количество просмотров34K
В начале года я составлял список альтернатив Evernote для того, чтобы выбрать, куда бы с него валить. Основные требованием был хостинг на своей территории. Тогда перебрал много чего, фаворитом был Joplin, но решил остаться с Evernote — насущной необходимости валить не было, оставалось ещё полгода подписки и вообще неплохо кормили.

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



Так что нашелся повод свалить. Поехали.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии74

Разработка драйвера сетевого адаптера для Linux. Часть 1

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

В этой статье мы рассмотрим как устроен драйвер сетевого адаптера для Linux.

Cтатью разделим на две части.

В первой части рассмотрим общую структуру сетевого адаптера, узнаем какие компоненты входят в его состав, что такое MAC и PHY, разберемся как подготовить адаптер к работе, сконфигурировать, и как в итоге получать сетевые пакеты.

Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью.

Во второй части статьи приведем драйвер к нормальному виду, с использованием стандартных фреймворков и описанием того, что надо указать в Device Tree, и рассмотрим как передавать сетевые пакеты.

Нам нужна макетная плата с сетевым адаптером, на которую можно поставить Linux. Возьмем Orange Pi Zero на платформе Allwinner H2+. В состав платформы входят четыре процессорных ядра Cortex-A7, поддерживается ОЗУ стандартов LPDDR2, LPDDR3, DDR3, широкий спектр соединений и интерфейсов, в том числе сетевой адаптер, для которого мы будем разрабатывать драйвер. Подробное описание платформы тут, документация на платформу Allwinner H3 Datasheet.

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

Обзор паттернов интеграции микросервисов. Часть 2

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

Продолжаем обзор паттернов интеграции микросервисов. В первой части мы рассказали, зачем IT-специалистам нужны шаблоны интеграции, и для каких задач они подходят. Подробно остановилисьна Circuit Breaker, Sidecar, Ambassador, Anti-Corruption Layer и Async Request-Reply. Сегодня по плануразобрать Backends for Frontends, Cache-Aside, Gateway, Gateway Aggregation и Gateway Routing. 

Читать далее
Всего голосов 17: ↑15 и ↓2+15
Комментарии1

Визуализация в IoT: или как самому развернуть систему сбора и отображения данных на MQTT+Telegraf+InfluxDB+Grafana

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров50K

В данной статье приведен скоуп информации о том, что взять за основу, чтобы развернуть свой домашний Linux-сервер и систему визуализации на нем, используя MQTT в качестве транспорта с оконечного оборудования. 

Многие статьи или инструкции, которые есть в интернете, в части работы с Influx и Telegraf – имеют отношения к довольно старым версиям рассматриваемого ПО, в виду чего у меня ушло какое-то время, чтобы со всем разобраться. Хотелось бы оставить небольшое обновление по инструкциям здесь, возможно, они помогут кому-то сэкономить время и нервы, так как информация агрегирована в виде summury моего погружения в реализацию данного решения. 

Кому интересно, welcome :)

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

Простые программы для расчёта радиотракта

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

Данная статья рассчитана на начинающего радиоинженера, который ещё не составил для себя список любимых программ.

Рано или поздно разработчик СВЧ получает задачу на построение целого радиотракта, состоящего из нескольких элементов: усилителей, фильтров, смесителей и пр. Этот радиотракт нужно рассчитать целиком, определив его основные параметры: динамический диапазон, коэффициент передачи и шума, точку компрессии и т.д. Для примера возьмем такой приёмный тракт их 3х элементов:

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

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

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

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Всего голосов 28: ↑26 и ↓2+27
Комментарии27

Запросы в сеть с Clean Architecture — Обработка ошибок с сервера. Boilerplate ч. 3

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

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

Читать далее
Рейтинг0
Комментарии2

Микроконтроллеры по 5 рублей. Программируем микросхемы PADAUK

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

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

В статье расскажу о своём опыте освоения микроконтроллеров PADAUK. Кратко рассмотрим особенности архитектуры, средствах разработки и отладки, посмотрим что нужно учесть перед тем как использовать эти микросхемы в своих проектах. Протестируем микроконтроллер PFC161 на отладочной плате.

Читать далее
Всего голосов 84: ↑81 и ↓3+97
Комментарии69

Домашний CICD: Docker, Jenkins и Nexus3

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

Практика CI/CD широко распространена в современном мире и представить ручной деплой у FAANG с их бесчисленными ежедневными изменениями просто невозможно. То же будет справедливо и для продуктовых компаний: десятки ручных деплоев в день вытянуть можно, но это потребует колоссальных ресурсов.

Освоить эту практику можно дома, в среде, где что-то сломать не страшно, ведь всегда можно начать все с самого начала. В этом гайде рассмотрим как развернуть и настроить Jenkins в Docker, как создать агентов для сборки, а еще запушим образ в приватный Nexus.

Настроить CI/CD этому господину
Всего голосов 8: ↑6 и ↓2+5
Комментарии1

Мой первый бот для Сервисдеска: умещается в кармане, расширяется как Вселенная

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

Привет, меня зовут Юрий, и я фулстек-разработчик в DataLine. В компании занимаюсь созданием и развитием внутренних и внешних ИТ-сервисов: Сервисдеска, мастер-справочников, учета оборудования. 

Но, как говорится, каждый разработчик в жизни должен сделать 3 вещи: развернуть дерево, распарсить DOM и вырастить своего чат-бота. О последнем и поговорим: расскажу, как делал своего первого чат-бота для нашего Сервисдеска, какие задачи и как решал, с какими трудностями и способами преодоления столкнулся. 

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

Как выглядела индустрия разработки ПО в 1989 году

Время на прочтение8 мин
Количество просмотров9.7K
Свою 33-ю годовщину работы в индустрии разработки ПО я отпраздновал 3 июля. Я запомнил эту дату, потому что мой второй день на работе оказался оплачиваемым выходным!

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


Логотип первой программной компании, в которой я работал. Изображение в низком разрешении, потому что компания закрылась в 1996 году, и это всё, что я смог найти в Интернете.

Первой компанией по разработке ПО, в которой я работал, была Applied Computing Devices из Терре-Хот, штат Индиана. В организации была куча невероятно умных людей, и с ними было интересно работать. Мы создавали ПО для управления телефонными сетями. Нашими клиентами были AT&T, US Sprint (теперь она называется просто Sprint), GTE (теперь Verizon) и множество региональных компаний-операторов Bell (компаний, занимающихся стационарными телефонами), в том числе Ameritech (которая обслуживала Индиану), BellSouth и Pacific Bell. Эти компании в основном предоставляли стационарные (на бизнес-жаргоне называвшиеся «wireline») телефонные услуги, но некоторые из них уже начали создавать подразделения для работы мобильной связью. Управлять всем этим было трудно, и наши программные продукты были относительно сложными. Чтобы понять некоторые элементы нашего ПО, мне требовались все мои знания курса математики колледжа.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+38
Комментарии8

Импортозамещаю Netflix себе в дом

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

В связи с уникальной сложившейся политической ситуацией в Российской Федерации, меня отключили от моей честно оплаченной подписки на сервис Netflix. Также, с уходом больших кинокомпаний с российского рынка, не остается большой надежды на трансляцию свежего кино и сериалов в отечественных онлайн кинотеатрах. Поэтому я принял волевое решение создать домашний сервер для видеохостинга, а также скачивания и раздачи торрентов на одноплатном компьютере Raspberry Pi, который был куплен по наитию и, как и у тысяч программистов-энтузиастов по всему миру, лежал без дела который год.

Читать далее
Всего голосов 43: ↑32 и ↓11+38
Комментарии104

В Data Science не нужна математика (Почти)

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

Привет, чемпион!

Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.

В реальной повседневной работе Data Scientist'а я каждый день использую знания математики. Притом очень часто это далеко не «вышмат». Никакие интегралы не считаю, детерминанты матриц не ищу, а нужные хитрые формулы и алгоритмы мне оперативнее просто загуглить.

Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Читать дальше →
Всего голосов 109: ↑102 и ↓7+129
Комментарии87

Как происходит генерация мира Minecraft

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

Задумывались ли вы когда-нибудь, сколько на нашей планете песчинок? По грубым оценкам, более 7 квинтиллионов! Это 7 с 18 нулями. И всё-таки это даже меньше половины количества уникальных миров в Minecraft. Как же Minecraft и другим похожим играм удаётся создавать такие сложные, красивые, однако полностью процедурные миры? В этой статье я расскажу, как игра генерирует свои миры, от самой высокой горы до самой глубокой пещеры.

Часть 1: процедурная генерация


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

Однако первой игрой с процедурно сгенерированным миром является «Elite», первая версия которой вышла для компьютера BBC Micro в 1984 году. Это прапрадед относительно новой «Elite: Dangerous», выпущенной в 2014 году.


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

Контент должен быть достаточно разнообразным, чтобы выглядеть свежим, но не настолько разнообразным, чтобы казаться атипичным. И необходимо создавать миры, на которые не просто интересно смотреть, но которые обеспечивают справедливую с точки зрения игрока сложность.
Читать дальше →
Всего голосов 67: ↑67 и ↓0+67
Комментарии17

Информация

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

Специализация

Fullstack Developer, Chief Technology Officer (CTO)
Lead
От 350 000 ₽
Project management
Development management
Linux
Golang
JavaScript
Agile
IT service management
Python
Git
Database