Pull to refresh
38
0
Maxim Firsov @FirsofMaxim

Mobile developer, Golang backend developer

Send message

OpenAPI/Swagger для начинающих

Level of difficultyEasy
Reading time7 min
Views154K

Эта статья в основном для аналитиков, которые впервые сталкиваются с необходимостью описания запросов в Swagger, но может быть полезна всем, кто хочет разобраться или ищет подсказку.

Читать далее

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views323K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее

ИП или ООО в Черногории? Развенчиваем мифы, слагаем легенды

Level of difficultyEasy
Reading time8 min
Views9.4K

Прэдузэтник или Друшство са ограничшэном одговорношчу? Этот вопрос существует не только на черногорско-хорватско-боснийско-сербском, но и наверное, на любом языке. Перерыл много информации - законов, мнений экспертов и любителей. Честно - не всё понял, не хватает черногорского бухгалтера в голове, но всё же понял многое. Давайте вместе разбираться. Потому как в каналах по данной тематике всё подаётся в разнобой, мнения, как водится, ранжируются от "ИП - форева" до "ДОО навсегда".

Итак, вы айтишник, внезапно или запно очутились в Черногории. Как лучше оформить вашу деятельность?

Читать далее

Пишем gRPC сервис на Go — сервис авторизации

Level of difficultyMedium
Reading time63 min
Views96K

Пишем gRPC сервис на Go — сервис авторизации


В этой статье мы научимся писать полноценный gRPC сервис на Go на примере сервера авторизации с полноценной архитектурой, готовой к продакшену. Мы напишем как серверную часть, так и клиентскую. В качестве клиента мы возьмём мой сервис — URL Shortener, о котором у меня также есть статья и видео-гайд на ютубе. Попутно мы познакомимся с базовыми подходами к работе с авторизацией. И в конце настроим автоматический деплой сервиса с помощью GitHub Actions на удалённый сервер.


Видео-версия этого гайда с более подробными объяснениями

Исходный код проекта: https://github.com/GolangLessons/sso


Итого, наш план:


  • Напишем простой, но полноценный gRPC-сервис
  • Разберемся с базовыми принципами работы авторизации — чтобы не было скучно
  • Настроим автоматический деплой в прод — потому что руками деплоить лень
  • Подружим его с уже готовым сервисом URL Shortener — чтобы был практический смысл
  • Напишем полноценные функциональные тесты

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


Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал.

Читать дальше →

Двухтрубные системы отопления тупикового и попутного типа. Мнимая магия «петли Тихельмана»

Reading time21 min
Views77K

Двухтрубные системы отопления тупикового и попутного типа. В чём разница и что об этом говорят современные строительные нормы.

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

Теперь настала очередь рассмотреть особенности проектирования и эксплуатации двухтрубных систем, которые крайне популярны у частных домовладельцев в ИЖС.

Так же двухтрубные вертикально-стояковые системы отопления пытаются применять и в многоквартирных домах.

Далее мы рассмотрим гидравлический расчёт систем для одного этажа частного дома с периметром в те же 50м для дом 10х15м по внутренним стенам (150м.кв на этаж).

А позже попытаемся применить те же подходы для максимальной высоты 50м в стояковой системе высотного дома.

Тупиковая система

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

Читать далее

Особенности SRE и Observability в мобильных приложениях

Level of difficultyEasy
Reading time12 min
Views5.2K

Привет! Я Даниэль Халиулин, технический менеджер продукта в Тинькофф. Отвечаю за надежность и производительность нашего основного приложения — мобильного банка. Руковожу двумя одноименными командами, которые занимаются производительностью и надежностью. Расскажу про направления SRE и Observability в мобильных приложениях.

Читать далее

Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию от Mentorpiece

Level of difficultyEasy
Reading time12 min
Views111K

Гуд ньюз эвриван! Спустя полтора года работы восьми айтишников с суммарным опытом в IT 130 лет достигнут результат в виде учебника по тестированию, которого еще никто и никогда не делал.

Читать далее

Неочевидные возможности короля картографического ПО на гаджетах

Reading time10 min
Views57K

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

🔥 Примечание — эта статья автора расположилась на первом месте по рейтингу/просмотрам в хабе OSM за 2023г.

Читать далее

Нужна ли вам Kafka? Разбираемся в технологии и собираем простое приложение на базе managed-решения

Reading time16 min
Views45K

Я Гришин Александр продакт менеджер Облачных Баз данных Selectel. Сегодня расскажу о нашей новой услуге. Kafka — стильная, модная, молодежная технология, которую разработала в 2011 году компания LinkedIn и значительно усовершенствовал Apache Software Foundation. Представляет собой надежный, масштабируемый и устойчивый инструмент для обработки и передачи данных в режиме реального времени — шину данных.

Но нужно ли внедрять технологию в угоду моде или амбициям вашего продуктового менеджера? Под катом расскажу про сильные стороны Kafka и задачи, в которых она раскрывается по максимуму. Также напишем быстрое приложение на базе Kafka-as-a-service, которую мы недавно релизнули в Selectel.
Читать дальше →

Почему E = mc² — это лишь половина описания происходящего

Level of difficultyMedium
Reading time10 min
Views78K

Одним из наиболее глубоких открытий в физике стало самое известное уравнение Эйнштейна: E = mc². Проще говоря, оно гласит, что энергия равна массе объекта, умноженной на квадрат скорости света. Это простое на первый взгляд математическое соотношение таит в себе огромное количество физических смыслов, в том числе:

при наличии определённого количества энергии можно спонтанно создавать новые пары частиц материи-антиматерии, если их масса покоя меньше, чем количество энергии, необходимое для их создания,

если пара частиц материя-антиматерия аннигилирует, то при этом выделяется определённое количество энергии, определяемое массами аннигилировавшей пары частиц,

каждый раз, когда происходит ядерная реакция, будь то синтез или деление, если масса продуктов реакции меньше массы частиц, в ней участвовавших, E = mc² говорит о том, сколько энергии будет высвобождено в этой реакции.

Это уравнение, E = mc², описывает, сколько энергии присуще любой массивной частице, находящейся в состоянии покоя, включая то, сколько энергии требуется для её создания и сколько энергии выделяется при её разрушении.

Но что если частица не находится в состоянии покоя или если она вообще не имеет массы? В этих случаях E = mc² — это только половина значимого уравнения. Вторая половина гораздо интереснее и необходима для того, чтобы понять физический смысл происходящего.

Читать далее

Что для меня значит быть программистом

Reading time13 min
Views50K

Как-то мне написали с Хабра и сказали: Саня, хочешь написать статью про программистов?

Разумеется, я отнёсся к этому скептически. Ладно там девопсины или вайтхэты какие - почитать про них было бы интересно, но вот жизнь программиста... Я сразу вспомнил эти мемы как на КДПВ, которые на самом деле не мемы, а правда.

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

Чтобы получать 300кк/c, нужно всего лишь..

Проектируем функционал сторис

Level of difficultyMedium
Reading time12 min
Views4.8K

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

Сегодня мы погрузимся в тему сторис и разберем лучшие практики и ошибки. В этой статье – 102 гайдлайна на базе 100+ просмотренных приложений.

Читать далее

Как мы запускали демоприложения

Reading time16 min
Views6K

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

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

Меня зовут Олег Шелякин, я ведущий Android-разработчик в мобильном банке Тинькофф. Статья будет интересна тем, кто работает над многомодульным проектом, где количество модулей перевалило за сотню, время синхронизации измеряется в минутах, а время сборки — в десятках минут.

Читать далее

Такой дозиметр может сделать каждый

Level of difficultyEasy
Reading time16 min
Views22K

Хомяки приветствуют вас друзья!

Сегодняшний пост будет посвящен радиометру Atom-Scan, универсальному самодельному прибору, который может работать c разными счетчиками Гейгера включая слюдяные, а так же детектировать альфа, бета и гамма излучение. В ходе поста посмотрим как собрать такое устройство, где достать дефицитные радиокомпоненты и как правильно настроить схему чтобы все работало. По традиции смоделируем и напечатаем корпус на фотополимерном 3D принтере, проведем сравнительный тест счётчиков, а так же попытаемся разобраться какой дозиметр на сегодняшний день самый лучший.

Читать далее

Как устроено распределение памяти

Level of difficultyMedium
Reading time11 min
Views28K

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

В этом посте я познакомлю вас с основами распределения памяти (memory allocation). Распределители памяти существуют, потому что иметь доступную память недостаточно, необходимо ещё и эффективно её использовать. Мы наглядно изучим, как работают простые распределители. Мы рассмотрим некоторые из задач, которые им необходимо решать, а также некоторые из методик, которыми они их решают. Прочитав этот пост, вы узнаете всё, что необходимо для написания собственного распределителя.
Читать дальше →

Математическая версия игры «Морской бой»

Level of difficultyEasy
Reading time3 min
Views9.3K

Математический морской бой, несмотря на то, что является неплохим таким развлечением на долгий вечер, как и многие настолки, имеет практическую пользу в обучении математике: помогает подружиться с концепцией графика функции или уравнения, играется в любом классе, начиная с седьмого; или младше - но тогда надо объяснить ученику идею координатной плоскости и линейной функции. Правила придуманы на основе классического морского боя.

В качестве игрового поля берётся координатная плоскость хОу произвольного размера. Если играющие знакомы с отрицательными числами, то от (-10; -10) до (10; 10) скорее всего будет достаточно, хотя чем обширнее их знания алгебры, тем больше нужна игровая площадь. Для всех, кто младше шестого класса, советую поле от (0; 0) до (20; 20), или даже до (10; 10). Прямоугольное, естественно (квадратность не обязательна). Для старших, конечно, можно задавать её как любую криволинейную трапецию или не задавать вовсе, лишь бы все корабли вместились в чертёж заданного масштаба.

Читать далее

Про FPV-квадрокоптеры. Введение

Level of difficultyEasy
Reading time30 min
Views68K

Не так давно случайно от человека, снимавшего на моих глазах видео с квадрокоптера DJI Mavic услышал про FPV, что он, мол, хочет такой себе квадрокоптер купить.

Почему, спрашиваю, у тебя же есть уже аппарат для съемки, чего не хватает? Что, там у FPV камера лучше?

Камера‑то хуже, но вот зато он может очень точно маневрировать очень близко около объектов съемки. Пролететь впритирку к дереву или к скале, залезь в любую дырку, кадры снять подинамичнее, поинтереснее.

Я и до этого заметил во время той видеосъемки, что управлять‑то DJI Mavic несложно. Но вот управлять тонко, точно вовсе не так уж и просто.

Слова того человека о точном маневрировании с квадрокоптером FPV мне понравились и я начать курить ту тему... Очнулся уже будучи владельцем нескольких квадрокоптеров FPV.

Поразило 2 аспекта: как это удивительно дешево (ну для опытного ИТ‑разработчика с соответствующей зарплатой) и как же трудно научиться им управлять (зато когда научишься, то ого‑го).

Читать далее

BLE под микроскопом (ATTы GATTы...) Продолжение

Level of difficultyHard
Reading time9 min
Views6.6K

BLE под микроскопом (ATTы GATTы...)

Продолжение

Начал писать статью про использование китайского BLE чипа CH582. Но оказалось, что без теории, сложно объяснить некоторые моменты его работы. Поэтому решил сначала объяснить структуру таблицы атрибутов, а потом уже вернутся к китайскому чипу. Тем более ранее я уже пытался осветить эту тему.

Читать далее

Как Федор выписывался из военкомата после эмиграции: полный гайд по снятию с воинского учета удаленно

Level of difficultyEasy
Reading time13 min
Views136K

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

Читать далее

CustomView Android. Кольцевая диаграмма для отображения статистики

Level of difficultyMedium
Reading time25 min
Views11K

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

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

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

Вперед за CustomView!

Information

Rating
1,973-rd
Location
Снежинск (Челябинская обл.), Челябинская обл., Россия
Date of birth
Registered
Activity