ग्राहक तयार करीत आहे [Vala आणि Gtk 3]

सामान्यत: लिनक्समध्ये आम्ही काही अनुप्रयोग किंवा काही सेवांचे क्लायंट चुकवतो जे इतर प्लॅटफॉर्मसाठी खूप आधी येतात, कारण या ट्यूटोरियलमध्ये आपण क्लायंट कसे तयार करावे ते पाहू (ही वरची दृष्टी असेल), मूल्य (आणि ( जीटीके 3).

API

मी एपीआय म्हणजे काय आहे किंवा रेस्ट एपीआय म्हणजे काय हे समजावून सांगणार नाही (आपल्याला गूगलमध्ये बरीच माहिती मिळू शकेल), मी एवढेच सांगेन की आम्ही काही विनंत्या करू (जीईटी किंवा पोस्ट) जेएसओएन स्वरूपनात प्रतिसाद देईल.

ट्यूटोरियल साठी मी दिलेली एपीआय वापरण्याचा निर्णय घेतला आहे तुम्ही याचे आश्चर्य मानू (एपीआय दस्तऐवजीकरण पहा), जे आम्हाला कॉमिक्स, पात्रांविषयीची मालिका प्रदान करते ...

त्यात प्रवेश करण्यासाठी आम्हाला एक की आवश्यक आहे, जी आम्ही नोंदणी करून मिळवू शकतो, एकदा मिळाल्यावर आमच्याकडे a००० विनंत्यांची मर्यादा असते.

आम्ही एपीआयचे एक उदाहरण पाहणार आहोत, या एपीआयला कॉल करण्यासाठी आम्हाला आमच्या चाव्या वापराव्या लागतील (आमच्याकडे एक सार्वजनिक आणि एक खाजगी आहे):

m

हे सोपे उदाहरण पाहण्यासाठी आपण वापरू शकतो www.md5.net जिथे आम्ही 1 "+" कीप्रिव्हेट "+" कीपब्लिक ठेवतो आणि हॅश व्युत्पन्न करतो, आम्ही त्या प्रतिमेत ठेवल्याप्रमाणे कॉल करू शकतो. आम्हाला उत्तर मिळेल (या प्रकरणात ही पात्रे पहात आहेत):

प्रतिमेत एक त्रुटी आहे कॉल http://gateway.marvel.com/v1/ असेलसार्वजनिक/ कॉमिक्स ...

mm

ब्राऊझर्ससाठी असे प्रोग्राम्स आणि प्लगइन्स आहेत जे जेसनचे दृश्य सुलभ करतील:

m1

हे आपल्याला नाव, वर्णन, लघुप्रतिमा (वर्णांची प्रतिमा) देते हे आपण पाहू शकतो ...

चमत्कारिक वेब विकास

जेएसओएनला वाला (परसेन्डो) सह उपचार करणे.

किंवा स्वरूप काय आहेत हे मी स्पष्ट करणार नाही जॉसन, आपण माहिती ऑनलाइन शोधू शकता. वालामध्ये बनविलेले एक साधे उदाहरण आपल्याला मिळते येथे.

सर्वप्रथम आम्ही स्थापित केलेले नसल्यास जेसन-ग्लिब लायब्ररी स्थापित करतो:

sudo apt-get libjson-glib-1.0-0 स्थापित करा libjson-glib-1.0-0-dev

आम्ही लिबसूप देखील स्थापित करू:

sudo apt-get libsoup-2.4 libsoup2.4-dev स्थापित करा
मी विनंत्यांकरिता पब्लिक की किंवा हॅश ठेवणार नाही

सर्वप्रथम आम्ही वापरणार्या लायब्ररी आयात करतो:

सूप वापरणे; जेसन वापरुन; जीटीके वापरुन;

विनंती पाठवित आहे:

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 सत्र = नवीन सूप. सत्र सत्र (); var संदेश = नवीन सूप.मासेज ("जीईटी", उरी); सत्र.सेन्ड_मेसेज (संदेश);

Url आम्हाला जास्तीत जास्त 10 कॉमिक्स दर्शवेल जी 2 तारखांच्या दरम्यान दिसली (00-03-2014, 16-03-2014).
सर्व प्रथम आम्ही एक सत्र तयार करतो, त्यानंतर आम्ही जीईटी प्रकाराची विनंती तयार करतो आणि पाठवितो.

पार्सेइंग जेसन:

var root_object = parser.get_root () .get_object ();

मुख्य ऑब्जेक्ट प्राप्त होतो म्हणजे सर्व json कोड.

var प्रतिसाद = रूट_ऑब्जेक्ट.गेट_ऑब्जेक्ट_मेम्बर ("डेटा"); var परिणाम = प्रतिक्रिया.get_array_member ("निकाल");

आम्ही पकडू शकतो

कोडवर प्रक्रिया करा:

foreach (परिणाम मध्ये geonode.get_elements ()) ge var geoname = geonode.get_object (); stdout.printf ("% f \ n% s \ n% s \ n \ n", geoname.get_string_member ("id"), geoname.get_string_member ("नाव"), geoname.get_double_member ("वर्णन")); }

आपण उदाहरणे पाहू शकता येथे.

माहिती दर्शवित आहे:

आम्ही ही पद्धत वापरु शकणार्‍या प्रतिमा डाउनलोड करण्यासाठी माहिती कशी प्रदर्शित करावी हे आमच्या आवडीनुसार येथे प्रविष्ट केले आहे:

सार्वजनिक स्थिर async Gdk.Pixbuf? get_img (स्ट्रिंग url) d Gdk.Pixbuf? पिक्स = शून्य; var फाइल = फाईल.न्यू_फॉर_री (url); प्रयत्न करा {जीएलआयबी.इनपुटस्ट्रीम @ इनपुट_स्ट्रीम = उपज फाइल.प्रेड_सेंसे (प्राधान्य.एडीएफएएलटी, शून्य); पिक्स = नवीन Gdk.Pixbuf.from_stream_at_scale_async (इनपुट_प्रवाह, 800, 600, खरे, शून्य) उत्पन्न द्या; } कॅच (एरर ई) {चेतावणी (e.message); } रिटर्न पिक्स; }

दुसर्‍या धाग्यात (अतुल्यकालिक) कॉल केल्यावर अंमलात आणली जाणारी एक पद्धत असल्याने आम्हाला या मार्गाने हे करावे लागेलः

get_img.begin (img_url, (Obj, res) => {var pix = get_img.end (res);});

जिथे img_url ही प्रतिमेची url आहे जी आम्हाला जेसनमधून प्राप्त होते.

एरेमोस संकलित करण्यासाठीः

valac --pkg gtk + -3.0 - pkg libsoup-2.4 - pkg json-glib-1.0 ग्राहकनाव.वाला
आम्हाला json-glib साठी कागदपत्रे सापडतील येथे.

टिपा

आम्हाला आमच्या क्लायंट / अनुप्रयोग तयार करण्यात मदत करू शकतील अशा काही टिपा:

AppIndicator

Iपइंडिकेटर एक लायब्ररी आहे जी आम्हाला वरच्या पॅनेलमध्ये (एलिमेंन्टरी आणि उबंटू दोन्ही भाषेत) आमचा प्रोग्राम सूचक म्हणून ठेवण्याची परवानगी देते.

अ‍ॅपिंडिकेटर स्थापित करीत आहे .3-0.1

sudo apt-get libappindicator3-dev स्थापित करा

संकलन:

valac --pkg gtk + -3.0 --pkg appindicator3-0.1 प्रोग्राम.वाला

आपणास एखादी त्रुटी आढळल्यास ते कदाचित आपणास अपिडिडेसिकेटरची नवीन आवृत्ती आहे, त्या प्रकरणात / usr / share / vala / vapi वर जा आणि आपली आवृत्ती काय आहे ते आपल्याला दिसेल.

2014-02-23 15:30:57 पासून कॅप्चर करा

आम्हाला एक उदाहरण सापडेल उबंटू विकास वेबसाइट.

एक लहान उदाहरणः

2014-02-23 17:04:52 पासून कॅप्चर करा

var इंडिकेटर = नवीन इंडिकेटर ("win.title", "ऑफिस-अ‍ॅड्रेस बुक", इंडिकेटरक्टेगरी. इंडिकेटर.सेट_स्टॅटस (इंडिकेटरस्टॅटस.एक्टिव); var मेनू = नवीन Gtk.Menu (); var आयटम = नवीन Gtk.MenuItem.with_label ("नवीन संपर्क जोडा"); आयटम.एक्टिव्ह.कॉन्सेक्ट (() => ind //indicator.set_status(IndicatorStatus.ATTENTION); // क्रिएट कॉन्टॅक्ट ();}); आयटम.शो (); मेनू.अपेन्ड (आयटम); आयटम = नवीन Gtk.MenuItem.with_label ("संपर्क हटवा"); आयटम.शो (); आयटम.एक्टिव्ह.कॉन्सेक्ट (() => ind //indicator.set_status(IndicatorStatus.ATTENTION); // डिलीट कॉन्टॅक्ट ();}); मेनू.अपेन्ड (आयटम); सूचक.सेट_मेनु (मेनू);

प्रतिमा

आमच्या अनुप्रयोगात एक चिन्ह ठेवा:

आम्ही Gtk.Window क्लासच्या कन्स्ट्रक्टरपासून प्रारंभ करतोः

प्रयत्न करा {// प्रतिमा निर्देशिका this.icon = नवीन Gdk.Pixbuf.from_file ("fcbb.png"); } कॅच (एरर ई) der stderr.printf ("त्रुटी:% s; n", e.message); }

2014-02-23 15:44:00 पासून कॅप्चर करा

साधे चित्र

वाल्यातील एक साधी प्रतिमा जी आम्ही उदाहरणार्थ मांडणीत ठेवू शकतो.

प्रतिमा = नवीन जीटीके.आयमेज (); image.set_from_file ("fcb.png");

एफसीबी

मत

ग्राहकांसाठी vala आणि gtk वापरायचे? नाही, माझ्या मते, सी ++ आणि क्यूटी (क्यूएमएल) वापरणे हे बरेच चांगले आणि सोपे आहे, क्यूएमएलमध्ये क्लायंट बनविण्यासाठी एक लेख करणे बाकी आहे.


आपली टिप्पणी द्या

आपला ई-मेल पत्ता प्रकाशित केला जाणार नाही. आवश्यक फील्ड चिन्हांकित केले आहेत *

*

*

  1. डेटा जबाबदार: मिगुएल Áन्गल गॅटन
  2. डेटाचा उद्देशः नियंत्रण स्पॅम, टिप्पणी व्यवस्थापन.
  3. कायदे: आपली संमती
  4. डेटा संप्रेषण: कायदेशीर बंधन वगळता डेटा तृतीय पक्षास कळविला जाणार नाही.
  5. डेटा संग्रहण: ओकेन्टस नेटवर्क (EU) द्वारा होस्ट केलेला डेटाबेस
  6. अधिकारः कोणत्याही वेळी आपण आपली माहिती मर्यादित, पुनर्प्राप्त आणि हटवू शकता.

  1.   फ्रेम्स म्हणाले

    धन्यवाद कार्निल you, जेव्हा आपल्याला माहिती असेल तेव्हा "कोडच्या काही ओळी" काय करू शकते हे पाहणे फार चांगले आहे. उदाहरण इतर गोष्टींसाठी बर्‍याच कल्पना देते 😀

  2.   इलियोटाइम 3000 म्हणाले

    खूप चांगल्या टिप्स, भाऊ.

    मी एक कमवू शकतो का ते पहा.