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

JavaScript *

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

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

Реализация мемоизации в JavaScript

Время на прочтение 32 мин
Количество просмотров 129
JavaScript *
Туториал

Фраза “делать свой велосипед” обычно употребляется для негативного окраса чего-то. Но именно этим мы будем заниматься здесь. Потому что это эффективный метод для того, чтобы разобраться в какой-то теме. Попробовав самому реализовать что-то, мы лучше разберемся в инструментах, которые обычно делают эту работу за нас. После этого мы сможем извлекать больше пользы из привычных инструментов. Например знания о внутреннем устройстве определённых систем позволит вам дебажить проблему гораздо быстрее хотя бы потому, что вы будете знать, что могло пойти не так. После того, как попытаешься реализовать что-то сам, некоторые вещи оказываются проще и перестают быть магией. А некоторые, казавшиеся простыми библиотеки, оказываются настолько пропитанными нюансами, что ты становишься благодарен создателю пакета за его труд

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Новости

Как сайты определяют ботов? Деобфускация Akamai Bot Manager 2.0

Уровень сложности Средний
Время на прочтение 47 мин
Количество просмотров 1.3K
JavaScript *Node.JS *Реверс-инжиниринг *

Akamai Technologies - американская компания, занимающаяся защитой веб-ресурсов от ботов с помощью своего продукта Bot Manager. В её портфолио числятся такие гиганты ритейла, как Nike, Adidas и Asos, для которых особенно важен контроль за ботами, автоматизирующими процесс выкупа редких/лимитированных товаров с целью их перепродажи по завышенной цене. В данной статье мы взглянем на скрипт антибота Akamai и рассмотрим, какие методы обнаружения через JavaScript в нём используются. Не знаете почему обнаруживается ваш selenium? Добро пожаловать!

Читать далее
Всего голосов 34: ↑34 и ↓0 +34
Комментарии 7

Module Federation — что скрывается под кажущейся простотой

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 1.2K
Разработка веб-сайтов *JavaScript *HTML *ReactJS *
Туториал
Из песочницы

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

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

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

Начнем!

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 0

Диалог между JS и Python если бы они были людьми

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 9.9K
Python *JavaScript *Искусственный интеллект Будущее здесь Natural Language Processing *
Из песочницы

Не так давно мне в голову пришла идея воспользоваться моделью text-davinci-003 от OpenAI чтобы сгенерировать диалог между двумя языками программирования так, если бы они были реальными людьми. Я выбрал Javascript и Python.

Для этого я подготовил следующую инструкцию...

Читать далее
Всего голосов 13: ↑6 и ↓7 -1
Комментарии 11

Истории

Как рисовать красивые соединения с помощью SVG

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 5.4K
Веб-дизайн *JavaScript *Программирование *Работа с векторной графикой *HTML *
Из песочницы

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

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 7

Заметка о хуке useSyncExternalStore

Уровень сложности Сложный
Время на прочтение 7 мин
Количество просмотров 1.5K
Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *ReactJS *TypeScript *
Обзор
Перевод


Hello, world!


Представляю вашему вниманию перевод этой замечательной статьи.


useSyncExternalStore — это один из хуков, представленных в React 18. Наряду с хуком useInsertionEffect, он считается хуком для библиотек (library hook):


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


В списке изменений React 18 речь также идет о библиотеках:


Добавлен useSyncExternalStore для помощи в интеграции с React библиотек внешних хранилищ (external store libraries)

Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 0

SEO для разработчика и верстальщика: основные SEO-требования к разработке сайтов

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 1.2K
PHP *JavaScript *Поисковая оптимизация *
Из песочницы

Подготовил подробную инструкцию, как сделать SEO-friendly сайт и учесть все основные SEO-требования на этапе разработки сайта.

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

Ниже представлена подробная инструкция с основными SEO-требования, которые необходимо предусмотреть на этапе создания нового сайта.

Посмотреть Чек-лист
Всего голосов 6: ↑1 и ↓5 -4
Комментарии 5

Перевод первой части учебника Patterns.dev

Время на прочтение 11 мин
Количество просмотров 4.7K
JavaScript *ООП *ReactJS *
Перевод

Привет! Меня зовут Айнур, и я frontend-разработчик SimbirSoft. Более 6 лет я работаю над коммерческими проектами, создаю и улучшаю интерфейсы, поэтому в работе достаточно часто использую паттерны проектирования. Неоднократно я обращался за идеями и лайфхаками к книге Patterns.dev, которая содержит очень современный взгляд на шаблоны проектирования, рендеринга и производительности JavaScript.

Авторы Patterns.dev:

Лидия Холли — штатный консультант и преподаватель по разработке программного обеспечения, которая в основном работает с JavaScript, React, Node, GraphQL. Она также занимается наставничеством и проводит личные тренинги.

Эдди Османи — технический менеджер, работающий над Google Chrome. Его команды работают над такими проектами, как Lighthouse, PageSpeed ​​Insights, Chrome User Experience Report и другими.

Материал книги будет полезен не только React-разработчикам, но и всем, кто так или иначе интересуется или сталкивается с frontend-разработкой.

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

Источник: https://www.patterns.dev/
Данный адаптированный материал распространяется на условиях лицензии Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 3

Angular. Работа с template-driven формами

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 735
JavaScript *Angular *TypeScript *

Разработчики angular, как правило знают, что для работы с формами существует два подхода: reactive forms и template driven forms. Также, хорошо известно, что для работы с формами разработан такой функционал как валидация, однако исчерпывающе описано его применения для подхода reactive forms. Давайте рассмотрим как можно получить те же преимущества для template driven подхода.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 4

Рисуем верёвку в формате SVG при помощи JavaScript

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 3.4K
Блог компании Национальная Медиа Группа CSS *JavaScript *Работа с векторной графикой *Математика *
Туториал
Перевод

Сегодня я расскажу о процессе, который я придумал для преобразования SVG‑контура в векторный рисунок верёвки.

Вы узнаете, как превратить показанный слева контур в верёвку справа:

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

Стоит учесть, что это не туториал по кодингу, а подробный обзор каждого из этапов. Но не беспокойтесь, код полностью доступен.

Замысел

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

Наша задача будет заключаться в создании этих многоугольников при помощи JavaScript.

Читать далее
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 1

Как мы быстро запустили мобильное приложение и споткнулись о свой успех

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 4.2K
Блог компании Группа НЛМК JavaScript *Node.JS *API *
Туториал

Привет, Хабр! Мы крупная производственная компания с 50К+ сотрудников, и в 2019 году поняли, что нам нужно мобильное приложение. Срок реализации 5 месяцев. Какой стек вы бы выбрали при такой скорости? Мы выбрали нативные Kotlin и Swift. Поначалу запилили всего 6 сервисов (новости, зарплатный лист, отпуска, блоги, регистрацию опасностей, выдачу СИЗ), и даже при том, что нанесли минимальную пользу, приложение очень зашло, количество пользователей начало расти лавинообразно. И тут мы поняли, что серверная часть на node.js + PostgreSQL создана без всякой мысли о развитии и масштабировании, решала исключительно локальные задачи. Все было на неоптимальной монолитной архитектуре, развивать и поддерживать которую просто нельзя.

Расскажу, как мы решили проблему.

Читать далее
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 6

Vite, SVG и карьерные свичи: рассказываем, как прошел митап #DevTalks о фронтенде

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 673
Блог компании Spectr Разработка веб-сайтов *JavaScript *Карьера в IT-индустрии Конференции
Обзор

Всем привет! На связи Spectr.

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Работаем с таблицами с помощью React Table

Уровень сложности Сложный
Время на прочтение 24 мин
Количество просмотров 1.5K
Блог компании Timeweb Cloud Разработка веб-сайтов *JavaScript *ReactJS *TypeScript *
Обзор


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


В этом туториале я покажу вам несколько полезных приемов по работе с таблицами с помощью React Table.


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


Мы последовательно реализуем 5 вариантов таблицы:


  • с возможностью сортировки строк;
  • с возможностью фильтрации строк;
  • с пагинацией;
  • с возможностью выбора строк;
  • комплексную.

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


Предполагается, что вы имеете некоторый опыт работы с React и TypeScript.


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


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

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 4

Как кастомизировать стандартные страницы ошибок

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2K
Разработка веб-сайтов *JavaScript *Nginx *Дизайн
Обзор

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 16

Монады на JS/TS в дикой жизни

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

Идея разобраться в теме монад меня привлекала уже очень давно. Сложность описания концепций представляло не только мою личную проблему, но и была потенциальной проблемой для коллег. Ведь хотелось не просто в них разобраться, а работать с ними каждый день. Функциональное программирование неплохо формирует мышление, является очень выразительным и часто лаконичным решением. Ниже идет описание опыта разработки с применением библиотек монад на JS / TS.

Читать далее
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 18

Почему Banditypes — самая маленькая TS-библиотека для валидации схем

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.4K
Блог компании RUVDS.com Разработка веб-сайтов *JavaScript *TypeScript *

Я выпустил библиотеку banditypes — самый маленький валидатор схем для TS / JS. Удивительно, но базовый функционал валидации с приятным API можно упихнуть в 400 байт, если сконцентрироваться на размере и добавить пару грязных хаков. В этой статье расскажу, как добился такого результата.

Читать далее
Всего голосов 49: ↑49 и ↓0 +49
Комментарии 15

Анализ дампа кучи Java: разбираем на примерах

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 2.3K
Блог компании Timeweb Cloud JavaScript *Java *
Обзор
Перевод
image

Я увлекаюсь управлением памятью в Java и в этой статье попробую объяснить, как взять и проанализировать дамп кучи – разберём на примерах. Но для начала давайте вспомним, что известно об этой предметной области. Немного освежив теорию, мы возьмем дамп кучи и проанализируем, каким он получится в простом приложении.
Читать дальше →
Всего голосов 23: ↑17 и ↓6 +11
Комментарии 5

Современный способ глубокого клонирования объектов в JavaScript

Время на прочтение 5 мин
Количество просмотров 7.9K
Блог компании OTUS JavaScript *
Перевод

Вы знали, что теперь в JavaScript есть нативный способ делать глубокие копии объектов? Это стало возможным с помощью функции structuredClone, встроенной в среду выполнения JavaScript.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 9

Полное понимание асинхронности в браузере

Время на прочтение 24 мин
Количество просмотров 20K
Блог компании Яндекс JavaScript *Программирование *Интерфейсы *Браузеры
Про асинхронность JavaScript написано много статей, документации и книг. Но вся информация сильно распределена по интернету, поэтому сложно быстро и полностью разобраться, что к чему, и составить цельную картину в голове. Не хватает одного исчерпывающего гайда. Именно эту потребность я и хочу закрыть своей статьёй.

Читать дальше →
Всего голосов 65: ↑65 и ↓0 +65
Комментарии 13

Стрелочные функции и что о них стоит помнить

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 11K
Блог компании OTUS JavaScript *Программирование *
Обзор

Идея написать статью про стрелочные функции в 2023 году выглядит не самой очевидной, но я постараюсь объяснить свою мотивацию. Я разработчик, который пришел в профессию после того, как в JavaScript появились такие инструменты как классы, async/await, стрелочные функции и т.д.. В результате, я воспринимаю их как данность и не всегда понимаю, какой важный вклад они внесли в современный JS. И из-за этого непонимания в коде появляются ошибки, которых можно избежать, если оглянуться назад и изучить, какие проблемы эта технология была призвана решить в момент выхода. В этой статья я хочу разобраться: зачем появились стрелочные функции, чем они отличаются от обычных, и какие особенности содержат. 

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 10

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

Работа