habrahabr
Как типы делают сложные задачи простыми

Последнюю пару лет мой мозг программиста всё больше увлекался типами, принципами функционального программирования и Typescript. По большей мере на это повлияло огромное количество времени, потраченное мной на кодовую базу Heartbeat — фулстек-приложения из трёхсот тысяч строк на Typescript, включающего в себя веб-приложение React, мобильное приложение React Native и сервер Node.js. Мой опыт работы с этой кодовой базой показал мне, что чем больше я полагаюсь на систему типов, тем больше пользы и…

  • суббота, 4 января 2025 г. в 00:00:09
habrahabr
FreeRTOS для самых маленьких на примере ESP-IDF

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

  • суббота, 4 января 2025 г. в 00:00:08
habrahabr
Германская танковая проблема: торжество статистики и один из первых примеров военного OSINT'a

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

  • суббота, 4 января 2025 г. в 00:00:06
habrahabr
Более 14 лет ставлю цели на год: рассказываю, как и почему этот процесс работает у меня

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

  • суббота, 4 января 2025 г. в 00:00:06
habrahabr
«Сингулярностей не существует», — утверждает первооткрыватель чёрных дыр Рой Керр

Гениальный учёный, нашедший пространственно-временное решение для вращающихся чёрных дыр, утверждает, что сингулярности физически не существуют. Прав ли он?Эта визуализация показывает, как выглядит внутренняя часть вращающейся (керровской) чёрной дыры с точки зрения наблюдателя, который пересёк внутренний горизонт событий в местном пространстве-времени. Розовая область иллюстрирует вид изнутри предполагаемой кольцевой сингулярности, которая присутствует в математической формулировке пространств…

  • суббота, 4 января 2025 г. в 00:00:05
golang
Генерация PDF-файлов на Go

Генерация PDF-документов это практически неотъемлемая часть при создании отчетов. Ведь гораздо проще иметь один HTML-шаблон который просто редактируется, и в нужные места подставить необходимые данные.В статье отобрал самые популярные (по звездам на GitHub на момент написания статьи) инструменты для генерирования PDF из HTML, DOCX и некоторых других форматов. Рассмотрим только те, которые реализованы непосредственно на Go ИЛИ имеют обертки над API на Go.Список следующий: https://github.com/go-…

  • суббота, 4 января 2025 г. в 00:00:03
golang
ErrorHandling-патерн в golang

Обработка и передача ошибок в конкурентном коде имеет некоторые особенности. Поскольку решении о запуске подзадачи(или подзадач) принимается вне запущенной горутины, центр обработки информации(в данном случае ошибки) должен находится в другом месте. Это может быть часть кода инициирующая запуск горутин(родительская горутина) и ожидающая результатов ее выполнения или отдельная горутина, запущенная для этих целей.Будем отталкиваться от примера, где мы ожидаем результатов выполнения n-горутин. Рез…

  • суббота, 4 января 2025 г. в 00:00:02
habrahabr
Оптимизация кольцевого буфера для повышения пропускной способности

В этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly. Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h.Кольцевой буфер также называется очередью «один производитель …

  • пятница, 3 января 2025 г. в 00:00:08
habrahabr
Приключения серотонина в бесконечном цикле боли, или опиатная ломка у неторчка — ч.1

Всем привет. Меня зовут Александр, и я айтишник. Нет, я не торчок, но уже несколько лет я живу с постоянной болью, как morphiumsüchtig на ломке (хотя и не так страшно). В течение этого времени у меня сложилось понимание ( а оно всегда субъективно ), как работает регуляция боли, последствия ее нарушения, и почему это может коснуться каждого. Даже тебя, Анон. А скорее всего уже коснулось. Особенно, если ты, Анон, знаком с фразами «у вас остеохондроз», «сорвал спину», «что‑то защемило», то статья …

  • пятница, 3 января 2025 г. в 00:00:06