Обновить
128K+

Node.JS *

Среда для запуска JavaScript-приложений

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

Gulp: как я проект для production собирал, livereload запускал и перехват ошибок делал

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


Хочу поделиться историей моего знакомства с gulp и как я решал некоторые проблемы при разработке. Материал ориентирован на тех, кто знаком с nodejs и только начинает знакомиться с gulp, а также на тех, кто ищет решение схожей проблемы. Как следует из названия, статья состоит из трех глав.
Читать дальше →

Реализация сортировки в V8 от Google

Время на прочтение6 мин
Охват и читатели40K
image
Привет, Хабр.

Мир javascript развивается с невероятной скоростью: новые стандарты языка, новые фреймворки, и в браузере, и на сервере и в десктопных приложениях и так далее… Но иногда хочется вместо изучения новой супер-фичи погрузиться в какую-то более базовую тему. И погрузиться глубоко, до самых исходников.

И в этот момент под моим пристальным взглядом оказалась незаметная строчка «native code», которая так или иначе появляется перед глазами любого JS разработчика в консоли Chrome или Node.js:

[].sort.toString();
"function sort() { [native code] }"

Итак, кому интересно, какая реализация сортировки скрывается в V8 за надписью [native code] — добро пожаловать под кат.
Читать дальше →

Плагин для gulp — собираем файлы по кусочкам

Время на прочтение2 мин
Охват и читатели25K
Недавно встала задача сверстать сайт не просто быстро, а очень быстро.

Поэтому было принято решение развернуть gulp-проект (до сегодняшнего дня я еще никогда не прибегал к его помощи) и сосредоточиться непосредственно на кодинге. К сожалению, этого оказалось недостаточно.

В процессе верстки стало понятно, что огромные полотна html- и js-кода с каждой строчкой все больше и больше замедляют процесс верстки. Если честно, данная проблема возникала и раньше, а сегодня встала особенно остро.

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

Порывшись в интернете, нашел плагин gulp-rigger. Получаса хватило для того, чтоб понять, что это совсем не то, что нужно:
Читать дальше →

AllcountJS: Делаем простую CRM с веб-интерфейсом и REST API за 15 минут

Время на прочтение5 мин
Охват и читатели30K
Допустим моя компания кому-то звонит и что-то продаёт и мне нужна простая CRM, которая позволит вести справочник контактов и наглядно отслеживать их состояние в плане продажи.

Сейчас мы с вами сделаем такую систему с нуля за считанные минуты. Для этого мы будем использовать фрэймворк Allcountjs.

Самые нетерпеливые могут сразу же посмотреть на результат.


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

Стабильный релиз Node v5

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

На прошлой неделе состоялся релиз Nodejs v5. Эта ветка включает в себя порцию новых возможностей и будет развиваться параллельно c веткой Node v4.x, которая является стабильной LTS веткой с длительным сроком поддержки в 30 месяцев. Релизы Node v5.x будут осуществляться раз в 8 месяцев.

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

Подробности под катом.
Читать дальше →

Эра NoSQL позади

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

Новый тренд на HighLoad++ — множество докладов об использовании оперативной памяти. Слово Константину Осипову, разработчику платформы Tarantool, автору доклада «Что особенного в СУБД для данных в оперативной памяти».

Ты отвечал в MySQL за производительность, как так получилось, что ты решил разрабатывать свою СУБД?
В MySQL я руководил одной из команд разработки сервера, за производительность там отвечали все.

MySQL по многим параметрам был работой мечты, но, к сожалению после того, как мы стали частью Oracle, многое изменилось.

Несколько моих коллег ушли в MariaDB, кто-то основал свою компанию (SeveralNines, FromDual). Я никогда не чувствовал себя «недогруженным», а с уходом многих ключевых разработчиков работа вообще превратилась в марафон по передаче знаний. Сопротивление поглощению, желание начать всё с чистого листа, бунт против медленного принятия решений большой компанией, нежелание по разным причинам уезжать в США, в конце концов, хорошее предложение от Mail.Ru, которому к этому моменту уже было около года — и я ушёл.

Если бы знал, куда ухожу, ещё десять раз подумал бы. Иногда вообще не было веры, что удастся сделать что-то полезное, чем будут пользоваться за пределами Mail.Ru, да и сейчас Tarantool очень далёк пока от «идеальной СУБД».
Читать дальше →

npm@3: будущее уже здесь

Время на прочтение3 мин
Охват и читатели26K
В конце июня была выпущена первая бета третьей версии npm. А 26-го сентября версия 3.3.3 была помечена как latest в официальном репозитории, что знаменует окончание бета тестирования и доступность третьей версии для всех разработчиков. Но переход на третью версию не очень быстрый. К примеру, скачав node.js с официального сайта мы получим в комплекте версию 2.x npm. В данный момент разработчики параллельно поддерживают две версии, 2.x и 3.x — почти как у Python. Надеюсь, с npm переход получится быстрее, разработчики грозятся приурочить его к выходу Node 5. Ну а пока они этого не сделали, я предлагаю вам ознакомиться с нововведениями и узнать как можно одной командой обновить себе npm на тройку.
Посмотреть на сплющенные node_modules

У нас проблемы с промисами

Время на прочтение16 мин
Охват и читатели253K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи

Frida-node или немножко странного кода

Время на прочтение8 мин
Охват и читатели17K
Приветствую всех, кто читает эту статью.
Как-то так сложилось, что на хабре практически нет упоминаний про замечательную штуку под названием Frida. Самое толковое из них заключается в паре строк кода и общем описании(HabraFrida, из которой, собственно, я и узнал про существование этой штуковины, за что отдельное спасибо автору).
Если вкратце, то Frida занимается тем, что инжектит JS-движок от Гугла(V8) в таргетный процесс(при отсутствии защиты, конечно же), причем встроенный js-код умеет работать с памятью, перехватывать вызовы функций, делать эти самые вызовы и заниматься прочими непотребствами.
Если честно, с реверсом я знаком крайне посредственно и, в-основном, из MMORPG Runes of Magic, с которой я и начал учиться кодить и с которой связанна немалая часть моих текущих познаний в программировании. Собственно, до сих пор время от времени развлекаюсь написанием всяких разностей под нее(дырявая, кстати говоря, игрушка… Каких только шикарных багов в ней не находили, начиная от рисовки предметов и заканчивая sql-inject'ом). Вот для нее я и написал немножко тестового кода на Frida, позволяющего делать… разное.
Почему node.js? Прост. В конце-концов, это же хаб ненормального программирования)
Читать дальше →

Jii: Масштабируемый комет сервер и клиент

Время на прочтение10 мин
Охват и читатели11K
Продолжаю серию статей про Jii Framework. Сегодня настал момент релиза комета, о котором я и расскажу в этой статье.



Jii-comet — это масштабируемый, готовый к высоким нагрузкам и плохому интернету транспорт, реализующий постоянную связь между клиентом и сервером для мгновенного обмена данными.

Jii-comet предоставляет набор компонентов и классов, которые упрощают обмен сообщениями между каналами, подписки на них, обмена данными между серверами и так далее. Сам модуль не умеет доставлять сообщения на клиент и обратно, но в нем заложена абстракция, чтобы это можно было делать любой из существующих популярных библиотек (например, socket.io, sockjs), а так же чтобы это было надежно и масштабируемо.
Читать дальше →

CoffeeScript array comprehensions — модно, стильно, медленно

Время на прочтение4 мин
Охват и читатели13K
В детстве мне часто говорили, что сахар — белая смерть. Позже я понял, что калории есть калории, а разглагольствующие о вреде сахара зачастую просто не владеют матчастью.

И вдруг выяснилось, что всё, чем меня пугали взрослые — чистая правда. Сахар жуткая вещь, которая убивает мозг и медленно ведёт нас к альцгеймеру. Его нельзя есть никому и никогда. Эта тема подробно раскрыта в книге Гэрри Тауба Good Calories Bad Calories, а также в книге Дэвида Перлмуттера Grain Brain.

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

К счастью, я наделён редким даром. Я всегда узнаю зло, и неважно в какие одежды оно вырядилось на этот раз.
Ужасная правда

И решили мы подружить Baresip и Nodejs

Время на прочтение3 мин
Охват и читатели21K
Что же такое Baresip? Как сказано на сайте проекта это кроссплатформенный, модульный SIP агент с поддержкой аудио и видео.

А причем тут nodejs? Да так вышло что в большом проекте написанном на nodejs и использующем Freeswitch и его модуль portaudio в связи с некорректной работой последнего потребовалось внедрить другой sip клиент для аудио звонков.

Выбор в ходе технического совещания одного из наших разработчиков с гуглом пал на Baresip.

Подробности

Jii: Полноценное приложение с архитектурой Yii2 в браузере

Время на прочтение4 мин
Охват и читатели19K
Привет всем хабровчанам, любителям Yii и Node.js. Продолжаю серию статей про Jii, на сей раз настала очередь рассказать о том, что Jii можно использовать в браузере.


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

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

Тонкости модульной системы ECMAScript 2015 (ES6)

Время на прочтение5 мин
Охват и читатели120K
Уже около полугода я пишу на ES6 (который в итоге назвали ES-2015) и ES7, с использованием бабеля в качестве транслятора. Писать мне приходилось в основном серверную часть, соответственно, использование модулей было само собой разумеющимся: до ES6 — с помощью модульной системы самой ноды, а теперь — с помощью стандартизированной семантики самого языка. И мне захотелось написать статью, в которой расписать тонкости, плюсы, подводные камни и необычности новообретенной модульной системы языка: отчасти — чтобы другим было проще, отчасти — чтобы разобраться во всём окончательно самому.

Я разберу, что такое модуль, как происходит экспорт сущностей, как происходит импорт сущностей, чем система модулей ES6 отличается от системы модулей в NodeJS.
Итак, начнем.

gulpfile в 10 строк? Легко! — упрощаем создание типовых задач

Время на прочтение2 мин
Охват и читатели27K
Последнее время почти в любом проекте требуется сделать сборку less/sass/css/js/html и т.д. файлов. Gulp является отличным решением для выполнения этих задач, это глоток воздуха после grunt'a, но и он не идеален.



Например, если нужно сделать сборку common js, используя browserify, то нужно подключать с десяток зависимостей и писать почти 50 строчек кода. Вот один из примеров.

Нужно упрощать gulpfile.js
Читать дальше →

Скорость локального форматирования чисел

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

I. Задача



В одном из скриптов столкнулся с необходимостью отформатировать вывод больших чисел для удобства чтения. Нашёл несколько рецептов, как разделить число на группы по разряду, но в обсуждениях высказывались сомнения в производительности. Решил провести несколько тестов.
Читать дальше →

Jii: конфигурация и масштабирование

Время на прочтение4 мин
Охват и читатели9.3K
Привет всем хабровчанам, любителям Yii и Node.js. Давно небыло статей про Jii, но работа не стояла на месте и мне есть что рассказать!
В этой статье мы рассмотрим способы конфигурирования приложения и запуск приложений как несколько процессов.

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

IBM сделает платформу NodeJS стандартом корпоративной разработки

Время на прочтение2 мин
Охват и читатели26K
Вчера IBM официально объявила о покупке компании StrongLoop, которая с 2013 года осуществляет профессиональную поддержку NodeJS для корпоративных клиентов.

StrongLoop — один из лидеров в секторе корпоративного NodeJS. Заказчики оплачивают подписку на продукт StrongLoop Suite и получают набор инструментов для удобной разработки приложений с использованием программных интерфейсов к облачному бэкенду, отладки, мониторинга и др.

StrongLoop известна как один из самых активных участниц проекта NodeJS, она постоянно присылает патчи для реализации новых функций и улучшения популярной платформы.
Читать дальше →

Свершилось! io.js + NodeJS = NodeJS 4.0.0

Время на прочтение1 мин
Охват и читатели4.8K
+
Совместный релиз команд io.js и nodejs увидел свет под номером 4.0.0. Функционал релиза близок к релизу io.js 3.3.0

Ключевые изминения:
Читать дальше →

Вышла в свет новая версия Node.js v4.0.0

Время на прочтение5 мин
Охват и читатели30K
Сотрудники Node.js и члены Node.js Foundation с гордостью представляют 4.0.0 версию продукта. В этот релиз включены бесчисленные часы совместной работы проектов Node.js и io.js, которые были успешно объедены в одну кодовую базу. Проект Node.js управляется командой из 44 человек, 15 из которых формируют Technical Steering Committee (TSC). Кроме того, более 100 участников были добавлены в список людей, способных влиять на развитие ядра, по сравнению с числом участников версии v0.12.7.

Node.js v4.0.0 содержит V8 v4.5, это та же версия V8, которая поставляется вместе с веб браузером Chrome сегодня. Это привносит с собой множество бонусов для пользователей Node.js, наиболее важные из которых, это поддержка ES6 стандарта, который включен по умолчанию, включая блочную область видимости, классы, типизированные массивы (Node's Buffer теперь работает поверх Uint8Array), генераторы, Promises, Symbols, строковые шаблоны, коллекции (Map, Set, и так далее) и, новая возможность для V8 v4.5 — стрелочные функции.
Читать дальше →