Categoría: Artículos

OAuth / Twitter autenticación Adaptador para Zend Framework

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

Se sigue trabajando (lentamente) en mi nuevo de Twitter basado en la aplicación. Durante el próximo par de días festivos espero tener el impulso de nuevo en el proyecto (en-a pesar del buen clima en la actualidad). De todos modos, mi siguiente tarea era crear un adaptador de autenticación para el Zend Framework . Tuve una aplicación de inicio de sesión de trabajo, pero con una caída de autenticación para el adaptador de Zend Framework pareció una propuesta atractiva, así que lo creó ....

(No voy a ir a través de Oauth o el registro de su solicitud con twitter, hay cientos de guías y es un proceso bastante sencillo de todos modos.)
Continuar 'Oauth / Twitter autenticación Adaptador para Zend Framework' leyendo »

"Conéctate con Twitter" con Zend Framework

Por , jueves 17 de marzo 2011 01:07 am

A pesar de todo el odio de Twitter en el momento, hemos propuesto crear un nuevo Twitter aplicación basada en. Ser alguien que maneja varias cuentas (tanto personal como para mi trabajo de caridad) que he estado necesitando una herramienta para en algún momento que estoy recibiendo en torno a la escritura (más de que en un futuro próximo ...).

He leído en Zend_Oauth_Consumer y cómo puede ser utilizado para obtener la autorización para interactuar con Twitter mediante OAuth . Todo bien y bueno, yo tengo mi clave de acceso y se puede alegremente mensaje fuera en nombre de un usuario. Hay un montón de recursos que hay que hacer esto, así que no los tenía.

El siguiente paso fue permitir a la gente para volver a la página web, acceder y modificar su cuenta. Aquí es donde llegué a un pequeño problema. Utilizando los ejemplos de código en las páginas web significaba que tendría que Twitter me pide la autorización de acceso de nuevo para cada inicio de sesión, no es bueno. La exploración a través del marco que no podía ver nada que me permita pedir sólo la autenticación. Eso no quiere decir que no está allí, pero no parece ser un mecanismo de autenticación que se puede invocar sin conocer el token de acceso ya.

Las alternativas eran para implementar un registro basado en el sitio en la tienda o de alguna manera simbólica de acceso del usuario en el cliente (cifrado, por supuesto). Ninguno de estos me pareció una buena solución / adecuado.

Continue reading '"Conéctate con Twitter" con Zend Framework "»

Zend Certified Engineer (ZCE) 5.3

Por , jueves 30 de septiembre 2010 21:00

Con el lanzamiento oficial de la Zend Certified Engineer (ZCE) para el 5,3 pensé en dar mi impresión rápida de lo que pensé en el examen.

Un poco de historia sobre mí: tuve mi primer contacto con PHP hace unos 7 años y ha trabajado profesionalmente en PHP desde el año 2006. Actualmente trabajo para una emocionante puesta en marcha llamado Brightpearl con sede en Bristol, Reino Unido , la producción integrada de CRM, contabilidad, y el software de comercio electrónico. No haber obtenido previamente alguno de los títulos ZCE anterior. Yo actualmente se desarrollan en la serie 5.2.x, y realmente no han usado alguna de las características específicas de 5,3 (Estoy esperando a Zend Framework 2 y Doctrina 2) en mis proyectos de desarrollo.
Continue reading 'Zend Certified Engineer (ZCE) 5.3' »

Guía de inicio rápido Symfony DI (inyección de dependencia) Tutorial

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

¿Qué es la inyección de dependencias (DI)?

La inyección de dependencia es una técnica que permite a los objetos débilmente acoplados dentro de una aplicación de software. En general, si un objeto requiere el acceso a la funcionalidad de otro sería una instancia interna que lleva a los sistemas fuertemente acoplados. Mediante la aplicación de la inyección de dependencia que se inyectan los objetos necesarios listos para su uso (a veces también se refirió a la inversión de control - COI). Tomemos el siguiente ejemplo:

  <? Php
 clase DecisionMaker {
     makeDecision función pública (array $ parametros) {
         / / Necesita el adaptador de base de datos
         $ Dp = new DecisionParameters ();
         $ ParameterScore = $ dp-> getScore ($ parametros);
         / * ...  Decisión un poco más de lógica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Este fragmento de código se dice que es fuertemente acoplado con el objeto DecisionParameters. La reescritura de la anterior de una manera imprecisa que tendríamos algo así como ....

  <? Php
 clase DecisionMaker {
     privado $ _dp;
     public function __construct ($ dp) {
         $ This-> _dp = $ dp;
     }
     makeDecision función pública (array $ parametros) {
         $ ParameterScore = $ this-> _dp-> getScore ($ parametros);
         / * ...  Decisión un poco más de lógica ...  * /
         return ($ parameterScore> 50);
     }
 } 

Mientras que obtener los beneficios del código débilmente acoplados estamos añadiendo una complejidad tal que cada vez que un objeto es una instancia que también tenemos que crear instancias de sus dependencias y en pasar estos también. Por ejemplo, esto:

  $ = Elección DecisionMaker nuevo ();
 echo $ opciones-> makeDecision (array ('esfuerzo' => 'bajo', 'return' => 'alta')); 

ahora se convierte en:

  $ Dp = new DecisionParameters ();
 $ Opciones = new DecisionMaker ($ dp);
 echo $ opciones-> makeDecision (array ('esfuerzo' => 'bajo', 'return' => 'alta')); 

Esta situación se vuelve más doloroso que el número de dependencias de una clase es mayor, y lo que si las dependencias se han dependencias? Esto puede muy rápidamente convertirse en una pesadilla para la administración de objetos! Introduzca los contenedores inyección de dependencia (o marcos) ...
Continue reading 'Symfony de inicio rápido DI (inyección de dependencia) Tutorial' »

Desnudo y Zend_Layout Zend_View

Por , martes 10 de agosto 2010 23:47

En este artículo me veo en el uso de Zend_Layout y Zend_View junto con un controlador frontal simple para mostrar cómo es posible empezar a separar la lógica de negocio y la presentación de la aplicación. Todo el código está disponible en github:
Zend_Layout desnudo y Zend_View en GitHub .

Continuar 'Zend_Layout desnudos y Zend_View de lectura »

Zend Framework por ajustes de diseño del módulo - Seguimiento

Por , martes 16 de febrero 2010 8:48 pm

Como seguimiento a mi post anterior sobre la configuración por módulo de diseño basado en Zend Framework , he actualizado el código que necesitan menos configuración que antes (no es que se requiere más que unas pocas líneas en la configuración de la aplicación!).
Continue reading 'Zend Framework por ajustes de diseño del módulo - Seguimiento' »

La creación de URL personalizado en Zend View Helper

Por , jueves 28 de enero 2010 23:01

Esto puede parecer simple, pero yo estaba golpeando mi cabeza tratando de crear una URL en una vista personalizada de ayuda en Zend Framework . Tengo la configuración de enrutamiento que se obtiene el módulo de la sub-dominio en el uso de lo que no podía usar una URL codificada simple.

Continuar 'URL Creación de Zend personalizado Ayudante de Vista de lectura »

Enrutar las solicitudes de sitemap.xml al controlador personalizado / acción

Por , miércoles 06 de enero 2010 12:13a.m.

Con el fin de las solicitudes directas de / sitemap.xml a un controlador de la costumbre y la acción en el Zend Framework aplicación sólo tiene que añadir lo siguiente en su fichero de configuración application.ini o alternativa (por ejemplo, yo uso navigation.ini):

 resources.router.routes.sitemap.route = "sitemap.xml"
 resources.router.routes.sitemap.defaults.controller = índice de
 resources.router.routes.sitemap.defaults.action = mapa del sitio

Código de ejemplo para la salida se puede ver mediante la creación de una acción en el controlador apropiado (por ejemplo mi mapa se encuentra en el controlador de índice, la acción mapa):

 < php
 clase IndexController
     se extiende Zend_Controller_Action
 {
     / **
      * Muestra un mapa basado en la configuración Zend_Navigation
      * /
     sitemapAction función pública ()
     {
    	 echo $ this-> view-> de navegación () -> Mapa del sitio ();
    	 $ This-> view-> layout () -> disableLayout ();
    	 $ This-> _helper-> viewRenderer-> setNoRender (true);
     }
 }

Sitemaps pueden rápida y fácilmente generar utilizando Zend_Navigation , un gran tutorial rápido (y en general muy útil para Zend Framework tutoriales) es Zend yesos - la creación dinámica de un menú de un mapa del sitio y el pan rallado .

Oficina de Grid Computing utilizando entornos virtuales - Parte 4

Por , viernes 04 de diciembre 2009 23:59

Introducción

Yo trabajo en una empresa en la que nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos de todos los días y he estado pensando últimamente sobre todas las máquinas que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar el poder de transformación de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 3 que hemos creado nuestra máquina de procesamiento virtual y configurar las máquinas de las ventanas para convertirse en tiempo de inactividad los trabajadores.

La ejecución del último código

Inevitablemente, después de crear la lógica de negocio de trabajadores va a cambiar, los errores se encuentran, el código más rápida y eficiente se produce lo que deja a sus trabajadores se sentaron alrededor de procesamiento de datos utilizando el código viejo maloliente . Entonces, ¿cómo nos aseguramos de que siempre estamos usando la versión más reciente y más grande de nuestros scripts de procesamiento?

Hay unas cuantas formas sencillas muy fácil que pudiéramos hacer esto, el truco, sin embargo, es reducir la potencia de procesamiento y el tráfico de red para lograr esto. Vamos a empezar con el más simple de las soluciones y mejorar poco a poco más de un par de iteraciones.

El primer método sería simplemente conectarse a nuestro servidor de control de trabajos (a través de samba, FTP, o similar) y bajar la última versión del código. No es muy eficiente, pero va a hacer el trabajo. Permite mejorar eso un poco, ¿qué hay de la creación de un script de rsync y el uso que cada vez que en su lugar? Por otra parte lo de poner nuestro último guión de transformación en la subversión revisando el código inicialmente y luego simplemente actualizar el código en cada ejecución ( svn update )?

Al final, podría terminar con un script bash (llamado por cron cada 10 minutos), que parece tan simple como esto:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php > / dev / null
 entonces
     echo "Job está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     cd / ruta / a / trabajo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Ahora podemos estar seguros de que con cada carrera que definitivamente estamos ejecutando el código más reciente. Estamos garantizando esto actualizando nuestra base de código cada vez que realizamos una carrera y la reducción de tráfico de la red sólo la transferencia de las diferencias de archivos a través de nuestra red.

En mi configuración de demostración, hice exactamente como antes. Subversion ha instalado en mi servidor de procesamiento de los trabajos y yo simplemente sacó la última versión del código de un "trabajador" Poder usar 'svn update'. También he añadido una etiqueta de número de versión de mi script de transformación que fue devuelto a la base de datos como parte de la devolución de resultados. De esta manera pude ver que mi código se actualiza cada vez que he copiado mi tronco en la rama de los trabajadores, es decir que yo era definitivamente la ejecución del script de procesamiento más avanzada.

Utilizando los últimos datos

Si el procesamiento de los trabajos hace uso de fuentes de datos entonces en algún momento estos van a ser actualizado también. A menos que usted llame a sus fuentes de datos sobre una base muy poco frecuente que va a inundar la red con un tráfico tan pronto como sus trabajadores empezarán a llevar todo a un punto muerto. Para mi solución, decidí que me gustaría pasar mis fuentes de datos con mis máquinas virtuales.

Mantenga usted está caballos allí! ¿Qué sucede si mis fuentes de datos son enormes? Bueno, esto es realmente un caso de cómo los datos de cuánto estamos hablando? Puede ser más rentable que instalar una adicional en el disco duro de mayor capacidad en cada máquina que comprar un servidor de procesamiento adicional. Esta es una cuestión de presupuesto y corresponde a la empresa para decidir. Es tal vez que sus fuentes de datos son tan grandes que es sólo factible para mantener esa cantidad de datos en las máquinas de su trabajador. En ese caso, ¿qué harías? Bien podríamos considerar llamar a un servidor de datos local, pero esto podría causar problemas en la red. En este caso, un sistema de red de este tipo puede llegar a ser poco realista que incluya en su entorno de oficina. También puede ser que usted puede mirar en estrategias alternativas de funcionamiento, por ejemplo, sólo llamando a sus trabajadores 8 p.m.-06 a.m. cada noche y / o limitación de peticiones origen de datos.

Pasando permite decir que nuestra cantidad de datos de fuentes de 100 GB de datos. Pues sí que es un poco de datos para moverse por la red en una actualización. ¿Cómo nos aseguramos de tener la última copia de los datos en este caso? Rsync es una posibilidad, pero personalmente creo que mediante la ejecución de su última fuente de datos en el servidor de procesamiento de la tarea y configurarlo como un maestro en la replicación (con un registro de bin larga y bonita) podría ser el camino a seguir:

replicación Mediante el establecimiento de cada uno de sus trabajadores como un esclavo de las actualizaciones del servidor de control de trabajo a sus fuentes de datos tengan un efecto positivo muy bien a sus trabajadores sin un gran incremento en la actividad de red (es decir, a menos que realice una actualización de datos de gran tamaño y todos sus trabajadores una patada en a la vez). Esto tiene ventajas sobre rsync en que no tendría una larga pausa antes de cada trabajo, como las actualizaciones de base de datos, mysql demonio en su trabajo continuamente actualizar sus datos, mientras que el proceso continúa.

Así es como puedo configurar mi servidor de demostración. Para configurar la replicación he seguido la guía en el sitio de MySQL ( Configuración de la replicación ) y en 20 minutos tenía mi trabajo Inicial replicar el control del trabajo los servidores de datos. Por cada trabajador adicional de la configuración de la replicación y el proceso de trabajo cada vez que la máquina virtual se ha copiado.

Resumen

En esta sección del artículo que hemos visto lo fácil e indoloro que es mantener el código de procesamiento hasta la fecha por rsync using o subverion (SVN) para hacer el trabajo y reducir el tráfico de red en el mismo archivo.Una También hablamos sobre cómo para mantener su información de la fuente de datos puesta al día por lo que le alcancen a cada uno de sus trabajadores. Así, zona que permite que mantengamos con la lógica de negocio y la información en nuestro sistema de red de oficinas. Habrá, obviamente, innumerables alternativas para realizar estas tareas, pero en este caso fueron dos ejemplos simples para demostrar lo fácil que es una solución de conseguir.

La próxima vez

En la parte final de esta serie, bien llamada la parte 5 , vamos a discutir la implementación de este sistema. Voy a resumir lo que se ha aprendido y lo que he conseguido crear.

Oficina de Grid Computing utilizando entornos virtuales - Parte 3

Por , viernes 04 de diciembre 2009 23:37

Introducción

Yo trabajo en una empresa en la que nos encontramos muchos puestos de trabajo de procesamiento por lotes de millones de registros de datos de todos los días y he estado pensando últimamente sobre todas las máquinas que se sientan alrededor de cada uno y todos los días sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar el poder de transformación de nuestros sistemas? En este conjunto de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 2 nos fijamos en los puestos de trabajo de un servidor se ejecutará, y cuántos empleos se debe configurar con el fin de lograr la mayor cantidad de procesamiento al tiempo que garantiza que cada trabajo se procesa sin falta.

La creación de su trabajador - o servidor LIMP

El siguiente paso en el proceso es la creación de sus trabajadores virtual. Por eso me voy a utilizar una instalación de CentOS con VirtualBox. Voy a instalar MySQL y PHP en el servidor, también conocido como una cojera (nux ​​Li, m ySQL, P HP) Servera (que pueda haber hecho que el nombre de arriba).

  • Instalación de VirtualBox en su máquina Windows (seguir el enlace)
  • Descargar e instalar CentOS (versión actual 5.3) dentro de una máquina virtual creada

No tiene sentido que me va a este es probable que haya 1,000 's de gran tutoriales por ahí (bueno, aquí va una: Creación y Managing máquina virtual con VirtualBox CentOS ). El punto importante a señalar es que supongo que llamé a mi máquina virtual GridMachine.

En cuanto a mis elecciones de los clientes de virtualización y sistema operativo van no hay ninguna razón convincente grande para cada elección. VirtualBox es algo que yo uso en mi máquina de casa y con el apoyo de los tres principales sistemas operativos. Elegí CentOS como un sistema operativo estable es buena y yo lo uso en mi propio servidor web. Yo soy un gran creyente en las herramientas adecuadas para el trabajo (aunque estoy aplicando "el uso más rápido y más fácil para usted" mentalidad de aquí), así que si el sistema operativo X se ejecuta el código más rápido y más eficiente uso que en su lugar:)

Importante asegurarse de que su máquina virtual utiliza DHCP, de lo contrario para cada máquina virtual nuevo tendrá que ser configurado por separado que es algo que no want.By mediante DHCP que no es necesario configurar los ajustes de red de forma individual para las máquinas de los trabajadores, DHCP mano IPs para usted. Por lo tanto, puede copiar la máquina virtual de la oficina sin tener que preocuparse sobre la configuración de cada uno de ellos hacia arriba (esto mejora la escalabilidad y reduce la administración de los trabajadores).

El proceso que se debe aspirar a alcanzar sería la de obtener una máquina física nueva, instalación de VirtualBox, y luego casi implementar la imagen virtual sin necesidad de mucho más. Podría ser conveniente para la configuración de todos sus trabajadores en una subred diferente para que pueda al menos ver cuántas máquinas están en funcionamiento. También tendrá que configurar su máquina en un contrato de arrendamiento a largo o ilimitado concesión DHCP.

Cómo ejecutar trabajos en el trabajador

Esta es un área interesante y hay varios métodos válidos para el procesamiento de puestos de trabajo del trabajador. Aquí sólo voy a hablar de los dos más obvios:

  • Perpetuamente ejecutar el script: Un script, ya sea un script de shell o un script PHP se ejecuta una vez en el trabajador y se ejecuta como parte de un bucle infinito. He descontado este método como un accidente de la escritura y, potencialmente, a sus trabajadores dejarán de funcionar sin algún tipo de intervención.
  • Ejecución de cron script basado: cada X minutos el demonio cron se inicia una llamada al script para que funcione. Sin algunas comprobaciones que esto podría dar lugar a muchas muchas copias de sus ejecutar secuencias de comandos de los trabajadores.

Mi decisión fue ir con cron que comienza un script de shell cada minutes. 10 Mi script realiza las siguientes tareas:

  1. Obtener una lista de procesos y grep para este 'php'. Si no lo encuentra y luego continúe.
  2. Llame a su código de trabajo, en mi caso esto sería algo basado en PHP
  3. Guión trabajador termina su ejecución
  4. Listo para ir de nuevo en la convocatoria correspondiente al lado

Mi script bash se ve algo como lo siguiente:

  #! / Bin / sh
 si ps ax | grep-v grep | grep php> / dev / null
 entonces
     echo "Job está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     php yourJobProcessingScript.php
 fi 

Nota: se hacen eco de las casi completamente inútil, pero puede ayudar a la próxima persona que venga a tratar de modificarlos.

Con esto concluye la puesta en marcha de la máquina de trabajo virtual, rápido, sencillo y fácil de copia a cada nueva pieza de hardware que se recibe. La "inteligencia" del sistema de redes realmente no es visualizado en el sistema operativo, es todo que ver con el código creado para procesar los trabajos, la configuración del trabajo, y en asegurarse de que el trabajo se ejecuta en su caso (es decir, cuando el anfitrión está inactivo ).

La configuración de Windows para inicializar los trabajadores

La primera tarea es trabajar en el comando necesario para ejecutar la máquina virtual desde la línea de comandos de Windows. Si has instalado VirtualBox en la ubicación predeterminada y que ha llamado a su trabajador GridMachine el comando para cargar a su trabajador es:

  "C: \ Archivos de programa \ Sun \ VirtualBox \ VBoxManage.exe" startvm GridMachine 

Sin embargo, para ejecutar el script en un 'cabeza' del Estado tenemos que usar:

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

Esto iniciará la máquina virtual sin la interfaz gráfica de usuario y le permiten guardar el estado de gracia. El segundo argumento se apaga RDP por lo que no entra en conflicto con las ventanas RDP, o le dará un mensaje de escuchar en el puerto 3389. El nombre de máquina virtual entre mayúsculas y minúsculas!

A continuación, tendrá que configurar las ventanas cerradas para dar inicio a nuestra VM de los trabajadores una vez que la máquina ha estado inactiva. Para hacer esto (en Windows XP) tendrá que ir Inicio -> Todos los programas -> Accesorios -> Herramientas del sistema -> Tareas programadas de la siguiente manera:

las tareas programadas

Luego haga clic en "Agregar tarea programada" seguido por vaya a agregar un programa a medida. Vaya a su guión VBoxManage y haga clic en Aceptar. Programar su tarea para cualquiera de las opciones (vamos a cambiar esto en un minuto) y continuar. Después de saltar la siguiente pantalla, Windows le pedirá que se desea ejecutar esta tarea, te sugiero que sea "Administrador" o crear un nuevo usuario privilegiado. Recuerde que no queremos interferir en la cuenta personal de serie en la máquina en cualquier momento. Haga clic en Siguiente y seleccione Mostrar opciones avanzadas para esta tarea.

Para el final de la caja de texto ejecutar añadir nuestro "startvm GridMachine 'cadena y asegurar que sólo se ejecutan cuando se conecte se queda sin marcar. Visita la tarea de programación que viene y cambiar el calendario de bajar a la opción 'cuando está en reposo ", elija la cantidad de tiempo que le gustaría que la máquina se espera antes de pasar a la siguiente ficha.

Por último, desmarca la opción que establece detener la tarea si se ha estado ejecutando X cantidad de tiempo, pero no marca la opción para detener la tarea si la máquina ya no es ociosa.

horario

Que es continuación de la configuración del host de Windows!

Resumen

En esta parte hemos puesto en marcha una máquina virtual para que actúe como un trabajador, así como la forma en que nos llame y ejecutar scripts de procesamiento de los trabajos (para mí un script PHP). A partir de aquí vamos a ver cómo crear nuestras copias de Windows para poner en marcha la máquina virtual en el modo de cabeza cuando el ordenador esté inactivo, y guardar su estado cuando el usuario reanude el uso de la máquina. Esperemos que en este momento estás viendo lo fácil que es crear un sistema y están ansiosos por conseguir algunos experimentos se va!

La próxima vez

En la Parte 4 vamos a estar buscando en el uso de herramientas para asegurar que se está ejecutando la última versión de las fuentes de código y datos, de modo que los resultados obtenidos están siempre al día con la última información de negocio y la lógica.













Panorama Tema por Themocracy

9 visitantes en línea ahora
7 huéspedes, 2 bots, 0 miembros
Max visitantes de hoy: 18 en 04:13 am UTC
Este mes: 19 a 19-08-2011 06:09 am UTC
Este año: 130 en 28-03-2011 22:40 UTC
En total: 130 en 28-03-2011 22:40 UTC