To już właściwie było (puenta była), ale najwyraźniej się hackerowi spodobało... Tym razem zaczęło się od pyłka który unosił się w pokoju.
Hacker: Nitka spadła z chmurki, dlatego jest biała - chmurki są białe. Dopiero jak spadnie śnieg z nich to się robią niebieskie.
Tata: A słonko z czego jest?
- No z chmurek.
- A księżyc?
- Też z chmurek, przecież jest biały!
- A dlaczego księżyca jest czasem więcej, a czasem mniej?
- Hmmm, no bo tak to już czasami jest tatusiu.
Hacker: Tato czy jest noc?
Tata: Nie, jest wieczór dopiero.
- A co to jest wieczór?
- Jak się kończy dzień, a nie ma jeszcze nocy to jest wieczór tak jak teraz.
- To jak nie jest noc to dlaczego latarnie się świecą?
Człowiek jak się nudzi to mu różne pomysły do głowy przychodzą. No i trafiło tak, że jeden wariat wpadł na pomysł, że trzeba zobaczyć czy to na prawdę takie trudne wypluć napis na STDOUT w niejakim Brainfucku. Po pierwsze trzeba wiedzieć jak to to działa, spojrzenie do Wikipedia: Brainfuck i wychodzi, że banał. Z odpalaniem też nie ma problemu, bo od czego serwisy jak Ideone.
I już było się czym bawić różnej maści „hello worldami”, wszystkie działały (pierwsze wrażenie nie było mylne, banał jak nic, każdy kto próbował sam wie) ale sam kod się zmieniał z pierwotnego który był gigantyczny do ostatecznego, gdzie odkryto na nowo koł^W pętlę.
No tak tylko to zabawa na 45 minut, a później już nie bardzo jest po co, bo co najwyżej można zmieniać mechanicznie tekst do wyświetlenia, a to już nudne. W kolejnej iteracji...
wariat wymyślił, że skoro to takie proste aka mechaniczne, to zamiast wracać do nudy (a RSSy w czytniku się nie zdążyły napełnić) trzeba sobie wyperlować skrypt który na wejściu dostanie coś we wspólnym, a na wyjściu zapoda w wersji cudacznej. Taki skrypt ma tę zaletę, że może zająć dowolnie dużo czasu, bo zawsze coś można poprawić, albo w tym jak działa, albo w tym co wywala, żeby ładniej wyglądało. I tak dzień (nudna część dnia) upłynął. Na koniec trzeba było, jakoś to genialne dzieło nazwać, bo b-2.pl to nazwa fajna, ale mało mówiąca, tuż przed zamknięciem komputera wydano zatem komendę:
$ mv b-1.pl Brainf\*\*k-1.pl
$ mv b-2.pl Brainf\*\*k-2.pl
I do domu, do hackera. Ten po jakimś czasie poszedł spać, a my dochodzimy do finału bo oto...
O ile ponowne otwarcie skryptu w gedit w celu dokonania ostatecznych poprawek nie stanowiło problemu, o tyle próba uruchomienia paskudy zwijała terminal. Ten zdychał kiedy proszono go o autouzupełnienie nazwy skryptu z gwiazdką w nazwie. Już chciałem otwierać buga na GNOME bugzilla ale dla pewności jeszcze pingnąłem smoka, bo on ma zawsze najnowsze wersje wszystkiego więc jest dobrym testem na bugi wykryte ale nie wiadomo czy już nie poprawione. Dzięki temu genialnemu w swej prostocie posunięciu okazało się, że bug i owszem jest, ale nie w gnome-terminal, a w bashu, który zwija się z SIGSEGV w opisanym powyżej przypadku. Kto nie wierzy sam może sprawdzić:
cartoon@ratajczaka /tmp $ bash
cartoon@ratajczaka /tmp $ PS1="(new) ${PS1}"
(new) cartoon@ratajczaka /tmp $ touch test\*1
(new) cartoon@ratajczaka /tmp $ touch test\*2
(new) cartoon@ratajczaka /tmp $ chmod +x test*
(new) cartoon@ratajczaka /tmp $ ls test*
test*1 test*2
(new) cartoon@ratajczaka /tmp $ ./test\*Segmentation fault
cartoon@ratajczaka /tmp $
Bug więc poszedł, ale w kierunku bash-bug ML. Poszedł o 22:17: bash killed by filecompletion feature if filename(s) contain '*' character, jednocześnie Smoku założył błąd w bubuntowym Launchapadzie. Na poprawkę długo nie trzeba było czekać. Prymitywny patch leczący kłopota pojawił się na liście dyskusyjnej 10 minut wcześniej bo o 22:07: Re: bash killed by filecompletion... (PATCH) (no dobra 6 stref czasowych dalej to było :D). Patch prymitywny ale działa.
A jaki jest morał z tej historii? Nie ma morału, ale są dwa wnioski:
Hacker: Tatusiu, nie idź dzisiaj do pracy
Tata: Uhm, chodź puścimy tu baję o Lwie zaraz, najpierw tu, teraz tu...
- Usiądź tu ze mną.
- No jak mam Ci na kolanach siedzieć? No co ty, teraz tu klikniemy...
- Babaaa! Przynieś tacie krzesło bo on jest zmęczony!
Jest coś co od dawna chciałem zacząć notować, ale kurka co tu dużo gadać, leń jestem. Dziś hacker mnie zmusił...
Hacker: Mamusiu, płakałem dziś za Tobą.
Mama: Kiedy?
- No teraz jak byłem z tatą.
- A dlaczego płakałeś?
- No bo tak czasem bywa mamusiu.