Пользователь
Всё, что вы хотели знать об областях видимости в JavaScript (но боялись спросить)
— что такое область видимости?
— что есть глобальная/локальная ОВ?
— что есть пространство имён и чем оно отличается от ОВ?
— что обозначает ключевое слово this, и как оно относится с ОВ?
— что такое функциональная и лексическая ОВ?
— что такое замыкание?
— как мне всё это понять и сотворить?
Node.js в действии
![image](https://habrastorage.org/files/8d3/6b8/a63/8d36b8a636dc4b4185cc8830626ed11e.jpg)
Прототип: Node.js in Action
Publisher:: Manning Publications Co
Основное предназначение книги — научить читателя создавать и развертывать Node-приложения (веб-приложения). Важную часть книги занимает рассмотрение среды разработки веб-приложений Express и среды разработки приложений промежуточного уровня Connect, которые широко применяются при создании приложений и поддерживаются сообществом разработчиков. Вы также научитесь разрабатывать автоматизированные тесты и освоите принципы развертывания приложений. Книга предназначена для опытных разработчиков веб-приложений, которые занимаются созданием чувствительных и масштабируемых Node-приложений.
Автоматизированный шаблон для front-end проектов
![](https://habrastorage.org/files/49d/5bc/3d7/49d5bc3d7a1c45328c4ae3c94453c862.jpeg)
Человек изобрел компьютеры, чтобы они выполняли за нас большую часть повторяющихся задач. Это позволяет нам экономить много времени и использовать его с максимальной пользой. И, так как эта статья о front-end разработке, в этой области таких задач много: компиляция css- и js-препроцессоров, сборка спрайтов, оптимизация изображений, минификация файлов и др.
Английские слова с картинками и произношением от носителя языка
![](https://habrastorage.org/files/2da/76c/c2d/2da76cc2d923469eae31bb4f27172b73.jpg)
Существует множество вариантов изучения иностранных языков — среди них относительно недавно появилось и использование мобильного приложения. Однако большинство из них представляет собой либо примитивные словари, либо обычные упражнения из учебника, переведенные в цифровой формат. Понятно, что таким способом получать новые знания очень тяжело, и приходится возвращаться к проверенным временем курсам и частным урокам.
Видео докладов с FrontTalks
Ниже представлены видео-записи докладов.
Как сделать Инстаграм в браузере (Дмитрий Дудин, xbSoftware)
- достоинства и недостатки Canvas, WebGl, SVG и CSS-фильтров и шейдеров;
- неизведанный мир SVG-фильтров, его продуманные до мелочей устои, синтаксис и правила;
- возможности обработки изображений — от простых чёрно-белых картинок до нелинейных искажений и градиентных карт.
Новости из мира Node: npm 2.0, nvm для Windows, xtpl
npm 2.0
npm 2.0 увидел свет, и объявление об его выходе содержит множество деталей об исправлениях и о развитии процесса выпуска проекта. Одно из главных изменений касается
run-script
, данная команда теперь способна принимать аргументы:Вnpm@2.0.0
, Ben изменилnpm run-script
таким образом, что-бы дать вам возможность передавать аргументы в скрипт. Это критическое изменение. Это так просто. Думайте о npm 2 как о шаге на пути прямо к npm с semver. (Дальше больше. npm 3 выйдет еще до конца года.)
Holy Grail на стероидах: тотальная синхронизация и изоморфный JavaScript на Swarm.js
Используя библиотеку Swarm, за выходные мы делаем больше, чем за месяц делали без Swarm. Что важней — можем делать то, что без неё делать вообще не могли. Эту библиотеку синхронизации мы предлагаем совершенно бесплатно.
![](https://habrastorage.org/files/05a/538/2bb/05a5382bb9024b52bc4a939117bd7048.jpg)
Сегодня мы выкладываем TodoMVC++, реактивное HolyGrail-на-стероидах приложение, написанное на Swarm+React. Приведу список демонстрируемых в приложении возможностей:
Знакомство с Koa или coroutine в nodejs
Предисловие
Меня уже очень давно привлекает javascript в качестве единого языка для веб-разработки, но до недавнего времени все мои изыскания оканчивались чтением документации nodejs и статей о том, что это callback`овый ад, что разработка на нем приносит лишь боль и страдания. Пока не обнаружил, что в harmony появился оператор yield, после чего я наткнулся на koa, и пошло поехало.
[Перевод] Проблема конструкторов JavaScript и три способа её решения
Введение
Как известно, создать новый объект в JavaScript можно используя функцию-конструктор следующего вида:
function Fubar (foo, bar) {
this._foo = foo;
this._bar = bar;
}
var snafu = new Fubar("Situation Normal", "All Fsked Up");
Когда мы вызываем функцию-конструктор при помощи ключевого слова
new
, то получаем новый объект, а контекст его конструктора устанавливается на сам объект. Если мы явно не возвращаем ничего из конструктора, то получаем сам объект в качестве результата. Таким образом, тело функции конструктора используется для инициализации вновь созданного объекта, прототипом которого будет содержимое свойства prototype
конструктора, так что можно писать следующим образом:Fubar.prototype.concatenated = function () {
return this._foo + " " + this._bar;
}
snafu.concatenated()
//=> 'Situation Normal All Fsked Up'
Используя оператор
instanceof
можно убедиться в том, что объект был создан при помощи определенного конструктора: snafu instanceof Fubar
//=> true
(Заставить работать
instanceof
«неправильно» возможно при в случаях с более продвинутыми идиомами, или же если вы — вредный тролль, собирающий исключения языка программирования и получающий наслаждение, истязая ими соискателей на собеседованиях. Однако, для наших целей instanceof
работает достаточно хорошо.)Алгоритмы поиска путей на JavaScript
![](https://habrastorage.org/files/064/281/27e/06428127e807432da302a91f9e788bba.png)
Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Трансдьюсеры в JavaScript. Часть первая
Сразу, зачем это нужно:
- трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
- могут помочь переиспользовать код
- могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
- могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров
Трансдьюсеры — это попытка переосмыслить операции над коллекциями, такие как map(), filter() и пр., найти в них общую идею, и научиться совмещать вместе несколько операций для дальнейшего переиспользования.
Kefir.js — новая библиотека для функционального реактивного программирования (FRP) в JavaScript
Если коротко, FRP это подход похожий на Promise, но с неограниченным количеством возвращаемых значений, и бОльшим количеством методов для комбинирования / модифицирования потоков событий. Другими словами, если Promise позволяют работать со значением, которого у вас еще нет, так, будто оно у вас уже есть, то FRP позволяет работать со значением, меняющимся во времени, так, будто оно не меняется.
Вот что это дает по сравнению с обратными вызовами:
1) Поток событий (Event stream) и значение меняющаяся во времени (Property / Behavior) становятся объектами первого класса. Это значит что их можно передавать в функции и возвращать из функций.
Например, можно создать объект содержащий клики на кнопку (поток событий), и дальше делать с ним всё, что можно делать с обычной переменной — передавать в функцию, возвращать из функции, сохранять как свойство другого обекта и т.д. Или можно создать объект отражающий текущий размер окна браузера (значение меняющаяся во времени).
Это позволяет гораздо лучше разделять ответственности в коде, разделять его на модули, и писать более гибкий, короткий и управляемый код.
К примеру можно написать функцию, возвращающую поток перетаскиваний (drag). В качестве параметров она будет принимать 3 потока — начало перетаскивания, движение, конец перетаскивания. Дальше можно передать в эту функцию: либо потоки для соответствующих событий мыши (mousedown, mousemove, mouseup), либо для touch событий (touchstart, touchmove, touchend). Сама же функция не будет ничего знать об источниках событий, а будет работать только с абстрактными потоками. Пример реализации на Bacon.
2) Явный state
Второе большое преимущество FRP это явное управление состоянием. Как известно, state — один из самых главных источников сложности программ, поэтому грамотное управление им позволяет писать более надежные и простые в поддержке программы. Отличный доклад от Рича Хикки о сложности (complexity) «Simple Made Easy».
FRP позволяет писать бОльшую часть кода на «чистых функциях» и управлять потоком данных (dataflow) явно (с помощью потоков событий), а состояния хранить тоже явно в Property.
6 принципов убеждения, с помощью которых можно сделать лендинг эффективным
![](https://habrastorage.org/files/7b2/d5a/1e6/7b2d5a1e66c54139a02adae2bddc07df.jpg)
Не нужно сравнивать попытку убедить в чем-то с промыванием мозгов или пропагандой. Убеждение – это прежде всего, понимание того, что заставляет ваших потенциальных клиентов совершить необходимое действие.
С момента публикации в 1984 году книги «Влияние: психология убеждения» Роберта Чалдини, шесть принципов убеждения стали неотъемлемой частью словаря маркетологов во всем мире. Если вы регулярно читаете блоги о маркетинге, вы наверняка знакомы с ними — это взаимность, последовательность в обязательствах, знаки общественного признания, авторитет, симпатия и дефицит или ограниченность.
Сюрреализм на JavaScript. Советы по разработке на NodeJS
Пол года назад я подумал: «А может книгу написать?», и таки написал.
![Сюрреализм на JavaScript](https://habrastorage.org/getpro/habr/post_images/9df/758/63f/9df75863f1c48cd7160aca06575cd067.jpg)
Все документы оформлены, страницы сверстаны, а тираж — отпечатан. Я не буду клянчить у вас деньги на кикстартере или предлагать что-либо купить, а вместо этого попытаюсь заинтриговать советами по разработке на NodeJS в целях пиара и привлечения внимания к книге.
oDesk (Upwork). Мой опыт за полтора года
![image](https://habrastorage.org/files/e57/141/1b0/e571411b05f7454096920ec63ca7a938.jpg)
Freemium или Free Trial — какую бизнес модель выбрать при продаже софта?
![](http:///habrastorage.org/files/cc5/a51/8f6/cc5a518f6c904577a7d60aa3eb3dad00.gif)
Модель монетизации – это именно тот пунктик в стратегии каждого проекта, как облачного сервиса, так и оффлайнового бизнеса, который в конечном итоге определяет его успешность. Правильная модель монетизации — своеобразный ключ от квартиры, где деньги лежат. Если же он не подходит, то вряд ли этот стартап превратится в реальный бизнес. Для облачных сервисов последнее время популярны различные вариации бесплатных версий или пробного периода. В связи с этим мы хотим поделиться статьей Линкольна Мёрфи, которая может помочь подобрать правильный «ключ» к успешному бизнесу, и ответит на вопросы, что лучше – freemium или бесплатный пробный период – free trial. Статья написана от первого лица.
Банки vs Биржи: где выгоднее покупать валюту
![image](https://habrastorage.org/getpro/habr/post_images/f16/e99/b41/f16e99b413ef56d2b4412731f6f73a61.jpg)
Традиционно, когда у жителей России возникает необходимость в покупке или продаже зарубежной валюты, они обращаются в банк для совершения соответствующих операций. Банки в нашей стране вообще являются самыми авторитетными финансовыми организациями и воспринимаются в качестве безальтернативного инструмента для совершения различных действий с деньгами.
На самом деле это не совсем верный подход, поскольку финансовые рынки в некоторых аспектах предоставляют большие возможности, чем могут предложить банки (в том числе в области сохранения финансов). Сегодня мы рассмотрим конкретный пример такой ситуации — покупку и продажу валюты.
Руководство по установке и настройке OpenVPN
Когда у нас появились сотрудники, работающие удаленно, пришлось думать над тем, как обеспечить им защищенный доступ к нашим хостинговым серверам, виртуальным выделенным серверам разработчиков Virtual Dedicated Server (VDS), сайтам обеспечения и сопровождения разработки и к другим ресурсам.
По соображениям безопасности доступ к этим ресурсам ограничен при помощи межсетевого экрана (файервола) по портам и адресам IP. Ежедневную перенастройку доступа при изменении динамических IP сотрудников едва ли можно назвать разумным решением.
Выход нашелся довольно быстро — это использование технологии виртуальных частных сетей Virtual Private Network (VPN) и ее свободной реализации OpenVPN. Эта реализация доступна практически для всех распространенных платформ, в том числе для планшетов и смартфонов. История развития OpenVPN насчитывает уже 12 лет (компания OpenVPN Technologies, Inc. была создана Francis Dinha и James Yona в 2002 году), так что это надежное и проверенное временем решение.
В нашей компании сеть VPN позволила предоставить защищенный доступ сотрудников к VDS, играющей роль сервера OpenVPN. И уже для фиксированного IP этого сервера был разрешен доступ к другим ресурсам компании. Попутно на сервере OpenVPN был установлен прокси Squid, что решило все проблемы доступа сотрудников с динамическими IP к защищенным ресурсам компании.
Теме OpenVPN посвящены многочисленные статьи и сообщения на форумах. Тем не менее, нужную информацию мне пришлось собирать по частям из разных мест. Попутно приходилось разбираться с многочисленными терминами и технологиями. В качестве серверов OpenVPN были использованы VDS на базе FreeBSD и Debian Linux, в качестве клиентов — рабочие станции FreeBSD, Debian Linux, Ubuntu и Microsoft Windows.
Надеюсь, что эта статья будет полезна тем, кто впервые столкнулся с необходимостью создания сети VPN или уже использует ее для решения тех или задач, а также тем, кто ищет замену коммерческим реализациям VPN.
Почему софт не должен быть бесплатным?
![](https://habrastorage.org/files/0df/b1c/192/0dfb1c192f1340519e1dc2c8739223fa.jpg)
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность