URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 90323
[ Назад ]

Исходное сообщение
"Facebook представил Watchman, открытый инструмент для отслеж..."

Отправлено opennews , 05-Июн-13 14:15 
Инженеры из компании Facebook анонсировали (https://www.facebook.com/notes/facebook-engineering/watchman...) новый открытый инструмент Watchman (https://github.com/facebook/watchman), в рамках которого создан сервис для отслеживания изменения и поиска файлов в заданных иерархиях директорий. При обнаружении факта изменения содержимого файла  Watchman позволяет выполнить определённое пользователем событие, привязанное к типу файла и характеру изменений.


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


Код проекта написан на языке Си и распространяется (https://github.com/facebook/watchman) под лицензией Apache 2.0. Программой поддерживается широкий спектр средств отслеживания изменений в файловой системе: inotify в Linux, kqueue в Mac OS X, FreeBSD 9.1 и OpenBSD, port_create в   Illumos и Solaris.

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

Допускается создание достаточно сложных фильтров, определяющих правила выбора файлов для привязки к действиям. Возможно определение исключений, учёт времени изменения, использование регулярных выражений PCRE и  логических операторов, задание таймаута перед запуском команды, создание многоступенчатых правил (например, запуск действия когда файл А изменён после изменения файла Б). Watchman  также поддерживает большинство возможностей утилиты find, но отличается тем, что осуществляет выборку по предварительно сформированному индексу, без перебора содержимого всей иерархии директорий на каждый запрос. Также поддерживается работа в режиме накопления лога изменений содержимого файловой системы. Кроме запуска приложений для выполнения действий поддерживается организация взаимодействия через систему подписки на изменения, при котором внешняя программа открывает сокет и ждёт поступления сигналов о наличии изменений.


Простейший пример использования сервиса выглядит следующим образом:


Запускаем мониторинг директории ~/src:

<font color="#461b7e">
   $ watchman watch ~/src
</font>


Указываем о необходимости запуска программы buildme при изменении CSS-файлов (путь к файлу передаётся в качестве аргумента при запуске buildme):

<font color="#461b7e">
   $ watchman -- trigger ~/src buildme '*.css' -- minify-css
</font>

URL: https://www.facebook.com/notes/facebook-engineering/watchman...
Новость: http://www.opennet.dev/opennews/art.shtml?num=37101


Содержание

Сообщения в этом обсуждении
"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:15 
Чем он лучше связки крон + %система версионирования%?

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:21 
Тем, что не костыль на баше, а специально заточенная под задачу софтина.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:28 
> Тем, что не костыль на баше

Не костыль - значит, не юниксвейно. Можно закaпывать.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:30 
> Не костыль - значит, не юниксвейно. Можно закaпывать.

Ждем когда вы перепишете на баше кернел. Чтобы стало совсем уж юниксвэйно.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:33 
Мы работаем над этим. Столкнулись с проблемой: наше ядро нуждается в интерпретаторе. Совать для этого сишный блоб баша - поттерингизм в терминальной стадии. Должно быть все на чистых скриптах, включая прошивку биоса. Но вот кто их будет интерпретировать - пока непонятно.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 15:00 
> кто их будет интерпретировать - пока непонятно.

Барон Мюнхаузен, разумеется. Он специалист по решению таких задач :). В честь его умения вытаскивать самого себя за шнурки ботинок из болота это прямо так и называется - bootstrap.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено anonymous , 05-Июн-13 15:07 
глубокоуважаемый барон вытаскивал себя за волосы, но суть та же.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 15:13 
> глубокоуважаемый барон вытаскивал себя за волосы, но суть та же.

Кэп, кстати, намекает, что процессор - это такой аппаратный интерпретатор машинных команд. Вот так вот просто. Так что кексам надо всего ничего - сделать свой проц который будет баш на уровне аппаратных автоматов обмолачивать. И задача станет решаемой :)


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 18:02 
> Кэп, кстати, намекает, что процессор - это такой аппаратный интерпретатор машинных команд.
> Вот так вот просто. Так что кексам надо всего ничего -
> сделать свой проц который будет баш на уровне аппаратных автоматов обмолачивать.
> И задача станет решаемой :)

А не будет ли использование аппаратного CPU нарушением принципов UNIX? Ведь кристалл - это не скрипт, туда нельзя напихать отладочных вызовов, или поменять что-то без пересборки. Т.е. почти как блоб.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 06:28 
> Ведь кристалл - это не скрипт,

С учетом того что исходники современных чипов как правило пишут на языках формального описания (VHDL, etc) - оно конечно, не скрипт. Но уж точно вид программы.

Можно ли менять на ходу? Хм, вообще, технологии придуманы. Вон в х86 процах например можно перегружать кусок микрокода, до некоторой степени меняя логику работы CPU. Что позволяет фиксить баги даже после того как проц уже выпущен с фабрики. А в FPGA и вовсе - какой bitstream зальешь, тем оно и станет. Значит надо что-то типа FPGA программируемого на bash, для достижения полного делириума поклонниками культа :)


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 17:39 
Bootstrap - это не шнурок, а такая небольшая лямка на пятке ботинка, чтобы за нее можно было тянуть при надевании ботинка на ногу.
Сам термин "bootstrapping" произошел от американской поговорки, но многие считают, что именно от истории про барона Мюнхгаузена из-за схожести принципа.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено cmp , 05-Июн-13 15:39 
От чего же не юниксвейно-то? нафиг цсс, мониторить каталог расшаренный по tftp для цисок и прочего сетевого хлама, а то ловить событие в rsyslog который в центосе жутко древний от демона который через сутки работы забивает на запись отладочных мессаг в лог и который приходится перегружать по крону из-за этого, вот это костылище.

Странно, что ничего подобного нет - создаем /cfg, монтируем туда tmpfs, вешаем эту прогу и кучу скриптов или бинарей, которые, например при записи 10.0.0.1/24 в /cfg/net/eth0/ipv4/addr добавляют алиас на интерфейс или в зависимости от записи/перезаписи вешают ip, делая ip addr flush dev eth0 перед этим. - прозразно, просто, униксвейно, нафиг уродцев типа системд, хотим запустить свой исполняемый файл перед/после сбросом/установкой ip делаем echo my_script > /cfg/net/ipv4/eth0/addr_(after|before)_change, что может быть удобнее и проще.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 21:35 
> что может быть удобнее и проще.

Нормальные системы управления конфигурацией, типа puppet. Гораздо удобнее и проще ваших костылей. И давно реализованы.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено cmp , 06-Июн-13 05:57 
> Нормальные системы управления конфигурацией, типа puppet. Гораздо удобнее и проще ваших
> костылей. И давно реализованы.

Puppet (англ. марионетка) — кроссплатформенное клиент-серверное приложение, которое позволяет централизованно управлять конфигурацией операционных систем и программ, установленных на нескольких компьютерах. Puppet написан на языке программирования Ruby.

Да идите вы с вашим руби куда-нибудь, реализуйте его поддержку для всех встраиваевых платформ, задолбали со своими перлами и питонами, есть система, а есть узерспейс тулс, и нехрен пихать второе в первое.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 12:22 
> Да идите вы с вашим руби куда-нибудь, реализуйте его поддержку для всех
> встраиваевых платформ, задолбали со своими перлами и питонами, есть система, а
> есть узерспейс тулс, и нехрен пихать второе в первое.

Точно! Система управления конфигурацией должна быть реализована непосредственно в ядре, безо всякого юзерспейса! Дадим достойный ответ поттеринговской блоатвари!


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 06:31 
>> что может быть удобнее и проще.
> Нормальные системы управления конфигурацией, типа puppet.

Ололо, указанная штукенция - это монитор изменения файлов. Казалось бы, при чем здесь puppet, который средство группового администрирования прежде всего?


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 12:20 
При том, что некий адепт культа костыля предлагает на базе монитора изменения файлов сделать велосипед для группового администрирования (см. выше).

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено cmp , 06-Июн-13 15:08 
Какого черта, причем тут групповое администрирование, я предложил вариант при котором не надо еб..ть мозг зайдя под юзером на линукс и набрав ifconfig увидеть - комманд нот фаунд, потому что, мля, кто-то решил, что нефиг делать каталогам sbin в переменной PATH обычных узеров.

Кстате если уж, то расшаривайте /cfg через sftp и меняйте параметры системы по сети, и не надо ставить никаких дополнительных пакетов, не хотите фтп, юзайте smb или что душа пожелает.

Вот это униксвейно. а ваш пупет вместе с питоном засуньте себе поглубже.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 16:22 
А реагировать на изменения в каталоге /cfg кто будет? Ядро?

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Kroz , 05-Июн-13 21:14 
> Тем, что не костыль на баше, а специально заточенная под задачу софтина.

bash и не-bash - это все лишь инструменты. И на bash и на C можно написать как полное убожество, так и нормальную вещь.

Повторю вопрос: чем лучше других (inotify, например) с точки зрения результата?


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 21:37 
> Повторю вопрос: чем лучше других (inotify, например) с точки зрения результата?

inotify - это технология. watchman - это решение, использующее данную технологии. Полноценное и универсальное, в отличие от PoC типа inotifywatch.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 14:30 
>  Чем он лучше связки крон + %система версионирования%?

Тем что пользует средства современных операционок вместо тупого и ресурсожоркого поллинга по крону. Не, если ресурсы девать некуда, ждать между запусками скрипта не в облом, а тупняки при обходе иерархии не напрягают - можно и по крону. А можно вот и лучше сделать, что актуально когда задача не "одноразовая".


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено username , 05-Июн-13 14:25 
О  боги, я представляю с помощью каких костылей работает fb если им нужны такие тулзы!

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 08:02 
> О  боги, я представляю с помощью каких костылей работает fb если
> им нужны такие тулзы!

Вся вебня так работает. Тоже мне, открытие века....


"Watchman - весьма интересно"
Отправлено fi , 05-Июн-13 14:52 
Думал в нашем проекте написать что-то подобное, а тут уже готовое решение. Попробуем, если будет как заявлено, включим в нашу систему.

"Watchman - весьма интересно"
Отправлено hshhhhh , 05-Июн-13 17:22 
http://www.opennet.dev/openforum/vsluhforumID3/90323.html#17

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено StreSS.t , 05-Июн-13 15:10 
Либо пере изобрели либо еще сильно курили (там первый коммит от 2010 года)

https://github.com/greggoryhz/Watcher

Пользую уже 2 года.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено fa , 05-Июн-13 15:18 
все уже давно написано

while inotifywait -e modify ~/src; do
    buildme '*.css' -- minify-css
done


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено имя , 05-Июн-13 17:59 
У вас слишком простые исходники. man inotifywait, /-r

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 16:03 
dtrace такое тоже умеет

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 06:35 
> dtrace такое тоже умеет

Система отладки - для мониторинга проекта и пересборки? Спору нет, холодильником тоже можно гвозди забивать при сильном желании. Просто очень неудобно.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено FedeX , 05-Июн-13 16:23 
>вместо пересборки всего проекта применяется тактика инкрементальной пересборки только изменённого кода.

мне кажется, или все нормальные компиляторы нормальных языков программирования и так так поступали уже десятки лет назад? Компиляторы Паскаля например..


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Crazy Alex , 05-Июн-13 16:34 
Если компилатор какой-то подобной глупостью занимается - в топку его. Мало ли в каких условиях его запускали и почему надо перебилдить. Это дело внешней тулзы. Но я как-то не припомню таких идиотских компиляторов. А паскалевские (особенно для какого-нибудь простенького BP7) просто очень шустры, там время компиляции не всегда и заметно.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено hshhhhh , 05-Июн-13 17:25 
Возможно, под "компилятор" он имел в виду что-нибудь типа "эклипс"

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено www2 , 05-Июн-13 17:40 
make

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено FedeX , 05-Июн-13 18:26 
да пожалуй я имел ввиду билдер, а не компилер - взять к примеру Delphi, там просто это все было интегрировано. Помню что он создавал dcu-файлы - скомпилированные модули, и при следующей компиляции пересобирал только измененные pas-модули. Это было более двадцати лет назад

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 21:40 
> да пожалуй я имел ввиду билдер, а не компилер - взять к
> примеру Delphi, там просто это все было интегрировано. Помню что он
> создавал dcu-файлы - скомпилированные модули, и при следующей компиляции пересобирал только
> измененные pas-модули. Это было более двадцати лет назад

Последние 20 (а то и больше) лет утилита make работает именно так. И ее можно использовать при сборке не только из пасквиля, но и практически любого компилируемого языка.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено FedeX , 06-Июн-13 18:07 
ну make вообще ущербный инструмент и на самом деле не умеет того что умеет любой билдер для паскаля так что сравнение не уместно. В С/С++ для которых в основном используется make для сборки вообще нет понятия модуля, а то что есть - костыли препроцессора лишь имитирующие модульность.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено DJa , 05-Июн-13 17:38 
Теперь изменения ваших файлов в вашей хронике на ФБ :)

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено anonymous , 05-Июн-13 17:38 
фейсбук написал свой велосипед, хотя уже давным-давно есть известный lsyncd

ну хотя это их стайл. скоро свой язык напишут)


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 18:05 
> фейсбук написал свой велосипед, хотя уже давным-давно есть известный lsyncd

А чего не dropbox сразу? Или ubuntuone?


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено anonymous , 05-Июн-13 18:34 
а что нет?

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 21:41 
> а что нет?

А еще можно резиновым х*ем гвозди заколачивать.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено ip1981 , 05-Июн-13 18:11 
Программа сливает всё в FBI^W  Facebook?

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 05-Июн-13 18:35 
А Linux сливает все твои данные на kernel.org, ага.

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено wolfovich , 05-Июн-13 23:34 
Не совсем понятно как его запустить как службу и общаться с помощью json

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Sokoloff , 05-Июн-13 23:42 
Странно вспомнили про inotify, но не упомянули incron, а это прямой аналог.


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 01:27 
как это инжИнеры фб не запилили код на руби,
видимо там еще кто то остался кто знает С
лол

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено pavlinux , 06-Июн-13 01:29 
Пля, баян великий...

1. В лине уже стотыщь мильонов лет есть inotify/dnotify/fanotify и куча софта для управления ими.
2. Из IRIX 6.0 (1994 год) мигрировал fam (File Alteration Monitor), бинарь http://oss.sgi.com/projects/fam/,
и перловый фреймворк к нему http://search.cpan.org/~jglick/SGI-FAM-1.002/lib/SGI/FAM.pm


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 06-Июн-13 08:04 
> Пля, баян великий...
> 1. В лине уже стотыщь мильонов лет есть inotify/dnotify/fanotify и куча софта
> для управления ими.
> 2. Из IRIX 6.0 (1994 год) мигрировал fam (File Alteration Monitor), бинарь
> http://oss.sgi.com/projects/fam/,
> и перловый фреймворк к нему http://search.cpan.org/~jglick/SGI-FAM-1.002/lib/SGI/FAM.pm

Весь СПО такой же. Слышал звон - не знаю, где он - а, напишу новый велик!


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено тигар , 06-Июн-13 10:46 
>kqueue в Mac OS X, FreeBSD 9.1

не знаю, когда оно там появилось в мокос, но во фре оно с 4.1 есть, интересно, чего это про 9.1 написано:\


"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 08-Июн-13 19:02 
еще одни пыходети не осилили http://pythonhosted.org/watchdog/

"Facebook представил Watchman, открытый инструмент для отслеж..."
Отправлено Аноним , 21-Мрт-19 03:35 
От вы тупни старообрядные, пишу из будущего и уверяю, что данная утилита нашла широкое применение в прикладном программировании, без неё совершенно не обойтись!!!