Обновить
256K+

JavaScript *

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

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

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №138 (8 — 14 декабря 2014)

Время на прочтение6 мин
Охват и читатели44K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


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

Выразительный JavaScript: Node.js

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

Содержание




Ученик спросил: «Программисты встарь использовали только простые компьютеры и программировали без языков, но они делали прекрасные программы. Почему мы используем сложные компьютеры и языки программирования?». Фу-Тзу ответил: «Строители встарь использовали только палки и глину, но они делали прекрасные хижины».

Мастер Юан-Ма, «Книга программирования»


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

Эти главы посвящены обучению важным идеям, составляющим Node.js и предназначены для передачи вам достаточного количества информации, чтобы вы могли писать полезные программы в этой среде. Они не пытаются быть всеобъемлющими справочниками по Node.

Код из предыдущих глав вы могли писать и исполнять прямо в браузере, но код из этой главы написан для Node и в браузере работать не будет.

Если вы хотите сразу запускать код из этой главы, начните с установки Node с сайта nodejs.org для вашей операционки. Также на этом сайте вы найдёте документацию по Node и его встроенным модулям.
Читать дальше →

Выразительный JavaScript: Проект: программа Paint

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

Содержание




Я смотрю на многообразие цветов. Я смотрю на пустой холст. Затем я пытаюсь нанести цвета как слова, из которых возникают поэмы, как ноты, из которых возникает музыка.

Жоан Миро


Материал предыдущих глав даёт вам всё необходимое для создания простого веб-приложения. Именно этим мы и займёмся.

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


Простая программа рисования
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #34

Время на прочтение4 мин
Охват и читатели37K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Firefox для iOS


Пока это еще только наработки, но затея просто великолепная.

SVG Edit




Отличный инструмент для редактирования SVG прямо в браузере. Вообще с распространением дисплеев с высоким разрешением, сообщество веб-разработчики все чаще и чаще обсуждает всевозможные способы взаимодействия с SVG. Идея еще одного простого и открытого редактора очень даже уместна, а функционал способен удовлетворить все потребности фронтендеров. Исходники тут. Также хочу добавить, что проект не стоит на месте и постоянно развивается.
Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №137 (1 — 7 декабря 2014)

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


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

Выразительный JavaScript: HTTP

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

Содержание




Мечта, ради которой создавалась Сеть – это общее информационное пространство, в котором мы общаемся, делясь информацией. Его универсальность является его неотъемлемой частью: ссылка в гипертексте может вести куда угодно, будь то персональная, локальная или глобальная информация, черновик или выверенный текст.

Тим Бернес-Ли, Всемирная паутина: Очень короткая личная история

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

Быстрая настройка Grunt для комфортной разработки

Время на прочтение7 мин
Охват и читатели25K
Быстрая настройка Grunt для комфортной разработки

Во время разработки нашего сервиса bitcalm.com, нам потребовалось организовать автоматическую сборку проекта. Перед нами стояла цель улучшить производительность frontend-части нашего приложения, а также оптимизировать процессы разработки и развертывания на сервере.

Основными задачами, которые требовалось решить, стали:
  1. Объединение и минификация скриптов
  2. Объединение и минификация стилей
  3. Сжатие png-изображений
  4. Создание спрайтов из всех изображений (с возможностью удобного использования и с поддержкой двух видов спрайтов для девайсов с разным PPI)
  5. Построение разных версий html-документов для разработки и для продакшна

Первые три пункта выглядят достаточно тривиальными, поэтому я постараюсь заострить внимание на работе со спрайтами и на обработке html.

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

Раскол nodejs

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

Приключения JS продолжаются! На прошлой неделе произошло знаковое событие, приведшее к появлению форка nodejs. Неразрешенные проблемы проекта набрали критическую массу и привели к расколу: часть основных разработчиков недовольных политикой Joyent в отношении развития проекта создали форк и вышли из проекта. В частности они недовольны тем, что с 2013 года (версия 0.10) проект практически не развивается, использует старую версию v8, а система версионирования стала запутанной и не соответствует общепринятой модели semver и вообще. И так, встречайте io.js.

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

День рождения JavaScript

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


Всё-таки странно иногда звучит фраза «люди постарше». Особенно применительно к 30-летним. С другой стороны, мир информационных технологий меняется так быстро, что волей неволей приходится употреблять эту избитую фразу. Так вот, люди постарше ещё помнят, что когда-то не было никакого разнообразия веб-браузеров. Мир делился на два полюса, как во времена холодной войны — были только Internet Explorer и Netscape Navigator. NN был на голову лучше соперника (похоже, это просто его карма): он был быстрее, удобнее, с более широким функционалом и продуманным интерфейсом. И в недрах коллектива, создававшего Netscape Navigator в далёком 1995 году, был также разработан один из самых распространённых и популярных ныне языков программирования — JavaScript. Изначально он был наречён LiveScript, но 4 декабря 1995 года его официально переименовали. Так что сегодняшний день можно считать днём рождения JavaScript. С чем мы и поздравляем от всей души всех, кто использует JavaScript в своих проектах по долгу службы или по зову сердца!
Читать дальше →

AngularJS 1.x – перевод курса от CodeSchool

Время на прочтение12 мин
Охват и читатели75K
Данная публикация является переводом оригинального курса CoodSchool с небольшими дополнениями, которые показались мне уместными в данном контексте. Публикация рассчитана на тех, кто только начинает знакомится с Angular.

Введение


AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
Читать дальше →

Cемантическое слияние JSON файлов в Git

Время на прочтение15 мин
Охват и читатели12K
Операция слияния (merge), выполняемая стандартными средствами git, хорошо работает для текстовых файлов, содержащих исходные тексты программ. Но слияние текстовых файлов, содержащих жестко структурированные данные, в частности JSON — это большая головная боль.

Для решения этой проблемы можно подключить к git'у отдельный инструмент слияния для JSON-файлов, который не работает построчно, а учитывает структуру JSON-объектов.

Предлагаю использовать для этого скрипт на javascript, который анализирует сливаемые JSON-файлы и делает слияние на основании структуры и вложенности объектов JSON.
Читать дальше →

JavaScript выходит за пределы Web в 2014 году

Время на прочтение9 мин
Охват и читатели36K
Перевод статьи Патрика Катанзарити, оригинал можно найти здесь.

JavaScript, эволюционируя, шагнул далеко вперёд от своей изначальной роли в DHTML сайтах 90х гг. Он быстро занимает лидирующую позицию как кандидат на роль универсального языка для Интернета Вещей (Internet of Things). И хотя ещё слишком рано рассуждать о том, одержит ли JavaScript победу в этом состязании, я верю, что ему определённо отведена важная роль в постоянно растущем пространстве Интернета Вещей.

В прошлом году я написал обзор о технологиях, которые могут всерьёз заинтересовать JavaScript разработчиков – JavaScript Beyond the Web. С тех пор появилось много новых устройств и возможностей, поэтому я хочу написать обзор об изменениях, произошедших в мире JavaScript и среди взаимосвязанных устройств в течение 2014 года.

Перечень устройств, способных взаимодействовать посредством JavaScript, растёт с каждым месяцем. У нас появились как официальные JavaScript API, выпущенные производителями устройства, так и продукты усилий сообщества, ориентированные на то, чтобы возможности JavaScript стали доступными и для других.
Читать дальше →

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №136 (24 — 30 ноября 2014)

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


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

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

Выразительный JavaScript: Рисование на холсте

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

Содержание




Рисование — это обман.
М.К.Эшер


Браузеры позволяют нам рисовать графику разными способами. Проще всего использовать стили для расположения и расцветки стандартных элементов DOM. Так можно добиться многого, как показал пример игры из предыдущей главы. Добавляя частично прозрачные картинки узлам, мы можем придать им любой нужный вид. Возможно даже поворачивать или искажать узлы через стиль transform.

Но такое использование DOM – не то, для чего он создавался. Некоторые задачи, типа рисования линии между двумя произвольными точками, крайне неудобно выполнять при помощи обычных элементов HTML.

Есть две альтернативы. Первая – SVG, масштабируемая векторная графика, также основанная на DOM, но без участия HTML. SVG – диалект для описания документов, который концентрируется на формах, а не тексте. SVG можно встроить в HTML, или включить через тег <img>.

Вторая альтернатива – холст (canvas). Холст – это один элемент DOM, в котором находится картинка. Он предоставляет API для рисования форм на том месте, которое занимает элемент. Разница между холстом и SVG в том, что в SVG хранится начальное описание форм – их можно в любой момент сдвигать или менять размер. Холст же преобразовывает формы в пиксели (цветные точки растра), как только нарисует их, и не запоминает, что эти пиксели из себя представляют. Единственным способом сдвинуть форма на холсте является очистить холст (или ту часть, которая окружает форму) и перерисовать её на другом месте.
Читать дальше →

Код, которого нет

Время на прочтение7 мин
Охват и читатели90K
Привет, хабравчане!

Около года назад Хабр захлестнула волна постов на тему "%string% в N строчек на JavaScript". Уже и не вспомню, чем все закончилось, но началось все с «Excel в 30 строк». Следом появилось много и других интересных вариаций на эту тему, даже игра в ноль строк на JS, но это уже совсем другая история…

Как я ни старался придумать что-то еще более компактное — ничего не выходило. Тогда было принято решение посмотреть на проблему под другим углом. Примерно в этот момент в голове промелькнул вопрос: а можно ли «сколлапсировать» код так, чтобы его не было вообще? И тут мне позвонил Дэвид Блейн.

Я попробовал добавить немного магии и вот что у меня получилось.

image
Сим салабим!

Построение параллельных кривых в картографических веб-приложениях

Время на прочтение4 мин
Охват и читатели16K
В ходе работы над веб-картой в рамках проекта возникла задача отображения линий метрополитена на карте. Казалось бы, что в этом сложного? По сути — ничего, пока вам не требуется визуализировать различные маршруты, физически проходящие по одному месту. С такой ситуацией мы столкнулись при попытке отобразить линии амстердамского метрополитена.


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

Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №135 (17 — 23 ноября 2014)

Время на прочтение6 мин
Охват и читатели46K
Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


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

Незакрываемая вкладка в Chrome

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

Простой трюк позволяет создать страницу, которую нельзя будет закрыть в Google Chrome.

Пруф: zhovner.com/tmp/chrome-trap.html

Зловредный код выглядит крайне просто:

     onbeforeunload=function(){
         location.reload();
            return "ВАШ КОМПЬЮТЕР ЗАБЛОКИРОВАН ...";
      };
      onload=function(){
         location.reload();
      }


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

хттп://stop.podzone.org/stop_ip.php?gorod=Moscow&ip=127.0.0.1&sid=1&br=1

image

Node.js в огне

Время на прочтение6 мин
Охват и читатели52K
Мы создаем новое поколение веб-приложения Netflix.com, использующего node.js. Вы можете узнать больше о нашем походе из презентации, которую мы представили на NodeConf.eu несколько месяцев назад. Сегодня я хочу поделиться накопленным опытом в настройке производительности нового стека нашего приложения.

Мы впервые столкнулись с проблемами, когда заметили, что задержка запроса в нашем node.js приложении со временем увеличивается. К тому же оно использовало больше ресурсов процессора, чем мы ожидали, и это коррелировало с временем задержки. Нам приходилось использовать перезагрузку как временное решение, пока мы искали причину с помощью новых инструментов и техник аналитики производительности в нашей Linux EC2 среде.

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

Размышления о стандартной библиотеке JavaScript. Core.js

Время на прочтение64 мин
Охват и читатели108K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

JavaScript это, в том числе, и стандартная библиотека, о которой здесь и пойдёт речь. Под стандартной библиотекой я подразумеваю модули, конструкторы, методы, что должны присутствовать на любой платформе, будь то браузер или сервер, без лишних действий со стороны программиста, не включая API, специфичный для платформы. Даже если вы пишите не на JavaScript, а на языке в него компилируемом, скорее всего, вам придется иметь дело с его стандартной библиотекой.

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


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