Vorgurakendused 2 prax 1 2016
Ülesandeks on implementeerida lihtne P2P protokoll (rakendus selgub lähiajal)
- realiseeritud HTTP protokolli peale (vaja implementeerida ka HTTP server ja klient)
- hakkab tööle virtuaalses võrgus (https://rangeforce.com/)
- eesmärk kõigi rakendused omavahel suhtlema ja ühise võrguna tegutsema panna
Ettevalmistus
Vali arenduseks töövahend: virtuaallaboris on olemas Java (+maven) ning Python 3 tugi. Muud keeled (Haskell, C, Javascript, C#) eeldavad, et tudeng saab ise arenduskeskkonna tööle. Seda on kasulik kohe alguses testida. Virtuaalmasinas jookseb Ubuntu desktop 16.04.
Tee avalikku git SCM teenusesse uus repo. Sobivad teenused on http://gitlab.com, http://github.com, http://bitbucket.com .
Leia tehtud repo URI. Näiteks: git@gitlab.com:priitj/test3.git (SSH), https://gitlab.com/priitj/test3.git (HTTPS).
Üle SSH protokolli reposse pöördumiseks on vaja täiendavalt teha SSH võti. Selleks vaata juhendeid, näit. Githubi puhul https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ ; https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/ (need juhendid sisaldavad ka konfi Windowsi/Linuxi/Maci git kliendi jaoks).
Töö käigus repo kasutamiseks on kaks alternatiivi:
- IDE-sse integreeritud giti klient. IntelliJ/PyCharm puhul tee uus projekt selliselt, et vali VCS->Checkout from Version Control->Git, pane URI (SSH või HTTPS oma) ning uus kataloog. Siis "Clone" ning edaspidi on projekti töökataloog juba seotud eelnevalt tehtud repoga.
- Käsurea git klient (GIT bash Windowsi all või git käsk Linuxi/Maci all). Sel puhul järgi Gitlabi/Githubi/Bitbucketi juhiseid repo kohalikku arvutisse kloonimiseks ning selle initsialiseerimiseks.
Virtuaallaborisse sisse logimine
User/pass: student/student
Repo kloonimine virtuaalmasinasse
HTTP server/klient
HTTP baasil töötav protokoll näeb välja umbes järgmine (kasutame ainult GET päringuid):
http://1.2.3.4/request?param1=val1¶m2=val2 http://1.2.3.5/response?param1=val1¶m3=val3
jne. Seega tuleb meil teha:
- HTTP server, mis suudaks vastu võtta GET päringut ning parseerida pathi ja parameetrid (query stringi). Meid huvitab ka IP, kust päring tuli, see tuleb edaspidi kasutamiseks meelde jätta.
- Selle peale peaks serveris käivituma mingi funktsioon. Selle võime jätta hetkel tühjaks
- Lõpuks saadame vastuse samuti GET päringuga. Seega vaja selleks HTTP klienti.
Server tuleb realiseerida ise, kasutades võrgust leitavaid näiteid mikro-http-serveri jaoks (tüüpiliselt paar lehekülge koodi). Selliseid näitekoode võib täiesti otse kasutada.
C jaoks on sobiv mikroserver näiteks tiny, java jaoks sobib alustuseks sisseehitatud HTTP server. Socketi tasemel alternatiivid on on see server väga hea väike näide, aga selgitava tekstita, ning selgitavate tekstidega servereid leiad mh siit ja siit.Loe java socketitest põhjalikumalt siit. Pythoni serverinäite saad siit; lühem ja uuem. Http kohta võib lugeda näiteks siit.
Rakenduse ideed
- masspäringute hajutamine
- content distribution (streaming)
- maksed
- maatriksite korrutamine
- anonümiseeriv võrk
Praktikumi kirjeldus täieneb jooksvalt semestri käigus