Обновить
208.65

JavaScript *

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

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

Как я изобрел новый способ аутентификации и связь через свет: Ligthprint

Время на прочтение2 мин
Количество просмотров656

или как я сделал протокол связи через свет с точностью 99.2 %

Когда мы говорим “оплата телефоном”, в голове сразу всплывает NFC или QR.

А что, если экран и фонарик сами могут обмениваться данными?

Без радиоволн, без Wi‑Fi, без сети вообще.

Так появился Lightprint — протокол, который передаёт данные светом, а камера принимает их и распознаёт как уникальный «отпечаток».

И всё это работает прямо в браузере, на чистом JavaScript.

Читать далее

Новости

URLPattern теперь доступен в Baseline

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

API URLPattern официально стал базовой возможностью и доступен во всех основных браузерах с сентября 2025 года. Однако он может не работать на старых устройствах или в старых браузерах. Узнать больше.

Когда требуется функциональность, реагирующая на изменения URL, часто приходится писать сложные регулярные выражения или подключать сторонние библиотеки для маршрутизации. Теперь, когда URL Pattern API вошел в Baseline, у нас появилось стандартное, мощное и универсальное решение для этой задачи.

Читать далее

Аргументы воркеров в Node.js и на что они влияют

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

Подробное описание аргументов, доступных при создании воркеров в Node.js и как их можно использовать для многопоточки в серверном JavaScript

Чё ещё за аргументы?

VS Code без боли: как я вернул фичи WebStorm для Angular-разработки

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

Решил мигрировать с WebStorm на VS Code, но обнаружил, что нет поддержки автоимпорта Angular-компонентов. В WebStorm это работало из коробки — начинаешь писать <app-, IDE сразу подсказывает компоненты и автоматически добавляет импорт. В VS Code такого не было.

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

Но пока я разбирался с регулярками, Angular-разработчики выпустили официальную поддержку: добавили импорты на автокомплит и диагностику. Можно было опустить руки, но официальная реализация оказалась неидеальной, и у меня было несколько идей фич, которые позволяют сохранить актуальность проекта и приблизить опыт работы к WebStorm.

Читать далее

conway-errors: порядок в ошибках как часть архитектуры проекта

Время на прочтение5 мин
Количество просмотров341

Однажды при работе с крупной кодовой базой одного фронтенд-приложения я заметил, что функционал постепенно группируется относительно команд (доменов). Каждая из таких групп функционала постепенно накладывает собственные ограничения на архитектуру. Как оказалось, обработка ошибок при сравнении кода двух разных команд неоднородна. В одном случае разработчики структурировали ошибки стандартным наследованием JS/TS, в другом были использованы перехваты возникающих ошибок и логирование.

Стало ясно, что нам требуется обобщить подход к тому, как мы структурируем (называем, наследуем) и выбрасываем ошибки. Как показала практика, соглашений о кодировании недостаточно.

Что мы хотели получить?

Читать далее

ORM в Node.js — когда от него больше вреда чем пользы. Почему вам, не нужен дополнительный абстрактный слой

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

Object-Relational Mapping (ORM) — технология, призванная «поженить» реляционную природу SQL-баз (PostgreSQL, MySQL, SQLite и т.п.) с объектной моделью языков программирования. Она настолько популярна, что её пытаются реализовать даже в необъектных языках — например, в Go или Erlang.

Если в Java без ORM действительно неудобно, то в экосистеме Node.js (и TypeScript в частности) ситуация принципиально иная. И ORM здесь — зачастую избыточная абстракция. В большинстве случаев рациональнее обойтись компактным SQL-билдером который сильно упрощает построение запросов, оставляя над ними полный контроль, и который совсем не занимается управлением объектами. Почему в Node.js ORM почти не даёт преимуществ...

Читать далее

Делаем самые лучшие фото для документов

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

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

Делали ли вы электронную визу в Индию? А, может, в Южную Корею? Или подавались на лотерею Green Card в США? Если да, то вы точно знаете, что для заявки на все эти документы надо прикрепить фотографию определённого размера с целым набором требований...

А такое ну просто необходимо автоматизировать!

И, как можно догадаться, сайтов для автоматизации фотографий на документы просто куча. Только вот есть одна проблема: все эти сайты хотят много денег - от 5 до 12 долларов за приведение фото к нужным требованиям.

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

Подробности под катом!

Читать далее

От Jest к Vitest на backend тестах: как мы мигрировали тестовый фреймворк для ускорения CI и повышения стабильности

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

Привет! Я Максим Кузьмин, старший инженер по автоматизации в команде Т-Путешествий. Строю и развиваю процессы автоматизации и разрабатываю инструменты тестирования.

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

В статье будет история миграции с Jest на Vitest. Расскажу, какие проблемы подтолкнули нас к переходу, как мы адаптировали окружение и какие результаты получили. Поделюсь опытом улучшения скорости запуска тестов и стабильности результатов. Надеюсь, что наш опыт поможет кому-то превратить автотесты из источника проблем в устойчивый инструмент контроля качества.

Читать далее

Как и зачем мы делали свое браузерное расширение для мокирования API

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

Понедельник, утро, открываешь проект, а авторизация на dev-стенде снова сломана. Или же надо поторопиться с релизом фичи, а бэк еще не готов, и разрабатывать нужно параллельно, и тут без моков не обойтись. Ну или классика: в командировке лежит интернет, и вся работа встала колом. Знакомо?

Что тут можно поделать? Можно подождать, пока починят стенд. Можно залезть в код и что-нибудь там нахардкодить, переполнив его ненужной логикой моков. Можно поставить Postman, Insomnia или другие популярные решения. Но у каждого подхода есть подводные камни: простои и сорванные дедлайны, забытые хардкоды в продакшене, необходимость согласований с инфобезом (особенно если вы работаете в банке) и зависимость от внешних серверов.

Мы попробовали существующие решения и поняли: ни одно из них не закрывает наши потребности полностью. Нужно было что-то свое: простое в установке, работающее офлайн, не требующее дополнительных приложений и аккаунтов. Что-то, что можно быстро настроить под себя и не зависеть от внешних решений вендора. Так появился наш велосипед — браузерное расширение Req-Saver. 

Да, представимся. Мы — Александр Битько и Дмитрий Панфилов, фронтенд-разработчики в ПСБ. Сегодня расскажем, как превратили мокирование запросов из головной боли в простую и понятную работу.

Читать далее

View Transitions API

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

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

Читать далее

Справится ли коробочная система с нетиповыми задачами? Опыт разработки собственных продуктов для корпоративного портала

Время на прочтение5 мин
Количество просмотров389

Сотрудники Sminex каждый день заходят на удобный корпоративный портал — почитать новости, заказать канцелярию или подать заявку на программу обучения, предложить идею или воспользоваться одним из сервисов. В серии статей расскажем, как с помощью индивидуальных разработок мы объединили в коробочном решении множество процессов и почему при переходе на наш портал в нём сложно узнать платформу «Битрикс 24».

Читать далее

Взаимодействие с пользователем в макросах «Р7-Офис». Часть 1. Вводная

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

В  моих планах на эту серию статей   - раскрыть вам некоторые, на мой взгляд,  не самые  очевидный аспект при написания макросов  для офисного пакета  «Р7-Офис» версии десктоп. А именно: как пользователь может взаимодействовать с макросом привычным ему, оконным  способом.  Думаю, многое из мною здесь написанного вряд ли будет вами легко найдено в открытом доступе.  Кое – что конечно  имеется в «секретных» Телеграмм чатах.  Но некоторые сведения, вы наверное не найдёте даже там.  Я надеюсь,  изложенные  в этих  статьях мысли, будут стоить потраченных вами  усилий на их чтение. Ну а если вам не интересны мои рассуждения на тему текущего положения дела с макросами  в редакторе «Р7», то смело пропускайте эту вводную статью и ждите следующих практических.

Читать далее

Как я распознавание лиц к Yandex Disk-у прикручивал

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

«Крошка сын к отцу пришел и спросила крошка...»

Ну не сын на самом деле, а дочка, но пришла и спросила: «Паааап, у подруги тут ДР, вытащи мне из фотоархива все фото где мы с ней вместе». Да легко!

Читать далее

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

Я ненавижу React

Время на прочтение8 мин
Количество просмотров14K

Да, я его действительно ненавижу. Мне кажется, что команда React'а презирает разработчиков, и я презираю их в ответ. Все их решения направлены на то, чтобы сделать разработку сложнее, медленнее и непредсказуемее. На сегодняшний день они даже умудрились сломать работу JavaScript. Уму непостижимо, почему им это сходит с рук.

Читать далее

Почему Google Переводчик «ломает» React (и другие веб-приложения)

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

Команда JavaScript for Devs подготовила перевод статьи о том, почему Google Переводчик может ломать React и другие современные веб-приложения. Причина в том, что расширение вмешивается в DOM, нарушая работу виртуального DOM и вызывая ошибки вроде removeChild и insertBefore. Автор показывает реальные кейсы, обходные пути и поднимает важный вопрос: имеет ли фреймворк право на полный контроль над DOM?

Читать далее

Ссылочный тип данных в JavaScript: ключ к эффективному коду

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

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

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

Читать далее

Хватит это терпеть: как я написал Telegram-бота для VPS, который не бесит

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

Всем привет! Меня, как и многих здесь, в какой-то момент достало. Достало логиниться по SSH, чтобы проверить htop. Достало запускать Termius на телефоне, чтобы сделать sudo reboot зависшему инстансу. Достало ставить тяжелые веб-панели, которые жрут ресурсы и открывают лишний порт, только ради того, чтобы посмотреть загрузку диска.

Я админю несколько VPS. На одних крутятся пет-проекты, на других — сайты, на третьих — кастомные сетевые приложения для транспортировки данных. Мне нужен был инструмент, который:

Читать далее

Единственная шпаргалка по ReactJS, которая вам нужна

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

Добро пожаловать в ещё одну шпаргалку по React! Но подождите, это не то, что вы подумали — не просто набор случайных примеров кода и банальных объяснений, как в других шпаргалках.

Обещаю, это будет по-настоящему полезно. Мы вместе разберёмся, как работает ReactJS, и как реализованы все его крутые фичи «за кулисами», с помощью интерактивных демо, которые я специально подготовил для вас. Это поможет вам реально понять, как всё устроено, и применять знания на практике.

Перейти к разбору ReactJS

Создание интерактивного макета. Упаковка кругов в квадрат и прямоугольник. Жадный алгоритм

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

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

Читать далее

Оверинжиниринг в бэкенде: «промышленные» решения, которые чаще вредят, чем помогают

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

За годы работы с TypeScript, Java, Kotlin и Go я не раз сталкивался с одним и тем же паттерном: команда внедряет «правильное» архитектурное решение — и получает не гибкость, а технический долг.

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

В результате принцип KISS — «Keep It Simple, Stupid» — работает не хуже, чем в 1930-х, когда его впервые сформулировали в среде авиационных инженеров. В этой статье — мой личный список подходов, которые в 90% случаев (особенно в REST-серверах) приносят больше вреда, чем пользы.

Читать далее
1
23 ...

Вклад авторов