Categorie: Articole

Oficiul pentru Grid Computing utilizând medii virtuale - Partea 1

Prin , vineri 04 decembrie 2009 11:23

Introducere

Eu lucrez intr-o companie în care vom rula multe locuri de muncă lot de prelucrare a milioane de înregistrări de date în fiecare zi şi m-am gândit recent la toate maşinile care stau în jurul valorii de fiecare şi în fiecare zi, nu face nimic pentru mai multe ore. Nu ar fi bine dacă am putea folosi aceste maşini pentru a consolida puterea de procesare a sistemelor noastre? În acest set de articole am de gând să se uite la beneficiile potenţiale ale angajarea unui birou grilă utilizând medii virtualizate.

Ca un PHP developer am de gând să utilizeze instrumente pe care le folosesc în fiecare zi şi anume, Linux, mySQL , PHP, VirtualBox şi subversiune (SVN). Cu toate acestea Sper că acest ghid se va adapta la alte limbi şi tehnologii la fel de bine.

Soluţia oferă Eu va fi foarte vag în funcţie de tipul de prelucrare am fi avut nevoie pentru a realiza toate acestea, acest lucru nu poate fi adevarat prin intreg articolul ca voi schimba lucrurile pentru simplitate, sau pentru a produce mai multe scenarii interesante de utilizare.

Aceste medii virtualizate va rula pe maşinile ferestre, deoarece aceasta este ceea ce majoritatea birourilor alerga. De prelucrare că a echipamentelor de birou nu ar trebui să interfereze cu personalul care utilizează aceste maşini, ar trebui să nu necesită întreţinere la maşină, şi să fie uşor dislocabile pentru maşini noi în care acestea devin disponibile. De asemenea, maşinile noi nu ar trebui să virtuale necesită nici o configurare suplimentare, deoarece aceasta reduce semnificativ scalabilitatea şi uşurinţa la care reţeaua poate fi extins.

De ce Implementaţi un Grid Computing Office?

În primul rând s-ar putea să fie de gândire, ce să nu folosim doar o resursa de cloud computing, cum ar fi platforma Amazon EC2 lui ? Ei bine, ar putea fi mai multe motive, de exemplu:

  • Tu nu va încredinţa anumite date la un mediu cloud computing
  • Nu poţi pune anumite date într-un mediu cloud computing pentru motive juridice (de exemplu, date care părăsesc ţara), potenţial pentru motive juridice, de exemplu, înregistrări NHS.
  • Doriţi să păstraţi unităţile de procesare a închide şi au control deplin asupra hardware-ul prea
  • Nu aveţi fonduri proiectul de a executa instanţe nor
  • Biroul dvs. nu are o conexiune la internet şi, prin urmare, ei nu este posibil de a utiliza o resursă nor
  • Nu-ti place ploaia, norii de ploaie sugerează, prin urmare, vă păstraţi bine departe

Sunt sigur că lista ar putea continua, dar cred că e suficient pentru acum.

Avantajele unui Computing Grid Oficiul pentru

Ei bine, vă permite să facă unele matematică (şi în stil fizica va permite adevărat face unele ipoteze de măturat strada). Imaginati-va ca au server de mare de prelucrare a musculos de funcţionare 100 de locuri de muncă pe zi. În biroul dumneavoastră aveţi 50 de maşini care sunt în repaus 16 ore pe zi, fiecare dintre aceste maşini este de 10%, la fel de puternic ca Sever de procesare musculos. (Toate rezultatele aici sunt rotunjite la subestimeze creste performanta).

Deci, 1 masina de putere * 10% * 2 / 3 = 0.067 de timp şi anume 1 prelucrare pe ecranul inactiv, în timp ar putea proces de 6 locuri de muncă plin pe zi.

Dacă scara acum asta este nevoie de 15 desktop-uri în aşteptare pentru a procesa cat mai multe locuri de muncă pe zi ca serverul dumneavoastră principală de procesare nu.

Deci, în biroul nostru pretinde de 50 de masini noi ar putea creste puterea noastra de procesare de la 1 server de până la 4 servere de prelucrare complet, sau am putea fi de prelucrare a 400 de locuri de muncă pe zi în loc de 100.

Aviz, pentru nici o investiţie în hardware nou compania ta tocmai a crescut capacitatea de prelucrare a lot de 4 ori! Potenţial ai de gând să crească utilizarea dvs. de alimentare, dar de la cele mai multe medii de birou am fost la maşini sunt, în general, pe stânga peste noapte, oricum, asa ca puteti vedea acest lucru ca pe o iniţiativă verde.

Alte avantaje înseamnă, de asemenea, că investiţiile în noi (sau actualizate), serverele de procesare poate fi amânată în cazul în care maşinile de birou sunt suficiente şi că, după cum vă îmbunătăţi puterea de maşini de birou dvs. grila de la birou devine mai puternic în mod automat.

Tehnologii

Ce ai nevoie? (Sau mai corect ceea ce am folosit):

  • Maşini de birou inactiv (in cazul meu un schimb vechiul Windows XP laptop)
  • VirtualBox (sau un alt client software de virtualizare)
  • O maşină virtuală, cu PHP, mySQL running execută o tăietură în jos sistem de operare, eu sunt de asteptare aceste servere Limp meu:)
  • Locuri de munca pentru a rula
  • Job server (poate fi o altă maşină virtuală undeva)

Locuri de munca tipice

Tipurile de locuri de muncă că acest sistem este proiectat pentru a rula este după cum urmează:

  • Sistem primeşte o listă de date pe care avem nevoie pentru a se potrivi şi să se întoarcă rezultatele
  • Potrivirea presupune verificarea / Cauta dupa mai multe (destul de statică) surse de date
  • Rezultatele de la sursele de date poate solicita validarea suplimentare, care fuzionează, verificarea de surse de date suplimentare, ca răspuns la rezultatele
  • De date este returnat cu înregistrările potrivite, pe deplin validate şi prelucrate
  • Fiecare înregistrare într-un loc de muncă este independent de restul

Deci, practic ne uităm la execută de locuri de muncă care necesită un amestec de interogarile bazei de date şi unele ronţăit număr, un scenariu destul de tipic într-un mediu de afaceri.

Grila de soluţii nu sunt numai avantajoase pentru prelucrare de locuri de muncă de acest tip. Practic, orice proces care poate fi împărţită în unităţi independente pot fi rulate în paralel. A se vedea acest Wikipedia pentru mai multe exemple şi informaţii: Grid Computing , dar o serie de exemple celebre sunt SETI @ home şi BIONC . Există cadre pentru rularea grile de calcul, iar acestea sunt bine, merită să analizăm.

Ceea ce vom realiza?

Până la sfârşitul acestor articole sper să demonstreze că desfăşurarea unei grile de birou nu trebuie să fie extrem de scumpe sau consumatoare de timp. Am de gând, pentru a discuta:

  • Configurarea sistemului de control de locuri de muncă, locuri de muncă de configurare
  • Crearea unei maşini de prelucrare adecvate virtuală
  • Cum se setează sistemul de pe un calculator cu Windows
  • Asigurarea sunteţi folosind cele mai noi date şi codul
  • De desfăşurare şi evaluare comparativă
  • Privind în perspectivă

Voi fi de constructii (ok am construit, apoi a scris acest lucru) o cerere de exemplu pentru a testa conceptele pe o maşină locală utilizând Windows XP şi a mea "GridMachine" maşină virtuală. Serverul meu de control de locuri de muncă va fi masina mea principală, care ruleaza Fedora 11 .

Acest lucru este în nici un fel menite să demonstreze existenţa unui sistem complet de lucru robust, sa însemnat mai mult de o demonstraţie şi discutarea care arată că aceste lucruri pot fi realizate intr-un spatiu rezonabil de scurt de timp si la costuri mici. Vă rugăm să nu ezitaţi să-mi trimiteţi orice comentarii, corecturi, sau îmbunătăţiri şi voi face tot posibilul pentru a păstra acest articol actualizat pentru a se potrivi.

Dată următoare

În partea a 2- Voi începe prin a uita la sistemul de control de locuri de muncă, şi privi în modul de locuri de muncă ar trebui să fie configurat pentru a realiza cea mai mare cantitate de prelucrare în acelaşi timp asigurându-se că fiecare loc de muncă este procesat, fără a eşua.

Oficiul pentru Grid Computing utilizând medii virtuale - Partea 2

Prin , vineri 04 decembrie 2009 11:23

Introducere

Eu lucrez intr-o companie în care vom rula multe locuri de muncă lot de prelucrare a milioane de înregistrări de date în fiecare zi şi m-am gândit recent la toate maşinile care stau în jurul valorii de fiecare şi în fiecare zi, nu face nimic pentru mai multe ore. Nu ar fi bine dacă am putea folosi aceste maşini pentru a consolida puterea de procesare a sistemelor noastre? În acest set de articole am de gând să se uite la beneficiile potenţiale ale angajarea unui birou grilă utilizând medii virtualizate.

În partea 1 am dat o imagine de ansamblu a sistemului şi tehnologii Eu voi fi folosind, precum şi discutat şi unele dintre motivele potenţialului de ce v-ar dori pentru a crea o reţea de birou.

De locuri de muncă de control

Dacă aveţi de gând să fie difuzate de locuri de muncă, atunci ai de gând să nevoie de o modalitate de a le gestiona. Sistemul de control de locuri de muncă (pe serverul dvs. de locuri de muncă) trebuie să fie foarte bine gandit chiar înainte de a încerca să executaţi o reţea de birou. Deci, în primul rând, care sunt sarcinile pentru un sistem de control de locuri de muncă:

  • De locuri de muncă mâna la cererea lucrătorilor
  • Spune-lucrătorilor ce tip de locuri de muncă pentru a rula
  • Track de locuri de muncă
  • Asiguraţi-vă că locurile de muncă sunt doar rula o singură dată
  • Furnizarea de date de locuri de muncă pentru lucrători, sau cel puţin să le spună unde să-l

De asemenea, sistemul trebuie să fie extensibil, o soluţie care funcţionează pentru acum într-un singur caz poate fi extinsă pentru a rula mai multe tipuri de locuri de muncă, de afaceri vede în valoare într-o soluţie grilă. De exemplu, locuri de muncă poate câştiga priorităţi, mai mult de un tip de loc de muncă ar putea exista (de exemplu, mai multe baze cod), în cele din urmă aveţi dreptul să executaţi chiar mai multe masini diferite lucrător care sunt optimizate pentru fiecare tip de loc de muncă (cu toate că se mişcă departe de lucrător "generic "idee). Încercaţi întotdeauna să se gândească la viitor, atunci când dezvoltarea de sisteme, o viziune pe termen scurt poate duce la frustrare pe termen lung şi timpul de dezvoltare a crescut.

Server de locuri de muncă

Vom avea nevoie de undeva pentru a controla locurile de muncă noastre de la, in aceasta ar trebui să fie singurul sistem în grila de dvs., care are o resursă fix locator, fie că o adresă IP, numele gazdei, URL-ul (folosind DNS intern), etc Acest lucru se datorează faptului că lucrătorii trebuie să ştie unde să caute locuri de muncă, lucrătorii nevoie pentru a găsi sistemul de control de locuri de muncă (nu a sistemului de control de locuri de muncă găsiţi cele lucrătorilor).

Serverul de locuri de muncă în sine nu are într-adevăr o sarcină complicată (într-un sistem de bază oricum), are nevoie pentru a stoca o listă de locuri de muncă, o parte din locurile de muncă, de a primi rezultatele, şi, ulterior, le păstrează pentru mai târziu regăsire. Modul în care aceste părţi ("mână în locuri de muncă", cum ar fi) sunt definite pot fi foarte de bază. Mai tarziu, putem extinde sistemul pentru a include o interfata de administrare pentru a adăuga, edita, şterge, suspenda de locuri de muncă dar acest lucru este dincolo de acest exerciţiu.

Nu există nici un motiv, atunci faptul că server-ul dvs. de locuri de muncă nu ar putea fi o maşină virtuală care rulează în cadrul server-ul dvs. principală de procesare cu condiţia ca aceasta să nu se scurge prea multe resurse de la ea. Serverul de locuri de muncă însă are nevoie de o disponibilitate ridicată, dacă se duce în jos pe o vineri seara ai de gând să piardă un week-end întreg de prelucrare, potenţial vă costă câteva săptămâni în valoare de timp de procesare (în comparaţie cu server-ul dvs. principală de procesare în monoterapie) . Este posibil să doriţi să ia în considerare punerea server-ul dvs. de locuri de muncă pe un mediu de sarcină echilibrată pentru disponibilitate ridicată.

De bază de configurare

Configurare de bază pentru serverul de munca noastra va consta din ceea ce am de asteptare unul dintre serverele mele Limp (care este vomica Li, m ySql, P CP). Codul se execută pe lucrătorilor tolerează va funcţiona efectiv de locuri de muncă ce se poate executa prin interactiunea cu bazele de date cu sistem de control de locuri de muncă. Mai târziu am putea crea un serviciu de web si de fapt, o parte din locurile de muncă, mai degrabă decât având în lucrătorilor face munca grea în sine, dar de acum vom continua utilizarea principiul KISS (Keep It Simple, Stupid!).

Deci, vă permite să creaţi trei mySQL tabele pentru a face faţă cu locuri de muncă. Acestea vor fi locuri de muncă ``, `jobRecords`, `şi` jobResults.

tabelul de locuri de muncă Aici Sunt folosind SQL Prieteni o alternativă mare la mic phpMyAdmin doar pentru că mai uşor de sarcina de a instala pe CentOS (pentru alţii a se vedea: 10 alternative Mare pentru a phpMyAdmin )

Acest tabel este format din 5 domenii de simplu,

  • id: identifică în mod unic de locuri de muncă
  • Numele: Ar putea fi o referinţă client, sau orice alt număr de alţi identificatori
  • Stare: Trebuie să ştiţi unde este la locul de muncă, de exemplu,
    • 0: Nu a început
    • 1: crescut
    • 2: Finalizat
  • started_by: Cine a inceput sa faca treaba? Acest lucru nu este în întregime necesar, dar este un frumos de a avea. Aş sugera lucrătorilor de urmărire prin adresa IP în reţea
  • started_at: Când a început lucrătorul de locuri de muncă? Prin urmărirea de locuri de muncă care nu au finalizat în termen de suma X de timp ştim că avem nevoie pentru a ridica din nou loc de muncă şi de a începe prelucrarea de către un alt lucrător. Lucrătorii ar putea opri de prelucrare / go offline pentru orice număr de motive, pană de curent, accident, o pierdere în reţea, etc

Este uşor de modul în care acest tabel ar putea fi extins cu câteva domenii suplimentare pentru a permite pentru urmărirea statisticilor, există o coloană de timp finisaj pentru a vedea cât de mult a luat loc de muncă, un contor pentru a vedea cât de multe lucrătorilor ridicat de locuri de muncă (evident, acest lucru trebuie să tind să 1), prioritate de locuri de muncă, lista poate continua pe şi de pe. În scenarii de locuri de muncă mai complexe, ar fi posibil să se precizeze cât de mult de memorie în care lucrătorul ar fi nevoie de acces la (şi, prin urmare, utilizarea numai de către lucrători adecvate), sau chiar ce tip de lucrător ar fi necesare.

Să adăugăm un putine locuri de munca exemplu:

exemplu de locuri de muncă

În tabelul următor este din nou destul de simplu de înţeles, acestea sunt inregistrarile noastre de locuri de muncă. Ele sunt legate la masa principală de locuri de muncă de către o coloană `jobs_id`. Fac din acest tabel foarte mult depinde de datele de care aveţi nevoie să furnizeze lucrătorilor dumneavoastră, vă permite să fac un exemplu foarte simplu în cazul în care avem patru coloane:

  • id: ID-ul de înregistrare
  • Numele: Persoana Numele
  • Adresa: Adresa Persoanei
  • jobs_id: ID-ul de locuri de muncă faptul că această înregistrare este legată de

Tabelul a treia şi ultima constă dintr-un tabel de rezultate, el are la fel face ca masa noastră înregistrări, şi cu adăugarea unor coloane ar putea face parte din tabelul de înregistrări:

  • job_record_id: Link rezultat la masa de locuri de muncă
  • Rezultatul: date de rezultat

... Şi asta e tot ce ai nevoie pentru un control de locuri de muncă! (Deşi la un nivel foarte de bază) În cazul meu, am arătat într-un alt tabel în cazul în care datele mele la proces a fost localizat, dar acest lucru ar putea la fel de uşor a fost un fişier, parametrii pentru a rula cod de simulare, îl nume.

Selectarea unui loc de muncă

După cum sa menţionat anterior, muncitorii vor face noastre de management de locuri de muncă pentru noi, pentru acum, asa ca tot ce trebuie să facem cu adevărat este să găsească un loc de muncă, care are nevoie de prelucrare şi pentru a obţine informaţii. Cum ne-am face acest lucru? Ei bine alege criteriile noastre de selecţie de locuri de muncă şi caute locuri de muncă, în SQL am făcut cu următorul text:

  1. Luaţi orice locuri de muncă care nu sunt marcate ca fiind complet, dar de la muncitor noastre şi le reseta (substitut __ME__ cu un identificator mai simplu, ar fi adresa IP):
      UPDATE `de locuri de muncă` SET `stare` = 0 WHERE `stare` = 1, I `started_by` = __ME__; 
  2. Folosind criteriile noastre de selecţie de locuri de muncă, selectaţi un loc de muncă şi spune că sistemul de control al acestui muncitor se ocupă cu ea:
      UPDATE `de locuri de muncă` SET `stare` = 1, `started_by` = __ME__, `started_at` = NOW () WHERE `statutul` = 0 sau
     (`Stare` = 1, I `started_at`> DATE_SUB (NOW (), INTERVAL X ORA)) ORDER BY `id` ASC; 

    Prin hapsân de locuri de muncă care nu s-au întors rezultate în suma X de timp ne asigurăm că toate locurile de muncă sunt difuzate în eventualitatea unui lucrător crashing sau mergi AWOL.

  3. Înainte apuca detaliile de locuri de muncă, urmată de înregistrări înşişi:
      SELECT * FROM `de locuri de muncă` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

La finalizarea de locuri de muncă ne introduce evidenţelor noastre rezultat şi marca locul de muncă ca fiind completă. Amintiţi-vă cum de locuri de muncă se poate suspenda / relua în orice moment, permite o robusteţe în script-ul. S-ar putea fi faptul că sarcina suspendă jumătate prin actualizarea sistemului de control de locuri de muncă, astfel încât verificarea numărului de înregistrări într-un loc de muncă şi numărul de rezultate salvate înapoi la sistemul de control de locuri de muncă ar fi o mişcare înţeleaptă.

În plus, în timp ce acest lucru demonstrează modul de locuri de muncă pot fi selectate şi gestionate dintr-un cadru SQL-interogare ar trebui să fie într-adevăr abstracţie de control al dvs. de locuri de muncă, astfel că, dacă vă decideţi pentru a comuta la folosind un serviciu web, un sistem de fişiere bazat, XML , sau orice alte Numărul de sisteme de aceasta nu va afecta codul de mai sus l.

De locuri de muncă de configurare

Aspectul următoare să ia în considerare este dimensiunea de locuri de muncă şi de configurare. Prin joc cu configuraţie de locuri de muncă, putem asigura un echilibru excelent între viteză, replicare proces, şi fiabilitate. Ia-o scenarii of cuplu:

  1. Locuri de munca dura 1 zi în fiecare să curgă: Acest lucru înseamnă că muncitorii dvs. nevoie de 15 de zile pentru a procesa fiecare loc de muncă (amintiţi-vă de 10% din puterea de 2/3rds de timp). Acest lucru nu este în mod evident un înţelept de configurare, dimensiunea de locuri de muncă este mult prea mare! Ar fi nevoie de cel puţin dublu faţă de timp pentru a obţine un loc de muncă prelucrate trebuie lucrătorul iniţială merge AWOL (timp pentru a ridica că nu a returnat un rezultat plus timp de reprocesare). Într-un ideal ai avea cel puţin un loc de muncă pur complet eliminate până la sfârşitul fiecărei perioade de ralanti lung, astfel încât puteţi păstra locurile de muncă bifarea peste şi în cel mai rău caz, un loc de muncă ar dura două zile proces ar trebui să meargă primul care lipsesc.
  2. Locuri de munca dura 1 minut pentru a rula: Acest lucru înseamnă că muncitorii dvs. dura aproximativ 15 minute pentru a rula fiecare loc de muncă. Deşi acest lucru poate părea iniţial ideale, puteţi câştiga de prelucrare a lucra suplimentar în timpul prânz, pauzele de cafea, întâlniri, etc acest scenariu pune presiune pe alte zone ale sistemului dvs. şi a introduce propriile sale probleme. De exemplu, în primul rând de instalare / prelucrare a raportului de timp este de gând să meargă în jos dreapta, pierde, prin urmare, eficienţa sistemului. Reteaua ta va fi de streaming în mod constant de informaţii de locuri de muncă la personalul diferitelor frustrant lucrătorilor care sunt dong lor de zi cu zi de lucru. Eşti, de asemenea, va pune presiune mai mult pe server-ul dvs. de procesare de locuri de muncă, deoarece trebuie să farfurie o mulţime şi o mulţime de piese mici de lucru în mod regulat. În sfârşit, în această situaţie în cazul în care server-ul dvs. de locuri de muncă se duce în jos ai de gând să creeze un jurnal din spate foarte mare de sarcini neîndeplinite întrucât mai mare de locuri de muncă ar putea de prelucrare a continuat blissfully constienti de faptul ca serverul a fost de locuri de muncă se confruntă cu dificultăţi.

În realitate, nu va fi nici o configuraţie ideală pentru configurarea reţelei dumneavoastră, mult depinde de resursele disponibile, tipuri de locuri de muncă, cerinţele de locuri de muncă timp de răspuns, capacitatea reţelei, şi aşa mai departe. Toate acestea, unele linii directoare ar fi:

  • Dimensiune de locuri de muncă, astfel încât fiecare lucrător poate obţine prin intermediul a cel puţin 3-4 locuri de muncă într-o perioadă de 15 ore (cea mai lunga perioada de timp probabil inactiv)
  • Joaca-te cu dimensiunea de locuri de muncă, astfel încât timpul de setare devine destul de nesemnificativă în comparaţie cu timpul de procesare (având în vedere punctul de mai sus).
  • Dacă un loc de muncă nu completează în dubla cantitatea de timp (poate mai putin), te aştepţi să-l completeze presupună că AWOL sa dus şi a începe de prelucrare cu un alt muncitor. Aceasta înseamnă că va trebui să aşteptaţi până la de trei ori lungimea normala a unui loc de muncă pentru ca acesta să completeze (eventual mai mult în cazul în care nu reuşeşte de locuri de muncă ulterioare). Este posibil să doriţi să reducă acest timp, dar aveţi grijă să nu-l reducă prea mult cum ar putea să înceapă duplicarea sarcinilor de procesare în mod regulat.
  • Locuri de munca trebuie să fie independentă de cerinţe în afara cât mai mult posibil. Serverul de locuri de muncă, de exemplu, ar trebui să fie doar contactat la începutul şi sfârşitul fiecărui loc de muncă.
  • Nu satura reţeaua dvs., acest lucru va avea două efecte negative, personalul zi va găsi cu ajutorul reţelei de frustrant şi probleme pot fi cu experienţă, cu conexiuni de sincronizare un problemă, care va primi doar mai rău în timp ce grila de scară.
  • Asigurarea de locuri de muncă poate rula pe muncitorii. Dacă locurile de muncă devin prea mari de memorie de locuri de muncă sau de spatiu pe disc intensiv va începe oprirea si singurul lucru pe care veţi observa este o scadere a numărului de locuri de muncă prelucrate cu nici un motiv real.

Rezultatele Trimiterea unui loc de muncă

Atunci când prezintă rezultatele unui loc de muncă este important să se verifice că rezultatele nu au fost prezentate de către un alt lucrător, în special în cazul în care lucrătorul curent a fost inactiv pentru mai mult timp.

Când rezultatele sunt transmise a se asigura că numărul de rezultate coincide cu numărul de înregistrări în cadrul de locuri de muncă.

După cum sa menţionat anterior, şi nu poate fi peste accentuat, construi toleranta la defecte în regăsire de locuri de muncă şi prezentarea rezultatelor. Lucrătorilor poate (şi cel mai probabil vor) intra în modul de suspendare de la cel mai incomod de ori şi acest lucru trebuie să fie satisfăcute. De asemenea, încă o dată, abstractizare departe prezentarea de rezultate va ajuta satisface modificări viitoare a sistemului de control de locuri de muncă mult mai uşor pentru a face faţă.

Rezumat

În acest section am uitat la ceea ce un server de control loc de muncă trebuie să facă şi cum să obţineţi un sistem foarte de bază instituit. Am discutat despre modul în care pentru a prelua un loc de muncă din sistemul de control şi de cele mai bune modalităţi de a configura de locuri de muncă pentru a obţine cele mai multe nostru de sistemul dumneavoastră reţea de birou. Pentru a termina, un paragraf sau două în prezenta rezultatele inapoi la server de control de locuri de muncă a fost susţinută.

  • Un server de control de locuri de muncă gestionează locurile de muncă şi se asigură că toate unităţile de muncă sunt completate
  • Prin abstractizare locul de muncă select / Rezultate depunere putem schimba tehnologia de server de control fără probleme mult
  • Configuraţi de locuri de muncă pentru a vă asigura că acestea sunt rulate rapid şi eficient, fără a pune prea multa presiune pe infrastructura de reţea, şi fără duplicarea sarcinilor de procesare în mod regulat.
  • Asiguraţi-vă că vă construiţi toleranţa la erori şi checking eroare în rutina dvs., lucrătorii pot suspenda şi relua şi cel mai incomod de ori. Amintiţi-vă pentru a verifica dacă rezultatele au fost deja transmise de un alt lucrător.

Dată următoare

În partea a 3- vom crea masini virtuale nostru de procesare şi a înfiinţat maşinile noastre ferestre să devină inactiv timp lucrătorilor.

Oficiul pentru Grid Computing utilizând medii virtuale - Partea 5

Prin , vineri 04 decembrie 2009 11:03

Introducere

Eu lucrez intr-o companie în care vom rula multe locuri de muncă lot de prelucrare a milioane de înregistrări de date în fiecare zi şi m-am gândit recent la toate maşinile care stau în jurul valorii de fiecare şi în fiecare zi, nu face nimic pentru mai multe ore. Nu ar fi bine dacă am putea folosi aceste maşini pentru a consolida puterea de procesare a sistemelor noastre? În acest set de articole am de gând să se uite la beneficiile potenţiale ale angajarea unui birou grilă utilizând medii virtualizate.

În Partea a 4- ne-am uitat la utilizarea instrumentelor de a ne asigura că rulaţi ultima versiune a surselor de cod şi de date, astfel încât rezultatele obţinute sunt intotdeauna la curent cu cele mai recente informaţii de afaceri şi logică.

Pre-Deployment

Înainte de implementarea sistemului de reţea, dacă există un lucru pe care il faci si un singur lucru e sistemul de referinta actuale! Indiferent de ceea ce spun colegii despre cât de mult de lucru suplimentar sistemul dvs. este de gând să faci dacă nu aveţi numere înapoi asta garanţii dvs. nu sunt nimic. Deci,

  • cât de multe înregistrări puteţi proces în prezent? Pe zi? Per ore?
  • Cât timp durează de obicei, la rândul său, în jurul valorii de un loc de muncă?
  • Cât de mult mai mult capacitatea de ai?

Există, de asemenea întrebări suplimentare:

  • Dacă serverul dvs. de prelucrare (sau unul dintre serverele de prelucrare a dvs.) se duce în jos cum va afecta acest lucru capacitatea ta, vei fi olog?
  • Avantaje Ce speraţi / asteptati pentru a obţine de la un sistem de reţea?
  • Sunt maşini de birou capabile să ruleze de locuri de muncă?
  • Sunt dvs. (sau de locuri de muncă puteţi fi convertit) pentru a lucra în acest stil de funcţionare?

Ultimul punct major este de a lua timp cu privire la orice modificare majoră ca aceasta. Actualizaţi codul de procesare pentru a lucra folosind noua metodologie, de referinţă din nou. Posibil configura server-ul dvs. de procesare pentru a rula o maşină virtuală, după toate serverul de procesare va fi doar un alt muncitor (doar un foarte puternic unul relativ). Se lasă să se stabilească noul proces.

Deployment

Sugestia mea ar fi să pop în birou un week-end efectua toate instalaţiile şi de configurare. Faceţi acest lucru chiar înainte de un sejur de două săptămâni, şi lasă atât de sărac alte cap pentru a face faţă consecinţelor ... poate nu ...

De implementare pentru un sistem ca acesta trebuie sa fie lenta. În ciuda fiind relativ simplu pentru a configura acest sistem va afecta infrastructura de birou întregul (şi unul digital). În primul rând, lansarea la un cuplu de masini la un moment dat, a monitoriza traficul în reţea, modul în care gazdele lucrătorul efectuează pe o bază de zi cu zi. Posibil să fie nevoie să-şi modifice configuraţia de locuri de muncă, ca răspuns la constatările dumneavoastră.

Odată ce sistemul a stabilit cu câteva maşini (sa zicem 10% din toate maşinile de birou, şi anume 5) ţine de monitorizare a traficului în reţea şi a maşinilor-gazdă performance. de referinţă următoare din nou, ar trebui să fie acum de prelucrare de locuri de muncă cu 33% mai mult decât primul benchmark. Verificaţi acest lucru este asa, sau că sunteţi cel puţin în acest stadion. Dacă nu, investiga ceea ce se întâmplă înainte de a trece mai departe. Se repetă acest ciclu până când fericit avea toate maşini de birou care rulează fără sacrificarea performanţei individuale de maşină sau de rectificat de reţea la un impas.

În toate timpurile, ţine de benchmarking, chiar şi după ce toate implementarile sunt realizate. Verificaţi modul în care noi actualizări cod afecta viteza sistemului dumneavoastră, verificaţi toţi lucrătorii sunt de raportare şi de prelucrare în locuri de muncă. Încet (foarte lent) increment configuraţie de locuri de muncă pentru a obţine cele mai bune de la muncitori şi de reţea.

Opreste-te!

Ce se întâmplă dacă doriţi să opriţi lucrătorilor de la care rulează la un moment dat? Acestea sunt toate acolo de funcţionare, de regenerare, şi încearcă cele mai bune lor de a prelucra date, cum ar insecte foame. Răspunsul poate părea evident, dar merita sa adaugand doar în cazul în trecut cu vederea ei. Pur şi simplu editaţi script-ul de prelucrare cu un exit (0) or die () sau o altă declaraţie pentru a distruge munca de procesare. Un motiv important de ce vom încerca mereu să actualizeze la script-ul mai recente procesare, înainte de orice fugi!

Demonstraţie Sistem

Pentru a scrie acest set de articole scurte am creat o grilă foarte mic pentru a demonstra tehnologii şi metodologii. Am citit o mulţime de articole, tutoriale, si folosite diferite instrumente pentru a seta şi a monitoriza ceea ce se intampla. In nici un caz am ieşit şi saturate cu un birou întreg cu trafic si nici nu am avut acces la un PC obişnuit membri ai personalului pentru a vedea cât de performanţă gazdă a fost afectată.

Sistemul meu demonstraţie a fost într-adevăr foarte umil. Am folosit pe ecranul meu regulat instituit ca un server de control loc de muncă. Pe aceasta am avut instalat MySQL server instalat configurat ca un maestru în replicare, PHP , Â şi SVN legate prin Apache (pentru acces prin intermediul lucrător VM).

Am creat apoi o maşină de lucrător CentOS pe VirtualBox pe un copil de 6 ani pentru Windows XP laptop. Am configurare sarcinile programate după cum se specifică după copierea VM pe aparat şi lăsaţi-l să meargă.

Maşină virtuală a fost înfiinţat cu PHP, subversiune, şi mySQL. Am verificat-o sucursală numit "lucrător" de la meu de control depozit de locuri de muncă serverelor şi a făcut-vă că ar putea fi actualizat cu ajutorul "svn update '. Apoi am de configurare MySQL ca un sclav şi a verificat că datele au fost reproduce de la MySQL pe serverul de control de locuri de muncă până la VM lucrătorului. După toate acestea am de configurare script-ul bash şi locuri de muncă cron.

Script-ul meu de prelucrare, practic a fost de-a lungul liniilor de acest lucru (chestii foarte simplu):

  • Citiţi în câmpul Nume
  • Numărat numărul de nume similare, într-un tabel de la sursa de date a avut loc la VM
  • Numărat numărul de nume ca mai sus, dar divizarea numele de spaţii (de exemplu, prenume, Orientul Mijlociu, prenumele)
  • Repetat acest proces de 1.000 ori

Fiecare loc de muncă a avut aproximativ 20 de minute pentru a rula. La un moment dat am deschis mai multe copii ale VM lucrător pe laptop Windows şi privit de locuri de muncă să fie verificate în afara de fiecare dintre adresele IP lucrătorului. În acest moment am confirmat, de asemenea, că replicarea automat repornite.

Lăsând laptop la ralanti a dus la un lucrător de plecare pentru procesul de locuri de muncă de la serverul de control de locuri de muncă. Atunci când reluarea utilizare laptop a existat o întârziere de aproximativ 30-60 secunde, acest lucru este o valoare justă de timp şi de personal ar trebui să fie conştienţi de faptul că maşina lor se poate opri pentru un timp scurt, atunci când se întorc în maşină. Maşini mai noi nu pot avea o pauză de atât de mult. Beneficia de suma de prelucrare efectuate de către aceste utilaje în timpul perioadelor de repaus ar fi mult mai mari decât faptul că membrii personalului fi nevoie să aştepte o perioadă scurtă (să zicem 1 minut) la sosirea la maşinile lor de-o dimineata (I, aşteptaţi frecvent mai mult că acest lucru pentru un Windows Defender actualizare să aibă loc), cu condiţia ca acestea s-au făcut conştienţi de acest lucru (timp util pentru a apuca o cafea dimineata!).

În general Am convingerea că am demonstrat tehnologiile care ar putea fi utilizate pentru a crea un astfel de sistem. Am arătat că un astfel de sistem nu funcţionează pe o scară de (foarte) mici şi cu unele mai experimentat ar putea fi extinsă utilizeze resursele de maşini de un birou lui. Dacă eu nu ajung la punctul de a face acest lucru, aş fi foarte interesat să ştiu / vedea atunci când altcineva face.

Concluzii / evaluare

Următorul pas ar fi evident pentru a obţine de fapt, un exemplu din lumea reală şi să înceapă să implementeze un sistem, cum ar fi acest lucru într-un mediu de birou şi să vedem ce se întâmplă. Solicitarea o afacere să se angajeze la aceasta fără o companie traseu aprins pentru a demonstra tehnologia şi eficienţa poate fi un pic dificil. Grid / Distribuit de calcul este foarte popular este unele cercuri şi are unele aplicatii mari (BIONC, SETI @ Home, Folding @ Home, etc). Nu am, totuşi, găsi o scară mai mică şi a sistemului de simple cum ar fi acest lucru, în căutările mele, care ar putea fi derulat într-un mediu de birou.

Am creat un sistem practic gratuit, folosind software cu sursă deschisă şi cea mai mare parte instrumentele disponibile în aproape orice birou. Tehnologii au fost demonstrate practic şi arată pentru a efectua şi de a lucra ca de aşteptat. Sperăm că am arăta că nu prea mult cu munca si cu o configurare foarte simplu se poate implementa un grid computing birou sistem care este puternic, ieftin, Â şi scalabilă toate în acelaşi timp.

Odată ce un sistem este de până şi să fie difuzate nu există aproape nici un capăt la suma de personalizare şi îmbunătăţirile pe care le pot face. De exemplu, statistici / benchmarking poate fi uşor adăugat arată în valoare de un astfel de sistem în fiecare zi. Maşini noi pot fi adăugate rapid şi uşor ca şi atunci când sosesc cu upgrade-uri pentru hardware-ul existent susţinerea voastră putere de procesare.

Sper că v-aţi bucurat de lectură această serie de articole şi a dat de gândit pe care rulează un sistem de reţea de birou. Soluţia prezentate aici nu va funcţiona neapărat în toate situaţiile, dar ar trebui să fie adaptabile pentru a vă permite pentru a obţine prelucrare de date efectuate folosind o soluţie ta.

Vă rugăm să nu ezitaţi să-mi trimiteţi orice comentarii, corecturi, sau îmbunătăţiri şi voi face tot posibilul pentru a păstra acest articol actualizat pentru a se potrivi.

Zend Framework: Fundamentals - opinie

Prin , Sâmbătă 28 noiembrie 2009 22:42

Angajatorul meu recent plătit pentru un grup de dezvoltatori pentru a ne lua Zend Framework: Fundamentals Desigur, aici voi rezuma gândurile mele şi opinii cu privire la cursul pentru alţii. Pentru cei care doresc pentru a economisi timp, aici e rezumatul meu:

Pentru dezvoltatorii care nu au avut timp să se uite la Zend Framework acest curs (Zend Framework: Fundamentals) oferă o bună imagine de ansamblu a cadrului de introducerea sa domeniile-cheie şi furnizarea de informaţii suficiente pentru a continua. Pentru cei care au petrecut timp uita la cadru si au urmat una sau două tutoriale acest curs nu oferă mult dincolo.

Fundal

Am fost un PHP pentru dezvoltator în jurul valorii de 5-6 ani, si au inceput sa lucreze cu Zend Framework pe o bază componentă în ultimele 6 luni. Am dezvoltat şi / sau a fost un dezvoltator de o serie de mici Zend Framework MVC sites. Voi fi sincer, nu am avut o mare cantitate de expunere la alte cadre dintr-un punct de codare de vedere, dar au petrecut mai multe oră cercetarea site-urile de proiect şi evaluarea them. cadru şi comunitatea înconjurătoare Zend Framework este destul de interesant şi nu par a fi posibilităţi uriaşe în cazul în care sa mergi.

Despre curs

Cursul este livrat de peste 9 două oră sesiuni WebEx (cu o pauză de 10 minute în mijloc). Timp este petrecut trece printr-un set de diapozitive furnizate de Zend cu discuţia în orice moment. Aveţi posibilitatea să utilizaţi un microfon pentru a vorbi la instructor, dar sa fiu sincer nu am văzut pe nimeni utilizare ceva mai mult decât fereastra de chat. În plus, o VMWare Ubuntu este cu condiţia ca are exemplul de cod şi proiecte înfiinţat o versiune un proces de Zend Studio. Discuţiile Cursul lider la participanti, fie peste o soluţie integrată VoIP, sau puteţi apela în utilizând una dintre dial la nivel mondial în mai multe numere.

În timpul cursului materialul constă într-o scurtă prezentare a cadrului şi modelul MVC înainte de a merge într-o aplicaţie eşantion cartea de oaspeti. Discuţia a demonstrat procesul de bootstrap, Zend_Application, Mese Db, acces baze de date, formulare, filtrare, ACL, Validarea, etc, etc acoperind practic toate subiectele ai nevoie pentru a obţine un site de bază până rulează o tot timpul, oferindu-vă instrumentele necesare pentru a du-te şi să obţină mai avansate, în cadrul (deşi această sumă pentru a "vedea site-ul" o mare parte din timp).

Timpul este dat de Codul de la câteva exemple, şi să dezvolte "Carte de Oaspeti" şi simpla cerere "wiki". Personal, am simţit că furnizarea codului sau fiecare app şi apoi cerându-ne să dezvolte ceea ce a fost în esenţă, alături de o copie nu a furnizat într-adevăr o experienţă de învăţare bună. Aş fi preferat să dezvolte o cerere similară, dar nu identice. la cererea de exemplu, cu avantajul de a avea un ghid pentru a se referi la. Alternativ construirea aplicaţiilor de la zero cu demonstrativ ar fi, eventual, a condus la mai multe întrebări despre ce şi cum, oferind astfel o mai bună înţelegere a cadrului, după tot ce se poate căuta după specificul cursului.

Ultima prelegere a constat de lucru privind aplicarea wiki cu ajutorul / îndrumare de la instructor. Dupa feedback-ul curs a fost luată, a fost subliniat de mai multe ori prin cursul pe care ia Zend feedback-ul foarte în serios, de fapt, se pare că versiunea noastră a cursului a fost destul de nou. Unii dintre dezvoltatori de altă natură în compania va lua cursul în curând asa ca va fi interesant pentru a vedea dacă sa întâmplat acest lucru.

Stilul Cursul a fost informal, permis de feedback-ul şi colaborare între participanţi şi instructor. Liderul Cursul a fost prietenos, abordabil (adrese de email au fost împărtăşite de întrebări), şi în timp ce prezentarea sa de la slide-uri a fost un pic şubredă părea pe deplin competente în cadrul. El a fost în mod clar pe cineva care a folosit-cadru în mod regulat, mai degrabă decât pe cineva care este învăţat să predea cursul, mi-a placut experienta "lumea reala", în această privinţă.

Senzaţie de ansamblu

În unele privinţe am gasit desigur, o pierdere de timp, în altele a fost foarte la îndemână. Să sperăm că voi primi în mod clar motivele mele, şi să furnizeze poate unele alimente de gândire sau de feedback (ştiind mine acest lucru este puţin probabil!).

Pentru mine acest curs a avut ca scop la un nivel prea scăzut. Având în trecut prin ghidul de QuickStart, citeşte Rob Allen lui Zend Framework în acţiune, şi a lucrat cu cadru un pic nu am primit nimic prea mult. Mi-ar plăcea de curs pentru a ridica de la sfârşitul QuickStart şi de a dezvolta abilităţi suplimentare.

Acestea fiind spuse, titlul cursul se afirmă în mod clar "Zend Framework: Fundamentele" şi în acest aspect cursul atinge ceea ce îşi propune să facă. Alţi membri ai echipei de dezvoltare care nu au petrecut timp în căutarea într-un cadru finit fiecare sesiune cu entuziasm şi au adresat întrebări, care a fost cu adevarat frumos sa vezi.

Toţi nu a fost pierdut, a fost bine să-şi petreacă timpul de confirmare a detaliilor de bază ale cadrului şi a ajunge la a pune o pereche de întrebări în zonele în care nu am fost de 100%. A fost, de asemenea, momentul în care am ajuns să se aşeze în fiecare zi şi să se gândească codificare utilizarea cadrului şi proiectele de viitor, ceva ce nu ar fi fost în măsură de a face altfel (va puteti imagina compania ta de acord cu faptul că:?)). Nu in ultimul rand, de asemenea, veţi obţine un certificat de frumos de la Zend să spun că aţi participat la curs (deşi prin e-mail).

Zend Framework de certificare

Aceasta a fost o întrebare care venea în minte în cursul, mi-ar pregăti pentru certificare? Uşor de rapid, este un răsunător nr. Instructorul Cursul a fost destul de clar pe care cu sfaturi suplimentare pentru care certificarea ar trebui să fie utilizaţi într-adevăr cadrul într-o zi de zi si sa se simta foarte confortabil şi încrezător în utilizarea acestuia şi metodologiile.

Rezumat

Având în vedere tot ceea ce am scris mai sus, voi rezuma totul în două puncte bullet uşoară:

  • Nou la Zend Framework: Acest curs face exact ceea ce te-ai astepta, vă oferă o introducere frumos a cadrului şi o pregătire bună la elementele de bază de la care puteţi construi. Cursul pare să genereze interes şi entuziasm pentru cadrul printre dezvoltatorii.
  • De second hand Zend Framework: În timp ce era frumos la ţărm o parte din elementele de bază foarte m-am simţit timp, efort, şi de fonduri pentru a ţine cursul ar putea fi de mai bine cheltuite în altă parte. Acesta va fi frumos să see Zend a crea un nou curs nivel superior pentru a lua dezvoltatorii la nivelul următor. - Cel puţin la standard de certificare şi de dincolo pentru că aş semna imediat.

Html Tabelul Generarea Class (HtmlTable.php)

Prin , marţi 05 mai 2009 09:11

Am nevoie pentru a genera un tabel HTML din PHP date pentru un proiect care am fost de lucru pe. Din păcate, după un pic de cu Google nu am putut găsi într-adevăr ceva care a fost potrivit, aşa că am decis să creeze propria mea.

Îmi dau seama că acest lucru nu poate fi clasa cea mai bună masă generatoare de vreodată şi există, probabil, câteva bug-uri încă în ea, dar aş prefera să împărtăşiţi şi dacă cineva doreşte o versiune mai bună mă uit în ea:) Am vrut iniţial să creeze un tabel construit de obiecte separate, de exemplu, obiect de celule, obiect rând (construit de obiecte de celule), dar am realizat aeriene de pe aceasta ar fi ENORM! Aşa că m-am întors la o configurare matrice.

Clasa va calcula numărul maxim de coloane folosite în antet, subsol, sau un organism şi să scrie faptul că numărul de coloane. Anteturi, subsoluri şi Legendă sunt opţionale. Atributele sunt compus dintr-un tablou în cazul în care cheia este numele atributului şi este valoarea atributului. Atributele sunt aplicate la tabelul tag-ul (pe crearea de masă - clasa de iniţializare), rânduri tabel (matrice [rand] [atribut]), şi celule de tabel (matrice [rând] [coloana] [atribut]), acest lucru este valabil pentru anteturi, subsoluri, şi tabelul de organism.

Exemplu

Intotdeauna mi-am găsi cel mai bun mod de a privi ceva este de a folosi un exemplu aşa că aici vom merge:

 $ Tabel = new HtmlTable (array ('clasa' => 'Sortable ",
                 "Stil" => 'lăţime: 550px ;'));
 $ Header [0] [0] ['conţinut'] = 'ID-ul';
 $ Header [0] [1] ['conţinut'] = 'Titlu';
 $ Header [0] [2] ['conţinut'] = 'Data';
 $ Header [0] [3] ['conţinut'] = 'Site-ului';

 $ Tabel-> addHeader ($ antet);
 $ I = 0;
 foreach ($ newsList AS $ newsItem) {
 $ ItemLink = "{$ newsItem ['title']}";
 $ TableBody [$ i] = array (0 => array ('conţinut' => $ newsItem ['id'],
 'Atribute' => array ("stil" => 'font-Greutate: bold ;')),
 1 => array ('conţinut' => $ itemLink),
 2 => array ('conţinut' => $ newsItem ['date_posted']),
 3 => array ('conţinut' => $ newsItem ["sit ']));
 $ I + +;
 }
 $ Tabel-> addBody ($ tableBody);
 echo $ tabel-> drawTable ();
ID-ul Titlu Data Site-ul
9 Ştiri 1 2009-04-04 10:40:00 numele site-ului
10 News 2 2009-04-04 12:44:11 numele site-ului

Şi HTML arata astfel:

  =  "sortable" style =  "width: 550px;" > <Clasa table = "Sortable" style = "width: 550px;">
 <Thead>
	 <Tr    >
		 <-Lea    > ID-ul </ th> 
  <-Lea    > Titlu </ th>
		 <-Lea    > Data </ th>
		 <-Lea    > Site-ul </ th>
 </ Tr>
 </ Thead>
 <Tbody>
	 <Tr    >
		 =  "font-weight: bold;" >9</ td > <Td style = "font-greutate: bold;"> 9 </ td> 
		 <Td    > Stiri 1 </ td> <td    > 2009-04-04 10:40:00 </ td> <td    > < tr > Numele site-ului </ td> </ tr> <tr    = "font-weight: bold;" >10</ td > < td > <Td style = "font-greutate: bold;"> 10 </ td> <td    > News 2 </ td> 
  <Td    > 2009-04-04 12:40:00 </ td>
		 <Td    > Numele site-ului </ td>
 </ Tr> 
  </ Tbody>
 </ Table> 

Cod

HtmlTable.php
Dacă aveţi orice comentarii, vă rugăm să le facă de mai jos, ar fi minunat să auziţi ceva. Dacă ajunge folosindu-l, de asemenea, permiteţi-mi spuneţi şi voi extinde în viitor:)

Jurnal de PB folosind Zend Framework

Prin , marţi 14 aprilie 2009 21:06

Am reuşit să obţină un site în sus şi să fie difuzate cu Zend Framework , totul este frumos de logare pentru Firebug / FirePHP astfel urmatorul pas a fost să vă conectaţi la PB. De asemenea, am vrut să vă conectaţi anumite informaţii suplimentare, utilizând un astfel de cadru în calitate de agent de utilizator, data şi ora, pentru a primi si post variabile. Deci, pentru a extinde manualul un pic aici ce am făcut:

// Set up logging to DB
$db = Zend_Registry ::get('dbAdapters');
$db = $db['general'];

$ ColumnMapping = array ("prioritate" => "prioritate",
"Mesaj" => "mesaj",
'Datetime' => 'timestamp ",
'User_agent' => 'user_agent ",
'Get_vars' => 'get_vars ",
'Post_vars' => 'post_vars ",
"Sit '=>' site '
);

$ WriterDb = new Zend_Log_Writer_Db ($ db, 'error_logging ", $ columnMapping);
$ Log = new Zend_Log ($ writerDb);

$ Logger-> setEventItem ('datetime', data ('Ymd H: i: s'));
$ Logger-> setEventItem ('user_agent ", $ _SERVER [' HTTP_USER_AGENT ']);
$ Logger-> setEventItem ('get_vars ", print_r ($ _GET, true));
$ Logger-> setEventItem ('post_vars ", print_r ($ _POST, true));
$ Logger-> setEventItem ("sit", site);

$ Logger-> info ("mesaj informaţional ');

În cazul în care cheile în array $ columnMapping sunt nume de coloana mea. "Prioritatea" şi "mesaj" sunt înţelese de către Zend_Log_Writers dar câmpurile suplimentare au fost adăugate să-mi dea unele informaţii suplimentare.

Evident, acest lucru presupune că aţi logarea de lucru, utilizând una dintre altor scriitori prima:)

Regatul Unit Nume director şi aplicaţia Facebook

Prin , vineri, 10 aprilie 2009 09:33

Unul dintre lucrurile distractive care am fost implicat în acelaşi timp de lucru pentru Tracesmart este directorul de nume . Practic am luat baza noastră de date informaţii uriaşe şi a scos un teanc mare de statistici cu privire la diferite nume.

Procesul este tot un mare efort de SEO, în scopul de a atrage mai mult trafic pentru site-ul, dar oferă de asemenea, unele informaţii interesante şi statistici nume.

Iată un exemplu pentru numele meu Lloyd Watkin , sau cred că mai corect Steven Watkin . Ia un minut pentru a căuta numele tau pe site-ul Tracesmart, ar putea fi interesant;)

Avem, de asemenea, statistici nume de date privind directorul de numele paginii pe care vă spune ce nume au fost cautate si cat de recent. Ei destul de interesant pentru a vedea nume de oameni celebri lui acoperi până statistici atunci când acestea apar în ştiri. Un exemplu recent este cel al Liam Neeson , care sotia lui a murit dintr-un accident de schi recent, deşi, evident, oamenii nu sunt destul de dreapta pe ortografie (prin urmare, numărul imens de hit-uri de pe acest nume) - Liam Nilson .

Aplicaţia Facebook

Odata ce directorul nume a fost creat ne-am stabilit cu privire la crearea unui aplicatie Facebook care noi duely numit " My Name ". Aplicaţia Facebook este o extensie a directorului numele şi oferă unele statistici suplimentare. Pentru a adăuga directorul numele la contul dumneavoastră facebook vă rugăm să vizitaţi:

http://apps.facebook.com/my-name/

Domenii cu handicap formular nu sunt transmise ...

Prin , joi, 04 septembrie 2008 11:01

Ca o notă rapidă, ca parte a în curs de desfăşurare imobiliară software-ul agenţiei de proiect m-am întors la intrarea pe data de editare în cadrul sistemului. Acum, în loc de a permite utilizatorilor să intre în orice pic vechi de text le-am trecut pe la o Javascript data / ora selectorul (pe termen scurt), care permite utilizatorului să "aleg" şi data şi ora de la o fereastră pop-up.

Acum, pentru SYSTEMA vechiul meu ar selectorul de pop-up atunci când utilizatorul a făcut clic pe câmpul de introducere . Totuşi, acest lucru ar permite utilizatorului să ignore câmpul de text şi încă mai merge şi tipul de orice lucru vechi în domeniu. Acest lucru nu a fost ideală. Aşa că soluţia mea a fost să " dezactiva "câmp de formular şi a pus un interval de lângă ea cu un onclick eveniment de asteptare data / selectorul de timp. Acest lucru a însemnat că ghidul a fost aproape fortat sa foloseasca la data frumos / selectorul de timp, astfel încât datele ar merge în cu formatul corect (cu toate că încă mai trebuie să fie validat!).

Aşa că am început trecerea mea frumos formatate data-ora (e) prin formularul de picking şi încearcă să le ridice cu PHP e $ _GET sau $ _POST variabile. Câmpuri Unfortunately'disabled "nu sunt trecut prin completarea de formulare Acest lucru a fost foarte enervant. Soluţia a fost să permită elementul de intrare folosind javascript în cazul în care formularul a fost prezentat cu ajutorul onsubmit eveniment.

Aceasta a însemnat că datele din formular a fost trecut prin astfel cum este necesar si a fost frumos formatat gata pentru validare ... Â

Taste Array Cautati si Meciuri Întoarcere

Prin , miercuri, 13 august 2008 16:26

Am avut nevoie să căutaţi prin intermediul unei matrice şi returnează elementele care au cheile care se potrivesc cu un termen de căutare. Asa ca m-am gândit parts.

"W hy am nevoie de acest lucru?" Ar fi probabil prima întrebare te-ai întreba, şi dacă am vrut să caute printr-o serie pentru toate elementele care referitoare la dimensiunile unui element, atunci aş putea să scoateţi tastele corespunzătoare de către folosind această funcţie mic:

 <? function searchArrayKey($array,$search) {  $search = strtolower($search);  if (is_array($array))  {   foreach ($array as $key => $data)   {    if (strpos(strtolower($key),$search) === 0) { $returnArray[$key] = $data; }   }   return $returnArray;  } else  { // User hasn't subimitted an array...   return false;  } } ?> 

Deci, de exemplu, dacă am vrut pentru a căuta o serie de poziţia de date pentru datele dimensiunea apoi m-am putut face următoarele (şi de imprimare pentru a ecran probabil):

 $dimensions = searchArrayKeys($itemArray,'dimension'); 

Ceea ce ar reveni ceva de genul:

 print_r($dimensions); Array ( [dimension_height] => 20 [dimension_width] => 30 [dimension_depth] => 40 ) 

Php.ini particularizate cu Plesk

Prin , miercuri, 13 august 2008 15:53

Avem un server dedicat cu ukFast  pe care le executa o serie de domenii care exista pe servere virtuale care rulează sub Plesk . Oricum, în cele mai multe dintre domeniile mele vreau să le ascundeţi departe avertismente şi pentru securitate menţine erori la fişierele jurnal, însă pe unele dintre domeniile mele (cum ar fi cele am în curs de dezvoltare privind) Vreau să arăt în fiecare avertisment puţin urât şi de eroare care apare.

Dacă-mi editez meu PHP INI ".> php.ini acest domeniu afectează fiecare pe server nu, o idee bună în special atunci când mai multe site-uri sunt pe deplin vii versiuni  Deci, în scopul de a obţine în jurul valorii de aceasta aveţi nevoie pentru a pune un fisier numit vhosts.conf în directorul conf dumneavoastră, de exemplu, /var/www/vhosts/<my_domain>/conf/vhost.conf .

După ce aţi adăugat codul suplimentar, din nou, de exemplu am inclus,

 php_value error_reporting E_ALL php_value display_errors On 

urmată de rularea următoarea comandă (acest reconfigurează toate domeniile dvs. sale doar mai repede lazier decât să tastaţi în numele de domeniu ,

 # /usr/local/psa/admin/bin/websrvmng -a 

Daca te simti un pic mai agil, atunci aveţi posibilitatea să tastaţi întotdeauna versiunea completă, care este,

 # /usr/local/psa/admin/sbin/websrvmng -u --vhost-name=<my_domain> 

După această comandă dacă te uiţi la httpd.include fişier, vor vedea că httpd.include dvs. va avea o linie includ vhost.conf pentru dumneavoastră, ceva de genul acesta:

 Include /srv/www/vhosts/domain.com/conf/vhost.conf 












Tema Panorama de Themocracy

4 vizitatori on-line acum
3 vizitatori, 1 bots, 0 membrii
Max vizitatori azi: 16 la 01:33 UTC
Aceasta luna: 17 la 01-09-2011 23:27 UTC
Acest an: 130 la 28-03-2011 22:40 UTC
Tot timpul: 130 la 28-03-2011 10:40 UTC