Categoría: Informática

proxy Apache con la autenticación implícita

Por Lloyd Watkin Steven , 27 de marzo Domingo 2011 24:57

Este post forma rápida le mostrará cómo configurar proxy con la autenticación básica con apache .

En mi caso yo quería tener poco cliente de torrent de transmisión disponibles a través de Internet para poder comprobar la descarga de torrent administrarla y estatales (como la última versión de Fedora) según sea necesario. La transmisión se ejecuta su cliente web en el puerto 9091 por defecto. En lugar de molestar a la apertura de varios puertos en el cortafuegos y la adición de la redirección de puertos normas nessecary decidí que acababa de proxy de las llamadas a través de la transmisión a través de Apache con mod_proxy .

Continuar leyendo 'proxy Apache con la autenticación implícita' »

Zend Framework: Render Si existe

Por Lloyd Watkin Steven , 12 de diciembre Domingo 2010 16:19

Resumen

Este es un post rápido para discutir el punto de vista simple ayudante y no he creado para la prestación de un Zend Framework estilo de archivo de vista sólo si existe. En general, pidiendo el código para hacer un archivo que no existe una excepción. Por lo tanto he creado un contenedor para el Zend_View:: render (), que determina si el archivo existe y si lo hace, de lo contrario simplemente devuelve una cadena vacía.
Continuar leyendo 'Zend Framework: Render Si existe' »

Zend Certified Engineer (ZCE) 5.3

Por Lloyd Watkin Steven , 30 de septiembre Jueves 2010 21:00

Con el lanzamiento oficial del 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í mismo: primero me introdujeron a PHP sobre siete años y he trabajado profesionalmente en PHP desde 2006. Actualmente trabajo para una interesante 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 he obtenido previamente alguna de las condiciones ZCE anterior. Yo actualmente se desarrollan en la serie 5.2.x, y en realidad no han usado alguna de las características específicas 5.3 (estoy esperando a Zend Framework 2 y Doctrina 2) en el desarrollo de mis proyectos.
Continuar leyendo 'Zend Certified Engineer (ZCE) 5.3' »

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

Por Watkin Lloyd Steven , martes 16 de febrero 2010 20:48

Como continuación a mi anterior post sobre la configuración de cada módulo de diseño basado en Zend Framework , he actualizado el código que requieren menos de configuración que antes (no es que se requiere más que unas pocas líneas en la configuración de su aplicación!).
Continuar leyendo 'Zend Framework por el módulo de diseño Configuración - Seguimiento' »

Oficina de Computación Grid utilizando entornos virtuales - Parte 4

Por Lloyd Watkin Steven , 04 de diciembre Viernes 2009 23:59

Introducción

Yo trabajo en una empresa donde corremos muchos puestos de trabajo de procesamiento por lotes millones de registros de datos cada día y he estado pensando sobre todos los equipos que se sientan alrededor de cada uno y cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En esta serie 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 creamos nuestra máquina de proceso virtual y configurar las máquinas de las ventanas para convertirse en trabajadores a tiempo inactivo.

La ejecución del último código

Es inevitable que después de crear la lógica empresarial los trabajadores va a cambiar, los errores se encuentran, más eficiente código más rápido se producirá lo que deja a sus trabajadores se sentaron alrededor de procesamiento de datos mediante código de mal olor de edad . Entonces, ¿cómo nos aseguramos de que siempre estamos utilizando la última y mejor versión de 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 trabajo (a través de samba, FTP, o similar) y tire hacia abajo la última versión del código. No es muy eficiente, pero va a hacer el trabajo. Vamos a mejorar ese algo, ¿qué hay de la creación de un script de rsync y con que cada vez que en su lugar? Por otra parte lo de poner nuestra última secuencia de comandos de transformación en la subversión revisando el código al principio y luego simplemente actualizando nuestro código en cada serie ( 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
 a continuación,
     echo "El trabajo está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     cd / ruta / de / trabajo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Ahora podemos estar seguros de que con cada serie definitivamente estamos ejecutando la última versión del código. Estamos garantizando de este mediante la actualización de 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 programa de instalación de demostración, lo hice exactamente como antes. La subversión se ha instalado en mi servidor de procesamiento de la tarea y yo simplemente sacó el último código de rama en un "trabajador" con "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 planilla de resultados. De esta manera pude ver que mi código se está actualizando cada vez que he copiado mi tronco en la rama de los trabajadores, es decir que yo era definitivamente la ejecución del script última transformación.

Usando los datos más recientes

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

Mantenga usted está caballos allí! ¿Y si mis fuentes de datos son enormes? Bueno, esto es realmente un caso de la cantidad de datos estamos hablando? Puede ser más rentable que instalar una unidad de disco duro adicional más grande en cada máquina que comprar un servidor de procesamiento adicional. Esta es una cuestión de presupuesto y corresponde a la empresa a decidir. Es lo mejor que sus fuentes de datos son tan grandes que es sólo factible para mantener esa cantidad de datos en sus máquinas de trabajo. En ese caso, ¿qué harías? Bueno, podía mirar a llamar a un servidor de datos locales, 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 otras estrategias de ejecución, por ejemplo, sólo llamando a sus trabajadores 8 p.m.-06 a.m. todas las noches y / o limitación de peticiones de datos de origen.

Pasando digamos que nuestra cantidad de datos de fuentes de 100 Gb de datos. Bueno, sí que es un poco de datos para moverse por la red en una actualización. ¿Cómo nos aseguramos de que tenemos 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 depósito a largo agradable) podría ser el camino a seguir:

replicación Al establecer cada uno de sus trabajadores como un esclavo de las actualizaciones del servidor de control de trabajo a las fuentes de sus datos tengan un efecto positivo muy bien a sus trabajadores sin un aumento enorme en la actividad de la red (es decir a menos que realice una actualización de datos de gran tamaño y todos sus trabajadores 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 las instrucciones en el sitio de MySQL ( Configuración de la replicación ) y en 20 minutos tuve a mi trabajador Inicial reproducir el control del trabajo conjunto de datos de servidores. 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 mediante rsync Usando una o subverion (SVN) para hacer el trabajo y reducir el tráfico de red en el mismo time. También discutimos cómo para mantener su información de la fuente de datos hasta a la fecha por lo que le alcancen a cada uno de sus trabajadores. Así, zona que permite que mantengamos con la lógica de negocios e información en nuestro sistema de red de oficina. Obviamente habrá un sinnúmero de alternativas para realizar estas tareas, pero en este caso fueron dos ejemplos sencillos para mostrar cómo es fácil 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 el despliegue de este sistema. Voy a resumir lo que se ha aprendido y lo que he conseguido crear.

Oficina de Computación Grid utilizando entornos virtuales - Parte 3

Por Lloyd Watkin Steven , 04 de diciembre Viernes 2009 23:37

Introducción

Yo trabajo en una empresa donde corremos muchos puestos de trabajo de procesamiento por lotes millones de registros de datos cada día y he estado pensando sobre todos los equipos que se sientan alrededor de cada uno y cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En esta serie 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 vimos 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, mientras que garantizar que cada puesto de trabajo se procesa sin falta.

Configuración de su trabajo - o servidor LIMP

El siguiente paso en el proceso es la creación de sus trabajadores virtuales. Para ello 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 (Li nux, m ySQL, HP P) Servera (yo pueda haber hecho el nombre arriba).

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

No tiene sentido que me va a este probablemente hay 1,000 's de las grandes clases particulares 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 GridMachine máquina virtual.

En cuanto a mis opciones de virtualización de cliente y el sistema operativo vaya no hay gran razón de peso 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 buen sistema operativo estable y lo uso en mi propio servidor web. Soy un gran creyente en las herramientas adecuadas para el trabajo (aunque estoy solicitando la «utilización más rápida 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:)

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

El proceso que deben tratar de lograr sería la de obtener una máquina física nueva, instale VirtualBox, y luego más o menos implementar la imagen virtual sin necesidad de mucho más. Podría ser sabio para configurar todos sus trabajadores en una subred diferente, para que pueda al menos ver cuántas máquinas se están ejecutando. También tendrás que configurar los equipos 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 los trabajos de transformación en el 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 secuencia de comandos y, potencialmente, a sus trabajadores dejarán de funcionar sin algún tipo de intervención.
  • ejecución Cron guión basado: Cada X minutos el demonio cron se inicia una llamada a la secuencia de comandos para que funcione. Sin alguna comprobación de esto podría llevar a muchas copias de la secuencia de comandos de trabajo en ejecución.

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

  1. Obtener una lista de procesos y grep esto para '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. script 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 grep-v |> grep php / dev / null
 a continuación,
     echo "El trabajo está procesando, la salida"
 más
     echo "El trabajo no se ejecuta, comienza ahora"
     php yourJobProcessingScript.php
 fi 

Nota: los ecos son casi completamente inútil, pero puede ayudar a la próxima persona que viene a tratar de editarlos.

Con esto concluye la puesta en marcha de la máquina virtual de trabajo, rápido, simple y fácil de copiar a cada nueva pieza de hardware que se recibe. La 'inteligencia' de la red de distribución realmente no es visualizada en el sistema operativo, su todo que ver con el código creado a los trabajos de proceso, 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 ).

Configuración de Windows para los trabajadores de iniciación

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 ha nombrado a su GridMachine trabajador entonces el comando necesario 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 darle un mensaje acerca de la escucha en el puerto 3389. El nombre de la máquina virtual se distinguen mayúsculas y minúsculas!

A continuación, tendrá que configurar las ventanas para dar inicio a nuestra máquina virtual de los trabajadores una vez que la máquina ha estado inactiva. Para hacer esto (en Windows XP) que necesita para ir a 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 de vaya a agregar un programa a medida. Vaya a la secuencia de comandos VBoxManage y haga clic en Aceptar. Programe su tarea para cualquiera de las opciones (vamos a cambiar esto en un minuto) y continuar. Después de saltar de las ventanas de pantalla siguiente le preguntará que desea ejecutar esta tarea, me gustaría sugerir o "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 las opciones de mostrar el siguiente y comprobar avanzadas para esta tarea.

Hasta el final de la caja de texto ejecutar añadir 'startvm' GridMachine nuestra cadena y asegurar que funcionen únicamente cuando se conecte se deja sin marcar. Visite el siguiente horario de trabajo y el cambio horario de la caída hasta la opción 'cuando esté inactivo ", elija la cantidad de tiempo que desea que la máquina se espera antes de pasar a la siguiente pestaña.

Por último desmarque la opción que dice 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

Eso es todo luego de la configuración del host de Windows!

Resumen

En esta parte hemos creado 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 la tarea (para mí un script PHP). Desde aquí vamos a ver cómo crear nuestras copias de Windows para poner en marcha la máquina virtual en modo de cabeza cuando el equipo queda libre, y guardar su estado cuando el usuario se reanuda 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 obtener 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 los datos y códigos fuente para que los resultados obtenidos son siempre al día con el negocio de la información más reciente y la lógica.

Oficina de Computación Grid utilizando entornos virtuales - Parte 1

Por Lloyd Watkin Steven , 04 de diciembre Viernes 2009 23:23

Introducción

Yo trabajo en una empresa donde corremos muchos puestos de trabajo de procesamiento por lotes millones de registros de datos cada día y he estado pensando sobre todos los equipos que se sientan alrededor de cada uno y cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En esta serie de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

Como PHP desarrollador que voy a utilizar las herramientas que uso cada día es decir, Linux, MySQL , PHP, VirtualBox y Subversion (SVN). Sin embargo Espero que esta guía se adaptarán a otros idiomas y las tecnologías igual de bien.

La solución que proporcione será muy vagamente basada en el tipo de procesamiento que íbamos a necesitar para lograr esto pudiera no ser verdad a través de todo el artículo que voy a cambiar las cosas para la simplicidad, o para producir escenarios de uso más interesante.

Estos entornos virtualizados se ejecutan en máquinas Windows ya que esto es lo que la mayoría de las oficinas de ejecución. El tratamiento que las máquinas de oficina no debe interferir con el personal con esas máquinas, que no requieren de mantenimiento en la máquina, y ser de fácil despliegue de nuevas máquinas a medida que estén disponibles. Además, las nuevas máquinas virtuales no deberán exigir ningún tipo de configuración adicional, ya que reduce en gran medida la escalabilidad y la facilidad con la que el sistema de red puede ser ampliado.

¿Por qué implementar una Oficina de Grid Computing?

En primer lugar usted puede estar pensando, ¿por qué no utilizar un recurso de Cloud Computing como Amazon EC2 plataforma ? Pues las razones podrían ser varias, por ejemplo:

  • Usted no va a confiar a ciertos datos a un entorno de cloud computing
  • No se puede poner ciertos datos en un entorno de computación en la nube, por razones jurídicas (por ejemplo, datos de salida del país), posiblemente por razones legales, por ejemplo, los registros del NHS.
  • Usted quiere mantener sus unidades de procesamiento de cerca y tener un control total sobre el hardware también
  • Usted no tiene los fondos del proyecto a ejecutar instancias nube
  • Su oficina no tiene una conexión a Internet, por lo que no es posible utilizar un recurso nube
  • No es como la lluvia, las nubes sugieren la lluvia, por lo tanto a mantener bien lejos

Estoy seguro de que la lista podría continuar, pero creo que es suficiente por ahora.

Ventajas de una Oficina de Grid Computing

Bueno, vamos a hacer algo de matemáticas (y en cierto estilo de la física le permite hacer algunas suposiciones de barrido). Imagine que tiene gran servidor de procesamiento fornido ejecutando 100 puestos de trabajo por día. En su oficina tiene 50 máquinas que están en reposo 16 horas al día, cada una de estas máquinas es de 10% tan poderoso como el procesamiento de su fornido cortar. (Todos los resultados aquí están redondeados para aumentar el rendimiento subestimar).

Así, una máquina * 10% * de energía 3.2 tiempo = 0,067 es decir, una transformación de escritorio en el tiempo de inactividad podría proceso de seis puestos de trabajo por jornada.

Si ahora escala esto se requieren 15 computadoras de escritorio ociosa para procesar tantos puestos de trabajo por día como el principal servidor de procesamiento es el.

Así, en nuestra oficina pretender de 50 máquinas que podría aumentar nuestra capacidad de procesamiento de un servidor de hasta 4 servidores de procesamiento completo, o podríamos estar procesando 400 puestos de trabajo por día en vez de 100.

Observe, sin inversión en hardware nuevo a su compañía acaba de aumentar su capacidad de procesamiento por lotes 4 veces! Potencialmente, usted va a aumentar su consumo de energía, sino de la mayoría de entornos de oficina que he estado a las máquinas suelen quedar en la noche a la mañana de todos modos, por lo que podría ver esto como una iniciativa ecológica.

Otras ventajas también significa que la inversión en nuevos (o actualización) servidores de procesamiento se puede retrasar si sus máquinas de oficina son suficientes y que a medida que mejora la potencia de sus máquinas de la oficina de su red de oficinas se vuelve más poderosa de forma automática.

Tecnologías

Lo que usted necesita? (O más correctamente, ¿qué yo uso):

  • Inactivo máquinas de oficina (en mi caso un ordenador portátil de recambio viejas ventanas XP)
  • VirtualBox (o cualquier otro software de cliente de virtualización)
  • Una máquina virtual con PHP, MySQL running ejecutando un reducido sistema operativo, estoy llamando a estos LIMP servidores de mi:)
  • Puestos de trabajo para ejecutar
  • Servidor de trabajo (puede ser otra máquina virtual en alguna parte)

Típica de Empleo

Los tipos de puestos de trabajo que se ha diseñado este sistema funcione es la siguiente:

  • Sistema recibe una lista de datos sobre los que tenemos que coincidir y devolver los resultados
  • La coincidencia consiste en la comprobación / buscando varios (bastante estática) de fuentes de datos
  • Los resultados de las fuentes de datos pueden requerir una mayor validación, la fusión, el control de las fuentes de datos adicionales en respuesta a los resultados
  • Los datos se devuelven con los registros coincidentes, completamente validados y procesados
  • Cada registro en un puesto de trabajo es independiente del resto

Así que básicamente estamos buscando a ejecutar trabajos que requieren una combinación de búsquedas de bases de datos y algunos cálculos numéricos, un escenario bastante típica en un entorno empresarial.

soluciones Grid no sólo son ventajosas para el procesamiento de trabajos de este tipo. Básicamente, cualquier proceso que puede ser dividido en unidades independientes se pueden ejecutar en paralelo. Ver esta wikipedia ejemplos y más información: Grid Computing , pero un par de ejemplos famosos son Seti @ Home y BIONC . Existen marcos para el funcionamiento de las redes de computación, y estos están bien vale la pena analizar.

¿Qué vamos a lograr?

Al final de estos artículos espero demostrar que la implementación de una red de oficina no tiene por qué ser enormemente caro o el tiempo. Voy a hablar:

  • Configuración del sistema de control de trabajo, la configuración del trabajo
  • Creación de un adecuado procesamiento de la máquina virtual
  • ¿Cómo configurar el sistema en una máquina Windows
  • Asegurar que está utilizando la última versión del código y los datos
  • Implementación y la evaluación comparativa
  • De cara al futuro

Voy a ser la construcción (ok he construido, a continuación, escribió esto) una aplicación de ejemplo para probar los conceptos en un equipo local con Windows XP y la máquina virtual de mi "GridMachine. Mi servidor de control de trabajos será mi máquina principal que corre Fedora 11 .

Esto no es en absoluto la intención de demostrar un sistema totalmente funcional robusta, su significado más de una manifestación y discutir que demuestra que estas cosas se puede lograr en un espacio relativamente corto de tiempo ya un bajo costo. Por favor, no dude en enviarnos sus comentarios, correcciones o mejoras y haré mi mejor esfuerzo para mantener este artículo actualizado a partido.

La próxima vez

En la parte 2 voy a empezar por mirar el sistema de control de trabajo, y buscar la forma en que los trabajos se debe configurar con el fin de lograr la mayor cantidad de procesamiento, mientras que garantizar que cada puesto de trabajo se procesa sin falta.

Oficina de Computación Grid utilizando entornos virtuales - Parte 2

Por Lloyd Watkin Steven , 04 de diciembre Viernes 2009 23:23

Introducción

Yo trabajo en una empresa donde corremos muchos puestos de trabajo de procesamiento por lotes millones de registros de datos cada día y he estado pensando sobre todos los equipos que se sientan alrededor de cada uno y cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En esta serie de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la parte 1 me dio una visión general del sistema y las tecnologías que va a utilizar, así como se discute algunas de las posibles razones por las que se desea crear una red de oficinas.

Control de trabajos

Si usted va a estar ejecutando trabajos entonces usted va a necesitar una cierta manera de gestionarlos. Su sistema de control de trabajos (en el servidor de trabajo) tiene que ser muy bien pensado antes incluso de intentar ejecutar una red de oficina. Así que en primer lugar, ¿cuáles son las tareas de un sistema de control de trabajos:

  • Entregue los trabajos a petición de los trabajadores
  • Informe a los trabajadores qué tipo de puestos de trabajo para ejecutar
  • Seguimiento de los trabajos
  • Asegúrese de que los trabajos sólo se ejecutan una vez
  • Proporcionar los datos del trabajo a los trabajadores, o por lo menos decirles dónde conseguirlo

El sistema también debe ser extensible, una solución que funciona por ahora en un solo caso puede ampliarse para ejecutar varios tipos de puestos de trabajo como la empresa considera que el valor en una solución de red. Por ejemplo, el empleo puede tener prioridades, más de un tipo de trabajo pueden existir (es decir, varias bases de código), con el tiempo incluso se puede ejecutar varias máquinas diferentes trabajadores que están optimizadas para cada tipo de trabajo (a pesar de que se aleje del "trabajador genérico 'idea). Siempre trato de pensar en el futuro cuando los sistemas en desarrollo, una visión a corto plazo puede conducir a la frustración a largo plazo y el tiempo de desarrollo mayor.

Servidor de tareas de

Vamos a necesitar un lugar para el control de nuestros puestos de trabajo de, este debe ser el único sistema en la cuadrícula que tiene un localizador de recursos fijos, ya sea una dirección IP, nombre de host, la dirección URL (usando DNS interno), etc Esto se debe a los trabajadores necesitan saber dónde buscar empleo, los trabajadores necesitan para encontrar el sistema de control de trabajos (no el sistema de control de trabajo encontrar a los trabajadores).

El servidor de trabajo en sí no tiene realmente una tarea complicada (en un sistema básico de todas formas), es necesario almacenar una lista de puestos de trabajo, entregar trabajos, recibir los resultados, y posteriormente almacenarlos para su posterior recuperación. ¿Cómo estas partes (por ejemplo, "entregar el empleo") se definen pueden ser muy básicas. Más tarde se puede extender el sistema para incluir una interfaz de administración para agregar, editar, eliminar, suspender los trabajos, pero esto está más allá de este ejercicio.

No hay motivo entonces de que su servidor de trabajo no podía ser una máquina virtual que se ejecuta en el servidor de proceso principal, siempre que no drena demasiados recursos de ella. El servidor de trabajo sin embargo se necesita de alta disponibilidad, si se cae en un viernes por la noche usted va a perder un fin de semana de tratamiento, lo que podría costarle un par de semanas de tiempo de procesamiento (en comparación con el servidor principal de procesamiento solo) . Es posible que desee considerar la posibilidad de su servidor de trabajo en un entorno de equilibrio de carga de alta disponibilidad.

Configuración básica

La configuración básica de nuestro servidor de trabajo consistirá en lo que estoy llamando a uno de mis servidores LIMP (es decir Li nux, ySql m, HP P). El código que se ejecuta en los trabajadores Thea realmente averiguar qué puestos de trabajo que se puede ejecutar mediante la interacción con bases de datos con el trabajo del sistema de control. Más adelante se podría crear un servicio web, y de hecho reparten puestos de trabajo en lugar de que los trabajadores hacen el trabajo duro sí, pero por ahora vamos a seguir utilizando el principio KISS (Keep it simple, estúpido!).

Por lo tanto, vamos a crear tres MySQL las tablas para hacer frente a puestos de trabajo. Estos serán «puestos de trabajo», «jobRecords`, y `jobResults».

puestos de trabajo de mesa Aquí estoy usando SQL Buddy una alternativa poco grandes para phpMyAdmin sólo porque es más fácil de instalar en CentOS (para otros ven: 10 grandes alternativas a phpMyAdmin )

Esta tabla se compone de 5 campos simples,

  • Identificación: identificar en forma única el trabajo
  • Nombre: ¿Podría ser una referencia del cliente, o cualquier número de otros identificadores
  • Situación: Usted necesita saber que el trabajo es, por ejemplo,
    • 0: No ha comenzado
    • 1: Recogido
    • 2: Completado
  • started_by: ¿Quién empezó a hacer el trabajo? Esto no es del todo necesario, pero es bueno tener. Te sugiero que el seguimiento de los trabajadores por su dirección IP en la red
  • started_at: ¿Cuándo el trabajador iniciar el trabajo? Mediante el seguimiento de los trabajos que no hayan completado dentro de X cantidad de tiempo que sabemos que tenemos que recoger el trabajo de nuevo y comenzar a procesar por otro trabajador. Los trabajadores podrían dejar de procesar / go en línea para cualquier número de razones, falta de energía eléctrica, accidentes, pérdida de red, etc

Es fácil cómo este cuadro podría ampliarse con algunos campos adicionales para permitir el seguimiento de las estadísticas, una columna de tiempo de llegada para ver cuánto tiempo tomó el trabajo, un contador para ver cuántos trabajadores tomó el trabajo (obviamente esto tiene que tienden a 1), la prioridad del trabajo, la lista puede seguir y seguir. En escenarios más trabajo complejo que sería posible especificar la cantidad de memoria que el trabajador tendría acceso a (y por tanto, sólo el uso adecuado de trabajadores), o incluso qué tipo de trabajador se requiere.

Vamos a añadir un ejemplo algunos trabajos:

puestos de trabajo ejemplo

En la tabla siguiente de nuevo es muy sencillo de entender, estas son nuestras fichas de trabajo. Están vinculados a la mesa de trabajo principal por una columna `jobs_id». La composición de este cuadro depende mucho de los datos que debe proporcionar a sus trabajadores, vamos a hacer un ejemplo muy simple, donde tenemos cuatro columnas:

  • Identificación: Identificación del registro
  • Nombre: el nombre de la persona
  • dirección: La dirección de la persona
  • jobs_id: El ID de trabajo que este registro está vinculado a

La tabla de la tercera y última consiste en una tabla de resultados, tiene mucho de la misma marca hasta que la mesa de registros, y con la adición de algunas columnas pueden ser parte de la tabla de registros:

  • job_record_id: Vincular el resultado a la mesa de trabajo
  • resultado: El resultado de los datos

... Y eso es todo lo que necesitas para el control del trabajo! (Aunque a un nivel muy básico) En mi caso estoy señaló a otra mesa en la que mis datos para procesar se encuentra, pero esto podría fácilmente un archivo de estado, los parámetros para ejecutar el código de simulación, lo que sea.

Selección de un trabajo

Como se mencionó anteriormente, los trabajadores a hacer nuestra gestión de trabajo por nosotros, por ahora, así que todo lo que necesitamos realmente es encontrar un trabajo que necesita tratamiento y obtener la información. ¿Cómo hacemos esto? Así recoger los criterios de selección de empleo y buscar trabajo, en SQL hice lo siguiente:

  1. Tome ofertas de empleo que no están marcados como completa, pero desde nuestro trabajo y recuperar los (__ME__ sustituir con un identificador más fácil, sería la dirección IP):
      UPDATE `trabajos` SET `estado` = 0 WHERE `estado` = 1 `Y` = started_by __ME__; 
  2. Utilizando los criterios de selección de trabajos, seleccione un trabajo y decirle al sistema de control que este trabajador se trata de que:
      UPDATE `trabajos` SET `estado` = 1, `started_by` = __ME__, `started_at` = NOW () en caso de «estado» = 0 O
     («Estado» = 1 `Y` started_at> DATE_SUB (NOW (), INTERVAL X HORA)) ORDER BY `id` ASC; 

    Por el acaparamiento de puestos de trabajo que no han arrojado resultados en X cantidad de tiempo que nos aseguramos de que todos los trabajos se ejecutan en el caso de un trabajador de chocar o ir sin permiso.

  3. A continuación tomar los datos de puestos de trabajo seguido por los mismos registros:
      SELECT * FROM `trabajo` WHERE `started_by` = __ME__ LIMIT 1;
     SELECT * FROM `job_records` WHERE `id` = __JOBID__; 

Una vez finalizado el trabajo que insertar nuestros registros de resultados y marca el trabajo lo más completo. Recuerde que los trabajos pueden suspender / reanudar en cualquier momento, permitir cierta solidez en su guión. Puede ser que la tarea suspende la mitad del camino a través de la actualización del sistema de control de trabajo, así que comprobar el número de registros en un puesto de trabajo y el número de resultados de volver a guardar en el sistema de control de trabajo sería un acierto.

Además, si bien este trabajo se muestra cómo se pueden seleccionar y administrar desde una consulta de SQL marco que realmente debe abstraer su control sobre el trabajo de modo que si usted decide pasar a utilizar un servicio web, basado en un sistema de archivos, XML , o cualquier otro número de sistemas que no afectará el código por encima de ella.

Trabajo de configuración

El siguiente aspecto a considerar es el tamaño del trabajo y la configuración. Al jugar con la configuración de trabajo que puede lograr un excelente equilibrio entre la velocidad, el proceso de replicación, y la fiabilidad. Tomar un par deA escenarios:

  1. Trabajos tener un día cada uno para ejecutar: Esto significa que sus trabajadores necesitan 15 días para procesar cada puesto de trabajo (recuerde que el 10% de la energía para 2/3rds de la hora). Esto claramente no es una configuración de sabios, el tamaño de su trabajo es demasiado grande! Se necesitaría por lo menos el doble de tiempo para conseguir un trabajo procesado si el trabajador se ausentan sin permiso inicial (tiempo para recoger a que no ha devuelto un resultado más el tiempo de reprocesamiento). En un ideal que tendría al menos un trabajo de jornada completa fácilmente aclarado por el final de cada período de inactividad, de esa manera a mantener los puestos de trabajo ralentí y en peor de los casos un trabajo tomaría dos días para el proceso si el primero van a faltar.
  2. Trabajos tomar un minuto para correr: Esto significa que sus trabajadores toman unos 15 minutos para ejecutar cada trabajo. Si bien este principio puede parecer ideal, la ganancia de proceso de trabajo adicional durante la hora del almuerzo, coffee break, reuniones, etc este escenario pone tensión en otras áreas de su sistema y presenta sus propios problemas. Por ejemplo, en primer lugar la configuración de su proporción de tiempo de procesamiento va a ir a la derecha hacia abajo, por lo tanto perder la eficiencia del sistema. La red va a ser constante flujo de información de empleo a los trabajadores de diversos funcionarios frustrante que dong su trabajo diario. Usted también va a poner más presión en su trabajo como servidor de procesamiento que tiene que repartir montones y montones de pequeñas piezas de trabajo sobre una base regular. Por último, en esta situación si su servidor de trabajo se cae va a crear un registro de gran parte de atrás de que el trabajo no mayor de puestos de trabajo podría continuación de la tramitación felizmente ignorante de que el servidor de trabajo estaba experimentando dificultades.

En realidad no habrá una configuración ideal para la configuración de su red, mucho depende de los recursos disponibles, los tipos de trabajo, los requisitos del trabajo tiempo de respuesta, capacidad de red, y así sucesivamente. Sin embargo, algunas directrices serían:

  • Tamaño de puestos de trabajo para que cada trabajador puede obtener a través de al menos 3-4 puestos de trabajo en un período de 15 horas (el más largo período de tiempo de inactividad probable)
  • Juega con el tamaño del trabajo para que el tiempo de instalación se convierte en bastante insignificante en comparación con el tiempo de procesamiento (teniendo en cuenta el punto anterior).
  • Si un trabajo no termina en el doble de la cantidad de tiempo (tal vez menos) que espera que se complete asume que su AWOL ido y comenzar a procesar con otro trabajador. Esto significa que usted puede tener que esperar hasta tres veces la longitud normal de un trabajo para que se complete (posiblemente más si el trabajo no posterior). Es posible que desee reducir este tiempo, pero tenga cuidado de no reducir demasiado ya usted puede comenzar a duplicar las tareas de procesamiento en una base regular.
  • Los trabajos deben ser independientes de las necesidades fuera de la medida de lo posible. El servidor de trabajo, por ejemplo, sólo se debe contactar al inicio y al final de cada trabajo.
  • No sature su red, esto tiene dos efectos negativos, a su personal durante el día se encuentra con la red de frustración y problemas se pueden experimentar con las conexiones se agote el tiempo un problema que sólo va a empeorar a medida que escala de su red.
  • Asegúrese de puestos de trabajo se puede ejecutar en sus trabajadores. Si los trabajos se vuelven demasiado espacio de memoria de trabajo intensivo o intensivo del disco comenzará a abortar y lo único que notará es una gota en el número de trabajos procesados ​​sin verdadera razón.

Entrega de los resultados de un trabajo

Al presentar los resultados de un trabajo es importante comprobar que los resultados no han sido presentadas por otro trabajador, especialmente si el trabajador actual ha estado inactivo por algún tiempo.

Cuando los resultados se envía a asegurar que el número de resultados coincide con el número de registros en el trabajo.

Como se dijo anteriormente, y no está de más insistir, construir la tolerancia a fallos en la recuperación de puestos de trabajo y presentación de resultados. Los trabajadores pueden (y lo más probable es que) entrar en modo de suspensión en el inconveniente de la mayoría de veces y esto tiene que ser atendidos. Además, una vez más abstrayendo su presentación resultados ayudarán a atender a los futuros cambios en su sistema de control de trabajo mucho más fácil de tratar.

Resumen

En esta Seccià hemos visto lo que un servidor de control de trabajos tiene que hacer y cómo conseguir un sistema muy básico establecido. Hablamos de cómo recuperar un trabajo desde el sistema de control y la mejor manera de configurar puestos de trabajo para aprovechar al máximo nuestro sistema de red de su oficina. Para finalizar, un párrafo o dos sobre la presentación de resultados al servidor de control de trabajo se presentó.

  • Un servidor de control de tareas administra los trabajos y asegura que todas las unidades de trabajo se completan
  • Al abstraer el trabajo de seleccionar / sumisión resultados podemos cambiar la tecnología del servidor de control sin problemas mucho
  • Configure su trabajo para asegurarse de que se ejecute de forma rápida y eficaz sin poner demasiada presión sobre su infraestructura de red, y sin duplicar tareas de procesamiento en una base regular.
  • Asegúrese de que construir la tolerancia a fallos y checking error en sus rutinas, los trabajadores pueden suspender y reanudar y el inconveniente de la mayoría de veces. Recuerde, para comprobar si los resultados ya han sido presentadas por otro trabajador.

La próxima vez

En la parte 3 vamos a crear nuestra máquina de proceso virtual y configurar las ventanas de nuestras máquinas para convertirse en trabajadores a tiempo inactivo.

Oficina de Computación Grid utilizando entornos virtuales - Parte 5

Por Lloyd Watkin Steven , 04 de diciembre Viernes 2009 23:03

Introducción

Yo trabajo en una empresa donde corremos muchos puestos de trabajo de procesamiento por lotes millones de registros de datos cada día y he estado pensando sobre todos los equipos que se sientan alrededor de cada uno y cada día sin hacer nada durante varias horas. ¿No sería bueno si pudiéramos utilizar esas máquinas para reforzar la capacidad de procesamiento de nuestros sistemas? En esta serie de artículos que voy a ver los beneficios potenciales del empleo de una oficina de la red utilizando entornos virtualizados.

En la Parte 4 se observó el uso de herramientas para asegurar que estamos ejecutando la última versión de las fuentes de datos y código, de forma que los resultados obtenidos están siempre al día con el negocio de la información más reciente y la lógica.

Pre-implementación

Antes de implementar su sistema de red si hay una cosa que hacer y una sola cosa es comparar su sistema actual! No importa lo que dicen sus colegas sobre la cantidad de trabajo extra el sistema va a hacer a menos que tenga los números que lo respalden sus garantías no son otra cosa. Por lo tanto,

  • how many records can you process currently? Por día? Por hora?
  • ¿Cuánto tiempo suele tomar a su vez en torno a un trabajo?
  • ¿Cuánto más capacidad tiene?

También hay preguntas adicionales:

  • Si su servidor de procesamiento (o uno de los servidores de procesamiento) se cae, ¿cómo afecta esto a sus capacidades, va a ser paralizado?
  • ¿Qué ventajas esperanza / espera conseguir de un sistema de red?
  • ¿Son sus máquinas de oficina capaz de ejecutar los trabajos?
  • Si tu (o puede ser convertido empleos) para trabajar en este estilo de correr?

El último gran punto es tomar su tiempo en una modificación importante como éste. 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). Deje que el nuevo proceso para resolver.

Implementación

Mi sugerencia sería hacer estallar en la oficina de un fin de semana de realizar todas las instalaciones y puesta en marcha. Haga esto justo antes de quince días de vacaciones y dejar una pobre cap otros para hacer frente a las consecuencias no ... tal vez ...

Implementación de un sistema como este tiene que ser lenta. A pesar de ser relativamente fácil de configurar este sistema afectará a la infraestructura de toda la oficina (y el digital). En primer lugar, lanzar un par de máquinas a la vez, controlar el tráfico de red, como los anfitriones de los trabajadores realizan en el día a día. Es posible que deba modificar la configuración de su trabajo en respuesta a los hallazgos.

Una vez que el sistema se ha instalado con unas pocas máquinas (digamos el 10% de todas las máquinas de oficina, es decir, 5) mantener el seguimiento del tráfico de red y equipo host performance. siguiente punto de referencia de nuevo, ahora debería ser procesando los trabajos de un 33% más que sus puntos de referencia en primer lugar. Compruebe esto es así, o que está por lo menos en este estadio. Si no es así, investigar lo que está pasando antes de continuar. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

En todo momento mantener la evaluación comparativa, incluso después de todas las implementaciones se hacen. Comprobar cómo las nuevas actualizaciones de código afectan a la velocidad de su sistema, compruebe todos los trabajadores están reportando en el procesamiento y el empleo. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

¡Alto!

¿Qué pasa si usted quiere dejar a sus trabajadores que se ejecute en algún momento? 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. Basta con editar el script de procesamiento con una salida (0) or die () u otra declaración de matar a su trabajo de procesamiento. Una razón importante por la que siempre tratamos de actualizar a la última secuencia de comandos de procesamiento antes de correr!

Demostración del sistema

Para escribir esta serie de artículos cortos que he creado una red muy pequeña para demostrar las tecnologías y metodologías. He leído un montón de artículos, tutoriales, y utiliza diversas herramientas para configurar y monitorear lo que estaba pasando. De ninguna manera me he salido y saturada de una oficina con todo el tráfico y ni he tenido acceso a un personal permanente de los miembros de PC para ver cómo el rendimiento de acogida se vio afectada.

Mi sistema de demostración fue muy humilde por cierto. Utilicé mi escritorio normal de configurar como un servidor de control de trabajo. En esta había instalado MySQL server instalado configurado como un maestro en la replicación, PHP , Â y SVN vinculados a través de apache (para el acceso de los trabajadores a través de VM).

I then created a centOS worker machine on VirtualBox on a 6 year old windows XP laptop. Puedo configurar las tareas programadas como se especifica después de copiar la máquina virtual en el equipo y dejarlo ir.

La máquina virtual se creó con PHP, la subversión, y mySQL. Revisé una rama denominada «trabajador» de mis servidores de tareas de control de depósito y se aseguró de que podría actualizarse con '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. Después de todo este montaje que la secuencia de comandos bash y la tarea.

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

  • Leer en el campo de nombre
  • Contó el número de nombres similares en una tabla de la fuente de datos que posea sobre la máquina virtual
  • Contó el número de nombres que el anterior pero la división del nombre por espacios (es decir, nombre, segundo, apellido)
  • Repitió este proceso 1.000 veces

Cada trabajo tomó aproximadamente 20 minutos en ejecutarse. En un momento abrí varias copias de la máquina virtual de trabajo en la computadora portátil ventanas y observó los trabajos será marcado por cada una de las direcciones IP de los trabajadores. 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. Al reanudar el uso del ordenador portátil se produjo un retraso de unos 30-60 segundos, se trata de una buena cantidad de tiempo y el personal tendría que ser conscientes de que su máquina puede hacer una pausa por un corto tiempo al volver a la máquina. máquinas más recientes no pueden tener una pausa de tanto tiempo. El beneficio de la cantidad de tratamientos realizados por estas máquinas durante períodos de inactividad que más que compensan los miembros del personal que tiene que esperar un corto período de tiempo (digamos 1 minuto), al llegar a sus máquinas de la mañana (que con frecuencia esperar más que esto para un Windows Defender actualización a tener lugar), siempre y cuando se hicieron conscientes de este momento (de utilidad para tomar un café por la mañana!).

En general me siento seguro de que me han demostrado las tecnologías que se podrían utilizar para crear tal sistema. He demostrado que este sistema funciona en una escala (muy) pequeño y con un poco más experimentado podría ampliarse utilizar los recursos de las máquinas de una oficina. Si no llegar al punto de hacer esto yo estaría muy interesado en saber / ver si alguien más lo hace.

Conclusiones / Evaluación

El siguiente paso obvio sería la de obtener realmente un ejemplo del mundo real y empezar a implementar un sistema de este tipo dentro de un entorno de oficina y ver qué pasa. Asking a business to commit to this without a trail blazing company to prove the technology and effectiveness may be a little difficult. Grid/Distributed computing is very popular is some circles and has some large applications (BIONC, SETI@Home, Folding@Home, etc). No lo hice, sin embargo, encontrar una escala más pequeña y simple sistema como este en mis búsquedas que podría ser lanzado dentro de un entorno de oficina.

He creado un sistema básicamente gratis con el software de código abierto y sobre todo las herramientas disponibles en casi cualquier oficina. Las tecnologías se demostró, básicamente, y mostrar el resultado de llevar a cabo y funciona como se esperaba. Espero que demuestran que con no mucho trabajo y con una configuración muy simples que pueden implementar una red de oficinas del sistema de cálculo que es de gran alcance, baratos, A y escalable, todo al mismo tiempo.

Una vez que el sistema está funcionando casi no hay fin a la cantidad de personalización y mejoras que puede hacer. Por ejemplo las estadísticas y evaluaciones comparativas se pueden agregar fácilmente mostrando el valor de este sistema todos los días. Las nuevas máquinas se pueden añadir de forma rápida y fácil a medida que llega con mejoras en el hardware existente reforzar su poder de procesamiento.

Espero que hayas disfrutado de la lectura de esta serie de artículos y su dado que pensar en el funcionamiento de un sistema de red de oficina. The solution presented here won't necessarily work in all situations but should be adaptable to allow you to get your data processing done using your own solution.

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

Zend Framework: Fundamentos - Revisión

Por Lloyd Watkin Steven , 28 de noviembre 2009 Sábado 22:42

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.

Antecedentes

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.

Sobre el Curso

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.

El estilo del curso fue estructurado, permite la retroalimentación y la colaboración entre los asistentes y el instructor. El director del curso era amable, accesible (direcciones de correo electrónico se compartieron las preguntas), y aunque su presentación de las diapositivas era un poco inestable parecía totalmente competente en el marco. Fue claramente una persona que utiliza el marco sobre una base regular en lugar de alguien que se le enseña a enseñar el curso, me gustó la experiencia del "mundo real" a este respecto.

Sensación general

De alguna manera me encontré con el curso de una pérdida de tiempo, en otros fue muy útil. Espero estar mis razones con claridad, y tal vez dar un poco de alimento para el pensamiento o información útil (sabiendo mí esto es poco probable!).

Para mí este curso estaba dirigido a un nivel demasiado bajo. Después de haber pasado por el guía de inicio rápido, lea Zend Framework de Rob Allen en acción, y trabajó con el marco de un yo poco en realidad no conseguir nada demasiado. Me ha gustado el curso para recoger a partir del final de la guía de inicio rápido y desarrollar habilidades adicionales.

Dicho esto, el título del curso indica claramente "Zend Framework: Fundamentos" y en ese aspecto el curso consigue lo que se propone hacer. Otros miembros del equipo de desarrollo que no han pasado el tiempo buscando en el marco finalizado cada período de sesiones con preguntas entusiasmo y le preguntó que era muy bonito de ver.

No todo estaba perdido, que era bueno para pasar el tiempo de confirmar los detalles básicos de la estructura y llegar a hacer un par de preguntas en las zonas donde no fue del 100%. También fue el tiempo que tengo que sentarme cada día y pensar acerca de la codificación con el marco y los proyectos de futuro, algo que yo no, hubiera podido hacer otra cosa (¿se imagina su empresa acepta que:?)). Por último pero no menos importante que conseguir también un certificado de buena Zend decir que asistieron al curso (aunque sea por correo electrónico).

Certificación Zend Framework

Esta fue una pregunta que seguía viniendo a la mente durante el curso, que me prepare para la certificación? La rápida y fácil es un rotundo no. El instructor del curso fue muy claro en que con los consejos adicionales que para la certificación de que realmente debería usar el marco en el día a día y me siento muy cómodo y seguro en su uso y metodologías.

Resumen

Teniendo en cuenta todo lo que he escrito arriba, voy a resumir todo en dos puntos de la bala fácil:

  • Nuevo en Zend Framework: Este curso es exactamente lo que se espera, te da una buena introducción al marco y una buena base en los fundamentos de la cual se puede construir. El curso parece generar interés y entusiasmo por el marco, entre los desarrolladores.
  • Se utiliza el Zend Framework: Si bien es bueno para reforzar algunos de los conceptos básicos sentí el tiempo, esfuerzo y fondos para realizar el curso podría de sido mejor invertido en otra parte. Será bueno SCAEI Zend crear un nuevo curso de nivel superior para tomar los desarrolladores al siguiente nivel - por lo menos a la norma de certificación y más allá de inmediato. Para que iba a registrarse.












Panorama Tema por Themocracy

10 visitantes en línea
9 personas, contra los robots de 1, 0 miembros
Número máximo de visitantes de hoy: 12 a las 01:11 UTC
Este mes: 26 a 05/07/2011 12:35a.m. UTC
This year: 130 at 28-03-2011 10:40 pm UTC
Todo el tiempo: 130 en 28-03-2011 22:40 UTC