märts 29, 2015

Ikka need vi, perl ja regex (UNIX huvilistele)














Noh, jah.
See kole pilt peaks kujutama ühte koleda editori vi hingeelu ning sellest vanamoodsusest ei pääse üle ükski UNIX-iga tõsisemalt kokkupuutunud isik, sest varem või hiljem kohtab ta süsteemi, kus EI OLE teisi võimalusi tekstide muutmiseks, kui ikka see vana vi.
Näiteks kastid, mis ise ei ole arvutid, vaid spetsialiseerunud mingitele muudele toimingutele, aga mille peal jookseb Linux.
Mingit kaablit mööda olete sinna sisse loginud terminali aknasse (ja muid aknaid ei pruugi kast osata joonestadagi) ja mälu / ketta kokkuhoiu mõttes ei ole seal mitte pandud käima muid asju, peale Linuxi-i, /UNIX-i minimaalse standardvarustuse.
Probleem vi-ga on aga enamasti selles, et see natukene erineb meie "tänapäevastest" tavalistest editoridest. Et saada vi midagi tegema, tuleb saada ta Input Mode-sse, sealt, et tulemusi salvestada, jälle Command Mode-sse ja nii edasi....natuke tüütu tänapäeva editoride keskkonnas ärahellitatud tüüpidele ....
Soovitan ühel hetkel Linux-iga tegelemise käigus see vi siiski ette võtta ja sõrmede sisse harjutada. Ei olegi nii kole, nagu algul tundus. Ehk võib seda isegi nimetada natukene eksootiliseks. Linuxi-Unixi paradoks on ju selles, et need asjad tõesti on KOLE VANAD... ja endiselt toimivad, erinevalt näiteks DOS-st ...
Minu häda on olnud selles, et alati leidub ju kõrvaltee, näiteks emacs, gedit ja mõni muu natukene mugavam editor. (Aga tegelikult neil EI OLE suuremat vahet ka vi-ga). Nüüd aga ei pääsenud ma kuhugi. Kui teil on Linux-iga tõsi taga, ei pääse ka teie mitte kuhugi. Õppige teiste kogemustest!
Te ei pääse kuhugi ka dinosaurusest nimega Bourne shell, mis oma Linux reinkarnatsioonis on saanud nimetuse bash (Bourne again shell) ja natukene võiksite osata seal kirjutada shelli (kesta) skripte.
Minu arvates (ka eelmises Linux kirjutises tõin selle lingi) on selleks kõige sobivam algus
sait
http://linuxcommand.org/
Linuxi (aga ka muude programmeerimise alaste tekstide osas) ei ole väga palju väga hästi läbimõeldud tekste võtta. See siin on,
Kui te olete juba proff, võiksite kohe proovida
Advanced Bash Scripting Guide
peal toodud skripte.
Kuid milleks see kõik, kui te ei tea, milleks seda kõike vaja on? Praeguse kogemuse põhjal ma soovitan alustuseks kahte teost. Esimene meeldib mulle kõige rohkem:
1) Linux Fundamentals, Paul Cobbaut
Kui saate hakkama, võite piirduda alguseks just selle teosega. Jälle mulle meeldib läbimõeldus ja loogilisus.
2) Abiks või täienduseks sobib aga
Introduction to Linux Tille Garrels
ning ikkagi Linux man leheküljed iseseisvaks uurimiseks ja katsetamiseks. Mõnikord (üsna sageli) leiab mõne probleems kohe kohta midagi StackOverflow-st ...

Paul Cobbaut on kirjutanud ka natukene kobedama raamatu administraatoritele. See võiks olla järgmine aste või koht enesetäienduseks:
3) Linux system adminitration Palu Cobbaut

See kõik on kindlasti kasutu, kui teil ei ole silme ees mõnda installeeritud Linuxi versiooni ja vähemalt 40% ajast ei ole pühendanud iseseisvatele tegevustele Linux-iga.

Aga nüüd jõuame järgmiste loodusõnnetuste juurde nimetustega regex ja perl.
Olen nimelt jõudnud pisut lohutule järeldusele, et ka nendest ei ole pääsu.
Praktiliselt võib nendega tegelemise pisut edasi lükata, aga ühel ilusal hetkel saab villand natukene krüptilistest pöördumistest grep / sed  poole või koguni viidetest perl-le endale.
Ja siin praegu olen leidnud ühe (kahjuks liiga pika, aga mis parata) teose Mastering Regular Expressions
Laadige alla, lugege läbi, kui leiate aega, kui ei leia, alustage algusest ja võib juhtuda, et mõnest esimeseest ptk-st on küll praktilises mõttes, aga teoreetiliseks harimiseks võiks kogu teose läbi uurida ja teoreetilisest arvutiteadusest veel lisa võtta. Boonusena tekib huvi perl vastu ja nii võib ka see omapärane keel selgeks saada. Mina veel niikaugel ei ole, aga huvi juba on.
Perl on iga Unixi standardvarustuses tänapäeval olemas.

Kes nüüd kohe seda tegema ei hakka, sellele selgituseks:
Tuntud ls *.txt ja fai?.txt otsingusümbolite laienduseks võib pidada regulaarseid avaldisi.
Praktiliselt saab nendega üsna palju põnevaid tekstiotsinguid ja asendusi sooritada.
Arvutiasjanduses on regex nii sees, et ei ole leida vist enam ühtegi programeerimiskeelt, mis seda asjandust ei toetaks. Ja ei ole vist kuidagi võimalik jõuda IT-s ütleme baka tiitlini, et ei oskaks neid avaldisi ise kokku kompileerida.
Esimesel pilgul on tegemist üsna krüptiliste sümboljadadega ja see lisab ainult uhkust juurde, kui oskad ise ka sarnase ütleme kuupäevade teisendamiseks /URL testimiseks / meiliaadresside kontrolliks / kokku panna.
Teine boonus on hea sissejuhatus automaatide teooriasse, kust jälle saaks edasi minna kompilaatorite teooria juurde, mille esimene osa on programmeerimisteksti uurimine ja sealt igat sorti komavigade leidmine. Veel kutsutakse seda leksikaalseks analüüsiks ...
Mis võiks olla järgmised astmed Linuxi uurimisel? Tõenäoliselt sõltub see siin, pärast aabitsaetapi läbimist, juba konkreetsetest eesmärkidest.

Kui kõige muuga tegelemisest aega üle jääb, püüan teid ka oma Linux tegemistega aeg-ajalt kursis hoida. ...




märts 14, 2015

PI päev











Eestlasel on vednud - nii Eesti keele päev kui ka meie Pi päev langevad täpselt kokku. Järelikult nii on vaja. Aga  et  samal ajal on see ka Albert Einsteini sünnipäev, siis kokkusattumisi on rohkemgi.
Selle päeva auks ma "komponeerisin" 3 väikest ja lihtsat klaverilugu koos PI-ga. Nii ongi - kõik klahvid, kogu meloodia pärineb PI-lt. Mina ainult toimetasin muusika. Meie koostöö PI-ga lõppes 102 -nda numbri peal - pigem isegi enne seda, sest avastasin PI rikkuvat autorõigust - Küll on kena kelguga lastelaulu motiivi kasutamist autori loata. Hoolimata sellest kulges koostöö kuni 32 numbrimärgini hästi -  ei ole sellele valsile ju midagi ette heita.
Siis muutus PI sõjakaks ja sain sõjamarsi. Kompositsiooniga 51-102 ma ei saa olla rahul, aga see oli ja on pi tahe ja millegipärast kordas pi oma kadentsi 3 korda ja siis äkitselt võttis üles meie tuntud lastelaulu "küll kena kelguga hangest alla lasta"…..
Seetõttu lõpetasin koostöö ja panini sellega punkti. Aga ometi sai nii 101 pi komakohta meelde jätta. Tänase päevani oskan need ette kanda  - sest need komakohad on SÕRMEDES.

I on valss:
3.14159265358979323846264338327950

II lugu tuli sõjamarss -
288419716939937510
ja III-ga ma enam väga rahul ei ole - aga ikkagi tuli välja naljakas valss ….
5820974944592307816406286 20899862803482534211706798

selgituses  - 1 tähistab do-d, 2 re-d etc….

märts 01, 2015

Jälle see UNIX!



Kõik kordub. Täna umbes 21 aastat tagasi viis saatus mind kokku UNIX operatsioonisüsteemiga ja kirjutasin uhkelt valmist oma esimese KESTA SKRIPTI (shell script). See kukkus kui käokell igal täistunnil vajaliku arvu kordi ning andis töökaaslastele ülikooli raamatukogus märku vajadusest lõunatada või ära minna.
Elu tahtis aga nii, et minust "päris" UNIX süsadminni ei saanud ja edasi toimetasin peaasjalikult W keskkonnas.
Kuna uuel tööl pean paratamatult sukelduma nii LINUXi kui ka C keele hingeellu, leidsin ennast praegu, 2015 umbes samas kohas, kus 1995: kirjutamas shell-i skripte ja süvenemas LINUX-i võimalustesse.
Vahepealsed episoodilised UNIX meiliserveriga "tegelemised" stiilis pane jälle deemon seisma ja siis käivita uuesti ei saa väga tõsiseltvõetavad olla. Isegi kodukooli Linux serveri ülespanek sai usaldatud oskajale ning edaspidine "töö" seisnes sellesse serverisse sisselogimises ja veendumises, et tegelikult kõik asjad käivad.
Vahepeal on UNIX väidetavalt kõvasti, kõvasti arenenud. Sellest on saanud rohkearvulised LINUX-i distrod, tema põhjal toimivad MacOS-d, isegi Android toimib UNIX põhiselt.
Järelikult on tegemist väga hea vundamendiga, sest kõik need süsteemid kannatavad tunduvalt vähem igat sorti turvaaukude käes, kui alternatiiv W näol.
Linux on praegu kui "viirus" aga saavutanud võimu nii väga väikeste süsteemide seas (ka kassaterminalil jookseb Linux ntx.) kui ka hiidserveritel.
Ainukene koht, kus Linux endiselt ei oma võimu, on koduarvutid. Ja peamise põhjusena selle väikses levikus (aga see ei tähenda, et meil ei ole Linuxi fänne, pingviinisaidil leidsin kusagil 2000 kasutaja ringis) on pisut  pikem õppimise kõver.



Esimene probleem, mis vanuse suurenedes järjest süveneb, ongi see meeletult aeglane algus. Ja vanus
ei anna eeliseid, vaid on alati miinus. Nooruses on aju plastiline ja lausa kohandatud igal hetkel vastu võtma kasulikke õpetusi ja neid kiiresti memoriseerima.
Minu õnneks on minul kusagil ajukurdudes see algus tehtud, ometi igatsetud kiirenduse faasi ma ei ole hoolimata kulutatud 2 puhkepäevast jõudnud. Aga olen just (raske) tõusu alguses ja täheldan siin sama probleemi LINUX-i / UNIX-iga, mis oli üleval ka 20 aastat tagasi. 

On olemas väga palju juttu, ja sellest üsna palju on väidetavalt alustajatele. Tegelikult see jutt ei ole alustajatele. See on VALE. Alustaja peab olema valmis väga otsustavalt lahkuma lehekülgedelt, kus tema tasemega ei  ole arvestatud või tundmatuid mõisteid ignoreerima.

Kõige ilmekamaks näiteks oleksid ehk man leheküljed, kus isegi lihtsaima käsu seletus võib olla lehekülgi hõlmav krüptiline tekst. Iga lihtsa asja jaoks peab olema kiire tee lihtsa selgituse jaoks. 
Lahkuda teil aga man leheküljelt ei ole kuhugi - võtke sealt see, millest aru saate ja ignoreerige kõike, mida veel ei mõista. Ehk ei tulegi kunagi mõista - Linuxis on miljoneid ridu koode ja tuhandeid võimalusi, millest enamikku ei tule teil iial tarvitada...

Teine, kahjuks väga häiriv näide: "tldp" - The Linux Documentation Project" - kirja järgi just see mida vaja, aga kahjuks mitte päris see, mida ikkagi on vaja - 
paljud asjad seal siiski ei ole päris algajale, kuigi koostajad väidavad nii. 

Ja kõige vähem tasub uskuda igasuguste 5 minuti sissejuhatuste lubadusi. Isegi kõige suurem ajugeenius vaevalt, et saab 5 minuti jooksul midagi selgeks sellisest soliidsest ja vanast süsteemist nimega UNIX. 
See ei ole nii lihtne.
Ja see ei ole ka nii keeruline.
Juba 20 aastat tagasi võlus mind Unixi juures selle süsteemi loogilisus, mis teeb keerulised asjad lihtsaks. 
Ja lõpuks see kõik ei ole vajalik neile inimestele, kes tahavad Linuxist teha oma töölaua ja mitte midagi muud. Teil on tõenäoliselt vaja kulutada veidi rohkem aega, kui Mac kasutajal (kes ei peagi õieti üldse midagi õppima), kuid pääsete vahest mõnel juhul kergemalt, kui W kasutaja. Nimelt Windowsi väidetav lihtsus tuleneb lihtsalt sellest, et see süsteem  on domineeriv, nagu inglise keel maailmas ja teil tõenäoliselt ei ole võimalust olnud sellest kõrvale vingerdada - midagi te teate isegi siis, kui väidate olevat ennast kõige suurem põmmpea W süsteemide valdkonnas …
Ja ometi on just neile kasutajatel kõigepealt vaja valmis kirjutada Linuxi juppidest lihtsad ja selged jutud, kuidas ühte või teist asja Linuxis toimetada, just nimelt akendes toimetada, mitte käsureal.
Mulle tundub endiselt, et seda tüüpi inimeste jaoks vajaminevad abijutud on sageli puudu.

Aga tuleme tagasi nende inimeste juurde, kes ehk ka alles alustavad UNIX-i / Linuxiga, aga  soovivad pisut kaugemale jõuda. 
Nende isikute jaoks oleks esimeseks asjaks tõenäoliselt ikkagi UNIX/LINUX vundament selgeks saada, mis tähendab enamike süsteemihaldamiste tegemist käsurealt ja skriptide kaudu.
Vidinad vahest tuleksid peale nagu preemiaks.
Võib üsna kindel olla, et kompuutrialase hariduse omandamise puhul ei ole LINUX-ist pääsu niikuinii. See on ka loomulik, ajalooline algus programmeerimisele, sest sügavam LINUX-i tundmine tähendab ka C keele tundmist, mis kergedab C++ üleminekut. Nii et UNIX on professionaaliks pürgijale enamasti vältimatu. Operatsioonisüsteemi ei saa ju uurida ilma lähtekoodile ligi pääsemata, kommertisaalsed süsteemid seda aga ei võimalda 
Kes aga ei taha küll saada profiks, aga huvitub arvutitest sügavamalt, neile on jälle Linux võimalus asjad päris pulkadeni ise selgeks saada. 
Nii et päris palju häid punkte ootab õpikõvera mäkketõusu läbinut.

Lugemisvara:

Nüüd aga esimene mäkketõusu oluline punkt: mis jutust / raamatust alustada.
TLDP peal toodud Machtelt Garrelsi 
Introduction to Linux - A Hands on Guide ei ole väga paha, aga sageli tuleb mujalt lisa otsida ning mõnikord viidatakse juba etteruttavalt asjadele, millega kasutaja ei pruugi kursis olla. 
Eestikeelne jutt Linux-ist on ka saadaval - Kikas ja Linux-i otsisõna viib lingini
http://www.kakupesa.net/pingviiniaabits/pingviiniaabits_CC.pdf
selle aabitsa probleem (ehk) on aastaarv ja kuna siin käsitletakse just GUI (graafilise liidese) asju, siis need vist on jõudnud vahepeal teha läbi üsna suure evolutsiooni. 


Mina aga jõudsin vaimustuda bashi käsitlevast raamatust, mida saaab lugeda (osaliselt) netisaidil
Seni ettejäänutest parim. Loetav, arusaadav, loogiline ja selle läbilugemise järel loodetavasti teate, mis asi on Linuxi käsurida ja oskate seal midagi teha.
Edasistele huvilistele aga soovitaks kohe TLDP peal toodud 
Advanced Bash-Scripting Guide uurimist.
ning ilma pikema jututa asuda näiteks sellise raamatu kallale:
http://linux-training.be/files/books/LinuxAdm.pdf
Ja koos kindlasti mingi toimiva linuxi-ga (vt. allpool lihtsaimat viisi selleks).
Sellega lõpetan, jutt ei olnud mõeldud mingi ülevaatena, vaid visandina sellest, kuhu olen Linuxi taaskasutusega jõudnud. Äkki on kellelgi sellest veidi abi (eriti soovitan linuxcommand.org, kui olete algaja skriptija). 
Kui on omapoolseid linke - palun, lisage ja kommenteerige. 
PS! Unustasin lisada, et praktiliselt vist kõige mugavam viis Linuxi tundmaõppimisel, kui ei ole just paadunud adept, kes kohe üldse midagi muud peale Linuxi oma elus ei suuda taluda,  on W sisse Vboxi loomine ja sinna siis erinevate distrode installeerimine. Mina proovin praegu Debiani, esmamulje on positiivne, tarkvara pealeladumine üle võrgu apt-get -ga on väga hea leiutis ja nii edasi minnes võib linuxi teha suupäraseks igale kasutajale, kellel on nüüd ka valik OS lihtsalt peale installeerida ja ütleme poolepäevase õpikõveraga kõik vajalik selgeks saada…
Ma arvan, et siin on peidus murdepunkti võti Linuxi veel laiemaks levikuks:  Linux võiks olla ka OS, mida ei peagi uurima ja tundma õppima tema kasutamiseks. Lihtsalt istud arvuti taha ja paned asjad tööle.
Kes aga süveneda soovib, lasku käia. 
Linuxi spetsialistide kiituseks tuleb öelda, et need inimesed, kes on Linuxiga tegelenud, teavad tavaliselt oma masina hingeelu paremini, kui Windows haldurid. Põhjus aga on mitte ainult selles, et W inimesed ei viitsi - W tahab iga liigutuse eest raha saada ja koolitused ei ole mingi erand ja maksavad päris palju.
….
Mõni aeg hiljem, täna siis 21.03.2015 olen saanud natuke targemaks õppimiskõveral ja loopisin välja mõned asjad, mis enam nii toredad ei olnud ja lisasin mõned asjad, millest tundub, et saab abi.
Kui saan kokku natukene toekamaid linke, mis ehk viivad edasi, lisan neid tasapisi siia ja kutsun kõiki kommenteerima ja lisama omi asju, mis aitavad LINUX-i uurimisel. 
Need kaks linki, alustajale esimene ja edasijõudnule 2. on tõesti head ja konkreetsed jutud.

Tõin need nüüd rasvaselt välja.