Обновить
256K+

JavaScript *

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

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

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

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

Cloudtunes



Cloudtunes один из тех проектов, глядя на которые я не понимаю мотивации разработчиков выкладывать такие наработки в открытый доступ. Не сочтите меня за сугубо меркантильную личность, но данный проект — это грубо говоря клон iTunes в облаке и это просто великолепный сервис. Cloudtunes обеспечивает единый интерфейс для вашей медиатеки, синхронизируя данные между Dropbox, Youtube, Lastfm и тд. Серверная часть написана на Python (Tornado, Celery, Mongo DB, MongoEngine, Redis), а клиентская на CoffeeScript (Backbone.js, SocketIO, Handlebars, Compass, SoundManager).

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

JavaScript: проверьте свою интуицию

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

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

Ответы и свой вариант объяснения почему такое поведение логично, как и в прошлый раз, я буду скрывать под спойлером. Сразу оговорюсь, что не претендую на непоколебимую истину своих версий и буду рад их обсудить. В разгадывании вам может помочь отличный русский перевод спецификации ECMAScript 5, за который большое спасибо iliakan!

1. Главный вопрос жизни, вселенной и всего такого

"3" -+-+-+ "1" + "1" / "3" * "6" + "2"

Решение
"3" -+-+-+ "1" + "1" / "3" * "6" + "2" == "42"

Как мы уже знаем из прошлого поста оператор “+” выполняет либо конкатенацию строк, либо сложение, либо приведение к числу. Т.е.
“3” + 2 == “32”

а не 5, как можно было бы подумать.

Кроме этого, вы можете бросить унарный оператор “+” или “-” на выражение, чтобы изменить его знак и сделать вещи красивее и читабельнее.

С учетом всего вышесказанного:
+ “1” === 1
-+ “1” === -1
+-+ “1” === -1
…
-+-+-+ === -1
"3" -+-+-+ "1" === 2  //вычитание производится над числами


Дальше вспомним приоритет операций: / * +
“1”/”3” === 0.3333…
“1” / ”3” * ”6” === 2
2 + 2 === 4
4 + “2” === “42”


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

Unit тестирование в js. YATS — поделка для написания юнит тестов

Время на прочтение6 мин
Охват и читатели6.7K
Добрый день!

Начать свою статью я хочу с небольшого вступления. Вы помните, какими были сайты лет 10 назад? а пять? Если сайты и содержали какую-то js логику, то она была проста и наивна. На сегодняшний день каждый второй — это не просто статические данные, это большое динамическое содержимое, с «кучей» js логики.

За 5-8 лет JavaScript перестал быть языком для анимирования снежинок под новый год и преобразовался в довольно популярный и востребованный язык программирования, с большим коммьюнити.

Любой код можно сделать лучше, если покрыть его тестами. Код, покрытый тестами проще рефакторить, при написании tests first можно писать удобный расширяемый код.

В таких задачах хорошо помогает UNIT-тестирование.

На сегодняшний день существует множество фреймворков для unit тестирования js кода. В данной статье я бы хотел описать свое видение небольшой библиотеки для тестирования js кода.
Читать дальше →

jQuery.viewport или как я искал элементы на экране

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

Равно как у каждой девушки должно быть «маленькое черное платьице», у каждого front-end разработчика должен быть «маленький черный плагинчик»… как-то не очень звучит, пусть будет «маленький функциональный плагинчик», так о чем это я, я это о том, что хочу одним таким поделиться.

Представленный плагин позволяет определять положение какого-либо элемента/набора элементов, относительно области просмотра. Функционально, он расширяет набор псевдо-селекторов, а так же добавляет трекер элементов.

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

Замыкания в Javascript [Часть 2]

Время на прочтение19 мин
Охват и читатели38K
Предыдущая часть.

  • Замыкания
    • Автоматическая сборка мусора
    • Создание замыканий

  • Что можно сделать с помощью замыканий?
    • Пример 1: setTimeout c ссылкой на функцию
    • Пример 2: Ассоциирование функций с методами экземпляра объекта
    • Пример 3: Инкапсуляция взаимосвязанной функциональности
    • Другие примеры

  • Случайные замыкания
  • Проблема утечки памяти в Internet Explorer

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

Сборка проектов с помощью Gulp.js. Семинар в Яндексе

Время на прочтение8 мин
Охват и читатели30K
Привет, меня зовут Борис. Я работаю в Яндексе в отделе тестирования и создаю инструменты, которые позволяют сделать жизнь наших тестировщиков проще и счастливее. Наша команда отчасти исследовательская, поэтому мы можем позволить себе использовать довольно необычные инструменты и эксперименты. Недавно я рассказал своим коллегам об одном из таких экспериментов: Gulp.js. Сегодня я хотел бы поделиться этим опытом с вами.



Для начала немного предыстории, о том, как развивались веб-технологии. В начале не было фронтенда как отдельного понятия, большая часть логики выполнялась на сервере. Поэтому разнообразные задачи по сборке скриптов и стилей, а также подготовка картинок, шрифтов и других ресурсов выполнялись бэкэндом, и их сборщиками, например, Apache Ant или Maven. Фронтенд оказывался в невыгодном положении, инструменты, предоставляемые этими сборщиками не очень подходили для него. Эту проблему начали решать только недавно, когда появился Grunt. Это первый сборщик, написанный на JS. Каждый фронтендер знает JavaScript, поэтому может без проблем писать задачи под Grunt и разбираться в уже написанных. Это и обусловило успех этого сборщика. У Grunt есть куча преимуществ, но есть и недостатки.
Читать дальше →

Всё, что вы хотели знать об областях видимости в JavaScript (но боялись спросить)

Время на прочтение8 мин
Охват и читатели83K
У JS есть несколько концепций, связанных с областью видимости (scope), которые не всегда ясны начинающим разработчикам (и иногда даже опытным). Эта статья посвящена тем, кто стремится погрузиться в пучину областей видимости JS, услышав такие слова, как область видимости, замыкание, “this”, область имён, область видимости функции, глобальные переменные, лексическая область видимости, приватные и публичные области… Надеюсь, по прочтению материала вы сможете ответить на следующие вопросы:

— что такое область видимости?
— что есть глобальная/локальная ОВ?
— что есть пространство имён и чем оно отличается от ОВ?
— что обозначает ключевое слово this, и как оно относится с ОВ?
— что такое функциональная и лексическая ОВ?
— что такое замыкание?
— как мне всё это понять и сотворить?
Читать дальше →

Автоматизированный шаблон для front-end проектов

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


Человек изобрел компьютеры, чтобы они выполняли за нас большую часть повторяющихся задач. Это позволяет нам экономить много времени и использовать его с максимальной пользой. И, так как эта статья о front-end разработке, в этой области таких задач много: компиляция css- и js-препроцессоров, сборка спрайтов, оптимизация изображений, минификация файлов и др.
Познать дзен

Node.js в действии

Время на прочтение3 мин
Охват и читатели27K
Предлагаем начать с Node.js
image

Прототип: Node.js in Action
Publisher:: Manning Publications Co

Основное предназначение книги — научить читателя создавать и развертывать Node-приложения (веб-приложения). Важную часть книги занимает рассмотрение среды разработки веб-приложений Express и среды разработки приложений промежуточного уровня Connect, которые широко применяются при создании приложений и поддерживаются сообществом разработчиков. Вы также научитесь разрабатывать автоматизированные тесты и освоите принципы развертывания приложений. Книга предназначена для опытных разработчиков веб-приложений, которые занимаются созданием чувствительных и масштабируемых Node-приложений.

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

Создание приложений OS X с помощью JavaScript

Время на прочтение13 мин
Охват и читатели21K
Недавно в OS X Yosemite была представлена возможность использования JavaScript для автоматизации. Это открывает возможность получать доступ к нативным* фреймворкам OS X из JavaScript. Я тут покопался в этом новом мире и собрал несколько примеров. В этом посте я объясню основы и шаг за шагом покажу процесс создания небольшого приложения
Читать дальше →

Знакомимся с элементами управления библиотеки WinJS

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


Всем привет!

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

Sqimitive.js — Frontend Primitive или «Backbone без фантиков»

Время на прочтение31 мин
Охват и читатели20K
Уже довольно давно большинство сайтов перестало быть набором HTML/PHP/CSS/JS-файлов, которые достаточно просто загрузить на сервер. Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS и ещё 100500 инструментов — всё это сегодня применяется для сборки проектов, обновления компонентов, загрузки зависимостей, сжатия кода, компиляции из одного JavaScript в другой, подтасовки карт, прополки огорода и даже готовки яичницы.

Многих людей это вдохновляет. Да что там — 95% моих знакомых в один голос твердят, как подключив всего пару-тройку библиотек с особой, уличной магией можно забабахать сайт на over-9000 зелёных австралийских долларов — и всего за один вечер, с перерывом на кофе и бублики.

А я — странный человек. Не люблю смешения языков, технологий, библиотек. Angular, Knockout, React — они все хороши, но каждая — по-своему сложна. А ведь есть и «гибриды», где сходится сразу несколько миров — как Ember и Knockout.Bootstrap. Вдобавок, многие построены на jQuery — впрочем, к ней даже у меня претензий нет; наверное, таким и должен был быть JavaScript.

Как бы то ни было, реальность беззастенчиво входит в контакт с мечтами и расставляет точки над «i». Мне так же приходится писать на «new & popular» — а когда пишешь, душа томится и просится создать очередной велосипед… а ей разве откажешь? Она ведь как дитя малое.

Велосипед был создан. Велосипед без фантиков. Такой же простой, как автомат Калашникова, и многогранный, как швейцарский нож, где вместо наследования — события, вместо моделей, коллекций и представлений — один класс, с неограниченной вложенностью и полной свободой действий, почти в два раза меньший Backbone.js, использующий Underscore.js и, необязательно, jQuery/Zepto.

Добро пожаловать в Sqimitive.
Zen Book: введение в нирвану

Система пакетов в Meteor

Время на прочтение5 мин
Охват и читатели5.1K
Начиная с версии 0.9.0 (примерно пару месяцев назад) в Meteor обновилась система пакетов, созданная на основе Atmosphere. С выходом новой системы пакетов, каждому пользователю стали доступны создание и публикация собственных пакетов. По состоянию на текущий момент в системе более 1800 пакетов и насчитывается около 500 контрибьюторов.

Про сам Meteor, Meteorite и Atmosphere уже неоднократно писали на хабре, я же хочу поделиться опытом именно в создании пакетов для этого фреймворка.

Эта статья о том, зачем нужна очередная система пакетов, как ей пользоваться, как создавать, тестировать и публиковать пакеты.
Читать дальше →

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

Хром, укравший рождество

Время на прочтение1 мин
Охват и читатели74K
Я люблю свою профессию. Сидишь, никого не трогаешь, починяешь примус пишешь код. К тебе подходит тестировщик и говорит, что в календаре на сайте в 2015 году нет рождества. Ты спокойно отвечаешь, что такого не бывает, открываешь страничку у себя и показываешь что все хорошо. Вот только тестировщику от этого не легче. Потому что у него действительно нет рождества.
Читать дальше →

Видео докладов с FrontTalks

Время на прочтение2 мин
Охват и читатели9.3K
19 сентября в Екатеринбурге прошла конференция сообщества фронтенд-разработчиков.

Ниже представлены видео-записи докладов.

Как сделать Инстаграм в браузере (Дмитрий Дудин, xbSoftware)



  • достоинства и недостатки Canvas, WebGl, SVG и CSS-фильтров и шейдеров;
  • неизведанный мир SVG-фильтров, его продуманные до мелочей устои, синтаксис и правила;
  • возможности обработки изображений — от простых чёрно-белых картинок до нелинейных искажений и градиентных карт.

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

jQuery плагин Social-feed

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

Social-feed





В настоящее время практически на каждом сайте есть социальный блок, где отображаются последние посты из twitter, последние фото из instagram или обновления из facebook. Зачастую эти социальные блоки работают на основе iframe, что не позволяет гармонично интегрировать обновления из социальных сетей с основным контентом сайта. В случае, если необходимо отображать обновления только из facebook или только из instagram, то существуют jQuery плагины с редактируемым внешним видом (этот, или этот). Если вам необходимо отображать обновления сразу из нескольких социальных сетей, то на помощь приходит Social-feed.
Читать дальше →

JavaScript. Вопросы на собеседовании

Время на прочтение3 мин
Охват и читатели138K
Не так давно озадачился поиском работы, в связи с чем посетил n-нное количество собеседований и услышал много интересных вопросов. По сети гуляет много статей с вопросами по JS, поэтому постараюсь выбрать вопросы, которые ещё не видел. Здесь нет вопросов типа Что такое замыкание?, Наследование в JavaScript или Сделайте ajax запрос на VanillaJS. Кстати советую поискать ответы на эти вопросы, прежде чем читать статью :) Под катом вопросы типа «с подвохом». Вряд ли какой-то из них попадётся вам, но, надеюсь, статья настроит вас на «подвоховое» мышление, и напомнит некоторые скользкие места и подводные камушки javascript.
Читать дальше →

Средство для очистки мыслей

Время на прочтение1 мин
Охват и читатели31K
Некоторые, когда решают какую-либо сложную задачу советуются с плюшевой игрушкой — это помогает выплеснуть накопившиеся мысли, и, как бы, проанализировать их со стороны.
Я же предпочитаю печатать. Просто открываю текстовый документ и начинаю писать всё что у меня накопилось в голове.
При этом мне важен сам факт процесса, а не напечатанный текст. Именно процесс позволяет прочистить мысли.

Сделал веб страничку для упрощения процесса — каждая напечатанная буква пропадает через 10 секунд. Ничего никуда не сохраняется.

morula.ru/clearYourMind

Надеюсь кому-либо тоже будет полезно.

Спасибо за внимание.
Читать дальше →

Разбираемся с монадами с помощью Javascript

Время на прочтение11 мин
Охват и читатели45K
Оригинальная статья — Understanding Monads With JavaScript (Ionuț G. Stan).
Буду признателен за комментарии об ошибках/опечатках/неточностях перевода в личку

От автора


Последние несколько недель я пытаюсь понять монады. Я все еще изучаю Haskell, и, честно говоря, думал, что знаю, что это такое, но когда я захотел написать маленькую библиотечку — так, для тренировки — я обнаружил, что хотя и понимаю, как работают монадические bind (>>=) и return, но не представляю, откуда берется состояние. Так что, вероятно, я вообще не понимаю, как это все работает. В результате, я решил заново изучить монады на примере Javascript. План был тот же, когда я выводил Y Combinator: взял изначальную задачу (здесь это взаимодействие с неизменяемым явно состоянием), и проделал весь путь к решению, шаг за шагом изменяя изначальный код.
Читать дальше →

Holy Grail на стероидах: тотальная синхронизация и изоморфный JavaScript на Swarm.js

Время на прочтение7 мин
Охват и читатели22K
Сегодня на Хабре мы представляем технологию реплицированной модели, которая позволяет создавать коллаборативные и реалтаймовые веб приложения так же легко, как локальные десктопные. Мы считаем, что при разработке приложений, синхронизация данных в реальном времени должна быть доступна так же, как TCP поток, HTTP запрос или ток из розетки — сразу и без вопросов. HTML5 приложения, написанные на Swarm, в части автономности, локальности и скорости загрузки не уступают нативным.
Используя библиотеку Swarm, за выходные мы делаем больше, чем за месяц делали без Swarm. Что важней — можем делать то, что без неё делать вообще не могли. Эту библиотеку синхронизации мы предлагаем совершенно бесплатно.



Сегодня мы выкладываем TodoMVC++, реактивное HolyGrail-на-стероидах приложение, написанное на Swarm+React. Приведу список демонстрируемых в приложении возможностей:
Читать дальше →