Метка «node.js» - 18

Мы уже некоторое время пишем развесистую клюкву на node.js. И хоть будующее наше туманно, образовались всякие полезные штуки и наблюдения, которыми захотелось поделиться :). Так получилось, что есть проект, где тонна скриптов на старом добром php достигла своего предела. Ну и конечно захотелось «все взять и переписать нормально», как обычно.

Рыбу того, к чему стремимся, можно тыкать мышкой и палочкой здесь: dev.nodeca.com/, а сам код выложен на гитхабе.

Поскольку серьезные прессинги в виде денег и сроков отсутствовали, то можно было полностью погрузиться в программирование, а не «гнать продукт». Хотелось взять что-то эдакое, с подвывертом, чтобы размять мозг. На полном серьезе я рассматривал node.js / ruby / python. Не могу сказать, что составил миллион метрик и открыл волшебную формулу, которая подсказала превосходство node.js. Скорее, захотелось поковыряться с «прозрачным» рендерингом шаблонов на сервере и клиенте. Ну и чем-то приглянулась заточка исключительно на асинхронность, хотя сам способ (коллбеки) может вызывать нарекания.

Если вы начнете делать на ноде что-то сложнее школьной лабораторки, то быстро обнаружите, что «проект молодой». Библиотеки крайне сегментированы. Наряду с прекрасными вещами, вроде jade, stylus, mongoose и т. п., вы наткнетесь на полное отсутствие вещей, которые давно реализованы в других языках. А якобы аналоги будут на уровне «напевал рабинович». В общем, вместо разработки своего софта, пришлось «вносить мощный вклад в опенсорц». Это первое предупреждение для тех, кто всерьез думает над выбором ноды для бизнес-проекта — адекватно оценивайте наличие инструментов и их качество. Конечно, можно было по-быстрому наколхозить костылей. Но в нашем случае не было жесткой ориентации на финальный продукт. Поэтому время от времени возникали рывки вбок, о которых я расскажу ниже.
Читать полностью »

Предисловие

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

Поиски

Долгое время я обходился консервативными методами отладки в виде периодического вывода объёма используемой памяти и времени выполнения критических участков кода в консоль, но настал момент, когда необходимость наличия качественного инструмента встала очень остро.

Первым делом я решил посмотреть не оправился ли node-inspector, который после перехода на node.js 0.6.x перестал поддерживать профилирование CPU и Heap. Оказалось, что в новой версии node-inspector неработающий профайлинг окончательно исключён и теперь это просто debugger. Немного покопавшись в коде старой версии, мне всё же удалось завести профилирование CPU и Heap на node 0.8.x, однако это решение не было идеальным. Чтобы вывести его из состояния «поделки» необходимо было бы заменить устаревший интерфейс WebKit-консоли на современный, переписав приличное количество кода и исправить некоторые проблемы производительности. В целом, решение на основе консоли WebKit мне кажется очень не гибким, поэтому я бросил эту затею и продолжил поиски.

Вот оно

Читать полностью »

Вы не любите смотреть логи в консоли или вам не позволяют их любить, а следить за ходом дел как-то нужно?

PuperGrep — просмотрщик логов в браузере, который работает как tail -F, grep и подсвечивает самое интересное в вашем браузере. Или даже на вашем android, iPhone или iPad.

Скриншот PuperGrep

Читать полностью »

Миллион одновременных соединений на Node.js

TL;DR:

  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

Читать полностью »

Робот разведчик на Ubuntu и Node.js

Группа университетских сотрудников в ходе своей квалификационной работы собрала модель робота, предназначенного для работы в опасных условиях, таких как военные действия или места катастроф. Самым любопытным моментом здесь, скорее, является не сам факт наличия такого робота — подобного уже хватает — а то, что робот управляется компьютером с установленной Ubuntu, при этом возможность асинхронного выполнения операций манипуляторами робота обеспечивается при помощи Node.js.
Читать полностью »

Что такое вложенный MVC? Как в одном проекте уживаются три бэкенд-сервера Node, php-fpm и IIS? Можно ли запустить музыкальный сервис на своем ноутбуке? И как вообще работает tracksflow.com изнутри?

Схема tracksflow.com

Читать полностью »

CLI скрипт на CoffeeScript — легко!

Я уже довольно давно использую coffee-консоль как калькулятор. Удобно!

И вот недавно задумался — почему бы не попробовать написать CLI-скрипт на CoffeeScript от начала и до конца? И написал!
Читать полностью »

Приветствую, уважаемые читатели.

Для многих этот пост будет не новостью, но в связи с тем, что у меня часто интересуются — в какой среде я занимаюсь разработкой node.js проектов, говорят: «Как жаль, что в Netbeans нет модулей для работы с node.js проектами», я решил коротко описать — как заставить Netbeans 7 работать с node.js проектами в надежде, что кому-то это все-таки окажется полезным.
Тем, кто в теме, дальше можно не читать, хотя и читать особо не придется.Читать полностью »

dotCloud — облачная платформа для хостинга веб-приложений. Бесплатный аккаунт хорошо подходит для обучения.

Ее преимущества:

  • можно бесплатно использовать два сервиса. В отличие от heroku, можно сделать полноценное приложение с базой данных.
  • файловая система доступна для записи — удобнее будет вести логи
  • хорошая документация.

Но есть и недостатки:

  • бесплатные сервисы «засыпают», если ими никто не пользовался последних полчаса. Это означает, что возможна такая ситуация: вы заходите на свой сайт и вместо него видите стандартную страницу сервиса с просьбой подождать. Через какое-то время (до нескольких минут) сервис «просыпается» и начинает работать, как положено.
  • по умолчанию используется версия node 0.4.10. Но это можно исправить.

Читать полностью »

Несмотря на то, что главным моим хобби так и остаются роботы, я трачу немало усилий, чтобы оставаться в трендах своей основной стези – программирования. Волей судьбы недавно удалось познакомиться с Node.js, я узнал о его web фреймворке express, подружился с новым для себя template engine Jade и в довершение ко всему связал все это с папкой в Dropbox.
image
В этом посте я постараюсь коротко рассказать, как можно организовать web-сервис для хранения файлов, используя лишь бесплатные решения.
Всех заинтересованных – прошу под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js