Обновить

Основные паттерны конкурентности в Go: Worker Pool

Уровень сложностиСредний

Проблемы которые можно решить этим паттерном:

1. Если сервис делает 1000 запросов в секунду к базе данных, а она выдерживает только 100, пул воркеров защитит БД от падения.

2. При внезапном всплеске трафика go func() на каждый запрос может создать 100500 горутин и съесть всю память. Пул ограничивает параллелизм.

3. Если у вас есть пул соединений к сокету или файловых дескрипторов, пул воркеров гарантирует, что вы не превысите лимит ОС.

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

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

Читать далее

My Science App: Как превратить расчеты в интерактивное научное приложение за 5 минут

My Science App — это open-source low-code платформа, которую я разработал в 13 лет специально для упрощения сложных расчетов, преобразующая текстовые формулы в интерактивные веб-интерфейсы с поддержкой реактивного пересчета данных и динамической визуализации. Инструмент автоматизирует создание полей ввода (#input), расчетных модулей и графиков симуляций (#range, #inx, #outy), позволяя за 5 минут собрать полноценный научный стенд с экспортом результатов в CSV и генерацией ссылок на рабочие модели. Проект ориентирован на быструю проверку гипотез и образовательные задачи, исключая необходимость ручного написания JS-кода или работы в Excel-таблицах.

Читать далее

React Compiler — конец эпохи useMemo?

7 октября 2025 года команда React анонсировала стабильную версию React Compiler 1.0 — инструмент, о котором мечтали разработчики годами. Обещание простое и привлекательное: забудьте про useMemo, useCallback и React.memo. Компилятор всё сделает за вас.

Но действительно ли мы можем расслабиться и больше не думать о производительности? Давайте разберемся.

Читать далее

Зачем нам Spinnaker, если есть Python? Как мы написали свой «велосипед» для деплоя в K8s

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

Довольно долгое время мы использовали в своём окружении Spinnaker. Очень удобный, правда старомодный,  инструмент, который справлялся со своими задачами. Однако чем дольше пользовались, тем больше становилось очевидно, что Спиннакер малость избыточен, при этом очень прожорливый в плане потребления ресурсов, и тяжёлый в плане обслуживания и поддержки. Особенно когда перестали выходить новые версии CLI под Mac OS, и управление перешло в Докер контейнер. А уж когда после очередного обновления снова стали падать компоненты из-за нехватки памяти и отвалился SSO, пришло озарение...

Читать далее

Автоматически unseal Vault в продакшене

Уровень сложностиПростой

С приходом контейнеров и оркестрации появилась проблема: где безопасно хранить секреты? На рынке достаточно решений - Sealed Secrets, Kubernetes Secrets, Infisical - но сейчас стандартом остаётся HashiCorp Vault. Vault - это не просто хранилище паролей. Это централизованное управление секретами с динамической выдачей секретов, гибкими политиками доступа и полным аудитом.

Но и у Vault есть свои проблемы: высокий порог входа, настройка политик доступа и самая большая боль - unseal. Дело в том, что Vault при запуске находится в sealed-состоянии и не отдаёт секреты, пока его не разблокируют. Перезагрузился под, упала VM - и все сервисы, зависящие от Vault, перестанут запускаться (уже запущенные, кстати, продолжат работать). Вопрос в том, как это решать правильно.

Самый простой способ хранить unseal-ключи - записать на листочек и спрятать в сейф. Но как передать ключи коллеге? Что если единственный носитель ключа уволился, ушёл в отпуск или просто недоступен в 3 часа ночи? Это классическая единая точка отказа - и строить на ней безопасность продакшена как минимум рискованно, а как максимум приведёт к потере секретов навечно.

Решение этой проблемы - auto-unseal через облачные KMS: AWS KMS, GCP Cloud KMS, Azure Key Vault. Сервисы берут на себя расшифровку мастер-ключа при старте Vault, и ручное вмешательство больше не нужно. Но что если вы работаете только в on-premise и отправлять даже ключи шифрования во внешние сервисы - не вариант?

Можно поднять второй Vault, который будет unseалить первый через Transit. Рабочая схема, но это дополнительная инфраструктура, которую тоже нужно обслуживать и мониторить. А если хочется полной отказоустойчивости, цепочка Vault'ов начинает расти.

Читать далее

Зачем сущность Role пишут отдельно, а не добавляют роль в сущность User

Уровень сложностиСредний

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

Сущность Role пишут отдельно от сущности User, вероятно, для того, чтобы разграничить роли и пользователей и упростить управление ими.

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

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

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

Читать далее

Защита Linux-сервера с nftables: моя оборона

Уровень сложностиСредний

Простая блокировка портов несомненно эффективна, но сервисам всё-таки нужно смотреть в открытый интернет. Настоящая защита требует комплексного подхода: динамических списков блокировок и механизмов скрытия сервисов. В этой статье я хочу поделиться своей «боевой» конфигурацией nftables.

Читать далее

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

Уровень сложностиСредний

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

Обычное шифрование выглядит подозрительно — "зачем этот файл зашифрован?". А стеганография прячет данные внутри обычной картинки или песни так, что визуально ничем не отличается от нормального файла.

Читать далее

VK Dialog Photo Archiver: маленький десктоп‑инструмент, который решает большую проблему ВК‑диалогов

Уровень сложностиПростой

ВКонтакте остаётся для многих основным рабочим и личным мессенджером, но у него есть одна неприятная особенность: медиаконтент живёт «где‑то в облаке», а нормального способа точечно забрать все фото из одного диалога до сих пор нет.

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

Я столкнулся с этой задачей несколько раз подряд — и в какой‑то момент решил, что проще написать отдельный инструмент.

Читать далее

Как я запустил windows 10 на raspberry pi zero 2w

Многие знают, что Windows 10 требовательна к железу. Официальные системные требования — 2 ГБ ОЗУ, 20 ГБ на диске, процессор не менее 1 ГГц . Raspberry Pi Zero 2W имеет 512 МБ ОЗУ, ARM-процессор  Broadcom BCM2710A1, 4x Cortex-A53 с тактовой частотой 1 ГГц .

Я решил проверить возможно ли запустить windows 10 на Pi zero 2w.

Читать далее

Автоматизация обновлений Ubuntu: создание интерактивного меню на bash

Ubuntu System Updater — Интерактивное приложение на Bash для управления обновлениями в Ubuntu

Привет, сообщество r/linuxr/ubuntu и r/bash!

Хочу поделиться инструментом, над которым работал — Ubuntu Auto Updater — интерактивное приложение на Bash для возможности обновить сразу все установленнык компоненты в Ubuntu и Ubuntu Server. Приложение само сканирует ваши компоненты и ищет для них обновления если таковы есть и предложит обновить все либо либо одни конкретный.

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

Читать далее

Секреты Вселенной в разрядах арифмометра

Уровень сложностиСредний

Разбирая тему «вычитание сложением при помощи дополнения с потерей переноса разряда» я столкнулся с трудностями в понимании формулы x +(100000 — y) — 100000, может показаться парадоксальным, что для «вычитания сложением» мы используем формулу с вычитанием. Однако это лишь математическая запись физического процесса, но на данном этапе я этого не осознавал, что и послужило отправной точкой для углубленного анализа разбираемой темы, раскрывая микромеханику спрятанную за «искаженными» дисками арифмометра.

Читать далее

Как я ускорил WordPress до 100 баллов в Lighthouse: прощай, Elementor, привет SvelteKit + Headless CMS

Уровень сложностиСредний

Многие владельцы сайтов на WordPress рано или поздно упираются в «стеклянный потолок» производительности. В этой статье я расскажу, как перевел проект с тяжеловесного конструктора Elementor на архитектуру Headless CMS с использованием SvelteKitTypeScript и Node.js, и почему это лучшее решение для SEO в 2024 году.

Проблема: Elementor и «ожирение» веба

Типичный сайт на Elementor — это кладбище из 20+ плагинов, десятки неиспользуемых CSS-файлов и тонны JS, который блокирует основной поток.

Дано:

Читать далее

Алгоритм принятия решений нейронной сетью

Уровень сложностиПростой

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

Читать далее

Микросервис авторизации на Go с JWT: от нуля до продакшена за 30 минут

Уровень сложностиСредний

Сколько раз вы писали авторизацию с нуля для нового пет-проекта? Копировали старый код, собирали либы, наскоро делали /login и /refresh? А потом думали о безопасности, структуре, тестах... Давайте один раз сделаем это правильно, но минимально. Сегодня мы соберем сервис, который станет вашим надежным go-to решением для будущих проектов.

Коротко о том, что будем строить: REST API с 3 эндпоинтами (/register/login/refresh)

исходный код

Читать далее

Подключение по SSH к WSL 2 в Windows 10/11 с внешнего компьютера

Уровень сложностиПростой

Решается задача по передаче определенных файлов с Linux-машины на Windows-машину в одной локальной сети (решение подойдет и для внешнего соединения при условии настройки доступов за NAT). Для того, чтобы все настраивать в одной экосистеме (Linux), на Windows-машине будет использоваться уже установленная WSL 2. Да, да, да, есть портированные версии OpenSSH для версий Windows отличных от 10-ки, а SSH-сервер можно настроить и на самой Windows 10 стандартно без заморочек с WSL, но интереснее поиграться с подсистемой, ведь подобный способ подключения к WSL могут использовать и различные веб-приложения. Вопросы безопасности не поднимаются, рассматривается сам механизм получения доступа по SSH к дистрибутиву WSL 2 внутри локальной сети (LAN).

Читать далее

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

Уровень сложностиСредний

Почему «красные точки» телескопа Уэбба могут быть не первыми галактиками — и что это говорит о происхождении пространства, времени и вакуума.

Читать далее

Третий Предел

 Сначала, надо напомнить первые два замечательных предела:

1. \lim_{x \to 0} sin(x)/x=1

2. \lim_{x \to \infty} (1+1/x)^x=e

Предлагаю третий, очень хороший предел:

3. \lim_{n \to \infty} A_nB_nC=C, \infty=332 Далее, за пределом, – геометрия за пределом. Наверное, квантовая.

Читать далее

Host filtering C# и как защитить свой бэкенд от подделки хоста

Уровень сложностиПростой

Всем привет, сегодня расскажу про host filtering в C#

Сразу к делу, расскажу, как это сделать, а потом уже, зачем это и остальное, так как статья ориентирована на тех, кто уже знает, зачем им это. Всё будет демонстрироваться на новом проекте в visual studio, .NET 8.

Нажми на меня (●'◡'●)