Как стать автором
Поиск
Написать публикацию
Обновить
323.27

JavaScript *

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

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

Книга: «Создание фронтенд-фреймворка с нуля»

Время на прочтение3 мин
Количество просмотров4.6K
Привет, Хаброжители!

Мы используем фронтенд-фреймворки каждый день. А понимаем ли мы, что происходит там, под капотом? Книга Анхеля Солы Орбайсеты «Создание фронтенд-фреймворка с нуля» предлагает уникальный подход к изучению этой темы — через практическое создание собственного фреймворка. Автор убежден, что лучший способ понять принципы работы фреймворков — самостоятельно реализовать их ключевые механизмы.
Читать дальше →

@teqfw/di: Coding JavaScript like a Java boss

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

Эта статья для тех, кто, как и я, хочет программировать на JavaScript в Java-стиле. Для тех, кто находит вдохновение в балансе между строгой архитектурной дисциплиной Java и творческой свободой JavaScript. Ранее я уже публиковал "философию" своей платформы TeqFW, а также инструкции для LLM (раз, два) по оформлению es-модулей в приложениях, написанных в стиле TeqFW. На этот раз я делюсь инструкцией для LLM по использованию внедрения зависимостей в таких приложениях.

Для тех, кто не совсем понимает, что значит "программировать на JavaScript в Java-стиле", приведу рабочий пример — это Node.js-утилита @flancer64/smtp-logger. Она сохраняет в базу данных все email'ы, которые Postfix отправляет наружу. Мне как раз понадобился такой функционал — и я реализовал его в стиле TeqFW: с явным управлением зависимостями и строгой модульной структурой.

Под катом - пример JS-кода в Java-стиле.

Читать далее

Охота за 100% покрытием: как собрать все метрики воедино в монорепозитории Nx

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

Работая с монорепозиториями на Nx, часто возникает необходимость получить единый отчёт о покрытии кода. Однако по умолчанию каждый проект генерирует отдельный файл, что затрудняет анализ. В этой статье расскажем, как с помощью nyc-merge объединить все отчёты в один.

Читать далее

Как я вуз автоматизировал. Штурм веба

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

Здравствуйте.

Меня зовут Андрей.  Работаю я в государственном вузе. И, как водится, в такого рода учреждениях люди, которые занимаются компьютерами, занимаются ими в широком смысле слова.

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

Читать далее

Reconciliation в React, обновления виртуального DOM: что это и как работает под капотом простыми словами

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

Привет, меня зовут Дмитрий, я React-разработчик и в статье хочу снова рассмотреть тему, которая у всех на слуху, однако «подкапотной» информации по ней не так много. Всем известно, что React обновляет компоненты, когда это необходимо, но как это происходит на самом деле, «под капотом»? Давайте разберемся вместе — что мне удалось узнать.

Читать далее

Как я oauth proxy навайбокодил

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

Чем хорош TRMNL — так это возможностью выводить что-то своё за считанные минуты.

Но сервер позволяет только простые GET и POST запросы, то есть в лоб OAuth2 не реализуешь. Оно и понятно: они не очень хотят хранить данные авторизации для всех.

Но всегда можно обойтись малой кровью: например, бесплатным CloudFlare.

Только повайбкодить придётся

Параллельный цикл на worker. Многопоточность JS

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

Как применить worker для ускорения параллельных вычислений на JS. Постарался подробно и понятно разобрать как работают worker, как общаться с ними. Показал пример многопоточного вычисления значений массива и сравнил производительность различных методов обработки массивов.

Читать далее

Это под силу даже веб-разработчику! Размышляю, как создать драйверы на JavaScript с API WebUSB

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

Привет! Я Игорь Кечайкин, руководитель группы разработки во Frontend-команде Flocktory. Недавно, решая задачу, связанную с API WebUSB для Fingerprint-атрибуции пользователя, задался совершенно не связанным теоретическим вопросом: а как создать с этим API  драйверы на JavaScript?

Чтобы разобраться, изучил спецификацию API WebUSB, а теперь принёс на Хабр выжимку самых важных элементов. В статье я расскажу о принципах работы решения и том, что с ним делать веб-разработчику, который хочет напрямую реализовать на сайт функцию, например, 3D-принтинга с пользовательских девайсов. А также вы узнаете, насколько это безопасно — для сайта, внедряющего API, и для девайсов юзера.

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

Читать далее

Организация задач на новом уровне: интеграция Google Sheets и Telegram-бота для эффективного планирования

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

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

Меня зовут Евгений и в этой статье я хочу рассказать как я создавал свой таск - менеджер на базе Google Sheets и Telegram.

Читать далее

Обнаружение изменения положения DOM элемента с помощью IntersectionObserver

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

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

Читать далее

Как заставить TS работать на вас

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

Привет! Меня зовут Дмитрий, и я уже много лет работаю с TypeScript. За это время я был частью разных команд с разным уровнем владения этим языком, в том числе тех, кто только готовился перевести проект с JavaScript. И нередко я замечал, что разработчики воспринимают TypeScript не как инструмент, упрощающий работу, а как рутинную обязанность, которая лишь замедляет процесс. В этой статье я расскажу, как сделать TypeScript своим союзником и заставить его работать на вас, а не против.

Читать далее

Решаем фундаментальную проблему асинхронных JavaScript-ошибок

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

Асинхронный JavaScript-код встречается практически в любом проекте (самый популярный пример использования — сетевые запросы). Но работа с ним сопряжена с рядом особенностей. Одна из них — специфичная работа с ошибками. Так, поскольку ошибки могут возникать в разное время и в разном месте, надо уметь их отлавливать, определять место «поломки» и корректно передавать всю информацию для последующей обработки. Для этого критически важно, чтобы stack trace ошибки был не формальный «однострочник», а максимально информативный.

Читать далее

Как создать веб-приложение со своей картой: подключение API v3 Яндекс Карт

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

Сколько карт установлено на вашем смартфоне? Попробуйте ответить на этот вопрос и задумайтесь, как часто их добавляют разработчики приложений. Кто-то отмечает на картах свои магазины, кто-то — делает проекты в духе Zenly, другие — показывают зоны доставки еды и т. д.

Если вам тоже пришлось «вшить» в свое веб-приложение карты, запаситесь терпением. В инструкции рассказываем, как это сделать и настроить тестовое окружение с IDE в облаке. Подробности под катом!
Читать дальше →

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

Пишем тесты в транзакциях вместе с MySQL

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

Хочу поведать о своей библиотеке для написания тестов в транзакция при работе с MySQL.

Я люблю писать тесты для своего кода, но при этом не люблю писать моки и всю необходимую для них обвязку. Особенно это касается базы данных ибо как правило замокать вызовы внешних сервисов и очереди сообщений, еще не так сложно, а вот с БД все гораздо сложнее, ведь взаимодействие с ней обычно довольно «богатое». И это ведет к тому, что приходится писать много хрупких и утомительных моков, и при этом сами запросы к БД не покрываются тестами (а там зачастую могут таиться ошибки связанные с некорректными запросами или ошибками миграции схемы).

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 10

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


Привет, друзья!


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


Сегодня мы продолжим разбирать алгоритмы для работы с графами.


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Структуры данных и алгоритмы на MyJavaScript.


Интересно? Тогда прошу под кат.

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

Создаю новое направление в изобразительном искусстве — программный LLM ART

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

Мы посмотрим и на Корбена Далласа и Лилу из фильма «Пятый элемент», на сюжет из фильма «Люди в черном» и другие интересные арты, созданные LLM программно.

Допустим, мы художнику завязываем глаза, даем в руки кисть и краски и формулируем задание, согласно которому он должен на холсте всё это изобразить максимально точно.
То же самое мы можем проделать с LLM, дав инструкцию нарисовать заданный сюжет, а вместо кисти и красок будет код. Например, HTML5 и API canvas.

Выясняется, что среди моделей есть как аутсайдеры, провалившие задание, так и гении, впрочем, как и среди людей. А одна из них, по сравнению с другими, ну просто Леонардо да Винчи.

Читать далее

Клонируем правильно: structuredClone() в JS

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

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

Глубокое копирование в JavaScript всегда было немного проблемой. До тех пор, пока в языке не появился structuredClone() — метод, который решил многие наши проблемы.

Читать далее

Прочтите это, если планируете работать с Next.js

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

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

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

Именно такие ожидания я связывал с Next.js — опенсорсным фреймворком для веб-разработки, созданным и управляемым компанией Vercel. Vercel — это облачный провайдер, предлагающий управляемый хостинг Next.js как услугу.

Читать далее

Скрываем без JavaScript элементы, требующие JavaScript

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

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

Небольшой контекст: я сейчас разрабатываю небольшую кнопочку «Share», которую можно вставлять в посты и с лёгкостью делиться ими, если мне захочется. Взгляните, как она сейчас выглядит без JavaScript:  

Читать далее

Запуск Linux внутри PDF

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


По мнению некоторых пользователей, PDF — простой формат для обмена документами. На самом деле это очень сложный стандарт, который поддерживает выполнение практически любого кода. Неудивительно, что в прошлые годы энтузиастам удалось успешно запустить Doom внутри PDF и провести ряд других интересных экспериментов.

Оказалось, что на этом возможности движка по рендерингу PDF не ограничиваются. Он способен запустить даже эмулятор полноценного процессора, а в нём — целую операционную систему.
Читать дальше →

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