henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2026-04-07 08:51 pm

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, т.я. воно є останнім і після нього ув хфайлі йдуть поза-словникові додатки. Фікса залишається ув якості домашнього завдання.

juan_gandhi: (Default)

[personal profile] juan_gandhi 2026-04-07 07:17 pm (UTC)(link)
Ох какие времена были романтичные. Когда компьютинг был разлечением интеллектуалов, а не источником диких денег для всякой сволочи.