Обновить
256K+

JavaScript *

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

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

Вы не знаете деструктуризацию, пока

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

С тех пор, как в ES6 была введена деструктуризация (destructuring assignment), прошло уже достаточно времени - теперь она поддерживается во всех передовых браузерах. Ее можно использовать в любой допустимой операции присваивания, например, при присваивании значений переменным, параметрам функции и т. д. Для начала давайте рассмотрим, что такое деструктуризация.

Синтаксис присваивания значений массива или объекта отдельным переменным до введения деструктуризации был чересчур подробным.

Читать далее

Функции в JavaScript: секреты, о которых вы не слышали

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

Функции умеет писать каждый программист. Их часто называют объектами первого класса, потому что это ключевая концепция JavaScript. Но умеете ли вы использовать их эффективно?

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

- Чистые функции

- Функции высшего порядка

- Кэширование функций

- Ленивые функции

- Каррирование

- Композиция функций

Читать далее

ECMAScript 4: версия, которой не было

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

Вы наверняка заметили, что в системах сборки кода используются спецификации ECMAScript 3, затем ECMAScript 5 и так далее. ECMAScript 4 не используется никогда. Почему?

Я подумал, что было бы интересно изучить историю ECMAScript 4 и выяснить, чего мы лишились.

Согласно Википедии, первая версия ECMAScript 4 появилась в феврале 1999 года. Работу над спецификацией планировалось завершить к августу 2008 года.

Язык ECMAScript 4 был перспективной разработкой, в нем появилось множество новых возможностей, которых очень не хватало в ECMAScript 3. В четвертой редакции были исправлены некоторые недочеты ECMAScript 3, в связи с чем ES4 стал несовместим предыдущими версиями.

С самого начала вокруг ES4 разгорелось много споров, большинство разработчиков браузеров новинку не поддержали, и работу над ES4 пришлось прекратить.

В 2008 году от ES4 официально отказались, а стандарт ES3.1 переименовали в ES5. Это было более скромное, корректировочное обновление ECMAScript.

Пожалуй, в то время больше всего на ES4 был похож ActionScript 3 для Flash-приложений. После выпуска AS3 некоторые из нас даже думали, что Flash и веб в конце концов станут единым целым.

Читать далее

Telegram-бот как фитнес-менеджер во время пандемии

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

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

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

Сначала всё было хорошо и мест всем хватало, но по мере выхода людей в офис мест больше не становилось, и запись в зал превратилась в попытки поймать момент, когда освободится местечко. Как говорится, лень — двигатель прогресса: почти сразу как, начались трудности с запись, пришла в голову идея создать бота, который будет это делать за меня.
Читать дальше →

Используем Google Tag Manager Server-Side вместо Zapier

Время на прочтение2 мин
Охват и читатели3K
Появление Google Tag Manager Server Side привнесло большое количество возможностей в мир маркетологов и дата аналитиков. Так как инструмент новый не все понимают чем он может быть полезен конкретно для их компании.

Одно из преимуществ GTM на сторонне сервера в том что вы можете использовать не публичные ключи/пароли к вашим сервисам. Эта особенность позволила некоторым компаниям отказаться от Zapier и оставить только Google Tag Manager Server Side.

GTM to Slack

Дальше будет описан пример, одной из самых популярных Zapier интеграций, как слать уведомления в Slack о новой регистрации. На основании эго вы сможете сделать другие интеграции. С часто используемых среди моих клиентов это: отправка писем при заполнении формы обратной связи или отправка смс с номером и деталями заказа.
Читать дальше →

Детальный обзор Well-known Symbols

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


Доброго времени суток, друзья!

Символ (Symbol) — это примитивный тип данных, представленный в ECMAScript2015 (ES6), позволяющий создавать уникальные идентификаторы: const uniqueKey = Symbol('SymbolName').

Вы можете использовать символы в качестве ключей для свойств объектов. Символы, которые JavaScript обрабатывает особым образом, называются хорошо известными символами (Well-known Symbols). Эти символы используются встроенными алгоритмами JavaScript. Например, Symbol.iterator используется для перебора элементов массивов, строк. Его также можно использовать для определения собственных функций-итераторов.

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

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

В данной статье речь пойдет о хорошо известных символах с примерами их использования.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №442 (16 — 22 ноября 2020)

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

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

Marko.js — фронтенд от ebay.com

Время на прочтение6 мин
Охват и читатели10K
Marko.js не так популярен, как Angular, React.js, Vue.js или Svelte. Marko.js — это проект ebay.com, который с 2015 года стал достоянием opensource. Собственно, именно на этой библиотеке построен фронтенд ebay.com, что позволяет сделать заключение о её практической ценности для разработчиков.

Ситуация с Marko.js, немного напоминает ситуацию с фреймворком Ember.js, который, несмотря на то что работает в качестве фронтенда нескольких высоко-нагруженных сайтов (например Linkedin) — о нем мало знает среднестатистический разработчик. В случае с Marko.js — можно утверждать, что совсем не знает.

Marko.js неистово быстр, особенно при серверном рендеринге. Что касается серверного рендеринга, то скорость Marko.js, скорее всего, останется недосягаемой для его неторопливых собратьев, и этому есть объективные причины. О них и поговорим в предлагаемом материале.
Читать дальше →

Google Apps Script: переносим расписание из таблицы в календарь

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

Для кого предназначена данная статья


  • Для людей, кто активно пользуется сервисом Google Calendar
  • Для людей, у которых есть файлы таблиц с расписаниями, и которые хотели бы работать с ними более продуктивно — всегда иметь ближайшие мероприятия перед глазами, получать уведомления с напоминаниями на почту или push-уведомления
  • Для людей, которым хочется быстро познакомиться с Google Apps Script, понять, что это такое, и где его можно применить

Что понадобится


  • Google-аккаунт
  • Базовые знания JavaScript
Читать дальше →

Для чего на самом деле нужны стрелочные функции в JavaScript

Время на прочтение4 мин
Охват и читатели13K
Привет, Хабр! Представляю вашему вниманию перевод статьи «The real reason why JavaScript has arrow functions» автора Martin Novák.


* фраза-мем из игры Skyrim
Читать дальше →

Сорта элементов (element kinds) в движке V8

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

В качестве имени свойства JavaScript-объекта может выступать произвольная строка. Но для некоторых особенных подмножеств имен имеет смысл делать специальные оптимизации в JavaScript-движках. Одним из таких случаев являются числовые индексы массивов.


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

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

Schedulers в RxJS

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

Что вы знаете о Schedulers в RxJS? Они скрывают от разработчиков работу с контекстом выполнения Observable. Как те эльфы-домовики из Гарри Поттера, которые выполняют всю черную работу в Хогвартсе, а о них никто даже и не слышал. Давайте исправим это и узнаем о них чуть больше.

Читать далее

Делаем симулятор двухпозиционного регулятора на JavaScript

Время на прочтение9 мин
Охват и читатели2.6K
Суть теории автоматического управления подразумевает построение такой системы, которая поддерживает определенный параметр некоторого объекта в заданном состоянии, например, температуру в печи, или уровень воды в баке. Для лучшего понимания процесса, удобно сразу рассмотреть конкретную модель управления, скажем, управление уровнем воды в баке. Кстати, в учебниках и статьях по ТАУ этот процесс упоминается довольно часто как отсылка к истории, потому что в далеком 1763 году русский изобретатель Ползунов И.И. разработал для своего парового двигателя систему контроля уровня воды. Своего рода классический регулятор, который, кстати, и является по сути двухпозиционным регулятором как на этой картинке (воды нет — клапан открыть, вода есть клапан закрыть).



Двухпозиционный он потому, что имеет 2 позиции: открыт (включен) и закрыт (выключен), в англоязычной литературе on-off. Бывают и трех и более позиционные регуляторы, то есть к основным положениям клапан пополнения воды открыт или закрыт, добавляется еще положение «приоткрыт». После слива воды в унитазе поплавок опускается, открывая полностью клапан и вода поступает в бак на полном напоре, но ближе к достижению заданного уровня, поплавок поднимается призакрывая клапан и уменьшая поступление воды. И как только текущий уровень воды ( в английском языке PV — Process Value — Текущее значение) поднимется до заданного (в английском языке SP — Set Point — Уставка), клапан закроется и уровень воды перестанет расти. В описанном случае регулятор даже более похож на пропорциональный — регулирующее воздействие уменьшается при уменьшении рассогласования (ошибка — error), то есть разницы между заданным уровнем и уровнем текущим.
Читать дальше →

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

Внедрение зависимостей (dependency injection) через свойства-функции в JavaScript

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


Известный, но не очень популярный способ внедрения зависимостей. Попытка реализовать этот способ в популярных DI npm пакетах. Еще один свой DI.

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

Как портировать модуль с Node на Deno

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


Я верю, что когда-нибудь Deno мог бы стать следующим стандартом после Node, как TS постепенно заменяет JS. Экосистема ноды уже достаточно разрослась, чтобы стало сложно вносить глобальные изменения в ядро, выход 15 версии тому пример. Помните, какое там ключевое изменение? Теперь unhandledRejection вместо warn будет выдавать throw, вау! На эту тему сломано много копий, но большинство обсуждений приходит к выводу что Node оказался в стагнации. И тут Райан Даль, создатель ноды, врывается на рынок со своим свежим и гибким решением: строгий подход к безопасности, новая кодовая база на TS, новые фичи… Но есть один нюанс.
Читать дальше →

JavaScript: что нас ждет в следующем году

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


Доброго времени суток, друзья!

Данная статья посвящена возможностям JavaScript, которые будут представлены в новой версии спецификации (ECMAScript 2021, ES12).

Речь пойдет о следующем:

  • String.prototype.replaceAll()
  • Promise.any()
  • WeakRefs
  • Операторы логического присваивания
  • Разделители чисел

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

Растянуть видео в браузере

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


Очень часто видео в онлайн-кинотеатрах имеет соотношение сторон, отличное от соотношения сторон монитора. Поэтому иногда возникает желание сделать общий масштаб чуть крупнее за счет небольшой обрезки по краям. Или вовсе — вписать изображение в размеры экрана по меньшей стороне картинки. Особенно это актуально для маленьких экранов, а также, для старых мониторов 4:3. Я уж молчу о том, что оригинальное видео может быть вообще растянуто по одной из сторон и это необходимо как-то исправить.

Для решения данной проблемы я задумал написать браузерное расширение под Chrome и Firefox. Идея такая: при проигрывании любого браузерного видео вызывается экранное меню, которое позволяет произвольно менять масштаб и соотношение сторон картинки.
Читать дальше →

Полное визуальное руководство-шпаргалка по Flexbox и Grid + туториал

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


Доброго времени суток, друзья!

Представляю вашему вниманию полное визуальное руководство-шпаргалку по всем свойствам CSS-модулей Flexbox и Grid.

Основные источники: A Complete Guide to Flexbox, A Complete Guide to Grid.

В конце статьи вас ждет небольшой туториал по созданию тренажера по Flexbox.

Без дальнейших предисловий.


Осциллограф в браузере

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

Отрисовка графиков в реальном времени




Одно время я работал в компании, которая разрабатывала бесконтактные датчики, как на фото. И при установке этих датчиков, надо было правильно сориентировать антенну (белая штука на фото). И выглядело это так: один человек на объекте, где-то в Сибири, на морозе крутит антенну, а другой в Питере, в офисе, не видит того человека, но видит графики на мониторе. И вот они как слепой с глухим пытаются поставить антенну, один по графикам, по телефону говорит, что надо антенну повернуть, а другой пытается понять в какую сторону её крутить. Звучит как бред, правда? Но так и было.

Когда я это всё увидел, понял, что получать графики надо локально и прямо здесь и сейчас наблюдать всю картину, чтобы один и тот же человек видел сигнал и крутил антенну. И понял: надо пилить веб-интерфейс для этой железки. Опыта веб-разработки ноль, значит заодно и поучимся.

Namespaces в JavaScript (часть II, заключительная)

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

В своей прошлой статье я прикидывал, какие namespace'ы мне нужны для упорядочивания кода в ES6-модулях. В этой статье я описываю, какие namespace'ы у меня получились и как их использовать при порождении объектов и разрешении зависимостей (dependency injection).

Читать далее