Jeffrey Cross
Jeffrey Cross

Kodeering: lõbustage ennast Google'i automaatse komplekteerimisega

Automaatne lõpetamine on üks Google'i palju huvitavaid funktsioone. Näiteks, kui alustate otsingukasti „Kuidas teha“ sisestamist, esitab Google top-10 nimekirja asjadest, mida ta arvab, et otsite. Selle kollektiivse "rahvahulga" saab luua miljonite sarnaste otsingute analüüsimisel, mis võib olla lõbus, traagiline või sügavalt indikaator inimese seisundile. Sageli on see kõik korraga.

See visand võimaldab teil uurida valitud Google'i fraasi. See toimib nii. Kui sisestate fraasi nagu “Kuidas teha,” loob skeem 26 variatsiooni, lisades lõpus oleva tähestiku iga tähe: “Kuidas teha,” kuidas „ma saan teha,“ c, ”ja nii edasi. Seejärel küsitakse Google'ist iga variatsiooni kohta ja lisab kümme tulemust jooksvale nimekirjale. Kogudes miljoneid lootusi, unistusi ja püüdlusi, on 260 tulemust klammerdanud 260 tulemust kui ikoonilist „Star Wars” kerimist:

Automaatse komplekti API

Automaatselt täidetakse suhteliselt lihtsat URL-i, mis näeb välja selline.

http://google.com/complete/search?output=toolbar&q=kodeeritud otsingusõna

Erinevalt enamikust külastatavatest lehekülgedest, mis esitavad päris HTML-i, tagastab see XML-andmed, mis on mõeldud masinatele lugemiseks. See uskumatult võimas tehnika, mida tuntakse rakenduse programmeerimise liidesena (API), võimaldab programmidel võrgus lihtsalt suhelda. Ilma API-le peame minema Google'isse, kirjutama meie fraasi 26 korda ja koguma seejärel kõik tulemused käsitsi. API võimaldab meil seda automaatselt teha.

„Kuidas teha” soovituste aluseks olevate XML-andmete saamiseks külastage seda URL-i:

http://google.com/complete/search?output=toolbar&q=how+do+i+make

Kui vaatate oma veebibrauseris „Allikas“, näete mõningast XML-i, mis näeb välja selline (kuigi olen selle näite vormindanud, et see oleks loetavam):

...

Me kasutame töötlemist XMLElement () selle XML-andmete lugemiseks keritav tekst.

Seadistage visand

Kõigepealt lase käia visand. Kuna me kasutame päringu fraasi saamiseks kontrollgrupi P5 raamatukogu, peate selle raamatukogu installima ja konfigureerima. (Kui te seda ei tee, ütleb Codeboxi juhtpaneeli osa: Fractal menagerie loomine, kuidas seda üles seada.) Võite joonise lähtekoodi haarata allpool olevast kastis või failist zetigeist.pde.

Kui olete lähtekoodiga töötlenud, alustage visandit ja sisestage fraas. Mõne sekundi pärast peaksite nägema, et tulemused hakkavad sirvima ekraani la Star Wars. (Kui te ei sisesta ühtegi teksti, esitab skeem lihtsalt kõige populaarsemad tulemused kõigi üldiste päringute jaoks.)

Arutelu

Niisiis, kuidas see asi toimib? On mõned põhielemendid:

  1. See haarab Autocomplete API-lt andmeid
  2. See analüüsib XML-i koos XMLElement () ja salvestage tulemused
  3. See kuvab tulemused kerimisloendina

Niisiis räägime sellest, kuidas API-lt andmeid koguda. Töötlemine loadStrings () funktsioon võimaldab teil haarata mis tahes URL-i teksti, nii et kõik, mida me peame tegema, on esitada automaatse täitmise API korralikult vormindatud päringuga. Selleks kasutame Java'i URLEncoder raamatukogu (pidage meeles, et kõik, mida saate kasutada Java puhul on õiglane mäng töötlemiseks) kodeerida () funktsioon, mis kodeerib sisestatud teksti userQuery kasti.

The getSuggestions () funktsioon kasutab meie kodeerida () funktsiooni, mis toob lehekülje ja analüüsib XML-tulemusi. Funktsioon kasutab XMLElement () objekti tulemustega töötada. Nagu enamik XML-raamatukogusid, kasutab see ka „perekonna puu” süntaksit, et võimaldada juurdepääsu erinevatele andmeelementidele. Nagu järgmisel joonisel näidatud, on soovitusandmed esimesed lapse elemendid () juurelementide laste all ().

Kuna tegelik tekst on atribuudis abiks, kasutame seda getStringAttribute () funktsiooni, et tõmmata soovitud andmed välja.

[Märkus: see süntaks erineb ametlikust dokumentatsioonist, kuid see teave töötlemise kogukonna foorumis, XMLElement probleem: funktsioon getInt / getString 'ei eksisteeri' annab üksikasjad.] Kui oleme soovituse teksti haaranud, siis me lisan selle soovitusList ArrayList.

Lõpuks tasub veidi selgitada, kuidas me tegelikult seda nimetame getSuggestions () funktsiooni. Nagu näete, kutsutakse see tegelikult joonistama () meetod, mis on natuke ebatavaline. Esialgu püüdsin korrata kõiki 26 päringu varianti korraga, tehes rea kiirete tabamuste automaatse lõpetamise vastu. Ma tabasin kiiresti API-sid määra piirang, mis on maksimaalne arv kordi sekundis, mida saate igal ajal kasutada. Lisaks oli skeemi alguses pikk paus, mida ma ei meeldinud.

Niisiis lisasin taimerit TimeBetweenFetches nii, et API-d kutsuti ainult iga 5 sekundi järel. Kuna tekst liigub üsna aeglaselt, võimaldas see aja jooksul puhverdada, mille tulemuseks oli sujuvam väljanägemine ilma Google'i nõudeid rikkumata. Iga kord, kui jõuame API-le, liigume edasi loenduriga, mis ütleb meile, milline tähestiku täht põhipäringule lisada. Kui oleme tulemused jõudnud, lähtestame taimerit. Seal on ka natuke loogikat, et testida, kas kasutaja on sisestanud uue päringu termini ja vajutanud findButton.

Teine osa sellest joonistama () meetod liigutab keritav teksti. Selleks kasutame kutsutud muutujat y hoidke esimese stringi y-koordinaati soovitusList. Seejärel loendame loendi iga elementi ja kirjutame tekstile muutujale viitamisel y, mis väheneb iga läbisõidu ajal joonistama (). See annab meile meeldiva kerimisefekti. (Samuti koondame teksti x-teljele, mis tehakse lihtsa valemiga.)

Lõpuks saab Star Wars'i efekti hõlpsasti kasutada, kui töötate sisseehitatud 3D graafikaraamatukogu, et pöörata X-telje tasapinda mõne kraadi võrra. See oli puhas häkk, mida nägin Luis Gonzalezi "Star Wars" visandil openprocesing.org. Soovitan seda saiti inspiratsiooni ja ideede allikana.

Veel: Vaadake siit kõik Andrewi kodeeringu veerud.

Makeri varjus:


Töötlemise alustamine Lugege arvutiprogramme töötlemisel lihtsal viisil, mis on lihtne keel, mis võimaldab teil kasutada jooniseid, animatsioone ja interaktiivseid graafikaid. Programmeerimiskursused algavad tavaliselt teooriaga, kuid see raamat võimaldab teil hüpata paremale loomingulistele ja lõbusatele projektidele. See sobib ideaalselt kõigile, kes soovivad õppida põhiprogramme ja on lihtsad sissejuhatused mõnede programmeerimisoskustega inimestele.

Osa

Jätnud Kommentaari