(nettipäiväkirja 12.06.2014) Keksin, että voisin dokumentoida, minkälainen hakemistohierarkia minulla on. Hyvien käytäntöjen levittäminenhän on hyvä käytäntö, ja minun mielestäni minun hakemistohierarkiani on hyvä käytäntö.
Kuten selitän nimeämisohjeessani (http://sange.fi/~atehwa/unix-kurssi/nimeys.pdf kohta "Pidä päätaso siistinä"), kotihakemistossa ei saisi olla kovin monta alihakemistoa eikä mielellään yhtään dokumenttia. Pistehakemistojen syntymistä ja tuloa ei tietenkään voi estää, mutta oma kotihakemisto on syytä pitää niin siistinä kuin mahdollista. Itse asiassa käytän joskus kotihakemistoa ikään kuin "superväliaikaishakemistona", josta jokainen sinne päätynyt tiedosto pitää poistaa välittömästi -- eli: tiedoston tallettaminen kotihakemistoon on metatieto siitä, että se pitää poistaa heti, kun sen huomaa.
Kotihakemistollani on seuraavanlainen rakenne (jotkin näistä hakemistoista puuttuvat riippuen järjestelmästä):
~atehwa/ (tai ~pkalliok/) bin/ binaries/ Desktop/ install/ etc/ usr/ <... jne...> proj/ dotfiles/ yhteystiedot/ <... muita pysyväluonteisia tietoja...> public_html/ tauhkaa/ <... muita webiin näkyviä asioita...> tmp/ download/ try/ <... muita väliaikaisluontoisia tiedostoja...>
Hakemistot bin/, Desktop/ ja public_html/ ovat olemassa teknisistä syistä eikä niille mahda paljon enempää kuin pistetiedostoille tai -hakemistoillekaan. public_html/ on myös "päätaso" ja siksi kaikki satunnainen, mikä pitää vain saada näkymään webissä, menee hakemistoon public_html/tauhkaa/.
install/ on hakemisto, jota käytetään prefixinä, kun asennetaan kotihakemistoon kamaa. Siis ./configure --prefix=~/install . Sinne myös puretaan valmiiksi käännetyt ohjelmat. bin/:ssä on sitten linkkejä install/usr/bin/:iin jne.
proj/ on hakemisto, jossa tehdään kaikki työ. Sen alihakemistot edustavat toisiinsa liittymättömiä hommia. Jokaiseen hakemistoon proj/:n alla käytetään versionhallintaa. Joskus proj/:n alle joutuu tekemään jotain, jota ei voi heti viedä keskitettyihin säilöihin. Joka tapauksessa kaikki proj/:n sisältämä kama on sellaista, ettei sitä saa poistaa (ennen kuin muutokset on viety keskitettyyn versionhallintasäilöön). Muutokset näihin tiedostoihin levitetään eri koneiden välillä versionhallinnan avulla, minkä vuoksi minulla ei ole käyttöä netin yli jaetuille hakemistoille kuten Dropboxille. Käytännössä siis työskentelyy alkaa aina muutosten hakemisella säilöstä ja loppuu muutosten viemiseen säilöön (jos netti on käytettävissä).
Kaksi hanketta ansaitsevat erityismaininnan ja ovat käytännössä joka järjestelmässä, jossa minulla on kotihakemisto. proj/dotfiles/ sisältää käyttämiäni asetuksia ja monet pistetiedostot ovat itse asiassa linkkejä sinne (siellä on Makefile, joka osaa perustaa nämä linkit). Siellä siis hallinnoin esim. ssh-aliaksia, sähköpostiohjelman asetuksia ja niin edelleen. proj/yhteystiedot/ on puolestaan tekstimuotoinen yhteystietokantani.
Muut proj/:n alla olevat hakemistot ovat esimerkiksi softaprojekteja (kuten stx2any/), elämänalueen mukaan jaoteltuja (kuten opiskelu/) tai ihan tekstiä vain (kuten mtx/ ja diary/).
binaries/ on periaatteessa samanlainen kuin proj/, mutta siellä on vain kuvia, videoita ja ääniä. binaries/:n kamat eivät ole versionhallinnan alaisia, mutta synkkaan ne paikasta toiseen rsyncilla. Tiedostot, jotka ovat vahingossa päätyneet binaries/-hakemistoon, poistetaan binaries/siivoa.sh-skriptillä, jota voi ajaa niin usein kuin haluaa ja missä vain.
tmp/ on hakemisto, johon laitetaan dokumentit, joita ei ole tarkoitus säilyttää ikuisesti, esimerkiksi netistä ladattu PDF tai sertifikaatti, jota kopioidaan moneen eri järjestelmään. tmp/download/ on hakemisto, johon tiedostot ladataan, ja tmp/try/ on hakemisto, johon ladatut paketit puretaan (ja jossa voi buildata; asennukset tietenkin install/:iin).
Siinä onkin oikeastaan kaikki. Muille päätason jutuille minulla ei ole ollut käyttöä. Joissain paikoissa minulla on vielä backup/ ja/tai archive/, joiden käyttötarkoitus lienee ilmeinen. Lisäksi yhdessä paikassa minulla on darcs/ versionhallintasäilöjen paikaksi; proj/:n alla olevat hakemistot ovat siis yleensä klooneja siellä olevista mastereista.