Обновить
128K+

JavaScript *

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

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

Удивительная история document.write

Время на прочтение3 мин
Охват и читатели50K
Метод document.write — один из самых странных методов. Он вставляет HTML-код на страницу сразу после себя. Точнее говоря, сразу после тега <script>, внутри которого он расположен. И только в том случае, если документ еще не был загружен полностью. А если был? Тогда страница очищается и заменяется на, что было указано.

Можно вставить строку, которая явно сломает остальную страницу:

document.write('<plaintext>')

Или можно поиграть в русскую рулетку:

if (Math.random() > 0.9)
  document.write('<!--')
Читать дальше →

Улучшение путей взаимодействия пользователя (user flow) через переходы по странице

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

Пост является переводом статьи "Improving User Flow Through Page Transitions" со Smashing Magazine о создании плавных переходов. Автор этой статьи, Луиджи Де Роза, является фронт-энд разработчиком в EPIC. Далее повествование будет идти от лица автора статьи. Приятного чтения.

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

Ко дню рождения Далай-ламы

Время на прочтение3 мин
Охват и читатели6.2K
Вчера я шёл куда-то по городу и вдруг задумался, как можно реализовать на JavaScript деление строки по символам при помощи регулярного выражения и с полным учётом Юникода.

После перехода от Perl к JavaScript много лет тому назад, я всё испытывал за свой новый язык некоторый комплекс неполноценности из-за недостаточной поддержки Юникода. За всё то время, пока JavaScript совершал в этом направлении свой большой скачок (при переходе от ES5 к ES6), у меня в закладках осталось несколько хороших статей.

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
JavaScript has a Unicode problem
Unicode-aware regular expressions in ECMAScript 6
ES6 Strings (and Unicode, ) in Depth

В последней из них предлагался рецепт разбиения строки на символы с учётом Юникода при помощи нового оператора ...
Читать дальше →

Redux-Redents — (еще) один модуль для работы с серверными данными из React-Redux приложений.  

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

React и Redux, в последнее время одни из самых популярных buzz-words в мире фронтенда. Поэтому когда мне потребовалось сделать веб-приложение, которое бы отображало данные, полученные с сервера, а также позволяло бы ими манипулировать (создавать, удалять и изменять), я решил построить его на основе связки React и Redux. Множество getting-started руководств покрывают только функционал создания компонентов, action creators и reducers. Но как только дело касается обмена с сервером, начинаются сложности — растет количество необходимых action creator, редьюсеров. Причем они очень похожи друг на друга, с миниальными отличиями. В большинстве случаев — только в типе (имени) активности. После того, как я создал третий одинаковый набор креаторов и редьюсеров, то появилось желание что-то изменить. Так родилась идея реализации redux-redents.

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

CMYK алгоритм поиска замкнутого контура на двумерной матрице

Время на прочтение9 мин
Охват и читатели6.3K
Это история не столько про алгоритмы сколько про ассоциации. Именно ассоциация с каналами кодирования цветов и послужила причиной написания этой статьи.

image

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

Приглашаем в Одессу на WebCamp 2016! Море, отдых и любимые технологии

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


С 29 по 31 июля в Одессе уже в 7-й раз пройдет конференция WebCamp, которая посвящена технологиям веб-разработки, управлению проектами и развитию бизнеса. Традиционно, мероприятие состоит из нескольких направлений. В этом году это: Front-End, Python, PHP, DevOps, PM, BizDev.

WebCamp 2016 соберет более 600 участников со всей Украины и ближнего зарубежья. Конференция рассчитана на участников уровня Middle/Senior, где у каждого будет возможность обменяться опытом, поделиться своими идеями, отлично провести время с коллегами на афтерпати и отдохнуть у Черного моря.

Наша команда FlyElephant сейчас активно работает над финализацией программы конференции и у вас еще есть шанс присоединиться к нам. С докладами выступят представители таких компаний как: Microsoft, Wargaming, Looksery, Upwork, Provectus, Ciklum, DataArt, Zillion Whales, SoftServe, YouScan, WebbyLab, Coderiver, CartFresh, RevJet, FlyElephant, Netpeak, DataRobot, KeepSolid, VertaMedia и других.
Читать дальше →

Web scraping обновляющихся данных при помощи Node.js и PaaS

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

Это уже четвёртая статья в цикле про веб-скрейпинг при помощи Node.js:


  1. Web scraping при помощи Node.js
  2. Web scraping на Node.js и проблемные сайты
  3. Web scraping на Node.js и защита от ботов
  4. Web scraping обновляющихся данных при помощи Node.js

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


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


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

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

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

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


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

Делаем крутые Single Page Application на basis.js — часть 2

Время на прочтение12 мин
Охват и читатели26K
Всем доброго времени суток.
Продолжаю увлекательный цикл статей про создание мощных Single Page Application на basis.js.
В прошлый раз мы немного пофилософствовали, а так же познакомились с токеном — одной из важнейших вещей в basis.js.
Сегодня речь пойдет о работе с данными.
Читать дальше →

NW.js или Electron?

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


Если вы хотите создать собственное десктопное приложение на основе веб-технологий, то мир опенсорса предлагает два основных варианта: NW.js (ранее известный как node-webkit) и Electron (atom-shell). Выбор между ними не так очевиден, поэтому я решил создать сравнительную таблицу и остановиться на самых важных отличиях.
Читать дальше →

Нейронные сети на Javascript

Время на прочтение7 мин
Охват и читатели173K
image
Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

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

Как разравнять Пирамиду смерти

Время на прочтение5 мин
Охват и читатели18K
Настроить webpack по мануалу, запрограммировать ангуляр и даже послать json по ajax — кажись каждый может, но вот как взглянешь на сам код… В этом посте будет показана разница между нововведениями.

Итак вы открыли ноду и увидели, что почти все функции «из коробки» последним аргументом принимают колбэк.

var fs = require("fs");
fs.readdir(__dirname, function(error, files) {
    if (error) {
        console.error(error);
    } else {
        for (var i = 0, j = files.length; i < j; i++) {
            console.log(files[i]);
        }
    }
});


Пирамида смерти
далее

Управление вибрацией с помощью библиотеки jquery.vibrate.js

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

Сегодня я хотел бы написать о библиотеке jQuery Vibrate.js. Эта библиотека позволяет настроить вибрацию на мобильных устройствах, можно выбрать различные режимы с разной продолжительностью вибрации.
Вибрация в мобильном устройстве позволяет предупредить пользователя о сообщении или звонке, показать обратную отдачу в играх.
Для подключения библиотеки нужно использовать файл jquery.vibrate.min.js вкупе с jQuery.
Читать дальше →

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

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

Время на прочтение3 мин
Охват и читатели4.1K
В 2014 году по информации Smart Insights количество пользователей мобильных приложений превысило число пользователей десктопных. Одним из наиболее популярных инструментов для сбора статистики приложений на мобильных устройствах является Flurry. Инструмент полностью бесплатен, доступен для основных мобильных платформ и имеет мощный функционал. Вот основные показатели, которые предоставляет данный инструмент:

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

Мы испольуем Flurry в мобильных версиях ICQ. Но он не предоставляет ни инструментария, ни открытого API для сбора статистики для десктопных приложений. Поэтому мы решили адаптировать возможности Flurry для десктопной версии нашего приложения.



В сети была найдена Flurry SDK для платформы BlackBerry. Компания Flurry предоставляет данную библиотеку по запросу на электронную почту. Интегрироваться с библиотекой для BlackBerry не удалось, исходные коды также не были найдены. Но был найден другой путь.
Читать дальше →

D3.js. Визуализация графов

Время на прочтение13 мин
Охват и читатели63K
D3.js — это библиотека JavaScript для управления документами, в основе которых лежат данные. D3 помогает претворить данные в жизнь, используя HTML, SVG и CSS. D3 позволяет привязывать произвольные данные к DOM, и затем применять результаты манипуляций с ними к документу.

Для понимания статьи пригодится знание основ D3, и в ней мы рассмотрим реализацию алгоритмов визуализации графа на основе сил (Force-directed graph drawing algorithms), которая в D3 (version 3) имеет название Force Layout. Это класс алгоритмов визуализации графов, которые вычисляют позицию каждого узла, моделируя силу притяжения между каждой парой связанных узлов, а также отталкивающую силу между узлами.

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

Собираем ваш первый WebAssembly-компонент

Время на прочтение6 мин
Охват и читатели30K
Когда я впервые услышал о технологии WebAssembly — она сразу показалось мне крутой вещью и мне сразу захотелось попробовать её в деле. От первого желания, до чего-то работающего мне, однако, пришлось потратить немало времени и порой испытать кое-какие разочарования. Для того, чтобы сохранить ваше время и ваши нервы, если вам захочется повторить тот же путь, и написана данная статья.

image
Предупреждение читателю

Эта статья написана 24-го июня 2016-го года. Поскольку WebAssembly очень молодая и динамично развивающаяся технология, со временем многие описанные в данной статье вещи устареют или полностью изменятся — учитывайте это.

А теперь поехали.

Что такое WebAssembly?

Официальная документация говорит следующее: «WebAssembly или wasm это новый портабельный, эффективный по размеру и скорости загрузки формат компиляции для веба». Эм-м-м-м… Что? Формат чего? Текстовый или бинарный? Да, это откровенно плохое описание. Так что убирайте уже ваши баззворд-бинго карточки и я, на основе моего опыта, дам своё определение:

«WebAssembly или wasm это спецификация байткода для написания производительных, браузеро-независимых компонентов для веба». Это определение, тоже, конечно, не вершина эпистолярного жанра, но я попробую его дополнить. WebAssembly позволяет повысить производительность с помощью использования статически типизированных переменных, которые обходятся на рантайме значительно дешевле динамических. WebAssembly разрабатывается W3C Community Group и планируется быть внедрённым во все основные браузеры. И с этого момента на стол выкладывается киллер-фича: вы сможете писать код веб-компонентов на любом языке программирования.

Теперь звучит лучше, неправда ли?
Читать дальше →

Борьба за кодстайл или Bracket Wars

Время на прочтение8 мин
Охват и читатели6.2K
Привет хабровчанам! В этой статье мы попытаемся рассмотреть такой «скользкий» вопрос, как оформление кода и кодстайл, и предложить одно из решений, которое имеет успех в ежедневной практике.

Для JavaScript'а, который долгое время оставался «за бортом» большой разработки, настала золотая эра быстрого развития и появления все новых и новых технологий на его основе, а приложения становятся все комплекснее с каждым днем. Учитывая, что принятие ежегодных стандартов, появление нового синтаксического сахара и «плюшек» делают его очень привлекательным для большего числа разработчиков, данная тема будет актуальна не один год. Новички в JavaScript с энтузиазмом берутся за его изучение, пробуя все новые и новые фишки, однако в большинстве своем они забывают об оформлении кода и о такой вещи, как технический долг.
Читать дальше →

Оптимизируем React приложение для отображения списка элементов

Время на прочтение5 мин
Охват и читатели19K
Отображение списка (множества) элементов на странице — это стандартная задача для практически любого web-приложения. В этом посте я хотел бы поделиться некоторыми советами по повышению производительности.

Для тестового примера я создам небольшое приложение, которое рисует множество «целей» (кругов) на элементе canvas. Я буду использовать redux как хранилище данных, но эти советы подойдут и для многих других способов хранения состояния.
Так же эти оптимизации можно применять с react-redux, но для простоты описания я не буду использовать эту библиотеку.

Данные советы могут повысить производительность приложения в 20 раз.

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

Визуализация с Google Chart Tools API

Время на прочтение4 мин
Охват и читатели56K
Google Chart Tools API – это многофункциональный набор инструментов для визуализации данных. С помощью него можно относительно легко строить графики и диаграммы на сайте.

Функционал Google Chart Tools API включает в себя:

  • Динамические пиктограммы;
  • Карты;
  • Циферблаты и дисплеи;
  • Формулы;
  • QR-коды;
  • Возможность создавать свои инструменты визуализации и использовать сторонние.

Карта


image
Сделаем визуализацию данных с помощью карты, раскрашенной в соответствии с внесенными данными. Для начала подключаем файлы, loader.js обязателен.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №217 (20 — 26 июня 2016)

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


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