Регулярные выражения в тесте не поддерживают lookbehind'ы (хотя lookahead'ы прокатывают) и рекурсивные выражения и многое другое.
Упражнение с балансом должно решаться рекурсивной регуляркой/вызовом процедуры: например <(?R)*> при включенном глобальном матче.
var z = 15;
doSomeMath(z, 10);
xxx // Отличный оператор. Я единственный, кто его использует вместо TODO
doSomeMoreMath(z, 15);
Если будет объявлена глобальная переменная xxx, то ничего здесь не остановится и это будет считаться валидным кодом, т.к. в javascript существует автоматическая расстановка точек с запятой.
Имхо, оба инструмента замечательны, однако для начинающих и далёких от Ruby советую начинать с Puppet. В любом случае, чтобы вы ни выбрали — ваша жизнь станет ярче и немыслима без подобных инструментов.
Графо-ориентированные базы (а они тоже попадают под течение NoSQL) таки держат классические ACID транзакции, например Neo4j. Но род задач, под которые они подходят весьма уникален :)
Я не знаком с миром Ruby и Jammit в частности, но беглое чтение вашей ссылки говорит о том, что этот инструмент очень близок к описанному мной подходу. Однако, в документации приводится пример подключения ресурсов:
Как раз это и является плохой практикой по моему мнению. Мы здесь явно описываем зависимость от 2 списков js-файлов, и 1 списока css файлов. О недостатках такого подхода я и писал.
Упражнение с балансом должно решаться рекурсивной регуляркой/вызовом процедуры: например <(?R)*> при включенном глобальном матче.
глобальнаяЕсли будет объявлена глобальная переменная
xxx
, то ничего здесь не остановится и это будет считаться валидным кодом, т.к. в javascript существует автоматическая расстановка точек с запятой.Как раз это и является плохой практикой по моему мнению. Мы здесь явно описываем зависимость от 2 списков js-файлов, и 1 списока css файлов. О недостатках такого подхода я и писал.