Динамическое отображение логов в броузере на Node.js & WebSocket
Иногда возникает потребность динамически отслеживать появление новых файлов в определенных папках, а также выводить содеримое лог файлов в окно броузера. Данным упрощенным примером я хочу показать как это можно сделать.
Инструменты и модули для решения
Для серверной части был выбран Node.js. Но похожий пример можно аналогично реализовать и с использованием EM на руби. В данном случае подкупила библиотека
Socket.IO, а также несколько простых модулей для работы с файлами.

22 ноября 2011 года
JiLiZART всем нам
сообщил, что есть на свете полезная библиотека JSZip с открытым исходным кодом, написанная на джаваскрипте и умеющая создавать
zip-архивы (и даже, если это необходимо — с подкаталогами) из скормленных ей текстовых и двоичных данных.
Первым же комментарием к его сообщению стали
мои слова:
— Прекрасно.
— Теперь ему бы ещё распаковывать уметь.
Прошло полгода с тех пор, и можно видеть, что это естественное пожелание сбылось: очевидно, оно пришло на ум не одному мне, так что программисты принялись за дело — и в открытый
на Гитхабе исходный код JSZip добавили методы, способные служить ещё и распаковке
zip-архивов, а не только составлению их. (Подробности употребления новинок API смотрите
в документации.)
В открытом коде всегда приятно видеть, как другие люди действуют в направлении твоих мыслей.
Поклонникам же джаваскриптового движка
Node.js будет наверняка не менее приятно узнать о появлении модуля
node-zip, содержащего весь код JSZip, оформленный в качестве модуля Node. Стало быть, теперь JSZip можно запускать не только во браузере, но и на сервере, а равно и у себя на компьютере.
Сегодня у меня две причины пробежаться по клавишам.
Во-первых, после того, как на прошлой неделе я перевёл
документацию по jParser (после ознакомления
с RReverserовским примером
применения jParser при анализе BMP-файлов), мне представляется уместным перейти к напрашивающемуся последующему шагу: развить тему, поделиться с читателями моим собственным примером применения jParser для анализа несколько более сложной структуры данных. (Отчасти это станет ответом
на вопрос, который
alekciy задал, интересуясь дальнейшими примерами практического использования jParser.)

Во-вторых, ≈полгода назад
(26 ноября 2011 года) ertaquo поинтересовался, зачем мне хочется использовать Node.js в Фидонете. Тогда я сообщил, что мне просто нравится название (помню те времена, когда термин «node»
или «нóда», если употреблялся без уточнения, в российском околокомпьютерном мире по умолчанию означал узел Фидонета), но не мог привести никакого наглядного примера работающего кода, а сейчас приведу.
Итак, пример будет двойным. Предлагаю вашему вниманию анализ заголовков писем фидонетовской эхопочты, хранимой в формате JAM. Этот формат популярен в Фидонете со времён далёких и незапамятных
(в Википедии говорится, что появление JAM относится к 1993 году). Сразу скажу, что давно предпочитаю JAM другому популярному формату
(Squish), потому что этот последний хранит в заголовке у письма идентификаторы не более чем девяти откликов на него, тогда как JAM вместо массива ограниченной длины использует более гибкую структуру данных (
связный список), так что позволяет выстроить полное дерево ответов даже в самых оживлённых и разветвлённых обсуждениях.
Chocolatey — менеджер пакетов в среде Windows по аналогии с apt-get в Linux Мире.
Начал использовать по причине разработки на Node.js под Nodester. Мне хотелось бы регулярно обновлять ноду, git, dropbox, да и тот же skype, при этом, не заморачиваясь со скачиванием msi инсталяторов и установками, а просто обновить одной командой:
cup all
jParser делает простым чтение структур данных из двоичных файлов джаваскриптом.
- Вы один раз описываете структуру, анализ её происходит автоматически.
- Процесс анализа данных может быть расширен самописными функциями. Чем упрощается разбор нетривиальных файлов.
- jParser действует и во браузере, и в NodeJS, потому что работает на основе jDataView.
API
Элементарные структуры:
- Целые числа без знака: uint8, uint16, uint32
- Со знаком: int8, int16, int32
- Дробные с плавающей точкой: float32, float64
- Строковые: char, string(len)
- Массив: array(type, len)
- Положение: tell, skip(len), seek(pos), seek(pos, func)
Методы jParser:
Описание задачи
Часто у разработчиков веб приложений, а также разработчиков для мобильных платформ возникает задача отсылать нотификации о завершении некоторого события. Например: уведомить пользователя о запланированной встрече, звонке, определенной записи в расписании (todo листы) или просто создать напоминание о любом другом действии в будущем.

Суть такова: node.js не дает готового решения для создания проекта. Первый мой проект на node.js состоял из одного coffeescript файла и run.js для запуска из IDE. Когда роутов было пять штук, все было замечательно, но когда проект оброс моделями и роутами, это превратилось в ад. Решают эту проблему разными способами, кто-то используй hub, кто-то global, кто-то все в один файл заносит.

Мэтью Дэйли
(Matthew Daley) выяснил, что в коде
HTTP-сервера, встроенного в движок Node, есть такая ошибка (или даже просто опечатка: используется
«size» вместо
«size_»), из-за которой специально сформированным запросом к серверу можно добиться того, что сервер существенно переоценит реальный размер запроса и включит в него содержимое соседних чужих
HTTP-запросов (например, частью переданной на сервер переменной станут
чьи-нибудь чужие cookies; и если это будет переменная из числа тех, которые тотчас же выводятся на экран, то крякерская атака легко может оказаться успешною).
Всем пользователям Node версий 0.5.x
и 0.6.x следует без промедления обновить Node
до версии 0.6.17, а обладателям экспериментальных версий
из ветки 0.7 следует обновить их
до 0.7.8. (Версии 0.4.x не содержат этой ошибки, однако на вашем месте я бы их всё равно обновил, ибо они старьё.)
Об этом опубликовано
оповещение во блоге Node.
Вышла версия 0.3 node.js фреймворка для разработки веб приложений
Autodafe.
У фреймворка появился сайт
autodafe.ws, который стремительно обрастает документацией и статьями. (Документация на сайте генерируется автоматически из кода, задокументированного по правилам jsdoc. Поэтому если вы хотите быстро поднять сайт с документацией вашего проекта, можете спросить меня «как?».
В новой версии фреймворка значительно улучшена работа с моделями, писать классы для сохранения данных стало удобнее, а сами они стали выглядеть красивее. Множественное задание атрибутов, их неявная фильтрация во время присвоения, асинхронная валидация моделей и изумительное использование статических методов моделей несомненно сделают вашу жизнь лучше и проще.
Работа с моделями в Autodafe.
Добрый день.
В этой статье я расскажу о том, как реализовать систему мониторинга активности пользователей с помощью Node.js и Socket.IO. Выглядит это примерно так: