• HTTP rakenduse omadusi 2 Veeb 3 Veeb 4 HTTP 5 HTTP 6 ASP.NET lehe anatoomia • .aspx • Lehekülje direktiivid – seadistus, mis kirjeldab serveri jaoks, kuidas antud lehte töödelda • Kood – Leheküljel käivitatav kood, mida veebiserver peab käivitama • Lehekülje küljendus – Andmete visuaalne esitlus 7 Veebirakenduste kompileerimine • Veebirakendused kompileeritakse dpnaamiliselt vahetult enne esmast käivitamist • Kompleerimise tulemusel moodustakase .dll (assembly) • Edaspidised päringud saadetakse .dll suunas • Selline kompileerimismudel võimaldab rakenduse lihtsamat muutmist • Lehed, mida ei suudeta kompileerida, ei takista programmi tööd • Esimene kasutaja kannatab lehe laadimise juures 8 • Lähtekood tuleb paigaldada ka serverisse
Värvitud Petri võrgud © Peeter Ellervee sardsüsteemid - arvutusprotsessid tagajärjed
· Märkidel on väärtused 20 · Garanteerida eelnevalt ja off-line
· Ülekannetega on seotud funktsioonid Mitu rakendusprogrammi (ülesannet) Kompileerimine näide Nõrk (soft deadline): ülesanne võib lõppeda peale
Petri võrke saab simuleerida, et süsteemi lisaks üksikule programmile C-programm sellele
verifitseerida ja hinnata suutlikust Mälujaotus #include
Usenet: 1994, suhtlussüsteem Php: 1994, skriptimiskeel, mida kasutatakse peamiselt serveripoolsetes lahendustes dünaamiliste veebilehtede loomise Päevalehed eestis: 1995 esimene eesti päevaleht netis – www.zzz.ee/epl Palm pilot: 1996 Google: 1997, Larry Page ja Sergei Brin Deep blue: 1997, AI, mis võitis males maailmameistrit Wikipedia: 2001, Jimmy Wales and Larry Sanger 6. Nädal Eksamiks: turingi masin, relee, mälutüübid, assembler, kompileerimine, interpreteerimine, jit. Lihtsad andmetüübid, stringid, massiivid, puud. Turingi masin; Alan Turingi 1937. aastal kirjeldatud lihtne abstraktne arvuti, mida kasutatakse arvutatavuse ja selle piiride uurimiseks Relee: mootoriga lüliti Mälutüübid: Assembler: kompilaator, mis tõlgib assemblerkeeles programmi masinkoodiks Kompileerimine: võtab sisendiks kõrgkeelse programmi ja tõlgib selle täitmisprogrammiks
Lisada nimi ja JAVA_HOME kataloog: /usr/lib/jvm/java-8-openjdk-amd64 c) Lisage Jenkinsisse projekt minimal-json. d) Lisage projekti GIT salveks https://github.com/ralfstx/minimal-json.git e) Lisage koostatavaks haruks "*/master". f) Muudatuste kontrollimise sageduseks iga 30 minuti järel. g) Konfigureerige projekti tüübiks Maven. h) Lisage "Top level Maven target"-ks: "clean install". i) Kooste tulemusel peab kompileerimine õnnestuma ja jõudlustestid läbi jooksma. Kontrollige tulemust uurides kooste logi (console output). NB! Töö lõppedes tuleb virtuaalserverisse laadida https://ained.ttu.ee lehelt nädala materjalide hulgast programm lab11-check käivitada käsk sudo./lab11-check ja kuvatud räsi kopeerida https://ained.ttu.ee lehel ITV0050 aine vastava labori Quizzi vastuseks.
++ keeles on piisavas koguses vahendeid (konstandid, mallid, sisseehitatud funktsioonid) selleks, et praktikas vältida täielikult #define kasutamise. Java lihtsalt eiras täielikult eelprotsessori kasutamise, millega sai ühe hoobiga lahti sellega seotud kõikidest probleemidest, ehkki kaotades sellega mõned võimalused. 3 Virtuaalne Java-masin, baitkood, JIT-kompileerimine Paljud rakendused töötavad ainult mõne ühe operatsioonisüsteemi juhtimisel. Kui programmi tööd juhib operatsioonisüsteem, siis programmeerija ei pea arvestama konkreetse väljund- ja sisendseadmega selle eest vastutab OS. See annab nii programmeerijale kui ka kasutajale vabaduse mitte mõelda selle üle, kuidas teostada andmevahetust välisseadmetega aparaattasemel. Näiteks, faili lugemisel on
Page 8 3.3 PROGRAMMEERIMSKEELE SEMANTIKA JA SÜNTAKS Süntax - süntaks on reeglite hulk, mille abil määratakse grammatiliselt õiged keele vormid. Süntaktiliselt õigel lausel on kaks tähendust: · mida pidas silmas lause autor (semantika) · kuidas sai aru lause vastuvõtja (pragmaatika). Semantika - lõplik hulk reegeleid, mis peab ära kirjeldama lõpmatu hulga erinevate programmide tähenduse. Kompileerimine - Kõrgkeelse programmi transleerimine vahe- või masinakeelde. Interpreteerimine - lähtekoodi tõlkimine ja täitmine korraga. Page 9
команды кросс-функциональные. Клин код 12лоенг Correct english, ne bolshe 3 peremennih, ponjatnie nazvanija, o 4em idet re4, funkcija delaet tolko odnu vesh,kommentarii ne nuzni, Виртулизация virtualiseerimine konfiguratsiooni haldused •Arendus mitmele operatsioonisüsteemile •Arendus •Testimine •Erinevatele operatsioonisüsteemidele kompileerimine (continuous integration) Spiral evolution of software 15loeng Model developing vaatepunktide raamistik 5 loeng-2 loeng Vaatepunkide raamistik: Analüüs Käitumise analüüs Eesmärgimudelid, tegevus-diagrammid, kasutuslood Interaktsioonide analüüs Konteksti-diagrammid, klassi-diagrammid Struktuuri analüüs Konteksti-diagrammid, klassi-diagrammid Siin(bus) architecturemodel +- 6loeng Siinipõhise arhitektuuri eelised ja puudused Eelised:
Page 8 3.3 PROGRAMMEERIMSKEELE SEMANTIKA JA SÜNTAKS Süntax - süntaks on reeglite hulk, mille abil määratakse grammatiliselt õiged keele vormid. Süntaktiliselt õigel lausel on kaks tähendust: · mida pidas silmas lause autor (semantika) · kuidas sai aru lause vastuvõtja (pragmaatika). Semantika - lõplik hulk reegeleid, mis peab ära kirjeldama lõpmatu hulga erinevate programmide tähenduse. Kompileerimine - Kõrgkeelse programmi transleerimine vahe- või masinakeelde. Interpreteerimine - lähtekoodi tõlkimine ja täitmine korraga. Page 9
interpreteeritakse vahekoodi, mitte programmi teksti. · JIT (Just In Time) kompilaator - teisendab vahekoodi masinkoodiks "vajadusel" (näit. optimiseerimise eesmärgil). Näiteks keele Java korral Programmi elutsükkel (IDE mõttes - small picture, mitte segi ajada elutsükliga tarkvaratootmises): · programmi teksti sisestamine (näiteks notepad abil, programmi teksti toimetamiseks kontoripaketid hästi ei sobi!) · programmi kompileerimine (Java keele korral: javac Programm.java) · süntaksivigade parandamine (süntaksi silumine) · käivitamiseks vajaliku keskkonna loomine ja muude programmide kaasamine (kui vaja) · programmi käivitamine (Java keele korral: java Programm ) · sisuliste vigade parandamine (silumine, debugging) · programmi testimine (testid peavad olema ENNE välja mõeldud; parem veel, kui testib keegi teine)
mitmesuguseid tegevusi. Page 10 3.3 PROGRAMMEERIMSKEELE SEMANTIKA JA SÜNTAKS Süntax - süntaks on reeglite hulk, mille abil määratakse grammatiliselt õiged keele vormid. Süntaktiliselt õigel lausel on kaks tähendust: • mida pidas silmas lause autor (semantika) • kuidas sai aru lause vastuvõtja (pragmaatika). Semantika - lõplik hulk reegeleid, mis peab ära kirjeldama lõpmatu hulga erinevate programmide tähenduse. Kompileerimine - Kõrgkeelse programmi transleerimine vahe- või masinakeelde. Interpreteerimine - lähtekoodi tõlkimine ja täitmine korraga. Page 11
first commercially successful minicomputer Kõrgkeeled on erineva abstraktsusastmega: Masinalähedane ja Opsüsteemi põhieesmärgid: ebamugav: Fortran, C (portaabel assembler), Abstraktsem ja Pakkuda programmeerijale valmistehtud standardtükke. mugavam: Lisp, Ada, ML, Java, Python Võimaldada kasutajal arvutis ühtemoodi ja harjumuspäraselt tegutseda, sõltumatult sellest, mis Kompileerimine: masinkoodis programm nimega kompilaator programmid tal arvutis on. teisendab keeles X programmi masinkoodfailiks Y. Seejärel Miks opsüsteem? täidetakse saadud masinkoodis programm Y. Näide: C. Arvutit saaks programmeerida ka ilma opsüsteemita. Sel juhul: oleks iga programmi tegemine palju raskem kui opsüsteemi Interpreteerimine: masinkoodis programm nimega interpretaator olemasolu korral
vms. Massiiv on hulk kõrvuti sama tüüpi või sama suurusega objekte (täisarvud, ujukoma-arvud alammassiivid vms). List üldiselt tähendab, et objektid ei pea olema sama tüüpi/sama suured ja nad võivad sisaldada kuitahes sügavaid alamliste. PUUD – Arvutiteaduses on puu laialt levinud abstraktne andmetüüp, mis simuleerib hierarhilist puustruktuuri põhiväärtuse ja alamväärtustega(’’vanem ja lapsed“), mis on ühendatud sõlmede kogumina. 6. nädal • Eksamiks: kompileerimine, interpreteerimine, parsimine, jit, vahekood, programmeerimiskeeled vs kirjelduskeeled, json, html, sql, keelte äratundmine (assembler, fortran, cobol, lisp, C, modula/pascal, python). Mis on data warehouse. Kompileerimine - tõlgib kõrgtaseme keelest masinkoodi (või mingisse nn. vahekoodi, näit. Java baitkoodi) - Kompilaator teeb neist assemblerikeelsed ajutised failid / võtab “source code”i ja tõlgendab selle masinale arusaadavaks koodiks.
kogumit ning autentimissüsteemi Lihtsad Eksamandmetüübid Eksam- Eksam stringid Eksam– Eksamtähemärkide Eksamjada Eksamhoidvad Eksammuutujad massiivid Eksam– Eksamandmestruktuurid Eksammis Eksamkoosnevad Eksamelementide Eksamhulgast, Eksamigal Eksamoma Eksamindex Eksamvõi Eksamkey puud Eksam- Eksam pointer Eksam– Eksamobjekt Eksammis Eksamhoiab Eksammäluaadressi 5 Eksamiks: kompileerimine Eksam– EksamC, FORTRAN, Go interpreteerimine Eksam– programmi kood jooksutatakse otse masinkoodina ilma kompileerimata Py, php, Perl parsimine Eksam– Eksamsüntaksianalüüs – analüüsitakse arvutikeeles/andmestrukrtuurides (ehitatake süntaksipuu) esinevaid stringe vastavalt grammatikareeglitele jit Eksam– Eksaminterpretaator interpreerib vahekoodi Y, kuid kompileerib töö ajal osa Y-st masinkoodiks, mida
java,python jne jne).Harilikud valemid, if-then-else jne, a la x=2*y+sin(y); Kõrgkeeled on erineva abstraktsusastmega: Masinalähedane ja ebamugav: Fortran, C (portaabel assembler) Abstraktsem ja mugavam: Lisp, Ada, ML, Java, Python, Peale programmeerimiskeelte on veel hulk muid keeli: Päringukeeled (SQL, RDQL, ....) Kujunduskeeled (HTML, PS, ...) Spetsifitseerimiskeeled (loogikakeeled, UML,) On olemas kaks põhivarianti keeles X programmi täitmiseks. Kompileerimine: masinkoodis programm nimega kompilaator teisendab keeles X programmi masinkoodfailiks Y. Seejärel täidetakse saadud masinkoodis programm Y. Näide: C. Interpreteerimine: masinkoodis programm nimega interpretaator loeb sisse X keeles faili ja asub seda ridarealt täitma.Näide:vana BASIC Just-in-time compilaator(TSI) Java Keelte erisused: kolm põhiasja Süntaks (kuidas kirjutatakse näiteks if .. then .. else ühes või teises keeles)
– töödelda korraga gr afilisi ja mittegraafilisi andmeid ning tulemusi graafiliselt esitada – asukohaga seotud infot analüüsida. Geoinfosüsteemi lühikirjeldus. GISi põhiülesandeks võib pidada ka andmete integr eer imist. Objekti asukoht või sündmuse toimumispaik on integreeriv parameeter, mille abil erineval kujul olevat infot saab seostada, viidata, sorteida ja analüüsida. GISi riistvara ja tarkvara funktsioonid on alljärgnevad. Andmete kogumine ja verifitseerimine • Kompileerimine • Salvestamine • Täiendamine ja muutmine • Andmete haldamine ja andmevahetus • Manipuleerimine • Analüüs ja andmete kombineerimine • Päringud ja tulemuste esitus Enamlevinud GIS programmid 16 MapInfo • MicroStation • IDRISI • ESRI tooted (ArcView, ArcInfo) Olulisemad GIS päringud asukohapäringud Mis asub asukohas ...? – otsingupäringud Kus asub objekt ...? – trendipäringud Mis on muutunud ..
"Compileonce, runverywhere" CLR (2) -metaandmed ·Kompilaatorid loovad koos koodiga ka metaandmed, mis: kirjeldavad komponente, objekte ja käitustingimusi(klassideasukohtja laadimine, koodigenereerimine, käituskontekst, ...) tagavad automaatse objektide eluea(garbagecollection) ·CLRitoetavad: Visual Basic, C#, Visual C++, Perl (¬MS), COBOL (¬MS) Common Language Specification(CLS) CLR (3) -käitusehaldus ·MSIL (Microsoft Intermediate language) ·JIT (Just In Time) kompileerimine ·Käitus(Execution) ·Assemblies ·Rakendusdoomenid(ApplicationDomains) ·Käitusajahostid(RuntimeHosts) CLR (4) -JIT ·Osa programmi ei täideta konkreetses käituses MSIL-kood konverteeritakse masinakoodiks ja laaditakse mällu vaid siis, kui vaja ·Laadur loob igale meetodile vahendaja(stub) ·Järgnevad pöördumised suunatakse juba loodud masinakoodi poole ·Konverteerimisel verifitseeritakse koodi metaandmeid kasutatadessafecode CLR (4) -Assemblies
Samas on see kallis. SSD (flash mälu, mälupulgad) on samuti transistoridest, aga aeglane ja odav 7. 15 Päringukeeled (SQL, RDQL, ....) Kujunduskeeled (HTML, PS, ...) Spetsiftseerimiskeeled (loogikakeeled, UML, ....) Parser ehk süntaksianalüüs: süntaksipuu - Parser ehitab mällu süntaksipuu, mida siis edasi töödeldakse Kuidas keeles X kirjutatud programmi täidetakse? Kompileerimine: masinkoodis programm nimega kompilaator teisendab keeles X programmi masinkoodfailiks Y. Seejärel täidetakse saadud masinkoodis programm Y. Näited: C, Fortran, Go Interpreteerimine: masinkoodis programm nimega interpretaator loeb sisse X keeles faili, teisendab ta nö pseudo-assembleriks / vahekoodiks ja asub seda vahekoodi varianti rida-realt täitma. Näited: Python, PHP, Perl, vanemad Javascripti mootorid jne. NB
Abstraktsem ja mugavam: Lisp, Ada, ML, Java, Python, Peale programmeerimiskeelte on veel hulk muid keeli: Päringukeeled (SQL, RDQL, ....) Kujunduskeeled (HTML, PS, ...) Spetsifitseerimiskeeled (loogikakeeled, UML, ....) .... Kuidas keeles X kirjutatud programmi täidetakse? NB! arvuti suudab täita ainult masinkoodis programme. Kaks põhivarianti keeles X programmi täitmiseks. Kompileerimine: masinkoodis programm nimega kompilaator teisendab keeles X programmi masinkoodfailiks Y. Seejärel täidetakse saadud masinkoodis programm Y. Näide: C. Interpreteerimine: masinkoodis programm nimega interpretaator loeb sisse X keeles faili, kontrollib/ veidi teisendab teda ja asub nö sisekujul varianti rida-realt täitma. Näited: Python, PHP, Perl, vanemad Javascripti mootorid jne. NB!
Describe the concept of End User Computing Raaltöötluse lõppkasutaja (End User Computing) on infosüsteemi või selle teavet oma tegevuses kasutav isik või arvutivõrku andmetöötluseks ja infovahetuseks kasutav isik, seade, programm või arvutisüsteem. Automaatne andmetöötlus: andmetega süstemaatiline operatsioonide sooritamine. Näide: Aritmeetika- või loogikatehted andmetega, andmete mestimine või sortimine, programmide assembleerimine või kompileerimine, või operatsioonid tekstiga, näiteks redigeerimine, sortimine, mestimine, salvestamine, otsing, kuvamine või printimine. MÄRKUS: Terminit andmetöötlus ei tohi kasutada infotöötluse sünonüümina. Infotöötlus Informatsiooniga süstemaatiline operatsioonide sooritamine, mis sisaldab andmetöötlust ning võib sisaldada näiteks andmeside ja bürooautomaatika operatsioone.
hooldus. Väikeste programmeerimistööde juures ei ole CASE-vahenditest mingit kasu VALE Testimisega saab näidata vigade esinemist tarkvaras, kuid mitte kunagi ei saa testimisega näidata vigade puudumist. Jah Hooldusetapp ehk toeetapp on tavaliselt kõige lühema kestvusega etapp tarkvara elutsüklis Ei Juurutusetapil tuleb: kasutajaid koolitada, tarkvara installeerida, andmeid ülekanda. Milliseid tegevusi on sobiv läbi viia arenduskeskkonnas? Koodi kirjutamine, koodi kompileerimine, moodulite testimine, projektdokumentatsiooni koostamine. Milliseid tegevusi on sobiv läbi viia testimiskeskkonnas? Kasutajatega testimine, kasutajate koolitus, regressioontestimine, koormustestimine. Milliseid tegevusi on sobiv läbi viia töökeskkonnas? Kasutajate koolitus, kliendipoolne igapäevatöö Millistel andmete omadustel põhineb andmete turvamudel? Käideldavusel, terviklusel, konfidentsiaalsusel. Tarkvarasüsteemi turvalisuse tagamisega tuleb alustada tarkvara projekteerides
Ivy, Maven. Rakenduse konfiguratsioon: • Dünaamiline, sõltub keskkonnast. • Staatiline, luuakse rakenduse ehitamisel. • Healthy mix. Proovi saavutada olukord, kus versioonihaldusest tulev asi on kompileeruv ja vajadusel pakenduv kohe, ilma lisakonfigureerimiseta. Virtualiseerimine. • Arendus mitmele operatsioonisüsteemile: o Arendus, o Testimine, • Erinevatele operatsioonisüsteemidele kompileerimine (continuous integration). Töölaua/serveripargi virtualiseerimise vahendid: parallels desktop, VM Ware Workstation, Virtualbox. Muu Cross-functional tiim - Kõik vajalikud rollid on kaetud, Teistest sõltumatu, Fookus koostööl ja tulemusel. Ideaalne tiimi suurus 5-7 inimest, sh 4 arendajat, 2 kvaliteedispetsialisti, analüütik. Self-organizing tiim - Meeskond on isemajandav, Ühised eesmärgid, vastutus, otsused. Lean põhimõtted - Ehita õiget asja, Ehita asi õigesti, Pidev areng
properties fail, .ini faili, .yaml XML, servlet Andmebaas JNDI Lähtekood … o Proovi saavutada olukorda, kus versioonihaldusest tulev asi on kompileeriv ja vajadusel pakenduv kohe, ilma lisaknfigureerimisteta Virtualiseerimine o Arendus mitmele operatsioonisüsteemile Arendus Testimine o Erinevatele operatsioonisüsteemidele kompileerimine (continuous integration) o Töölaua/serveripargi virtualiseerimise vahendid: Parallels desktop VM Workstation Virtualbox- tasuta Testimine o Unit test o Acceptance test o Regressioon test o Jõudlustest o Selenium o Selenide o Cucumber o FitNesse o … o Rational robot-IBM o Test Studio –Telerik
Õigusallika teksti tõlgendamine Üldreeglitega on uurijad pigem ettevaatlikud. Üks võimalikke ahelaid: i. Õigusallika teksti esmane analüüs ii. Regulatsiooni otstarbe (lähima eesmärgi) tuvastamine iii. Õigusallika sisemine ja välimine süstemaatika iv. Seotud normide (normistiku) kompileerimine; järgneb nö kontrollskeem: v. Ebaselguse korral seadusandja eesmärkide tuvastamine vi. Jätkuva ebaselguse korral ajaloolise ja geneetilise materjali kasutamine. Õigusnormi rakendamise staadiumid: a. sündmuse (teo) kirjeldus: faktilise koosseisu määratlemine ja analüüs (faktiküsimuse lahendamine); b
.........................................................................................37 Dokumenteerivad kommentaarid..........................................................................................38 Readonly........................................................................................................................... 38 Näide.................................................................................................................................38 Kompileerimine................................................................................................................ 39 Kommentaarifail............................................................................................................... 39 Ülesandeid.........................................................................................................................40 Pärilus.....................................................................................................
• healthy mix Konfiguratsioon: • .properties fail, .ini fail, .yaml • XML, servlet • andmebaas • JNDI • lähtekood • ... ! Proovi saavutada olukord, kus versioonihaldusest tulev asi on kompileeruv ja vajadusel pakenduv kohe, ilma lisakonfigureerimisteta. 176. Virtualiseerimine. Milleks? • Arendus mitmele operatsioonisüsteemile • Arendus • Testimine • Erinevatele operatsioonisüsteemidele kompileerimine (continuous integration) Töölaua/serveripargi vitualiseerimise vahendid: • Parallels Desktop • VM Ware Workstation • Virtualbox tasuta Näited: Mida küsiti eksamil eelmisel aastal? 103
}
///
Hea uudis on see, et Microsofti .NET raamistik integreerub üsna ilusti Windowsi sisse muutudes osaks Windowsist. Enamgi veel, kui võtta Microsofti viimane Windows e. Vista siis raamistik ongi Windows! See tähendab seda, et kõik klassid ja meetodid, mida Microsoft kasutab oma operatsioonisüsteemi loomisel, on kasutamiseks ka kõigile teistele arendajatele, mis omakorda annab kätte väga võimalusterohked vahendid kiiresti funktsionaalsete programmide ehitamiseks. CLR rakenduste kompileerimine käib kahes faasis: 1. Esimese sammuna programmeerija kompileerib oma lähtekoodi vahekeelde. Microsofti raamistiku puhul on selleks MSIL (Microsoft Intermediate Language). 2. Teise sammuga käivitamise hetkel CLRi kooseisus olev kompilaator kompileerib MSILi masinkoodi, mida protsessor hakkab täitma. Kompileeritakse vaid need osad programmist, mida kasutatakse e. kompileerimine on kiire, kuigi esimene käivitamine võib olla aeglasem