Обновить
154.66

JavaScript *

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

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

Из Vue 2 на Vue 3 – Migration Helper

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

Решил я написать помощник миграции из Vue 2 (options-api) в Vue 3 (composition-api) с авторазделением на композиции с помощью алгоритма Косарайю по поиску областей сильной связности

Дело было так...

@teqfw/di

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

Некоторые любят ездить велосипедах, а некоторые любят их изобретать. Я отношусь к тем, кто изобретает велосипеды, чтобы на них ездить. Пару лет назад я уже писал на Хабр про этот свой "велосипед" - контейнер внедрения зависимостей (DI container) для JavaScript. Последующее обсуждение принципов работы DI-контейнеров и их отличие от "Локатора Сервисов" достаточно сильно продвинуло меня в понимании работы моего собственного "велосипеда" и вылилось не только в ряд статей на Хабре (раз, два, три, четыре), но и в значительной доработке самого "велосипеда".

Под катом - описание работы DI-контейнера (@teqfw/di) по состоянию на текущий момент. Ограничения: контейнер написан на чистом JavaScript (ES2015+), работает только с ES2015+ кодом, оформленным в ES-модули с расширением *.mjs . Преимущества: позволяет загружать и использовать одни и те же модули как в браузере, так и в nodejs-приложениях без дополнительной транспиляции.

Читать далее

Поиск коллизий в SHA-256 на платформе Node.js при помощи Bitcoin Hasher

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

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

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

Для понимания работы приложения Bitcoin Hasher содержание статьи было поделено на небольшие разделы:

Читать далее

react-router: Три метода рендеринга маршрутов (компонентный, рендеринговый и дочерний)

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

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

Читать далее

Как настроить Facebook Conversion API с помощью GTM Server Side

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

Отслеживание событий на стороне сервера и Conversion API были доступны на Facebook в течение нескольких лет. Но, начиная с 2021 года, FB стал активнее это продвигать. Если у вас есть свой менеджер в Facebook, помогающий с вашей учетной записью, он, скорее всего, позвонит вам и порекомендует настроить Conversion API.

По этому если с вами уже связались или вы сами решили что вам нужно настроить CAPI (Conversion API) прошу под кат. Там я описываю один из рекомендуемых методов настройки, а именно через Google Tag Manager Server Side.

Читать далее

Публичное техническое собеседование на мидл фронтенд-разработчика: 15 июня в 19.00

Время на прочтение1 мин
Охват и читатели5.9K
15 июня в 19:00 (Мск.) Яндекс.Практикум проведёт открытое публичное собеседование на тестовую вакансию мидл фронтенд-разработчика. Будут два собеседующих, кандидат и вакансия, на которую он откликнулся. Участники смогут не только следить за происходящим, но и задать вопросы спикерам.

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


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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №470 (1 — 6 июня 2021)

Время на прочтение3 мин
Охват и читатели8.8K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

2d-графика в React с three.js

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

У каждого из вас может возникнуть потребность поработать с графикой при создании React-приложения. Или вам нужно будет отрендерить большое количество элементов, причем сделать это качественно и добиться высокой производительности при перерисовке элементов. Это может быть анимация либо какой-то интерактивный компонент. Естественно, первое, что приходит в голову – это Canvas. Но тут возникает вопрос: «Какой контекст использовать?». У нас есть выбор – 2d-контекст либо WebGl. А как на счёт 2d-графики? Тут уже не всё так очевидно.

Читать далее

Создание нейронной сети Хопфилда на JavaScript

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

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

В этой статье при помощи нейросети Хопфилда будем решать задачу восстановления искаженных изображений. Нейросеть предварительно обучим на эталонных изображениях.

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

Читать много кода

Управление зависимостями в Node.js

Время на прочтение6 мин
Охват и читатели11K
Управление зависимостями — это часть повседневной работы Node.js-программиста. Сегодня мы поговорим о разных подходах к работе с зависимостями в Node.js, и о том, как система загружает и обрабатывает зависимости.

Писать Node.js-приложения можно так, чтобы абсолютно весь код, обеспечивающий их функционирование, находился бы в одном .js-файле. Но при такой организации кода не используется модульный подход, когда фрагменты кода оформляют в виде отдельных файлов. Node.js даёт нам чрезвычайно простые механизмы для написания модульного кода.



Прежде чем мы перейдём к разговору об управлении зависимостями, поговорим о модулях. Что это такое? Зачем разработчику задумываться о неких «фрагментах кода», вместо того, чтобы просто писать весь код в одном файле?
Читать дальше →

Ко-вариантность и типы данных

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

Тема вариантов в программировании вызывает кучу сложностей в понимании, по мне это проблема в том, что в качестве объяснения берут не всегда успешные метафоры - контейнеры.

Я надеюсь что может у меня получиться объяснить эту тему с другой стороны используя метафоры “присвоения” в разрезе лямбд.

Зачем вообще эта вариантность нужна ?

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

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

Читать далее

Как я сделал свою сборку Gulp для быстрой, лёгкой и приятной вёрстки

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

Серьёзно и профессионально я начал заниматься вёрсткой в 2019 году, хотя до этого интересовался данной темой как любитель. Поэтому новичком мне себя назвать сложно, но и профессионалом с опытом 5+ лет я тоже не являюсь.Тем не менее, я успел познакомиться со сборщиком Gulp, его плагинами и сделал для себя хорошую, как по мне, сборку для работы. О её возможностях сегодня и расскажу.

Читать далее

Погружение во внедрение зависимостей (DI), или как взломать Матрицу

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

Давным-давно в далекой Галактике, когда сестры Вачовски еще были братьями, искусственный разум в лице Архитектора поработил человечество и создал Матрицу… Всем привет, это снова Максим Кравец из Holyweb, и сегодня я хочу поговорить про Dependency Injection, то есть про внедрение зависимостей, или просто DI. Зачем? Возможно, просто хочется почувствовать себя Морфеусом, произнеся сакраментальное: «Я не могу объяснить тебе, что такое DI, я могу лишь показать тебе правду».  

Читать далее

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

Создаём королевскую форму для приёма банковских карт

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


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


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


Для создания формы мы будем использовать следующие инструменты:


  1. Нативный JS
  2. BinKing — вспомогательный сервис для создания платёжных форм: https://github.com/sdandteam/binking
  3. IMask — инструмент для создания масок полей ввода: https://imask.js.org/
  4. Tippy — инструмент для создания тултипов: https://atomiks.github.io/tippyjs/

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

Проблемы рендера семи тысяч элементов на Vuetify

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

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

После написания таблицы и импорта 150+ проектов я впервые столкнулся с проблемой, что я рендерю слишком много, как для движка, так и для самого браузера. Таблицы Vuetify не подходили для моего решения: пришлось начать думать и погружаться. Погрузимся вместе со мной?

Погружаемся

Доступные текстовые метки для всех

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

Мое видео на тему «Специальные возможности в действии: практические советы по увеличению доступности пользовательских интерфейсов» уже доступно онлайн. Этот пост — дополненная расшифровка той части видео, где рассказывается, как создавать более информативные текстовые метки в виде кнопок и (или) ссылок, чтобы сделать покупки в Интернете более комфортными для пользователей программ экранного доступа и не нарушать рекомендаций по обеспечению доступности веб-контента (WCAG). Немаловажно, что тем самым мы не ломаем метки для пользователей голосового ввода. Описанные принципы подходят для всех видов текстовых меток, включая элементы управления формы.

Читать далее

Как мы потерпели неудачу, а затем преуспели в переходе на TypeScript

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

К старту курса о Fullstack-разработке на Python, где также рассматривается TypeScript, мы перевили статью о миграции в Heap.io — компании, которая предоставляет платформу аналитики продуктов, — c языка CoffeeScript на TypeScript; TS в Heap.io начали использовать более 4 лет назад. Несмотря на широкое предпочтение TypeScript среди инженеров, миграция была медленной, а чёткого пути к 100 % кода TS не было.

Читать далее

Пять причин выбрать JavaScript для IoT-проекта

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

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

Согласно исследованию тенденций в области IoT, проведенному по инициативе корпорации Майкрософт, 85% респондентов в настоящее время активно внедряют IoT-технологии и три четверти планируют их внедрение. Примерно 88% респондентов считают, что Интернет вещей критически важен для развития их бизнеса.

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

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

И здесь нам не обойтись без JavaScript!

Читать далее

Создание приложений на Angular с использованием продвинутых возможностей DI

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

Меня зовут Андрей, и я занимаюсь разработкой фронтенда на Angular для внутренних продуктов компании. Фреймворк обладает обширными возможностями, одни и те же задачи можно решить огромным количеством способов. Чтобы облегчить свою работу и повысить продуктивность, я задался целью найти универсальный и не сложный подход, который бы упростил проектирование и позволил уменьшить объем кода при сохранении его читаемости. Методом проб и ошибок я пришел к архитектуре, которой хочу поделиться в этой статье.

Читать далее

Видеоконференции — как бороться с высокой загрузкой ЦПУ?

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

Меня зовут Алексей Доильницын, я архитектор в DINS. Наша компания участвует в разработке высоконагруженной UCaaS-платформы (Unified Communication as a Service). 

Видеоконференции с большим количеством участников в галерее часто бывают неподъемными для устаревших лэптопов. Мы решили эту проблему с помощью теории систем автоматического управления (САУ).

Читать далее

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