Jargon File
Колись був такий чималенький хфайла jarg447.txt, який містив дефініції слів micros~1 чи ken та загальний опис емайтішних хакерів, їх поведінку, розваги і погляди на життя.
З тих часів, коли я його листав (> 20 тому), змінилося майже все, а меінтейнер хфайлу--Ерік Реймонд (який, до речі, хоча є і маґа, але не любить Московію)--не оновлював його з 2003 року.
Я згадав про хфайла жаргонів, коли намагався пригадати як називають software тіпів, яким є байдуже на hardware:
$ ./jargon softy
softy: n.
[IBM] Hardware hackers' term for a software expert who is largely
ignorant of the mysteries of hardware.
(Це ж я! Ну, за вийнятком 'іксперт'.)
jarg447.txt чомусь залишається ув iso-8859-1, напевно тому шо ув 2003 ще не вийнашли UTF8, а уйоб-версія видає
$ curl -Is http://www.catb.org/~esr/jargon/html/S/support.html | grep type
content-type: text/html; charset=utf-8
хоча сторінки також залишаються ув iso-8859-1. Сучасні бовзери вибирати кастомне кодування сторінки не дозволяють і все виглядає поламаним та занедбаним.
Після iconv залишається питання як шукати терміни, тому що вгадати довжену конь тексту для grep там є неможливо:
:term: pronunciation\n\n def
(довжина def є довільна)
awk дозволяє змінювати роздільники, наприклад, замість '\n':
BEGIN { RS = "\n\n:" }
де залишається тоді тільки домовитися на чому робити match:
$ cat jargon
#!/usr/bin/awk -f
function eh(s) { print s > "/dev/stderr"; exit 1 }
BEGIN {
if (ARGC < 2) eh("Usage: jargon pattern [indices_mode]")
if ( !("JARGON" in ENVIRON))
eh("JARGON env must contain path to jarg447.txt")
pattern = ARGV[1]
indices_mode = ARGV[2]
ARGV[1] = ENVIRON["JARGON"]
ARGV[2] = ""
RS = "\n\n:"
ORS = indices_mode ? "\n" : "\n\n"
}
function entry() {
if ($0 ~ /^#/) return ""
return substr($0, 0, index($0, ":")-1)
}
tolower(entry()) ~ tolower(pattern) {
print indices_mode ? entry() : $0
}
Що є трохи забагато зусиль для іграшкового словника, але дозволяє дізнатися купу трівіа:
$ export JARGON=/mnt/scrap/lib3/doc/jargon-4.4.7.txt
$ ./jargon . 1 | wc -l
2310
$ ./jargon slop 1
slop
slopsucker
Ось, ви напевно думали що slop це якесь нове слово останніх років.
$ ./jargon micro 1
killer micro
micro-
MicroDroid
microfortnight
microLenat
microReid
microserf
Microsloth Windows
Microsoft
micros~1
$ ./jargon \~
micros~1:
An abbreviation of the full name {Microsoft} resembling the rather
{bogus} way Windows 9x's VFAT filesystem truncates long file names to
fit in the MS-DOS 8+3 scheme (the real filename is stored elsewhere).
If other files start with the same prefix, they'll be called micros~2
and so on, causing lots of problems with backups and other routine
system-administration problems. During the US Antitrust trial against
Microsoft the names Micros~1 and Micros~2 were suggested for the two
companies that would exist after a break-up.
(Дуже програв з останнього речення.)
Виявляється, Кен Томпсон був відповідальним за релізи:
$ ./jargon ^ken | head
ken: /ken/, n.
1. [Unix] Ken Thompson, principal inventor of Unix. In the early days
he used to hand-cut distribution tapes, often with a note that read
"Love, ken". Old-timers still use his first name (sometimes
uncapitalized, because it's a login name and mail address) in
third-person reference; it is widely understood (on Usenet, in
particular) that without a last name `Ken' refers only to Ken
Thompson. Similarly, `Dennis' without last name means Dennis Ritchie
(and he is often known as dmr). See also {demigod}, {Unix}.
awk-скрипта має бага зі словом zorkmid, т.я. воно є останнім і після нього ув хфайлі йдуть поза-словникові додатки. Фікса залишається ув якості домашнього завдання.

no subject