Normaalisti Linuxissa puuttuu melko monta sovellusta tai joidenkin palvelujen asiakkaita, jotka tulevat paljon aikaisemmin muille alustoille, koska tässä opetusohjelmassa näemme, miten luodaan asiakas (se on visio kaukana yllä) käyttämällä REST-sovellusliittymää arvolla (ja gtk 3).
API
En aio selittää, mikä on sovellusliittymä tai mikä on REST-sovellusliittymä (löydät paljon tietoa Googlesta), sanon vain, että karkeasti teemme joitain pyyntöjä (GET tai POST) ja se palauttaa vastauksen JSON-muodossa.
Opetusohjelmassa olen päättänyt käyttää apua, jonka se tarjoaa meille ihme (katso api-ohjeet), joka tarjoaa meille sarjan sarjakuvia, hahmoja ...
Sitä varten tarvitsemme avaimen, jonka voimme hankkia rekisteröitymällä, kun olemme saaneet, meillä on 3000 pyyntöä.
Katsotaanpa esimerkki API: sta, jotta voimme kutsua tätä apia, meidän on käytettävä avaimiamme (meillä on julkinen ja yksityinen):
Tämän yksinkertaisen esimerkin saamiseksi voimme käyttää www.md5.net mihin laitamme 1 "+" keyprivate "+" keypublicin ja joka luo hajautusarvon, voimme soittaa kuten se laittaa kuvaan. Saamme vastauksen (tässä tapauksessa merkkien näkeminen):
Selaimille on ohjelmia ja laajennuksia, jotka helpottavat jsonin näkymää:
Voimme nähdä, että se antaa meille nimen, kuvauksen, pikkukuvan (kuvan kuva) ...
JSON: n hoito valalla (Parseando).
En myöskään selitä, mitkä muodot ovat json, löydät tietoa verkosta. Löydämme yksinkertaisen Valassa tehdyn esimerkin täällä.
Ensinnäkin asennamme json-glib-kirjaston, ellei sitä ole asennettu:
sudo apt-get install libjson-glib-1.0-0 libjson-glib-1.0-0-dev
Asennamme myös libsoup:
sudo apt-get install libsoup-2.4 libsoup2.4-dev
Ensinnäkin tuomme kirjastot, joita käytämme:
käyttämällä keittoa; käyttämällä Jsonia; käyttämällä GTK: ta;
Pyynnön lähettäminen:
var uri = "http://gateway.marvel.com/v1/public/comics?dateRange=2014-16-03%2C2014-16-03&orderBy=-onsaleDate&limit=10&ts=1&apikey=123&hash=555224458"; var session = uusi keitto.SessionSync (); var viesti = uusi keitto.viesti ("GET", uri); session.send_message (viesti);
URL-osoite näyttää meille enintään 10 sarjakuvaa, jotka ovat ilmestyneet kahden päivämäärän (2-00-03, 2014-16-03) välillä.
Ensinnäkin luomme istunnon, sitten rakennamme GET-tyyppisen pyynnön ja lähetämme sen.
Jsonin jäsentäminen:
var root_object = jäsennin.get_root () .get_object ();
saa pääobjektin eli koko Json-koodin.
var vastaus = root_object.get_object_member ("data"); var tulokset = vastaus.get_array_member ("tulokset");
Voimme saada kiinni
Käsittele koodi:
foreach (var geonode in results.get_elements ()) {var geoname = geonode.get_object (); stdout.printf ("% f \ n% s \ n% s \ n \ n", geoname.get_string_member ("id"), geoname.get_string_member ("nimi", geoname.get_double_member ("kuvaus")); }
Voit nähdä esimerkkejä täällä.
Tietojen näyttäminen:
Täällä annamme jo mielemme mukaan kuinka näyttää tiedot, ladata kuvia voimme käyttää tätä menetelmää:
julkinen staattinen asynkronointi Gdk.Pixbuf? get_img (merkkijono-URL) {Gdk.Pixbuf? pix = nolla; var-tiedosto = File.new_for_uri (url); kokeile {GLib.InputStream @input_stream = tuota tiedosto.read_async (Priority.DEFAULT, null); pix = tuottaa uuden Gdk.Pixbuf.from_stream_at_scale_async (input_stream, 800, 600, true, null); } saalis (virhe e) {varoitus (e. viesti); } paluu pix; }
Menetelmänä, joka suoritetaan toisessa säikeessä (asynkronisessa) sitä kutsuttaessa, meidän on tehtävä se tällä tavalla:
get_img.begin (img_url, (obj, res) => {var pix = get_img.end (res);});
Missä img_url on kuvan osoite, jonka saamme jsonilta.
Aremojen kokoaminen:
valac --pkg gtk + -3.0 --pkg libsoup-2.4 --pkg json-glib-1.0 mukautusnimi.vala
Vinkkejä
Joitakin vinkkejä, jotka voivat auttaa meitä luomaan asiakkaamme / sovelluksemme:
AppIndicator
AppIndicator on kirjasto, jonka avulla voimme laittaa ohjelmamme indikaattoriksi ylemmälle paneelille (sekä Elementary OS: ssä että Ubuntussa).
Appindicatorin asentaminen 3-0.1
sudo apt-get install libappindicator3-dev
Koostaminen:
valac --pkg gtk + -3.0 --pkg-osoitin 3-0.1 ohjelma.vala
Jos saat virheen, se voi johtua siitä, että sinulla on uudempi appindicator-versio, siirry siinä tapauksessa osoitteeseen / usr / share / vala / vapi ja näet mitä versiosi on.
Voimme löytää esimerkin Ubuntun kehittämissivusto.
Pieni esimerkki:
var-indikaattori = uusi indikaattori ("win.title", "office-address-book", IndicatorCategory.APPLICATION_STATUS); ilmaisin.set_status (IndicatorStatus.ACTIVE); var-valikko = uusi Gtk.Valikko (); var item = uusi Gtk.MenuItem.with_label ("Lisää uusi yhteystieto"); item.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // CreateContact ();}); item.show (); menu.append (kohde); item = new Gtk.MenuItem.with_label ("Poista yhteystieto"); item.show (); item.activate.connect (() => {//indicator.set_status(IndicatorStatus.ATTENTION); // DeleteContact ();}); menu.append (kohde); ilmaisin.set_valikko (valikko);
Kuvakieli
Laita kuvake sovellukseemme:
Aloitamme Gtk.Window-luokan rakentajalta:
kokeile {// Kuvahakemisto this.icon = new Gdk.Pixbuf.from_file ("fcbb.png"); } catch (Virhe e) {stderr.printf ("virhe:% s \ n", e. viesti); }
Yksinkertainen kuva
Yksinkertainen kuva valassa, jonka voimme laittaa esimerkiksi asetteluksi.
kuva = uusi Gtk-kuva (); image.set_from_file ("fcb.png");
näkymä
Käytetäänkö valaa ja gtk: tä asiakkaille? ei, mielestäni on paljon parempi ja helpompaa käyttää c ++: ta ja Qt: tä (QML), on odotettavissa artikkelin tekeminen asiakkaiden luomiseksi QML: ään.
kiitos lihallinen 😀, on hienoa nähdä, mitä "muutama koodirivi" voi tehdä, kun sinulla on tietoa. esimerkki antaa monia ideoita muille asioille 😀
Erittäin hyviä vinkkejä, veli.
Katso, voinko tehdä sellaisen.