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-заголовками.
Я бы сохранил: такое разделение редко даётся с первой итерации, а здесь оно разобрано на живом коде. Подробности и спорные решения пригодятся, если проектируете свою входную точку.
Если 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 показывает их в
К чему это вам: если ваша фича использует embedы, видео, соцлогины или интеграции с такими доменами, поведение в Safari/Firefox может отличаться от Chrome. Разбор от Staff Engineer из Canva.
Если вы тестируете новую фичу только в 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
Тестируйте Vue-компоненты в браузере, без Node и сборки
Мне давно не хватало лёгкого способа гонять фронтенд-тесты без тяжёлого Node-окружения. Playwright хорош, но новый процесс браузера на каждый тест и Node-оркестрация быстро утомляют. Автор jvns.ca пошёл другим путём: вместо отдельного браузера запускает интеграционные тесты Vue-компонентов прямо в открытой вкладке.
Взял QUnit, встроил тесты в страницу и получил кнопку для перезапуска одного теста. Это удобно, когда в тестах много сетевых запросов и отлаживать хочется по одному. Для проектов без сборки так можно проверить компоненты в реальном DOM, не поднимая отдельный браузер.
Если у вас небольшой Vue-проект без Node-сборки, я бы попробовал такую схему в QA перед релизом. Подробности в заметке.
Мне давно не хватало лёгкого способа гонять фронтенд-тесты без тяжёлого Node-окружения. Playwright хорош, но новый процесс браузера на каждый тест и Node-оркестрация быстро утомляют. Автор jvns.ca пошёл другим путём: вместо отдельного браузера запускает интеграционные тесты Vue-компонентов прямо в открытой вкладке.
Взял QUnit, встроил тесты в страницу и получил кнопку для перезапуска одного теста. Это удобно, когда в тестах много сетевых запросов и отлаживать хочется по одному. Для проектов без сборки так можно проверить компоненты в реальном DOM, не поднимая отдельный браузер.
Если у вас небольшой Vue-проект без Node-сборки, я бы попробовал такую схему в QA перед релизом. Подробности в заметке.
Julia Evans
Testing Vue components in the browser
Hello! One of my long term projects on here is figuring out how to write frontend Javascript without using Node or any other server JS runtime.
❤2👍1👎1
Аутсорс, инхаус или выделенная команда — что реально дешевле?
Спойлер: ставка разработчика вам этого не скажет. Сравнивать модели по ставке довольно бессмысленное занятие, потому что за низкими ставками прячутся найм, налоги, онбординг, простои, переделки и часы техлида. В смете их не видно, а в бюджете — ещё как.
Разбираемся, как считать настоящий TCO (полную стоимость владения) по трём моделям:
🔘 Инхаус — почему свой разработчик дороже оффера;
🔘 Аутсорс — за что вы платите маржу подрядчику;
🔘 Выделенные команды — почему «возьмём человека и ускоримся» работает не всегда.
Внутри — формулы для каждой модели и чек-лист из 3 пунктов, чтобы выбрать формат под свой проект.
Спойлер: ставка разработчика вам этого не скажет. Сравнивать модели по ставке довольно бессмысленное занятие, потому что за низкими ставками прячутся найм, налоги, онбординг, простои, переделки и часы техлида. В смете их не видно, а в бюджете — ещё как.
Разбираемся, как считать настоящий TCO (полную стоимость владения) по трём моделям:
Внутри — формулы для каждой модели и чек-лист из 3 пунктов, чтобы выбрать формат под свой проект.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
VPS vs VDS vs виртуальный хостинг: что выбрать в 2026
Часто сервер выбирают по цене, а потом упираются в нехватку ресурсов, гибкости или поддержки. И почти никто не знает главного: VPS и VDS — это в большинстве случаев одно и то же, разница только в названии. Реально выбор идёт между хостингом (провайдер всё настроил, но конфигурация ограничена) и изолированным сервером с root-доступом.
В подборке 6 провайдеров под разные сценарии: от старта на виртуальном хостинге за ~123 рубля в месяц до VPS с зарубежными локациями. Внутри реальные цены, лимиты, условия по бэкапам, тестовым периодам и подсказки как сделать правильный выбор для своего случая.
Часто сервер выбирают по цене, а потом упираются в нехватку ресурсов, гибкости или поддержки. И почти никто не знает главного: VPS и VDS — это в большинстве случаев одно и то же, разница только в названии. Реально выбор идёт между хостингом (провайдер всё настроил, но конфигурация ограничена) и изолированным сервером с root-доступом.
В подборке 6 провайдеров под разные сценарии: от старта на виртуальном хостинге за ~123 рубля в месяц до VPS с зарубежными локациями. Внутри реальные цены, лимиты, условия по бэкапам, тестовым периодам и подсказки как сделать правильный выбор для своего случая.
❤1
django-scroll-to-top: кнопка «наверх», которая не ломается в проде
Кнопка «наверх» кажется мелочью, пока в проде не всплывают cookie-баннер, чат поддержки, нижняя мобильная навигация и строгий CSP. Автор собрал типовые условия в Django-пакет
Без jQuery, CDN и обязательной сборки. Если JavaScript выключён, остаётся обычная ссылка в начало страницы. Если в ваших Django-проектах кнопку надоело таскать между шаблонами, я бы заглянул в разбор на Tproger.
Кнопка «наверх» кажется мелочью, пока в проде не всплывают cookie-баннер, чат поддержки, нижняя мобильная навигация и строгий CSP. Автор собрал типовые условия в Django-пакет
django-scroll-to-top: один template-тег, Django Admin, настройка цвета и положения через админку без правки шаблонов.Без jQuery, CDN и обязательной сборки. Если JavaScript выключён, остаётся обычная ссылка в начало страницы. Если в ваших Django-проектах кнопку надоело таскать между шаблонами, я бы заглянул в разбор на Tproger.
😁10❤2💩1
GoFrame — интерфейсы на Go через WASM
Если хотите React-подобные компоненты, но с Go-типами в браузере, посмотрите на GoFrame. В разработке участвовал наш подписчик, который и рассказал о нём. Экспериментальный фреймворк компилирует Go в WebAssembly и предлагает JSX-подобный синтаксис в файлах .gox. Пока это не замена React/Vue, а песочница для типобезопасного фронтенда. Авторы, кстати, просят фидбек. Так что не поскупитесь на комментарии.
Я сохранил ссылку, чтобы посмотреть на совмещение строгой типизации Go с компонентным рендерингом. Если экспериментируете с WASM, заходите. Вы бы написали фронтенд на Go?
Если хотите React-подобные компоненты, но с Go-типами в браузере, посмотрите на GoFrame. В разработке участвовал наш подписчик, который и рассказал о нём. Экспериментальный фреймворк компилирует Go в WebAssembly и предлагает JSX-подобный синтаксис в файлах .gox. Пока это не замена React/Vue, а песочница для типобезопасного фронтенда. Авторы, кстати, просят фидбек. Так что не поскупитесь на комментарии.
Я сохранил ссылку, чтобы посмотреть на совмещение строгой типизации Go с компонентным рендерингом. Если экспериментируете с WASM, заходите. Вы бы написали фронтенд на Go?
GitHub
GitHub - graybuton/goframe: Experimental Go-first browser/WASM framework with GOX markup and the goxc toolchain.
Experimental Go-first browser/WASM framework with GOX markup and the goxc toolchain. - graybuton/goframe
❤3👍3🔥2🤯1
Почему ваш пет-проект ещё не бизнес, а вы — не предприниматель
У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.
Простой тест: уйдите в отпуск на две недели, и если без вас всё встало — поздравляем, у вас пока не бизнес, а вы сами и есть главный «производственный ресурс».
Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
У каждого второго разработчика в столе лежит проект, который «вот-вот станет бизнесом». Осталось дописать пару фич — и дальше всё поедет само. Спойлер: не поедет. Разбираемся, где заканчивается код и начинается бизнес: почему всё стартует не с технологии, а с чужой проблемы, чем фаундер отличается от тимлида и почему рабочий сервис с первыми пользователями и MRR — это не бизнес, а промежуточный результат.
Простой тест: уйдите в отпуск на две недели, и если без вас всё встало — поздравляем, у вас пока не бизнес, а вы сами и есть главный «производственный ресурс».
Внутри ещё и про AR-очки на трамвайном заводе, которые зарубили сами рабочие: история о том, как ценность решения определяете не вы.
👎6❤2👍2
Каждый, кто работал с легаси, знает это чувство: код вроде бы живой, но каждая фича даётся всё тяжелее, а на вопрос «почему так долго?» хочется ответить «потому что там всё сложно». Вот только бизнесу это ничего не объясняет — «плохой код» звучит как внутренняя боль разработчиков, а не как аргумент.
Аргументировать необходимость рефакторинга на самом деле можно. Оказывается, надо просто перевести техдолг в деньги: сколько теряется каждый месяц из-за замедлившейся разработки и багов и за какой срок рефакторинг окупится. В новом материале разбираемся, как посчитать ROI рефакторинга и с какими аргументами идти к менеджменту.
Аргументировать необходимость рефакторинга на самом деле можно. Оказывается, надо просто перевести техдолг в деньги: сколько теряется каждый месяц из-за замедлившейся разработки и багов и за какой срок рефакторинг окупится. В новом материале разбираемся, как посчитать ROI рефакторинга и с какими аргументами идти к менеджменту.
❤3
Go + PostgreSQL: тормоза чаще в драйвере, чем в базе
Если ваш Go-бэкенд на Postgres лагает, причина может быть не в запросах, а в том, через что вы к базе обращаетесь. Старый
Но главное — пул соединений. Без лимитов Go легко завалит Postgres коннектами: настройте
На средних проектах разница в нагрузке на базу и DX заметна сразу.
В разборе на Dev.to найдёте примеры пула, подготовленных запросов и работы с NULL.
Если ваш 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
Бэкапы есть почти у всех. А вот быстро поднять систему после падения умеют немногие. Данные могут быть целы, но если восстановление инфраструктуры занимает часы, бизнес всё равно простаивает. Копия хранит информацию, а вот вернуть сервис в работу она сама по себе не может, это отдельная задача.
В новой статье на Tproger смотрим, как выстроить аварийное восстановление (DRaaS — Disaster Recovery as a Service) заранее, а не собирать его на ходу в момент сбоя. Внутри: чем DRaaS отличается от обычного резервного копирования, что стоит за метриками RTO и RPO (за сколько нужно поднять сервис и какой объём данных допустимо потерять), и как пошагово настроить репликацию VMware — от сетей до переключения и обратного возврата.
И главное: у плана восстановления есть срок годности. Если его не прогоняли полгода, в реальной аварии он может повести себя не так, как записано на бумаге. А когда вы в последний раз проверяли свой план восстановления?
В новой статье на Tproger смотрим, как выстроить аварийное восстановление (DRaaS — Disaster Recovery as a Service) заранее, а не собирать его на ходу в момент сбоя. Внутри: чем DRaaS отличается от обычного резервного копирования, что стоит за метриками RTO и RPO (за сколько нужно поднять сервис и какой объём данных допустимо потерять), и как пошагово настроить репликацию VMware — от сетей до переключения и обратного возврата.
И главное: у плана восстановления есть срок годности. Если его не прогоняли полгода, в реальной аварии он может повести себя не так, как записано на бумаге. А когда вы в последний раз проверяли свой план восстановления?
Tproger
Аварийное восстановление до аварии: как настроить DRaaS, пока ничего не упало
Чем DRaaS отличается от бэкапа, как работают RTO и RPO, пошаговая настройка репликации VMware и почему план тестируют до сбоя, а не во время него.
❤2
Как выбрать язык для высоконагруженного бэкенда в 2026-м
Я бы не стал выбирать язык для бэкенда по хайпу. В 2026-м под высокие нагрузки чаще смотрят на три варианта: Go, Rust и Zig.
У каждого своя ниша, и смешивать их в одной системе — уже норма. Go удобен для микросервисов: быстрая компиляция, большая экосистема, проще найти команду.
Rust заходит туда, где критичны задержка и контроль памяти, но команда должна быть готова к обучению. Zig берут для узких, критичных к скорости участков и работы с C-кодом, хотя экосистема ещё сыровата.
В больших системах работает гибрид: основа на Go, критичные участки — на Rust или Zig. Но мигрировать стоит только после профилирования. Без замеров вы потратите время на то, что не было узким местом. Разобрали, как не ошибиться.
Я бы не стал выбирать язык для бэкенда по хайпу. В 2026-м под высокие нагрузки чаще смотрят на три варианта: Go, Rust и Zig.
У каждого своя ниша, и смешивать их в одной системе — уже норма. Go удобен для микросервисов: быстрая компиляция, большая экосистема, проще найти команду.
Rust заходит туда, где критичны задержка и контроль памяти, но команда должна быть готова к обучению. Zig берут для узких, критичных к скорости участков и работы с C-кодом, хотя экосистема ещё сыровата.
В больших системах работает гибрид: основа на Go, критичные участки — на Rust или Zig. Но мигрировать стоит только после профилирования. Без замеров вы потратите время на то, что не было узким местом. Разобрали, как не ошибиться.
❤3😁3🤣1
Forwarded from Представляешь,
TypeScript 7 на Go: в 10 раз быстрее
В новом релизе, который анонсировала Microsoft, компилятор TypeScript, годами живший на JavaScript, теперь написан на Go. Причина — скорость: движок использует общую память и многопоточность и на полных сборках даёт прирост 8–12×.
Перевод с корпоративного: «TypeScript стал ещё дружелюбнее к JS», а по-честному «JS не справлялся со скоростью проверки собственного типизированного слоя». Установить релиз можно через
Теперь вы будете меньше смотреть на спиннер во время
В новом релизе, который анонсировала Microsoft, компилятор TypeScript, годами живший на JavaScript, теперь написан на Go. Причина — скорость: движок использует общую память и многопоточность и на полных сборках даёт прирост 8–12×.
Перевод с корпоративного: «TypeScript стал ещё дружелюбнее к JS», а по-честному «JS не справлялся со скоростью проверки собственного типизированного слоя». Установить релиз можно через
npm install -D typescript; VS Code и другие редакторы подхватят его через расширение с поддержкой LSP (Language Server Protocol).Теперь вы будете меньше смотреть на спиннер во время
tsc и больше на собственные ошибки типов. TypeScript наконец научился бегать, правда, на чужих ногах.🔥9❤5👎1
Forwarded from GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80% корпоративных программ геймификации не достигают целей. Спрос огромный, качество — низкое, а причина проста: делать это берутся не те люди.
В статье разбирают, как корпоративные клоны механик упускают баланс и контекст, и что делать, чтобы прогрессия не превращалась в цифровой пендель. Для геймдевелоперов это отличная ниша, где есть и деньги, и возможность применить свои скиллы на практике.
❤1
Forwarded from Точка входа в программирование
GameDev: разработка игр
80% корпоративных программ геймификации ломаются на одном и том же месте По данным AmplifAI, игровые кампании дают в среднем вовлечённость на 100–150% выше, чем классические подходы, а геймифицированный контент шерится в 12 раз чаще. При этом примерно 80%…
Открыли игру или тест на сайте. Что решает, доиграете вы или закроете вкладку через 20 секунд? 👇
Anonymous Poll
22%
Коротко: вся игра на 2–3 минуты
4%
Результатом можно красиво поделиться — как квадратики Wordle
23%
Есть приз за прохождение
14%
Виден рейтинг — хочу обогнать других
41%
Тема цепляет лично меня — про профессию, про своё
14%
С каждым днём новый уровень — есть причина вернуться
43%
Просто красиво и залипательно сделано
35%
Ничего — закрываю почти всегда
❤1