Категория: Уеб Програмиране

Route искания за sitemap.xml на потребителски контролер / действие

От , сряда 6-ти януари 2010 12:13 ч.

С оглед на преките искания за / sitemap.xml потребителски контролер и действия в прилагане на Рамковата Zend просто добавете следното в application.ini или алтернативни конфигурационен файл (например I използва navigation.ini) :

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = индекс
 resources.router.routes.sitemap.defaults.action = Карта на сайта

Пример код за генериране може да се види, чрез създаване на действия в подходящ контролер (например карта на сайта ми се крие в индекса контролер, карта на сайта действие):

 < PHP
 клас IndexController
     разширява Zend_Controller_Action
 {
     / **
      * Правят карта на сайта, на базата на Zend_Navigation настройка
      * /
     публична функция sitemapAction ()
     {
    	 ехо $ това-> View-> навигация () -> карта на сайта ();
    	 -> View-> оформление () -> disableLayout ();
    	 $ _helper-> ViewRenderer-> setNoRender (вярно);
     }
 }

Sitemaps могат бързо и лесно да бъдат генерирани чрез Zend_Navigation, много бърза начинаещи (и като цяло е много полезна за Zend Framework уроци) , Zend хвърля - динамично създаване на карта на сайта меню и галета.

Zend Framework на Модул настройки, базирани на

От , петък 1 януари 2010 22:40

Аз съм направил follow-на този пост, който изисква по-малко конфигурация, моля, вижте Модул Въз Layout - Zend Framework .

При използване на Zend рамка с модули, очевидно, че ако сте стартирали различни (под) сайтове разстояние същото заявление не е задължително да искат същите скриптове оформление за всяка част . Реших да отида със следната структура на сайта:

  / Приложение
     / Контролери
         ...
     / Модели
     / Модули
         / По подразбиране
             / Контролери
             / Оформление
                 / Скриптове
             / Изгледи
                 / Скриптове
         / AnotherModule
             ...
     / Скриптове

Проблемът е създаване на скриптове за оформление на модулен принцип. Отговорът дойде чрез използване на действие Helper. Създаване на оформления на модулен принцип включва три стъпки:

  1. Application.ini (или подобна конфигурация настройка):
      admin.resources.layout.layoutPath = APPLICATION_PATH "/ модули / администратор / оформления / скриптове"
     default.resources.layout.layoutPath = APPLICATION_PATH "/ модули / по подразбиране / оформления / скриптове"
     member.resources.layout.layoutPath = APPLICATION_PATH "/ модули / член / оформления / скриптове"
     affiliate.resources.layout.layoutPath = APPLICATION_PATH "/ модули / филиал / оформления / скриптове" 
  2. Създаване на вашия помощник за действие:
      <? PHP
     / **
      * Задава оформлението пътя на модулен принцип
      *
      * @ Автор Лойд Watkin <lloyd@evilprofessor.co.uk>
      * @ Тъй 01.01.2010
      * /
     клас Pro_Controller_Action_Helper_SetLayoutPath
         разширява Zend_Controller_Action_Helper_Abstract
     {
         / **
          * Задава оформлението на път, на основата на модули
          * /
         публична функция preDispatch ()
         {
        	 $ Модул = $ това-> getRequest () -> getModuleName ();
    
    	     ако ($ Bootstrap = $ това-> getActionController ()
    	                        -> GetInvokeArg (Bootstrap ")) {
    
    	         $ Довереник = $ Bootstrap-> getOptions ();
    
    	         ако (isset ($ конфиг [$ модул] ['ресурси'] ['оформление'] ['layoutPath'])) {
    	             $ LayoutPath =
    	                  $ Конфиг [модул] ['ресурси'] ['оформление'] ['layoutPath "];
    	             $ Това-> getActionController ()
    	                  -> GetHelper ("оформление")
    	                  -> SetLayoutPath ($ layoutPath);
    	         }
        	 }
         }
     } 
  3. И накрая boostrap помощник за действие:
      ...
         / **
          * Задава оформлението скриптове на на модулен принцип
          * /
         Функция за защита _initLayoutHelper ()
    	 {
    	     $ Това-> Bootstrap ("frontController");
    	     $ Оформление = Zend_Controller_Action_HelperBroker: addHelper (
    	         ново Pro_Controller_Action_Helper_SetLayoutPath ());
    	 }
     ... 

Доктрината: подразбиране DATETIME NOW ()

До , сряда 30-ти декември 2009 18:30

Съм се борят със създаване на база данни схема за новия Zend Framework проекта. Аз съм използване на се опитват да използват доктрината ORM за моята база данни модели. Имам нужда да се създаде схемата, така че позволява на мен да настроите по подразбиране дата и час за колона "DateTime", например при добавяне на ново съобщение получите текущата клеймото. След много търсене и експериментиране намери решение, така че аз съм го споделяте.

В схема YAML файл, просто направете следното :

 Съобщение:
   actAs:
     Timestampable:
       създаден:
         име: created_at
         : клеймото на типа
         формат: Ymd H: аз: S
       обновяване:
         име: last_updated
         : клеймото на типа
         формат: Ymd H: аз: S
   колони:
     ID:
       типово: целочислени
       началното: TRUE
       autoincrement: вярно
     име: низ (255)
     имейл: низ (300)
     съобщение: низ (2000)

Ако от друга страна не искате колона "updated_at", можете да използвате следното:

 Съобщение:
   actAs:
     Timestampable:
       създаден:
         име: created_at
         : клеймото на типа
         формат: Ymd H: аз: S
       обновяване:
         хората с увреждания: вярно
   колони:
     ID:
       типово: целочислени
       началното: TRUE
       autoincrement: вярно
     име: низ (255)
     имейл: низ (300)
     съобщение: низ (2000)

PHP Design Patterns - Observer Pattern

От , вторник 29 декември 2009 г. 22:02

Аз съм бил четене Head First шаблони за дизайн в последно време и реших да напиша някои от моделите като PHP примери за моята собствена полза. Първият от тях, че реших кода си е Observer Pattern . Формалната дефиниция на Observer Pattern е:

Наблюдателят модел (подмножество на асинхронни публикуват / абонирате модел ) е софтуер за дизайн на модел, в които даден обект, наречен темата, поддържа списък на своята издръжка, наречени наблюдатели, и ги известява автоматично на всяка държава се променя, обикновено като се обадите един от техните методи . Тя се използва главно за изпълнение на разпределени системи за обработка на събитие.

Като системи стават все по-слабо свързани, като се уверите, че когато дадено събитие се случва на всички системи, които изискват познаване на тези актуализации са информирани. Например, един блог пост, след запазване на поста можем да се наложи да актуализирате търсачката (например Lucene), актуализиране ни карта на сайта, етикети, електронна поща абонираните потребители, и т.н. наблюдател модел позволява на разработчиците да добавят допълнителни слушатели, без да редактирате техните наблюдаеми обект . Чрез инжектиране на наблюдатели (т.е. търсачка актуализация наблюдател, карта на сайта генератор и др.) В обект (т.е. блог пост система за редактиране), ние може да позволи го да извърши всички необходими актуализации без никакви промени.

Продължи четене "PHP Design Patterns - Observer Pattern" »

Grid Computing Виртуалните среди - част 4

От , петък 4 декември 2009 23:59

Въвеждане

Аз работя в компания, където ще свършим много работни места за пакетна обработка на милиони записи на данни всеки ден и съм мислене наскоро за всички машини, които седят около всеки и всеки ден да прави нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини, за да уплътнят процесорна мощ на нашите системи? В тази поредица от статии, аз отивам да разгледаме потенциалните ползи от наемането на офис мрежа с помощта на виртуализирани среди.

В част 3 , ние създадохме нашата виртуална машина за обработка и настроите Windows машини да се превърне в празен работно време.

Работещи последните код

Неизбежно след създаването на бизнес логика работници ще се промени, ще бъдат открити бъгове по-бързо по-ефективно код ще се произвежда по този начин оставят работниците си седеше около обработка на данни с използване на стар вонящ код . Как тогава да се гарантира, че ние сме винаги да използвате най-новите и най-версия на нашия обработка на скриптове?

Има няколко много лесно прости начини, които можем да направим това, трик, обаче, е да се намали процесорна мощ и мрежовия трафик за постигането на тази цел. Нека започнем с най-простите решения и да го подобрява бавно в продължение на няколко повторения.

Първият метод ще бъде просто да се свърже с нашия сървър за контрол на работата (чрез самба, FTP, или други подобни) и дръпнете надолу най-новата версия на кода. Не е много ефективно, но тя ще си свършат работата. Да подобри, че до известна степен, как, за създаването на една Rsync сценария и че всеки път, вместо? Като алтернатива, какво да кажем за пускането на най-новите ни обработка на скрипт в подривна дейност първоначално преглеждане на кода и след това просто актуализиране на нашия код на всеки цикъл (SVN актуализация)?

В крайна сметка бихме могли в крайна сметка с скрипт Bash (наречен от Cron на всеки 10 минути), което изглежда толкова просто, тъй като това:

  #! / Хамбар / SH
 Ако PS брадва | Впиши срещу Впиши | Впиши PHP > / Dev / нула
 след това
     ехо "Заетост в момента преработка, излизане"
 още
     ехо "работа не е стартиран, започнете сега"
     CD / път / до / работа / копие
     SVN актуализация
     PHP yourJobProcessingScript.php
 FI 

Сега можем да бъдем сигурни, че с всяка серия Определено сме инсталирали последните код. Ние гарантираме това, чрез актуализиране на база на нашия код всеки път, когато изпълняват план и намаляване на мрежовия трафик, като само прехвърляне на файла различия в нашата мрежа.

В моята демонстрация настройка, аз го направих точно както по-горе. Subversion е инсталиран на моя сървър за обработка на работа и аз просто издърпа последните кода от клон "работник", с помощта на "SVN актуализация". Аз също добавя маркер за номера на версията за обработка ми скрипт, който бе върнат в базата данни като част от резултатите връщане. По този начин можех да видя, че моят код се обновява на всеки път, когато ми е копирала багажника на работник клон, т.е., че Определено бях използвате последната обработка скрипт.

Използването на най-новите данни

Ако вашата работа използва преработката на източниците на данни и след това в някакъв момент те ще бъдат актуализирани. Освен ако не се обадите на вашия източници на данни за много редки основа, ти започваш да заливат мрежата с трафик, веднага след като работници започват да текат донесе всичко до застой. За моето решение, реших, че бих искал да се движат моите източници на данни наоколо с моите виртуални машини.

Задръжте сте коне там! Какво става, ако моите източници на данни са огромни? Е, това наистина е случай на колко данни са говорим? Той може да бъде по-рентабилно да инсталирате допълнителен по-голям твърд диск във всяка машина, отколкото за закупуване на допълнителен сървър за обработка. Това е въпрос на бюджета и на бизнеса да решава. Това може би, че източниците на данни са толкова големи, че просто неприложим, за да запази тази сума на данни във вашето работник машини. В такъв случай какво бихте направили? Е, бихме могли да разгледаме свикването на локален сървър на данни, но това може да предизвика проблеми с мрежата . В този случай системата на преносната мрежа, като това може да стане нереалистично да се включат във вашия офис среда. Тя може също така да бъде, че можеш да погледнеш в алтернативни стратегии, например, само да се обадите на работници между 20:00 и 6 сутринта всяка нощ и / или дроселиране искания източник на данни.

Нека продължим, нека нашите данни източници размер до 100GB на данни. Ами да, това е доста малко данни, за да се придвижват в мрежата на актуализация. Как ще се гарантира, че имаме най-новите копие на данните в този случай? Rsync е възможност, но лично аз мисля, че като пуснете последните си източник на данни на вашия сървър за обработка на работа и определяне на това като майстор в репликацията (с хубав дълъг Дневник бин) може да бъде начин да отида:

копиране Чрез настройка на всеки от работниците си като роб на работа актуализации на сървъра за управление на вашите източници на данни ще се стича добре на вашите работници без голямо увеличение на дейността на мрежата (това е, освен ако не изпълняват огромен актуализация на данните и всички работници ритник в наведнъж). Това има предимства пред Rsync по това, че няма да получи дълга пауза преди всяка работа, като осъвременявания на базата данни, MySQL демон на вашият работник постоянно ще актуализира своите данни, а обработката продължава .

Това е, как ми демонстрация сървър. За да зададете до репликация последва ръководство на сайта на MySQL ( Създаване репликация) и в рамките на 20 минути имах inital работник имитиране набор от данни за контрол на работата на сървърите. За всеки работник допълнителни настройки и процеса на репликацията работи всеки път, когато е преписан VM.

Обобщение

В този раздел на статията са се занимавали с колко лесно и безболезнено е да поддържате кода обработка до датата, до using Rsync или subverion (SVN), за да вършат работа и да се намали мрежовия трафик, в същото time. Ние също обсъждат как да запазите вашите данни източник на информация за дата, като позволява да се стича надолу към всеки от вашите работници. По този начин ние площ се гарантира, че сме в крак с бизнес логика и информация в нашата система за офис мрежа. Има очевидно ще бъде безброй алтернативи за извършване на тези задачи, но тук са два прости примери, за да се покаже колко лесно решение е да дойда.

Следващия път

В заключителната част на тази серия, уместно наречена част 5 , ние ще обсъдим внедряване на тази система за Ще обобщим какво е научил и това, което успях да създадете.

Grid Computing Виртуалните среди - Част 3

От , петък 4 декември 2009 23:37

Въвеждане

Аз работя в компания, където ще свършим много работни места за пакетна обработка на милиони записи на данни всеки ден и съм мислене наскоро за всички машини, които седят около всеки и всеки ден да прави нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини, за да уплътнят процесорна мощ на нашите системи? В тази поредица от статии, аз отивам да разгледаме потенциалните ползи от наемането на офис мрежа с помощта на виртуализирани среди.

В част 2 ние погледна на работни места, ще се изпълни със сървър, както и колко работни места трябва да бъдат конфигурирани, за да се постигне най-голям размер на обработка, като същевременно се гарантира, че всяко едно работно място се обработва, без да се провалят.

Създаване на работник или накуцване сървър

Следващата стъпка в процеса е да се създаде виртуална работници. За това аз ще използвам инсталация на CentOS, използвайки VirtualBox. Отивам да инсталирате MySQL и PHP на сървъра, известен също като накуцване (Li Nux, M ySQL, P HP) Server (I може да е направил това име до).

  • Инсталирайте VirtualBox на вашия Windows машина (следват връзка)
  • Свалете и инсталирайте CentOS (текущата версия 5.3) в рамките на създадената виртуална машина

Няма смисъл да ме ще има вероятно 1000 "е от голямо ръководства там (добре де, ето един: Създаване и Managing CentOS виртуална машина под VirtualBox ). Важното е да се отбележи, предполагам, че се обадих на моята виртуална машина GridMachine.

Що се отнася до моят избор на клиент за виртуализация и операционна система не е голям основателна причина за всеки избор. VirtualBox е нещо, което аз използвам за моята домашна машина и е подкрепена от трите основни операционни системи. Аз избрах CentOS като си е добра стабилна OS и го използвам за моя собствен уеб сървър. Аз съм голям вярващ в правилните инструменти за работа (въпреки че аз съм се прилагат "да се използва най-бързият и лесен за вас" манталитет тук), така че, ако операционната система X работи кода си по-бързо и по-ефективно използване, че вместо да:)

Важно уверете се, че VM използва DHCP, в противен случай за всяка нова виртуална машина, ще трябва да бъде конфигуриран отделно, което е нещо, което ние не want.By използва DHCP ние не трябва да конфигурирате мрежовите настройки поотделно за работник машини, DHCP ще ръка от IP адреси за вас. Ето защо можете да копирате вашите виртуална машина за офис, без да се притеснявате за определяне на всеки един (това подобрява скалируемостта и намалява администрацията на работник).

Процесът, който трябва да се стреми да постигне, би била да получи нова физическа машина, да инсталирате VirtualBox, и след това почти мобилизиране на виртуален образ, без много други неща. Това би е разумно да настроите всички работници на различна подмрежа, така че поне можете да видите колко машини са. Вие също така ще трябва да създадат машини на дългосрочни договори за наем или неограничено лизинг DHCP.

Как да стартираме заетост на работника

Това е интересен и има няколко валидни методи за обработка на работни места на работника. Тук аз просто ще обсъдят двете най-очевидните:

  • Вечно стартирания скрипт: скрипт скрипт или PHP скрипт се изпълнява веднъж на работник и работи като част от безкраен цикъл. Съм дисконтирани този метод като един катастрофата на сценария и потенциално вашите работници ще престане да работи без някаква намеса.
  • Cron изпълнението на скрипта: Всеки X минути Cron демона започва призив към вашият скрипт, за да получите неща се случват. Без някаква проверка, това може да доведе до много, много копия на работник скрипт си работи.

Моето решение е да отидете с Cron, който започва шел скрипт на всеки 10 minutes. Моят скрипт извършва следните задачи:

  1. Получите списък на процеса и Впиши това за "PHP". Ако не е намерено след това да продължи.
  2. Обадете се на вашия код за работа, в моя случай това би било нещо, базиран на PHP
  3. Работник скрипт завършва си план
  4. Готови ли сте да отидете отново на следващия подходящ повикване

Bash скрипт ми изглежда нещо като следното:

  #! / Хамбар / SH
 Ако PS брадва | Впиши срещу Впиши | Впиши PHP> / Dev / нула
 след това
     ехо "Заетост в момента преработка, излизане"
 още
     ехо "работа не е стартиран, започнете сега"
     PHP yourJobProcessingScript.php
 FI 

Забележка: ехото са почти напълно безсмислено, но може да помогне на следващия човек, който идва заедно да се опитаме да ги редактирате .

Това заключава, на работника виртуална машина, бърз, прост и лесно да копирате на всяко ново парче на хардуер, който е получил. "Интелигентност" на мрежата, наистина не е в визуализира OS, всички да се направи с код, създаден, за да обработва работни места, работа конфигурация, и като се уверите, че работата се изпълнява, когато е подходящо (т.е. когато домакин е празен ).

Създаване на Windows да инициализира на работниците

Първата задача е да се работи на команда, необходими за работата на виртуалната машина от командния ред на Windows. Ако сте инсталирали VirtualBox в местоположението по подразбиране и сте работник GridMachine след това командата изисква да заредите вашата работникът е:

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

Все пак, за да стартирате скрипта в "обезглавена" състояние, ще трябва да използвате:

  "C: \ Program Files \ нд \ VirtualBox \ VBoxHeadless.exe" startvm GridMachine - vrdp = изключено 

Това ще започне на виртуалната машина без GUI и ще позволи да се спестят държавни грациозно. Вторият аргумент се изключва ПРСР, така че той не противоречи с прозорци ПРСР, или ще ви даде съобщение за слушане на порт 3389. Името на виртуалния машина е чувствителна !

На следващо място, ние ще трябва да настроите прозорците, за да започнат VM работник, след като машината е празен. За да направите това (за Windows XP), ще трябва да отидете на Start -> All Programs -> Accessories -> System Tools -> Scheduled Tasks, както по-долу:

планирани задачи

След това кликнете върху "Добавяне на планирана задача", последвано от Преглед, за да добавите потребителски програма. Придвижете се до вашата VBoxManage скрипт и щракнете върху OK. График вашата задача за някоя от опциите (ние ще променим това в минута) и да продължи. След като прескочите следващия екран Windows ще поиска от вас, които искате да изпълните тази задача, бих предложил или "Администратор" или създаването на нови привилегировани потребител. Запомнете, ние не искаме да се намесва в стандартен акаунт персонал на машината във всяка точка. Щракнете върху Напред и проверката покажат, разширени опции за изпълнението на тази задача.

До края на надпреварата виждаш добавите нашия низ "startvm GridMachine" и да се гарантира, които работят само, когато са влезли в лявата unticked. Посетете задачата график и промяна на графика падащото опцията "когато бездейства", изберете размера на път, когато искате машината да бъде мързелив, преди да преминат към следващия раздел.

Накрая untick опция, която гласи, спиране на задача, ако тя е Х количество време, но маркирай възможността да спрете задачата, ако машината вече не е празен.

разписание

Това е то тогава за домакин за инсталиране на Windows!

Обобщение

В тази част ние имаме създадена една виртуална машина, за да действа като работник, както и начина, по който, в който ние наричаме и изпълнение на скриптове за обработка на работа (за себе си скрипт на PHP). От тук ние гледаме как да се създаде копия на Windows, за стартиране на виртуалната машина в обезглавен режим, когато компютърът става празен, и запишете на състоянието му, когато потребителят се връща в използването на машината. Надяваме се в този момент вие виждате колко просто е да се създаде такава система и са сърбеж да получите някои експерименти себе си ще!

Следващия път

В част 4 , ние ще се търси в използването на инструменти, за да се гарантира, че вие сте най-новата версия на кода и източници на данни, така че получените резултати са винаги в крак с времето с най- новите бизнес информация и логика.

Grid Computing Виртуалните среди - Част 1

От , петък 4 декември 2009 23:23

Въвеждане

Аз работя в компания, където ще свършим много работни места за пакетна обработка на милиони записи на данни всеки ден и съм мислене наскоро за всички машини, които седят около всеки и всеки ден да прави нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини, за да уплътнят процесорна мощ на нашите системи? В тази поредица от статии, аз отивам да разгледаме потенциалните ползи от наемането на офис мрежа с помощта на виртуализирани среди.

Като PHP разработчик Отивам да се използват инструменти, че аз използвам всеки ден, а именно , Linux, MySQL, PHP, VirtualBox и подривна дейност ( SVN). Все пак аз се надявам това ръководство ще се адаптира към други езици и технологии, също толкова добре.

Решението ще бъде много свободно на базата на вида на обработката, за това ще трябват, за да се постигне обаче, това не може да бъде вярно, чрез цялата статия, аз ще променят нещата за простота, или да произвеждат по-интересни сценарии за употреба.

Тези виртуализирани среди ще се движат по Windows машини, тъй като това е това, което по-голямата част на офиси продължава. Обработката, че офис машини не бива да се намесва с персонала, като се използват тези машини, следва да се изисква никаква поддръжка на машината, и лесно да се разгърнат нови машини, тъй като те станат достъпни. Също така, нови виртуални машини не трябва да изисква допълнителна конфигурация, тъй като това значително намалява мащабируемостта и лекотата, с която системата на преносната мрежа може да бъде удължен.

Защо да се мобилизират Grid Computing на Office?

На първо място може да се мисли, защо не просто използвайте ресурс за изчислителни облаци, като платформата на Amazon EC2? Ами причините биха могли да бъдат няколко, например:

  • Вие не можете да възложи определени данни за околната среда за клауд компютинг
  • Вие не може да постави определени данни в околната среда за клауд компютинг за юридически причини (например данните за напускане на страната), потенциално по юридически причини, например NHS записи.
  • Вие искате да запазите вашите процесори отблизо и да имат пълен контрол над хардуера
  • Не е нужно средствата по проекта да тече облак случаи
  • Вашият офис не разполага с връзка към интернет и следователно не е възможно да се използва ресурс облак
  • Вие не обичат дъжд, облаци показват, дъжд, затова ви държи далеч

Аз съм сигурен, че може да продължи списъка, но мисля, че това е достатъчно за сега.

Предимства на Office Computing Grid

Е, нека се направят някои математика (и в истинския физика стил ви позволява да направи някои метене предположения). Представете си, че имате големи обемни сървър за обработка на 100 работни места на ден. В офиса си, имате 50 машини, които не са активни 16 часа в денонощието, всеки един от тези машини е 10%, както е мощен като обемни обработка на север. (Всички резултати тук се закръгляват, за да се подценява увеличаване на ефективността).

Така че, 1 машина * 10% мощност * 2 / 3 = 0.067 т.е. 1 десктоп обработка в режим на време биха могли да обработват 6 пълни работни места на ден.

Ако сега мащаб до около 15 бездейства настолни компютри за обработка на колкото се може повече работни места на ден, като главния сървър за обработка.

Така че в преструвам нашия офис от 50 машини, бихме могли да увеличим нашата процесорна мощ от 1 сървър до 4 пълни сървъри обработка, или бихме могли да се обработва 400 работни места на ден, вместо 100.

Забележете, не се инвестира в нов хардуер вашата компания току-що увеличи капацитета си за пакетна обработка 4 пъти ! Потенциално ти започваш да се увеличи консумацията на енергия, но от най-офис среди, аз съм бил на машините като цяло са оставени на една нощ или иначе, така че бихте могли да видите това като зелена инициатива.

Други предимства също означава, че инвестициите в нови (или актуализират) обработка на сървъри може да бъде отложено, ако вашият офис машини са достатъчни и че като подобряване на мощността на вашия офис машини офис мрежа става все по-мощен автоматично.

Технологии

Какво ви трябва? (Или по-правилно какво съм използвал):

  • Режим на офис техника (в моя случай резервни стар Windows XP лаптоп)
  • VirtualBox (или друг клиентски софтуер за виртуализация)
  • А виртуалната машина с PHP, MySQL running работи изсече OS, Обаждам се тези ми Limp сървъри:)
  • Работни места, да тече
  • Работа сървър (може да бъде друга виртуална машина някъде)

Типичните работни места

Видовете на работни места, че тази система е проектирана да работи е както следва:

  • System получава списък на данните, на които ние трябва да отговарят и да се върнете на резултатите
  • Matching включва проверка / търсене на няколко (доста статични) източници на данни
  • Резултатите от източниците на данни може да изисква по-нататъшно утвърждаване, сливане, проверка на допълнителни източници на данни в отговор на резултатите
  • Данните се връща със съвпадащи записи, се оправдаха напълно и преработени
  • Всеки запис в рамките на работа е независима от останалите

Така че основно ние не търсим изпълняващ работни места, които се нуждаят от смес на база данни заявки и някои броя схрусква доста типичен сценарий в бизнес среда.

Grid решения не са изгодни само за обработка на работни места от този тип. По принцип, всеки процес, който могат да бъдат разделени в самостоятелни единици могат да се стартират паралелно. Вижте тази Уикипедия за примери и повече информация: Grid Computing , но няколко от известните примери са SETI @ Home и BIONC . Има на рамки за управление на компютърни мрежи, и те са добре да се търси в.

Какво ще постигнем?

До края на тези членове се надявам да покажа, че разполагането на офис мрежа не трябва да бъде изключително скъп или отнема време. Отивам да обсъдим:

  • Създаване на система за контрол на работата, работа конфигурация
  • Създаване на подходяща за преработка на виртуална машина
  • Как да настроите системата на машина на Windows
  • Осигуряване използвате последните код и данни
  • Внедряване и бенчмаркинг
  • В перспектива

Аз ще бъда сграда (добре де, тогава аз построих пише това) пример за приложение, за да тестват концепциите на локалната машина с помощта на Windows XP и ми "GridMachine" виртуална машина. Моя сървър за контрол на работата ще бъде моята основна машина, която работи Fedora 11.

Това е по никакъв начин не означава да демонстрира напълно стабилна система, означава повече на демонстрация и обсъждане показва, че тези неща могат да бъдат постигнати в разумно кратък период от време и при минимални разходи. Моля, чувствайте се свободни да ми изпратите всички коментари, корекции или подобрения и аз ще направя всичко по силите си, за да запази тази статия, актуализират, за да съвпадат.

Следващия път

В част 2 ще започне от търсене в системата за контрол на работа, и търсят в това, колко работни места трябва да бъдат конфигурирани, за да се постигне най-голям размер на обработка, като същевременно се гарантира, че всяко едно работно място се обработва, без да се провалят.

Grid Computing Виртуалните среди - Част 2

От , петък 4 декември 2009 23:23

Въвеждане

Аз работя в компания, където ще свършим много работни места за пакетна обработка на милиони записи на данни всеки ден и съм мислене наскоро за всички машини, които седят около всеки и всеки ден да прави нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини, за да уплътнят процесорна мощ на нашите системи? В тази поредица от статии, аз отивам да разгледаме потенциалните ползи от наемането на офис мрежа с помощта на виртуализирани среди.

В част 1 , дадох на преглед на системата и технологии, ще се използва, както и обсъдени някои от потенциалните причини, поради които бихте искали да се създаде мрежа в офиса.

Контрол на работата

Ако ти започваш да се работи работни места след това ти започваш да се нуждаят от някакъв начин да ги управляват. Вашата система за контрол на работата на вашия сървър за работа трябва да бъдат наистина добре обмислени, преди дори да се опитват да тече офис мрежа. Така че на първо място, какви са задачите, за система за контрол на работата:

  • Раздайте работни места при поискване от работещите в
  • Кажете на работниците, какъв вид на работните места да тече
  • Track работни места
  • Уверете се, че работните места са се изпълнява само веднъж
  • Осигуряване на работа данни за работниците, или най-малкото да им кажа къде да го получите

Системата също така трябва да бъде разширяем, решение, което работи за сега в един случай може да бъде удължен, за да стартирате няколко вида на работни места, тъй като бизнес вижда стойност в мрежа разтвор. Например, създаването на работни места могат да получат на приоритети, може да съществува повече от един вид работа (т.е. няколко бази код), в крайна сметка дори може да стартирате няколко различни машини работник, които са оптимизирани за всеки вид работа (въпреки, че се движи далеч от "генерично работник "идеята). Винаги се опитваме да мислим за бъдещето, когато разработват системи, кратко визия план може да доведе до дългосрочен план чувство на неудовлетвореност и увеличаване на времето за развитие.

Работа Сървър

Ние ще трябва някъде да контролират нашата работа от това трябва да бъде единствената система във вашата мрежа, който има постоянен Resource Locator, е, че милион IP адрес, името на хоста, URL (с помощта на вътрешен DNS) и т.н. Това е така, защото работниците трябва да знаете къде да търсите за работни места, работниците трябва да се намери работа на системата за контрол (не е система за контрол на работа намеря работниците).

Работата самия сървър не наистина сложна задача (в основната система, така или иначе), тя трябва да съхранява списък на работни места, раздават работни места, получаване на резултати, и впоследствие да ги съхранява за по-късно извличане. Как се определят тези части (като "страна, работни места") може да бъде най-основните. Късно нататък можем да се разшири системата да включва интерфейс за администрация, да добавяте, редактирате, изтривате, да спре работни места, но това е извън това упражнение.

Няма причина, каквато и след това, че работата на вашия сървър не може да бъде виртуална машина в рамките на основната обработка на сървъра, при условие че не се източва твърде много ресурси от него. Сървъра работа обаче се нуждае от висока достъпност, ако тя отива надолу в петък вечер, ти започваш да се загуби цял уикенд на обработка, потенциално ви струва няколко седмици, стойността на времето за обработка (в сравнение с основната си преработка сървър сам) . Може да искате да разгледа пускането си на работа сървър на натоварване балансирана среда за висока достъпност.

Basic Setup

Основните настройки за нашата работа сървър ще се състои от какво Обаждам се на един от моите Limp сървъри (която е Li Nux, M ySql, P HP) . Код, работещ върху работниците на Теа, действително ще работи, какви работни места може да работи, като взаимодейства с бази данни за работа на системата за контрол. Късно бихме могли да създаде уеб услуги и всъщност раздават работни места, отколкото работниците твърдия себе си работа, но за сега ние ще продължим с помощта на KISS принцип (Дръжте го прости, глупави!) .

Така че, нека създаде три MySQL таблици, за да се справят с работни места. 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

Както бе посочено по-рано, работниците ще направим всичко управление на работа за нас, за сега, така че всички ние наистина трябва да направите, е да намерите работа, която се нуждае за обработка и да получите информация. Как ще правим това? Ами вземете нашите критерии за подбор на работа и търсят работа в SQL направих следното:

  1. Вземете всички работни места, които не са маркирани като завършен, но от нашите работник и да ги възстановите (заместител __ME__ с идентификатор, най-лесният ще бъде IP адрес):
      UPDATE "работни места" SET "статут" = 0, където "статут" = 1 и "started_by" = __ME__; 
  2. Използването на нашите критерии за избор на работа, изберете работа и кажете на системата за контрол, че този работник се занимава с него:
      UPDATE "работни места", "статут" = 1, "started_by" = __ME__: started_at "= NOW () КЪДЕ" статут "= 0 или
     ("Статут" = 1 и "started_at"> DATE_SUB (NOW (), интервал X час)) ORDER BY `ID ASC; 

    Като вземете работни места, които не са се върнали резултати в размер X на време, ние гарантираме, че всички работни места се изпълняват в случай на работник, който след срив или ще несигурен.

  3. След това взимаме детайли работни места, последвани от самите записи:
      SELECT * ОТ "работни места", когато "started_by" = __ME__ LIMIT 1;
     SELECT * ОТ "job_records" КЪДЕ "ID" = __JOBID__; 

След приключване на работа ние вмъквате резултат нашите записи и маркирате работа като пълно. Не забравяйте, като заетостта може да доведе до преустановяване / възобновяване по всяко време да се даде възможност за някои стабилността в скрипта ви. То може да бъде, че задачата спира половина начин, чрез осъвременяване на системата за контрол на работата, така че проверка на броя на записите в работа и броя на резултатите, записани на система за контрол на работата ще бъде мъдър ход.

В допълнение, а това показва, колко работни места могат да бъдат избрани и управлявани от една SQL заявка рамка, ти трябва наистина да бъде абстрахиране контрол на работата, така че ако сте решили да преминат към използване на уеб услуги, базирана система файл, XML , или всяка друга брой на инсталациите няма да повлияе на кода по-горе.

Работа Конфигурация

Следващият аспект е да се помисли работа размери и конфигурация. Играейки с конфигурация на работа, ние можем да постигнат отличен баланс между скорост, процеса на репликация, и надеждност. Вземете OFA няколко сценарии

  1. Работа 1 ден всеки да тече: Това означава, че вашите работници се нуждаят от 15 дни за обработка на всяко едно работно място (не забравяйте 10% от мощността за 2/3rds на време ). Това очевидно не е мъдър конфигурация, вашата работа размер е твърде голям! Това ще отнеме най-малко двойно време, за да получите преработен работа първоначалната работник трябва да отиде несигурен време да вземете, че не е върнал резултат плюс време за преработка на отработено гориво. В един идеален искате да има поне един пълен работа, лесно се изчиства от края на всеки един продължителен период на престой, по този начин да запази работни места, тиктака и в най-лошия случай работа ще отнеме два дни на процес, трябва първо да отида липсва.
  2. Работа вземат 1 минута, за да се изпълнява: Това означава, че работниците си да отнеме около 15 минути, за да стартирате всяка работа. Въпреки това първоначално може да изглежда идеално, да получат допълнителна обработка работа по време на обяд път, кафе-паузи, срещи и др.., Този сценарий поставя натиск върху други области на вашата система и въвежда собствените си проблеми. Например, на първо място настройка / коефициент на времето за обработка ще отиде чак, поради загуба на ефективността на системата. Вашата мрежа ще бъде постоянно стрийминг работа информация за различните работници разочароващ персонал, които са донг им ден на ден работа. Вие също така ще се сложи повече щам на вашия сървър за обработка на работа, тъй като трябва да ястие много и много малки парчета на работа на регулярна основа. На последно място, в тази ситуация, ако работата ви сървър върви надолу, започваш да се създаде огромен влезете обратно на недовършена работа като има предвид, по-големи работни места може да продължи обработка на блажено неведение, че работата сървър изпитва трудности.

В действителност няма да има никой идеалната конфигурация за настройка на вашата мрежа, много зависи от наличните ресурси, видове работа, изисквания за работа, време за изпълнение, мрежови възможности, и така нататък. Въпреки това някои насоки ще бъдат:

  • Размер на работни места, така че всеки работник може да получи чрез поне 3-4 работни места в период от 15 часа (най-дългата вероятно празен период от време)
  • Играйте с размер на работа, така че време за настройка става сравнително незначителни в сравнение с времето за обработка (като се има предвид горната точка).
  • Ако работата не завърши в двоен размер на време (може би по-малко), които очакват да завършат приемем, че си отиде несигурен и започнете да го обработка с друг работник. Това означава, че може да се наложи да изчакате до три пъти нормалната продължителност на работа за нея, за да завърши (вероятно по-дълъг, ако последващата работа се провали). Може да искате да се намали това време, но бъдете внимателни да не го намали прекалено много, тъй като може да започне дублиране на задачи за обработка на регулярна основа.
  • Работни места трябва да са независими от външни изисквания, колкото е възможно повече. Работата сървър, например, трябва да се свърже в началото и края на всяка работа.
  • Да не се насити вашата мрежа, това ще има две отрицателни реакции през деня, вашият персонал ще откриете, че използването на мрежата разочароващ и проблеми може да бъде опит с връзки, времето проблем, че само ще се влоши, тъй като мащабирате вашата мрежа.
  • Осигуряване на работни места може да работи на вашия работници. Ако работни места стават твърде памет интензивно или дисково пространство интензивни работни места ще започне да се прекъсват, и единственото нещо,, което ще забележите е спад в броя на работните места, които се обработват без реална причина, защо.

Подаване Резултати на работа

При представянето на резултатите от работа, е важно да се провери, че резултатите не са били подадени от друг работник, особено ако работникът е бил в латентно състояние за известно време.

Когато резултатите са представили се гарантира, че броят на резултатите съвпада с броя на записите в рамките на работа.

Както е посочено по-рано, и не може да бъде над подчерта, изграждане на толерантност към грешки в работата извличане и представяне на резултатите. На работниците (и най-вероятно ще) в режим за спиране на най-неудобната пъти и това трябва да се обслужват. Също така отново абстрахиране далеч резултатите си представяне ще се погрижат за бъдещи промени вашата система за контрол на работата много по-лесно да се справят с.

Обобщение

В това section ние сме разглеждали какво трябва да направи сървър за контрол на работа и как да се получи един много основен система, създадена. Ние обсъдихме как да извлечете работа от системата за контрол и най-добрия начин за конфигуриране на работни места, за да получите най-ни за вашата система офис мрежа. За да приключите, параграф или два за подаване на резултатите обратно към сървъра за контрол на работа.

  • А сървър за контрол на работата управлява работни места и гарантира, че всички работни единици са завършени
  • Чрез абстрахиране работата си изберете / резултати подаване можем да променим технологията на сървъра за управление без много проблеми
  • Конфигуриране на вашите работни места, за да се гарантира, че те се стартират бързо и ефективно, без да излагат на твърде голям натиск върху мрежовата си инфраструктура, и без дублиране на задачи за обработка на регулярна основа.
  • Уверете се, че изграждането на отказоустойчивост и checking грешка във вашите рутинни, работниците могат да спира и възобновява и най-неудобната пъти. Не забравяйте да проверите, ако резултатите вече са подадени от друг работник.

Следващия път

В част 3 ние ще създадем виртуална машина за обработка и нашите прозорци машини, за да стане празен работно време.

Grid Computing Виртуалните среди - част 5

От , петък 4 декември 2009 23:03

Въвеждане

Аз работя в компания, където ще свършим много работни места за пакетна обработка на милиони записи на данни всеки ден и съм мислене наскоро за всички машини, които седят около всеки и всеки ден да прави нищо в продължение на няколко часа. Не би ли било добре, ако можем да използваме тези машини, за да уплътнят процесорна мощ на нашите системи? В тази поредица от статии, аз отивам да разгледаме потенциалните ползи от наемането на офис мрежа с помощта на виртуализирани среди.

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. Така че,

  • 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.

Разгръщане

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.

Спри!

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.

The virtual machine was set up with PHP, subversion, and 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

Следващият очевиден стъпка ще бъде да се получи истински пример за света и започне да разположи система като тази в офис среда, и да видим какво ще се случи. Задаване на бизнеса да се ангажира с това, без пътека пламнал компания, за да докаже, технологията и ефективността може да бъде малко по-трудно. Grid / разпределени изчислителни е много популярен, някои кръгове и има някои големи приложения (BIONC, SETI @ Home, Folding @ Home, и т.н.). Аз не, обаче, да намерите по-малък мащаб и проста система като тази в моите търсения, които биха могли да се разточва в офис среда.

Аз създаде принципно безплатна система, която използва най-вече софтуер с отворен код и инструменти, които са на разположение в почти всеки офис. Технологиите са основно демонстрирани и да се покаже, да изпълнява и да работят както се очаква. Надявам се, че показват, че с не много работа и с една много проста настройка можете да разположите офис система за грид-технологията, която е мощен, евтини, а и мащабируема всички в същото време.

След като системата е създаден и работи там е почти няма край в размер на персонализация и подобрения, които можете да направите. Например статистика / бенчмаркинг може лесно да се добавят показва ценността на такава система всеки ден. Нови машини могат да се добавят бързо и лесно, както и когато те пристигат с актуализиране на съществуващия хардуер, стимулиране на процесорна мощ.

Надявам се, че сте обичах да чета тази поредица от статии и му дава храна за размисъл върху система за офис мрежа. Решението, представени тук, не е задължително да работи във всички ситуации, но трябва да се приспособява, за да се даде възможност да се свърши за обработка на данни, използвайки собствените си решение.

Моля, чувствайте се свободни да ми изпратите всички коментари, корекции или подобрения и аз ще направя всичко по силите си, за да запази тази статия, актуализират, за да съвпадат.

Zend Framework: Основи - Общ преглед

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.

Фон

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.

Обобщение

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.












"Панорама" Тема чрез Themocracy

7 посетители на линия
5 гости, 2 ботове, 0 потребители
Макс посетители днес: 22 в 06:15 ч. UTC
Този месец: 23 24-08-2011 05:40 ч. UTC
Тази година: 130 в 28-03-2011 22:40 UTC
През цялото време: 130 в 28-03-2011 22:40 UTC