Search
Write a publication
Pull to refresh
4
0
Michael Elin @vanelm

Consulting Network Engineer

Send message

Как мы с помощью FreeSwitch сделали IP-телефонию по принципу Lego и с ассистентами вместо человечков

Level of difficultyMedium
Reading time7 min
Views2.8K

Привет, Хабр! Меня зовут Илья Волынкин, я CTO платформы МТС Exolve. Когда мы говорим про VoIP-телефонию, первая ассоциация — Asterisk. Это open-source ПО захватило рынок и его аналоги не так популярны. На True Tech Day я рассказал про наш опыт с FreeSwitch — инструментом, решающим гораздо более масштабные задачи. 

Благодаря ему мы смогли построить платформу, которая позволяет реализовывать сложные сценарии, добавлять разные модули (например, с AI под капотом), и собирать себе системы телефонии по принципу Lego. Под катом: рассказ про то, как сейчас усложнилась инфраструктура для звонков, какие есть варианты реализации VoIP и как это может развиться в будущем. 

Читать далее

Заблуждения программистов об авиации

Level of difficultyEasy
Reading time6 min
Views8.4K

Перевод статьи Ben Burwell, инженера FlightAware, в которой описан довольно солидный список ложных предположений, которые программист может выдвинуть об авиации при разработке софта. Например, вы знали, что бывают сегменты в авиаперелетах, которые длятся одну минуту, чтобы переместиться из одного аэропорта в другой, хотя физически самолет никуда не летит? А вот инженерам из авиа-отросли такие уникальные случаи нужно учитывать.

Читать далее

Работа с формами во Flutter

Level of difficultyEasy
Reading time9 min
Views1.7K

Работа с формами — неотъемлемая часть любого Flutter-приложения. В этой статье я расскажу о том, как создавать формы с помощью стандартных инструментов (Form, TextFormField, GlobalKey) и какие подводные камни возникают при их масштабировании.

Читать далее

Настройка межсетевого SSH-доступа в многосегментной сети Cisco и MikroTik в среде GNS3

Reading time12 min
Views2.9K

Всех приветствую! В этой статье разберем базовую настройку защищенного удаленного доступа к сетевым устройствам через SSH в учебной лабораторной работе на эмуляторе GNS3. В сети будут задействованы два маршрутизатора - Cisco и MikroTik, а также виртуальные машины с Windows 10 и Kali Linux, что позволит максимально приблизить работу к реальным условиям. В ходе работы настроим IP-адресацию, обеспечим маршрутизацию между подсетями и организуем безопасное управление оборудованием через SSH.

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

Читать далее

Как правильно начать вайбкодинг-проект с нуля

Level of difficultyEasy
Reading time2 min
Views17K

Если вы решили вайбкодить новый проект, то самым первым шагом должен стать PRD (Product Requirements Document).

Что такое PRD?

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

После PRD хорошо бы сразу создать ещё два документа:

tasks.md — детализация задач вашего проекта. Этот файл может меняться и дополняться в процессе работы: сделали текущие задачи → придумали новые → обновили файл.

docs.md — более техническая документация, которая пишется параллельно реализации задач. Она не обязательна для маленьких проектов, поэтому подробнее о ней поговорим в следующем посте.
(md - это не домен, это файлы расширения Markdown)

Сам PRD обычно остаётся стабильным и только иногда дополняется новыми деталями. Но как его правильно и быстро сделать?

Читать далее

SOAP, WSDL и немножко Python создаём веб-сервис шаг за шагом

Level of difficultyEasy
Reading time24 min
Views4.4K

Практика — лучший способ глубокого понимания теории. Рассмотрим на примере, как работают веб-сервисы с протоколом SOAP, для чего нужен WSDL и как он связан с XML-документом в теле POST-запроса.

Читать далее

Путеводитель по Ktor JWT auth на стороне сервера

Level of difficultyMedium
Reading time10 min
Views968

Документация Ktor по server-jwt неполна. Если необходимо сделать что-то за рамками «Hello world», придется лезть в исходники и городить костыли. Какой-то консистентности и предсказуемости ждать не стоит, возможно, не обошлось без заговорщиков.

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

Читать далее

Чтобы сеть не лежала… снова

Reading time7 min
Views8.1K

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

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

Читать далее

Как создать простое API? Express + Prisma

Level of difficultyEasy
Reading time6 min
Views2K

Эта статья поможет вам быстро написать API, используя Express и Prisma). Для этого вам понадобятся базовые знания работы с Node.js и понимания разработки реляционных баз данных

Читать далее

Простой и эффективный супервизор на С++ с универсальным Makefile

Reading time6 min
Views3.4K

Несмотря на развитие лингвистических моделей, я подумал, что моя версия супервизора может быть достаточно интересна для размещения в статье. Назначение супервизора - поднять повторно программу, которая по каким-то причинам упала с ошибкой. Причём если программа завершила работу без ошибки, то она перезапущена не будет, как и не будут создаваться логи. В логах пишется время падения и тип ошибки. Универсальный Makefile может быть интересен тем, что его достаточно закинуть в папку с исходниками, добавить необходимые пути вида:
LDFLAGS = -I/usr/include/boost
LIBS = -lboost_serialization

Читать далее

RFID-метки для программиста: как они устроены и как с ними работать

Level of difficultyHard
Reading time7 min
Views5.6K

RFID-технология давно стала частью повседневности — мы встречаем её в проездных, пропусках, банковских картах, системах доступа и даже в метках на одежде. Но что на самом деле происходит, когда мы подносим метку к считывателю? Как устроена эта метка внутри? Какие данные она хранит, и как программа может их прочитать или изменить?

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

Читать далее

Перепрограммируем заводской Zigbee датчик протечки от компании Tuya

Level of difficultyEasy
Reading time5 min
Views13K

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

Читать далее

Круговой импорт в Python: как он ломает проекты и как его победить

Level of difficultyEasy
Reading time5 min
Views4.8K

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

Сегодня говорим о том, что в какой‑то момент словит почти каждый разработчик, особенно если вы не просто пишете скрипты, а строите проекты — будь то Django, Flask или кастомная архитектура с бизнес‑логикой в отдельных слоях. Речь про круговые импорты: они не объявляют о себе заранее, не фейлят весь проект громко и сразу, но подкрадываются исподтишка. И вот вы уже сидите с ошибкой ImportError: cannot import name ... или AttributeError, гуглите часами, тасуете импорты туда‑сюда и ловите дежавю — кажется, это уже было, но где?

Читать далее

Простые вещи, которых я не знаю: юнит-тесты

Level of difficultyMedium
Reading time10 min
Views7.8K

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

Я программирую уже больше шести лет. На самом деле существенно больше (на свой первый аутсорс на PHP я попал примерно в 2016 году), но осознанно подходить к своей карьере я начал не сразу. За это время я вполне успешно поработал в довольно разных местах, от маленьких стартапов до международных компаний.

Недавно я проходил очередное собеседование, и на мой взгляд я неплохо держался. Как минимум до вопроса о том, как я покрываю свой код тестами. После него я стыдливо пробормотал о том, что знаю, как работает assert в python, и даже слышал про pytest. И что я с радостью начну писать тесты как только попаду к ним на проект, просто в наших проектах их не требовали. После чего мы плавно перешли к следующей теме, а оффер я так и не получил.

Пришлось разбираться, что я делаю не так

Под капотом WordPress — разбираем движок и изучаем инструменты

Level of difficultyMedium
Reading time18 min
Views4.8K

Привет, Habr! Меня зовут Ольга Глеклер. Я уже более 12 лет в веб-разработке. Начинала писать с нуля, работала с различными CMS, последние 8 лет преимущественно с WordPress и уже около 6 лет являюсь контрибьютором. Работала в таких компаниях, как Epam и Yadro. Выступала на конференции HighLoad++. Сегодня расскажу о возможностях WordPress и как это реализовано «под капотом».

Читать далее

Как я решил проблему бардака в инфраструктуре в рабочих и личных проектах

Level of difficultyEasy
Reading time6 min
Views11K

Это история о том, как я устал держать в голове инфраструктуру по всем своим проектам.

Прод падает — а ты тратишь время на то чтобы вспомнить где лежит Grafana, где настраивается DNS, чей Docker Registry мы используем, есть ли у нас CDN и какой.

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

Читать далее

Как в 2025 году в Django реализовать аутентификацию через Google

Reading time3 min
Views1.7K

Аутентификация через сторонние сервисы осуществляется на базе протокола OAuth 2.0, который поддерживается библиотекой Python Social Auth Django.

Для начала нам нужно установить библиотеку social-auth-core и дополнительную библиотеку social-auth-app-django для интеграции этой системы регистрации/аутентификации в Django. Оба компонента мы указали в списке зависимостей проекта в файле requirements.txt:

Читать далее

DotPlus — офлайн-генератор QR и штрихкодов на Rust с GUI и CLI

Level of difficultyEasy
Reading time4 min
Views1.7K

Как я написал генератор QR и штрихкодов на Rust с GUI и CLI — полностью офлайн, без браузеров и API. Работает с CSV, экспортирует в PNG, подходит для логистики и массовой печати.

Читать далее

Прокачаться в работе с Ansible — подборка ресурсов

Reading time6 min
Views7.9K

Десятки тысяч компаний используют Ansible для управления конфигурациями и автоматизации ИТ-процессов. И мы подготовили подборку материалов, которые помогут познакомиться с этим инструментом — от базовых руководств уровня «с чего начать» до продвинутых практик по написанию эффективных плейбуков.

Читать далее

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

Level of difficultyMedium
Reading time17 min
Views15K

Привет, я собрал небольшой бортовой компьютер для авто, который умеет показывать температуру, время с момента включения и раздавать «Free Wi-Fi». В этой статье приведён код, список компонентов и всё остальное, чтобы собрать такой же. Назвал я его Kruk — от беларуского слова «Крук» (рус. «Крюк»).

Вот видео его работы на YouTube. Здесь его страница на GitHub.

Если вы уже посмотрели видео, то понимаете суть функции «Free Wi-Fi». Как только к Wi-Fi подключаются, система сразу переводит пользователя на captive portal, а сам компьютер начинает показывать, помимо температуры и времени, ещё два дополнительных окна с информацией о количестве пользователей, подключившихся к Wi-Fi, и о количестве пользователей, которые до сих пор к нему подключены (online).

Читать далее

Information

Rating
Does not participate
Location
Praha, Hlavni Mesto Praha, Чехия
Registered
Activity