Ищешь вакансии со словом Perl — находишь упаковщика:

Ищешь вакансии со словом Perl — находишь упаковщика:
Если собирать Имиджмеджиком многостраничный PDF-файл из картинок разрешением 600 DPI, он ругается на недостаточный размер памяти даже для файлов, которые не такие и большие
convert-im6.q16: cache resources exhausted `0002-bw.png' @ error/cache.c/OpenPixelCache/4095.
convert-im6.q16: cache resources exhausted `0003-bw.png' @ error/cache.c/OpenPixelCache/4095.
Раньше оно работало, но сломалось в процессе обновления системы — в ходе него изменился файл /etc/ImageMagick-6/policy.xml
— тот самый, где по умолчанию запрещено создавать PDF — в нём же задаются и предельные размеры картинок и используемых для их обработки ресурсов. Я эти параметры уже менял в 2018 году, ещё живя под Ubuntu — сейчас у меня Debian, от которого Убунту и происходит. Значения параметров в сохранённой копии конфигурационного файла отличаются от того, что появилось после обновления. Увеличим парочку параметров вдвое:
<policy domain="resource" name="area" value="256MP"/>
<policy domain="resource" name="disk" value="2GiB"/>
После этого сборка идёт как надо.
Лишь недавно заметил, что площадь всё-таки указывается в мегапикселях (MP
), а не в мегабайтах, как у меня почему-то было раньше. При этом в policy.xml
допустимы два варианта: традиционный двоичный, равный 2²⁰ = 1048576 байт, обозначается как MiB
, а то, что обозначают как MB
— мегабайт десятичный, по системе СИ.
Метод console.log
достаточно популярен у пишущих на JavaScript — он позволяет выводить отладочную информацию, справляясь как со скалярными данными, так и с объектами.
Недавно выяснил, что иногда console.log
ведёт себя подобно функции printf
из си-подобных языков: первый свой аргумент воспринимает как описание формата, где ищет начинающиеся с процента последовательности, а выводимые по описанному формату данные начинаются со второго аргумента. Так, например,
console.log('%d', 77/64)
выведет целое число 1, а
console.log('%f', 77/64)
выдаст 1.203125, что получилось бы и без '%f'
. При этом бо́льшая часть знакомых по Си или Перлу форматов вообще не работает — встретив такое, console.log
посчитает первый аргумент обычной строкой, которую надо вывести — так
console.log('%x', 48879)
выведет %x 48879 вместо ожидаемого слова beef.
Но зато у console.log
нашёлся формат %c
, позволяющий применить к выводимому тексту стили, заданные вторым параметром — так можно раскрашивать вывод
Пример использования — codepen.io/jscottsmith/pen/VLzMLo
Writer — текстовая часть пакета LibreOffice — аналог Microsoft Word — имеет странную особенность: если поставить в диалоге замены галочку «Регулярные выражения», то выражение \n
будет иметь разное значение в зависимости от того, где его написать: в строке поиска оно соответствует переводу строки ↲, вставляемому сочетанием клавиш Shift+Enter, но в строке замены это же самое будет уже концом абзаца ¶, который вставляется одиночным нажатием клавиши Enter.
Как же заменить концы абзацев на переводы строк?
На форуме по LibreOffice нашёлся рецепт:
Я проверил в LibreOffice 6.1.5.2 — работает.
Похоже, странные потомки рабовладельцев дотянулись и до Komodo IDE: там вслед за Гитхабом додумались переименовать ветвь master в осторожное main.
Недавно вышла Komodo IDE 12 — интегрированная среда разработки, где, помимо прочего, есть, как и раньше, отладчик перловых скриптов, прогон тестов, профилировщик, г̶у̶й̶^W графический интерфейс к системам контроля версий и ещё дофига всего. В сильно похожем на неё редакторе Komodo Edit, который стал бесплатным ещё раньше, этих плюшек нет — есть лишь схожий вес.
Теперь оно всё бесплатное, но, увы, радоваться рано:
во-первых, глюки и тормоза никуда не делись, потому что внутри — всё тот же файрфокс, питон с библиотеками и яваскрипт суммарным весом в четверть гигабайта,
во-вторых, Komodo IDE теперь интегрируется с ActiveState Platform тех же авторов и требует для чего-то, выходящего за пределы простого редактирования и связи с СКВ, загадочных танцев с бубном: то, что раньше работало «из коробки» (например, отладка и запуск скриптов), теперь не запускается никак, даже после р̶а̶с̶к̶у̶р̶и̶в̶а̶н̶и̶я̶ ̶м̶а̶н̶о̶в̶^W^W внимательного чтения документации.
Если оно не заработает как надо, придётся снова править код, например, в Geany, а отлаживать и коммитить — с командной строки.
Git умеет «из коробки» раскрашивать то, что выводит в консоль, а Subversion — нет. Надоело руками каждый раз перенаправлять вывод svn diff
в colordiff — написал простенькую раскрашивалку. Когда-то умела красить только вывод подкоманды status
, теперь понимает blame (praise, annotate, ann), diff (di), help (?, h), status (stat, st) — и сами подкоманды, и их синонимы.
https://github.com/shoorick/svn-st-color
Когда-то я настраивал запуск тестов перловых Mojolicious-приложений прямо из IDE Geany. Потом довелось попробовать микрофреймворк Slim для PHP — ну да, работает, хотя тесты там более многословные по сравнению с перловыми.
А теперь попробуем настроить Geany для запуска тестов в современных PHP-приложениях — например, для использующих уже упомянутый Slim. Для запуска тестов в PHP существует PHPUnit — это не единственный инструмент, хоть и весьма популярный. Настройки тестирования зависят от проекта — в каждом проекте они могут быть своими. В Geany 1.27 настройки вызываются через меню: Project → Properties → вкладка Build либо Build → Set Build Commands:
^(.+):(\d+)$
^W
дважды щёлкнуть по сообщению, можно быстро перейти к соответствующей строке, кроме того, все строки, вызвавшие ошибки тестирования, выделяются подчёркиванием красной волнистой линией.После настройки тесты можно будет запускать кучей разных способов: через меню, кликом по кнопке с кирпичом, а также с клавиатуры (по умолчанию — клавишей F9).
Модуль Test::Mojo позволяет проверить, нашлось ли нужное количество DOM-элементов:
$t = $t->element_count_is('div.foo[x=y]', 5);
$t = $t->element_count_is('html body div', 30, 'thirty elements');
Но так можно проверить лишь равенство ожидаемого и полученного, в то время как иногда нужны другие операции.
$t->get_ok("$ROOT/some.xml");
my @items = $t->tx->res->dom->find('rss channel item')->each;
ok scalar @items > 42, 'More than 42 items in some.xml';
Пробую вышедший недавно четвёртый pgAdmin — а это (внезапно!) веб-приложение, как сейчас модно. Ладно хоть, не тащит за собой ни хром, ни мозиллу, а запускается в новой вкладке существующего браузера. Написано на питоне, весит 22 МБ, из коих половина — картинки, клиентские скрипты, шрифты да переводы.