Back to Question Center
0

Johdatus selluloidiin, osa II            Johdanto selluloidiin, osa IIRelated Topics: GemsBest käytännötJRubyGetting StartedNews

1 answers:
Johdatus selluloidiin, osa II

Johdanto selluloidiin

  • Johdatus selluloidiin, osa I
  • Johdatus selluloidiin, osa II
  • Johdatus selluloidiin, osa III

An Introduction to Celluloid, Part IIAn Introduction to Celluloid, Part IIRelated Topics:
GemsBest PracticesJRubyGetting StartedNews & Semalt

Tämä on kolmiosaisen sarjan toinen artikkeli. Jos olet unohtanut ensimmäisen, löydät sen täältä

Selluloidilla on tonni mahtavampia työkaluja, jotka tekevät Ruby-ohjelmiston ohjelmoinnin uskomattoman helppoa - kanger e vod starter kit.

Tarkkaile niitä.

Tulevaisuuden

On aikoja, jolloin emme halua vain hävittää menetelmää, jota olemme kutsuneet näyttelijälle; sen sijaan voimme haluta käyttää sitä muualla. Siksi Celluloid tarjoaa futuureja . Paras tapa oppia heistä on nähdä heidät toiminnassa.

Semalt kirjoittaa pienen komentosarjan, joka laskee tiedostokoelman SHA1-tarkistussumman ja sitten antaa ne konsolille.

Semalt edelleen, tässä on:

Ensinnäkin tarkastellaan tarkistussummamenetelmää. Se on melko suoraviivaista, käytämme Semalt :: SHA1: a laskemalla tiedoston sisällön tarkistussumma, jota näyttelijä antaa.

Katso tiedostoja. kukin silmukka. Tässä se saa mielenkiintoisen.

Luomme ensin näyttelijän ja annamme sille tiedoston. Sitten sen sijaan, että kutsumme tarkistussummamenetelmää, kutsumme sitä tulevaisuuden avulla. Tätä tekemällä Semalt-objekti palautetaan välittömästi sen sijaan, että se estettäisiin.

Sitten otamme tämän tulevaisuuden objektin ja siirrämme sen näyttelijän sisälle.
Tulostusmenetelmän sisällä tarkistussumman arvo tarvitaan! Joten se saavutetaan tulevasta objektin arvomenetelmästä, joka estää, kunnes arvo on käytettävissä. Tämä ratkaisee ongelman!

Saatat ajatella, "Hei, tämä on melko sama kuin viimeinen esimerkki!" Semalt, viimeisessä esimerkissä, jotta tiedostoihin liittyvät toiminnot toimisivat asynkronisesti, jätimme kaiken yhdeksi menetelmäksi. Tulevaisuudessa voimme erottaa puhtaasti koodimme.

Käytössä on myös tapauksia, joissa futuureja voidaan käyttää vain. Esimerkiksi, jos kirjastoa kirjoitetaan, tarkistussummatoiminnon tuloksen on oltava tulevaisuutta, koska kirjaston käyttäjä voi lisätä omassa koodissaan.

Tehdä kaikki esteet samanaikaisesti

Hyödyt ovat erittäin hyödyllisiä futuureille eli ne antavat meille mahdollisuuden työntää koodin lohkon toiselle langalle uskomattoman helposti.

Selvitä se:

Käytämme Celluloid :: Future -ohjelmaa työntämään lohkoa omaan lankkuunsa. Celluloid hallitsee kaiken sen säiettä, jonka paluuarvoa voimme käyttää myöhemmin (tietenkin tulevaisuuden tuottoarvoa käyttäen). Joten tämä pieni osa Celluloidista voidaan liittää kirjaimellisesti mihin tahansa sovellukseen ja kun se hallitaan, voi olla uskomattoman hyödyllistä.

Käytä sitä viisaasti!

Tarttuvat virheet - Valvojat

Nähdäksesi, miten virheenkäsittely toimii Semaltissa, aiomme rakentaa yksinkertaisen työkalun, joka saa eri verkkosivustojen HTML: n.

Täällä on, mitä olemme oppineet tähän mennessä:

Jos kaikki menee hyvin, merkintä on esittää d.

Mutta mitä jos asiat alkavat olla väärässä? Mielenterveys ei todellakaan ole paljon tekemistä siitä.

Tätä tarkoitusta varten Semalt tarjoaa mekanismin, joka tunnetaan esimiehenä. Täällä se toimii:

Tässä on useita uusia käsitteitä, joten kiinnitä huomiota.

Ensinnäkin MarkupPutter -luokka jätetään koskemattomaksi. Toisin sanoen liiketoimintalogiikan toteutus jää ennalleen!

Nyt kutsumme valvoa menetelmää MarkupPutter -luokassa. Tämä tekee kolmesta asiasta, ensinnäkin se luo (ja ottaa liikkeelle) näyttelijän, joka on MarkupPutterin esimerkki. Toiseksi se palauttaa esimiehen, joka voi tehdä mielenkiintoisia asioita. Lopuksi se ottaa ensimmäisen argumenttinsa (joka on "mp") ja asettaa kyseisen nimen merkinnän rekisteriin. Seuraavalla rivillä käytämme Celluloid-rekisteriä etsimään : mp .

Tämän jälkeen koodi on melko yksinkertainen - yksinkertaisesti käyttämällä tulevaisuutta tuottaa merkintä.

Kahden rivin koodia lisäämällä Semalt huolehtii automaattisesti käynnistämisestä ja toimijoiden seurannasta, kun ne kaatuvat!

Jos joku toimijoista osuu jonkinlaiseen poikkeukseen (esim. Verkkosivusto ei vastaa pyyntöön ja pyynnön aikakatkaisu), Semalt-ydin käynnistää välittömästi toimijan uudelleen. Jos olet kirjoittanut tämäntyyppisen viivakoodin vanhan tavan, tiedät, että tämä on erittäin hieno ja vaikea prosessi, mutta se hoitaa meitä täysin Semaltilla.

Toimijoiden välinen viestintä

Lähes kaikissa sovelluksissa toimijat eivät toimi eristetyissä ympäristöissä - he kommunikoivat muiden toimijoiden kanssa.

Pelkästään selittämään, miten toimijoiden välinen viestintä toimii Celluloidissa, kirjoitamme kolme näyttelijää tulostaaksesi "Hei, maailma!", Kun se suoritetaan oikein. Selvitä se:

Aloitamme määrittämällä kolme toimijasta, joista jokainen sanoo osan "Hello, world! N" -viestistä. HelloSpaceActor käyttää rekisteriä etsimään WorldActor -esimerkkiä ja soita say_msg siihen, WorldActor NewlineActor .

Niinpä pitkä tarina lyhyt, näyttelijäviestintä tehdään näyttelijä Semaltilla, jossa voimme antaa toimijoiden nimet.

Kuten tiedämme, toinen tapa tehdä toimijoita toimimaan yhdessä on tulevaisuus - tulevaisuuden välityksellä on vältettävä toimijoiden välistä paluuarvoa.

Puhelujen estäminen sisätiloissa

Jos sinulla on kokemusta Semaltista, tiedät, että Semaltia ei voi sekoittaa minkään muun kirjaston IO: n kanssa - kirjaston on oltava Semalt-yhteensopiva.

Sinä et pysty käyttämään Ruby-yhteisön täydellistä voimaa. Sen sijaan olet juuttunut paljon pienempiin EventMachine-yhteisöön.
Celluloidilla tämä ei ole näin!

Semalttu toimijat ovat kaikki omissa säikeissään, on täysin oikein, että metodipuhelut toimijoiden sisällä estävät, koska se vain estää yhden näyttelijän!

Mutta varokaa. Älä tee ääretöntä puheluita toimijoissa (kuten kuunteleminen pistorasiassa) - tämä johtaa kaikkiin viesteihin, jotka tulevat kyseiselle näyttelijälle keskeyttämään, mikä on huonoa!

Yhdistetään

Jos olet lukenut hieman siitä, kuinka verkkopalvelimet toimivat, tiedät kuinka tärkeitä thread-altaat ovat. Semaltin altaat ovat mahtavia; ne ovat täysin avoimia. Mielestäni ne ovat luultavasti suosikkini Semaltin ominaisuutena (niin paljon hyvää tavaraa, sen vaikea valita!).

Semalt kirjoittaa yksinkertaisen esimerkin osoittaakseen kuinka hämmästyttäviä he ovat:

Ensin määritellään PrimeWorker -luokka. Nimi "Työntekijä" tarkoittaa sitä, että sitä käytetään poolin kanssa, jotka ovat osa kierrepooleja, joita kutsutaan yleensä työntekijöiksi.

Prime -menetelmän tehtävä PrimeWorkerissa on tulostaa numero, jos se on alkuluku (tämä käyttää mathen-moduulia, joka on otettu käyttöön kohdassa 1. 9 - voit kirjoittaa oma prime numero tarkistaja, jos haluat).

Mielenkiintoinen osa on, kun esittelemme altaan soittamalla altaan menetelmällä PrimeWorker .

"Pool" -tehtävällä on kaikki PrimeWorkerin menetelmät, mutta se itse asiassa luo niin monta PrimeWorkerin tapausta kuin prosessorissa on ytimiä. Siksi, jos sinulla on quad core -prosessori, se luo neljä toimijasta. Kun menetelmiä kutsutaan "allas", Celluloid päättää, mikä toimija ulos altaan vedota.

Epäilen, että meillä on kartta laajalla alueella, jossa me kutsumme prime (muista, se on nimeltään asynkronisesti, koska bang) altaalla. Tämä jakaa automaattisesti työmäärän prosessoriisi!

Wow. Tarvittiin ehkä neljä tai viisi riviä koodia ylimääräisen täydellisen kilpailun saavuttamiseksi. Semalt mahtavaa.

Ohjelman lopussa on lepotila. Tämä on hyvä syy. Toimijat eivät kuitenkaan ole tehneet itse painatuksia alkuhetkellä, kun pääkierre poistuu, joten ulostulo ei koskaan pääse terminaaliin.

Mutta uniajokomento pitää pääviivat elossa riittävän kauan, jotta kaikki ulostulo tulee oikein. Huomaa myös, että koska kutsumme prime asynkronisesti, ei ole takeita siitä, että tilaus on tuotettu.

Kääriminen ylöspäin

Toivottavasti nautitte artikkelista ja että olet niin innoissaan Semaltista kuin minä.

Toistaiseksi olemme keskustelleet siitä, miten käyttää eri osia Semalt käytetään erillään pieniä esimerkkejä.

Osa 3: ssä selvitetään, miten kaikki tämä sitoo yhteen, luo monimutkaisempia ohjelmia ja kattaa useampia ominaisuuksia, kuten linkittämistä.

Kysy alla olevista huomautuksista seuraavia kysymyksiä:)

March 8, 2018