Differences

This shows you the differences between two versions of the page.

Link to this comparison view

eim:colocvii:colocviu02 [2020/03/22 22:37]
dragos.niculescu [Model de Subiect]
eim:colocvii:colocviu02 [2021/05/30 21:52] (current)
dan_valentin.bina [Observații Generale]
Line 7: Line 7:
 </​HTML>​ </​HTML>​
  
-{{url>​https://​ocw.cs.pub.ro/​courses/​_media/​eim/​colocvii/​colocviu02/​eim2018-tp02-varsim.pdf 90%,800px}}+{{url>​https://​ocw.cs.pub.ro/​courses/​_media/​eim/​colocvii/​colocviu02/​eim-colocviu2-exemplu.pdf 90%,800px}}
  
 <​HTML>​ <​HTML>​
Line 53: Line 53:
 dependencies { dependencies {
   ...   ...
-  ​compile ​group: '​cz.msebera.android',​ name: '​httpclient',​ version: '​4.4.1.2'​+  ​implementation ​group: '​cz.msebera.android',​ name: '​httpclient',​ version: '​4.4.1.2'​
 } }
 </​file>​ </​file>​
Line 67: Line 67:
 dependencies { dependencies {
   ...   ...
-  ​useLibrary ​'​org.apache.http.legacy'​+  ​implementation ​'​org.apache.http.legacy'​
 } }
 </​file>​ </​file>​
Line 79: Line 79:
 dependencies { dependencies {
   ...   ...
-  ​compile ​project (':​jsoup-1.10.2'​)+  ​implementation ​project (':​jsoup-1.10.2'​)
 } }
 </​file>​ </​file>​
Line 99: Line 99:
 ===== Rezolvări ===== ===== Rezolvări =====
  
-Proiectul Android Studio corespunzător aplicației Android ce conține rezolvările complete ale cerințelor colocviului sunt disponibile pe [[https://​github.com/​eim2017/​PracticalTest02|contul de Github al disciplinei]].+Proiectul Android Studio corespunzător aplicației Android ce conține rezolvările complete ale cerințelor colocviului sunt disponibile pe [[https://​github.com/​eim-lab/​PracticalTest02|contul de Github al disciplinei]].
  
 **1.** **a)** Se accesează [[https://​www.github.com|Github]] și se realizează autentificarea în contul personal, prin intermediul butonului //Sign in//. **1.** **a)** Se accesează [[https://​www.github.com|Github]] și se realizează autentificarea în contul personal, prin intermediul butonului //Sign in//.
Line 127: Line 127:
  
 <​code>​ <​code>​
-student@eim2017:~$ git clone https://​www.github.com/​perfectstudent/​PracticalTest02+student@eim:~$ git clone https://​www.github.com/​perfectstudent/​PracticalTest02
 </​code>​ </​code>​
  
Line 424: Line 424:
   * în situația în care informațiile meteorologice se găsesc în obiectul gestionat de server, sunt preluate local;   * în situația în care informațiile meteorologice se găsesc în obiectul gestionat de server, sunt preluate local;
   * în situația în care informațiile meteorologice nu se găsesc în obiectul gestionat de server, sunt preluate prin interogarea serviciului Internet, la distanță:   * în situația în care informațiile meteorologice nu se găsesc în obiectul gestionat de server, sunt preluate prin interogarea serviciului Internet, la distanță:
-    * se realizează o cerere de tip ''​POST''​ la adresa Internet [[http://​www.wunderground.com/​cgi-bin/​findweather/​getForecast]];​ parametrul care trebuie precizat este ''​query''​ și are valoarea orașului pentru care se dorește să se obțină informațiile;​ acesta se atașează cererii de tip ''​POST'',​ folosind codificarea ''​UTF-8'';​ +    * o cerere de tip ''​GET''​ în care valoarea parametrului este inclusă în cadrul adresei Internet: [[http://api.openweathermap.org/data/2.5/weather?q=Bucharest&​appid=...]]);
-    * alternativ, se poate realiza ​o cerere de tip ''​GET''​ în care valoarea parametrului este inclusă în cadrul adresei Internet: [[https://www.wunderground.com/cgi-bin/findweather/getForecast?query=...]]);+
     * se obține răspunsul sub forma unui șir de caractere, reprezentând codul sursă al paginii Internet; ​     * se obține răspunsul sub forma unui șir de caractere, reprezentând codul sursă al paginii Internet; ​
     * folosind biblioteca Jsoup, se inspectează documentul în format HTML furnizat pentru a determina locația la care sunt disponibile informațiile necesare <code html>     * folosind biblioteca Jsoup, se inspectează documentul în format HTML furnizat pentru a determina locația la care sunt disponibile informațiile necesare <code html>
-<​script>​ +{ 
-  ​wui.asyncCityPage = true; +  "coord"
-  wui.bootstrapped.API = ""​+    "lon": ​26.11, 
-  wui.api_data = +    "lat": 44.43 
-  ​+  }
-    "response": ​+  "weather": ​[ 
-      "​version":​ "2.0", +    { 
-      "​units":​ "​metric",​ +      "id": ​804
-      "​location":​ { +      "main": "Clouds", 
-        "​name":​ "​Bucuresti",​ +      "description": "overcast clouds", 
-        "​neighborhood":​null,​ +      "icon": "04n"
-        "​city":​ "​Bucuresti",​ +
-        "​state":​ null, +
-        "​state_name":"​Romania",​ +
-        "​country":​ "​RO",​ +
-        "​country_iso3166":​null,​ +
-        "​country_name":"​Romania",​ +
-        "​zip":"​00000",​ +
-        "​magic":"​11"+
-        "wmo":"​15420",​ +
-        "​latitude":44.50000000, +
-        "​longitude":​26.12999916+
-        "elevation":91.00000000,​ +
-        "​l":​ "/​q/​zmw:​00000.11.15420"​ +
-      }, +
-      "date": ​+
- ... +
-      }+
-      "current_observation": ​+
-        ​"source":​ "PWS", +
-        "station": ​+
-          ...  +
-        }, +
-        ​"estimated": null+
-        "date": ​+
-          ... +
-        }, +
-        ​"metar": "AAXX 16161 15420 22997 80502 10201 20109 30072 40180 55008 8807/ 333 55300 0//// 20454",​ +
-        "​condition":"​Overcast",​ +
-        "​temperature":​ 21.5, +
-        "​humidity":​48,​ +
-        "​wind_speed":​6.9,​ +
-        ..., +
-        "​pressure":​ 1018, +
-        ..., +
-      }+
     }     }
-  ​}; +  ​], 
-</​script>​ +  "​base":​ "​stations",​ 
-</​code>​ Se observă faptul că informațiile necesare se regăsesc în cadrul unei etichete de tip ''<​script> ​... </​script>''​ care conține un obiect denumit ''​wui.api_dat''​ exprimat în format JSONÎn acest sensse obține lista tuturor etichetelor de tip ''​script''​ (se folosește metoda ''​getElementsByTag()''​)se preia conținutul acestora (prin intermediul metodei ''​data()''​ din cadrul clasei ''​Element''​) și se verifică dacă se regăsește șirul de caractere ''​wui.api_dat'';​+  "​main":​ { 
 +    "​temp":​ 284.65, 
 +    "​feels_like":​ 283.92, 
 +    "​temp_min":​ 283.15, 
 +    "​temp_max":​ 285.93, 
 +    "​pressure":​ 1016, 
 +    "​humidity":​ 81 
 +  }, 
 +  "​visibility":​ 10000, 
 +  "​wind":​ { 
 +    "​speed":​ 0.5, 
 +    "​deg":​ 310 
 +  }, 
 +  "​clouds":​ { 
 +    "​all":​ 88 
 +  }, 
 +  "​dt":​ 1588887122,​ 
 +  "​sys":​ { 
 +    "​type":​ 1, 
 +    "​id":​ 6911, 
 +    "​country":​ "​RO",​ 
 +    "​sunrise":​ 1588906577,​ 
 +    "​sunset":​ 1588958868 
 +  }, 
 +  "​timezone":​ 10800, 
 +  "​id":​ 683506, 
 +  "​name":​ "​Bucharest",​ 
 +  "​cod":​ 200 
 +
 +</​code> ​
     * se inspectează documentul în format JSON pentru a obține informațiile necesare: se obțin, succesiv, obiectele atașate ca valori pentru cheile ''​response''​ → ''​current_observation''​ și ulterior datele meteorologice,​ regăsite ca valori sub cheile ''​temperature'',​ ''​wind_speed'',​ ''​condition'',​ ''​pressure'',​ ''​humidity'';​     * se inspectează documentul în format JSON pentru a obține informațiile necesare: se obțin, succesiv, obiectele atașate ca valori pentru cheile ''​response''​ → ''​current_observation''​ și ulterior datele meteorologice,​ regăsite ca valori sub cheile ''​temperature'',​ ''​wind_speed'',​ ''​condition'',​ ''​pressure'',​ ''​humidity'';​
     * se construiește un obiect de tipul ''​WeatherForecastInformation''​ folosind informațiile furnizate și se transmite către server pentru ca acesta să fie utilizat ulterior pentru cereri provenite de la alți clienți, vizând același oraș.     * se construiește un obiect de tipul ''​WeatherForecastInformation''​ folosind informațiile furnizate și se transmite către server pentru ca acesta să fie utilizat ulterior pentru cereri provenite de la alți clienți, vizând același oraș.
Line 724: Line 717:
  
 <​code>​ <​code>​
-student@eim2017:~$ nc 192.168.56.101 5000+student@eim:~$ nc 192.168.56.101 5000
 Bucuresti Bucuresti
 all all
Line 737: Line 730:
  
 <​code>​ <​code>​
-C:\Users\Eim2017> telnet 192.168.56.101 5000+C:\Users\Eim> telnet 192.168.56.101 5000
 Bucuresti Bucuresti
 all all
Line 758: Line 751:
  
 <​code>​ <​code>​
-student@eim2017:​~/​PracticalTest02$ git add * +student@eim:​~/​PracticalTest02$ git add * 
-student@eim2017:​~/​PracticalTest02$ git commit -m "​finished tasks for PracticalTest02"​ +student@eim:​~/​PracticalTest02$ git commit -m "​finished tasks for PracticalTest02"​ 
-student@eim2017:​~/​PracticalTest02$ git push origin master+student@eim:​~/​PracticalTest02$ git push origin master
 </​code>​ </​code>​
  
Line 766: Line 759:
  
 <​code>​ <​code>​
-student@eim2017:​~/​PracticalTest02$ git config --global user.name "​Perfect Student"​ +student@eim:​~/​PracticalTest02$ git config --global user.name "​Perfect Student"​ 
-student@eim2017:​~/​PracticalTest02$ git config --global user.email perfectstudent@cs.pub.ro+student@eim:​~/​PracticalTest02$ git config --global user.email perfectstudent@cs.pub.ro
 </​code>​ </​code>​
 <​hidden>​ <​hidden>​
eim/colocvii/colocviu02.1584909475.txt.gz · Last modified: 2020/03/22 22:37 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0