Обновить
512K+

JavaScript *

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

Читать далее

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

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


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


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


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


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


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


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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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


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

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

IF Statement в JS

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

IF-Statement - это конструкция для некоторого условного выполнения кода. Она позволяет выполнить определенный блок кода в зависимости от того истинно или ложно некоторое условие и согласно официально спецификации ECMAScript, syntax if-statement можно записать как:

Читать далее

Переменные это сплошная «иллюзия»

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

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

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

Читать далее

Fine tuning роя агентов

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

🐝 Fine tuning роя агентов

В вакансиях LLM инженеров присутствует слово RAG. Это подразумевает интеграцию во внешнюю базу данных. Можно дешевле - fine tuning. Что это и как поставить работу описано в этой статье

Читать далее

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

Настройка односторонней аутентификации (One-Way SSL) для kafka

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

Часто при разработке небходимо иметь на локальной машине сервер kafka с ssl аутентификацией.
Надеюсь эта статья поможет быстро поднять его и приступить к разработке.

Читать далее

Почти Ванильный Фронтэнд

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

Почти — потому что используется всего две функции из библиотеки:

Создать элемент DOM

Обновить элемент DOM

Эта библиотека упрощает использование нативных функций DOM, таких как createElement и replaceChild. Библиотека Fusor направлена на то, чтобы сделать эти функции проще и компактнее.

Ниже приведены примеры распространенных проблем. Попробуйте воспроизвести их с использованием инструментов, которые вы сейчас используете. Вы можете быть удивлены, обнаружив, что разработка с Fusor может быть наиболее компактным, гибким, легким и производительным способом создания фронтенд-приложений.

Читать далее

React 19: что нового, что полезного, и куда мы движемся

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

С вами Дима, старший фронтенд разработчик в Surf, и сегодня мы разберём React 19 — новую версию одной из самых популярных библиотек для создания пользовательских интерфейсов. 

Вперёд, к подробному разбору основных фичей, оценке их плюсов и минусов и исследованию будущего React. 

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

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

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


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


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


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


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


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

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

CI/CD для чайников — разберитесь и начните наконец-то автоматизировать рутину в разработке. Часть 2. Запускаем CI

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

Список необходимых инструментов.

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

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

Но самый важный момент на этом этапе – какие настройки должны быть на этом сервере? Какие программы, пакеты или библиотеки, должны быть установлены? В конце концов, какую операционную систему использовать? ⚠️

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

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

eslint . –fix

npm run build

Если попробовать перечислить, то получится следующий список

Читать далее

Адаптивная вёрстка с учётом размера шрифта пользователя и брейкпоинты

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели14K
На эту статью меня вдохновил вопрос из раздела Q&A «Как выбрать «опорные точки» перехода ширины экрана для стилей страниц сайта?». Занимаясь в последнее время адаптивной вёрсткой, я пришёл к нескольким выводам, которыми и хочу с вами здесь поделиться. Заодно разберём некоторые полезные (и не очень) техники для адаптивной вёрстки, и пересоберём Bootstrap с их учётом.


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

Очередной сериализатор для JavaScript, но есть нюанс…

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

Пару лет назад начал разрабатывать редактор текстовых квестов на JavaScript и обратил внимание на то, что неплохо было бы добавить в JSON-сериализатор поддержку ссылок на объекты. Чтобы можно было одним методом сохранить и загрузить состояние объекта, не нарушая его целостность и связь с внешним миром. Что-то подобное есть в PHP при работе метода serialize.

Спустя год начал разрабатывать пошаговую стратегию, в которой такой метод был бы идеальным для реализации сохранений и сетевого режима (пересылка сохранений от игрока к игроку, как это реализовано в Heroes of Might&Magic 3). Имея такой метод, можно было бы не заботиться о сохранении/загрузке объектов игрового мира при их изменениях. Например, добавим лучнику привязку его стрел к конкретному типу дерева. Или в морском пароме создадим массив перевозимых юнитов. При обычной тактике обработки данных это создало бы немало проблем для организации сохранения ссылок.

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

Читать далее