Как стать автором
Обновить
31
0
Алексей @Silver_Clash

Пользователь

Отправить сообщение

5 популярных JavaScript-хаков

Время на прочтение4 мин
Количество просмотров66K
Существует несколько JavaScript-хаков, которыми постоянно пользуются опытные программисты. Они не совсем очевидны, особенно для новичков. Эти хаки используют возможности языка, имеющие некоторые побочные эффекты. В этой статье я объясню, как работают 5 таких распространённых хаков.
Читать дальше →
Всего голосов 89: ↑56 и ↓33+23
Комментарии112

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

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

— что такое область видимости?
— что есть глобальная/локальная ОВ?
— что есть пространство имён и чем оно отличается от ОВ?
— что обозначает ключевое слово this, и как оно относится с ОВ?
— что такое функциональная и лексическая ОВ?
— что такое замыкание?
— как мне всё это понять и сотворить?
Читать дальше →
Всего голосов 57: ↑47 и ↓10+37
Комментарии38

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

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

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

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

Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии5

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

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


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

Английские слова с картинками и произношением от носителя языка

Время на прочтение3 мин
Количество просмотров12K

Существует множество вариантов изучения иностранных языков — среди них относительно недавно появилось и использование мобильного приложения. Однако большинство из них представляет собой либо примитивные словари, либо обычные упражнения из учебника, переведенные в цифровой формат. Понятно, что таким способом получать новые знания очень тяжело, и приходится возвращаться к проверенным временем курсам и частным урокам.
Читать дальше →
Всего голосов 39: ↑13 и ↓26-13
Комментарии9

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

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

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

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



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

Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии4

Новости из мира Node: npm 2.0, nvm для Windows, xtpl

Время на прочтение2 мин
Количество просмотров5.8K

npm 2.0



npm 2.0 увидел свет, и объявление об его выходе содержит множество деталей об исправлениях и о развитии процесса выпуска проекта. Одно из главных изменений касается run-script, данная команда теперь способна принимать аргументы:

В npm@2.0.0, Ben изменил npm run-script таким образом, что-бы дать вам возможность передавать аргументы в скрипт. Это критическое изменение. Это так просто. Думайте о npm 2 как о шаге на пути прямо к npm с semver. (Дальше больше. npm 3 выйдет еще до конца года.)

Подробности
Всего голосов 25: ↑17 и ↓8+9
Комментарии0

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

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



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

Знакомство с Koa или coroutine в nodejs

Время на прочтение5 мин
Количество просмотров34K

Предисловие


Меня уже очень давно привлекает javascript в качестве единого языка для веб-разработки, но до недавнего времени все мои изыскания оканчивались чтением документации nodejs и статей о том, что это callback`овый ад, что разработка на нем приносит лишь боль и страдания. Пока не обнаружил, что в harmony появился оператор yield, после чего я наткнулся на koa, и пошло поехало.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии12

[Перевод] Проблема конструкторов JavaScript и три способа её решения

Время на прочтение5 мин
Количество просмотров14K

Введение


Как известно, создать новый объект в 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 работает достаточно хорошо.)
Читать дальше →
Всего голосов 38: ↑23 и ↓15+8
Комментарии39

Алгоритмы поиска путей на JavaScript

Время на прочтение1 мин
Количество просмотров32K


Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
Читать дальше →
Всего голосов 65: ↑47 и ↓18+29
Комментарии14

Трансдьюсеры в JavaScript. Часть первая

Время на прочтение5 мин
Количество просмотров30K
Рич Хикки, автор языка Clojure, недавно придумал новую концепцию — Трансдьюсеры. Их сразу добавили в Clojure, но сама идея универсальна и может быть воспроизведена в других языках.

Сразу, зачем это нужно:

  • трансдьюсеры могут улучшить производительность, т.к. позволят не создавать временные коллекции в цепочках операций map.filter.takeWhile.etc
  • могут помочь переиспользовать код
  • могут помочь интегрировать библиотеки между собой, например underscore/LoDash могут уметь создавать трансдьюсеры, а FRP библиотеки (RxJS/Bacon.js/Kefir.js) могут уметь их принимать
  • могут упростить FRP библиотеки, т.к. можно будет выбросить кучу методов, добавив один метод для поддержки трансдьюсеров


Трансдьюсеры — это попытка переосмыслить операции над коллекциями, такие как map(), filter() и пр., найти в них общую идею, и научиться совмещать вместе несколько операций для дальнейшего переиспользования.

Читать дальше →
Всего голосов 56: ↑52 и ↓4+48
Комментарии56

Kefir.js — новая библиотека для функционального реактивного программирования (FRP) в JavaScript

Время на прочтение4 мин
Количество просмотров22K
Наверняка многие уже слышали о подходе FRP для организации асинхронного кода. На хабре уже писали об FRP (Реактивное программирование в Haskell, FRP на Bacon.js) и есть хорошие доклады на эту тему (Программировние UI с помощью FRP и Bacon.js, Functional Reactive Programming & ClojureScript, О Bacon.js от Juha Paananen — автора бекона)

Если коротко, 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.

Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии19

6 принципов убеждения, с помощью которых можно сделать лендинг эффективным

Время на прочтение11 мин
Количество просмотров45K
Конверсию продающих страниц можно повысить не только с помощью редизайна или улучшения интерфейса, в этом деле могут также помочь и познания в психологии. Чтобы замотивировать посетителя сайта приобрести ваш продукт, стоит попробовать выстроить коммуникацию с потенциальными клиентами, используя принципы убеждения, которые выделил Роберт Чалдини. Как же применить эти тактики на вашем лендинге? В статье Sean Ellis — кейсы применения шести принципов убеждения на продающих страницах. Что это за принципы, и какие варианты их использования могут поднять конверсию лендинга?

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

С момента публикации в 1984 году книги «Влияние: психология убеждения» Роберта Чалдини, шесть принципов убеждения стали неотъемлемой частью словаря маркетологов во всем мире. Если вы регулярно читаете блоги о маркетинге, вы наверняка знакомы с ними — это взаимность, последовательность в обязательствах, знаки общественного признания, авторитет, симпатия и дефицит или ограниченность.
Читать о том, как сделать landing page более убедительной
Всего голосов 36: ↑22 и ↓14+8
Комментарии1

Сюрреализм на JavaScript. Советы по разработке на NodeJS

Время на прочтение9 мин
Количество просмотров41K
Привет, Хабра!

Пол года назад я подумал: «А может книгу написать?», и таки написал.



Все документы оформлены, страницы сверстаны, а тираж — отпечатан. Я не буду клянчить у вас деньги на кикстартере или предлагать что-либо купить, а вместо этого попытаюсь заинтриговать советами по разработке на NodeJS в целях пиара и привлечения внимания к книге.
Читать дальше →
Всего голосов 78: ↑57 и ↓21+36
Комментарии36

oDesk (Upwork). Мой опыт за полтора года

Время на прочтение12 мин
Количество просмотров445K
Вот уже полтора года я зарабатываю фрилансом на бирже oDesk. За это время у меня накопилось много материалов по данной теме. В данном топике я собрал все в одну статью и адаптировал для аудитории хабра.
image
Читать дальше →
Всего голосов 192: ↑185 и ↓7+178
Комментарии321

Freemium или Free Trial — какую бизнес модель выбрать при продаже софта?

Время на прочтение10 мин
Количество просмотров34K


Модель монетизации – это именно тот пунктик в стратегии каждого проекта, как облачного сервиса, так и оффлайнового бизнеса, который в конечном итоге определяет его успешность. Правильная модель монетизации — своеобразный ключ от квартиры, где деньги лежат. Если же он не подходит, то вряд ли этот стартап превратится в реальный бизнес. Для облачных сервисов последнее время популярны различные вариации бесплатных версий или пробного периода. В связи с этим мы хотим поделиться статьей Линкольна Мёрфи, которая может помочь подобрать правильный «ключ» к успешному бизнесу, и ответит на вопросы, что лучше – freemium или бесплатный пробный период – free trial. Статья написана от первого лица.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии9

Банки vs Биржи: где выгоднее покупать валюту

Время на прочтение6 мин
Количество просмотров104K
image

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

На самом деле это не совсем верный подход, поскольку финансовые рынки в некоторых аспектах предоставляют большие возможности, чем могут предложить банки (в том числе в области сохранения финансов). Сегодня мы рассмотрим конкретный пример такой ситуации — покупку и продажу валюты.
Читать дальше →
Всего голосов 47: ↑37 и ↓10+27
Комментарии37

Руководство по установке и настройке OpenVPN

Время на прочтение34 мин
Количество просмотров1.5M



Когда у нас появились сотрудники, работающие удаленно, пришлось думать над тем, как обеспечить им защищенный доступ к нашим хостинговым серверам, виртуальным выделенным серверам разработчиков 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.


Читать дальше →
Всего голосов 128: ↑115 и ↓13+102
Комментарии97

Почему софт не должен быть бесплатным?

Время на прочтение7 мин
Количество просмотров41K
Пробный период пользования сервисом многие проекты предоставляют своим пользователям бесплатно. Последнее время эта стратегия обрела огромную популярность. Все знают истории успеха таких сервисов, как MailChimp или Pandora, но забывают о многих других «не выстреливших» стартапах с той же моделью. Для каждого начинающего предпринимателя выбор бизнес-модели и ее влияние на конверсию — чрезвычайно важно. В связи с этим хотим поделиться опытом создателя софта для дизайнеров Bidsketch Рубена Гамеза, который показывает низкую эффективность бесплатных версий для бизнеса. Статья написана от первого лица.
Читать дальше →
Всего голосов 70: ↑46 и ↓24+22
Комментарии59

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность