async def в FastAPI не делает код автоматически быстрее и не отправляет его в отдельный поток.
Разбираемся, когда await действительно освобождает event loop, почему обычный requests внутри async-эндпоинта может заблокировать другие задачи и когда в FastAPI лучше использовать обычный def.
А заодно — почему async def не решает проблему CPU-bound вычислений.
#FastAPI #Python #AsyncIO #AsyncAwait #asyncdef #Backend #PythonDevelopment #WebDev
Formisch 1.0 вышел в стабильный релиз и теперь официально готов к использованию в продакшене.
Formisch — schema-first библиотека для работы с формами. Схема Valibot используется одновременно для типизации и валидации, а общая логика не привязана к конкретному UI-фреймворку.
Библиотека поддерживает сразу восемь фреймворков: React, Vue, Angular, Svelte, Solid, Qwik, Preact и React Native. В первой стабильной версии также появились инструменты, которые упрощают работу с документацией Formisch через AI-агентов.
Больше релизов — в полном выпуске по ссылке под шортсом!
#devnews #Formisch #Valibot #React #Vue #Angular #Svelte #frontend #webforms
Почему Docker-контейнер может получить Out of memory, хотя на хосте ещё достаточно свободной RAM?
Разбираемся, как memory limit контейнера работает через cgroup и почему доступная память хоста не спасает процесс после достижения этого ограничения.
А в Docker Desktop и WSL появляется ещё один уровень — лимит памяти виртуальной машины. Показываем, где искать ограничение и что проверить через docker inspect и docker stats.
#Docker #oom #oomkilled #OutOfMemory #Linux #WSL #DockerDesktop #DevOps #Backend #ram
GPUIX позволяет создавать нативные приложения на React и TypeScript без Electron и WebView.
Проект связывает React с GPUI — GPU-фреймворком, который используется в редакторе Zed. Можно продолжать работать с привычными JSX, useState и React-компонентами, а интерфейс при этом рендерится через GPUI с использованием Metal, DirectX или Vulkan.
GPUIX поддерживает macOS, Windows и Linux, а готовое приложение можно собрать в самостоятельный бинарник, которому не нужны установленные Bun или Node.js.
Больше релизов — в полном выпуске по ссылке под шортсом!
#react #reactjs #gpu #gpui #gpuix #ts #typescript #nodejs #zed #desktop #desktopdev #nativeapps
Почему в React новая задача может открыть ту же форму со старым локальным state?
Разбираемся, как React связывает state с позицией компонента в дереве и почему смена пропсов сама по себе не создаёт новый компонент.
Показываем, как key меняет идентичность компонента, когда это удобно для сброса формы или черновика и почему случайный key может привести к постоянным пересозданиям.
#React #JavaScript #js #Frontend #reactState #ReactKey #WebDev #reactjs
Вышел Go 1.27 с обновлениями языка, runtime, инструментов и стандартной библиотеки.
Одно из главных изменений — поддержка generic methods: теперь методы могут объявлять собственные параметры типов. В стандартной библиотеке появился новый encoding/json/v2 с более строгими настройками и ускоренным декодированием JSON, а также пакет uuid.
В runtime добавили профиль goroutineleak для поиска заблокированных goroutine, которые уже не смогут продолжить выполнение. Поработали и над производительностью: небольшие аллокации памяти могут выполняться до 30% быстрее.
Больше релизов — в полном выпуске по ссылке под шортсом!
#devnews #go #golang #backend #generics #goroutines #json #backenddev
Почему запрос на двадцать строк может становиться всё медленнее с каждой следующей страницей?
При OFFSET 100000 PostgreSQL не перепрыгивает сразу к нужным записям. Предыдущие строки всё равно приходится пройти и отбросить, поэтому стоимость запроса растёт вместе с глубиной пагинации.
Разбираемся, как работает OFFSET и почему для длинных списков и лент keyset pagination часто подходит лучше.
#PostgreSQL #SQL #postgres #Database #Pagination #KeysetPagination #Backend #Performance
Вышла Sugar High 2.0 — новая версия легковесной библиотеки для подсветки синтаксиса кода.
Sugar High позволяет добавлять syntax highlighting без тяжёлых решений и теперь поддерживает 25 встроенных языков. В версии 2.0 библиотека превратилась в более гибкий набор инструментов: появился composable core API, отдельные компоненты для React, интеграция с Remark и больше возможностей для настройки отображения токенов и строк.
При этом библиотека остаётся компактной: полный пакет занимает около 8,6 КБ в gzip, а core — около 1,7 КБ.
Больше релизов — в полном выпуске по ссылке под шортсом!
#sugarhigh #frontend #SyntaxHighlighting #codeeditor #js #javascript #jsx #react #vue #webdev
Promise.all запускает несколько задач параллельно, но сам по себе не ограничивает их количество.
Если передать ему большой список запросов к базе, можно мгновенно создать сотни или тысячи промисов. Часть запросов встанет в очередь пула, а база получит лишнюю конкуренцию за соединения и ресурсы.
Разбираемся, почему Promise.all не является лимитером параллелизма и как контролировать нагрузку с помощью чанков или p-limit.
#PromiseAll #JavaScript #NodeJS #Database #Concurrency #Backend #Performance #Async
Вышел Nuxt 4.5 с большим набором обновлений для разработки и производительности.
В новой версии Nuxt перешёл на Vite 8, добавил поддержку Rspack 2 и Rsbuild, а также экспериментальный SSR Streaming. Появились стабильные коды ошибок, новый useLayout, поддержка Named Views и дополнительные возможности для отладки и отслеживания SSR.
Кроме пользовательских изменений, команда продолжает перерабатывать внутреннюю архитектуру и готовить Nuxt к будущему переходу на Nuxt 5.
Больше релизов — в полном выпуске по ссылке под шортсом!
#nuxt #vue #js #javascript #vuejs #nuxtjs #frontend #metaframework #frontendframework
Почему проект внутри Docker может тормозить, даже когда процессор и память почти не загружены?
Разбираемся, как Bind Mount связывает файлы хоста с контейнером и почему на Docker Desktop или WSL файловые операции могут замедляться при переходе между Windows и Linux.
Особенно это заметно на node_modules, сборке и file watcher. Поэтому исходники для Linux-контейнеров лучше держать внутри Linux-среды, а кэш, зависимости и результаты сборки — выносить в Docker volume.
#Docker #BindMount #WSL #Linux #DevOps #Backend #windows #webdev
Почему language server может занимать гигабайты памяти даже в обычной IDE?
Разбираемся, что именно хранит LSP-сервер: индекс workspace, символы, типы и кэши. На больших монорепозиториях объём этих данных быстро растёт, а несколько открытых проектов могут запустить отдельные серверы со своими индексами.
Показываем, почему проблема обычно не в самом LSP-протоколе и что стоит проверить, если language server начинает съедать слишком много RAM.
#LSP #LanguageServer #LanguageServerprotocol #IDE #Programming #DevTools #Программирование
Почему программа в терминале ведёт себя иначе, чем при запуске через pipe?
Разбираемся, что такое PTY, зачем ему master и slave и почему программы через него понимают, что работают интерактивно. Именно поэтому появляются цвета, прогресс-бары, терминальные сигналы и реакция на изменение размера окна.
PTY используют SSH, tmux и веб-консоли, чтобы дать программе интерактивную среду без физического терминала.
#PTY #Terminal #Linux #Shell #SSH #Tmux #Backend #TTY #pipe #терминал
В верхней панели Omarchy собрано гораздо больше, чем Wi-Fi, Bluetooth и настройки дисплея.
Здесь можно следить за AI-агентами и их лимитами, запускать запись экрана, включать Stay Awake, управлять уведомлениями и Night Light. Есть даже встроенная диктовка с собственной моделью, которую можно настроить под себя.
В шортсе показываем, что доступно прямо из верхней панели Omarchy.
Полный обзор Omarchy — смотри по ссылке под шортсом!
#Omarchy #Linux #ArchLinux #Hyprland #os #unix #линукс #distro #linuxdistro #AIAgents #LinuxDesktop
Почему fork() не копирует сразу всю память большого процесса?
После fork() родительский и дочерний процессы сначала используют одни и те же физические страницы памяти. Копия создаётся только тогда, когда один из процессов пытается изменить страницу.
Поэтому даже большой процесс можно форкнуть довольно дёшево — пока потомок не начинает активно менять память.
#Linux #Fork #Memory #OperatingSystems #Backend #Programming #Программирование
В Omarchy есть свой Plugin Marketplace с плагинами, которые позволяют расширять возможности системы под разные задачи.
В каталоге доступно множество вариантов. Например, Omarchy Screencast Keys показывает нажатия клавиш во время скринкастов, Magic Mouse Battery добавляет индикатор заряда Magic Mouse, а Input Sources помогает быстро переключать источник ввода.
Установить нужный плагин можно через команду или просто попросить об этом вашего AI-агента.
Полный обзор Omarchy — по ссылке под шортсом.
#Omarchy #Linux #ArchLinux #Hyprland #os #unix #линукс #distro #linuxdistro #plugins #omarchyplugins
LSP позволяет разным редакторам работать с одним и тем же языковым сервером.
Редактор отправляет стандартные LSP-сообщения: какой файл открыт, где находится курсор и что нужно получить. Сервер возвращает автодополнение, переходы к определению и диагностику.
Обычно обмен идёт через JSON-RPC, поэтому редактору не нужно отдельно реализовывать поддержку каждого языка.
#LSP #LanguageServer #LanguageServerProtocol #ide #jsonrpc #rpc #Programming
Что такое Omarchy и почему эта система привлекла внимание разработчиков?
В шортсе знакомимся с Omarchy и смотрим, что появилось в версии 4 и как изменился подход к работе с системой.
Полный обзор Omarchy — по ссылке под шортсом.
#Omarchy #Linux #ArchLinux #Hyprland #os #unix #линукс #distro #linuxdistro #quickshell #LinuxDesktop
IDE, Git, сборка и file watcher могут резко замедлиться, если проект лежит на Windows-диске, а инструменты работают внутри WSL или Linux-контейнера.
Каждая файловая операция пересекает границу Windows и Linux. На одном файле это почти незаметно, но на node_modules или большом монорепозитории тысячи таких обращений складываются в заметные задержки.
Разбираемся, почему для Linux-инструментов репозиторий лучше держать внутри файловой системы WSL, например в /home/..., а не в /mnt/c.
#WSL #Docker #Linux #DevTools #Performance #Frontend #Backend #windows #ide
Срочный hotfix прилетел посреди работы над фичей? Не обязательно делать stash и постоянно переключаться между ветками.
git worktree позволяет открыть другую ветку в отдельной рабочей директории. У worktree будут отдельные рабочие файлы, зависимости и результаты сборки, но история и база объектов Git останутся общими.
Разбираемся, как использовать worktree для параллельной работы над несколькими задачами.
#Git #GitWorktree #DevTools #Programming #webdev #coding #гит
