Kategorie: Webové programování

Trasa žádosti o sitemap.xml na vlastní řídicí / akce

Tím, , ve středu 06.01.2010 00:13

Aby bylo možné žádosti o přímé / sitemap.xml na vlastní řadič a akce v Zend Framework aplikace stačí přidat následující v application.ini nebo alternativním konfiguračním souboru (např. já používám navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = index
 resources.router.routes.sitemap.defaults.action = mapa stránek

Například kód pro výstup může být viděn tím, že vytvoří akce v příslušné ovladače (např. moje mapa stránek spočívá v řídící index, mapa webu akce):

 < php
 Třída IndexController
     rozšiřuje Zend_Controller_Action
 {
     / **
      * Poskytuje Sitemap na základě Zend_Navigation nastavení
      * /
     public function sitemapAction ()
     {
    	 echo $ this-> Zobrazit-> Navigace () -> Mapa ();
    	 $ This-> Zobrazit-> Layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Soubory Sitemap lze snadno a rychle generovat pomocí Zend_Navigation , skvělý rychlý tutorial (a obecně velmi užitečné pro Zend tutoriály Framework) je Zend Odlitky - dynamicky vytváří menu Sitemap a strouhance .

Zend Framework Per-modul založený nastavení

Tím, , pátek 01.01.2010 22:40

Vytvořil jsem Jít na tento příspěvek, který vyžaduje méně konfigurace, viz modul založený Layout - Zend Framework .

Při použití Zend Framework s moduly, jejich zjevné, že pokud používáte různé (sub-) stránky z stejná aplikace, nemusí chtít stejné rozložení scénářů pro každou část. Rozhodl jsem se jít s následující struktury webu:

  / Aplikace
     / Regulátory
         ...
     / Modely
     / Modules
         / Default
             / Regulátory
             / Rozvržení
                 / Scripts
             / Zobrazení
                 / Scripts
         / AnotherModule
             ...
     / Scripts

Problém byl v nastavení rozvržení skripty na bázi modulu. Odpověď přišla až s použitím Akce Helper. Nastavení rozložení na jednotlivé moduly základě zahrnuje tři kroky:

  1. Application.ini (nebo podobné nastavení konfigurace):
      admin.resources.layout.layoutPath APPLICATION_PATH = "/ modules / admin / layouty / scripts"
     default.resources.layout.layoutPath APPLICATION_PATH = "/ modules / default / layouty / scripts"
     member.resources.layout.layoutPath APPLICATION_PATH = "/ modules / člen / layouty / scripts"
     affiliate.resources.layout.layoutPath APPLICATION_PATH = "/ modules / affiliate / layouty / scripts" 
  2. Vytvořte si svůj Akce Helper:
      <? Php
     / **
      * Nastavení rozložení na cestu za modul základě
      *
      * @ Author Lloyd Watkin <lloyd@evilprofessor.co.uk>
      * @ Od 1.1.2010
      * /
     Třída Pro_Controller_Action_Helper_SetLayoutPath
         rozšiřuje Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Nastavení vzhledu cestu založenou na modulu
          * /
         public function preDispatch ()
         {
        	 $ Modul = $ this-> GetRequest () -> getModuleName ();
    
    	     if ($ bootstrap = $ this-> getActionController ()
    	                        -> GetInvokeArg ("bootstrap")) {
    
    	         $ Config = $ bootstrap-> getOptions ();
    
    	         if (isset ($ config [$ modul] [zdrojů '] [' layout '] [' layoutPath '])) {
    	             $ = LayoutPath
    	                  $ Config [$ modul] [zdrojů '] [' layout '] [' layoutPath '];
    	             $ This-> getActionController ()
    	                  -> GetHelper ('layout')
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. A konečně boostrap akce pomocníka:
      ...
         / **
          * Nastavuje uspořádání skripty pro jednotlivé moduly základě
          * /
         funkce ochrany _initLayoutHelper ()
    	 {
    	     $ This-> bootstrap ("frontController ');
    	     $ Layout = Zend_Controller_Action_HelperBroker: addHelper (
    	         Nový Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Doktrína: DATETIME výchozí NOW ()

Tím, , ve středu 30.prosince 2009 18:30

Byl jsem zápasil s vytvořením databáze schéma pro nový Zend Framework projekt. Já jsem pomocí snaží využít doktríny ORM pro své datové modely. Musím nastavit schéma tak, aby mi umožnila nastavit výchozí datum a čas pro `datetime` sloupec, např. při přidání nové zprávy mám aktuální časové razítko. Po dlouhém hledání a experimentování jsem našel řešení, tak jsem sdílení.

Ve vašem schématu YAML soubor, proveďte následující kroky:

 Zpráva:
   actAs:
     Timestampable:
       Vytvořeno:
         Jméno: created_at
         Typ: časové razítko
         formát: Ymd H: i: s
       aktualizace:
         Jméno: last_updated
         Typ: časové razítko
         formát: Ymd H: i: s
   sloupce:
     ID:
       Typ: integer
       Primární: true
       AUTOINCREMENT: true
     name: String (255)
     email: string (300)
     message: String (2000)

Pokud je na druhé straně nechcete `` updated_at sloupci můžete použít následující:

 Zpráva:
   actAs:
     Timestampable:
       Vytvořeno:
         Jméno: created_at
         Typ: časové razítko
         formát: Ymd H: i: s
       aktualizace:
         zdravotním postižením: true
   sloupce:
     ID:
       Typ: integer
       Primární: true
       AUTOINCREMENT: true
     name: String (255)
     email: string (300)
     message: String (2000)

PHP Design Patterns - vzor Observer

Tím, , úterý 29 prosinec 2009 22:02

Četl jsem hlavou napřed Design Patterns v nedávné době, a se rozhodl napsat některé vzory jako PHP příklady pro vlastní prospěch. První z nich, které jsem se rozhodl do kódu, je vzor Observer . Formální definice Observer Pattern:

Pozorovatele vzor (podmnožina asynchronní publish / subscribe vzor ) je software návrhový vzor , ve kterém objekt , nazvaný předmět, vede seznam jeho rodinné příslušníky, tzv. pozorovatele, a upozorní je automaticky jakékoliv změny stavu, obvykle tím, že volá jeden z jejich metod . Používá se především k realizaci distribuované systémy zpracování událostí.

Jsou systémy stávají volně vázaných ujistěte se, že až se tato událost stane, všechny systémy, které vyžadují znalost těchto změnách byli informováni. Například, blogu, po uložení příspěvek budeme muset aktualizovat vyhledávače (např. Lucene), aktualizovat náš mapa stránek, tagů, e-mail předplatitele atd. pozorovatel vzor umožňuje vývojářům přidat další posluchače bez úpravy jejich pozorovatelné objektu . Tím, že napíchne pozorovatele (tj. vyhledávač aktualizace pozorovatele, generátor mapa stránek, atd.) na předmět (např. blogu redakčního systému), si můžeme dovolit jej provést všechny potřebné aktualizace, bez jakýchkoliv změn.

Pokračovat ve čtení "PHP Design Patterns - Observer vzor" »

Office Grid Computing pomocí virtuálních prostředí - Část 4

Tím, , pátek 04.12.2009 23:59

Úvod

Pracuji ve firmě, kde jsme se spustit mnoho dávkové zpracování úlohy miliony záznamů dat každý den a já jsem v poslední době přemýšlel o všech strojů, které sedět každý den dělat nic, po dobu několika hodin. Nebylo by dobré, kdybychom mohli použít ty stroje pro posílení výpočetního výkonu našich systémů? V tomto souboru článků budu dívat na potenciální výhody zaměstnávání Office sítě prostřednictvím virtualizovaných prostředích.

V části 3 jsme vytvořili virtuální zpracování a nastavení počítače se systémem Windows, aby se stal nečinnosti úvazek.

Spuštění poslední kodex

Nevyhnutelně Po vytvoření pracovníků obchodní logiky se změní, bude se nachází chyby, bude rychlejší efektivnější kód vyráběny tak zanechává pracovníky seděli zpracování dat pomocí staré páchnoucí kódu . Jak tedy zajistíme, že jsme vždy používat nejnovější a nejlepší verze naší zpracování skriptů?

Existuje několik jednoduchých způsobů, jak snadno jsme mohli udělat to, trik, nicméně, je snížení výpočetního výkonu a provoz sítě v dosažení tohoto cíle. Začněme s nejjednodušší řešení a zlepšit to pomalu přes několik iterací.

První metodou by bylo jednoduše připojit k našemu serveru pro ovládání úloh (přes Sambu, FTP, apod.), a strhnout nejnovější verzi kódu. Ne velmi výkonný, ale to bude dělat svou práci. Umožňuje zlepšit to trochu, jak se o vytvoření a použití rsync skript, který pokaždé, když místo toho? Jinak, co se o uvedení nejnovější zpracování skriptu do Subversion podívat se na kód na začátku a pak už jen aktualizovat náš kód na každém spuštění ( svn update )?

Na závěr bychom mohli skončit s skript bash (nazvaný cronu každých 10 minut), který vypadá tak jednoduché, jak to:

  #! / Bin / sh
 Pokud ps ax | grep-v grep | grep php > / dev / null
 pak
     echo "práce je v současné době zpracování, exit"
 jiný
     echo "Pracovní neběží, začít už teď"
     cd / cesta / k / práce / copy
     svn update
     php yourJobProcessingScript.php
 fi 

Nyní můžeme být jisti, že se každý pokus jsme definitivně poslední verze kódu. Jsme tím, že zajistí aktualizaci našich zdrojový kód každého a pokaždé, když se provede spuštění a snižuje provoz v síti pouze přenos souboru rozdíly v naší síti.

V mém demonstraci nastavení, já jsem přesně jak je uvedeno výše. Subversion je nainstalován na svém serveru zpracování zakázek a prostě jsem vytáhl poslední kód "pracovníka" větev pomocí "svn update '. Také jsem přidal číslo verze tag pro mé zpracování skriptu, který se vrátil do databáze jako součást výsledků návratu. Tímto způsobem jsem mohl vidět, že můj kód byl aktualizován pokaždé, když jsem kopíroval do kufru, tj. pracovník pobočky, že jsem určitě běží nejnovější zpracování skriptu.

Použití nejnovějších údajů

Je-li vaše práce pro zpracování využívá zdrojových dat pak v určitém bodě se jedná bude aktualizovat také. Pokud zavoláte své zdroje dat na velmi řídkém základě budete povodně sítě s provozem, jakmile vaši zaměstnanci se začnou přinášet všechno, co ke klidu. Pro mé řešení, jsem se rozhodl, že bych rád pohyb Zdroje dat si s mou VM.

Držte jste tam koně! Co dělat, když zdroje dat jsou obrovské? No to je opravdu případ, kolik dat je řeč? To může být z hlediska nákladů efektivnější instalovat další větší pevný disk na každém počítači, než koupit další zpracování serveru. To je otázka rozpočtu a do podniku se rozhodnout. Je možná, že zdroje dat jsou tak velké, že je to jen proveditelné, aby toto množství dat v pracovníkem zařízení. V tomto případě to, co byste dělali? Tak jsme se mohli podívat na volání místní datový server, ale to může způsobit problémy se sítí. V tomto případě distribuční soustavy, jako je tento se může stát nereálné zahrnout do kancelářského prostředí. To může také být, že se můžete podívat do provozu alternativní strategie, například pouze Volání pracovníků mezi dvacet hodin a 6 hodin ráno každou noc a / nebo škrtící zdroj dat požadavky.

Přesunout se vám tvrdit, že naše zdroje dat činí 100 GB dat. No ano, to je docela dost dat se pohybovat po síti na aktualizaci. Jak by se zajistilo, že jsme poslední kopii dat v tomto případě? Rsync je možné, ale osobně si myslím, spuštěním své nejnovější zdroje dat na serveru zpracování zakázek a nastavení to se jako mistr v replikaci (s velmi dlouho bin log), může být cesta:

replikace Při nastavení každého z vašich zaměstnanců se jako otrok do práce kontrolu aktualizací serveru do zdroje dat se dostaly až pěkně k pracovníkům bez obrovský nárůst aktivity v síti (tedy pokud budete provádět velké aktualizace dat a všechny pracovníky v kop najednou). To má výhody oproti rsync v tom, že byste se dostat dlouhá pauza před každou práci, protože aktualizace databáze, mysql daemon bude na pracovníka průběžně aktualizovat své údaje, zatímco zpracování pokračuje.

To je, jak mám nastavit moje demonstrace server. Chcete-li nastavit replikace Postupoval jsem podle příručky na webu MySQL ( Nastavení replikace ) a do 20 minut jsem měl Inital pracovník kopírovat práci kontrolují servery datového souboru. Za každý další pracovník nastavení replikace a proces se osvědčil pokaždé, když byl zkopírován VM.

Přehled

V této části článku jsme se zaměřili na to, jak snadné a bezbolestné je, aby vaše operační kód v aktuálním stavu pomocí rsync, nebo using subverion (SVN) dělat práci a snížit zatížení sítě na stejném time. Mluvili jsme také o tom, jak , aby vaše informace o zdroji dat up-to-data tím, že se dostaly až ke každému z vašich pracovníků. Tak jsme oblast zajistí, že držíme krok s obchodní logiky a informace v našem systému Office sítě. K dispozici budou samozřejmě nespočet alternativy k plnění těchto úkolů, ale tady byli dva jednoduché příklady, jak jednoduché řešení je sehnat.

Příště

V závěrečné části tohoto seriálu, příhodně pojmenované části 5 , budeme diskutovat o nasazení tohoto systému. Budu shrnout to, co jsme se naučili a co se mi podařilo vytvořit.

Office Grid Computing pomocí virtuálních prostředí - Část 3

Tím, , pátek 04.12.2009 23:37

Úvod

Pracuji ve firmě, kde jsme se spustit mnoho dávkové zpracování úlohy miliony záznamů dat každý den a já jsem v poslední době přemýšlel o všech strojů, které sedět každý den dělat nic, po dobu několika hodin. Nebylo by dobré, kdybychom mohli použít ty stroje pro posílení výpočetního výkonu našich systémů? V tomto souboru článků budu dívat na potenciální výhody zaměstnávání Office sítě prostřednictvím virtualizovaných prostředích.

V části 2 jsme se podívali na práci serveru poběží, a jak by práce být nakonfigurován tak, aby bylo dosaženo největšího množství zpracování, a zároveň zajistit, že každá práce je zpracována bez chyb.

Nastavení si pracovník - nebo Limp serveru

Dalším krokem v tomto procesu je nastavit virtuální zaměstnance. Z tohoto budu používat instalace CentOS pomocí VirtualBox. Chystám se instalovat MySQL a PHP na serveru, také známý jako Limp (Li nux, ySQL m, P HP) Servera (Možná jsem se, že název se).

  • Instalovat VirtualBox na počítač s Windows (po spojení)
  • Stáhnout a nainstalovat CentOS (aktuální verze 5.3) v rámci vytvořených virtuálních strojů

Nemá smysl mi bude toto je to asi 1000 's velkou tutoriálů tam (ok, tady je jeden: Vytvoření a Managing CentOS virtuální stroj pod VirtualBox ). Důležité poznamenat, myslím, že jsem volala moje virtuální stroj GridMachine.

Pokud jde o moji volbu pro virtualizaci klientů a operační systém tam není žádný velký závažný důvod pro každou volbu. VirtualBox je něco, co používám na svém domácím počítači a je podporován třemi hlavními operačními systémy. Vybral jsem si CentOS jako dobrý stabilní OS, a používám ho na vlastní webový server. Jsem velkým zastáncem správné nástroje pro práci (i když já jsem použití "použití nejrychlejší a nejjednodušší pro Vás" mentality zde), takže pokud operační systém X běží kód rychleji a efektivněji využít, že místo toho:)

Důležité je zajistit, aby vaše VM používá DHCP, jinak za každý nový virtuální stroj by bylo nutné konfigurovat samostatně což je něco, co nemáme want.By pomocí DHCP nepotřebujeme konfigurovat nastavení sítě individuálně pracovníka zařízení, bude DHCP ruky z IPS pro vás. Z tohoto důvodu je možno zkopírovat vaše virtuální stroj na úřadu bez obav o nastavení každé z nich se (to zvyšuje škálovatelnost a sníží administrativní pracovník).

Proces, který by měl usilovat o dosažení by bylo získat nový fyzický stroj, nainstalovat VirtualBox a pak do značné míry nasadit virtuální obraz, aniž by mnoho jiného. To by mohlo být moudré nastavení všech pracovníků na jiné podsíti, takže si můžete alespoň vidět, kolik strojů je v provozu. Budete také muset nastavit zařízení na dlouhodobý pronájem nebo leasing neomezené DHCP.

Jak spouštět úlohy na pracovníka

Jedná se o zajímavou oblast a tam je několik ověřených metod zpracování práce na pracovníka. Zde jsem si jen diskutovat o dva nejzjevnější:

  • Trvale spuštění skriptu: Skript, ať už je to shell skript nebo PHP skriptu se provádí jednou na pracovníka a pracuje jako součást nekonečné smyčky. Já jsem tuto metodu diskontovaných jako jeden pád scénáře a případně si zaměstnanci přestanou běžet bez nějakého zásahu.
  • Cron na skriptu: každých x minut cron démon začíná volání skriptu dát věci do pohybu. Bez nějaké kontrole To by mohlo vést k mnoha mnoha kopií své provozní zaměstnance skriptu.

Mé rozhodnutí bylo jít s cron, který odstartuje skript každých 10 minutes. můj skript plní tyto úkoly:

  1. Získání seznamu procesů, a to za grep "php". Pokud není nalezen pak pokračujte.
  2. Zavolejte svou práci kód, v mém případě by to bylo něco, co na PHP
  3. Worker skript dokončí běh
  4. Připraven jít zase na další příslušné výzvy

My bash script vypadá takto:

  #! / Bin / sh
 Pokud ps ax | grep-v grep | grep php> / dev / null
 pak
     echo "práce je v současné době zpracování, exit"
 jiný
     echo "Pracovní neběží, začít už teď"
     php yourJobProcessingScript.php
 fi 

Poznámka: ECHO, jsou téměř úplně zbytečné, ale může pomáhat další člověk, který přijde, aby se pokusila upravit.

, Který uzavře nastavení pracovníka virtuální stroj, rychlý, jednoduchý a snadno kopírovat na každý nový kus hardwaru, který je přijal. "Chytrosti" distribuční soustavy, opravdu není na vizualizaci OS, jeho do činění s kódem pro zpracování vytvořených pracovních míst, pracovní uspořádání, a ujistěte se, že úloha spustit v případě potřeby (např. pokud host je nečinný ).

Nastavení Windows inicializovat pracovníků

Prvním úkolem je vypracovat příkazu potřebné ke spuštění virtuálního počítače z příkazového řádku Windows. Pokud jste nainstalovali VirtualBox ve výchozím umístění a vy jste jmenoval svého pracovníka GridMachine pak příkaz načítání vašeho pracovníka je:

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

Nicméně spustit skript "bezhlavý" státu musíme použít:

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

Spustí se virtuální stroj bez GUI a nechte ji zachránit státní elegantně. Druhý argument se vypne RDP tak to není v rozporu s Windows RDP, nebo vám zprávu o naslouchá na portu 3389. Název virtuálního stroje je malá a velká písmena!

Dále se budeme muset nastavit systém Windows až po nastartování našeho pracovníka VM, jakmile stroj byl nečinný. K tomu (na Windows XP), budete muset jít Start -> Programy -> Příslušenství -> Systémové nástroje -> Naplánované úlohy jak je uvedeno níže:

naplánovaných úloh

Potom klikněte na "Přidat naplánovanou úlohu", po němž Procházet přidat vlastní program. Přejděte do VBoxManage skript a klepněte na tlačítko OK. Naplánovat úkol pro některou z možností (budeme změnit v minutě) a pokračuje. Po přeskočení na další obrazovku Windows se vás zeptá, který chcete spustit tuto úlohu, kterou navrhuji buď "správce", nebo vytvoření nového privilegovaný uživatel. Pamatujte si, že nechceme narušovat standardní pracovníky účet na počítači, na nějakém místě. Klepněte na tlačítko Další a zaškrtněte Zobrazit rozšířené možnosti pro tento úkol.

Na konci běhu textového pole přidat náš řetězec "startvm GridMachine" a zajistit, že běží pouze při přihlášení je vlevo nezaškrtnuté. Navštivte harmonogram úkolů a další změny plánu klesnout až na možnost "při nečinnosti", zvolit dobu, po kterou bych, stroj se nečinnosti před přechodem na další záložku.

Nakonec Zrušte volbu, která uvádí, zastaví úlohu, pokud běží X množství času, ale zaškrtněte možnost zastavit úkol, pokud je stroj již není nečinný.

program

To je pak pro nastavení host Windows!

Přehled

V této části jsme se vytvořit virtuální stroj se chovat jako dělník, ale i způsob, jakým se hovoru a realizovat naše skripty zpracování zakázek (pro sebe PHP skriptu). Odtud se podíváme na to, jak nastavit naše kopie Windows na spuštění virtuálního stroje v bezhlavém režimu, když je počítač nečinný stane, a uložit svůj stav, když uživatel obnoví využití stroje. Doufejme, že v tuto chvíli vidíte, jak jednoduché je vytvořit takový systém a svědění získat nějaké pokusy jít sám!

Příště

V části 4 se budeme dívat na použití nástroje, které zajistí, že používáte nejnovější verzi kódu a datových zdrojů tak, aby získané výsledky jsou vždy up-to-date s posledním obchodních informací a logiky.

Office Grid Computing pomocí virtuálních prostředí - Část 1

Tím, , pátek 04.12.2009 23:23

Úvod

Pracuji ve firmě, kde jsme se spustit mnoho dávkové zpracování úlohy miliony záznamů dat každý den a já jsem v poslední době přemýšlel o všech strojů, které sedět každý den dělat nic, po dobu několika hodin. Nebylo by dobré, kdybychom mohli použít ty stroje pro posílení výpočetního výkonu našich systémů? V tomto souboru článků budu dívat na potenciální výhody zaměstnávání Office sítě prostřednictvím virtualizovaných prostředích.

Jako PHP developer budu používat nástroje, které používám každý den a to, Linux, MySQL , PHP, VirtualBox a Subversion (SVN). Nicméně doufám, že tento návod se přizpůsobí do jiných jazyků a technologií, stejně dobře.

Toto řešení mi poskytují bude velmi volně založený na způsobu zpracování bychom třeba dosáhnout To však nemusí být pravda celý článek, jak budu něco změnit na jednoduchost, nebo produkovat další zajímavé scénáře použití.

Tyto virtualizovaných prostředí bude běžet na strojích s Windows, protože to je to, co většina úřadů běhu. Zpracování, kancelářské stroje se nemělo zasahovat pracovníky pomocí těchto strojů by nevyžadují žádnou údržbu na stroji, a musí být snadno nasaditelné na nové stroje, jakmile budou k dispozici. Také by nové virtuální stroje nevyžaduje žádné další nastavení, protože to výrazně snižuje škálovatelnost a snadné, při které může distribuční soustavy prodloužit.

Proč Nasazení Office Computing Grid?

Za prvé si mohou myslet, proč ne právě pomocí cloud computing zdrojů, jako je Amazon EC2 platformu ? No důvodů může být několik, například:

  • Nebudete svěřit některé údaje na životní prostředí cloud computing
  • Nemůžete dát některé údaje do prostředí cloud computing z právních důvodů (např. údaje odjezdu ze země), případně z právních důvodů, např. NHS záznamů.
  • Vy chcete, aby vaše procesorů úzké a mají plnou kontrolu nad hardwarem i
  • Nemáte projekt finanční prostředky ke spuštění instancí cloud
  • Váš úřad nemá připojení k internetu, a proto to není možné použít cloud zdroje
  • Nelíbí se vám déšť, mraky naznačují, déšť, tak budete mít daleko

Jsem si jistý, výčet by mohl pokračovat, ale myslím, že to prozatím stačí.

Výhody gridové výpočetní Office

Dobře, pojďme udělat nějaké matematické (a v pravém fyzice stylu umožňuje provést některé rozsáhlé předpoklady). Představte si, že jste velký tlustý zpracování serveru 100 pracovních míst za den. Ve vaší kanceláři máte 50 strojů, které jsou nečinnosti 16 hodin denně, každý z těchto strojů je 10% jak silný jako svalnatý zpracování sever. (Všechny výsledky zde jsou zaokrouhleny na podceňovat zvýšení výkonu).

Ano, 1 stroj * 10% výkonu * 2 / 3 = 0,067 času, tj. o 1 pracovní plochy zpracování v nečinnosti procesu 6 plných pracovních míst za den.

Pokud nyní měřítku to až za 15 nečinnosti stolních počítačů až po proces co nejvíce pracovních míst za den jako hlavní server pro zpracování.

A tak v naší kanceláři předstírat, že 50 strojů bychom mohli zvýšit náš výkon procesoru od 1 server až 4 kompletní zpracování servery, nebo bychom mohli být zpracování úloh za den 400 místo 100.

Všimněte si, bez investice do nového hardwaru vaše firma právě zvýšila dávkové zpracování kapacita 4 krát! Potenciálně se chystáte zvýšit spotřebu energie, ale z většiny kancelářských prostředích Byl jsem na stroje jsou obvykle vlevo na přes noc tak, aby jste mohli vidět na zelené iniciativy.

Další výhody také znamená, že investice do nových (či aktualizované) zpracování servery mohou být odložena, pokud vaše kancelářské stroje jsou dostatečné a že, jak si zvýšit výkon vašeho kancelářských strojů Vaší kanceláře rozvodná síť stala silnější automaticky.

Technologie

Co budete potřebovat? (Nebo přesněji to, co jsem se používat):

  • Nečinnosti kancelářské stroje (v mém případě náhradní staré Windows XP notebook)
  • VirtualBox (nebo jiný virtualizační klientský software)
  • Virtuální stroj s PHP, mySQL running běží snížit OS, volám těchto mých LIMP servery:)
  • Práce spustit
  • Pracovní server (může být jiný virtuální stroj někde)

Typická práce

Typy úloh, které tento systém je navržen tak, aby je následující:

  • Systém obdrží seznam údaje, z nichž musíme zápas a vrátí výsledky
  • Párování znamená kontrola / Vyhledávání několik (poměrně statické) zdroje dat
  • Výsledky ze zdrojů dat mohou vyžadovat další potvrzení, sloučení, kontrola dalších datových zdrojů v reakci na výsledky
  • Data se vrací s odpovídající záznamy, plně validovány a zpracovány
  • Každý záznam v práci, je nezávislá na ostatních

Takže v podstatě se díváme na běžící úlohy, které vyžadují kombinace vyhledávání v databázích a nějaké číslo skřípat, docela obvyklý scénář, v obchodním prostředí.

Mřížka řešení jsou nejen výhodné pro zpracování práce tohoto typu. V podstatě se každý proces, který lze rozdělit na samostatné jednotky paralelně. Viz tento Wikipedia příklady a další informace: Grid Computing , ale pár známých příkladů je Seti @ Home a BIONC . Existují rámce pro provoz počítačové sítě, a ty jsou dobře stojí za to díval do.

Co docílíme?

Na konci těchto článků doufám, že se ukazuje, že nasazení Office sítě nemusí být velmi nákladné a časově náročné. Budu diskutovat:

  • Nastavení práce kontrolního systému, pracovní konfigurace
  • Vytvoření vhodného zpracování virtuální stroj
  • Jak nastavit systém na stroji s Windows
  • Zajištění, že používáte aktuální kód a data
  • Nasazení a benchmarking
  • Při pohledu do budoucna

Budu budovy (ok jsem stavěl, pak napsal), například aplikace pro testování koncepcí na lokální počítač v systému Windows XP a mé "GridMachine" virtuální stroj. Mým úkolem ovládání serveru bude můj hlavní stroj, který běží Fedora 11 .

To v žádném případě předvést plně funkční robustní systém, jeho znamenalo více demonstraci a diskutovat o tom, že tyto věci lze dosáhnout v poměrně krátkém čase a za nízkou cenu. Neváhejte a pošlete mi připomínky, opravy, nebo zlepšení a já v mých silách, aby tento článek aktualizován na zápas.

Příště

V části 2 se mi začít tím, že při pohledu na systém kontroly práce, a podívejte se na to, jak by měla práce být nakonfigurován tak, aby bylo dosaženo největšího množství zpracování, a zároveň zajistit, že každá práce je zpracována bez chyb.

Office Grid Computing pomocí virtuálních prostředí - Část 2

Tím, , pátek 04.12.2009 23:23

Úvod

Pracuji ve firmě, kde jsme se spustit mnoho dávkové zpracování úlohy miliony záznamů dat každý den a já jsem v poslední době přemýšlel o všech strojů, které sedět každý den dělat nic, po dobu několika hodin. Nebylo by dobré, kdybychom mohli použít ty stroje pro posílení výpočetního výkonu našich systémů? V tomto souboru článků budu dívat na potenciální výhody zaměstnávání Office sítě prostřednictvím virtualizovaných prostředích.

V části 1 jsem dal přehled o systému a technologií, budu používat, stejně jako diskutoval některé z možných důvodů, proč byste chtěli vytvořit kancelář sítě.

Řízení práce

Pokud se chystáte být spuštěna práci pak budete potřebovat nějaký způsob, jak spravovat. Vaším úkolem řídicího systému (na svou práci serveru) musí být velmi dobře promyšlené ještě předtím, než pokusem o spuštění aplikace systému Office sítě. Tak za prvé, jaké jsou úkoly, systém kontroly práce:

  • Pracovních míst ruku na žádost zaměstnance
  • Řekni pracovníků, jaký typ úloh spustit
  • Sledování úkolů
  • Ujistěte se, že pracovní místa jsou poháněna pouze jednou
  • Poskytují zaměstnání dat pro pracovníky, nebo alespoň říct, kde si to

Systém také musí být rozšiřitelné řešení, které funguje zatím v jediném případě může být rozšířena spustit několik typů pracovních míst a podnikání vidí hodnotu v mřížce řešení. Například může získat zaměstnání priorit, více než jeden typ úlohy může existovat (tj. několik základen kód), případně můžete dokonce provozovat několik různých pracovníků stroje, které jsou optimalizovány pro každý typ zaměstnání (i když to není odklon od "obecné pracovník "nápad). Vždy se snažím přemýšlet o budoucnosti při vývoji systémů, může krátkodobě vést k vizi dlouhodobé frustraci a vyšší čas potřebný pro vývoj.

Server práce

Budeme potřebovat někde ovládat naši práci od, mělo by to být jediný systém ve své síti, která má pevnou Resource Locator, je, že IP adresa, jméno počítače, URL (pomocí interní DNS), atd. To je proto, že pracovníci musí vědět, kde hledat práci, pracovníci musí najít práci řídící systém (není práce řídicího systému najít zaměstnance).

The job server itself doesn't really have a complicated task (in a basic system anyhow), it needs to store a list of jobs, hand out jobs, receive results, and subsequently store them for later retrieval. How these parts (such as 'hand out jobs') are defined can be very basic. Later on we can extend the system to include an administration interface to add, edit, delete, suspend jobs but this is beyond this exercise.

There is no reason whatsoever then that your job server could not be a virtual machine running within your main processing server provided it doesn't drain too many resources from it. The job server however does need high availability, if it goes down on a Friday evening you're going to lose a whole weekend of processing, potentially costing you a couple of weeks worth of processing time (when compared to your main processing server alone). You may want to consider putting your job server on a load balanced environment for high availability.

Základní nastavení

The basic setup for our job server will consist of what I'm calling one of my LiMP servers (that is Li nux, m ySql, P HP). The code running on the workers will actually work out what jobs it can run by interacting with with job control system databases. Later on we could create a web service and actually hand out jobs rather than having the workers do the hard work themselves, but for now we'll continue using the KISS principle (Keep it Simple, Stupid!).

So, lets create three mySQL tables to deal with jobs. These will be `jobs`, `jobRecords`, and `jobResults`.

jobs table Here I'm using SQL Buddy a great little alternative to phpMyAdmin just because its easier to install on centOS (for others see: 10 Great alternatives to phpMyAdmin )

This table consists of 5 simple fields,

  • id: Uniquely identify the job
  • name: Could be a client reference, or any number of other identifiers
  • Status: You need to know where the job is at, eg
    • 0: Not started
    • 1: Picked up
    • 2: Completed
  • started_by: Who's started doing the job? This isn't entirely required but is a nice to have. I'd suggest tracking workers by their IP address on your network
  • started_at: When did the worker start the job? By tracking jobs that have not completed within X amount of time we know we need to pick up the job once again and start processing by another worker. Workers could stop processing/go offline for any number of reasons, power failure, crash, network loss, etc.

It is easy how this table could be extended with a few additional fields to allow for statistics tracking, a finish time column to see how long the job took, a counter to see how many workers picked up the job (obviously this needs to tend to 1), job priority, the list can go on and on. In more complex job scenarios it would be possible to specify how much memory the worker would need access to (and therefore only use suitable workers), or even what type of worker would be required.

Lets add a few example jobs:

example jobs

The next table again is quite simple to understand, these are our job records. They are linked to the main jobs table by a column `jobs_id`. The make up of this table very much depends on the data that you need to supply to your workers, lets make a very simple example where we have four columns:

  • id: ID of the record
  • name: Person's name
  • address: Person's address
  • jobs_id: The job ID that this record is linked to

The third and final table consists of a results table, it has much the same make up as our records table, and with the addition of some columns could be part of the records table:

  • job_record_id: Link the result to the job table
  • result: The result data

…and that's all you need for job control! (albeit at a very basic level) In my case I'm pointed to another table where my data to process was located, but this could just as easily been a file, parameters to run simulation code, you name it.

Selecting a job

Jak bylo uvedeno dříve, budou dělníci dělat svou práci managementu pro nás, takže vše, co potřebujete udělat, je opravdu najít si práci, která potřebuje zpracování a získat informace. Jak bychom to? Dobře vybrat naše kritéria výběru zaměstnání a hledat práci v SQL jsem se následující:

  1. Přijmout jakékoli zaměstnání, které nejsou označeny jako kompletní, ale z našich pracovníků a resetovat (náhradní __ME__ s identifikátorem, že nejjednodušší bude IP adresa):
      UPDATE `` SET `zaměstnání status` = 0, kde `status` = 1 `a` started_by = __ME__; 
  2. Pomocí našich kritérií pro výběr úlohy, vyberte si práci a řekne řídicího systému, který tento pracovník se zabývá se:
     UPDATE `jobs` SET `status` = 1, `started_by` = __ME__, `started_at` = NOW() WHERE `status` = 0 OR
    (`status` = 1 AND `started_at` > DATE_SUB(NOW(), INTERVAL X HOUR)) ORDER BY `id` ASC; 

    By grabbing jobs that haven't returned results in X amount of time we ensure that all jobs are run in the event of a worker crashing or going AWOL.

  3. Next grab the jobs details followed by the records themselves:
     SELECT * FROM `jobs` WHERE `started_by` = __ME__ LIMIT 1;
    SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Upon completion of the job we insert our result records and mark the job as complete. Remember as jobs can suspend/resume at any time allow for some robustness in your script. It might be that the task suspends half way through updating the job control system, so checking the number of records in a job and the number of results saved back to the job control system would be a wise move.

In addition, whilst this demonstrates how jobs can be selected and managed from an SQL-query frame you should really be abstracting your job control so that if you decide to switch to using a web service, a file based system, XML , or any other number of systems it will not affect the code above it.

Job Configuration

The next aspect to consider is job size and configuration. By playing with job configuration we can strike an excellent balance between speed, process replication, and reliability. Take a couple of scenarios:

  1. Jobs take 1 day each to run: This means that your workers need 15 days to process each job (remember 10% of the power for 2/3rds of the time). This is clearly not a wise configuration, your job size is way too big! It would take at least double the time to get a job processed should the initial worker go AWOL (time to pick up that it hasn't returned a result plus reprocessing time). In an ideal you'd have at least one full job easily cleared by the end of each long idle period, that way you keep the jobs ticking over and at worst case a job would take two days to process should the first go missing.
  2. Jobs take 1 minute to run: This means that your workers take about 15 minutes to run each job. Whilst this may initially seem ideal, you gain additional work processing during lunch time, coffee breaks, meetings, etc this scenario puts strain on other areas of your system and introduces its own problems. For example, firstly your setup/processing time ratio is going to go right down, therefore losing system efficiency. Your network is going to be constantly streaming job information to the various workers frustrating staff who are dong their day to day work. You're also going to put more strain on your job processing server as it has to dish out lots and lots of small pieces of work on a regular basis. Lastly, in this situation if your job server goes down you're going to create a huge back log of uncompleted work whereas bigger jobs could of continued processing blissfully unaware that the job server was experiencing difficulties.

In reality there will be no one ideal configuration for your grid setup, much depends on the available resources, types of job, job turnaround time requirements, network capability, and so on. However some guidelines would be:

  • Size jobs so that each worker can get through at least 3-4 jobs in a period of 15 hours (the longest likely idle time period)
  • Play with the job size so that setup time becomes fairly insignificant compared to the processing time (bearing in mind the above point).
  • If a job doesn't complete in double the amount of time (maybe less) you expect it to complete it assume that its gone AWOL and start processing it with another worker. This means you may have to wait up to three times the normal length of a job for it to complete (possibly longer if the subsequent job fails). You may want to reduce this time, but be careful not to reduce it too much as you may start duplicating processing tasks on a regular basis.
  • Jobs should be independent of outside requirements as much as possible. The job server, for example, should only be contacted at the start and end of every job.
  • Don't saturate your network, this will have two negative effects, your daytime staff will find using the network frustrating and problems may be experienced with connections timing out a problem that will only get worse as you scale your grid.
  • Ensure jobs can run on your workers. If jobs become too memory intensive or disk space intensive jobs will start aborting and the only thing you'll notice is a drop in number of jobs processed with no real reason why.

Submitting Results of a Job

When submitting the results of a job it is important to check that results have not been submitted by another worker, especially if the current worker has been dormant for some time.

When results are submitted ensure that the number of results matches the number of records within the job.

As stated previously, and can not be over emphasised, build fault tolerance into job retrieval and results submission. The workers can (and most likely will) go into suspend mode at the most inconvenient of times and this needs to be catered for. Also once again abstracting away your results submission will help cater for future changes to your job control system much easier to deal with.

Přehled

In this section we have looked at what a job control server needs to do and how to get a very basic system set up. We discussed how to retrieve a job from the control system and how best to configure jobs to get the most our of your office grid system. To finish, a paragraph or two on submitting results back to the job control server was presented.

  • A job control server manages jobs and ensures that all work units are completed
  • By abstracting your job select/results submission we can change the technology of the control server without much problems
  • Configure your jobs to ensure that they are run quickly and efficiently without putting too much pressure on your network infrastructure, and without duplicating processing tasks on a regular basis.
  • Ensure that you build fault tolerance and error checking into your routines, workers can suspend and resume and the most inconvenient of times. Remember to check if results have already been submitted by another worker.

Next time

In part 3 we'll create our virtual processing machine and set up our windows machines to become idle-time workers.

Office Grid Computing pomocí virtuálních prostředí - Část 5

Tím, , pátek 04.12.2009 23:03

Úvod

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. Tak,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Nasazení

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

What if you want to stop your workers from running at some time? They are all out there running, regenerating, and trying their best to process data like hungry insects. The answer may seem obvious but its worth adding just in case its overlooked. Simply edit your processing script with an exit(0) or die() or some other statement to kill your processing job. An important reason why we always try to update to the latest processing script before any run!

Demonstration System

In order to write this set of short articles I created a very small grid to demonstrate the technologies and methodologies. I read lots of articles, tutorials, and used various tools to setup and monitor what was going on. By no means have I gone out and saturated a whole office with traffic and nor have I had access to a regular staff members PC to see how host performance was affected.

My demonstration system was very humble indeed. I used my regular desktop set up as a job control server. On this I had installed mySQL server installed set up as a master in replication, PHP , and SVN linked through apache (for access via worker VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. I setup scheduled tasks as specified after copying the VM onto the machine and let it go.

Virtuální stroj byl připraven s PHP, Subversion, a MySQL. I checked out a branch named 'worker' from my job control servers repository and made sure it could be updated using 'svn update'. Next I setup mySQL as a slave and checked that data was replicating from mySQL on the job control server down to the worker VM. After all this I setup the bash script and the cron job.

My processing script basically went along the lines of this (very simple stuff):

  • Read in the name field
  • Counted the number of similar names in a table from the data source held on the VM
  • Counted the number of names as above but splitting the name by spaces (ie forename, middle, surname)
  • Repeated this process 1,000 times

Each job took approximately 20 minutes to run. At one point I opened several copies of the worker VM on the windows laptop and watched the jobs be checked off by each of the worker IP addresses. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

The next obvious step would be to actually get a real world example and start to deploy a system such as this within an office environment and see what happens. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). I did not, however, find a smaller scale and simple system like this in my searches that could be rolled out within an office environment.

I created a basically free system using mostly open source software and tools available in almost any office. The technologies were basically demonstrated and show to perform and work as expected. Hopefully I have show that with not much work and with a very simple setup you can deploy an office grid computing system that is powerful, cheap, and scalable all at the same time.

Once a system is up and running there is almost no end to the amount of customisation and improvements you can make. For example statistics / benchmarking can easily be added showing the worth of such a system every day. New machines can be added quickly and easily as and when they arrive with upgrades to existing hardware bolstering your processing power.

I hope you've enjoyed reading this series of articles and its given you food for thought on running an office grid system. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

Please feel free to send me any comments, corrections, or improvements and I'll do my best to keep this article updated to match.

Zend Framework: Fundamentals – Review

By , Saturday 28th November 2009 10:42 pm

My employer recently paid for a group of us developers to take the Zend Framework: Fundamentals course, here I'll summarise my thoughts and opinions on the course for others. For those looking to save time, here's my summary:

For developers who haven't had time to look at the Zend Framework this course (Zend Framework: Fundamentals) offers a good overall picture of the framework introducing you to the key areas and giving enough information in order to continue. For those who have spent time looking at the framework and have followed one or two tutorials this course does not offer much beyond.

Pozadí

I've been a PHP developer for around 5-6 years, and have started working with the Zend Framework on a component basis over the last 6 months. I've developed and/or been a developer on a couple of small Zend Framework MVC sites. I'll be honest, I haven't had a huge amount of exposure to other frameworks from a coding point of view but have spent several hours researching the project websites and evaluating them. The framework and the community surrounding Zend Framework it is quite exciting and there seem to be huge possibilities in where its going.

About the Course

The course is delivered over 9 two hour webex sessions (with a 10-minute break in the middle). The time is spent going through a set of slides provided by Zend with discussion at any time. You can use a microphone to talk to the instructor, but to be honest I didn't see anyone use anything more than the chat window. In addition a VMWare Ubuntu machine is provided that has example code and projects set up an a trial version of Zend Studio. The course leader talks to attendees either over an integrated VoIP solution, or you can dial in using one of the many worldwide dial in numbers.

During the course the material consists of a brief overview of the Framework and the MVC pattern before heading into a sample guestbook application. The discussion demonstrated bootstrapping, Zend_Application, Db Tables, Database access, Forms, Filtering, ACL, Validating, etc, etc. Basically covering all the topics you'd require to get a basic site up an running all the time giving you the tools to go and get more advanced in the framework (although this did amount to 'See the website' much of the time).

Time is given to code up some examples, and to develop the 'guestbook' and simple 'wiki' application. Personally I felt that providing the code or each app and then asking us to develop what was essentially a copy alongside didn't really provide a good learning experience. I would have preferred to develop an application similar, but not identical. to the example application with the benefit of having a guide to refer to. Alternatively building the applications from scratch with the demonstrator would of possibly led to more questions about why and how , thus giving a better understanding of the framework, after all you can look up specifics after the course.

The last lecture consisted of working on the wiki application with help/guidance from the instructor. After the course feedback was taken, it was emphasised several times through the course that Zend takes feedback very seriously, in fact apparently our version of the course was quite new. Some of the other developers in the company will be taking the course soon so it will be interesting to see if this has happened.

The course style was informal, allowed for feedback and collaboration between attendees and the instructor. The course leader was friendly, approachable (email addresses were shared for questions), and whilst his presentation from the slides was a bit shaky seemed fully competent in the framework. He was clearly someone who used the framework on a regular basis rather than someone who is taught to teach the course, I liked the 'real world' experience in that respect.

Overall Feeling

In some ways I found the course a waste of time, in others it was very handy. Hopefully I'll get my reasons across clearly, and maybe provide some food for thought or useful feedback (knowing me this is unlikely!).

For myself this course was aimed at too low a level. Having gone through the quickstart guide, read Rob Allen's Zend Framework in Action, and worked with the framework a little I didn't really get anything too much. I would of liked the course to pick up from the end of the quickstart and develop additional skills.

That said, the course title does clearly state “Zend Framework: Fundamentals ” and in that aspect the course achieves what it sets out to do. Other members of the development team that haven't spent the time looking into the framework finished each session with enthusiasm and asked questions which was really nice to see.

All was not lost, it was good to spend time confirming the basic details of the framework and get to ask a couple of questions in areas where I wasn't 100%. It was also time that I got to sit down each day and think about coding using the framework and future projects, something I wouldn't of been able to do otherwise (can you imagine your company agreeing to that? :) ). Last but not least you also get a nice certificate from Zend to say that you attended the course (albeit by email).

Zend Framework Certification

This was one question that kept coming to mind during the course, would it prepare me for the certification? The quick, easy is a resounding No . The course instructor was quite clear on that with the additional advice that for the certification you should really be using the framework on a day to day basis and feel very comfortable and confident in its usage and methodologies.

Přehled

Given everything I've written above, I'll summarise everything in two easy bullet points:

  • New to Zend Framework: This course does exactly what you'd expect, it gives you a nice introduction to the framework and a good grounding on the basics from which you can build. The course seems to generate interest and enthusiasm for the framework amongst developers.
  • Used the Zend Framework: While it was nice to shore up some of the very basics I felt the time, effort, and funds to take the course could of been better spent elsewhere. It will be nice to see Zend create a new higher level course to take developers to the next level – at least to the standard of certification and beyond. For that I would sign up immediately.












Panorama Téma, které Themocracy

6 návštěvníků online
2 osoby, 4 boty, 0 členů
Max návštěvníků dnes: 13 v 04:02 UTC
Tento měsíc: 13 na 01.10.2011 04:02 UTC
Tento rok: 130 u 28-03-2011 22:40 UTC
Za celé období: 130 u 28-03-2011 22:40 UTC