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

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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/64ai
Download Telegram
Как выбрать системного интегратора в 2026 году?

Выбор подрядчика — решение на несколько лет. Цена ошибки — суды или переписывание проекта с нуля. Не ошибиться всё-таки можно, если воспользоваться небольшим чек-листом для выбора подрядчика.

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

Всего критериев 12, обо всех подробно читайте в новом материале.
❤2👍1
Deno соберёт веб-приложение в десктоп

Если вам надоели тяжеловесные Electron-обёртки, Deno предлагает альтернативу. В мажорном релизе Deno добавит команды для сборки десктопа из TypeScript, Next.js, Astro, Fresh, TanStack Start или Vite SSR. Я бы сохранил: переносим веб-приложение в окно почти без лишних движений.

Главный поворот — нативный WebView вместо встроенного Chromium (CEF). Приложение на WebView в macOS весит около 68,5 МБ, а на CEF выходит 308,9 МБ и стартует медленнее. Меню, диалоги и уведомления уже есть, а вот диалог выбора файла и API буфера обмена пока нет, мобильную версию обещают позже.

В прод я бы это пока не нёс: нестабильно, и WebView на старых машинах может вести себя непредсказуемо. Но за развитием стоит следить.
🔥5❤2
Conduit: API-шлюз с TypeScript-плагинами вместо redeploy

Если gateway на Go разрастается лапшой из префиксов, правка auth ведёт к новому деплою. Автор Conduit вынес эту боль в отдельный слой: Go занимается routing, proxying, CORS и SSRF-защитой, а логика авторизации, логирования и правил маршрутизации живёт в sandboxed Deno runtime как TypeScript-плагины.

Go и Deno общаются через Unix-сокет со strict snapshot-and-patch протоколом. Меняете файл плагина, сохраняете, и gateway не пересобирается. На хосте уживаются разные схемы доверия: HMAC-сессии для user/chat и JWT для admin с X-Gateway-Admin-заголовками.

Я бы сохранил: такое разделение редко даётся с первой итерации, а здесь оно разобрано на живом коде. Подробности и спорные решения пригодятся, если проектируете свою входную точку.
🤔3
Вашу фичу могут поломать костыли браузеров под крупные сайты

Если вы тестируете новую фичу только в Chrome и считаете, что этого достаточно — стоит пересмотреть. Safari и Firefox хранят в движках списки исключений для гигантов вроде TikTok, Netflix, Instagram, Facebook, X и Reddit: рендер, события и медиа там работают не так, как на обычных сайтах.

Firefox показывает их в about:compat — инъекции CSS/JS, подмена user-agent и костыли под конкретный домен. У Safari это Quirks.cpp в WebKit: например, для Facebook, X и Reddit видео не ставится на паузу, когда уходит из вьюпорта, но остаётся в PiP.

К чему это вам: если ваша фича использует embedы, видео, соцлогины или интеграции с такими доменами, поведение в Safari/Firefox может отличаться от Chrome. Разбор от Staff Engineer из Canva.
🤔3
Gleam — это функциональный язык, который компилируется в Erlang и JavaScript.
🗿5
Тестируйте Vue-компоненты в браузере, без Node и сборки

Мне давно не хватало лёгкого способа гонять фронтенд-тесты без тяжёлого Node-окружения. Playwright хорош, но новый процесс браузера на каждый тест и Node-оркестрация быстро утомляют. Автор jvns.ca пошёл другим путём: вместо отдельного браузера запускает интеграционные тесты Vue-компонентов прямо в открытой вкладке.

Взял QUnit, встроил тесты в страницу и получил кнопку для перезапуска одного теста. Это удобно, когда в тестах много сетевых запросов и отлаживать хочется по одному. Для проектов без сборки так можно проверить компоненты в реальном DOM, не поднимая отдельный браузер.

Если у вас небольшой Vue-проект без Node-сборки, я бы попробовал такую схему в QA перед релизом. Подробности в заметке.
❤2👍1👎1
😁50
Аутсорс, инхаус или выделенная команда — что реально дешевле?

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

Разбираемся, как считать настоящий TCO (полную стоимость владения) по трём моделям:
🔘Инхаус — почему свой разработчик дороже оффера;
🔘Аутсорс — за что вы платите маржу подрядчику;
🔘Выделенные команды — почему «возьмём человека и ускоримся» работает не всегда.

Внутри — формулы для каждой модели и чек-лист из 3 пунктов, чтобы выбрать формат под свой проект.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
VPS vs VDS vs виртуальный хостинг: что выбрать в 2026

Часто сервер выбирают по цене, а потом упираются в нехватку ресурсов, гибкости или поддержки. И почти никто не знает главного: VPS и VDS — это в большинстве случаев одно и то же, разница только в названии. Реально выбор идёт между хостингом (провайдер всё настроил, но конфигурация ограничена) и изолированным сервером с root-доступом.

В подборке 6 провайдеров под разные сценарии: от старта на виртуальном хостинге за ~123 рубля в месяц до VPS с зарубежными локациями. Внутри реальные цены, лимиты, условия по бэкапам, тестовым периодам и подсказки как сделать правильный выбор для своего случая.
❤1
Украл идею, чертяка
🤣59
django-scroll-to-top: кнопка «наверх», которая не ломается в проде

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

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

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

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

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

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

Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
👎6❤2👍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 Юмор
😁15
Бэкапы есть почти у всех. А вот быстро поднять систему после падения умеют немногие. Данные могут быть целы, но если восстановление инфраструктуры занимает часы, бизнес всё равно простаивает. Копия хранит информацию, а вот вернуть сервис в работу она сама по себе не может, это отдельная задача.

В новой статье на 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