Vorgurakendused 2 prax 1 2016: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
PriitJ (arutelu | kaastöö)
PriitJ (arutelu | kaastöö)
Resümee puudub
23. rida: 23. rida:


Repo kloonimine virtuaalmasinasse
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&param2=val2
  http://1.2.3.5/response?param1=val1&param3=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 [http://www.lambda.ee/images/8/89/Itsissejuhatus_tiny.zip tiny], java jaoks
on [http://www.java2s.com/Code/Java/Tiny-Application/HttpServer.htm see server] väga hea väike näide, aga selgitava tekstita,
ning selgitavate tekstidega servereid leiad mh [http://onjava.com/pub/a/onjava/2003/04/23/java_webserver.html siit] ja
[http://fragments.turtlemeat.com/javawebserver.php siit].Loe java socketitest põhjalikumalt [http://download.oracle.com/javase/tutorial/networking/sockets/ siit]. Pythoni serverinäite [http://muharem.wordpress.com/2007/05/29/roll-your-own-server-in-50-lines-of-code/ saad siit]; [https://daanlenaerts.com/blog/2015/06/03/create-a-simple-http-server-with-python-3/ lühem ja uuem]. Http kohta võib lugeda [http://www.jmarshall.com/easy/http/ näiteks siit].


== Rakenduse ideed ==
== Rakenduse ideed ==
30. rida: 50. rida:
* maksed
* maksed
* maatriksite korrutamine
* maatriksite korrutamine
* anonümiseeriv võrk


<b>Praktikumi kirjeldus täieneb jooksvalt semestri käigus</b>
<b>Praktikumi kirjeldus täieneb jooksvalt semestri käigus</b>

Redaktsioon: 12. september 2016, kell 16:36

Ü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:

  1. 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.
  2. 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&param2=val2
 http://1.2.3.5/response?param1=val1&param3=val3

jne. Seega tuleb meil teha:

  1. 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.
  2. Selle peale peaks serveris käivituma mingi funktsioon. Selle võime jätta hetkel tühjaks
  3. 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 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