golang
Оптимизация памяти в Go: 20 приёмов для эффективных приложений

Команда Go for Devs подготовила перевод статьи о том, как оптимизировать использование памяти в Go-приложениях. Автор делится двадцатью приёмами — от выбора ресивера метода и правильной инициализации slice до кастомного управления памятью и профилирования с pprof. TL;DR: мелкие улучшения складываются в заметный прирост производительности и стабильности.Как разработчик на Go, я провёл бесчисленные часы, оптимизируя использование памяти в своих приложениях. Это критически важная часть создания эф…

  • пятница, 5 сентября 2025 г. в 00:00:14
golang
Как спроектировать кэш-библиотеку нового поколения и не умереть?

Всем привет! Меня зовут Алексей Майшев, я работаю Go-инженером в Авито. В этой статье рассказываю, как мы с командой независимых разработчиков 9 месяцев проектировали и разрабатывали кэш-библиотеку следующего поколения для Go — otter. Вы узнаете, чем нас не устроили текущие кэш-библиотеки в Go, какие подходы и оптимизации мы рассматривали и на каких остановились, как замеряли производительность и потребление памяти и в чём otter превосходит конкурентов. А ещё тут будет много теории — в процессе…

  • пятница, 5 сентября 2025 г. в 00:00:13
javascript
librats: новая библиотека для распределённых P2P-приложений

Всем привет! Я являюсь создателем распределённого поисковика rats-search на базе DHT (GitHub). Его принцип работы довольно прост: поисковик собирает торренты у всех участников сети и формирует большую распределённую базу для поиска, включая метаданные (например, описания и прочую информацию).В этой статье я хочу рассказать о своей новой библиотеке для построения распределённых приложений (p2p), где знание IP-адресов участников не обязательно, а поиск ведётся через различные протоколы — DHT, mDN…

  • пятница, 5 сентября 2025 г. в 00:00:11
javascript
Хватит писать try/catch вокруг fetch: история о том, как я устал ловить ошибки

"You can't have errors in your code if you wrap the entire codebase in a try/catch block"Этот мем смешной, пока не осознаешь, что в реальных проектах мы именно так и поступаем. Только заворачиваем не весь код сразу, а каждый HTTP-запрос по отдельности.Пишешь fetch и рефлекторно добавляешь try/catch. Где-то словил TypeError, где-то таймаут, где-то сервер вернул 500. В итоге половина кода превращается в кашу проверок, а другая половина - в обработчики ошибок.Я годами так делал, пока н…

  • пятница, 5 сентября 2025 г. в 00:00:10
javascript
Календарь домашних тренировок — 10 улучшений в пет-проекте

5 месяцев назад я публиковал материал про пет-проект календаря домашних тренировок. Сегодня хочу рассказать, что было сделано мной за прошедшее с тех пор время.Самим приложением пользуюсь регулярно. На главной странице для незарегистрированных пользователей в качестве примера как раз показывается моя статистика. Помимо меня есть ещё 53 зарегистрированных пользователя с подтверждённым email.Исходный код приложенияВидео про разработкуFrontend: Typescript, Vite, Vue, Tanstack Query, Vitest, Vue I1…

  • пятница, 5 сентября 2025 г. в 00:00:09
javascript
Обработка исключений на JS – неудобная, но не безнадежная

Привет, Хабр! Меня зовут Владимир, я фронтенд-разработчик в Rusprofile. Давайте поговорим о работе с исключениями.Ситуация: пишешь код на JS, хочешь обработать исключение, пробрасываешь throw, ловишь его с помощью try-catch. Но добавим нюанс: пусть это нужно сделать для setTimeout. Эта функция использует окружения браузера – не JS-функция, асинхронная. // Не сработает try { setTimeout(() => { throw new Error('Ошибка'); }, 0); } catch (e) { // Этот код никогда не выполнится …

  • пятница, 5 сентября 2025 г. в 00:00:08
javascript
Настройка ESLint и Prettier в веб-приложении на Next.js и TypeScript

Когда команда разработчиков начинает активно расти, неизбежно возникают вопросы консистентности кода. Разные стили написания, различные подходы к форматированию и отсутствие единых стандартов могут серьезно замедлить разработку и усложнить поддержку проекта.В данной статье мы рассмотрим пошаговую настройку ESLint и Prettier на примере нашего веб-приложения, построенного на Next.js и TypeScript.ВведениеДля обеспечения качества кода в нашем проекте мы используем комбинацию проверенных инструменто…

  • пятница, 5 сентября 2025 г. в 00:00:06
javascript
It's a match

С ростом сложности фронтенда разработчики начали уделять больше внимания архитектуре. Кто-то предпочитает «чистую», кто-то — её производные, например, FSD. В той или иной степени этот вопрос волнует многих. В данной статье я предлагаю присмотреться повнимательнее к аспекту, который часто остаётся в тени при обсуждении архитектуры, — к маршрутизации.Давайте вспомним, как мы строим роутинг в наших приложениях. В примере ниже — react-router-dom, но в других фреймворках/библиотеках всё примерно так…

  • пятница, 5 сентября 2025 г. в 00:00:05
javascript
Искусство проектирования URL: Роутинг, Query и Hash параметры

Привет, Хабр! Меня зовут Алексей Фомин, я Technical Lead во Frontend в компании Devs Universe. В своей работе я часто сталкиваюсь с тем, что даже опытные разработчики не всегда задумываются о проектировании URL-структуры приложения, а ведь это критически важный элемент пользовательского опыта, SEO и архитектуры. В этой статье я хочу системно разобрать анатомию URL и дать практические рекомендации по его проектированию.Содержание Анатомия URL: из чего он состоит?Иерархия и структура (Правильное …

  • пятница, 5 сентября 2025 г. в 00:00:05