Kategori: Artikler

OAuth / Twitter Auth Adapter for Zend Framework

Ved , lørdag 23 april 2011 15:57

Arbeidet fortsetter (sakte) på min nye Twitter -basert program. I løpet av de neste par helligdager håper jeg å få fart i gang igjen på prosjektet (i-til tross for det gode været i dag). Uansett, var min neste oppgave å lage en autentisering adapter for Zend Framework . Jeg hadde en arbeidsgruppe logg implementering, men å ha en nedgang i Auth adapter for Zend Framework virket som et attraktivt forslag, så jeg laget det ....

(Jeg har ikke tenkt å gå gjennom OAuth eller registrere din søknad med twitter, det er hundrevis av guider og en ganske grei prosess hvertfall.)
Fortsett å lese 'OAuth / Twitter Auth Adapter for Zend Framework' »

"Logg på med Twitter" bruk Zend Framework

Ved , torsdag 17 mars 2011 01:07

Til tross for alle twitter hate i øyeblikket, har jeg satt ut for å opprette en ny twitter -basert applikasjon. Å være noen som administrerer flere kontoer (både personlig og for mitt veldedighetsarbeid) Jeg har vært behov for et verktøy for annen gang at jeg bare å komme rundt til skriving (mer av det i nær fremtid ...).

Jeg har lest opp på Zend_Oauth_Consumer og hvordan det kan brukes til å få autorisasjon for å samhandle med Twitter bruker OAuth . Alt vel og bra, har jeg tilgang til nøkkelen og jeg kan lystig legge bort på brukerens vegne. Det er nok av ressurser der ute for å gjøre dette så jeg vil ikke kjede folk.

Det neste skrittet var å tillate folk å gå tilbake til nettstedet, logge inn og endre sin konto. Det er der jeg nådde et lite problem. Bruk koden eksempler på nettsteder betydde at jeg måtte twitter spør meg for tilgang autorisasjon på nytt for hver innlogging, ikke bra. Skanning gjennom rammene jeg kunne ikke se noe som ville tillate meg å bare be om godkjenning. Det er ikke å si at det er ikke der, men det så ikke ut til å være en autentiseringsmekanisme som kan påberopes uten å vite tilgangstokenet allerede.

Alternativene var å gjennomføre et site-basert innlogging eller annen måte lagre brukerens tilgang token på klienten (kryptert selvfølgelig). Ingen av disse virket som en god / passende løsning.

Continue reading '"Logg på med Twitter" bruke Zend Framework' »

Zend Certified Engineer (ZCE) 5.3

Ved 30. Torsdag september 2010 21:00

Med den offisielle utgivelsen av Zend Certified Engineer (ZCE) program for 5,3 trodde jeg at jeg skulle gi min rask inntrykk av hva jeg tenkte på eksamen.

Litt bakgrunnsinformasjon om meg selv: Jeg ble først introdusert til PHP ca 7 år siden og har jobbet profesjonelt i PHP siden 2006. Jeg arbeider i dag for en spennende start-up kalt Brightpearl basert i Bristol, England , produserer integrerte CRM, regnskap, og e-handel programvare. Jeg har ikke tidligere fått noen av de tidligere ZCE kvalifikasjoner. I dag utvikles i 5.2.x-serien og har egentlig ikke brukt noen av de spesifikke 5,3 funksjoner (jeg venter på Zend Framework 2 og Lære 2) i min utviklingsprosjekter.
Fortsett å lese 'Zend Certified Engineer (ZCE) 5.3 "»

Quick Start Symfony DI (Dependency Injection) Tutorial

Ved , 14. Lørdag august 2010 14:21

Hva er Dependency Injection (DI)?

Avhengighet injeksjon er en teknikk som gjør det mulig for løst koplet objekter innenfor et program. Vanligvis hvis et objekt krever tilgang til funksjonalitet i et annet ville det være instansiert internt fører til tett koblede systemer. Ved å implementere avhengighet injeksjon injisere vi de nødvendige objektene klar til bruk (noen ganger også referert til inversjon av kontroll - IOC). Ta følgende eksempel:

  <? Php
 class beslutningstager {
     offentlig funksjon makeDecision (matrise $ parametre) {
         / / Trenger databasen adapter
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ parametre);
         / * ...  Noen mer avgjørelse logikk ...  * /
         tilbake ($ parameterScore> 50);
     }
 } 

Denne kodebit sies å være tett koplet til DecisionParameters objekt. Rewriting ovenfor i et løst koplet mote vi vil ha noe sånt ....

  <? Php
 class beslutningstager {
     private $ _dp;
     offentlig funksjon __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     offentlig funksjon makeDecision (matrise $ parametre) {
         $ ParameterScore = $ this-> _dp-> getScore ($ parametre);
         / * ...  Noen mer avgjørelse logikk ...  * /
         tilbake ($ parameterScore> 50);
     }
 } 

Mens få fordelene av løst koplet koden vi legger kompleksitet slik at hver gang et objekt er instansiert vi også på å bruke sin avhengigheter og passere disse på også. For eksempel dette:

  $ Valget = new beslutningstager ();
 echo $ valg-> makeDecision (array ('innsats' => 'low', 'return' => "høy")); 

Nå blir:

  $ Dp = new DecisionParameters ();
 $ Valget = new beslutningstager (DP);
 echo $ valg-> makeDecision (array ('innsats' => 'low', 'return' => "høy")); 

Denne situasjonen blir mer smertefullt som antallet avhengigheter for en klasse er økt, og hva om avhengigheter selv har avhengigheter? Dette kan ganske raskt bli et objekt administrasjon mareritt! Tast avhengighet injeksjon containere (eller rammeverk) ...
Fortsett å lese 'Quick Start Symfony DI (Dependency Injection) Tutorial' »

Naked Zend_Layout og Zend_View

Ved , tirsdag 10 august 2010 23:47

I denne artikkelen ser jeg på bruk Zend_Layout og Zend_View sammen med en enkel front kontrolleren for å vise hvordan det er mulig å begynne å skille forretningslogikk og presentasjon i programmet. All kode er tilgjengelig på github:
Naked Zend_Layout og Zend_View på GitHub .

Fortsett å lese 'Naked Zend_Layout og Zend_View' »

Zend Framework Per Module Layout Innstillinger - Følg opp

Ved 16. Tirsdag februar 2010 20:48

Som en oppfølging til mine tidligere innlegg per modul basert layout innstillinger for Zend Framework , har jeg oppdatert koden til å kreve mindre konfigurasjon enn før (ikke at det kreves mer for at noen få linjer i din søknad konfigurasjonen!).
Fortsett å lese 'Zend Framework Per Module Layout Innstillinger - Følg Up' »

Lage URL i Zend Custom Se Helper

Ved , torsdag 28 januar 2010 11:01

Dette kan virke enkelt, men jeg var stanger hodet mitt forsøker å skape en URL i en egendefinert visning hjelper i Zend Framework . Jeg har routing setup som får modulen fra sub-domenet i bruk slik at jeg ikke kunne bruke en enkel hardkodet URL.

Fortsett å lese 'Oppretter URL i Zend Custom Vis Helper' »

Route forespørsler for sitemap.xml til tilpasset controller / action

Ved , onsdag 6 januar 2010 12:13

For å direkte forespørsler om / sitemap.xml til en tilpasset kontroller og handling i Zend Framework søknaden bare legge til følgende i din application.ini eller alternative config-filen (f.eks jeg bruker navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = index
 resources.router.routes.sitemap.defaults.action = sitemap

Eksempel på kode for sender ut kan sees ved å opprette en handling i den aktuelle kontrolleren (f.eks min sitemap ligger i indeksen controller, områdekart handling):

 < php
 klasse IndexController
     strekker Zend_Controller_Action
 {
     / **
      * Gjengir et nettkart basert på Zend_Navigation setup
      * /
     offentlig funksjon sitemapAction ()
     {
    	 echo $ this-> Vis-> navigasjon () -> sitemap ();
    	 $ This-> Vis-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps kan raskt og enkelt bli generert ved hjelp Zend_Navigation , er en stor rask tutorial (og generelt svært nyttig for Zend Framework tutorials) Zend overhodekast - dynamisk lage en meny en sitemap og brødsmuler .

Kontor Grid Computing bruker Virtual miljøer - Del 4

Ved , fredag ​​4 desember 2009 11:59

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I del 3 skapte vi vår virtuelle behandling maskin og sette opp windows maskiner for å bli inaktiv tid arbeidere.

Kjører den nyeste kode

Uunngåelig etter at du opprettet arbeiderne forretningslogikk vil forandre, vil bugs bli funnet, vil raskere mer effektiv kode bli produsert dermed forlate dine arbeidere satt rundt behandling av data ved hjelp av gamle stinkende kode . Hvordan så sikrer vi at vi alltid bruker den nyeste og beste versjonen av vår behandling skript?

Det er noen veldig enkle enkle måter vi kunne gjøre dette, triks, derimot, er å redusere prosessorkraft og nettverkstrafikk i å oppnå dette. Lar starte med de enkleste løsningene og forbedre den sakte over et par iterasjoner.

Den første metoden ville være å bare koble til jobben vår kontroll server (via samba, FTP eller lignende) og trekk ned den nyeste versjonen av koden. Ikke veldig effektivt, men det vil gjøre jobben. Lar forbedre på at noe, hva med å skape et rsync skript og bruker den hver gang i stedet? Eventuelt hva med å sette våre siste behandling manuset til Subversion sjekke ut koden først, og så bare oppdaterer vår kode på hver kjøring ( svn update )?

Til slutt kan vi ende opp med et bash script (kalt av cron hvert 10. minutt), som ser så enkelt som dette:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php > / dev / null
 deretter
     echo "Job er for tiden behandling, exit"
 ellers
     echo "Job ikke kjører, starter nå"
     cd / sti / til / jobbe / kopi
     svn update
     php yourJobProcessingScript.php
 fi 

Nå kan vi være sikker på at med hvert løp er vi definitivt kjører den nyeste koden. Vi er sikre dette ved å oppdatere våre kodebasen hver gang vi utfører en løpetur og redusere nettverkstrafikken ved bare å overføre filen forskjeller på tvers av nettverket vårt.

I min demonstrasjon setup, gjorde jeg akkurat som ovenfor. Subversion ble installert på min jobb behandling server og jeg bare trakk siste koden fra en "arbeidstaker" gren bruker 'svn update'. Jeg har også laget en versjon nummer tag til min prosessering manus som ble returnert til databasen som en del av resultatene retur. På denne måten kunne jeg se at min kode ble oppdatert hver gang jeg kopierte min trunk inn arbeideren grenen dvs at jeg var definitivt kjører den nyeste prosessering script.

Bruke nyeste dataene

Hvis jobben din prosessering gjør bruk av datakilder så på et tidspunkt disse kommer til å bli oppdatert også. Med mindre du ringe datakilder på en svært sjeldne basis du kommer til å oversvømme nettverket med trafikken så snart arbeiderne begynne å bringe alt til en stillstand. For løsning mitt bestemte jeg at jeg vil flytte dataene mine kilder rundt med mine VMer.

Hold du hester dit! Hva om mine datakilder er enorme? Vel, dette er virkelig et tilfelle av hvor mye data snakker vi? Det kan være mer kostnadseffektivt å installere en ekstra større harddisk til hver maskin enn å kjøpe en ekstra behandling server. Dette er et spørsmål om budsjett og er opp til virksomheten å bestemme. Det kanskje at datakildene er så store at det bare unfeasible å holde dette beløpet av data i arbeideren maskiner. I så fall hva ville du gjøre? Vel vi kunne se på ringer en lokal data server, men dette kan føre til problemer med nettverket. I dette tilfellet et rutenett system som dette kan bli urealistisk å inkludere i kontormiljøet. Det kan også være at du kan se på alternativ drift strategier, for eksempel bare å ringe dine arbeidere mellom 20:00 og 6am hver natt og / eller struping datakilde forespørsler.

Flytte på kan si våre datakilder beløpe seg til 100 GB med data. Vel ja det er ganske mye data å flytte rundt nettverket på en oppdatering. Hvordan ville vi sikre at vi har den siste kopien av dataene i dette tilfellet? Rsync er en mulighet, men personlig tror jeg ved å kjøre de nyeste dataene kilden på jobben din behandling server og sette dette opp som en mester i replikering (med en fin lang bin log) kan være veien å gå:

replikering Ved å sette hver av dine ansatte opp som en slave til jobbkontroll server oppdateringer til datakilder vil sildre nedover pent til arbeidere uten en enorm økning i nettverk aktivitet (som er mindre du utfører en stor data oppdatere og alle arbeidere sparke i samtidig). Dette har fordeler framfor rsync på at du ikke ville få en lang pause før hver jobb, som database oppdateringer, mysql vil daemonen på arbeideren din kontinuerlig oppdatere sin data mens behandlingen fortsetter.

Dette er hvordan jeg setter opp min demonstrasjon server. For å sette opp replikering Jeg fulgte guiden på mySQL hotellet ( Sette opp replikering ) og innen 20 minutter hadde jeg min inital arbeideren kopiere jobben kontroll serverne datasett. For hvert ekstra arbeidstaker replikering innstillinger og behandle jobbet hver gang da VM ble kopiert.

Oppsummering

I denne delen av artikkelen har vi sett på hvor enkelt og smertefritt det er å holde prosessering kode oppdatert ved using rsync eller subverion (SVN) for å gjøre arbeidet og redusere nettverkstrafikken på samme time. Vi diskuterte også hvordan å holde datakilden informasjon up-to-date ved at det sildre ned til hver av arbeiderne. Dermed kan vi området som sikrer at vi holder tritt med forretningslogikk og informasjon på vårt kontor bæresystem. Det vil åpenbart være utallige alternativer til å utføre disse oppgavene, men her ble to enkle eksempler for å vise hvor enkelt en løsning er å komme forbi.

Neste gang

I den siste delen av denne serien, treffende navn Del 5 vil vi diskutere distribusjon av dette systemet for. Jeg skal oppsummere hva som har blitt lært og hva jeg klarte å skape.

Kontor Grid Computing bruker Virtual miljøer - Del 3

Ved , fredag ​​4 desember 2009 23:37

Innledning

Jeg jobber i et selskap hvor vi kjøre mange satsvise jobber behandling millioner av poster av data hver dag, og jeg har tenkt nylig om alle maskinene som sitter rundt hver eneste dag gjør ingenting for flere timer. Ville det ikke være bra hvis vi kunne bruke disse maskinene til å styrke behandlingskapasiteten til våre systemer? I dette settet av artikler jeg skal se på de potensielle fordelene ved å ansette et kontor rutenett med virtualiserte miljøer.

I del 2 har vi sett på de jobbene en server vil kjøre, og hvordan arbeidsplasser bør være konfigurert for å oppnå størst mengde behandling samtidig sikre at hver jobb blir behandlet uten å lykkes.

Sette opp arbeidstaker - eller limp server

Det neste trinnet i prosessen er å sette opp din virtuelle arbeidere. For dette jeg kommer til å bruke en installasjon av CentOS bruker VirtualBox. Jeg kommer til å installere mySQL og PHP på serveren, også kjent som en limp (Li Nux, m ySQL, P HP) Servera (jeg har kanskje gjort det navnet opp).

  • Installer VirtualBox på Windows-maskinen (følg link)
  • Last ned og installer CentOS (nåværende versjon 5.3) innenfor et skapt virtuell maskin

Det er ingen vits meg å gå til denne er det sannsynligvis 1000 's flotte tutorials der ute (ok, her er ett: Lage og Managing CentOS virtuelle maskinen under VirtualBox ). Det viktige punkt å merke jeg antar er at jeg ringte min virtuell maskin GridMachine.

Såvidt mitt valg av virtualisering klient og operativsystem går er det ingen stor overbevisende grunn for hvert valg. VirtualBox er noe jeg bruker på min hjemme maskin og er støttet av de tre store operativsystemene. Jeg valgte CentOS som sin en god stabilt OS og jeg bruker det på min egen web server. Jeg er en stor tro på de riktige verktøyene for jobben (selv om jeg søker 'bruk den raskeste og enkleste for deg' mentalitet her), så hvis operativsystemet X kjører koden din raskere og mer effektivt bruke den i stedet:)

Viktigere sørge for at VM bruker DHCP, ellers for hver ny virtuell maskin ville må konfigureres separat som er noe vi ikke want.By bruker DHCP vi ikke trenger å konfigurere nettverksinnstillinger individuelt for arbeideren maskiner, vil DHCP hånd ut IP for deg. Derfor kan du kopiere den virtuelle maskinen rundt i kontoret uten å bekymre deg om å sette hver og en opp (dette forbedrer skalerbarhet og reduserer arbeideren administrasjon).

Prosessen du bør sikte på å oppnå ville være å skaffe en ny fysisk maskin, installere VirtualBox, og deretter ganske mye distribuere virtuelt bilde uten mye annet. Det kan være lurt å sette alle dine arbeidere på et annet subnett, slik at du kan i det minste se hvor mange maskiner kjører. Du trenger også å sette opp maskinene på en lang leieavtale eller ubegrenset lease DHCP.

Hvordan kjøre jobber på arbeideren

Dette er et interessant område og det er flere gyldige metoder for prosessering jobber på arbeideren. Her skal jeg bare diskutere de to mest åpenbare:

  • Stadig kjører script: Et skript, det være seg et skall skript eller et PHP-script kjøres en gang på arbeideren og løper som en del av en uendelig loop. Jeg har diskontert denne metoden som et krasj av skriptet og potensielt dine arbeidere vil slutte å kjøre uten noen form for intervensjon.
  • Cron baserte skript gjennomføring: Hver X minutter cron daemon starter en samtale til skript for å få ting i gang. Uten noen sjekker dette kan føre til mange mange kopier av arbeideren skript.

Min beslutning var å gå med cron som starter et skall skript hver 10 minutes. My shell script utfører følgende oppgaver:

  1. Få en prosess liste og grep dette for 'php'. Hvis ikke fant deretter fortsette.
  2. Ring jobben din kode, i mitt tilfelle dette skulle bli noe PHP baseres
  3. Worker skript fullfører sin løpe
  4. Klar til å gå igjen på neste passende kaller

Min bash script ser omtrent ut som følgende:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php> / dev / null
 deretter
     echo "Job er for tiden behandling, exit"
 ellers
     echo "Job ikke kjører, starter nå"
     php yourJobProcessingScript.php
 fi 

Merk: echo-er er nesten helt meningsløs, men kan bidra til den neste personen som kommer sammen for å prøve og redigere dem.

Det konkluderer oppsett av arbeideren virtuell maskin, rask, enkel og lett å kopiere til hver ny maskinvare som er mottatt. The 'klokskap' av bæresystemet er virkelig ikke i visualiseres OS, alt å gjøre med koden opprettet for å behandle jobber, jobben konfigurasjon, og i å sørge for at jobben går når det er hensiktsmessig (dvs. når verten er inaktiv ).

Sette opp Windows til å initialisere Workers

Den første oppgaven er å arbeide ut kommandoen kreves for å kjøre den virtuelle maskinen fra windows kommandolinjen. Hvis du har installert VirtualBox på standard plassering, og du har gitt arbeidstakeren GridMachine deretter kommandoen som kreves for å laste opp arbeideren er:

  "C: \ Program Files \ sø \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Men å kjøre skriptet i en "hodeløs" state vi trenger å bruke:

  "C: \ Program Files \ sø \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = off 

Dette vil starte den virtuelle maskinen uten GUI og la den for å spare staten grasiøst. Det andre argumentet slår av RDP så det ikke kommer i konflikt med vinduer RDP, eller gi deg en beskjed om å lytte på port 3389. Den virtuelle maskinen navn er store og små bokstaver!

Deretter må vi sette vinduene opp til kick off våre arbeideren VM når maskinen er uvirksom. For å gjøre dette (på Windows XP) du trenger for å gå Start -> Alle Programmer -> Tilbehør -> Systemverktøy -> Planlagte oppgaver som følger:

planlagte oppgaver

Neste klikk på "Legg til planlagt oppgave" etterfulgt av bla å legge til et egendefinert program. Naviger til VBoxManage skriptet og trykk ok. Planlegg din oppgave for noen av alternativene (vi kommer til å endre dette i ett minutt) og fortsette. Etter å hoppe over det neste skjermbildet windows vil spørre deg hvem du vil kjøre denne oppgaven, vil jeg foreslå enten 'Administrator' eller opprette en ny privilegert bruker. Husk at vi ikke ønsker å forstyrre standard personalet konto på maskinen på noe punkt. Klikk Neste og sjekk viser avanserte alternativer for denne oppgaven.

Til slutten av oppkjøringen tekstboksen legge vår "startvm GridMachine 'streng og sørge for at bare kjøre når du er innlogget er igjen merket av. Besøk planlegge oppgaven neste og endre planen falle ned til alternativet 'når idle ", velge hvor mye tid du ønsker at maskinen skal være inaktiv før du går videre til neste fane.

Endelig fjern merket det alternativet som sier stopp oppgaven hvis den har kjørt X tid, men merk muligheten til å stoppe oppgave hvis maskinen er ikke lenger ledig.

tidsplan

Det er det da for windows host setup!

Oppsummering

I denne delen har vi satt opp en virtuell maskin til å fungere som en arbeidstaker, samt måten vi kaller og gjennomføre vår jobb behandling skript (for meg et PHP-script). Herfra ser vi på hvordan du setter opp vår kopier av vinduene for å starte opp den virtuelle maskinen i hodeløse modus når maskinen blir inaktiv, og lagre tilstanden når brukeren gjenopptar bruken av maskinen. Forhåpentligvis på dette punktet du ser hvor enkelt det er å sette opp et slikt system, og er spent på å få noen eksperimenter gang selv!

Neste gang

I Del 4 vil vi se på bruk av verktøy for å sikre at du kjører den nyeste versjonen av koden og datakilder, slik at oppnådde resultater er alltid up-to-date med de nyeste forretningsinformasjon og logikk.













Panorama Theme by Themocracy

9 besøkende online nå
7 gjester, 2 roboter, 0 medlemmer
Maks besøkende i dag: 18 kl 04:13 UTC
Denne måneden: 19 på 19-08-2011 06:09 UTC
I år: 130 på 28-03-2011 22:40 UTC
All time: 130 på 28-03-2011 10:40 UTC