Автор: Ферри Боендер.
Оригинал: «mmv: Mass moving and renaming files», 13 июня 2007 г.
mmv — консольная утилита, позволяющая перемещать, переименовывать, копировать, соединять и связывать большие объемы файлов одной командой. Это особенно полезно, если требуется переименовать много файлов с похожими, но хитрым образом различающимися именами.
Хотя mmv делает много всего кроме переименования файлов, в этой статье я говорю только о переименовании, потому что именно его я делаю чаще всего.
Пусть в директории есть следующие файлы:
foo1.png
foo2.png
bar3.png
Вам нужно, чтобы все файлы с именами на «foo» начинались на «bar». Здесь это просто сделать вручную, но что если файлов будет сотни? Возможно, вам придется написать скрипт. Но mmv — прекрасное средство для нашей задачи:
mmv "foo*.png" "bar#1.png"
Команда выше приведет к файлам
bar1.png
bar2.png
bar3.png
Mmv подбирает файлы по данному вами исходному шаблону. Далее выбранные файлы переименовываются в соответствии со вторым аргументом (целевым шаблоном). Исходный шаблон может содержать все привычные заполнители интерпретатора, такие как «*», «?» и «[]». Помните, что шаблоны нужно заключать в кавычки, иначе они будут раскрыты интерпретатором и mmv их не поймет!
«#1» в целевом шаблоне — индекс заполнителя. Он совпадает с первым заполнителем, найденным в исходном шаблоне, «#2» — со вторым, и так далее. Mmv заменяет все вхождения индексов соответствующим текстом, попавшим под заполнитель в исходном шаблоне. В примере выше «#1» совпадает с числом после «foo» и до точки. Обратите внимание, что «??» — это два заполнителя, каждый из которых совпадает с одним символом!
Шаблоны также можно использовать для обмена фрагментов в именах:
abc_123.txt
def_456.txt
ghi_789.txt
mmv "*_*.txt" "#2_#1.txt"
Команда выше даст
123_abc.txt
456_def.txt
789_ghi.txt
Другая хорошая штука, которую можно делать в mmv — замена регистра текста, совпавшего с заполнителем. Поместите «l» (нижний регистр) или «u» (верхний регистр) до «#» и числа в целевом шаблоне:
john.txt
pete.txt
mmv "?*.txt" "#u1#2.txt"
Это дает
John.txt
Pete.txt
Mmv пытается быть безопасным, насколько это возможно, чтобы избежать противоречий в переименовании, при которых файлы могут удаляться. Если, например, результат переименования приведет к тому, что два разных файла получат одно имя (таким образом, один будет перезаписан), mmv выдаст предупреждение и прекратит процесс.
Mmv также пытается верно обходиться с переименованиями, которые приводят к тому, что целевой файл по имени совпадает с одним из исходных. К примеру:
a
aa
mmv "*" "a#1"
Это не перезапишет файл «aa» содержимым «a», а даст, как и ожидалось
aa
aaa
Mmv есть в Debian по крайней мере с версии 3.1 (Sarge) и в Ubuntu после Warty. Для установки сделайте «apt-get install mmv».
Автор: Мириам Руиз.
Оригинал: «TreeLine: a versatile tree-like structured custom data manager», 10 июня 2007 г.
Вокруг вас валяется много клейких записок с самыми разными полезными заметками? Или много списков книг, фильмов, паролей, контактов, планов? Можете найти их при необходимости? Возможно, вам поможет TreeLine. Он может служить планировщиком или менеджером персональной информации. В основном, он хранит самую разную информацию (текст, гипертекст, числа, даты, время, биты, ссылки, и др.); данные собираются в определяемую пользователем древовидную структуру, так что их легко организовывать.
Каждый из узлов может содержать несколько полей, таким образом формируя небольшую базу данных. Выходной формат может быть определен для каждого узла, вывод показывается на экране, выводиться на печать, экспортируется в гипертекст. Несколько типов узлов с различными наборами полей собираются в один файл.
Окно TreeLine разделено на две панели с древовидной структурой и разного рода данными о выбранном узле. Данные показываются в виде выходного и редактируемого текста, списка названий узлов, которые можно менять обычными методами редактирования текста.
По умолчанию, TreeLine хранит файлы в виде XML, но есть возможность автоматического сжатия или шифрования. Данные можно также экспортировать в HTML. Вы также можете экспортировать XSLT файл, чтобы работать с XML. Импорт-экспорт существует для многих других форматов, в том числе таблиц с разделением табуляцией и текста с выравниванием, закладок Mozilla и XBEL, XML (программу можно использовать как примитивный XML-редактор). Есть импорт простого текста и файлов Treepad.
У программы есть много других полезных возможностей, вроде сортировки или фильтрования узлов, изменения пиктограммы узла, вывода в формате, обусловленном данными, проверки правописания текстовых данных, автоматической классификации данных. Пользовательский интерфейс и документация доступны на английском, немецком и французском языке.
TreeLine написан на Python и использует библиотеку Qt toolkit. Если вы хотите использовать проверку правописания, потребуется или GNU aspell (что предпочтительно), или ispell. Treeline можно получить в Ubuntu и Debian при помощи apt-get.
Автор: Алекс Гретлейн.
Оригинал: «OTS: Command line text auto-summary», 6 июня 2007 г.
Open Text Summarizer — это и библиотека, и консольная утилита (разработанная Надавом Ротемом), резюмирующая текст. По функциональности это похоже на то, что входит в Microsoft Word и доступно во всех родных приложениях Mac OS X. OTS подсчитывает частоту появления слов и на основе нее присваивает приоритет предложениям. На вывод передается сжатая версия текста, занимающая выбранный вами объем от первоначального (по умолчанию — 20%). Автоматизированный процесс вроде этого никогда не будет идеальным, и какие-то тексты поддаются такому «пересказу» лучше других. Работа на уровне предложений означает, что лучшим образом обработается хорошо организованная проза, а текст должен реально нести какой-то смысл. Автоматические резюме можно использовать для получения конспектов, описаний для каталога, статей в RSS-лентах, ключевых слов для SEO. Краткие, несвязные и непоследовательные тексты и перечисления должны сжиматься в тарабарщину, что дает повод для веселья. Хотя работа OTS может быть не столь хорошей, как у несвободных аналогов (см. обзор 2003 года), это, насколько мне известно, единственная в своем роде бесплатная библиотека с открытым исходным кодом.
Разработчик сделал ролик о работе с OTS. В качестве примера вывода программы приведем сжатие раздела «Ground Rules» из Ubuntu Code of Conduct. (Что касается текстов на русском, то предлагаем читателю позабавиться самостоятельно — прим. пер.)
This Code of Conduct covers your behaviour as a member of the Ubuntu Community, in any forum, mailing list, wiki, web site, IRC channel, install-fest, public meeting or private correspondence. The Ubuntu Community Council will arbitrate in any dispute over the conduct of a member of the community. We expect members of the Ubuntu community to be respectful when dealing with other contributors as well as with people outside the Ubuntu project, and with users of Ubuntu. Your work should be done transparently and patches from Ubuntu should be given back to the community when they are made, not just when the distribution releases. If you really want to go a different way, then we encourage you to make a derivative distribution or alternative set of packages available using the Ubuntu Package Management framework, so that the community can try out your changes and ideas for itself and contribute to the discussion.
Вы можете запустить OTS по команде (вы не поверите… :-) ots:
Использование: ots [ОПЦИИ...] [file.txt | stdin]
-r, --ratio=<int> объем сжатой версии, % [по умолчанию --- 20]
-d, --dic=<string> используемый словарь
-o, --out=<string> выходной файл [по умолчанию --- 20]
-h, --html выводить в виде HTML
-k, --keywords вывести только ключевые слова
-a, --about вывести только сжатый текст
-v, --version показать информацию о версии
Для помощи:
-?, --help Показать это справочное сообщение
--usage Краткая информация по использованию
Так что, если имеется документ ucoc, и нужно получить его резюме на 10% объема ucoc-tiny, то нужно выполнить
$ ots -r 10 -o ucoc-tiny ucoc
Опция --keywords, кажется, будет исключена из последующих версий. --html выведет гипертекст, где в полной версии будет выделено то, что должно войти в краткое изложение.
OTS использует XML-словари для распознавания слов различных языков — от большинства основных с письмом латиницей до русского и иврита (всего 37). По-видимому, никаких средств определения вариантов формы одного и того же слова (например, спряжений глагола) не используется, особенно в языках вроде иврита.
OTS есть в Debian, по крайней мере, с версии Sarge, и в каждой сборке Ubuntu. Пакет называется libots0. Для установки используйте любимый графический менеджер пакетов, либо запустите
$ sudo apt-get install libots0
В обоих дистрибутивах содержится версия 0.4.2, от 2003 года. Кроме того, есть пакеты libots-dev; в апреле 2007-го вышла версия 0.5.0. Исходный код доступен на Sourceforge.
В качестве библиотеки, OTS может использоваться другими программами; вот где она уже нашла применение:
Кроме того, для платформы Plone есть расширение Haystack, определяющее связанные тексты. Модуль написан на Python и доступен в Cheese Shop.
Автор: Кари Пахула.
Оригинал: «KLone: C web programming framework», 3 июня 2007 г.
PHP известен своим стилем кодирования, в котором разметка HTML смешивается с исполняемым кодом между специальных меток <?php и >. Есть утилиты и платформы для веб-разработки в таком духе с другими языками программирования вроде Perl и Python, но есть и довольно странный выбор языка, который может использоваться для этого — C.
KLone — платформа, которая принимает HTML со встроенным C на входе и превращает его в один исполняемый файл, который является одновременно сервером и веб-приложением.
Давайте пройдемся по примеру веб-приложения «Hello World». Для начала — apt-get install klone-package Это установит KLone и несколько утилит, которые можно использовать в среде Debian. Перейдите в директорию, для которой у вас есть права записи.
$ make-klone-project create -p myhello
$ cd myhello-0.1
В директории проекта будет несколько файлов и директорий. В debian/ содержатся файлы для создания пакетов Debian с вашим веб-приложением. Мы вернемся к этому позже, а пока остановимся на директории userdata/.
$ cd userdata
$ mkdir etc
$ cd etc
Создадим файл с названием kloned.conf:
server_list my_http
allow_root yes
my_http
{
type http
addr.type IPv4
addr.port 8880
dir_root /www
}
Теперь мы готовы к работе!
$ cd ..
$ mkdir www
$ cd www
Создаем файл index.kl1 (все файлы, оканчивающиеся на «.kl1», будут обрабатываться как смесь HTML и C).
<%!
#include <time.h>
time_t now;
%>
<html>
<head><title>A hello world app for debaday</title></head>>
<body>
<h1>Hello World</h1>
<p><%
now = time(0);
io_printf(out, "Time is now %sn", ctime(&now));
%>
</body>
</html>
Теперь перейдем к корневой директории проекта и соберем сервер kloned:
$ kloned-build -o myapp userdata
$ ./myapp -F
Опция -F нужна, чтобы сервер не запускался как демон. Теперь вы можете открыть в любимом браузере http://localhost:8880/, увидеть дружественное приветствие и узнать текущее время. Но это еще не конец. Остановите веб-приложение, выполните apt-get install dpkg-dev и сделайте следующее:
$ dpkg-buildpackage -rfakeroot
$ sudo dpkg -i ../myhello_0.1*deb
Вы только что установили пакет Debian с вашим веб-приложением. Как только пакет установлен, можно быть уверенным, что приложение работает с момента загрузки системы.
Если хотите увидеть другие примеры использования KLone, посетите сайт KoanLogic.
KLone есть в Debian Etch, Ubuntu Edgy и последующих дистрибутивах.