Веб-страница
22.6K subscribers
1.99K photos
559 videos
2 files
4.21K links
Всё по фронтенду, бэкенду и девопсу в одном месте

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/64ai
Download Telegram
django-scroll-to-top: кнопка «наверх», которая не ломается в проде

Кнопка «наверх» кажется мелочью, пока в проде не всплывают cookie-баннер, чат поддержки, нижняя мобильная навигация и строгий CSP. Автор собрал типовые условия в Django-пакет django-scroll-to-top: один template-тег, Django Admin, настройка цвета и положения через админку без правки шаблонов.

Без jQuery, CDN и обязательной сборки. Если JavaScript выключён, остаётся обычная ссылка в начало страницы. Если в ваших Django-проектах кнопку надоело таскать между шаблонами, я бы заглянул в разбор на Tproger.
😁102💩1
GoFrame — интерфейсы на Go через WASM

Если хотите React-подобные компоненты, но с Go-типами в браузере, посмотрите на GoFrame. В разработке участвовал наш подписчик, который и рассказал о нём. Экспериментальный фреймворк компилирует Go в WebAssembly и предлагает JSX-подобный синтаксис в файлах .gox. Пока это не замена React/Vue, а песочница для типобезопасного фронтенда. Авторы, кстати, просят фидбек. Так что не поскупитесь на комментарии.

Я сохранил ссылку, чтобы посмотреть на совмещение строгой типизации Go с компонентным рендерингом. Если экспериментируете с WASM, заходите. Вы бы написали фронтенд на Go?
3👍3🔥2🤯1
1😁1
Forwarded from IT Юмор
Наконец-то не очередной трекер привычек!
😁252
Почему ваш пет-проект ещё не бизнес, а вы — не предприниматель

У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.

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

Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
👎62👍2
Каждый, кто работал с легаси, знает это чувство: код вроде бы живой, но каждая фича даётся всё тяжелее, а на вопрос «почему так долго?» хочется ответить «потому что там всё сложно». Вот только бизнесу это ничего не объясняет — «плохой код» звучит как внутренняя боль разработчиков, а не как аргумент.

Аргументировать необходимость рефакторинга на самом деле можно. Оказывается, надо просто перевести техдолг в деньги: сколько теряется каждый месяц из-за замедлившейся разработки и багов и за какой срок рефакторинг окупится. В новом материале разбираемся, как посчитать ROI рефакторинга и с какими аргументами идти к менеджменту.
3
Go + PostgreSQL: тормоза чаще в драйвере, чем в базе

Если ваш Go-бэкенд на Postgres лагает, причина может быть не в запросах, а в том, через что вы к базе обращаетесь. Старый lib/pq фактически заморожен: новых фич и оптимизаций не ждать. Для новых проектов берите pgx: он быстрее, активно поддерживается и работает с database/sql через pgx/stdlib.

Но главное — пул соединений. Без лимитов Go легко завалит Postgres коннектами: настройте SetMaxOpenConns(25), SetMaxIdleConns(5) и ConnMaxLifetime. В циклах используйте prepared statements, чтобы не парсить запросы заново, и сканируйте NULL в sql.NullString.

На средних проектах разница в нагрузке на базу и DX заметна сразу.

В разборе на Dev.to найдёте примеры пула, подготовленных запросов и работы с NULL.
🔥5
Forwarded from IT Юмор
😁14
Бэкапы есть почти у всех. А вот быстро поднять систему после падения умеют немногие. Данные могут быть целы, но если восстановление инфраструктуры занимает часы, бизнес всё равно простаивает. Копия хранит информацию, а вот вернуть сервис в работу она сама по себе не может, это отдельная задача.

В новой статье на Tproger смотрим, как выстроить аварийное восстановление (DRaaS — Disaster Recovery as a Service) заранее, а не собирать его на ходу в момент сбоя. Внутри: чем DRaaS отличается от обычного резервного копирования, что стоит за метриками RTO и RPO (за сколько нужно поднять сервис и какой объём данных допустимо потерять), и как пошагово настроить репликацию VMware — от сетей до переключения и обратного возврата.

И главное: у плана восстановления есть срок годности. Если его не прогоняли полгода, в реальной аварии он может повести себя не так, как записано на бумаге. А когда вы в последний раз проверяли свой план восстановления?
2
Как выбрать язык для высоконагруженного бэкенда в 2026-м

Я бы не стал выбирать язык для бэкенда по хайпу. В 2026-м под высокие нагрузки чаще смотрят на три варианта: Go, Rust и Zig.

У каждого своя ниша, и смешивать их в одной системе — уже норма. Go удобен для микросервисов: быстрая компиляция, большая экосистема, проще найти команду.

Rust заходит туда, где критичны задержка и контроль памяти, но команда должна быть готова к обучению. Zig берут для узких, критичных к скорости участков и работы с C-кодом, хотя экосистема ещё сыровата.

В больших системах работает гибрид: основа на Go, критичные участки — на Rust или Zig. Но мигрировать стоит только после профилирования. Без замеров вы потратите время на то, что не было узким местом. Разобрали, как не ошибиться.
3😁3🤣1
TypeScript 7 на Go: в 10 раз быстрее

В новом релизе, который анонсировала Microsoft, компилятор TypeScript, годами живший на JavaScript, теперь написан на Go. Причина — скорость: движок использует общую память и многопоточность и на полных сборках даёт прирост 8–12×.

Перевод с корпоративного: «TypeScript стал ещё дружелюбнее к JS», а по-честному «JS не справлялся со скоростью проверки собственного типизированного слоя». Установить релиз можно через npm install -D typescript; VS Code и другие редакторы подхватят его через расширение с поддержкой LSP (Language Server Protocol).

Теперь вы будете меньше смотреть на спиннер во время tsc и больше на собственные ошибки типов. TypeScript наконец научился бегать, правда, на чужих ногах.
🔥95👎1
80% корпоративных программ геймификации ломаются на одном и том же месте

По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.

В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
1
UI-паттерны, которые скоро можно делать без JS

Если верстаете интерфейсы каждый день, я бы сохранил этот доклад Уны Кравец с CSS Day 2026 в закладки. Она разобрала, как новые CSS-возможности убирают типичный скриптовый код: sticky-заголовок прячется через scroll-state(stuck: top), а hover-тултипы собираются на атрибутах interesttarget и popover=hint — почти без JavaScript.

Ещё два момента: sibling-index() задаёт staggered-задержки прямо в CSS, а border-shape позволяет рисовать необычные формы границ вместо border-radius. Пока часть фич работает не везде — polyfill для invokers не тянет на мобильные, так что в прод пока не нёс бы. Но следить стоит: платформа берёт на себя то, за что мы раньше тащили библиотеки.

Видео доклада на YouTube.
🔥5
Анимированная радиальная маска на тексте через CSS

Если делаете запоминающиеся заголовки или интерактивные обложки, эта техника пригодится. Тут показали, как повторить на CSS эффект из блога Nikhil: слово «Hello!» перекрывается концентрическими кругами, и получается живое «просвечивание» текста.

Суть — mask плюс repeating-radial-gradient. Прозрачные участки градиента скрывают буквы, непрозрачные оставляют. Чтобы понять механику, автор советует заменить радиальный градиент на linear-gradient — сразу видно, как альфа-канал управляет видимостью. Шрифт тоже важен: круглая буква «o» держит кольца ровно, поэтому взяли Fredoka.

Можно сохранить в закладки и поиграть с параметрами в CodePen из статьи.
👍31
Тёмная тема через веб-стандарты

Белая вспышка при загрузке, лишний React-контекст и рассинхрон с системой — Ollie Williams разбирает, как от этого уйти веб-стандартами. prefers-color-scheme берёт системную настройку, а мета-тег name="color-scheme" в head даёт браузеру подсказку раньше CSS.

Можно обойтись без тяжёлой темизации: по клику меняете атрибут content на light, dark или light dark и сохраняете выбор в localStorage. При следующем открытии применяете его до рендера, и вспышки нет.

Главный вывод для меня: стандартный механизм снимает задачу с JS-фреймворка и даёт нативный фолбэк. Если у вас SSR или медленное соединение, такой подход выглядит надёжнее.
10
Chrome 151 даёт декларативный доступ к камере и микрофону через <usermedia>

Если делали видеочаты или редакторы с захватом с камеры, знаете боль: вызовы getUserMedia(), ручные запросы разрешений и пользователи, случайно нажавшие «запретить» и застрявшие в тупике. Новый HTML-элемент <usermedia>, доступный с Chrome 151, убирает эту рутину.

Вместо скриптового запроса права вы получаете декларативный элемент управления, который сам отслеживает намерение пользователя, управляет запросом браузера и передаёт готовый MediaStream в приложение. Это сокращает шаблонный код и даёт браузеру достоверный сигнал о том, что доступ инициирован пользователем, а не страницей. Подробнее в блоге Chrome for Developers.

Если фича приживётся, запросы медиа-прав станут заметно чище.
10
Webflow запустил полноценную платформу для разработчиков — и теперь CMS можно крутить из Claude

Если вы когда-нибудь залипали в UI Webflow, чтобы обновить поля CMS или перезалить настройки сайта, вот повод от этого отвыкать. Платформа даёт API и инфраструктуру для управления контентом, настройками и деплоем из кода, или прямо из агентов вроде Claude, Cursor и Postman через протокол MCP.
Теперь обновить десяток записей, переключить флаг, запустить деплой и многое другое можно прямо с помощью агентов без костылей. Документация и примеры уже на сайте, так что проверить на своём проекте можно быстро.
3
FixCSS: пишите CSS без исторических ошибок спецификации

FixCSS берёт исправленные имена свойств, значения и селекторы — и на лету превращает их в валидный CSS, который браузеры уже понимают. Например, white-space: no-wrap он сконвертирует в white-space: nowrap.

Библиотека опирается на опубликованный CSS Working Group список ошибок в дизайне CSS и убирает необходимость помнить, какие имена свойств появились только из-за обратной совместимости. Демо на CodePen и установка через NPM.

Где пригодится: можно писать CSS так, как он выглядел бы без компромиссов, а FixCSS позаботится о финальном выводе для продакшена.
8
Headless Chrome: WebGL без GPU можно ускорить в 4 раза

Если скриншотите 3D-страницы на сервере без видеокарты, Chrome по умолчанию использует SwiftShader. В разборе Microlink такая страница рендерилась около 24 секунд.

Ускорить в ~4 раза можно флагом --use-angle=gl: Chrome отдаёт WebGL библиотеке ANGLE, а та уже использует программный OpenGL-рендер Mesa llvmpipe. Время падает до ~6 секунд — llvmpipe JIT-компилирует шейдеры в x86-64 и загружает все ядра CPU.

Частая проблема — флаги из старых туториалов. --disable-gpu тихо возвращает SwiftShader, а --in-process-gpu ломает GL-surface у ANGLE. Ещё нужен дисплей и LIBGL_ALWAYS_SOFTWARE=1.

Итог: если в ваших headless-настройках есть --disable-gpu, вы почти наверняка не на быстром пути. Разбор от Microlink.
7
Ghost: Postgres, который можно форкнуть под каждую задачу агента

Ghost — хостинг Postgres, который можно запустить, форкнуть и выбросить за секунды. Он даёт каждому агенту или задаче отдельную базу, чтобы эксперименты не трогали продакшн.

Установка: curl -fsSL https://install.ghost.build | sh. Дальше CLI и интеграция для ИИ-агентов (MCP): можно скопировать продакшн-базу в изолированную копию перед миграцией или генерацией кода. Если агент что-то сломает, удаляете окружение и берёте следующее.

Жёсткие лимиты расходов не дают счёту уйти в бесконечность. Подробнее про Ghost.
3