18 de marzo

Video - tutoriales son, además de un libro de texto es una buena introducción a un tema. Por SpringSource allí en Grails dos tutoriales interesantes en youtube .
Si usted está interesado en las web Grails marco, se debe tomar media hora para estos dos tutoriales en vídeo bien hecho.

a través de:
Nuevo video tutorial de Grails - que-republik.de

gklinkmann escrito por \ \ tags: y y ,

12 de octubre

Cuando un patrón de diseño ha sido probado en el desarrollo web, entonces no es el patrón Modelo-Vista-Controlador o MVC justo. Durante mucho tiempo he estado buscando un framework PHP que implementa MVC constantemente los brotes, pero no lo mismo que usar un martillo para cascar una nuez. Pies de galgo (o "Nueva Alemania" peso ligero) orientado a objetos y que debería ser. PHP Fama Obras como Zend, CakePHP y Symphony son más propensos a los coches de carreras. A pesar de que establece perfectamente a MVC, orientado a objetos que son, pero de pies ligeros es diferente.

Así que estoy en CodeIgniter encontrado, lo que se pretende por una "base estrecha" (tamaño pequeño) a venir.

La instalación es fácil. La postal en "DocumentRoot" Desembalaje del servidor Web, cambiar el nombre del directorio y la URL completa de la página web del archivo de configuración system/application/config/config.php especifique.

  'base_url' ] = "http://localhost/allMedia/" ; $ Config ['base_url'] = "http://localhost/allMedia/"; 

Y ya se puede escribir la primera.

  Controller { extends Controller {libros de clase
    ...  algo de lógica ...

    / / Crear la vista
    load -> view ( 'common/header' , $headerdata ) ; $ This-> load -> view ('común / de cabecera', $ datos de cabecera);
    load -> view ( 'book/list' , $data ) ; $ This-> load -> view ('libro / list', $ datos);
    load -> view ( 'common/menu' , $menudata ) ; $ This-> load -> view ('común / menu', $ menudata);
    load -> view ( 'common/footer' ) ; $ This-> load -> view ('común / pie de página');
 } 

CodeIgniter es capaz de ensamblar las partes de un punto de vista antes de su envío. Las plantillas son compatibles, pero no es obligatorio.

Para mí, este marco trae todo a lo que necesito:

  • el patrón de diseño MVC
  • coherente orientada a objetos
  • Rendimiento
  • bonita URL
  • Clases de ayuda (por ejemplo, para la paginación)
  • buena integración de la doctrina como un OR Mapper
  • por no hablar de una buena documentación

"El fuego se ha encendido en mí", e implementó un proyecto de pequeña ya con CodeIgniter. Así que si Zend y compañía son demasiado complejas, debería echar un vistazo a CodeIgniter un poco más de cerca. Vale la pena.

gklinkmann escrito por \ \ tags: , ,

05 de mayo
Jax 2010 logo

Si yo tendría que construir una aplicación web de Java en el momento, probablemente relacionado con el Spring Framework para implementar. Como parte de Jax 2010 , Juergen Hóller (uno de los desarrolladores principales de la primavera) una revisión, un inventario y una perspectiva dada en primavera.

Después de Springsteen ha jugado como muchos otros marcos y las tecnologías alternativas (como la SWT y GWT), en su opinión, sobre todo en el papel como una plataforma y estándares, "facilitadores" un papel muy importante. , Es decir, los marcos que sean más innovadoras y mayores ciclos de lanzamiento tiene como normas, como la APP. Por el contrario, ofrecen incluso la posibilidad de nuevas normas para integrarse en los entornos existentes.

Por lo tanto, es posible trabajar con Spring 3.0 aplicaciones utilizando estándares como JSF 2.0 y JPA 2.0, o aún en los más antiguos de JBoss, Tomcat o Websphere puede incluso funcionar las instalaciones.

Esta función integradora es, según Juergen Hóller seguir para determinar la ruta de la primavera. Aquí para junio / julio de 2010, la versión 3.1 y la versión 3.2 en 2011 también se proporcionan. Esto será como en el pasado por la liberación de Milestone mantiene siempre cerca de las últimas versiones de los estándares o incluso un pequeño paso adelante.

gklinkmann escrito por \ \ tags: , ,

22 de marzo

He usado un par de horas a mi alojado en Google Code proyecto Grum sobre el estado de cosas para traer (que era de hecho era hora). Grum es una pequeña aplicación Grails para la gestión de usuarios, lo que me permite la web marco de Grails "para "jugar.

Soy consciente de la aplicación de los muchos plugins Grails omitidos a fin de tener como efectos secundarios posible y mantenerlo para aquellos que simplemente buscan una introducción a Grails. Por lo tanto, incluido en soluciones Grum, tales como el hombre:

  • el acceso a una base de datos MySQL implementado
  • 1:1, 1: ny n: m GORM modelada relaciones
  • escribir sus propias librerías de etiquetas
  • La biblioteca de etiquetas JSP DisplayTag utiliza la página de datos por la página, para agrupar, ordenar, y en todos los formatos posibles (Excel, CSV, XML, PDF) a la exportación
  • te permite subir archivos
  • las pruebas de funcionamiento con el plugin de webtest utiliza
  • y la entrega de XML basado en la URL (la negociación de contenido corto) implementa

La nueva versión 0.3 ahora utiliza griales 1.2.1 y el webtest plugin en la versión 2.0.3. La fuente , los archivos de SQL para crear la base de datos MySQL y un archivo web tiene todas las librerías necesarias en Google Code para descargar listas.

Nutztungshinweise:
El código se puede utilizar libremente, pero puede contener errores de los que no asumen ninguna responsabilidad. Las condiciones de la licencia de las bibliotecas que deben ser respetados.

gklinkmann escrito por \ \ tags: y y , ,

19 de octubre

Mientras estaba en la primera parte de mi pequeña serie de clientes HTTP han empleado con pera, lo haré ahora en el segundo Una parte de mi atención en el Zend Framework dirigida.

Aquí, también, necesitan de 2 paquetes para completar la tarea (ver parte 1 ). El paquete Zend_Http es como el paquete de PEAR Http_Request2 de pura comunicación HTTP adecuado.
Con Zend_Dom puede desmontar el HTML recibido.

Una manera de resolver la tarea podría ser:

  A
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
  <Php
 ; require_once 'Zend / HTTP / Client.php';
 ; require_once 'Zend / HTTP / response.php';
 ; require_once 'Zend / Dom / query.php';

 'http://www.google.de' ; $ Url = 'http://www.google.de';

 new Zend_Http_Client ( $url , array ( $ Cliente = new Zend_Http_Client ($ url, array (
     0 , 'Maxredirects' => 0,
     30 ) ) ; 'Tiempo de espera' => 30));

 try {
    $client -> request ( 'GET' ) ; $ Respuesta = $ client -> solicitud ('GET');

    200 == $response -> getStatus ( ) ) { if ($ respuesta == 200 -> getStatus ()) {

       new Zend_Dom_Query ( $response -> getBody ( ) ) ; $ Dom = new Zend_Dom_Query ($ respuesta -> GetBody ());
       $dom -> query ( 'form' ) ; Formas $ = $ dom -> query ('form');

       $forms -> current ( ) ; $ Form = $ formas -> current ();
       $form -> getAttribute ( 'action' ) ; $ Action = $ this - getAttribute> ('acción');

       new Zend_Http_Client ( $url . $action , array ( $ Cliente = new Zend_Http_Client ($ url. $ Acción, array (
           0 , 'Maxredirects' => 0,
           30 ) ) ; 'Tiempo de espera' => 30));
       setParameterGet ( 'q' , 'http client examples' ) ; $ Cliente -> setParameterGet ('q', 'ejemplos de clientes http');
       $client -> request ( 'GET' ) ; $ Respuesta = $ client -> solicitud ('GET');

       new Zend_Dom_Query ( $response -> getBody ( ) ) ; $ Dom = new Zend_Dom_Query ($ respuesta -> GetBody ());

       $dom -> query ( 'a.l' ) as $link ) { foreach ($ dom -> query ('A.L') as $ enlace) {
          $link -> hasAttribute ( 'href' ) ) { if ($ link - hasAttribute> ('href')) {
             $link -> getAttribute ( 'href' ) ; Href = $ $ enlace - getAttribute> ('href');
             $link -> textContent ; $ Enlace = $ enlace de texto - el contenido del texto>;

             $href \" > $linkText </a><br />" ; echo "<a href= \" $href \"> $ texto del enlace </ a> <br />";
          } 
       }

    { Else {}
         . $response -> getStatus ( ) . ' echo "inesperado de estado HTTP: '$ respuesta -> getStatus ()' ..  '.
              responseCodeAsText ( ) ; $ Respuesta -> responseCodeAsText ();
     }
 Zend_Http_Exception $e ) { Captura} (Zend_Http_Exception $ e) {
     . $e -> getMessage ( ) ; 'Error:' echo $ e -> getMessage ().
 }
 > 

El código habla por sí solo, así que no voy a explicar en este punto tanto detalle como en la primera parte.
La diferencia está en el análisis de HTML. El método query () (líneas 18 y 31) establece que no es una matriz, sino más bien un objeto de clase Zend_Dom_Query_Result espalda. Debido a esta clase, los dos de interfaz Countable y Iterator en práctica, los resultados de la investigación con un foreach . bucle para pasar por Cada partido es un objeto de clase DOMElement muestra.

Conclusión:
Zend también ofrece una buena Zend_Http Zend_Dom y cliente HTTP. Si utiliza otras clases ya en su proyecto desde el Zend Framework, este método se recomienda.

Outlook:
En la Parte 3 dejo el mundo de PHP e imaginar con HttpUnit un cliente HTTP muy cómodo y rico en funciones para Java.

gklinkmann escrito por \ \ tags: , ,