Ma arvan, et sa jõudsid siia seda ülesannet lahendades (et eksami eeldused saaks täidetud). Pididki jõudma 🙂 Kuna see info on üsna rare, siis jagan, mis ma Wikipediast leidsin. Slaididel ja Stallingu raamatust ma nii hästi selle kohta infot ei leidnud.
Kuna ülesanded on natuke erinevad, siis ma loodan, et õppejõududel ei ole selle näite jagamise vastu midagi.
Väike läbikirjutus endale ja võibolla on kellegi veel abiks.
Checked exceptions (kontrollitud erindid) – on mõtet püüda ja lahendada
Näiteks faili lugemise (readAllFiles) puhul programm ei kompileerugi enne kui pole veahaldusega tegeletud (peab panema try-catch sisse).
„Checked“ – kontrollitakse kompileerimise käigus ning sellega peab kohe tegelema (või selle erindi meetodi deklaratsioonis ära märkima, et see meetod võib erindi visata ( …method() throws Exception {… ).
How I willingly locked myself out of Facebook (and you can too).
I always regret the time I have spent on social media. I deleted my Twitter (permanently) few months ago. I stopped watching Instagram stories and haven’t seen any this year. I have deleted my Facebook account once (few years ago) and now is the second time to take a break. Because I really need (and would prefer) to study.
Arvestades, et käesolev semester tuleb üsna keeruline, siis mõtlesin, et loon endale ideaalsed zone’imise tingimused. Et saaks vaikuses unustamatult progeda. Vahepeal söömas käia ja siis edasi progeda. Just oli kõik paika läinud kui… tuli viirus, rektori kiri jne ja koolimaja pandi kinni 😀 Seega, tuleb kodunt õppida ja see tuleb mul üsna kehvasti välja hetkel.
Unsplash saatis enda eelmise aasta kokkuvõtte ja mind väga vaimustab, kuidas 7 aastaga entusiasmi pealt lihtsast Tumblri blogist midagi sellist tehnoloogiliselt lahedat välja kasvab. Nende esimese lehe postitus Hacker Newsis (30.05.2013) endiselt kihvt lugemine (ka sellest, kuidas v1 kriitika mõnikord on väga mööda).
Kolmapäeval käisin Python Coding Clubis vaatamas Mikk Meerentsi presentatsiooni Sportliost. Ta on alates 2014 samamoodi õhina pealt üksi teinud enamvähem nende oskustega, mis ta sealt kolmapäevadel õppinud on. See on jällegi huvitav perspektiiv, et kõik on võimalik.
Ma olen alati õppinud selle mõttega, et loomult pigem mitte-andeka kuid tööka (jah, ma teen kõvasti tööd) inimesena ma protsessi käigus otsin oma vaimse võimekuse piire. See aitab asja huvitavana hoida. Kui õigeid asju teha, siis kohati jõuad päris lähedale 🙂 Ceslava Kairane rääkis ühes praksis meile, et vaimse võimekuse piiriga on see jama, et see nihkub edasi. See mõte on mulle ka meeldinud ja mulle tundub, et see peab ka paika. Et kus arvasid piiri olevat, sealt tegelikult saab veel edasi. Hetkel ei leia viidet sellele, et kui inimene ütleb, et “ta enam ei jõua”, siis tegelikult ta alles 20% peal.
Java õppejõud Märt Kalmo tõi loengus hea paralleeli programmeerimise õppimise ja spordi (ja ka muusikalise instrumendi õppimise) vahel. Et soorituse tehnikat sa ei harjuta ülesandega (kõrgushüppe kõrgus või muusikapala), mille keerukus on võimekuse piiril või üle selle. Selles mõttes mulle meeldib väga Helsinki Ülikooli Java kursus (14 nädalat), kus liigutakse päris algusest ja tõesti päris väikeste sammudega. Enamvähem nii, et igat liigutust tõesti harjutad iga nurga alt läbi ja iga asi (erindid, failist lugemine, objekt jne) on päris omaette peatükk. Ma teen neid “Soome Java” ülesandeid (tänaseks üle 200 pushi ja üle 100 lahendatud ülesane) enda päris kooli Java kodutööde soojenduseks, et need päris ülesanded siis käte värinal avada 🙂
Eks paistab, kuidas ma sellest Javast läbi rooman. Ahjaa. Üks asi, mis ma olen endale aegajalt meelde tuletanud on see, et oluline on, et uudishimu ei kaoks. Sest see on kõige hullem asi, kui inimesel ei ole huvi ja uudishimu maailma vastu.
Teine semester on alanud üsna tempokalt. Sel semestril on mul 5 kohustuslikku ainet. Valik otse tüüpõppekavast. Ühtegi valik- ega vabaainet ei võta. Inglise keele deklareerisin aga hiljem muutsin deklaratsiooni.
Operatsioonisüsteemid ja nende haldamine (ICA0001) tegemise võti, mida ma loodan, et töötab, on teha kõik oma virtuaalmasinad välisele kettale. Mul on 1TB SanDisk Extreme Portable SSD, mis töötab üle USB-C. Peaks olema piisavalt kiire küll, et operatsioonisüsteeme jooksutada. Samuti ei pea muretsema selle pärast, et snapid liiga palju ruumi võtaks. Kuna mul on dual-boot arvuti ja Ubuntu partitsiooni tegin ainult 40GB, siis enda arvutisse mul need asjad hästi ära ei mahuks.
Kuna koolis on päris kiire internet (vt pilti), siis operatsioonisüsteemide ISOsid on üsna mõnus alla laadida. 5-7 GB failid tulevad 1-2 minutit.
Sel semestril on kavas veel Java (ICD0019), Arvutid (IAX0043), Arvutivõrgud (IEE1100) ja Kõrgem matemaatika (ICY0030). Kõige murettekitavam on ehk Java. Kui ma õigesti aru sain õppejõu kommentaaridest, siis eelmisel semestril Pythoni hinded olid paljudel pigem tagasihoidlikud.
IT-kolledži hästi hoitud saladus on Nurk – üldkasutatav klass 2. korrusel, kus on ülimalt hea töötada. Mugavad toolid (võrreldes raamatukoguga), enamasti tühjus, vaikus ja kiire internet. Lõppu üks meelelahutuslik video ka:
Ma olin täiesti mindblown, kui seda esimest korda nägin. Mis moodi see tüüp keskendub.
ps. Neid kiirus- ja mahuühikuid, mis eelpool tekstis toodud, on ilmselt 10 aasta pärast huvitav vaadata 🙂
Varukoopia tegemine enda WordPressi lehest ei ole nii keeruline kui võib tunduda.
Seoses kasvava vajadusega varukoopiate järgi tegin endale selgeks, kuidas bash scripti kasutada. Mul olid varasemalt vajalikud read olemas ja sain neid terminalis kasutada aga selline rea kaupa toimetamine muutus tüütuks. Google otsing andis sellised vastused:
Aga noh, natuke liiga keerulised minu arust. NB! Kui SSH ühenduse loomine on sulle võõras, siis Zone helpis on hea juhend. Aga, sul tegelikult ei ole SSHd varukoopia tegemiseks vaja. Piisab ka komplektist: notepad + FTP + cron töö (iseteeninduses). Samas, katsetamiseks ja hiljem nt lahtipakkimiseks on siiski SSH mugavam.
📌 NB! See varukoopia tegemise juhend töötab standardse WP installi puhul. Muudel juhtudel (nagu näiteks see) ma ei ole seda katsetanud.
Scripti sisu
Echo asjad panin tooltipideks, et terminalis vaikus ei oleks terve aja 🙂 Kui andmebaas on suur, siis selle export ja pakkimine võtab omajagu aega. Eeldus on, et scripti fail on ühe kausta jagu madalamal kui WP install. Antud näites on WP install kaustas /htdocs.
Selle ülal oleva sisu salvestad näiteks backup.sh failina, käivitad eelpool toodud käsureaga ja ongi kõik. Mida mingi rida teeb?
3. rida – liigub kausta, kus on WP install.
5. rida – teeb andmebaasist koopia ja paneb selle WP installi kausta. Zones piisab wp db export, Veebimajutuses on vaja wp-cli db export.
6. rida – prindib tühja rea terminali 🙂 ilu pärast.
8. rida – liigub ühe kausta jagu madalamale
10. rida – teeb tar.gz formaadis koopia WP installi kaustast, kus sees on ka andmebaasi koopia. Faili nimi kujul YYYYMMDD_failinimi.tar.gz. Kui peaksid selle varukoopia tegemise näiteks cron tööga automatiseerima, siis iga päev on erinev faili nimi. Stackoverflowst leiab mingi juhendi, kuidas kellaaeg ka sisse panna soovi korral.
12. rida – kustutab andmebaasi koopia (kõik *.sql failid WP installi kaustast), sest noh, ei jäta selliseid asju vedelema.
NB! Zones ei sellist lihtsat varianti .sh käivitamiseks nagu pildil näidatud. Seal on vaja faili 2. reale lisada ${0%/*} või 3. reale panna täielik teekond alates /tmp kaustast, kus script tegelikult käivitatakse. Lisaks on käsk iseteeninduses selline:
/bin/bash [[$D2ND_A]]/script.sh
ja scripti failile on vaja teha terminalis: chmod +x script.sh (sest script peab olema executable)
Veelkord: See path, mis Zone iseteeninduses määrad on täispikk kataloog, kus script asub. Sinna ei tehta vaikimisi “cd”, see on lihtsalt muutuja, mida kasutada, et näiteks kui partitsioon peaks muutuma, siis muutujas läheb partitsioon ise õigeks. Cron käivitatakse ~/tmp kataloogis. Käsurealt võib proovida ise cd ~/tmp ja seal sees /data/…/script.sh käivitada. See on siis sama olukord, nagu crontab seda käivitaks.
Kuidas .sh faili teha?
Notepadiga teed faili (kui muud tööriista ei ole harjunud kasutama) ja hiljem muuda lihtsalt faili laiend ära 🙂
Scripti käivitamine
Käsk scripti käivitamiseks (koos sisselogimisega) on Zones selline:
.sh faili path sõltub sellest, kuhu sa parasjagu sisse logimisega satud. Zone.ee ja Veebimajutuse käsud on pisut erinevad (aga mõlemal on iseteeninduses juhendid olemas. See teeb korraga sisselogimise ja scripti käivituse. Kui oled juba sisse loginud ja .sh failiga samas kaustas, siis piisab lihtsalt: bash failinimi.sh
Regulaarse varukoopia tegemiseks (nt üle päeva) on hea mõte kasutada regulaartöid ehk cron töid, mida on lihtne seadistada iseteenindusest. See tähendab, et script pannakse tööle sinu poolt määratud ajal. Veebimajutuses näeb see välja näiteks nii.
Kuidas lahti pakkida
Lahti pakkimise osa on mul siin olemas käsuridade kaupa. Win10 arvutis mul seda lihtsalt 7zipiga näiteks lahti pakkida ei õnnestunud aga serveris tuleb kenasti näiteks sellise käsureaga:
tar -xzvf archive.tar.gz dir/
Kuidas kokku pakkida (excludega)
tar -zcvf "$(date +"%Y%m%d")_occo.tar.gz" --exclude=node_modules occo/
NB! Suurte failihulkade lahtipakkimisel ole ettevaatlik. Ma ükskord pakkisin Magento (~60 tuhat faili) serveri root folderisse lahti muude asjade sekka. Tükk aega oli koristamist 😀
Esimene semester sai sel nädalal läbi. Ülehomme algab uus, kell 8 hommikul. Kirjutan lühidal siia ka, kuidas asjad läksid.
Algus on olnud üsna pöörane. 7 ainet (35 EAP) tehtud. Kaks neist olid pisemad. Matemaatika täiendusõpe (YMA0090) 3 EAP ja programmeerimise täiendusõpe (ITI0002 ) 2 EAP. Teised kõik suured 6 EAP:
Diskreetne matemaatika (IAX0010)
IT eetilised, sotsiaalsed ja professionaalsed aspektid (ICY0004)
Hulgad, seosed, süsteemid (ICY0024)
Sissejuhatus infotehnoloogiasse (ITI0101)
Programmeerimise algkursus (ITI0102)
Kirjutan praegu lühidalt aga täiendan tulevikus, kui midagi meenub.
Diskreetne matemaatika
See õppeaine tundus alguses märksa keerukam. Sisuliselt on aine läbimiseks vaja endale selgeks teha kümmekond arvutusprotseduuri. Näiteks loogikafunktsioonide minimeerimine Quine-McCluskey meetodil, Karnaugn kaardi abil, funktsiooni esitamine Reed-Mulleri baasis jne. Soovitan käia loengutes, praktikumides, lahendada ise näidisülesandeid ja kindlasti Moodle testid ära teha (10% hindest!) ja kodutöö hästi korralikult teha (10% hindest + saad kõik vajaliku selgeks).
Õppejõududel on väga hea õpik aine läbimiseks ning rohkelt õppematerjale. See aine on täiesti tehtav.
Loengud on esimestel kordadel kõvasti ülerahvastatud (kaks auditooriumit on täis). Pärast paari esimest loengut kolitakse ühte audikasse ja lõpuks ei jää sinnagi eriti kedagi. Põhitöö tehakse ära praksides. Loenguid saab nii otse kui ka järelvaatamisena videost vaadata. Ma ise vaatasin otse (sest nii püsib tempo peal) ja tegin seda raamatukogus.
Hulgad, seosed, süsteemid
Kontrolltööd ja eksam on avatud materjalidega. Ma seda alguses ei teadnud. Aga, isegi nii ei ole võimalik ilma õppimata ainest läbi saada, kui asjadest tegelikult aru ei saa. See on selline aine, kus asjadest aru saamine võib võtta natuke aega. Mõned asjad said selgeks alles pärast eksamit. Näiteks hakkasin kahtlema, kas väiksem naturaalarv on suuremas naturaalarvus elemendiks või on ta suurema naturaalarvu elemendi elemendiks 😀 Õige vastus on vist siin. Olen mõelnud, kas võiks kiirelt lahti kirjutada peamised keerukused, mis ette tulid. Aga noh, vaatab.
Aine tehtud saamise võti on see, et orienteerud tähistes ja mõistetes ning oskad hulgateooria kirjutised enda jaoks ümber sõnastada “inimese keelde”. Näiteks tead, et seos on korteežide kogum, funktsioon on funktsionaalne seos, omadus on osahulk; iseenda elemendiks ei olda; iseenda osahulgaks ollakse jne.
Kindlasti üks huvitavamaid aineid aga kohati hakkas kontrolltöödeks ettevalmistamise koormus segama progemise ülesannete lahendamist. Loengud on huvitavad, hea huumorimeele ja näitelugudega õppejõud. Soovitan kasutada õppejõu tehtud õpikuid. Nendes on päris häid näiteid, mis aitavad asju mõista. Ma kasutaksin selle aine iseloomustamiseks sellist “gurmee aine” terminit, kuna seal oli lihtsalt umbes 20-30 tudengit päevaõppest (ÕIS näitab, et kokku deklareerunuid 87). Võrdluseks, progemise algkursusel oli 550 😀
Programmeerimise algkursus
See on päris krõbe aine ja sain selle üsna napilt tehtud. Kursus võtab hästi palju aega. Kursusele oli registreerunud umbes 550 tudengit (päevaõppes ja kaugõppes). Osade jaoks oli see ilmselt väga lihtne, teiste jaoks (nagu mina) üsna raske. Mõtlen kindlasti kursuse uuesti teha, et APIt ja OOPi puudutav osa ka ära teha. Sel korral jäin seal täiesti hätta.
📌 Õppeaine Youtube’i kanal on leitav siit, et saaksid huvi korral vaadata, mida seal tegime.
Aine seisneb suures osas iseseisvalt ülesannete lahendamises. Igal nädalal on 2 ülesannet, millest üks on lihtsam ja teine raskem. Lahenduste korrektsust kontrollivad ja tagasisidet annavad automaattestid, mida võid kasutada lõputult. Selleks, et ülesanne saada arvestatud, peab test andma vähemalt 50% tulemusest. Õppejõud (Ago Luberg – lihtsalt super õppejõud!) ja abiõppejõud on alati kättesaadavad kursuse Discordis, kui kuskile takerduma peaks. Probleemid tavaliselt korduvad ja vahest aitab lihtsalt Discordi kerimine, et vaadata, kas keegi on sama keerukuse otsa juba sattunud. Õppematerjaliks on Pydoc (ja loomulikult kogu internet). Saan aru, et progemises sellise eesti keelse õppematerjali olemasolu ei ole üldse levinud.
📌 Soovitan: Alguses kõik ülesanded 100% peale ära pusida. Esimesed asjad annavad lihtsalt nii palju punkte võrreldes ajaga, mis neisse tuleb panna. Hiljem mingisugust minesweeperi algoritmi või OOPi asju ilmselt pusid hulga kauem. Algkursus on natuke eksitav nimi. Ma olen varasemalt teinud TÜ programmeerimise alused kursuse (3 EAP), mis oli palju lihtsam. Aga jah, eks heale tasemel jõudmiseks ongi vaja aega sisse panna.
Nii praksid kui loengud on esimestel kordadel kõvasti ülerahvastatud. Hiljem see pisut muutub. Kuna loengud ja praksid kantakse videona ka üle, siis ei ole kohalkäimisel tegelikult eriti mõtet rohkem kui see, et saab vajadusel abiõppejõududelt nõu küsida. Praksides on peamine kodutööde vastamine, mis võtab meeletu aja (võid mitu tundi järjekorras oodata).
Sissejuhatus infotehnoloogiasse
Loe Marko blogist. Õppejõud professor Tanel Tammet. Väga huvitav sissejuhatav aine. Aine kodulehe (sh loenguvideod ja materjalid leiab siit). Igal nädalal 2 loengut ja loengutes käsitletud teemade kohta testid. Eksami kordamisküsimused ja vahetööde küsimused on mul siin olemas.
Loengud on esimestel kordadel kõvasti ülerahvastatud (2 auditooriumit on täis). Pärast paari esimest loengut kolitakse ühte audikasse ja lõpuks ei jää sinnagi eriti kedagi. Loenguid saab nii otse kui ka järelvaatamisena videost vaadata.
IT eetilised, sotsiaalsed ja professionaalsed aspektid
Loe Marko blogist. Õppejõud Kaido Kikkas. See on sisuliselt kohustuslik aine, mis annab 6 EAP ja midagi eriti tegema ei pea. Eksam on üks lehekülg esseed kirjutada.
Loengud on esimestel kordadel kõvasti ülerahvastatud (2 auditooriumi on täis). Semestri lõpus ei ole loengutes eriti kedagi.