Обновить
256K+

JavaScript *

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

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

Интеллектуальные чат-боты на ChatScript: практика разработки и интеграция с JavaScript

Время на прочтение12 мин
Охват и читатели8.9K
Сегодня публикуем вторую часть перевода материала, посвящённого разработке чат-ботов с использованием ChatScript и JavaScript. В прошлый раз мы занимались, в основном, теорией. А именно, говорили о сценариях использования чат-ботов и о внутреннем устройстве CS-приложений. Сегодня будет больше практики. А именно, мы обсудим рабочее окружение ChatScript, поговорим об интеграции CS и JS, обсудим подходы к решению проблем, характерных для чат-ботов.

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

Как оживить картинку в браузере. Многопроходный рендеринг в WebGL

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

Каждый, кто сталкивался с трехмерной графикой, рано или поздно открывал документацию на методы отрисовки, которые предполагают несколько проходов рендерера. Такие методы позволяют дополнить картинку красивыми эффектами, вроде свечения ярких пятен (Glow), Ambient occlusion, эффекта глубины резкости.


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


Чтобы разобраться, как правильно готовить WebGL, мы обратились к специалистам компании Align Technology. Они решили создать специальный менеджер для управления всем этим зоопарком из разных текстур, которым было бы удобно пользоваться. Что из этого получилось — будет под катом. Важно, что неподготовленного читателя, который никогда до этого не сталкивался с необходимостью организации многопроходного рендеринга, статья может показаться непонятной. Задача довольно специфическая, но и безумно интересная.


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

WebRTC: как два браузера договариваются о голосовых и видеозвонках

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

Спойлер: никак. За них это делает разработчик.

Когда много лет назад начали убивать Flash, пострадали не только браузерные игры. Flash традиционно была сильна в голосовых и видеозвонках: прямой доступ к микрофону, камере, динамикам, возможность работать с UDP-пакетами. В HTML5 заменой стала технология WebRTC. Та самая, которая несколько месяцев назад наконец-то приземлилась в Safari и Edge. Теперь можно звонить с веб-страницы, открытой на iPhone, на другую веб-страницу, например, открытую в Firefox Quantum на линуксе.

Одна из «фишек» WebRTC, которой не было у Flash — это возможность P2P-соединений между браузерами. Но чтобы peer-to-peer работал, программисту придется помучиться. О том, как браузеры договариваются куда слать UDP-пакеты, и что при этом должен сделать разработчик — под катом.
Читать дальше →

Непоправимые последствия HolyJS 2017 Moscow

Время на прочтение8 мин
Охват и читатели7.3K
Ну ладно, заголовок жёлтый, признаюсь. HolyJS 2017 Moscow отгремела уже неделю как, а я только сподобился осмыслить произошедшее. Ах да, меня зовут Женя, я работаю в Wrike, часто выступаю на фронтенд-конференциях, и, да, я — член программного комитета одной из них. С HolyJS я с первого дня, сначала как спикер, а потом как-то раз меня попросили помочь с модерацией докладов, вот оно и завертелось. Поэтому осмысление получится скорее в формате отчёта-ретроспективы, а не отзыва участника (например читайте прошлогоднюю статью Дарьи Пушкарской, рекомендую). Поэтому описывать доклады дословно не буду, лучше посмотрите видео. Но хотелось бы рассказать что происходит за кулисами большой конференции, что прошло хорошо, что можно было сделать лучше, как мы все устали заберите нас отсюда.

image
ПК в полном составе. Фотография из vk.com/holyjs
Как это было...

Дайджест свежих материалов из мира фронтенда за последнюю неделю №293 (11 — 17 декабря 2017)

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


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

Задачки с ZeroNights 2017: стань королем капчи

Время на прочтение8 мин
Охват и читатели6.2K
В этом году на ИБ-конференции ZeroNights отдел тестирования информационной безопасности приложений СберТеха предложил участникам ZeroNights поискать уязвимости в различных реализациях капчи. Всего мы дали 11 примеров с логическими или программными ошибками, которые позволяют решать множество капч за малое время. В каждом раунде от участников требовалось «решить» 20 капч за 10 секунд и при этом набрать нужный процент правильных ответов.

Мы предлагаем вам тоже поучаствовать. В посте мы разместим ссылки на все задания, составленные fryday, а под ними в спойлерах — write-up участника Liro с правильными ответами.


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

Что говорили о JavaScript в 1995-м

Время на прочтение6 мин
Охват и читатели14K
Уже много лет JavaScript — самый популярный язык программирования в мире. С этим, конечно, можно и поспорить, однако, совершенно определённо можно говорить о том, что этот язык прошёл долгий путь со дня своего рождения в 1995-м.

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

Мониторинг ошибок на страницах сайта с помощью Яндекс.Метрики

Время на прочтение2 мин
Охват и читатели9.4K
Сегодня я наткнулся на интересный пост о мониторинге ошибок на сайте. У описанного метода есть недостаток — он применим только для React.
После прочтения поста я сразу же вспомнил про вебвизор. Если бы мне позвонил человек, который ой, я куда-то нажала, оно выскочило нашел ошибку на сайте, я бы очень обрадовался возможности посмотреть, что он сделал, а не задавать человеку кучу вопросов, тратя его и свое время.

Оказалось, что все настолько просто, что реализация задумки заняла у меня всего минуту.
Читать дальше →

Как из UML диаграммы получить каркас Vue.js приложения

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

Здравствуйте, уважаемые Хабражители. Представляю вашему вниманию перевод статьи From Draw.io to Vue.js app автора Francesco Zuppichini.


Это моя первая публикация на Хабре и я решил начать с перевода статьи об одном классном инструменте, который позволяет сгенерировать Vue.js приложение из UML диаграммы.
Удивлены? Я был просто восхищен, когда наткнулся на него.


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


Кому интересно — прошу под кат.

Анонс HolyJS 2018 Piter: как 1988-й сказывается на 2018-м

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


— До Нового года ещё шесть часов, — отметил замполит, — а вы уже пьяные, как свиньи.
— Жизнь, товарищ лейтенант, обгоняет мечту, — сказал Фидель.
Сергей Довлатов «Зона»


У нас в преддверии Нового года жизнь тоже обгоняет мечту, но по-другому. Мы ещё даже не успели рассказать вам, как на этой неделе прошла HolyJS 2017 Moscow, а уже пора рассказывать, чего ждать 19-20 мая в Петербурге!

Пожалуй, это соответствует скоростям, на которых живёт сам JavaScript-мир: не успеет выйти второй Angular, как уже анонсируют четвёртый. И благодаря этому с JS скучать не приходится. Но когда сломя голову несёшься в будущее, легко забыть о прошлом и упустить из вида общую картину. Поэтому в анонсе мы оглянулись на историю технологий и на предыдущие HolyJS, чтобы увидеть всё в перспективе — начиная аж с 1988-го.
Читать дальше →

Ошибка на сайте… Что делать?

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



Сегодня мы хотим поделиться с вами переводом статьи программиста Дэвида Гилбертсона, в которой он рассказывает о разработанной им экспериментальной системе, позволяющей отслеживать и воспроизводить ошибки в веб-проектах, написанных на React. Полагаем, подобный подход можно перенести и в другие среды, но обо всём по порядку.
Читать дальше →

Понимаем и работаем с gulp

Время на прочтение4 мин
Охват и читатели67K
Всем привет. Если вы связаны хоть как-то с JS, вы наверняка слышали о таком приложении как gulp. А возможно даже и использовали. По своему опыту могу сказать, что «въехать» в то, как с ним работать бывает сложно, хотя ключ к пониманию лежит на поверхности. Поэтому и публикую этот материал, надеясь, что он станет полезным.

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

Интеллектуальные чат-боты на ChatScript: основы

Время на прочтение11 мин
Охват и читатели11K
Чат-боты, поддерживающие общение с человеком на естественном языке, весьма популярны и востребованы. Сегодня мы хотим поделиться с вами первой частью перевода материала о разработке чат-ботов с помощью ChatScript (CS), написанного сотрудником WebbyLab на основе опыта, приобретённого им в ходе работы над одним из недавних проектов компании. Здесь, в частности, речь пойдёт об основах работы с CS, рассмотренных с точки зрения программиста-практика. ChatScript хорош тем, что на нём можно сравнительно просто разрабатывать масштабные системы с возможностями искусственного интеллекта, и тем, что его несложно интегрировать в проекты, написанные на JavaScript.

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

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

Опубликованы результаты опроса по использованию javascript-технологий «The state of JavaScript 2017»

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


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


Сегодня у нас появились ответы на некоторые из этих вопросов. Сегодня на сайте https://stateofjs.com опубликован новый отчет с результатами опроса двадцати тысяч разработчиков. Лучше всего сразу смотреть оригинал, но если времени мало, то в этой статье будут освещены ключевые моменты.

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

Основы TypeScript, необходимые для разработки Angular-приложений

Время на прочтение7 мин
Охват и читатели67K
TypeScript — это надмножество JavaScript, то есть, любой код на JS является правильным с точки зрения TypeScript. Однако, TypeScript обладает некоторыми дополнительными возможностями, которые не входят в JavaScript. Среди них — строгая типизация (то есть, указание типа переменной при её объявлении, что позволяет сделать поведение кода более предсказуемым и упростить отладку), механизмы объектно-ориентированного программирования и многое другое. Браузеры не поддерживают TypeScript напрямую, поэтому код на TS надо транспилировать в JavaScript.

image

TypeScript применяется для разработки веб-приложений с использованием популярного фреймворка Angular. В этом материале мы рассмотрим основы TypeScript, необходимые для того, чтобы приступить к освоению Angular и к работе с ним.
Читать дальше →

Parcel — очень быстрый бандлер, не требующий настройки

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


Для чего


Parcel — маленький и быстрый бандлер, позиционируется как решение для маленьких проектов. С момента первого релиза (7 дней назад) уже собрал 8725 звездочек на гитхабе. Согласно официальной документации имеет следующие плюсы:


Быстрая сборка


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


Собирает все ваши ассеты


Из коробки имеется поддержка ES6, TypeScript, CoffeeScript, HTML, SCSS, Stylus, raw-файлов. Плагины не требуются.


Автоматические преобразования


Весь код автоматически проходит через Babel, PostCSS, PostHTML — подхватываются при необходимости из node_modules.


Разделение кода без лишней конфигурации


Используя динамический import(), Parcel разделяет бандл для возможности быстрой начальной загрузки точки входа в приложение


Горячая перезагрузка


Типичный хот-релоад без конфигурации — сохраняете изменения и они автоматически применяются в браузере.


Дружелюбный вывод ошибок


При ошибке подсвечивается кусок кода, в котором она произошла.

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

Как и зачем определять голосовую почту

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

«Абонент не абонент — пожалуйста, оставьте ваше сообщение после звукового сигнала!» — мы слышим этот автоматический ответ множество раз и уже привыкли вешать трубку, точно зная, что никто и никогда не проверяет «голосовую почту». Я, как и все опрошенные знакомые, без гугла даже не смогу ее проверить! Зачем операторам эта странная штука? А чтобы брать деньги за звонки, которые иначе будут бесплатными. Причем не только с обычных абонентов, но и с компаний, которые используют автоматику для звонков. Представьте себе магазин, который подтверждает заказы не колл-центром через полчаса, а роботом через десять секунд. И часть этих звонков «уходит» в голосовую почту, тратя деньги компании и ломая статистику. Под катом — детективная история про early media, big data, machine learning и TensorFlow.

React, Drag&Drop и performance

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


В данной статье мы расскажем про свой опыт реализации интерфейса редактирования расписания занятий. Расскажем о проблемах, с которыми мы столкнулись и о возможных путях решения.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №292 (4 — 10 декабря 2017)

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


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

Angular 5 (или 4): даунгрейдим компонент для использования в AngularJS

Время на прочтение2 мин
Охват и читатели5.2K
На днях возникла весьма необычная задача: понадобилось узнать, как компоненты из Angular использовать в AngularJS. Вроде и задача на пять минут, т.к. интернет пестрит схожими примерами, да и в документации вроде бы что-то есть. Но на деле оказалось, что не все так солнечно и решение вопроса заняло куда больше времени. Вобщем, счастливым саппортерам легаси кода и просто angular-извращенцам посвящается
Читать дальше →