Обновить
256K+

JavaScript *

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

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

Играем в Mortal Kombat с помощью TensorFlow.js

Время на прочтение18 мин
Охват и читатели20K
Экспериментируя с улучшениями для модели прогнозирования Guess.js, я стал присматриваться к глубокому обучению: к рекуррентным нейронным сетям (RNN), в частности, LSTM из-за их «необоснованной эффективности» в той области, где работает Guess.js. В то же время я начал играться с свёрточными нейросетями (CNN), которые тоже часто используются для временных рядов. CNN обычно используют для классификации, распознавания и обнаружения изображений.


Управление MK.js с помощью TensorFlow.js

Исходный код для этой статьи и МК.js лежат у меня на GitHub. Я не выложил набор данных для обучения, но можете собрать свои собственные и обучить модель, как описано ниже!
Читать дальше →

Я написал кроссбраузерное расширение для вкладок, но вы так не делайте

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

Длинное, нудное вступление с претензией на манию величия


Однажды я обнаружил, что меня, как всегда, что-то сильно не устраивает в этом мире. А именно, введя какой-то длинный запрос в поисковике на настольном компьютере и затем перейдя на планшет, я никак не мог вспомнить дословно текст запроса, чтобы выйти ровно на те же результаты. А начиналось все так хорошо. Я увидел в поисковике ссылку на ответ на свой вопрос и понял, что она сулит долгое чтиво. Тогда я выключил комп и плюхнулся на диван с планшетом с мыслью о том, что вот сейчас я просто заново вобью все это в поисковик, открою ту ссылку теперь уже на планшете и лежа, спокойно, в более удобной позе прочитаю… Но не тут-то было. Какие-то мелкие разночтения в тексте — и моей ссылки уже нет в выдаче поисковика. Воспроизвести саму ссылку — тоже не вариант: она слишком длинная. Ломая голову над вариантами текста запроса, я чуть было в ярости не сломал планшет. Черт побери, пришлось вставать, снова включать компьютер, запускать браузер и копаться в истории, чтобы найти точный текст своего запроса.


Расширение, установленное в Chrome и Firefox
Читать дальше →

Как не нужно использовать Node.js Stream API

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

В интернете опять кто-то не прав – во вчерашнем Node Weekly была ссылка на пост в котором автор пытается измерить и сравнить с "аналогами" производительность Stream API в Node.js. Грусть вызывает, то как автор работает со стримами и какие он выводы он пытается на основе этого сделать:


...this worked pretty well on smaller files, but once I got to the biggest file, the same error happened. Although Node.js was streaming the inputs and outputs, it still attempted to hold the whole file in memory while performing the operations

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

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

100 видео-лекций по программированию

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

image


Товарищи инженеры, уже четвертый год пошел, как я взялся преподавать в Киевском политехническом институте. За это время у меня накопилось огромное количество примеров кода и материалов, примерно на 90 лекций. Должен сказать, что за весь период своей профессиональной деятельности (а это 24 года почти ежедневного написания кода), я никогда не подымал свой уровень программирования, как за последние годы, работая со студентами. Если раньше мне казалось, что написать кратко, сложно и внушительно — это верх мастерства, то теперь я осознал, что мой код должны понимать студенты после минимальных объяснений, иначе он никуда не годится. Я пришел к выводу, что способность эту можно и нужно распространить не только на обучающий код, но и на весь рабочий код. Более того, обучающий код не должен существенно отличаться от рабочего кода, потому, что мы учим будущих инженеров делать настоящие системы, а не учебные. А после многочисленных просьб, я решил записывать все лекции в виде скринкастов, которые сразу после завершения лекции отправляются на ютюб. За этот учебный год я планирую записать 100 лекций, из которых уже опубликованы 23, готовы материалы еще для 67 лекций и новых 10 лекций еще в процессе подготовки.

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

5+1 случай, когда спецификация REST API играет огромную роль

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

В этой статье речь пойдёт о написании и поддержке полезной и актуальной спецификации для REST API-проекта, которая позволит сэкономить много лишнего кода, а также серьёзно улучшить целостность, надежность и прозрачность прокта в целом.


Что такое RESTful API?



Это миф.


Серьёзно, если вы думаете, что в вашем проекте RESTful API, вы почти наверняка ошибаетесь. Идея RESTful — в построении API, который во всём соответствовал бы архитектурным правилам и ограничениям, описанным стилем REST, однако в реальных условиях это оказывается почти невозможно.

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

API ReportingObserver: взгляд на код веб-страниц с новой точки зрения

Время на прочтение3 мин
Охват и читатели5.9K
Материал, перевод которого мы публикуем сегодня, посвящён API ReportingObserver — механизму, который позволяет узнать об использовании устаревших возможностей, и о том, что в работу кода страницы вмешивается браузер. ReportingObserver является частью этой спецификации W3C.

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

EME? CDM? DRM? CENC? IDK! Что нужно, чтобы сделать собственный видеоплеер в браузере

Время на прочтение12 мин
Охват и читатели12K
Что означают все эти аббревиатуры? Что нужно, чтобы разработать open source-плеер для просмотра видео с Amazon, Sky и других платформ и смотреть видео от любого провайдера? О том, как происходит процесс потоковой передачи видео, Себастьян Голаш (Sebastian Golasch) рассказал на конференции HolyJS 2018 Piter. Под катом — видео и перевод его доклада.



В данный момент Себастьян (Sebastian Golasch) занимает должность разработчика в Deutsche Telekom. Достаточно долго он работал с Java и PHP, а затем переключился на JS, Python и Rust. Последние семь лет трудится над фирменной платформой умного дома Qivicon.

Самое краткое введение в Reactive Programming

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

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


Возьмем такую задачу:
Есть некий сервис c REST API и endpointом /people. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' } и создают набор сущностей посредством API(по-английски, это называется batch-операция).


Давайте решим эту задачу в императивном стиле:


const request = require('superagent')

function batchCreate(bodies) {
  const calls = []
  for (let body of bodies) {
    calls.push(
      request
        .post('/people')
        .send(body)
        .then(r => r.status)
    )
  }
  return Promise.all(calls)
}

Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:


  1. Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
  2. Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
Читать дальше →

ES2018 — метод промисов finally

Время на прочтение3 мин
Охват и читатели16K
Автор заметки, перевод которой мы сегодня публикуем, говорит, что с трудом удержался от того, чтобы не назвать её «Finally — возможность, которую все ждали», или как-то пошутить на эту тему. В итоге он решил обойтись без шуток и просто рассказать о по-настоящему важной и полезной возможности объектов Promise.

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

typeof Everything и утиные недоразумения

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

image


Каждый, использующий в каких бы то ни было целях замечательный JavaScript, задавался вопросом: мол а почему typeof null — это "object"? typeof от функции возвращает "function", но от Array"object"? а где же getClass у ваших хваленых классов? И хотя на большую часть легко и непринужденно отвечает спецификация или исторические факты, я бы хотел немного подвести черту… в большей степени для самого себя.


Если, читатель, тебе в твоих задачах тоже недостаточно typeof да instanceof и хочется какой-то конкретики, а не "object"ы, то дальше может быть полезно. Ах да, про утки: они будут тоже, только немного неправильные.

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

10 трюков для продвинутого дашбординга в Splunk. Часть 2

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


Добрый день!

Сегодня мы продолжаем делиться секретами продвинутых дашбордов в Splunk. В этой статье мы разберем несколько кейсов использования JavaScript для того, чтобы сделать дашборды более удобными, читабельными и интерактивными. Подробности читайте под катом.
Читать дальше →

Используем Node.js для работы с большими файлами и наборами raw-данных

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


Этот пост — перевод оригинальной статьи Пейдж Нидринхауз, full-stack software engineer. Ее основная специальность — JavaScript, но Пейдж изучает и другие языки и фреймворки. А полученным опытом делится со своими читателями. К слову, статья будет интересна начинающим разработчикам.

Недавно я столкнулась с задачей, которая меня заинтересовала, — нужно было извлечь определенные данные из огромного объема неструктурированных файлов Федеральной избирательной комиссии США. Я не слишком много работала с raw-данными, поэтому решила принять вызов и взяться за эту задачу. В качестве инструмента для ее решения я выбрала Node.js.
Читать дальше →

Работа с данными при построении API на основе GraphQL

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

Преамбула


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


GraphQL замечательный инструмент. Думаю, о его преимуществах уже знают и понимают многие. Тем не менее, есть некоторые нюансы, которые следует знать, когда вы строите свои API на основе GraphQL.


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

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

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

Каррирование функций в JavaScript

Время на прочтение8 мин
Охват и читатели100K
Функциональное программирование — это такой стиль разработки программ, в котором широко используются некоторые специфические возможности по работе с функциями. Речь идёт, в частности, о передаче функций другим функциям в качестве аргументов и о возврате функций из других функций. К функциональному стилю программирования относится и понятие «чистые функции». Выходные данные чистых функций зависят только от входных, они, при выполнении, не влияют на состояние программы.

Принципы функционального программирования поддерживает множество языков. Среди них можно отметить JavaScript, Haskell, Clojure, Erlang. Использование механизмов функционального программирование подразумевает знание, кроме прочих, таких концепций, как чистые функции, каррирование функций, функции высшего порядка.



Материал, перевод которого мы сегодня публикуем, посвящён каррированию. Мы поговорим о том, как работает каррирование, и о том, как знание этого механизма может пригодиться JS-разработчику.
Читать дальше →

Паттерны проектирования в JavaScript

Время на прочтение11 мин
Охват и читатели210K
Автор материала, перевод которого мы публикуем, говорит, что, начиная проект, к написанию кода приступают не сразу. В первую очередь определяют цель и границы проекта, затем — выявляют те возможности, которыми он должен обладать. Уже после этого либо сразу пишут код, либо, если речь идёт о достаточно сложном проекте, подбирают подходящие паттерны проектирования, которые ложатся в его основу. Этот материал посвящён паттернам проектирования в JavaScript. Он рассчитан, преимущественно, на начинающих разработчиков.


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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №335 (15 — 21 октября 2018)

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


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

Webpack 4 и разделение конфигурационного файла на модули

Время на прочтение3 мин
Охват и читатели19K
Привет, Хабр! Сегодня я расскажу вам о Webpack 4 с разделением кода на отдельные модули, а также о интересных решениях, которые помогут вам быстрее собрать сборку на webpack 4. В конце, я предоставлю свою базовую сборку на webpack c самыми необходимыми инструментами, которую вы в последствие сможете расширить. Данная сборка вам поможет понять данный материал, а также возможно поможет быстрее написать свою реализацию и быстрее решить возможные проблемы.
Читать дальше →

Локальный NPM репозиторий за 5 минут со своими пакетами и кэширование

Время на прочтение2 мин
Охват и читатели66K
Доброго времени суток!

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

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

Поиск бесплатных, частных npm репозиториев завел в тупик, а использование частных репозиториев на npm требует платы (а это не наш менталитет).

Поскольку в офисе есть сервер, который работает всегда(почти), было решено развернуть локальный npm.

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

Chrome 70 поддерживает [список фич] и AV1 – почему поддержка этого кодека так важна?

Время на прочтение6 мин
Охват и читатели22K
69-я версия Chrome была большииииим обновлением, т.к. показала новый интерфейс для десктопной и мобильной версий. Chrome 70 не столь радикален, но его новые фичи весьма важны. Мы сделали адаптированный перевод и добавили материал про самое, на наш взгляд, важное в новой версии – поддержку кодека AV1, который задает новую планку производительности. Пока что кодек будет использоваться только при воспроизведении видео, но мы надеемся, что он доберется и до WebRTC – это даст нам возможность использовать передовое кодирование в видеозвонках и конференциях (например, используя наш Web SDK).


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

Frontend-дизайн

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

Наш курс «Разработчик JavaScript» в целом посвящён фронту и инструментам для него, но, как оказалось, не все представляют, что же скрывается за фразой фронтэнд-дизайн. Мы нашли небольшой интересный материал, где автор пытается разъяснить, что же скрывается за этим.

Поехали.



Где-то между дизайном — миром персон, пикселей и полировки — и инжинирингом — миром логики, циклов и линукса — лежит frontend-дизайн. Frontend-дизайн включает в себя работу с HTML, CSS и презентационным кодом JavaScript для создания пользовательского интерфейса.

Frontend-дизайнеры (которые также могут называться UI-разработчиками, client-side разработчиками, дизайн-инженерами, frontend-архитекторами, дизайнерами/разработчиками, прототипистами, единорогами или Бо Джексонами) живут в своего рода чистилище между мирами:

  • Они понимают принципы и лучшие практики UX, но не тратят время на проведение исследований, создание флоу и планирование сценариев;
  • Они обладают эстетическим вкусом, но не тратят время на поиски комбинаций шрифтов, сравнение цветовых палитр, создание иллюстраций и иконок;
  • Они пишут на JavaScript, но не тратят время на написание кода прикладного уровня, подключение middleware и отладку;
  • Они понимают важность backend-разработки, но не тратят время на написание backend-логики, запуск серверов, нагрузочное тестирование и тд.

Конечно, у всех по-разному. Некоторые занимаются frontend-дизайном в дополнении к своей основной должности. Официально они могут считаться разработчиками (что делает их “full-stuck разработчиками”, как сейчас принято говорить), а могут быть и дизайнерами (что делаем их “full-stuck дизайнерами”, наверное?). Иногда, особенно когда компании начинают разрастаться, frontend-дизайном занимаются люди, которые неловко застряли в том или ином департаменте.
Читать дальше →