X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugused realisatsioonid ka Windowsile erinevad realisatsioonid erinevatel platvormidel üsna hästi ühilduvad
X Window System klient-server protokoll riistvara spetsiifika ideaalis vaid serveris võimalik klient-server suhtlus üle võrgu võimalik käivitada ühes masinas mitu X serverit (loomulikult ka mitu X klienti)
X Window System: ajalugu graafilisi süsteeme enne X sündi: 1973: Xerox Alto 1981: Xerox Star 1982: Andrew Project (Carnegie Mellon University) 1983: Apple Lisa 1984: Apple Macintosh 1984: Blit
X Window System: ajalugu enne 1984: eelkäija W (Stanford University) 1984 juuni: esimene X (MIT)... kiire areng... 1985 jaanuar: X versioon 5 1985 september: X versioon 9 kasutati mõnedel DEC ja IBM süsteemidel 1986 jaanuar: X10R3 - esimene laiapinnaline X
X Window System: ajalugu 1986 sai selgeks, et on vaja luua korralikult ümberdisainitud X versioon 1986 mai algas avatud projekt X11 (protokolli) loomiseks - üks esimesi väga suure haardega vaba tarkvara projekte 1987: X11R1 1988: loodi The X Consortium mittetulunduslik tootjate ühendus loodud juhtima X arendust X11R2 (1988) - X11R6.3 (1996)
X Window System: ajalugu 1997: juhtimine üle The Open Group 'ile probleemid litsentsimisega X11R6.4, X11R6.5 1999: The Open Group loob X.org 2004: X.org Foundation suur muutus: juhtivaks jõuks arendajad, liikmeks võib saada igaüks X11R6.7 - baseerus XFree86 4.4RC'l nüüdsest lõppkasutajale kasutatavad tooted (varasemad X11 olid ainult aluseks tootjatele)
X Window System DECwindows (DEC) OpenWindows (Sun) XSun XFree86 X.Org...
X Window System: server põhialused: on aknad (alad ekraanil), millesse saab joonistada, mida saab liigutada on erinevad sisendseadmed: klaviatuur, hiir, millelt tekitatud sündmuseid server töötleb ja edastab X server ei ole: lahutamatu osa operatsioonisüsteemist kasutajaliides
X Window System: server X serveri ülesanded: sisendi käsitlemine sisend antakse edasi klientidele sündmuste (event) kujul aknateenused kliendid saavad aknaid luua ja hävitada, aknaid saab luua teiste akende sisse kliendid saavad akna kohta päringuid esitada tekstiteenused kliendid saavad tellida määratud šriftiga määratud asukohta teksti kirjutamist kliendid saavad esitada päringuid šriftide kohta
X Window System: server X serveri ülesanded: graafika kliendid saavad tellida graafikaelementide joonistamist, rasteroperatsioone ressursihaldus serveri ressursihaldur hoiab ressursside kogu: šriftid, värvid, rastrerpildid: neid saab kasutada rakendustele ühise ilme loomiseks jms.
X Window System: kliendid klient on rakendus, mis kasutab oma väljundi näitamiseks X serverit klient saadab serverile päringuid klient saab serverilt sündmuseid eriliseks kliendiks on aknahaldur loob klientidele ühtse välimuse ja käitumise vahendab klientidele sündmuseid klientide vahelise suhtluse protokoll: ICCCM - Inter-Client Communication Conventions Manual
X Window System: klient-server suhtlus Nelja tüüpi teated: päring (kliendilt serverile) vastus (serverilt kliendile) kõigile päringutele ei vastata sündmus (serverilt kliendile) veateade (serverilt kliendile)
X Window System: praktiline kasutamine peab eksisteerima töötav X server enamasti on selleks vastav haldur, mis hoolitseb kasutaja sisselogimise ja X serveri käivitamise eest (xdm, gdm, kdm) käivitamine startx abil keskkonnamuutuja DISPLAY peab osutama soovitud serverile lihtsamatel juhtudel juba paigas üldkuju: host.ee:serverinumber.ekraaninumber
X Window System: praktiline kasutamine keskkonnamuutuja DISPLAY vaatamine, sättimine > echo $DISPLAY localhost:0.0 > setenv DISPLAY hostname.ee:0.0 server peab meid usaldama tuleb käivitada kliente esimesena ehk aknahaldur, tavaliselt on see operatsioon automaatne
X Window System: aknahaldur (window manager) aknahaldur: eriline klient, mis määrab teiste akende välimuse ja käitumise näide X modulaarse olemuse eelistest twm dtwm ctwm fvwm... aknahaldureid on massiliselt võimalik kasutada kliente ka ilma aknahaldurita
X Window System: aknad aknad on hierarhilises struktuuris juuraken iseseisev aken parameetreid (osad seotud X'ga, osad aknahalduriga) asukoht ja suurus (geometry) ontop sticky värviruum
X Window System: toolkit'id, keskkonnad motif Xaw tk Qt GTK+ KDE Gnome CDE
X Window System: autentimine xhost xhost +minuhost.ee xhost -minuhost.ee pole turvaline!! xauth MIT-magic-cookie genereeritakse igal X serveri sessioonil uus hestia.at.mt.ut.ee:0 MIT-MAGIC-COOKIE-1 5131464b636d642f6b5275487a447538
X Window System: autentimine sessioonis, kus on juba võti olemas: > xauth list sessioonis, kuhu tahame võtme lisada: > xauth add vastav_võti
X Window System: ssh tunnelid X protokoll on krütpeerimata pole üle (lai)võrgu turvaline ssh lubab teha tunneleid automaatne X tunnel koos keskkonna sättimisega: > ssh -X kasut@brutus.at.mt.ut.ee brutus> xclock &
X Window System: font server erinevaid kirju/šrifte/fonte palju vaja erinevaid lisateenuseid eritüübiliste šriftide tugi (Type1, TrueType) anti-alias tugi eraldi haldusprotsess, suhtlus X serveriga fontserveri port: 7100 fontpath - võib sisaldada nii lokaalseid katalooge kui fontservereid xfs
X Window System: puudujääke kihilise arhitektuuri kiiruseprobleemid pole arvestatud heliga rakenduste omavaheline suhtlus siiski halvasti reguleeritud riistvaratugi MS Windowsist maas/kehvem sessioone ei saa lahti ühendada / üle võtta (nagu MS RDP) Enamusega neist probleemidest tegeletakse (või on juba mingi lahendus olemas)
Tcl - Tool Command Language John Ousterhout University of California, Berkeley 1980ndate keskpaik tõsisem kasutuspind tekkis 90ndate alguses tänapäevane kuju: 1997-1999... siiani aktiivses arenduses
Tcl - Tool Command Language skriptimiskeel / interpretaator algselt mõeldud kompileeritud koodi kõrgtasemel sidumiseks tegelikult on ka suuri, iseseisvaid Tcl/Tk rakendusi liidesed erinevate keeltega (C, C++, Java) Tcl interpretaatori saab lihtsal viisil oma rakenduse sisse ehitada laiendatav hääldatakse nagu tickle
Tk - Tcl toolkit Tcl tähtsaim laiendus graafiliste liideste loomiseks koos kasutades nimetatakse Tcl/Tk mitmed head küljed: arendustöö kiirus (interpreteeritav keel, pole vaja kompileerida) lihtsate kasutajaliideste defineerimine ongi lihtne kasutajaliides ja sisuline osa võivad olla üsnagi lahus mõistlikud vaikeväärtused Tk's
Tcl - põhialused sõnepõhine keel on ainult üks andmetüüp: sõne ka käsud ise on sõned lihtne süntaks suhteliselt vähe juhtkonstruktsioone kõik on käsud, ka juhtkonstruktsioonid on lihtsalt käsud
Tcl - põhialused käsu süntaks käsk arg1 arg2 arg3 kaks käsku samal real: käsk1; käsk2 käsu täitmine: argumentide grupeerimine (vajadusel) väärtuste asendamine (käsu-asendused,muutujate väärtused, varjestatud märgid) käsu väljakutsumine
Tcl - esimene katse puts stdout {Hello, World!} puts - käsk väljastamiseks stdout - väljundkanali nimi {} - stringi grupeerimseks, võiks kasutada ka
Tcl - muutujad sõnetüüpi muutujad väärtustamine: set muutuja väärtus kasutamine set teinemuutuja $muutuja muutuja kaotamine unset muutuja unset -nocomplain muutuja
Tcl eeldefineeritud muutujaid argc käsureaargumentide arv argv käsureaargumentide massiiv argv0 käivitatud skripti nimi env keskkonnamuutujate massiiv
Tcl - käsu asendamine käsu väljund asendatakse teise käsu sisse: set pikkus [string length minusõne] sarnane konstruktsioon teistes shellides `käsk` ühel real saab olla mitu käsuasendamist, täidetakse vasakult paremale ühe käsuasendamise sees võib olla teisi, täidetakse seest väljapoole
Tcl - juhtstruktuure while {loog-avaldis} { } käsud while {loog-avaldis} \ { käsud }
Tcl - juhtstruktuure if {loog-avaldis} { käsud } elseif { käsud } else { käsud }
Tcl - juhtstruktuure for {algkäsk} {tingimus} {tsüklikäsk} { } käsud for {set i 0} {$i < 10} {incr i} { } set value [expr $value*$i]
Tcl - juhtstruktuure foreach muutuja {list} { } käsud foreach {muut1 muut2} {l1 u1 l2 u2 l3 u3} { } käsud
Tcl - juhtstruktuure foreach üle mitme listi paralleelselt: foreach jrk {1 2 3} nimi {"Ülo" "Mart"\ "Kadri"} { } puts "Jrk: $jrk Nimi: $nimi" break - katkestab korduse continue - alustab uut kordust
Tcl - juhtstruktuure switch -omadused -- $muutuja { väärtus1 {käsud} väärtus2 {käsud} } -omadused: -exact -glob -regexp
Tcl - juhtstruktuure catch - vigade "püüdmine" catch {käsk} if {[catch {käsk} tulemus]} { veatöötluskäsud } else { eduka-tulemuse-käsud }
Tcl - matemaatilised avaldised Tcl matemaatilisi avaldisi ei arvuta avaldiste väärtuste leidmiseks expr expr avaldise süntaks sarnane C avaldiste süntaksile expr 1+2 expr $x + $y set pi [expr 2*asin(1.0)] set pi [expr {2*asin(1.0)}]
Tcl varjestamine varjestamiseks kasutatakse \ set dollarigasõne \$10 set teinesõne $dollarigasõne set unicode \u001b set hex \0x1b set oct \033
Tcl grupeerimine grupeerimine "" abil asendused viiakse läbi set s Tere puts stdout "Sõne $s pikkus on [string length $s]." Sõne Tere pikkus on 4. grupeerimine {} abil asendusi ei tehta puts stdout {Sõne $s pikkus on [string length $s].} Sõne $s pikkus on [string length $s].
Tcl protseduurid defineerimine: proc nimi argumendid käsud proc liitmine {a b} { return [expr {$a+$b}] } väljakutsumine liitmine 10 23
Tcl - käivitamine UNIX'is interaktiivne käivitamine > tclsh > wish (Koos Tk'ga) käivitamine käsufailina #!/usr/local/bin/tclsh #!/usr/local/bin/wish
Tcl - näited /opt/local/share/exsource/