Как стать автором
Обновить
331.95

Веб-разработка *

Делаем веб лучше

Сначала показывать
Порог рейтинга
Уровень сложности

100K юзеров за 3 дня — как готовились к релизу

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров4.7K

Привет, Хабр!

В этой статье — история запуска Telegram Mini App, куда за трое суток пришло 100.000 реальных пользователей.

Покажу, как мы масштабировали Node.js приложения на многоядерных серверах, увеличивали RPS в 10 раз, боролись с N+1 проблемой в MongoDB и снижали нагрузку на CPU. А ещё расскажу как мы быстро настроили мониторинг через Grafana, подключили Cloudflare и интегрировали Sentry. Поделюсь практическими инсайтами о том, на что стоит обращать внимание в первую очередь, и как эти инструменты помогли нам оперативно находить узкие места и устранять сбои в реальном времени. Всё, о чём будет в этой статье, основано на том, что действительно сработало. Кроме того, расскажу, какие моменты мы упустили до запуска.

Это разбор с цифрами, графиками и практическими выводами. Он может сэкономить вам время, нервы и деньги, если вы готовитесь к запуску Telegram Mini App или просто работаете с Node.js-приложениями, которые могут оказаться под серьёзной нагрузкой.

Это первая часть истории — про то, как мы готовились к запуску, что предусматривали и на что делали ставку.

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

Читать далее

Почему я реализовал своё портфолио внутри Telegram Mini Apps

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.1K

В этой статье расскажу о том, почему считаю Telegram Mini Apps мощным инструментом для размещения своего портфолио и какие есть нюансы у данного подхода

Читать далее

LLM-first: парная разработка без вайбкодинга

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.9K

Этот пост — мой личный разбор по итогам двух недель разработки простой файловой CMS для одного из моих пет-проектов. Мне нужен был SSR-сайт с мультиязычным контентом — около десятка страниц на двух языках. Всё под Git-контролем, переводы я делал вручную через DeepSeek API и выкладывал на продакшн через GitHub Actions.

В какой-то момент стало понятно: отслеживать и переводить все мелкие изменения вручную — неудобно и утомительно. Тогда я решил автоматизировать этот процесс и взял в напарники ИИ. Не для вайбкодинга и генерации «по настроению», а для настоящего парного программирования.

Результат — рабочий open-source проект, который можно развернуть, изучить и использовать. Но главное — это опыт. Это была не просто реализация CMS, а переосмысление роли ИИ в разработке. Под катом — мои подходы, наблюдения и выводы.

Читать далее

T-SQL в .NET Core EF Core: Гибридный подход к производительности и гибкости (Переосмысление с учетом обсуждения)

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.4K

Секретное оружие в .NET Core: Почему вы игнорируете мощь T-SQL?

Ваши LINQ-запросы становятся громоздкими? Производительность упирается в потолок? Возможно, вы упускаете нечто важное.

Эта статья — приглашение взглянуть на привычные инструменты под новым углом. Мы исследуем гибридный подход, который позволяет использовать весь потенциал Microsoft SQL Server, выходя за рамки стандартного взаимодействия через EF Core. Узнайте, как T-SQL может упростить сложные задачи, повысить производительность и сделать вашу архитектуру более гибкой.

Это не просто технический трюк, а переосмысление роли СУБД в современном приложении. Готовы узнать, как использовать "скрытые" возможности MSSQL и почему это может быть именно то, что нужно вашему проекту?

Читать об этом

Эволюция Angular с колокольни UI-Kit-разработчика

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров3.4K

На этой неделе команда Angular отметила значимый юбилей в истории развития своего фреймворка — 20-ю мажорную версию! Лучше повода не найти, чтобы удариться в ностальгические воспоминания про путь развития Angular за последние 5 лет — за десять последних мажорных версий.

Предлагаю нестандартный подход к изучению темы. Возьмем непопулярную точку зрения: мой многолетний опыт разработки огромной коллекции библиотек с компонентами под Angular — продукт под названием Taiga UI. В статье мы опустим многие заезженные фичи каждой мажорной версии Angular и сфокусируемся на кажущихся мелочах, которые стали значимыми шагами в истории развития нашего семейства библиотек. Я постараюсь на время статьи дать примерить шкуру разработчика Angular UI Kit!

Читать далее

Рациональный подход к фрилансу. Критикуешь? Предлагай

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров974

В статье расскажу про свое видение "правильного" отношения к фрилансу с точки зрения разработчика, поделюсь своим опытом после 6 лет работы в этой сфере и расскажу, как так вышло, что говорю о себе как ex-фрилансере. Постараюсь донести объективную критику и уберечь ребят на старте карьеры от ощутимых ударов "граблями реальности".

Статья будет полезна скорее начинающим разработчикам и тем, кто хочет лишь попробовать себя в направлении фриланса. Я предлагаю обратить внимание на недостатки фриланса, актуальные на текущий момент, буду часто ссылаться на свой опыт и набитые шишки и ставлю перед публикацией задачу раскрыть некоторые нюансы фриланса как вида неполной занятости для разработчика, трезво описать плюсы/минусы и дать ответ на вопрос: "Фриланс – это не для всех?"

Читать далее

Слил $800 на CEX, поднял $2000 на DEX — мой опыт копитрейдинга в Solana

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров6.6K

Как я попробовал копитрейдинг на Solana: слил $800 на CEX, но потом отбился и сделал +$2000 на DEX.

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

Пробовал на CEX — слил почти весь депозит😅 Перешёл на DEX, настроил бота, начал копировать ончейн-сделки — и получил совсем другой результат.

👉 В статье: фейлы, кейсы, настройки, как искал кошельки, и почему некоторые зеркала могут торговать друг против друга.

Реальный опыт, цифры, немного автоматизации и никакой теории.

(И да, там еще несколько скринов — не пугайтесь длины)

Читать далее

Контейнер с нуля

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров2.9K

В настоящее время резко возрос спрос на контейнеры, используемые в продакшене для эксплуатации больших энтерпрайз-приложений. Как правило, они развёртываются в Docker. Docker де-факто стал основной технологией для работы с контейнеризованными приложениями. Но на основе чего он построен? Как он контейнеризует приложения? В данной статье постараемся ответить на эти вопросы.

Читать далее

«Когда ты senior, а ощущение — будто тебя билдят на проде без тестов»: как разработчики выгорают и что с этим делать

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.1K

Почему митинги, Jira и рабочие чаты делают хуже, чем дедлайны, и как тимлидам научиться управлять энергией команды (и своей).

Ты вроде уже не джун. И не просто мидл, который «хочет роста». Ты тот самый человек, у которого всё под контролем: ты ведёшь команду, пишешь сложный код, иногда — даже с удовольствием. У тебя есть архитектура, ответственность и график в Google Calendar, в котором нет дыр. И всё же...

Иногда ты ловишь себя на мысли: «я в команде, но один». День проходит как в дымке: митинг, потом ещё митинг, потом задача «срочно», потом «а можешь посмотреть PR» — а потом вечер, и ты даже не можешь вспомнить, за что зацепиться, что вообще было твоим в этом дне. Кажется, ты стал просто маршрутизатором задач и эмоций.

Парадокс в том, что выгорают чаще всего не те, кто не справляется. А те, кто справляется всегда. Кто привычно берёт на себя, затыкает дыры, поддерживает джунов, шутит в чатах, чтобы всем было полегче, и остаётся онлайн ещё на час «просто чтобы доделать». Мы выгораем не от нагрузки. Мы выгораем от отсутствия смысла и невозможности выключиться.

Ты начинаешь понимать, что просто отпуск — не лечит. Он как анальгин на трещину: на пару дней отпустит, но потом снова вернётся. Список дел не сокращается, командная динамика не налаживается сама, конфликты не исчезают от того, что ты «просто делаешь свою работу». И вдруг ты ловишь себя на циничной мысли: «А может, это просто теперь нормально?»

Нет. Это не нормально. И точно не неизбежно.

В какой-то момент мы с ребятами, такими же, как ты, решили: а что, если всё отключить? Slack, ноутбуки, KPI, даже «как дела на проекте». И поехать в лес. Без слайдов, без ролей, без кофе-брейков на 15 минут. Просто пожить 2,5 дня среди сосен, костров и людей, которым не нужно объяснять, что такое архитектурный долг, но с которыми можно говорить не про это.

Читать далее

Как работает Node.js

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров10K



После прочтения этой статьи вы хорошо поймете следующее:


  • как работает цикл событий (event loop) в Node.js, включая все его фазы
  • как Node.js выполняет JavaScript в одном потоке (single thread)
  • как Node.js использует библиотеку libuv и внутренние API для обработки асинхронных операций
  • почему знание работы цикла событий так важно для написания эффективного серверного кода

Понять, как JS работает "под капотом" в браузере (см. эту короткую 15-минутную статью), проще, чем понять устройство Node.js. В браузере нет сложных фаз и многослойных механизмов, как в Node.js.


Но почему в Node.js все устроено сложнее? Зачем столько фаз, которые так непросто понять?

Читать дальше →

Scalar вместо Swagger UI. Надо ли оно нам?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров6K

С выходом .NET 9 пакет Swashbuckle.AspNetCore выпилили из шаблона Web API. Это означает, что при создании нового приложения ASP.NET Core Web API у нас больше нет привычного зеленого пользовательского интерфейса Swagger для тестирования endpoint-ов. В статье — краткий разбор, почему это произошло, и обзор альтернативы Scalar.

Хочу разобраться

Pocupochki: когда лень писать список покупок, но есть 2 часа и доступ к Gemini

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.3K

Рассказываю, как с помощью Google Stitch за 30 секунд получил готовый дизайн приложения, а потом с Gemini за пару часов превратил его в работающий сервис с голосовым вводом.

Посмотреть

Как я открыл WebSocket для Сомников из Чёрного Зеркала, а они начали водить хороводы

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров10K

С приходом популярности генеративных нейросетей, другие виды искусственного интеллекта тоже получили своё место под солнцем. Однако, ещё до этого уже существовали проекты, где искусственный интеллект играет в различные игры, получает очки за достижение целей и обучается на основе своих результатов. При этом, у каждого игрового ИИ есть свой массив доступных ему действий, который может быть постоянным или изменяемым согласно правилам. Я решил собрать небольшой проект, описать механизм взаимодействия ИИ с игровым пространством, а уже потом наполнить игру правилами и смыслом.

Читать далее

Ближайшие события

Метаклассы Python. Подробное руководство

Уровень сложностиСложный
Время на прочтение24 мин
Количество просмотров5.5K

Привет Хабр! В данной статье я расскажу о там, как работают метаклассы в python, что конкретно они делают, где их можно использовать и почему чаще всего лучше этого не делать.

Данная статья скорее нацелена на начинающих авторов библиотек или любопытных читателей, которые просто хотят узнать что-то новое о Python.

Читать далее

Автоматический HTTPS для ленивых: ACME + Angie один раз и навсегда

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров7.2K

Приветствую, дорогой читатель!

С момента появления в нашем любимом веб-сервере Angie замечательной функции ACME-челленджа через DNS прошло уже достаточно времени, чтобы оценить все преимущества этого решения. Эта поистине революционная фича подарила нам долгожданную возможность получать wildcard‑сертификаты буквально в несколько кликов.

Однако, как это часто бывает с новыми технологиями, до сих пор у многих пользователей, особенно только начинающих свое знакомство с Angie, возникают вполне закономерные вопросы вроде: «Как правильно это настроить?» или «Как это вообще работает под капотом?». Именно для таких случаев, дорогие друзья, и была задумана эта подробная статья — максимально простыми и понятными словами описать весь процесс настройки от начала и до конца.

Читать далее

Не пытайтесь угадать мой язык

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров15K

Если вы всё ещё используете IP-геолокацию для выбора отображаемого языка, то хватит заниматься ерундой. Это ошибочное допущение, замаскированное под фичу.

IP сообщает, откуда пришёл запрос, и на этом всё. Он не сообщает, какой язык нужен пользователю, на каком языке он говорит и какой язык понимает. Подобная система постоянно ломается — VPN, путешествия, эмиграция, страны с несколькими официальными языками. Это не умное, а раздражающее решение.

Читать далее

Как не слить бюджет в CPA-сетях? Интеграция с ADMITAD через Postback — формируем отчет для сверки

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров451

Всем привет! Я Роман, тимлид e-commerce агентства KISLOROD. 

Любой бизнес в сети зависит от привлечения трафика и один из важнейших каналов — это CPA-сети. Однако при работе с любыми каналами важно правильно оценивать качество посетителей, поскольку иначе весь бюджет просто будет слит впустую.

На одном из проектов мы внедрили интеграцию с Admitad, с помощью которой можно получить отчет для сверки. Рассказываем о том, как это работает и реализовано.

Читать далее

Как использовать любой CSS-фреймворк в вашем проекте. Часть 5

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.6K

Компоненты Bootstrap удобны, но не всегда соответствуют нужному дизайну. Чтобы избежать несогласованности и ручного редактирования в каждом проекте, важно выстроить чёткую систему кастомизации. В этой статье рассматривается пошаговая настройка компонента Alert — с использованием SCSS-переменных и структуры дизайн-системы.

Читать далее

Эволюция программирования: как парадигмы украли нашу свободу

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров9.1K

Представьте: вы — инженер-программист из 60-х. Ваш код — это дикие прерии, где goto прыгает через функции как ковбой через барную стойку, а память — ваше личное ранчо. Вас внезапно переносят в 2023 год. Вас окружают фразы вроде «SOLID», «иммутабельность», «реактивные потоки». Вы пытаетесь написать пару строк на Python, но слышите: «Стоп. Мутировать переменные? В 2023-то? Это же грех!».

Что случилось с нашей свободой?

За последние 70 лет программирование из искусства постепенно превращалось в ремесло со своими жёсткими требованиями и правилами. Мы больше не взламываем реальность — мы строим мосты по ГОСТу.

Читать далее

n8n – всё, что нужно знать о сервисе

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров24K

Привет! Если вы ищете способ автоматизировать рутину, интегрировать любимые сервисы и работать с ИИ без сложной настройки — вам в особенности подойдёт n8n.

n8n.io — платформа для автоматизации рабочих процессов (workflow automation) с открытым исходным кодом. Платформа. позволяет не зная программирования и, не написав ни одной строчки кода, создавать различные инструменты для вашей работы.

В неё встроено более 400 готовых узлов (nodes) для популярных сервисов и множество AI агентов, поддержка RAG.

Ранее мы уже разбирали эту платформу в нашей предыдущей статье и, прочитав её, вы уже сможете самостоятельно развернуть ТГ чат-бота с ChatGPT.

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

Читать далее