Обновить
512K+

JavaScript *

Прототипно-ориентированный язык программирования

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

Cryanide как альтернативная ветвь развития web-технологий

Уровень сложностиПростой
Время на прочтение29 мин
Охват и читатели12K

Кратко о том, почему я не использую фреймворки, зачем пишу всё с нуля и к чему это привело.

Я написал полноценный SDK для web-приложений как концепт альтернативной ветви развития, если бы web-индустрия пошла по пути игровых движков.

Почему и зачем?

Алгоритм резолва зависимостей в Angular Ivy: Математика Блум-фильтров и битовые маски

Уровень сложностиСложный
Время на прочтение5 мин
Охват и читатели10K

Как Angular Ivy находит зависимости за O(1)? Глубокое погружение в алгоритм резолва: от генерации уникальных ID токенов до битовой магии Блум-фильтров. Разбираем, почему строковые токены замедляют ваше приложение и как работает наследование кумулятивных масок в LView.

Разложить на биты

От пустоты к идее: как я создал свою первую доску вдохновения

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

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

Читать далее

Как старый роутер съел 2.5 ГБ ОЗУ в моей вкладке, или cетевой инфаркт асинхронного кода

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели13K

Интро

Это история о том, как «кривой» роутер научил меня смотреть на память браузера иначе. Есть вкладка с ИИ-чатом, есть WebSocket/Streaming, есть обычный i5. И есть момент, когда все это превращается в кирпич: вкладка раздувается до гигабайтов, процессор залипает, страница оживает только на пару минут после перезагрузки.

Лид

Проблема оказалась не в нейросетях и не в JS. Виновник — старый домашний роутер, который не вывозил IPv6 и фрагментацию. Итог — застрявшие пакеты, нарастающий буфер в браузере и тысячи незавершенных async/await-машин в памяти.

TL;DR

- Вкладка с WebSocket раздувается из-за сетевых затыков.
- Роутер ломает MTU/IPv6, пакеты зависают, bufferedAmount растет.
- Асинхронные цепочки не завершаются и копятся в Heap.
- Фикс: MTU 1400 + отключение IPv6.
- В коде: мониторинг bufferedAmount, таймауты и AbortController.

Симптом

- Вкладка с ИИ-чатом пухнет до 1–2.5 ГБ.
- CPU уходит в 100%, интерфейс замирает.
- Перезагрузка помогает на 5 минут, дальше все повторяется.

Читать далее

Создание приложения на React Native: часть первая

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.6K

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

Приступим

Хроники Valibot: как мы искали безупречные данные в мире JavaScript

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели6.4K

Если вы когда-нибудь писали фронтенд на TypeScript и получали в проде Cannot read property 'x' of undefined, — добро пожаловать в клуб!

TypeScript спасает нас от сотен ошибок… но только пока код не запущен. Как только он скомпилировался, типы исчезают, и в рантайме вы снова остаетесь один на один с невалидными данными.

И вот тут начинается: меняется API, формы шлют что угодно, аналитика ломает отчёты, а тесты молчат.

В Островке мы попробовали библиотеку Valibot — легковесный runtime-валидатор, который умеет проверять данные на границах контекстов и при этом остаётся дружелюбным к TypeScript.

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

Читать далее

Методы массивов. Часть 2

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

Привет, Хабр! Меня зовут Александр Дудукало, я автор курса по JavaScript. Сегодня мы поговорим о ключевом навыке разработчика. С помощью чего сделать код лаконичнее и выразительнее, при этом заменяя громоздкие циклы простыми конструкциями?

Владение методами массивов — это и есть тот самый ответ. Это база, которая позволяет писать код, понятный человеку, а не только машине, и умение переключиться с вопроса «как сделать» на результат «что получить».

Мы разберем три самых полезных метода: map — для преобразования данных, filter — для отбора элементов и sort — для сортировки. Вы поймете, как они работают внутри, и примените знания на практике, создав свои аналоги этих функций. Подробности, как всегда, внутри.

Читать далее

Тихий Promise, который убьёт ваш сервер Node.js

Время на прочтение2 мин
Охват и читатели7.4K

У вас есть продакшен-сервер. Он спокойно работает часами. А потом внезапно падает. Без предупреждения, без graceful-деградации. Просто мёртв.

Виновник? Одна строчка кода, которая выглядит совершенно безобидно...

Читать далее

16 часов и 8600 строк: как Claude Code помог собрать персональный супер-апп

Время на прочтение9 мин
Охват и читатели21K

Я решил собрать для себя приложение, которое объединит несколько AI-модулей в одном месте: фитнес-трекер с AI-тренером, новостной дайджест по AI/ML, дашборды для других проектов. Не SaaS для всех, а инструмент для себя. PWA, чтобы работало как нативное приложение на телефоне.

В итоге: 4 дня по 4 часа, 8600 строк кода, работающий продукт в production. Расскажу как это получилось.

Читать далее

WordPress Cookie предупреждение без плагина

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели5.8K

WordPress Cookie предупреждение без плагина – это то, что вам нужно, чтобы соблюдать закон и не замедлять работу вашего сайта. Лично я пришёл к этому не сразу и использовал плагин, но потом работал над ускорением сайта по PageSpeed Insights и отказался от плагина.

Читать далее

Claude Code в 2026: гайд для тех, кто еще пишет код руками

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

AI агенты в 2026: гайд для тех, кто всё еще пишет код руками.

Как устроены агенты типа Claude Code, ChatGPT Codex и др. Как правильно с ними работать. Как управлять контекстом. Как прогать голосовухами из тг.

Не потерять работу

Frontend Status: свежий дайджест фронтенда и AI

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.9K

Привет!

Это Frontend Status — ваш регулярный дайджест по веб-разработке. Мы собираем самое актуальное и полезное: от свежих фич в браузерах и фреймворках до того, как ИИ меняет сами фронтенд-приложения: от генерации динамического UI до встроенных AI-фич до AI-агентов.

В этом выпуске — 25 материалов: видео с конференций, новости о фреймворках, обновления Chrome, AI-инструменты и многое другое. Навигация по разделам поможет быстро найти интересное.

Читать

Экипировка Бонда: полезные инструменты DevTools

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

Привет, Хабр! С вами Карлен, Lead Fullstack разработчик в ITFB Group.

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

В этой статье я хочу сосредоточиться на практических приёмах, которые ежедневно использую сам. Мы пройдём путь от эффективной работы с консолью до анализа производительности и эмуляции реальных условий. Готовы выйти за рамки console.log? 😊

Читать далее

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

Дочерние процессы в Node.js

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели5.3K

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

Если воркеры запускают отдельный поток внутри одного процесса в котором работает программа, то модуль child_process порождает новый процесс в ОС, что является гораздо более тяжёлой операцией. Архитектура многопоточки в JavaScript, такова что потоки максимально изолированы друг от друга и не имеют общей памяти. Тем не менее есть масса способов обойти это ограничение если очень нужно и в своих статьях я приводил подобные примеры. С процессами всё иначе. Они жёстко изолированы, один от другого и пробить этот барьер способов нет.

Если говорить простым языком то воркер, это как нанять ещё одного гребца на Вашу галеру. С ним можно быстро и легко общаться, ведь вы буквально находитесь на одном суде (процессе) и даже на прямую без посредников обмениваться сообщениями (SharedArrayBuffer). Но вот если он зарулит на скалы, то и потоните вы тоже вместе. Дочерний процесс же это как построить новую галеру с другим капитаном и экипажем. Дорого, долго, обменивать данными можно только через медленные записки (IPC), зато он полностью независим от Вас, а Вы от него.

Как-же запустить эти дочерние процессы?

Синтаксический сахар или технический деготь: классы в JavaScript

Время на прочтение6 мин
Охват и читатели13K

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

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

Читать далее

Релиз Capacitor 8

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.2K

8 декабря 2025 года вышел релиз Capacitor 8. О нововведениях и миграции со старых версий читайте в статье

Читать далее

Округление и форматирование чисел в React: адаптивный подход

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

Всем привет, на связи снова я — Дмитрий, React-разработчик. И сегодня хочу поднять тему, которая на первый взгляд кажется простой, но на практике может доставить немало сюрпризов - округление и форматирование чисел в интерфейсе.

Изначально может показаться, что здесь сложного практически ничего нет: есть toFixed() и toLocaleString(), но практика показывает, что реальные интерфейсы почти никогда в это не укладываются.

Почему? Потому что в разных диапазонах чисел пользователи ждут разного поведения.

Именно с этим сталкиваются разработчики при работе с таблицами, отчётами, финансовыми данными и аналитикой.

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

Ниже опишу требования к форматированию, которые легли в основу функции, и покажу, как они отражаются в коде и в интерфейсе.

Читать далее

Мои любимые паттерны для full-stack и frontend-проектов

Время на прочтение6 мин
Охват и читатели12K

Проверенные в бою паттерны для проектов на React + TypeScript: фабрики ключей запросов, server actions, права доступа через CASL и многое другое.

Читать далее

Генерация колоды карт

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

В очередной раз столкнулся с тем, что разработчик игры (в качестве демо‑версии программных функций) использовал генератор случайных чисел «в лоб», что влечет за собой повторы ходов (игра была «морской бой», и поле клетка, по которой стрелял компьютер определялось как Math.floor(Math.random()*100), что подразумевает бесконечное повторение ходов). Поэтому хочу предложить простой и эффективный способ создать последовательность случайных чисел без повторения. Этот способ основан на перестановках в ряду натуральных чисел с использованием Math.ramdom(). Ну и поскольку много по этому вопросу не скажешь, в продолжение статьи - о сходящихся рядах случайных чисел!

Читать далее

Вайбкодинг: как сгенерировать код расширения для визуализации ссылок в закладках браузера с помощью ИИ

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели12K

Знакомо чувство, когда читаешь документацию, а через десяток страниц уже не помнишь, что именно успел изучить? Или когда возвращаешься к старой статье и не можешь понять – ты уже видел эту ссылку или нет?

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

Но что если заставить браузер самому отмечать ссылки, которые у вас уже сохранены? Чтобы слева от каждой знакомой ссылки возникала метка с названием папки из закладок – как тихий намёк: “Ты это уже сохранял, не потеряй”.

Сегодня мы не просто поговорим об идее – мы сгенерируем через нейросеть готовое расширение для Chrome, которое сделает это за нас. А заодно разберёмся, как такие инструменты создавать, тестировать и даже улучшать – шаг за шагом, от первого промпта до работающего прототипа.

Пристегнитесь, будет интересно!

Читать далее