Обновить
0
Ильдар@ildarkzread⁠-⁠only

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

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

Почему нельзя идеально оптимизировать светофоры: дело не в алгоритмах

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

Каждый айтишник, который хоть раз стоял «на красном» на пустом перекрестке в три часа ночи, думал одно и то же: «Да я бы это за выходные пофиксил».

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

Давайте по порядку, потому что путь от «я исправлю это за выходные» до «а, вот почему до сих пор не пофиксили» это, честно, лучшая экскурсия по тому, чем реальная инженерия отличается от академической.

Читать далее

Как искать проблемы производительности в Python

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

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

Меня зовут Юра Ашуров, я тимлид в Точка Банк. В статье расскажу, почему не стоит начинать расследование с профайлера и какие метрики помогают сузить область поиска. Всё это — на примере двух реальных кейсов с высоконагруженными проектами.

Читать далее

Как загрузить любой шрифт Google Fonts на дисплей ESP32 — без Processing и ручной конвертации

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

Встроенных шрифтов TFT_eSPI хватает ровно до того момента, когда интерфейс ESP32 хочется сделать аккуратнее обычного тестового стенда. В статье автор показывает браузерный генератор для Google Fonts и собственных TTF, а заодно объясняет, как устроен формат VLW и что важно учесть при работе со сглаживанием, LittleFS, переносами строк и размером файла.

Настроить шрифты

Основы биологии для инженеров (Часть 2. Старение)

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

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

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

Читать далее

Создаём MCP‑сервер на практике

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

MCP без воды и шаблонного кода на практике: разбираем протокол, поднимаем сервер, тестируем через Inspector и учим LLM торговать через Finam API. Разберёмся, когда MCP выгоднее «обычных функций», как изолировать интеграции и упростить отладку инструментов.

Читать далее

Embedded Linux для начинающих — Часть 1

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

Однажды по работе мне прилетела задача по сборке и запуску Linux на одноплатном ПК. Тогда я, будучи разработчиком ПО для микроконтроллеров, встал в небольшой ступор — задачка явно не решалась установкой IDE и нажатием в ней кнопки «Собрать проект». Гугл помог узнать о том, что существует некий Buildroot. В материалах по теме всё выглядело довольно просто: скачай, настрой, дерни пару команд, загрузи результат на одноплатник — и можно запускать! Получается, процесс не многим сложнее установки дистрибутива Linux или Windows на обычный ПК? Конечно же, нет. Ведь если у тебя в руках кастомный одноплатник неизвестного китайского бренда, а не BeagleBone или Raspberry Pi, то зарыться в Buildroot придётся с головой...

Читать далее

B4 — сетевой мультитул по обходу блокировок

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

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

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

Читать далее

Разбираемся в ML без воды: от базы до Attention. Часть 13: Кластеризация и k-means

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

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

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

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

Читать далее

Карта синуса: 42 места, где мы его поймали

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

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

Эта статья — каталог. Сорок два примера по пяти дверям и бонусу, и каждый со своим живым графиком: ниже не одна обложка на дверь, а отдельная карточка на каждый случай. Три из них — Доплер, ряд Фурье и гласные — со звуком: жми «слушать» и услышишь синус ушами.

Читать подряд не обязательно — это карта, а не маршрут. Электрик, скорее всего, осядет во второй двери, фронтендер — в четвёртой, штурман — в пятой. Идите туда, где ваше; остальное подождёт в закладках.

Сразу честная оговорка: 42 — это не «столько синусов в мире», а столько, сколько набралось у нас, с понятным перекосом в физику и инженерию. Синус не «применяется в N законах», как гвоздь в N досках — он следствие одной структуры: всё, что вращается, колеблется или имеет волновую симметрию, автоматически его порождает. А таких систем не конечное число, их класс. Так что ниже — не перепись, а полевой определитель: яркие представители бесконечного семейства. В конце я отдельно перечислю, чего тут нет.

Открыть каталог

Полный геном за $200 и его анализ в домашних условиях: форматы файлов, откуда берутся и что значат. Часть 2

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

В прошлой статье я рассказал, как получил Starter Kit для сбора материалов для секвенирования и отправил его в США. А также о встроенном в Nebula функционале для его анализа.

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

Читать далее

Путь к миллиону точек: как я переписывал плоттер три раза, прежде чем он перестал лагать

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

Или: как embedded-разработчик случайно написал визуализатор временных рядов

Это моя первая статья и сразу на тему в которой я разбираюсь примерно никак. Ее можно воспринимать как условный "дневник разработчика".

Статья написана не без помощи LLM, от нее по большей части редактура. Прошу камнями не кидаться

Приятного чтения!

С чего всё началось

В миру я позиционирую себя как Embedded-разработчик, а как принято во многих местах в России разработчик встраиваемых систем - это инженер-разнорабочий. Написать firmware, развести не сложную PCB, поколдовать над ядром Linux,  провести исследования датчиков с китайского завода, напаять концевиков, собрать тестовый стенд, а если еще и осталось время - по возможности спроектировать корпус для устройства и произвести его прототип.

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

Но иногда появляется потребность в визуализации. Пока речь идет о низкочастотных датчиках и малом количестве данных - все довольно просто, но как только данных становится больше, а частоты выше - всплывает множество нюансов. При 70 кГц через 10 секунд работы датчика у меня уже 700 000 точек. Через минуту – 4.2 миллиона. А пользователь при этом хочет масштабировать/панорамировать оси, выделять области, нажимать кнопки – и всё это должно отзываться мгновенно. Стандартный подход «передать всё в библиотеку» ломается очень быстро.

Читать далее

Российский микроконтроллерный блок управления судовыми преобразователями частоты. Часть 2

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

Статья посвящена микроконтроллерным системам управления преобразователями частоты для электродвигателей переменного тока. Рассматриваются различные варианты структуры и конструкции систем управления преобразователями частоты. Приводится техническое описание российского микроконтроллерного блока управления БУПЧ, который входит в состав преобразователей частоты для судовых систем электродвижения концерна «Русэлпром»: его состав, устройство, технические характеристики, преимущества и недостатки по сравнению с западными аналогами. Рассматривается специальное сервисное программное обеспечение, которое существенно сокращает время тестирования и отладки основного программного обеспечения для БУПЧ, уменьшает вероятность ошибок в нем, способных привести к аварийным ситуациям, позволяет проверить правильность работы БУПЧ и преобразователя частоты, а при возникновении ошибок – быстро определить их причины.

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

Вторая часть статьи

Мой личный джуниор. Часть 2. Даём агенту немножечко мозгов

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

Привет, Хабр! Меня зовут Владимир и это продолжение статьи про разработку локального кодер-агента на LangGraph с доступом к MCP-инструментам.

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

Читать далее

Ну и пригодились тебе твои синусы?

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

Честный ответ: писать sin(x) руками в работе приходится далеко не всем. Подавляющему большинству — вообще никогда. И даже там, где синус трудится явно — в DSP, графике, геодезии — он давно спрятан за библиотеками: вы вызываете fft(), rotate(), routeTo(), а тригонометрию за вас написали тридцать лет назад.

Так что если вопрос — «набирал ли ты когда-нибудь s-i-n на клавиатуре за деньги», у тригонометрии всё плохо.

Крутить ползунки

Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4

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

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи.

Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux.

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

Читать далее

GPU без магии: что важно знать инженеру перед выбором ускорителя

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

Если вы технарь и работаете с инфраструктурой, то регулярно слышите слова GPU, HBM, NVLink, Tensor Cores, FP8, PCIe и тому подобное. Термины вроде знакомые, но как показывает практика, далеко не всегда люди понимают, что за ними скрывается и как одно связано с другим.

Привет! Я Евгений Зенухин, руководитель отдела развития и сопровождения физической инфраструктуры в Selectel. С запросами в духе «а можно ли вместо одной H100 использовать 10 штук RTX 1080, ведь суммарно VRAM получается столько же?» я сталкиваюсь чаще, чем хотелось бы. В этой статье я решил ответить на базовые, но очень важные вопросы о GPU, развеять некоторые мифы и показать, на что при выборе графического ускорителя нужно смотреть помимо цифр в его спецификации.

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

Читать далее

Linux: Процессы

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

Четвёртая часть серии о Linux для DevOps и DevSecOps — разбираем процессы глубоко: жизненный цикл, состояния, /proc, сигналы, планировщик, ограничения, отладка и диагностика в production.

Читать

Поднимаем Linux на плате Zynq RK-7020-F V1.1 c помощью Buildroot и U-Boot SPL

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

Не так давно у меня на руках появилась плата RK-ZYNQ7020-F REV 1.1.

В данной статье я хочу поделиться своим опытом, связанным с подготовкой buildroot для данной платы. Здесь мы разберем этапы от формирования xsa файла до запуска платы и первых логов, с объяснением что происходит в железе на каждом этапе.
Также в рамках этой статьи я не буду использовать FSBL, мы попробуем обойтись U-Boot SPL.

Итак, приступим к рассмотрению!

Описание отладочной платы

Базовый набор периферии на данной плате, заявленный в документации:

Читать далее

300 потрясающих бесплатных сервисов

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


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

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

VSCode как IDE для embedded разработки

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

В данной статье рассматривается процесс настройки vscode для разработки встроенного ПО на базе ядер cortex-M и процессе превращения редактора в полноценную IDE. При этом большинство представленных расширений являются универсальными и применимы в широком спектре задач программирования.

В отличии от проприетарных решений, таких как Keil, подход использования редактора vscode + компилятор gcc позволяет гибко настроить каждый пункт от начала разработки до релиза продукта. За время своей работы мною было опробованы разные решения: от классического keil до связки sublime и CodeSourcery. В последние годы я перешел на vscode + msys2: практически все ПО Open Source, не требует лицензий, не ограничено 32 Кб кода и может работать без сети интернет.

Читать далее
1
23 ...

Информация

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