Categoría: Artigos

Oauth / Twitter auth Adaptador para Zend Framework

Por , sábado 23 de abril de 2011 15:57

O traballo continúa (lentamente) no meu novo de Twitter aplicación baseado. Nos próximos dous días de festa Espero conseguir o ritmo de novo no proxecto (a pesar de que o tempo marabilloso no presente). En fin, a miña próxima tarefa era crear un adaptador de autenticación para o Zend Framework . Eu tiña unha aplicación de acceso de traballo, pero ter unha caída na auth adaptador para Zend Framework parecía ser unha proposta atractiva, eu o creei ....

(Eu non vou pasar por OAuth ou rexistrar a súa aplicación con twitter, hai centos de guías e seu proceso de unha moi sinxelo de calquera maneira.)
Continuar 'OAuth / Twitter auth Adaptador para Zend Framework' lendo »

"Entrar con Twitter" usando o Zend Framework

Por , xoves 17 marzo de 2011 01:07

A pesar de todas as odio Twitter no momento, teño a intención de crear un novo Twitter aplicación baseado. Ser alguén que xestiona varias contas (tanto persoal como para o meu traballo de caridade) Eu teño que necesitan unha ferramenta por algún tempo que eu estou só comezando en torno a escribir (máis que nun futuro próximo ...).

Xa lin encima Zend_Oauth_Consumer e como se pode usar para obter autorización para interactuar con Twitter usando OAuth . Todo ben, eu teño a miña clave de acceso e podo alegría pos afastado en nome dun usuario. Hai unha abundancia de recursos aí fóra para facelo por iso non vou aborrecer a xente.

O paso seguinte foi permitir que a xente a volver á páxina web, faga o login e modificar a súa conta. Este é o lugar onde eu alcance un pequeno problema. Usando os exemplos de código en sitios significaba que eu tería Twitter me pedindo autorización de acceso de novo para cada sesión, non é bo. Dixitalización a través do cadro eu non podía ver nada que me permita só solicitude de autenticación. Isto non quere dicir que o seu non hai, pero non parecía ser un mecanismo de autenticación que pode ser chamado sen saber o token de acceso xa.

As alternativas eran a posta en marcha dun rexistro-site con sede en tenda ou de algunha forma de cadea de acceso do usuario no cliente (cifrado, por suposto). Ningunha desas parecía unha boa solución / axeitado.

Continúe lendo '"Iniciar con Twitter" usando Zend Framework' »

Zend Certified Engineer (ZCE) 5.3

Por , xoves setembro 30, 2010 9:00 pm

Co lanzamento oficial do programa Zend Certified Engineer (ZCE) para 5,3 pensei en dar a miña impresión rápida do que eu pensaba do exame.

Un pouco de fondo en min mesmo: eu fun introducido primeiramente para PHP preto de 7 anos e ten traballado profesionalmente en PHP dende 2006. Eu actualmente traballo para unha emocionante start-up chamada Brightpearl con sede en Bristol, Reino Unido , producindo CRM integrado, contabilidade, comercio electrónico e software. Eu non teño obtido anteriormente calquera das cualificacións ZCE anterior. Eu actualmente se desenvolven na serie 5.2.x e non teñen realmente utilizado calquera dos recursos específicos 5,3 (estou á espera de Zend Framework 2 e Doutrina 2) nos meus proxectos de desenvolvemento.
Continúe lendo 'Zend Certified Engineer (ZCE) 5.3' »

Quick Start Symfony DI (Inxección de dependencias) Tutorial

Por , sábado 14 de agosto de 2010 14:21

¿Que é Injeção de Dependencia (DI)?

Inxección de dependencia é unha técnica que permite a obxectos feblemente encaixados dentro dun programa de software. Xeralmente, se un obxecto require acceso a funcionalidade dun outro que sería instanciado internamente levando a sistemas fortemente encaixados. A través da implementación de inxección de dependencias que inxectar os obxectos necesarios listo para o seu uso (por veces tamén referida inversión de control - COI). Tomé o seguinte exemplo:

  <? PHP
 decisor clase {
     makeDecision función pública (array $ Parameters) {
         / / Necesita un adaptador de base de datos
         $ DP = new DecisionParameters ();
         ParameterScore $ = $ dp-> getScore ($ parámetros);
         / * ...  Lóxica de decisión un pouco máis ...  * /
         return ($ parameterScore> 50);
     }
 } 

Este anaco de código dise ser fortemente encaixados ao obxecto DecisionParameters. Reescribir o anterior de forma flexible, teríamos algo ....

  <? PHP
 decisor clase {
     private $ _dp;
     public function __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     makeDecision función pública (array $ Parameters) {
         ParameterScore $ = $ this-> _dp-> getScore ($ parámetros);
         / * ...  Lóxica de decisión un pouco máis ...  * /
         return ($ parameterScore> 50);
     }
 } 

Aínda que a gañar os beneficios de código de baixo acoplamento estamos engadindo complexidade tal que cada vez que un obxecto é instanciado tamén temos que instancias súas dependencias e pasar estes en demasiado. Por exemplo, esta:

  = $ Escolla decisor new ();
 echo $ escolla> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta')); 

torna-se agora:

  $ DP = new DecisionParameters ();
 $ Escolla = new decisor ($ dp);
 echo $ escolla> makeDecision (array ('esforzo' => 'Baixar', 'return' => 'alta')); 

Esta situación faise máis doloroso como o número de dependencias dunha clase é aumentado, e que as dependencias propias dependencias? Isto pode rapidamente converterse nun pesadelo administración obxecto! Introduza recipientes de inxección de dependencia (ou frameworks) ...
Continúe lendo 'Quick Start Symfony DI Tutorial (Inxección de dependencias) »»

Zend_Layout espido e Zend_View

Por , martes 10 de agosto de 2010 23:47

Neste artigo eu ollar para usar Zend_Layout e Zend_View xunto cun controlador de fronte simple para amosar como se pode comezar a separar lóxica de negocio e presentación dentro da súa aplicación. Todo o código está dispoñible en github:
Zend_Layout espido e Zend_View no GitHub .

Continuar 'Zend_Layout Núa e Zend_View' lendo »

Zend Framework per opcións de deseño Módulo - Seguimento

Por , martes 16 de febreiro de 2010 20:48

No seguimento ao meu post anterior sobre a configuración de deseño por módulo base para a Zend Framework , eu actualice o código para esixir menos que antes de configuración (non que fose necesario máis que un par de liñas na configuración da aplicación!).
Continúe lendo 'Zend Framework per opcións de deseño Módulo - Follow Up' »

Creando URL no Zend personalizado View helper

Por , xoves 28 xaneiro de 2010 11:01

Isto pode parecer sinxelo, pero eu estaba batendo a cabeza intentando crear un URL nun auxiliar exhibición personalizada no Zend Framework . Teño configuración de enrutamento que recibe o módulo do sub-dominio en uso para que eu non podería usar unha URL simple hardcoded.

Continuar 'Creando URL no Zend personalizado View helper "lendo»

Reenviar peticións de sitemap.xml para o controlador custom / acción

Por , mércores 6 de xaneiro de 2010 12:13

, Co fin de solicitudes directos de / sitemap.xml para un controlador de costume e acción na súa Zend Framework aplicación basta engadir o seguinte no seu application.ini ou arquivo de configuración alternativo (por exemplo, eu uso navigation.ini):

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

Código de exemplo para a saída se pode ver a través da creación dunha acción no controlador apropiado (por exemplo, o meu sitemap reside no controlador de índice, a acción sitemap):

 < php
 clase IndexController
     esténdese Zend_Controller_Action
 {
     / **
      * Renderiza un sitemap con base na configuración Zend_Navigation
      * /
     sitemapAction función pública ()
     {
    	 echo $ this-> view-> navegación () -> sitemap ();
    	 $ This-> view-> esquema () -> disableLayout ();
    	 $ This-> _helper-> ViewRenderer-> setNoRender (true);
     }
 }

Sitemaps pode rapidamente e facilmente ser xerada mediante Zend_Navigation , un gran tutorial rápido (e xeralmente moi útil para tutoriais Zend Framework) é Zend Casts - dinamicamente crear un menú de un sitemap e pan relado .

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 4

Por , venres 04 de decembro de 2009 11:59

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote de procesamento de millóns de rexistros de datos cada día, e eu pensei recentemente sobre todas as máquinas que se sentan arredor de cada e cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizado.

Na parte 3 , creamos a nosa máquina de procesamento virtual e configurar o Windows para facer máquinas de tempo ocioso dos traballadores.

Executando o código máis recente

Inevitablemente despois de crear a súa lóxica de negocio traballadores vai cambiar, erros serán atopados, código máis rápido máis eficiente será producido deixando así os seus traballadores se sentaron ao redor de procesamento de datos mediante código smelly idade . Como entón garantir que estamos sempre empregando a versión máis recente e máis grande do noso procesamento de scripts?

Existen algunhas formas simples moi fácil poderiamos facelo, o truco, con todo, é reducir o poder de procesamento e tráfico de rede para acadar isto. Imos comezar a máis simple das solucións e mellora-lo lentamente ao longo dun par de iterações.

O primeiro método sería simplemente conectar co noso servidor de control de traballo (vía samba, FTP ou similar) e tire abaixo a última versión de código. Non moi eficiente, pero vai facer o traballo. Permite mellorar iso un pouco, como sobre a creación dun script e usando rsync, que cada vez en vez? Alternativamente, que tal colocar o noso guión máis recente transformación en subversión analizar o código inicialmente e despois só actualizar o noso código en cada execución ( svn update )?

Ao final, pode acabar con un script bash (chamado polo cron cada 10 minutos), que parece tan sinxelo coma isto:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 entón
     echo "Job está a procesar, de saída"
 outro
     echo "O traballo non está en execución, comezar agora"
     cd / camiño / a / de traballo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Agora podemos estar seguro de que cada rolda estamos sempre en execución o código máis recente. Estamos a garantir que a actualizar a nosa base de código cada vez que facemos unha carreira e reducindo o tráfico da rede, transferindo só as diferenzas de arquivos a través da nosa rede.

Na miña configuración de demostración, eu fixen exactamente como descrito anteriormente. Subversion foi instalado no meu servidor o procesamento do traballo e eu simplemente tirou o último código dun "traballador" filial usando 'svn update ". Eu tamén engade unha etiqueta número de versión para o meu guión de procesamento que foi devolto á base de datos como parte do retorno de resultados. Desta forma puiden ver que o meu código estaba sendo actualizado cada vez que eu por favor copie o meu tronco para o sector de traballo ou sexa, que eu estaba definitivamente executar o script de procesamento máis recente.

Empregando os datos máis recentes

Se o seu procesamento de traballo fai uso de fontes de datos, a continuación, nalgún momento estes van ser actualizados. A menos que vostedes chaman de ningunha fonte de datos en unha base moi pouco frecuente que está indo a inundar a rede con tráfico, logo que comezar a funcionar os seus traballadores traendo todo a unha paralización. Para a miña solución decidín que me gustaría mover as miñas fontes de datos en todo cos meus VMS.

Manteña está cabalos alí! E se as miñas fontes de datos son enormes? Ben este é realmente un caso de a cantidade de datos que estamos a falar? Pode ser máis rendible para instalar unha maior disco duro adicional en cada máquina que mercar un servidor de procesamento adicional. Esta é unha cuestión de orzamento e é ata a empresa para decidir. Poida que sexa que as súas fontes de datos son tan grandes que é só inviábel para manter esa cantidade de datos en máquinas de seu funcionario. Nese caso o que faría? Ben que poderiamos ollar para chamar a un servidor de datos local, pero isto pode causar problemas coa rede. Neste caso, un sistema de rede como esta pode chegar a ser irrealista para incluír no seu ambiente de escritorio. Pode ser tamén que podes ollar para estratexias alternativas de execución, por exemplo, só chamar seus traballadores 20:00-06:00 cada noite e / ou optimización de solicitudes de datos de orixe.

Seguindo adiante, imos dicir os nosos datos cantidade de fontes de 100Gb de datos. Ben, si que é un pouco de datos para desprazarse na rede nunha actualización. Como seguro que temos a copia máis recente dos datos neste caso? Rsync é unha posibilidade, pero persoalmente creo que, executando a súa fonte de datos máis recentes sobre o seu servidor de procesamento de emprego e como facer esa configuración como un mestre na replicación (cun ​​rexistro bin longa e agradable) pode ser o camiño a seguir:

replicación Definindo cada un dos seus traballadores como un escravo para o traballo actualizacións control de servidor para as súas fontes de datos vai pingar para abaixo moi ben para os seus traballadores, sen un gran aumento na actividade da rede (que é a menos que realizar unha actualización de datos enorme e os seus traballadores chutar á vez). Isto ten vantaxes sobre o rsync en que non tería unha longa pausa antes de cada traballo, como as actualizacións da base de datos, o mysql servizo no seu traballo continuamente actualizar os seus datos ata completar continúa.

Isto é como eu configurar meu servidor de demostración. Para configurar a replicación seguín a guía na páxina web de MySQL ( Configurar replicación ) e dentro de 20 minutos eu tiña o meu traballo inital replicar o traballo conxunto de datos control de servidores. Por cada traballador adicional a configuración de replicación e proceso funciona cada momento en que o VM foi copiado.

Resumo

Nesta sección do artigo vimos como é doado e indolora, é para manter o seu código de procesamento ata a data por using rsync ou subverion (SVN) para facer o traballo e reducir o tráfico de rede na mesma time. Tamén discutir como para manter a súa información de fonte de datos up-to-date, permítelle escorrem para cada un dos seus traballadores. Así, área que garanta a manter-se coa lóxica de negocio e información no noso sistema de rede de oficina. Evidentemente haberá moitas alternativas para a execución destas tarefas, pero aquí foron dous exemplos sinxelos para amosar como é doado unha solución está por vir.

Próxima vez

Na parte final desta serie, apropiadamente chamado Parte 5 , imos discutir a implantación deste sistema para. Vou resumir o que foi aprendido e que eu puiden crear.

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 3

Por , venres 04 de decembro de 2009 23:37

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote de procesamento de millóns de rexistros de datos cada día, e eu pensei recentemente sobre todas as máquinas que se sentan arredor de cada e cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizado.

Na parte 2 analizamos os traballos serán executados nun servidor, e como os traballos deben ser configurados para acadar a maior cantidade de procesamento, garantindo que cada traballo é procesado sen fallar.

Creación do seu traballo - ou servidor Limp

O paso seguinte no proceso é a creación dos seus traballadores virtual. Por iso eu vou usar unha instalación de CentOS usando VirtualBox. Vou instalar MySQL e PHP no servidor, tamén coñecido como un manco (Li nux, m ySQL, P HP) Serbia (I pode facer ese nome).

  • VirtualBox instalar na súa máquina windows (sigan a ligazón)
  • Descargar e instalar CentOS (versión actual 5.3) dentro dunha máquina virtual creada

Non hai ningún punto ir a este hai probablemente 1,000 's de tutoriais gran aí fóra (ok, aquí vai un: Creando e Managing CentOS máquina virtual no VirtualBox ). O punto importante a destacar, supoño, é que eu chamei a miña máquina virtual GridMachine.

Polo que as miñas opcións do cliente e do sistema operativo de virtualización van non hai gran razón convincente para cada elección. VirtualBox é algo que eu uso na miña máquina de casa e é apoiado polos tres principais sistemas operativos. Eu escollín o CentOS como sistema operativo estable e un bo que eu uso o meu propio servidor web. Son un gran crente nas ferramentas certas para o traballo (aínda que eu estou aplicando "uso máis rápido e máis fácil para ti" mentalidade aquí), entón sistema operativo X executa o seu código máis rápido e máis eficiente utilización que, en vez:)

É importante asegurarse de que a súa VM usa DHCP, se non, para cada nova máquina virtual precisaría ser configurado por separado, que é algo que non want.By usando DHCP non precisamos facer configuración da rede individualmente para máquinas de traballo, DHCP pode entregar IPs para ti. Así, pode copiar a máquina virtual sobre o escritorio sen preocuparse definición de cada un para arriba (que mellora a módulos e reduce a administración do traballador).

O proceso que ten que ter como obxectivo sería conseguir unha nova máquina física, instala o VirtualBox, e despois practicamente implantar a imaxe virtual, sen moito máis. Pode ser sabio para configurar os seus traballadores nunha sub-rede diferente para que poida, polo menos, ver cantas máquinas están funcionando. Tamén cómpre configurar as súas máquinas en un arrendamento a longo ou concesión ilimitada DHCP.

Como facer Jobs sobre o traballador

Esta é unha área interesante e existen varios métodos válidos para procesar os traballos sobre o traballador. Aquí eu só vou discutir as dúas máis obvias:

  • Perpetuamente executando script: Un script, sexa un script shell ou un script PHP execútase unha vez sobre o traballador e é executada como parte dun loop infinito. Eu xa descontado a rede como un accidente do script e, potencialmente, os seus traballadores deixarán de funcionar sen algún tipo de intervención.
  • Cron execución do script en base a: cada X minutos o cron servizo inicia unha chamada para o seu guión para comezar as cousas. Sen algunha comprobación isto podería conducir a moitas moitas copias da súa execución de scripts traballador.

A miña decisión foi ir con cron que comeza un script shell cada minutes. 10 O meu guión shell executa as seguintes tarefas:

  1. A lista de procesos e grep iso por 'php'. Se non está, a continuación continuar.
  2. Chamar o seu código de traballo, no meu caso iso sería algo baseado PHP
  3. Guión de traballo completa a súa execución
  4. Preparado para ir de novo a próxima chamada axeitada

O meu script bash parece algo como o seguinte:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php> / dev / null
 entón
     echo "Job está a procesar, de saída"
 outro
     echo "O traballo non está en execución, comezar agora"
     php yourJobProcessingScript.php
 fi 

Nota: o de eco son case completamente inútil, pero pode axudar a seguinte persoa que vén para tratar de editalos.

Que conclúe a creación da máquina de traballo virtual, rápido, sinxelo e fácil de copiar a cada nova peza de hardware que é recibido. A "intelixencia" do sistema de rede realmente non é visto no sistema operativo, é todo que ver co código creado para procesar os traballos, a configuración do traballo, e para garantir que o traballo é executado no seu caso (ou sexa, cando o anfitrión está ausente ).

Configurar Windows para iniciar Traballadores

A primeira tarefa é descubrir o comando necesario para realizar a máquina virtual desde a liña de comandos de Windows. Se instalou o VirtualBox no lugar estándar e nomeou o seu traballador GridMachine entón o comando necesario para cargar o seu traballo é:

  "C: \ Arquivos de programas \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Con todo, para executar o script nun estado "sen cabeza", necesitamos empregar:

  "C: \ Arquivos de programas \ Sun \ VirtualBox \ VBoxHeadless.exe"-startvm GridMachine - vrdp = off 

Isto iniciar a máquina virtual sen a GUI e permitir que salva o estado graciosamente. O segundo argumento desactiva RDP polo que non entra en conflito con fiestras RDP, ou darlle unha mensaxe sobre escoita na porta 3389. O nome da máquina virtual é case sensitive!

A continuación, imos ter para definir fiestras ata comezar a nosa VM traballador unha vez que a máquina está ociosa. Para iso (en Windows XP) ten que ir en Inicio -> Todos os programas -> Accesorios -> Ferramentas do Sistema -> Tarefas programadas conforme a continuación:

tarefas programadas

A continuación preme en "engadir tarefa programada 'seguido de navegar para engadir un programa personalizado. Desprácese ata o script VBoxManage e prema en Aceptar. Axenda súa tarefa para calquera das opcións (imos cambiar isto nun minuto) e seguir. Despois de saltar a seguinte pantalla fiestras pode pedirlle que quere realizar esta tarefa, eu suxiro ou 'Administrador' ou crear un novo usuario privilexiado. Lembre que nós non queremos interferir na conta persoal de patrón na máquina en calquera punto. Preme aquí ao lado e confía amosar opcións avanzadas para esta tarefa.

Para o fin do textbox executar engadir o noso cadea 'startvm GridMachine e garantir que só funciona cando conectado está desmarcada. Visita a tarefa programación seguinte e cambiar a programación suspendida ata a opción "cando ocioso", escolla a cantidade de tempo que lle gustaría que a máquina é ocioso antes de pasar á seguinte guía.

Finalmente desmarque a opción que afirma deixar a tarefa se foi correndo cantidade X de tempo, pero non marque a opción de deixar a tarefa a máquina non está ociosa.

horario

É iso entón a configuración anfitrión das fiestras!

Resumo

Nesta parte temos un conxunto de unha máquina virtual para actuar como un traballador, así como a forma en que chamamos e executar os nosos scripts procesamento do traballo (para min un script PHP). A partir de aquí podemos ver como montar o noso copias de Windows para iniciar a máquina virtual en modo headless cando o computador se fai ocioso, e gardar o seu estado cando o usuario retomar a utilización da máquina. Esperemos que neste momento está a ver como é simple para configurar un sistema deste tipo e están ansiosos para comezar algunhas experiencias vai vostede mesmo!

Próxima vez

Na parte 4 , imos estar a ollar para o uso de ferramentas para garantir que está a empregar a última versión das fontes de código e datos, de xeito que os resultados obtidos son sempre up-to-date coas últimas información sobre negocios e da lóxica.













Tema por Panorama Themocracy

12 convidados en liña agora
9 invitados, 3 bots, 0 membros
Max visitantes hoxe: 17 a 06:54 UTC
Este mes: 17 en 18-08-2011 06:54 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC