Как Express проводит запрос через middleware
Express пропускает запросы через цепочку middleware, и это помогает выносить общие вещи вроде логина, парсинга JSON и проверки прав из роутов в отдельные функции. Если middleware не вызывает next(), запрос останавливается на нём; если вызывает, Express идёт дальше по цепочке.
https://dev.to/aryangupta9680/how-express-middleware-works-g1l
Express пропускает запросы через цепочку middleware, и это помогает выносить общие вещи вроде логина, парсинга JSON и проверки прав из роутов в отдельные функции. Если middleware не вызывает next(), запрос останавливается на нём; если вызывает, Express идёт дальше по цепочке.
https://dev.to/aryangupta9680/how-express-middleware-works-g1l
👍4❤3🔥1
TanStack Charts: типизированная библиотека для графиков на SVG и Canvas
TanStack Charts — это типизированная библиотека для построения графиков на SVG и Canvas, которая помогает собирать диаграммы из mark, scales, transforms и interactions без лишнего веса в бандле.
В React-версии базовый line chart занимает 32,1 kB gzip, а Canvas можно подключать точечно для тяжёлых сцен, сохраняя оси, tooltip, фокус и responsive-логику на одной схеме данных.
https://tanstack.com/charts/latest
TanStack Charts — это типизированная библиотека для построения графиков на SVG и Canvas, которая помогает собирать диаграммы из mark, scales, transforms и interactions без лишнего веса в бандле.
В React-версии базовый line chart занимает 32,1 kB gzip, а Canvas можно подключать точечно для тяжёлых сцен, сохраняя оси, tooltip, фокус и responsive-логику на одной схеме данных.
https://tanstack.com/charts/latest
👍3❤2
Почему LLM хуже замечают информацию в середине промпта
LLM могут иметь слепую зону для информации, которая находится в середине длинного промпта, даже если она явно есть во входных данных. На практике это значит, что при длинных документах, истории чата или результатах из tool calls модель чаще цепляется за начало и конец, а важная деталь в середине может быть проигнорирована.
https://blog.bytebytego.com/p/the-llm-blindspot-why-models-forget
LLM могут иметь слепую зону для информации, которая находится в середине длинного промпта, даже если она явно есть во входных данных. На практике это значит, что при длинных документах, истории чата или результатах из tool calls модель чаще цепляется за начало и конец, а важная деталь в середине может быть проигнорирована.
https://blog.bytebytego.com/p/the-llm-blindspot-why-models-forget
👍4🤔2
REST API для задач на Node.js и Express
Разбор того, как собрать backend для менеджера задач на Node.js и Express: регистрация и логин, JWT-авторизация, CRUD для задач, валидация входных данных и проверка эндпоинтов через Postman или Thunder Client.
https://dev.to/saiprasanna/building-a-task-management-rest-api-with-nodejs-and-expressjs-61a
Разбор того, как собрать backend для менеджера задач на Node.js и Express: регистрация и логин, JWT-авторизация, CRUD для задач, валидация входных данных и проверка эндпоинтов через Postman или Thunder Client.
https://dev.to/saiprasanna/building-a-task-management-rest-api-with-nodejs-and-expressjs-61a
❤2👍2
Границы в софте: навык, который сильнее влияет на архитектуру, чем кажется
Граница в системе отделяет внутреннюю логику приложения от всего внешнего и удерживает вместе правила, ответственность и детали их применения. Через неё части системы общаются только по понятному пути, поэтому именно выбор границ определяет, что должно жить вместе, а что лучше разнести.
Это напрямую влияет на поддержку кода: удачные границы упрощают изменения, уменьшают связанность и делают зависимости предсказуемыми. Практический навык здесь — замечать, какие обязанности стоит группировать, и не пускать лишние зависимости внутрь ядра системы.
https://blog.bytebytego.com/p/how-software-boundaries-are-the-most
Граница в системе отделяет внутреннюю логику приложения от всего внешнего и удерживает вместе правила, ответственность и детали их применения. Через неё части системы общаются только по понятному пути, поэтому именно выбор границ определяет, что должно жить вместе, а что лучше разнести.
Это напрямую влияет на поддержку кода: удачные границы упрощают изменения, уменьшают связанность и делают зависимости предсказуемыми. Практический навык здесь — замечать, какие обязанности стоит группировать, и не пускать лишние зависимости внутрь ядра системы.
https://blog.bytebytego.com/p/how-software-boundaries-are-the-most
❤3👍2
Профилирование CPU и памяти в Workers и Durable Objects по запросу
Cloudflare добавила профилирование CPU и памяти для
https://blog.cloudflare.com/workers-on-demand-profiling/
Cloudflare добавила профилирование CPU и памяти для
Workers и Durable Objects прямо в продакшене. Это даёт flamegraph, где видно, какая функция съедает время или память, и помогает быстрее находить утечки, лишние вычисления и причины OOM. Профиль можно снять из Dashboard или через CLI, а затем скачать файл и разобрать его дальше. Для TypeScript важно включить source maps, иначе имена функций в профиле будут плохо читаемыми.https://blog.cloudflare.com/workers-on-demand-profiling/
❤3🥱1
Как Cloudflare Radar упростили для широкой аудитории
Cloudflare Radar получил редизайн, чтобы данные о глобальном трафике и сбоях в интернете было проще читать не только инженерам, но и журналистам, исследователям и обычным пользователям. В новой версии сделали акцент на
Для веб-разработчика здесь важен сам подход: сложный data product можно сделать заметно понятнее, если выстроить иерархию, опереться на знакомые паттерны и привести интерфейс к общей дизайн-системе. Это хороший пример того, как редизайн влияет не только на внешний вид, но и на доверие, навигацию и то, насколько охотно пользователи будут возвращаться к продукту.
https://blog.cloudflare.com/radar-redesign/
Cloudflare Radar получил редизайн, чтобы данные о глобальном трафике и сбоях в интернете было проще читать не только инженерам, но и журналистам, исследователям и обычным пользователям. В новой версии сделали акцент на
map как на понятной точке входа и перевели блоки с данными в более структурированный tabbed-поток, чтобы не перегружать страницу и сохранить глубину информации.Для веб-разработчика здесь важен сам подход: сложный data product можно сделать заметно понятнее, если выстроить иерархию, опереться на знакомые паттерны и привести интерфейс к общей дизайн-системе. Это хороший пример того, как редизайн влияет не только на внешний вид, но и на доверие, навигацию и то, насколько охотно пользователи будут возвращаться к продукту.
https://blog.cloudflare.com/radar-redesign/
❤3👍2
TanStack Charts: типизированная библиотека для графиков в React
TanStack Charts даёт грамматику для графиков на
У библиотеки стабильный
https://tanstack.com/charts/latest
TanStack Charts даёт грамматику для графиков на
SVG и Canvas, где можно собирать marks, scales, transforms, interactions и анимации из компактных примитивов или через совместимые с D3 входы. Это полезно, когда нужен не просто готовый chart component, а гибкая основа, которую не придётся менять при росте продукта.У библиотеки стабильный
API в версии 1.0, строгая типизация и tree-shaking, а базовый React line chart весит 32.1 kB gzip. Canvas можно подключать точечно для тяжёлых графиков, при этом оси, тултипы, hydration, responsive layout и экспорт продолжают работать через одну и ту же схему описания.https://tanstack.com/charts/latest
👍3
CSS Anchor Positioning: как привязывать элементы к другим элементам
CSS Anchor Positioning позволяет позиционировать один absolute-элемент относительно другого элемента-якоря, даже если они находятся в разных ветках DOM. Это полезно для попапов, подсказок, меню и любых интерфейсных связок, где нужно держать элемент рядом с триггером без ручных пересчётов координат.
Вместо привязки к контейнеру используются
https://habr.com/ru/articles/1092540/
CSS Anchor Positioning позволяет позиционировать один absolute-элемент относительно другого элемента-якоря, даже если они находятся в разных ветках DOM. Это полезно для попапов, подсказок, меню и любых интерфейсных связок, где нужно держать элемент рядом с триггером без ручных пересчётов координат.
Вместо привязки к контейнеру используются
anchor-name, position-anchor, position-area и anchor(): ими можно выбрать якорь, задать сторону и точно совместить границы элементов. В Chrome это уже работает с мая 2024 года, а на практике даёт более надёжную и гибкую альтернативу ручному position: absolute для связанных UI-элементов.https://habr.com/ru/articles/1092540/
🔥3
Beta: Oxynote — документация API в стиле Stripe
Oxynote — это подход к API-документации в стиле Stripe, который помогает быстро собрать понятные и аккуратные справочные страницы для продукта. Он полезен, когда нужно не просто перечислить эндпоинты, а показать разработчику, как с ними работать без лишней возни.
Для команды это значит меньше времени на ручную верстку и поддержку документации, а для пользователей API — более предсказуемый и удобный опыт. Такой формат особенно пригодится, если вы строите публичный API и хотите, чтобы интеграция проходила без лишних вопросов.
https://github.com/oxynote/oxynote
Oxynote — это подход к API-документации в стиле Stripe, который помогает быстро собрать понятные и аккуратные справочные страницы для продукта. Он полезен, когда нужно не просто перечислить эндпоинты, а показать разработчику, как с ними работать без лишней возни.
Для команды это значит меньше времени на ручную верстку и поддержку документации, а для пользователей API — более предсказуемый и удобный опыт. Такой формат особенно пригодится, если вы строите публичный API и хотите, чтобы интеграция проходила без лишних вопросов.
https://github.com/oxynote/oxynote
🔥3❤1
Как строить масштабируемые AI-автоматизации в n8n
Плюс в том, что на его базе можно строить AI-пайплайны: извлекать структуру из документов, подключать
https://www.freecodecamp.org/news/create-scalable-ai-automations-with-n8n/
n8n помогает собирать не только простые связки сервисов, а рабочие автоматизации для продакшена с вебхуками, self-hosted-развёртыванием, обработкой REST API и кастомным JavaScript для очистки и преобразования данных.Плюс в том, что на его базе можно строить AI-пайплайны: извлекать структуру из документов, подключать
LLM, делать агентов с памятью, собирать цепочки из нескольких агентов и добавлять ручные approvals, ретраи и мониторинг, чтобы это не ломалось на реальных нагрузках.https://www.freecodecamp.org/news/create-scalable-ai-automations-with-n8n/
❤2
Size Limit: контроль размера и скорости JS-бандла в CI
Инструмент
https://github.com/ai/size-limit?ref=console.dev
Инструмент
Size Limit измеряет не только размер JS, но и реальную стоимость его загрузки и выполнения в браузере. Его удобно подключать в GitHub Actions или другой CI, чтобы пул-реквесты не протаскивали тяжёлые зависимости и не ухудшали производительность.https://github.com/ai/size-limit?ref=console.dev
❤3🔥2
TanStack Router для React: типобезопасная маршрутизация, загрузчики и защита роутов
TanStack Router даёт маршрутизацию для современных React-приложений с полной типобезопасностью, автогенерацией
На практике это помогает собрать приложение с вложенными layout'ами,
https://www.freecodecamp.org/news/master-modern-react-routing-tanstack-router-crash-course/
TanStack Router даёт маршрутизацию для современных React-приложений с полной типобезопасностью, автогенерацией
routeTree.gen.ts, ленивой загрузкой и работой с query-параметрами без ручного парсинга строк. Это полезно, когда нужно ловить ошибки в путях и параметрах на этапе сборки, а не в проде, и при этом держать навигацию, загрузку данных и доступ к защищённым страницам в одном месте.На практике это помогает собрать приложение с вложенными layout'ами,
loader, useLoaderData, beforeLoad, router.invalidate() и защитой роутов, не утопая в useEffect и лишнем boilerplate. Для React-разработчика это хороший способ сделать роутинг чище, быстрее и удобнее для масштабирования.https://www.freecodecamp.org/news/master-modern-react-routing-tanstack-router-crash-course/
❤2👍2
Как рисовать system design диаграммы на Python
Для работы нужны
https://www.freecodecamp.org/news/how-to-create-system-design-diagrams-using-python/
Diagrams позволяет описывать архитектуру приложения кодом вместо ручной отрисовки: вы задаёте узлы, связи и группы, а на выходе получаете готовую схему. Это удобно для документации, потому что такие диаграммы легче хранить в Git, обновлять вместе с кодом и генерировать автоматически в CI/CD или при сборке документации.Для работы нужны
Python 3.7+, pip и Graphviz, после чего библиотека ставится через pip install diagrams. В коде используются Diagram, узлы вроде EC2, стрелки >>, <<, - для направления потока и Cluster для группировки слоёв, окружений или сервисов.https://www.freecodecamp.org/news/how-to-create-system-design-diagrams-using-python/
❤2
Cloudflare K2: serverless event streams
Cloudflare K2 — это сервис потоковой доставки событий, который хранит данные как упорядоченный лог и позволяет читать их нескольким потребителям независимо друг от друга. Он полезен там, где нужно не терять события при пиках нагрузки, сбоях или долгой недоступности downstream-сервисов, а ещё держать историю данных без собственного кластера брокеров.
K2 построен поверх
https://blog.cloudflare.com/cloudflare-k2-streams/?ref=console.dev
Cloudflare K2 — это сервис потоковой доставки событий, который хранит данные как упорядоченный лог и позволяет читать их нескольким потребителям независимо друг от друга. Он полезен там, где нужно не терять события при пиках нагрузки, сбоях или долгой недоступности downstream-сервисов, а ещё держать историю данных без собственного кластера брокеров.
K2 построен поверх
R2, поэтому отделяет вычисления от хранения и масштабируется без ручного управления инфраструктурой. Для продукта это означает более дешёвое и долговечное хранение, а на практике — удобный буфер для аналитики, антифрода, фоновой обработки и fan-out сценариев, где один поток событий читают сразу несколько систем.https://blog.cloudflare.com/cloudflare-k2-streams/?ref=console.dev
👍2
Bun 1.4.3: встроенная проверка типов и ускорение сборки
Bun v1.4.3 добавляет
Обновление также ускоряет
https://bun.com/blog/bun-v1.4.3
Bun v1.4.3 добавляет
bun check, встроенную проверку TypeScript, которая в реальных проектах работает в несколько раз быстрее tsc и заметно экономит память. Для повседневной разработки это значит более быстрый фидбек в bun run --check, bun test --check и bun build --check, когда ошибки типов ловятся до запуска кода или сборки.Обновление также ускоряет
node:http на больших ответах, JSON.parse, обработку отклонённых Promise, снижает простой CPU и память у bun build, а ещё добавляет Bun.FetchSession, экспериментальный Bun.ModuleGraph, поддержку If-Range в Bun.serve и новые опции вроде --disallow-code-generation-from-strings.https://bun.com/blog/bun-v1.4.3
🔥5
Deno присоединяется к Cloudflare для self-hosting Workers
Deno и Cloudflare объединяют усилия, чтобы упростить self-hosting
https://blog.cloudflare.com/deno-joins-cloudflare/
Deno и Cloudflare объединяют усилия, чтобы упростить self-hosting
Workers и Durable Objects и дать разработчикам один и тот же набор примитивов в большем числе окружений. Это важно, потому что такой подход снимает часть зависимости от одного провайдера и делает перенос и запуск приложений на своей инфраструктуре реальнее без смены модели разработки.celld и workerd станут основой для более удобной поддержки self-hosting, а в проекте будут использовать идеи и код из celld. Для разработчика это означает, что можно будет строить приложения в стиле Workers и при этом запускать их не только у Cloudflare, но и в собственном окружении.https://blog.cloudflare.com/deno-joins-cloudflare/
👍4❤1
Cloudflare Clef: модель для принятия решений по состоянию, а не генерации текста
Clef — это модель, которая превращает состояние системы в набор решений по заранее заданным вопросам. Она читает вход как текст, JSON, изображения или видео и за один проход возвращает вероятности по всем допустимым вариантам, без генерации свободного текста и без парсинга ответа.
Для веб-приложений это полезно там, где нужен предсказуемый выбор: маршрутизация обращений, разбор инцидентов, обработка инвойсов, оценка срочности или классификация по бизнес-правилам. Модель совместима с
https://huggingface.co/Cloudflare/clef
Clef — это модель, которая превращает состояние системы в набор решений по заранее заданным вопросам. Она читает вход как текст, JSON, изображения или видео и за один проход возвращает вероятности по всем допустимым вариантам, без генерации свободного текста и без парсинга ответа.
Для веб-приложений это полезно там, где нужен предсказуемый выбор: маршрутизация обращений, разбор инцидентов, обработка инвойсов, оценка срочности или классификация по бизнес-правилам. Модель совместима с
Jev и SystemOne, умеет работать через SGLang, а для более дешёвого и быстрого варианта есть Clef-Flash.https://huggingface.co/Cloudflare/clef
🔥4
Edge Functions стали в 5 раз быстрее благодаря MicroVMs
Netlify перевёл Edge Functions с v8 isolates на MicroVMs внутри своей edge-сети, чтобы снизить задержку, повысить надёжность и ускорить доставку логов. На тёплом вызове это дало примерно 5–6 мс вместо 25–40 мс на старой инфраструктуре, а изоляция на уровне MicroVMs лучше защищает разные деплои друг от друга.
https://www.netlify.com/blog/edge-functions-firecracker-microvms/
Netlify перевёл Edge Functions с v8 isolates на MicroVMs внутри своей edge-сети, чтобы снизить задержку, повысить надёжность и ускорить доставку логов. На тёплом вызове это дало примерно 5–6 мс вместо 25–40 мс на старой инфраструктуре, а изоляция на уровне MicroVMs лучше защищает разные деплои друг от друга.
https://www.netlify.com/blog/edge-functions-firecracker-microvms/
Анатомия уязвимостей API по OWASP API Security Top 10
OWASP API Security Top 10 показывает не только сами уязвимости, но и какие инженерные решения обычно приводят к их появлению. Это полезно тем, кто проектирует и пишет API: список помогает заранее закрывать типовые дыры вроде BOLA, слабой аутентификации, SSRF и ошибок в авторизации на уровне объектов и функций.
https://www.freecodecamp.org/news/engineering-anatomy-of-api-vulnerabilities-owasp-api-security-top-10/
OWASP API Security Top 10 показывает не только сами уязвимости, но и какие инженерные решения обычно приводят к их появлению. Это полезно тем, кто проектирует и пишет API: список помогает заранее закрывать типовые дыры вроде BOLA, слабой аутентификации, SSRF и ошибок в авторизации на уровне объектов и функций.
https://www.freecodecamp.org/news/engineering-anatomy-of-api-vulnerabilities-owasp-api-security-top-10/
👍3❤1