Обновить

Разработка

Сначала показывать
Период
Уровень сложности

Умный дом с радио из Cyberpunk: как я написал расширение для Home Assistant

Время на прочтение14 мин
Охват и читатели6.9K

Два с половиной года назад я делал радио из игры Cyberpunk 2077 на базе проекта Ka-Radio32 и собственной интерпретации модели из игры. Радио спокойно использовалось по назначению все это время, но вот наступили новогодние праздники. Я решил настроить Home Assistant (HA) и объединить все домашние умные устройства в локальном хабе.

Часть устройств добавилась без проблем, другая — сопротивлялась и требовала дополнительных действий. Но самодельное радио стояло особняком: для проекта Ka-Radio32 нет ни официальной интеграции, ни пользовательской. Хотя у Home Assistant широкая документация, начать разрабатывать свое расширение довольно сложно. В этой статье я разберу основные этапы на примере интеграции с Ka-Radio32.
Читать дальше →

Самый странный лексический синтаксис, который я обнаружила, исследовав 42 языка программирования

Время на прочтение13 мин
Охват и читатели19K

Программирование — это не только алгоритмы и логика, но и удивительное разнообразие синтаксиса языков. Работая над новым средством подсветки синтаксиса для llamafile, разработчик Justine Tunney* исследовала 42 языка программирования — от классического C и экзотического Tcl до мощного Ruby. 

Justine делится своими открытиями о том, насколько причудливым и непредсказуемым может быть лексический синтаксис. Например, триграфы в C — устаревший инструмент для поддержки клавиатур с ограниченными символами, фиксированные длины строк в FORTRAN, вложенные комментарии в Haskell или строки с двойными квадратными скобками в Lua. Ruby вообще оказался чуть ли не самым сложным языком для подсветки из-за его контекстно-зависимого синтаксиса.

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис

Читать далее

Нецифровая электроника для начинающих

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели15K

Некоторое количество лет назад я на волне общения с толковыми школьниками в роботехнических летних лагерях написал свою первую книгу про цифровую электронику. Как и почему это случилось, описал в своей первой статье на Хабре. Книжка оказалась востребованной, и через три года я подготовил ее второе издание - в полтора раза толще. На этот раз благодаря издательству BHV она вышла в цвете, а я дополнил материал не только более подробными объяснениями и новыми схемами, но еще и сведениями, где и как освоенные знания могут пригодиться во "взрослой" микроэлектронике при разработке чипов. В таком варианте книжка по «цифре» регулярно покупается до сих пор и приобрела неплохой рейтинг на Озоне.

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

Читать далее

Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 1

Уровень сложностиПростой
Время на прочтение27 мин
Охват и читатели16K

JWT, SSO, OAuth, OpenID Connect — названия знакомые каждому разработчику. Но стоит спросить: «Зачем в продакшене нужен JWKS?» или «Чем отличается OAuth2 от OpenID Connect?» — уверенность сразу исчезает.

В этой статье мы разберём как устроен JWT и его подпись, зачем нужны access и refresh токены, что такое JWKS и в чём отличие OAuth от OpenID Connect.

Вместо скучных стандартов и спецификаций протоколов в статье будет один наглядный образ на примере отелей и пропусков. Это позволит не только запомнить, но и прочувствовать на реальных примерах, избавиться от хаоса и путаницы в голове, когда речь заходит об аутентификации и авторизации. Цель статьи — не дать «рецепт внедрения», а дать возможность понять, как это работает внутри и «пощупать» эти темы на Go

Читать далее

Работаем быстро, храним экономно: в деталях о механизме охлаждения для Tarantool DB 3.0

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.5K

Компании ежедневно генерируют большие объемы данных, но далеко не вся информация одинаково важна: со временем многие данные становятся менее востребованными, продолжая занимать дорогие и высокопроизводительные накопители (SSD, RAM). В результате хранение таких «холодных» данных обходится неоправданно дорого, поскольку потребность в постоянном доступе к ним минимальна.

Решение проблемы — технология охлаждения данных, которая предполагает перемещение редко используемой информации на более дешевые и емкие носители, то есть файлы остаются доступными, но перестают нагружать дорогие и быстрые устройства. Именно такой механизм охлаждения данных мы добавили в Tarantool DB 3.0.

Привет, Хабр. Меня зовут Сергей Фомин. Я старший менеджер продукта Tarantool DataBase. В этой статье я расскажу, как именно мы реализовали механизм охлаждения и какие бизнес-выгоды могут получить компании при его использовании.

Читать далее

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

Время на прочтение10 мин
Охват и читатели60K

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

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

Читать далее

Боты ищут путь: почему NPC за рулем машин в GTA такие неадекватные

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели21K

Обожаю игры серии GTA (все, кроме четвертой части). Я бы даже сказал, что многое в них прекрасно: разнообразие сюжетных миссий, выбор транспорта, классные диалоги, тонкая ирония, саркастичный юмор, высмеивание проблем общества, свобода действий, возможность устроить локальный апокалипсис. Однако все это портит поведение ботов-водителей, которые словно намеренно бросаются наперерез игроку, чтобы усложнить ему жизнь. Но так ли это? Действительно ли поведение NPC на дорогах GTA заскриптовано так, чтобы мешать геймерам? Прошу под кат — в поисках правды будем подглядывать за ботами и залезать туда, куда Рокстары не хотят нас пускать.

Посмотреть путь бота

Кросс-компиляция и запуск консольного Go‑приложения на Android, Windows, macOS и Linux

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели13K

Делюсь опытом кросс-компиляции и запуска консольной программы на Go из-под Linux в другие ОС: Android, Windows. Для сетевых сервисов, утилит, криптопрограмм и других решений без GUI это может быть весьма полезно.

Читать далее

«Золотая рыбка, хочу LLM без GPU»: как собрать Inference-сервер на CPU

Время на прочтение13 мин
Охват и читатели15K

Допустим, вам нужно протестировать LLM на сотни миллиардов или почти триллион параметров в локальной среде — на своих данных, которые вы не хотите отдавать в облако. Задача сводится к сравнительным экспериментам или вообще к развертыванию решения внутри своей сети под небольшую нагрузку, если пользователей мало. Масштаб этих моделей ведет к проблеме: памяти одной видеокарты не хватит, а использование серверов с несколькими GPU может повлечь большие расходы на инфраструктуру.

В таких случаях альтернативой становится запуск LLM на центральном процессоре (CPU), который хотя и медленнее GPU, но гораздо дешевле. Например, если сервер с двумя CPU обойдется за месяц в 150 000 ₽, то сервер с GPU — более 700 000 ₽. Конечно, сервер с GPU может «прожевать» больше запросов. Но если вам столько не надо?

Привет, Хабр! Меня зовут Никита Староверов, я системный архитектор в Selectel. В этой статье рассмотрю, насколько реалистично запускать современные крупные языковые модели исключительно на CPU. А еще — покажу, какие инструменты и подходы позволяют загружать и выполнять такие модели, какие требования к железу и насколько производительность системы остается приемлемой для практического использования.

Читать далее

Просто используй кнопку

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели21K

Мне часто доводится вести странные споры с фанатами фреймворков о том, действительно ли <div> «столь же хорош», как и <button>.

Спойлер: нет. И давайте выясним, почему.

Читать далее

Pimp my RAM или превращаем оперативную память в фотографическую

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели25K

По итогам 2023 года ролики о старых цифровых камерах набрали суммарно более 1 миллиарда просмотров в TikTok. В свою очередь на YouTube блогеры актино обозревают цифромыльницы с призывом приобщиться к тренду. На фоне становления Y2K эстетики и смещения интересов в области фотографии в прошлое я предлагаю заглянуть немного подальше и посмотреть, как всё начиналось.

Если вам интересно, как связаны между собой зарождение цифровой эпохи в фотографии, странная самоделка, и причём здесь вынесенная в название оперативная память – добро пожаловать под кат!

Читать далее

Разблокируем бесплатный WiFi на рейсах British Airways

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели19K

Недавно я летел из Гонконга в Хитроу рейсом British Airways. Тот же самый маршрут я проделал в 2023 году, и помню, как в 14-часовом путешествии понадеялся на развлечения в самолёте. Однако на этот раз по дороге в Лондон у компании появилось интересное предложение: бесплатный WiFi для «мессенджеров» участникам «The British Airways Club».

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

После входа портал предложил мне «Начать сессию», и это действительно позволило мне общаться текстом. Я попробовал Whatsapp, Signal, Wechat и Discord. Первые три работали (но без поддержки изображений); Discord, как и ожидалось, не заработал. Совсем неплохо для бесплатного WiFi!

Откуда он знает?

Это первый вопрос, который возник у меня после проверки работы мессенджеров. На дворе 2025 год, всё должно шифроваться при передаче. Почему же система знает, что я использую Whatsapp или Discord? Поначалу я решил, что соединение как-то ограничивает ширину канала/передачу данных отдельных TCP-соединений, поэтому при отправке одного-двух сообщений они проходят, но что-то большее отклоняется.

Чтобы проверить эту гипотезу, я попробовал открыть на телефоне классический example.com. К сожалению, он не загрузился; значит, всё это устроено немного сложнее…

Читать далее

Почему РЭБ заставляет нервничать пилотов

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели22K

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

Читать далее

Ближайшие события

DigiPi: универсальный цифровой модем радиолюбителя

Время на прочтение10 мин
Охват и читатели18K

Каждый радиолюбитель проходит стадию, когда вместо хаоса проводов, антенн и адаптеров хочется сконцентрировать все в аккуратную и удобную систему. Но это весьма непростая задача: разные вендоры, протоколы и скорости передачи данных. Один трансивер требует пачки драйверов, другой не умеет нажимать PTT через CAT, третьему вообще нужен COM-порт, и желательно нативный. В итоге радиолюбительский «шэк» (от английского shack — «хижина») превращается во Франкенштейна, где приходится учитывать особенности каждого отдельного девайса. 

DigiPi был создан как попытка навести порядок, объединив функции звукового интерфейса, контроллера трансиверов и небольшого сервера, позволяющего управлять всем непосредственно из браузера с любого устройства — от лэптопа до планшета. Сегодня я покажу, как DigiPi на Raspberry Pi 4 превращается в удобный центр управления радиооборудованием. Затем шаг за шагом соберем собственную систему с его встроенными модулями.

Читать далее

ESP32 + LD2410: Архитектуры нейронных сетей для классификации движений

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели17K

Микроконтроллеры давно перестали быть простыми устройствами для управления датчиками и исполнительными механизмами. Сегодня, благодаря библиотекам вроде TensorFlow Lite, даже компактный ESP32 способен выполнять инференс нейросетей в реальном времени. В этой статье я расскажу о серии экспериментов по классификации движений человека с помощью радарного датчика LD2410 и различных базовых архитектур машинного обучения, таких как полносвязная, свёрточная, рекуррентная нейронные сети и трансформер (механизм внимания).

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

Ознакомиться

Pytest. Гайд для тех, кто ни разу про него не слышал

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели20K

Недавно на работе передо мной возникла задача максимально быстро погрузиться в автоматизированное тестирование с ранее мной не использовавшимся фреймворком pytest. Почитав порядка десяти статей на Хабре я понял, что в каждой из статей есть много всего интересного, а чтобы системно погрузиться — необходимо идти читать документацию. Я решил, в привычной мне манере, разобраться и систематизировать самый сок для того, чтобы быстро въехать в суть и важные тонкости положив основу для дальнейшего использования. 

Всем интересующимся — добро пожаловать под кат!

Читать далее

Что такое DevOps и почему он автоматизировал не всё

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели26K

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

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

Читать далее

Быстрый старт в CI на примере Flutter (под банальный Android и интересную «Аврору»)

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8.2K

Flutter продолжает набирать популярность. Фреймворк предлагает низкий порог входа и возможность собрать приложение практически под любую платформу. Если вы хотите выпускать приложения стабильнее, чаще, быстрее, да еще и под несколько платформ и одним коммитом, то эта статья для вас.

Читать далее

От наскальных рисунков до S3: эволюция хранения данных

Время на прочтение12 мин
Охват и читатели11K

Как вы храните данные? Используете файловое хранилище, S3, базы данных, держите файлы прямо на сервере, храните все локально на HDD, SSD или даже флешке — вариантов масса, на любой вкус и цвет. В этой статье я предлагаю вспомнить, как развивалось хранение информации и как мы прошли путь от наскальной живописи до приватного S3. Это поможет разобраться, какую технологию лучше использовать для ваших задач. 

Читать далее

Создаём личную систему VoIP

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели20K

Я всегда был активным сторонником самохостинга, но ни разу не пробовал ничего, связанного с VoIP. Недавно я приобрёл несколько IP-телефонов и создал личную домашнюю телефонную сеть на основе Asterisk. Это руководство поможет вам настроить собственную телефонную систему при помощи опенсорсных инструментов.

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

Читать далее
12 ...
50