sobota 21. novembra 2015

Kávička s hudbou v sluchátkach = ideálna nálada na upratovanie

Pred pár dňami som brázdil cesty svojho harddisku. Cítil som sa dosť neobvykle, obklopil ma závoj déjà vu. Našiel som kopu stratených vecí, jednou z nich boli aj sety Café del Mar z deväťdesiatych rokov, ktoré som počúval ešte na strednej škole s bratom. A tak nasledovala nostalgia, pocit, na ktorý som už skoro aj zabudol, akú má príchuť (už ich počúvam druhý deň, hlavne pri hraní Euro Truck Simulatoru).

Ani neviem čo ma viedlo k tejto vzrušujúcej akcii, možno som mal taký zvláštny pocit, že by som si chcel pripomenúť, kto som (computatrum ergo sum). Od určitého okamihu, asi odkedy som začal byť skoro celé dni mimo domu (rozumej v práci), mi začal počítač slúžiť k účelným veciam, a prestal som sa starať o to, kde čo mám, prestal som sa vracať k veciam, ktoré som akútne nepotreboval (prestal som "tráviť čas za počítačom"). Asi sa takým veciam človek nikdy nevyhne, predsa len, v mojom veku má už kopa ľudí rodiny (alebo aspoň kamarátov :D).

To je jedno, spravil som to, a mám z toho aj úžitok. Ja viem, že skoro každý človek čo vlasní počítač takto svoj disk už veľakrát prebrázdil. Vtedy sa dejú zázraky - väčšinou začneme triediť veci. Presúvať, mazať, kopírovať, premenovávavať fotky, a zapisovať IDv3 tagy do MP3-jek (našťastie na posledné dve operácie existujú super nástroje, ktoré mi v deväťdesiatych rokoch chýbali).

O čom chcem dnes vlastne písať - ako som objavil vlastné triedenie vecí, aby som mal na očiach to, čo je dôležité, a odsunul bordel stranou. Aby som vedel kde hľadať, a aby som hneď vedel, kde mám čo uložiť, aby som nad tým proste (azda z lenivosti) nemusel dlho premýšľať, pretože mám z toho nechuť.

Základ je adresárová štruktúra

Či už máte Linux alebo Windows či niečo iné, svoje veci odkladáte väčšinou na nejaké jedno miesto. To je normálne, hlavne aby ste si hudbu nekopírovali do /bin alebo ešte lepšie /dev :D

Základ je vytvoriť si adresárový systém, ktorý reprezentuje "kategórie", podľa ktorých sú veci umiestnené. Najprv som uvažoval takto. Mám: hudbu, filmy, dokumenty, projekty, úvahy, fotky, stiahnuté súbory, temp, prácu, gitarové taby, a binárky (programy, skripty). Linux má vo veciach dosť jasno, ale musím mať aj ja. Takže môj nápad, postupne "vyevoluciovaný" z čias objavovania počítača, vyzeral asi (veľa som vynechal) takto:

bin/
#sf603/
 |__ hudby/
 |__ AES/
doc/
 |__ od_boxy/
 |__ old/
 |   |__ queen/
 |   |__ kindle/
 |   |__ ...
 |__ courses/
 |    |__ cryptography/
 |    |__ functional programming/
 |    |__ machine learning/
 |    |__ ...
 |__ knihy/
 |    |__ computers/
 |    |__ beletria/
 |    |__ ...
 |__ foto/
 |__ gitara/
 |__ uvahy/
 |__ skola/
 |    |__ FEI/
 |    |     |__ doktorandske/
 |    |__ spss/
 |__ praha/
music/
filmy/
projects/
 |__ emuStudio/
 |__ ...
tmp/
NAPAL/
 |__ DF/
 |__ DM/
 |__ DS/

Otras. Fuj. Aj keď sa to môže zdať relatívne usporiadané, je to bordel. Napríklad, hudba sa nachádzala na niekoľko miestach, sú tam podivné adresáre, do ktorých som sa musel pozrieť aby som vedel čo tam je. Ani sa nechcem zaoberať popisovaním toho hnusu. Ale upratovať neznášam. Už teraz asi bude zrejmé, kde čo patrí, a kde nie, aby sa zachoval aspoň intuitívne "systém", ktorý sa v tejto štruktúre používa.

Niekedy sa na to treba vy...

Proste sa mi nechce chodiť cez všetky adresáre a triediť, ale zmazať sa to bojím. Nič, povedal som si, že to potrebuje vážny refactoring. Kto nevie, čo je refactoring, mám pre neho veľmi pekné prirovnanie. Predstavte si, že ste kuchár v kuchyni a každý deň dostávate požiadavky na jedlá. Prvé jedlo urobíte za nejaký čas, a zašpiníte nejaký riad. Skúsených kuchárov už možno na tomto mieste napadne, že počas toho ako sa mu varí polievka môže aspoň umyť nože a dosku na krájanie. Ale niekoho to nenapadne, alebo sa na to vyserie. Ale nevadí, po uvarení to nahádžeme do umývadla, veď ešte nie je ani z polovice plné. Druhé jedlo - pohoda, otvoríme šuflík, stále máme čo použiť, aj keď možno nám už chýba nôž, ktorý máme radšej. A tak môžme pokračovať - až kým sa neminie všetko, alebo skoro všetko (pekne odložené ostanú veci, ktoré nepotrebujeme). A tak musíme začať umývať (prichádza pán Refactoring). Ale vidíme, že ten nôž je úplne na spodku :( Nieeeee - a tak musíme buď všetko vybrať z umývadla, až kým sa dostaneme k nožu (ale kde? nemám takú veľkú dosku), alebo pekne všetko umyť. Ale zákazníci už čakajú a ja si tu umývam riad... Nikto nechápe čo som to za bordelára - a stane sa to pár krát, asi prídem o prácu. Tento príbeh by sa mal zapísať ako "podobenstvo" do evanjelia pre každého programátora.

Všimnime si však trochu analógiu aj s bordelom v našom počítači. Stačí maličký odklon od našej štruktúry, a bordel je už nezastaviteľný.

Prevencia bordelu?

Ako som už povedal, potrebujeme systém. Dobrý systém, kde by odklon od štruktúry nemohol nastať tak ľahko. Dôvod, prečo v mojom predošlom systéme mohlo ľahko dôjsť k odklonu, je že kategórie nemali veľký vzájomný "kontrast". Inak povedané, ak by sme kategóriám priradili farby, mohlo by to vyzerať ako niečo podobné:

...
#sf603/
projects/
doc/
filmy/
NAPAL/
 |__ DF/
 |__ DM/
music/
...

Keď ukladáme nejakú stiahnutú vec na disk, myslím si, že pracuje hlavne "pravá" hemisféra mozgu. Dôvodom je, že podľa vzoru (nášho systému) hľadáme miesto, kam tú vec dať. A keď sa stretne s vecou na rozhraní, alebo s novou podkategóriou, ktorú nevie hneď zaradiť, začne pracovať. Lenže pravá hemisféra je asynchrónna, preto nevieme hneď odpoveď. A keďže logická, ľavá hemisféra už "nemá čas" čakať, tak to niekam dáme. :)  A tak vznikajú adresáre ako napríklad "od_boxy", ktoré reflektujú rýchlu logickú kategóriu (predsa "od Bokšy") - nechceme sa dlho "zamýšľať", kam by to malo ísť.

Ako sa teda vyvarovať podobným kategóriám? Long story short: vertikálnym radením. Napríklad, to, že je hudba určená na napálenie, alebo prípadne ak by sme si chceli naznačiť "novú" hudbu - stále predsa ide o hudbu. Proste to nie je nová kategória. Ide o jej "atribút". A takýto atribút môže mať predsa hocičo - aj dokumenty, aj programy, a tak ďalej. Skúsme tieto kategórie zoradiť "vertikálne":

music/
  |__ new
  |__ before_2000
  ...
movies/
  |__ to_backup 
  ...

Veľký kontrast nie je všetko

Okrem toho, že by nemali existovať podobné kategórie, každá kategória by mala mať relativne jasno, čo do nej patrí - a mala by mať dostatočne "široký" záber. Napríklad, ako by sa mali usporiadať projekty, alebo škola? Myslíte si, že toto usporiadanie je dobré?

school/
 |__ FEI/
 |    |__ 1. rocnik/
 |    |    |__ matematicka_analyza/
 |    |    |__ ...
 |    |__ 2. rocnik/
 |    ...
 |__ spss/
      |__ ...

Ja si to určite nemyslím. Celé zle. To, čo tu vidíme nie sú kategórie. Ide to tzv. horizontálne usporiadanie, ktoré je nie podľa obsahu (čím kategória je), ale podľa "času a miesta". Kedy sme naposledy hľadali zadanie z 3. ročníka predmet "operačné systémy"? Na to, aby sme také zadanie našli, musíme si pamätať, že je to tam. Ale nikto, NIKTO si nepamätá, čo všetko vlastne v škole robil a tým pádom, ani to, aké veci sú kde "skryté" - a tak sa dostávame k efektu "strácania".

Je preto lepšie ostať pri zemi a držať sa sémantiky našich kategórií. A nevytvárať idiotské adresáre, ktoré nič neznamenajú. Usporiadaná štruktúra môže vyzerať nasledovne:

school/
 |__ zadania/
 |    |__ #current/
 |    |__ ...
 |__ bakalarka/
 |__ diplomovka/
 |__ dizertacka/
 |__ organizacne/
      |__ zapis_fei_1_rocnik
      |__ ...

Poučenia, diskusia, záver. :)


  • Skúsme použiť hlavu, a potlačme naše prvotné nápady, lebo to asi dopadne podobne ako som popísal na začiatku. Najlepšie systém, ktorý ťažko oblafnúť.
  • Kategórie vytvárajme s vysokým kontrastom (jednu kategóriu na obsah jedného typu)
  • V prípade hľadania, ktoré robíme častejšie než ukladanie, sémantika má vždy prednosť pred štruktúrou. Skoro nikdy nehľadáme podľa času, miesta (teda možno okrem fotiek), ale skoro vždy podľa obsahu.
  • Skúsme takto organizovať aj poznatky

2 komentáre :

Anonymný povedal(a)...

Asi tomu nebudeš věřit, ale ja dost často hledám podle data. :-) MarS

Peter povedal(a)...

Ale tie veci, ktoré hľadáš spolu súvisia nie? Tipujem, že nehľadáš "hocičo" od - do. Ale skôr napr. "projekt" z nejakého obdobia, alebo "retrospektívu", zápis, zmluvu... Alebo ako to máš?

Zoradiť kontextovo súvisiace veci podľa času zas problém nie je. Ale rád by som vedel príklad, možno je to naozaj inak, tak sa podeľ :)