Обновить
256K+

JavaScript *

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

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

Как и зачем скрывать телефонные номера

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

Мало известный за пределами телеком-тусовки факт: когда вы звоните куда-нибудь со своего телефона, ваш номер, который отображается для входящего звонка – это просто произвольная текстовая строка, которую подставил ваш оператор сотовой связи. И если между двумя устройствами есть что-нибудь интересное, к примеру, машина с Asterisk или облако с Voximplant, то эту строку можно поменять на любую другую. Ситуация, когда при звонке вместо номера звонящего человека «рисуется» совсем другой номер называется маскировка телеком-данных (Phone Number Masking). И этот прием широко используется для решения ряда интересных задач. Читайте о них под катом.

Дели — сокращай, или как мы делали мобильный 2ГИС Онлайн

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


Мобильный веб развивается семимильными шагами. На дворе 2017 год. Мобильный трафик превысил десктопный — больше половины всех страниц теперь открываются через телефоны или планшеты. В 2015 году Google объявил о предпочтении mobile-friendly сайтов при ранжировании выдачи, а в 2016 это сделал Яндекс. Юзеры проводят в интернете 60-70 часов в месяц с мобильных устройств и не готовы идти на компромисс и пользоваться неадаптивными сайтами. И 2ГИС — не исключение. За 2 года рост мобильного трафика 2ГИС Онлайн составил 74%, а месячная аудитория превысила 6 миллионов человек.


17 апреля мы зарелизили новый мобильный онлайн («Монлайн») — одностраничное приложение, доступное по адресу m.2gis.ru. Приложение запущено в двух городах: Уфе и Новосибирске, а в ближайшее время планируется релиз на всю Россию.

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

npm link на стероидах

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

npm link + steroids = npmy


Думаю многие из вас уже сталкивались с локальной разработкой npm-пакетов. Обычно никаких трудностей это не вызывает: создаём папку, запускаем npm init, пишем тесты, дальше используем npm link (либо просто симлинк) и «шлифуем» api до полной готовности.


Звучит просто… только если вы не используете Babel, Rollup, Webpack и т.п. Иными словами, всё хорошо, пока проект не нужно собрать перед публикацией, да ещё с модификацией исходного кода. Кроме того, одновременно разрабатываемых пакетов может быть больше чем один, что в разы усложняет «жизнь». Чтобы исправить эту ситуацию, пришлось сделать маленькую утилиту npmy, под катом небольшая статья с описанием тех. процесса работы и пример использования.

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

Как создать виртуальную машину в Google Таблицах

Время на прочтение3 мин
Охват и читатели10K
Автор материала рассказывает, как с помощью Google-таблиц создать виртуальную машину, которая генерирует числа Фибоначчи.

Недавно я заметил, что в Google Документах есть достаточно полнофункциональная система скриптов под названием Apps Script. Она позволяет вам писать на JavaScript некоторые довольно полезные вещи:

  • Запускать код в ответ на такие события, как открытие документов или изменение ячеек
  • Создавать пользовательские функции таблиц для формул в Google Таблицах
  • Использовать такие сервисы, как Google Переводчик для перевода текста или Gmail для отправки электронной почты
  • Добавлять новые элементы меню в интерфейс Google Документов с помощью своих пользовательских функций

Естественно, по этой причине мне пришлось создать что-нибудь интересное. Вот, смотрите: виртуальная машина в Google Таблицах, генерирующая числа Фибоначчи!

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

Звонки между браузерами: подводные камни WebRTC

Время на прочтение3 мин
Охват и читатели16K
WebRTC, доступное в современных браузерах через JavaScript API, захватывает голос и видео, передает их по сети и воспроизводит в другом браузере. Еще оно умеет Peer-to-Peer между браузерами, Screen Sharing, передачу данных UDP-пакетами и подстройку битрейта под ширину канала. Очень хорошая технология. И Skype for Web на ней можно собрать, и превратить джойстик в световой меч для игры на ноутбуке, и позвонить с сотового на веб-страницу. Очень хорошая технология. Но сырая.

В Voximplant мы уже много лет развиваем множество SDK для звонков в наше облако: Android, iOS, Unity, React Native. Почетное место занимает Web SDK, использующий как раз WebRTC. С помощью него CRM принимают звонки «на веб страницу», работают кнопки «позвоните нам с веб сайта» и видео консультации с врачами. За годы мы набили множество шишек в использовании WebRTC, и под катом я кратко пройдусь по основным моментам, которые вас не обрадуют, если вы захотите использовать эту замечательную технологию.

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

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

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

Реверс-инжиниринг одной строчки JavaScript

Время на прочтение10 мин
Охват и читатели48K
Несколько месяцев назад я получил от друга такое письмо:



Тема: Можешь объяснить мне эту одну строчку кода?

Текст: Считай меня тупым, но… я не понимаю её и буду благодарен, если растолкуешь подробно. Это трассировщик лучей в 128 символах. Мне кажется, он восхитительный.

<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>



Эта строчка JavaScript отрисует анимацию, которая показана на изображении под катом. В браузере она запускается здесь. Скрипт написан автором www.p01.org, где вы можете найти эту и много других классных демок.

ES8 вышел и вот его основные новые возможности

Время на прочтение5 мин
Охват и читатели100K
Новые фичи восьмой редакции EcmaScript.

image

EcmaScript 8 или EcmaScript 2017 был официально выпущен комитетом TC39 в конце июня. Кажется, мы много говорили о EcmaScript в прошлом году и это было не просто так. На данный момент стандартом является выпуск новой спецификации раз в год. ES6 был опубликован в 2015, а ES7 в 2016, но кто-нибудь помнит, когда вышел ES5? Это было в 2009 году, до волшебного взлета JavaScript.

Дайджест свежих материалов из мира фронтенда за последнюю неделю №270 (3 — 9 июля 2017)

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

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

Рефакторинг кода в обеденный перерыв: знакомство с сodemod-скриптами

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


Думаю, что рефакторинг проекта – тема, близкая каждому разработчику. Зачастую мы сталкиваемся с проблемами, когда нам перестает хватать средств IDE и регулярных выражений, и тогда на помощь приходят средства вроде тех, что описаны в этом посте. Codemod скрипты – это очень мощный инструмент. После его освоения станет ясно, что ваш рефакторинг уже никогда уже не будет прежним. Поэтому я перевел этот пост для нашего хабраблога. Желаю приятного прочтения.


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


За последние годы JavaScript изменился до неузнаваемости. Развитие этого языка привело к тому, что была изменена даже простейшая задача по объявлению переменных. В ES6 появились let и const, стрелочные функции и множество других новшеств, каждое из которых приносит пользу разработчикам.


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

Как повторить сервис anyroom.io в несколько строк JS и без бэкенда

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


Месяц назад на Hacker News в топ вышел пост про сервис AnyRoom: простенький бэкенд на Go, который позволяет создавать телефонные конференции. Рейтинг больше ста, обсуждения в комментах, Исходный код на github, подписки по 50 долларов в месяц — в общем, всё как у взрослых. После первого удивления «неужели это кому-то нужно?!?» я немного погуглил «голосовая конференция без регистраций и sms недорого», подивился дороговизне приложений и понял что таки да, нужно. А на Voximplant такую штуку можно собрать за полчаса и десяток строк JavaScript-кода. Кто хочет создать стартап и попиариться на Hacker News? Под катом рассказываю, как.

Конкурс по программированию: JSDash

Время на прочтение6 мин
Охват и читатели21K
UPDATE: Конкурс завершён. Итоги.

Компания Hola объявляет долгожданный летний конкурс по программированию! Победителей ожидают призы:

  1. Первое место: 3000 USD.
  2. Второе место: 2000 USD.
  3. Третье место: 1000 USD.
  4. Если Вы отправите кому-то ссылку на этот конкурс, поставив наш адрес в CC, и этот человек займёт призовое место, Вы получите половину суммы приза (разумеется, не в ущерб награде победителя). За одного победителя такую награду может получить только один человек — тот, кто отправил ссылку первым.

Авторы интересных решений будут приглашены на собеседования.



Правила



Условия конкурса на английском языке размещены на GitHub. Ниже — перевод на русский язык.

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

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

Создание React VR-приложения, работающего в реальном времени

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


Библиотека React VR позволяет писать для веба приложения виртуальной реальности с использованием JavaScript и React поверх WebVR API. Эта спецификация поддерживается последними (в некоторых случаях — экспериментальными) версиями браузеров Chrome, Firefox и Edge. И для этого вам не нужны очки VR.


WebVR Experiments — это сайт-витрина, демонстрирующий возможности WebVR. Моё внимание привлёк проект The Musical Forest, созданный замечательным человеком из Google Creative Lab, который использовал A-Frame, веб-фреймворк для WebVR, разработанный командой Mozilla VR.

Как Pony Express удается вам доставлять

Время на прочтение4 мин
Охват и читатели9.4K
Чего хочет любой клиент от логистического оператора? Конечно, чтобы всё происходило быстро, качественно и желательно, по максимуму, без его — клиента — непосредственного участия. Чтобы можно было заплатить свои кровные, а дальше оно уж как-нибудь само. Но в некоторых случаях, чтобы «оно само», клиенту тоже нужно немного пошевелиться. Как быть компании, если он не торопится? Под катом — опыт Pony Express.


Ненормальный GraphQL в Electron или как я писал десктопный клиент для Tinder

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

Предыстория


фрустрация и решение


Привет, Хабр. В начале зимы 2016 года я снова стал одинок. Спустя какое-то время я решил завести себе профиль в Tinder. Всё бы ничего, но постепенно стала накапливаться усталость из-за невозможности нормально печатать на физической клавиатуре. Мне виделось несколько решений этой проблемы:


  • Смириться и продолжать использовать официальное приложение для смартфона
  • Использовать BlueStacks с официальным приложением на Android
  • Использовать существующие клиенты для десктопа (Tinder++)
  • Написать свой

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

Что из этого вышло

HTTP/2 Server Push не так прост, как я думал

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


Фото найдено на просторах Википедии


Привет! Меня зовут Макс Матюхин, я работаю PHP-программистом в Badoo. Мы постоянно изучаем различные возможности по ускорению работы нашего приложения и самыми интересными находками, конечно, делимся в нашем блоге на Хабре.


Вторая версия протокола HTTP обещает нам много улучшений, и одной из любопытных особенностей HTTP/2 является поддержка push. Теоретически эта возможность позволяет ускорить загрузку приложения. Недавно Jake Archibald написал большую статью, в которой проанализировал особенности реализации push в различных браузерах, и оказалось, что таких особенностей довольно много.


Мы уже публиковали пост, описывающий базовый функционал HTTP/2 Server Push, а этот будет хорошим дополнением, рассказывающим, как в реальности обстоят дела с поддержкой HTTP/2 Server Push в различных браузерах.

No place to hide — как сервисы агрессивного маркетинга преследуют вас

Время на прочтение7 мин
Охват и читатели27K
Интернет уже довольно давно стал некоторым подобием Дикого Запада: каждый отвечает сам за себя, а некоторые вещи из сумеречных областей морали, вроде сбора персональных данных, регулируются только тогда, когда это кому-то выгодно (да-да, мы все знаем, какие законы стоит вспомнить тут).

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

image

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №267 (12 — 18 июня 2017)

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

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

Рисование толстых линий в WebGL

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

Готовые примеры


Примеры подготовлены на базе движка OpenGlobus.
 
Пример 1
Пример 2


Вступление


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