Kategori: Artikler

OAuth / Twitter Auth Adapter til Zend Framework

Ved , lørdag den 23 April, 2011 15:57

Arbejdet fortsætter (langsomt) på min nye Twitter -baseret applikation. I løbet af de næste par helligdage håber jeg at få momentum i gang igen på projektet (in-trods af det gode vejr i øjeblikket). Anyway, min næste opgave var at skabe en godkendelse adaptor til Zend Framework . Jeg havde en arbejdsgruppe login implementering, men har et fald i Auth adapter til Zend Framework virkede som en attraktiv forslag, så jeg skabte det ....

(Jeg har ikke tænkt mig at gå igennem Oauth eller registrere din ansøgning med twitter, er der hundredvis af vejledninger, og det er en forholdsvis enkel proces alligevel.)
Fortsæt læsning 'Oauth / Twitter Auth adapter til Zend Framework' »

"Log ind med Twitter" ved hjælp af Zend Framework

Ved , er torsdag 17 mar, 2011 01:07

På trods af alle twitter hader i det øjeblik, jeg satte sig for at oprette en ny Twitter -baseret applikation. At være en person, der administrerer flere konti (både personligt og for mit velgørenhedsarbejde) Jeg har været behov for et værktøj til engang, at jeg bare at komme rundt til at skrive (mere af det i den nærmeste fremtid ...).

Jeg har læst op på Zend_Oauth_Consumer og hvordan det kan bruges til at få tilladelse til at interagere med twitter bruge OAuth . Alt sammen meget godt, jeg har min adgang nøgle og jeg kan lystigt indlæg væk på en brugers vegne. Der er masser af ressourcer derude til at gøre dette, så jeg vil ikke kede folk.

Det næste skridt var at give folk mulighed for at vende tilbage til webstedet, skal du logge ind og ændre deres konto. Det er her jeg nåede til et lille problem. Ved hjælp af kode eksempler på websteder, betød, at jeg ville have twitter spørger mig om adgang godkendelse igen for hvert login, ikke godt. Scanning inden for rammerne jeg kunne ikke se noget, som ville tillade mig at bare anmode om godkendelse. Det er ikke til at sige det er ikke der, men der syntes ikke at være en authentication mekanisme, der kunne gøres gældende uden at vide adgang token allerede.

Alternativerne var at gennemføre en site-baserede logge på eller anden måde gemme brugerens adgang token på klienten (krypteret naturligvis). Ingen af ​​disse virkede som en god / passende løsning.

Fortsæt læsning '"Log ind med Twitter" ved hjælp af Zend Framework' »

Zend Certified Engineer (ZCE) 5,3

Ved , torsdag 30 SEP 2010 21:00

Med den officielle frigivelse af Zend Certified Engineer (ZCE) program for 5,3 jeg troede, jeg ville give min hurtig indtryk af, hvad jeg mente om eksamen.

Lidt baggrund om mig selv: Jeg blev først introduceret til PHP omkring 7 år siden og har arbejdet professionelt med PHP siden 2006. Jeg arbejder for en spændende start-up kaldet Brightpearl baseret i Bristol, England , der producerer integreret CRM, regnskab, og eCommerce software. Jeg har ikke tidligere fået nogen af ​​de tidligere ZCE kvalifikationer. Jeg i øjeblikket udvikler sig i 5.2.X-serien og har ikke rigtig brugt nogen af de specifikke 5,3 features (Jeg venter på Zend Framework 2 og Lære 2) i mit udviklingsprojekter.
Fortsæt læsning "Zend Certified Engineer (ZCE) 5,3 '»

Quick Start Symfony DI (Dependency Injection) Tutorial

Ved , Lørdag 14 august 2010 14:21

Hvad er Dependency Injection (DI)?

Afhængighed injektion er en teknik, der giver mulighed for løst koblet objekter i et program. Generelt hvis et objekt kræver adgang til funktionaliteten af ​​en anden det ville være instantieret internt fører til tæt koblede systemer. Ved at implementere afhængighed injektion vi injicere den ønskede objekter klar til brug (undertiden også kaldet inversion af kontrol - IOC). Tag følgende eksempel:

  <? Php
 klasse DecisionMaker {
     offentlig funktion makeDecision (array $ parametre) {
         / / Behov databasen adapter
         $ Dp = ny DecisionParameters ();
         $ ParameterScore = $ DP-> getScore ($ parametre);
         / * ...  Nogle flere af logikken ...  * /
         return ($ parameterScore> 50);
     }
 } 

Dette stykke kode siges at være tæt koblet til DecisionParameters objekt. Omskrivning ovenstående i en løst koblet måde, som vi ville have noget i retning af ....

  <? Php
 klasse DecisionMaker {
     private $ _dp;
     offentlig funktion __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     offentlig funktion makeDecision (array $ parametre) {
         $ ParameterScore = $ this-> _dp-> getScore ($ parametre);
         / * ...  Nogle flere af logikken ...  * /
         return ($ parameterScore> 50);
     }
 } 

Mens få fordelene ved løst koblede kode, vi tilføjer kompleksitet sådan, at hver gang et objekt er instantieret vi også nødt til at instantiere dens afhængigheder og videregive disse i også. For eksempel dette:

  $ Valg = ny DecisionMaker ();
 echo $ valg-> makeDecision (array ('indsats' => 'lav', 'tilbage' => 'høj')); 

nu bliver:

  $ Dp = ny DecisionParameters ();
 $ Valg = ny DecisionMaker ($ dp);
 echo $ valg-> makeDecision (array ('indsats' => 'lav', 'tilbage' => 'høj')); 

Denne situation bliver mere smertefuldt som det antal afhængigheder for en klasse er øget, og hvad nu hvis de afhængigheder selv har afhængigheder? Det kan ret hurtigt blive et objekt administration mareridt! Indtast afhængighed injektion beholdere (eller rammer) ...
Fortsæt læsning 'Quick Start Symfony DI (Dependency Injection) Tutorial' »

Naked Zend_Layout og Zend_View

Ved , Tirsdag 10 August, 2010 23:47

I denne artikel vil jeg se på ved hjælp af Zend_Layout og Zend_View sammen med en enkel forside controller til at vise, hvordan det er muligt at starte adskille forretningslogik og præsentation i din ansøgning. Alle koden er tilgængelig på github:
Naked Zend_Layout og Zend_View på GitHub .

Fortsæt læsning 'Naked Zend_Layout og Zend_View' »

Zend Framework Per Modul Layout Indstillinger - Opfølgning

Ved , Tirsdag 16 feb, 2010 20:48

Som en opfølgning på mit tidligere indlæg per modul baseret layout indstillinger for Zend Framework , jeg har opdateret koden til at kræve mindre konfiguration end før (ikke at det krævede mere end et par linjer i din ansøgning konfiguration!).
Fortsæt læsning 'Zend Framework Per Modul Layout Indstillinger - Follow Up' »

Oprettelse af webadressen i Zend Brugerdefineret visning Helper

Ved , torsdag 28 januar, 2010 11:01

Det kan synes enkelt, men jeg var slå mit hoved forsøger at skabe en URL i en brugerdefineret visning hjælper i Zend Framework . Jeg har routing-setup, hvilket får modulet fra sub-domæne i brug, så jeg ikke kunne bruge en simpel hardcodede URL.

Fortsæt læsning 'Oprettelse af URL i Zend Brugerdefineret visning Helper' »

Rute anmodninger om sitemap.xml til brugerdefineret controller / handling

Ved , Onsdag 6 jan 2010 12:13

For at direkte anmodninger til / sitemap.xml til en brugerdefineret controller og handling i din Zend Framework ansøgning blot tilføje følgende i din application.ini eller alternative config fil (fx jeg bruger navigation.ini):

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

Eksempel kode for udsende kan ses ved at skabe en handling i det pågældende controller (f.eks mit Sitemap ligger i indekset controlleren, sitemap handling):

 < php
 klasse IndexController
     udvider Zend_Controller_Action
 {
     / **
      * Gør en sitemap baseret på Zend_Navigation setup
      * /
     offentlig funktion sitemapAction ()
     {
    	 echo $ this-> Vis-> navigation () -> Sitemap ();
    	 $ This-> Vis-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps kan hurtigt og let kan genereres ved hjælp af Zend_Navigation , en stor hurtig tutorial (og generelt meget nyttigt for Zend Framework selvstudier) er Zend Afstøbninger - Dynamisk skabe en menu af et Sitemap og rasp .

Office Grid Computing ved hjælp af virtuelle miljøer - Del 4

Ved , fredag ​​4 Dec 2009 11:59

Indledning

Jeg arbejder i en virksomhed, hvor vi køre mange batchjob forarbejdning af millioner af optegnelser over data hver dag, og jeg har tænkt for nylig om alle de maskiner, der sidder rundt om hver eneste dag at gøre noget i flere timer. Ville det ikke være godt, hvis vi kunne bruge disse maskiner til at styrke den regnekraft af vores systemer? I dette sæt af artikler jeg har tænkt mig at se på de potentielle fordele ved at ansætte et kontor gitter ved hjælp af virtualiserede miljøer.

I del 3 har vi skabt vores virtuelle forarbejdning maskine og oprette Windows-maskiner for at blive ledig-deltidsansatte.

Kører den nyeste koden

Uundgåeligt Når du har oprettet dine medarbejdere forretningslogik vil ændre sig, vil fejl blive fundet, vil hurtigere, mere effektiv kode, der produceres hvilket giver dine medarbejdere sad omkring behandling af data ved hjælp af gamle ildelugtende kode . Hvordan så sikrer vi, at vi altid bruger de nyeste og bedste version af vores behandling af scripts?

Der er et par meget nemme enkle måder vi kunne gøre dette, det trick, er imidlertid at reducere behandlingstiden magt og netværkstrafik i at opnå dette. Lad os starte med det simpleste af løsninger og forbedre det langsomt over et par iterationer.

Den første metode ville være simpelthen at oprette forbindelse til vores job Control Server (via samba, FTP eller lignende) og træk ned den seneste version af koden. Ikke meget effektiv, men det vil gøre arbejdet. Lad os forbedre på, at noget, hvordan om at skabe et rsync script og brug, at hver gang i stedet? Alternativt hvad med at sætte vores nyeste behandling script til undergravende virksomhed tjekker ud koden i første omgang og så bare opdatere vores kode på hver kørsel ( svn update )?

I sidste ende kunne vi ende op med et bash script (kaldes af cron hver 10 minutter), der ser lige så simpelt som dette:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php > / dev / null
 Derefter
     echo "Job er i øjeblikket behandling, frakørsel"
 andet
     echo "Job ikke kører, skal du starte nu"
     cd / sti / til / arbejde / kopiere
     svn update
     php yourJobProcessingScript.php
 fi 

Nu kan vi være sikre på, at med hvert løb er vi absolut køre den nyeste kode. Vi sikrer dette ved at opdatere vores kodebase hver eneste gang vi udfører en løbetur og reducerer netværkstrafik ved kun at overføre filen forskelle på tværs af vores netværk.

I min demonstration setup, gjorde jeg præcis som ovenfor. Subversion blev installeret på mit job forarbejdning server og jeg simpelthen trak den nyeste kode fra en »arbejdstager« gren ved hjælp af 'svn update'. Jeg har også tilføjet en versionsnummer mærke til min behandling script, som blev returneret til databasen som en del af resultaterne afkast. På den måde kunne jeg se, at min kode var ved at blive opdateret hver gang jeg kopieret min kuffert i arbejdstagerens gren, dvs at jeg var helt kører med den nyeste behandling af scriptet.

Ved hjælp af de nyeste data

Hvis dit job forarbejdningen gør brug af datakilder så på et tidspunkt disse vil blive opdateret. Medmindre du ringe til din datakilder på en meget sjælden grundlag du vil oversvømme netværket med trafik, så snart dine medarbejdere begynde at køre bringe alting i stå. For min løsning, besluttede jeg at jeg vil flytte mine data kilder rundt med mine VM'er.

Hold du er heste der! Hvad nu hvis mine data kilder er enorme? Nå det er virkelig et tilfælde af hvor mange data vi taler? Det kan være mere omkostningseffektivt at installere en ekstra større harddisk i hver maskine, end at købe en ekstra behandling server. Dette er et spørgsmål om budget og er op til virksomheden at afgøre. Det måske, at dine data kilder er så store, at det bare umuligt at holde, at mængden af data i dit arbejdstager maskiner. I så fald hvad ville du gøre? Godt vi kunne se på at kalde en lokal data-server, men dette kan forårsage problemer med netværket. I dette tilfælde et gitter system som dette kan blive urealistisk at inkludere i dit kontormiljø. Det kan også være, at du kan se i alternative kører strategier, for eksempel kun at kalde dine arbejdere fra 08:00 til 06:00 hver aften og / eller kvæle datakilde anmodninger.

Flytning på lad os sige vores datakilder beløbe sig til 100 GB data. Nå ja, det er en hel del data for at flytte rundt på nettet på en opdatering. Hvordan vil vi sikre, at vi har den seneste kopi af data i denne sag? Rsync er en mulighed, men jeg personligt tror, ​​ved at køre dine seneste datakilde på din jobbehandling server og konfigurere dette som en mester i replikation (med en dejlig lang bin log) kan være vejen at gå:

replikering Ved at indstille hver af dine medarbejdere op som en slave til jobbet Control Server opdateringer til dine data kilder vil sive ned pænt til dine medarbejdere uden en enorm stigning i net-aktivitet (det er medmindre du udfører en kæmpe data opdatering samt alle dine medarbejdere spark i på én gang). Dette har fordele frem for rsync i, ​​at du ikke ville få en lang pause, før hvert job, som database opdateringer, mysql vil daemon på din arbejdstager løbende opdatere sine data, mens behandlingen fortsætter.

Dette er hvordan jeg oprettet min demonstration server. For at opsætte replikering Jeg fulgte guiden på mySQL stedet ( Opsætning replikering ), og inden for 20 minutter, som jeg havde min inital arbejdstager kopiere jobbet kontrol servere datasæt. For hver yderligere arbejdstager replikation indstillinger og processen arbejdede hver gang, da VM blev kopieret.

Resumé

I dette afsnit af artiklen har vi set på, hvor nemt og smertefrit det er at holde din behandling koden up to date med using rsync eller subverion (SVN) til at gøre arbejdet og reducere netværkstrafikken på samme time. Vi har også diskuteret, hvordan at holde dine oplysninger om datakilden up-to-date ved at lade den sive ned til hver af dine medarbejdere. Således vi område at sikre, at vi holder op med forretningslogik og information på vores kontor skinnesystem. Der vil naturligvis være utallige alternativer til at udføre disse opgaver, men her var to simple eksempler for at vise, hvor let en løsning er at komme forbi.

Næste gang

I den sidste del af denne serie, rammende opkaldt kapitel 5 , vil vi diskutere at implementere dette system. Jeg vil sammenfatte hvad der er blevet lært, og hvad jeg formåede at skabe.

Office Grid Computing ved hjælp af virtuelle miljøer - Del 3

Ved , fredag ​​4 Dec 2009 23:37

Indledning

Jeg arbejder i en virksomhed, hvor vi køre mange batchjob forarbejdning af millioner af optegnelser over data hver dag, og jeg har tænkt for nylig om alle de maskiner, der sidder rundt om hver eneste dag at gøre noget i flere timer. Ville det ikke være godt, hvis vi kunne bruge disse maskiner til at styrke den regnekraft af vores systemer? I dette sæt af artikler jeg har tænkt mig at se på de potentielle fordele ved at ansætte et kontor gitter ved hjælp af virtualiserede miljøer.

I del 2 ser vi på de job, en server vil køre, og hvordan job skal konfigureres for at opnå størst forarbejdningsstøtte samtidig sikre, at hvert job er behandlet, uden at mislykkes.

Opsætning af din arbejdsplads - eller halte server

Det næste skridt i processen er at oprette din virtuelle medarbejdere. For denne jeg har tænkt mig at bruge en installation af CentOS bruge VirtualBox. Jeg har tænkt mig at installere mySQL og PHP på serveren, også kendt som en slatten (Li nux, m ySQL, P HP) Servera (jeg kan have gjort dette navn op).

  • Installer VirtualBox på din Windows-maskine (følg link)
  • Hent og installer CentOS (nuværende version 5.3) inden for en oprettet virtuel maskine

Der er ingen mening mig at gå til dette er der nok 1.000 'er af stor tutorials derude (ok, her er en: Oprettelse og Managing CentOS virtuel maskine under VirtualBox ). Det vigtige punkt at bemærke Jeg formoder, er, at jeg ringede til min virtuelle maskine GridMachine.

For så vidt angår mit valg af virtualisering klient og operativsystem gå der ikke er nogen stor tvingende grund for hvert valg. VirtualBox er noget, jeg bruger på min hjemme maskine, og er støttet af de tre store operativsystemer. Jeg valgte CentOS som sin et godt stabilt OS og jeg bruger det på min egen webserver. Jeg er en stor tilhænger af det rigtige værktøj til opgaven (selvom jeg anvender 'brug den hurtigste og nemmeste for dig' mentalitet her), så hvis styresystemet X kører din kode hurtigere og mere effektivt bruge dette i stedet:)

Det er vigtigt at sikre, at din VM bruger DHCP, ellers for hver ny virtuel maskine vil skulle konfigureres særskilt hvilket er noget, vi ikke want.By bruger DHCP vi behøver ikke at konfigurere netværksindstillinger individuelt for arbejdstager maskiner, vil DHCP hånd ud IP'er for dig. Derfor kan du kopiere din virtuelle maskine om kontoret uden at bekymre sig om opsætning hver en op (Dette forbedrer skalerbarhed og reducerer arbejdstager administration).

Den proces, du bør sigte på at opnå ville være at få en ny fysisk maskine, installere VirtualBox, og derefter stort set installere virtuelle billede uden meget andet. Det kan være klogt at sætte alle dine medarbejdere på et andet subnet, så du kan i det mindste se, hvor mange maskiner kører. Du skal også oprette dine maskiner på en lang lejekontrakt eller ubegrænset lejemål DHCP.

Sådan køres job på arbejdstageren

Dette er et interessant område, og der er flere gyldige metoder til behandling af jobs på arbejdstageren. Her Jeg vil bare diskutere de to mest oplagte:

  • Bestandigt at køre script: Et script, det være sig en shell script, eller et PHP script udføres én gang på arbejdstageren og kører som en del af en uendelig løkke. Jeg har diskonteret denne metode som et brag af manuskriptet og potentielt dine medarbejdere vil ophøre med at køre uden en form for intervention.
  • Cron baseret script udførelse: Hvert X minutter cron daemon starter et opkald til dit script til at få tingene i gang. Uden en vis kontrol af dette kan føre til mange mange kopier af dine arbejdstager scriptet kører.

Min beslutning var at gå med cron, som starter en shell script hver 10 minutes. Mit shell script, udfører følgende opgaver:

  1. Få en proces liste og grep dette for 'php'. Hvis den ikke findes derefter fortsætte.
  2. Ring til dit job kode, i mit tilfælde ville det være noget, der bygger PHP
  3. Worker scriptet afslutter sit løb
  4. Klar til at gå igen på det næste passende kalder

Min bash script ser ud som følger:

  #! / Bin / sh
 hvis ps ax | grep-v grep | grep php> / dev / null
 Derefter
     echo "Job er i øjeblikket behandling, frakørsel"
 andet
     echo "Job ikke kører, skal du starte nu"
     php yourJobProcessingScript.php
 fi 

Bemærk: ECHO er næsten fuldstændigt meningsløst, men det kan hjælpe den næste person, der kommer sammen for at prøve og redigere dem.

Hermed er opsætningen af ​​arbejderen virtuelle maskine, hurtig, enkel og nem at kopiere til hvert nyt stykke hardware, der er modtaget. Den 'dygtighed' af elnettet er virkelig ikke i visualiseret OS, det hele at gøre med den kode, der oprettes til at behandle job, jobbet konfiguration, og i at sikre, at jobbet kører når det er relevant (dvs. når værten er inaktiv ).

Opsætning af Windows for at initialisere Workers

Den første opgave er at arbejde ud af den kommando kræves for at køre den virtuelle maskine fra vinduerne kommandolinjen. Hvis du har installeret VirtualBox på standardplaceringen, og du har kaldt dit arbejdstager GridMachine derefter kommandoen kræves for at indlæse dine arbejdstager er:

  "C: \ Programmer \ søn \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Men at køre script i en "hovedløs" state vi er nødt til at bruge:

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

Dette vil starte den virtuelle maskine uden GUI og gør det muligt at spare staten yndefuldt. Det andet argument slukker RDP, så det ikke i konflikt med Windows RDP, eller give dig en besked om at lytte på port 3389. Den virtuelle maskine navn er store og små bogstaver!

Dernæst vil vi nødt til at sætte vinduer på op til kick off vores arbejdstager VM, når maskinen har været inaktiv. For at gøre dette (på Windows XP) Du bliver nødt til at gå Start -> Alle Programmer -> Tilbehør -> Systemværktøjer -> Planlagte Opgaver som nedenfor:

planlagte opgaver

Klik derefter på 'Tilføj Scheduled Task "efterfulgt af Gennemse for at tilføje et brugerdefineret program. Navigere til din VBoxManage script og klik ok. Planlæg din opgave for nogen af ​​de muligheder (vi vil ændre dette i et minut) og fortsætte. Efter at springe det næste skærmbillede Windows vil spørge dig, hvem du vil køre denne opgave, ville jeg foreslå enten 'Administrator' eller oprette en ny bruger med rettigheder. Husk at vi ikke ønsker at blande sig med den standard personalet konto på maskinen på noget tidspunkt. Klik på Næste og kontrol viser, avancerede indstillinger for denne opgave.

Til slutningen af kørslen tekstfeltet tilføje vores 'startvm GridMachine' snor og sikre, at der kun kører, når logget ind er tilbage unticked. Besøg tidsplanen opgaven næste og ændre tidsplanen drop ned til indstillingen ', når tomgang', vælge den tid, du ønsker at maskinen skal være ledig, før man går videre til næste fane.

Endelig Fjern markeringen den mulighed, der hedder at stoppe den opgave, hvis den har kørt X tid, men kryds mulighed for at stoppe den opgave, hvis maskinen ikke længere er ledig.

tidsplan

Det var det så for Windows host setup!

Resumé

I denne del har vi oprettet en virtuel maskine til at fungere som en arbejdstager, samt den måde, hvorpå vi kalder og udføre vores job behandling scripts (for mig selv en PHP script). Herfra ser vi på, hvordan du opsætter vores kopier af Windows til at starte den virtuelle maskine i hovedløse tilstand, når computeren bliver ledig, og gemme dens tilstand, når brugeren genoptager brugen af ​​maskinen. Forhåbentlig på dette punkt du ser hvor nemt det er at etablere et sådant system og er kløe at få nogle eksperimenter gang selv!

Næste gang

I Kapitel 4 vil vi se på ved hjælp af værktøjer til at sikre, at du kører den nyeste version af kode og data kilder, så opnåede resultater er altid up-to-date med de nyeste forretningsoplysninger og logik.













Panorama Tema ved Themocracy

10 besøgende online nu
8 gæster, 2 bots, 0 medlemmer
Max besøgende i dag: 17 kl 4:02 UTC
Denne måned: 19 kl 19-08-2011 06:09 UTC
I år: 130 kl 28-03-2011 22:40 UTC
Al tid: 130 kl 28-03-2011 10:40 UTC