Asiakkaiden luominen [Vala ja Gtk 3]

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

m

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

kuvassa on virhe, jonka puhelu olisi http://gateway.marvel.com/v1/julkinen/ sarjakuvat ...

mm

Selaimille on ohjelmia ja laajennuksia, jotka helpottavat jsonin näkymää:

m1

Voimme nähdä, että se antaa meille nimen, kuvauksen, pikkukuvan (kuvan kuva) ...

ihmetellä verkkokehitystä

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
En laita julkista avainta tai hashia pyyntöihin

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
Voimme löytää dokumentaatiota json-glibille täällä.

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.

Sieppaa 2014-02-23 15:30:57

Voimme löytää esimerkin Ubuntun kehittämissivusto.

Pieni esimerkki:

Sieppaa 2014-02-23 17:04:52

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); }

Sieppaa 2014-02-23 15:44:00

Yksinkertainen kuva

Yksinkertainen kuva valassa, jonka voimme laittaa esimerkiksi asetteluksi.

kuva = uusi Gtk-kuva (); image.set_from_file ("fcb.png");

fcb

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.


2 kommenttia, jätä omasi

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   marcos dijo

    kiitos lihallinen 😀, on hienoa nähdä, mitä "muutama koodirivi" voi tehdä, kun sinulla on tietoa. esimerkki antaa monia ideoita muille asioille 😀

  2.   eliotime3000 dijo

    Erittäin hyviä vinkkejä, veli.

    Katso, voinko tehdä sellaisen.