18 mars

Vidéo - tutoriels sont en plus à un manuel est une bonne introduction à un sujet. Par SpringSource là sur Grails deux tutoriaux intéressants sur youtube .
Si vous êtes intéressé par les Grails framework web, vous devriez vous prendre une demi-heure pour ces deux tutoriels vidéo bien faits.

par l'intermédiaire:
Nouveau tutoriel vidéo sur Grails - il-republik.de

gklinkmann écrit par \ \ tags: , des , les ,

12 octobre

Quand un modèle de conception a été prouvé dans le développement web, puis il ya le modèle Model-View-Controller ou juste MVC. J'ai longtemps été à la recherche d'un framework PHP qui implémente MVC systématiquement les pousses, mais pas le même que l'aide d'un marteau-pilon pour casser une noix. Pied léger (ou "Nouvelle allemande" léger) orienté-objet et il devrait être. PHP Fame Des ouvrages tels que Zend, CakePHP et Symphony sont aussi susceptibles de voitures de course. Bien que ils ont mis parfaitement à MVC, orienté-objet, ils sont, mais pas léger est différent.

Donc, je suis sur CodeIgniter rencontré, ce qui est revendiqué par une "base étroite" (faible encombrement) à venir le long.

L'installation n'est jamais facile. Le ZIP dans "DocumentRoot" Déballage du serveur Web, renommer le répertoire et l'URL complète du site Web dans le fichier de configuration system/application/config/config.php préciser.

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

Et vous pouvez déjà écrire son premier.

  Controller { extends Controller {livres de classe
    ...  une certaine logique ...

    / / Construire vue
    load -> view ( 'common/header' , $headerdata ) ; $ This -> charge -> vue («common / en-tête ', $ data-tête);
    load -> view ( 'book/list' , $data ) ; $ This -> charge -> vue («livre / liste ', $ data);
    load -> view ( 'common/menu' , $menudata ) ; $ This -> charge -> vue («common / menu ', $ menudata);
    load -> view ( 'common/footer' ) ; $ This -> charge -> vue («common / pied de page ');
 } 

CodeIgniter est capable d'assembler des pièces d'un point de vue avant l'expédition. Les modèles sont pris en charge mais pas nécessaire.

Pour moi, ce cadre apporte tout à ce dont j'ai besoin:

  • le design pattern MVC
  • cohérente orientée objet
  • Performance
  • belle URL
  • Les classes utilitaires (par exemple pour la pagination)
  • bonne intégration de la doctrine comme un OU Mapper
  • sans parler d'une bonne documentation

"Le feu est allumé en moi" et mis en œuvre un petit projet déjà avec CodeIgniter. Donc, si Zend et Cie sont trop complexes, devraient jeter un oeil à CodeIgniter un peu plus près. Il vaut la peine.

gklinkmann écrit par \ \ tags: , ,

5 mai
Jax 2010 logo

Si je serait obligé de construire une application Web Java pour le moment, je serais probablement liée à la Spring Framework pour mettre en œuvre. Dans le cadre de Jax 2010 , Juergen Hoeller (l'un des développeurs principaux de printemps) un examen, un inventaire et une perspective donnée sur Spring.

Après Springsteen a joué le plus grand nombre d'autres cadres et les technologies alternatives (comme SWT et GWT), à son avis, en particulier dans le rôle de plateforme et de normes, «facilitateurs» un grand rôle. , C'est à dire des cadres plus innovantes et les cycles de mise plus avoir comme des normes telles que l'APP. Plutôt, ils offrent même la possibilité de nouvelles normes à intégrer dans les environnements existants.

Il est donc possible de travailler avec Spring 3.0 les applications utilisant des standards tels que JSF 2.0 et JPA 2.0, ou encore sur les anciens JBoss, Websphere ou Tomcat peut même exécuter des installations.

Ce rôle d'intégration est, selon Juergen Hoeller continuer à déterminer le chemin du printemps. Ici pour Juin / Juillet 2010, version 3.1 et la version 3.2 en 2011 sont également fournis. Ce sera comme dans le passé par des communiqués de Milestone toujours gardé à proximité des dernières versions des normes ou sont-ils même un petit pas en avant.

gklinkmann écrit par \ \ tags: , ,

22 mars

J'ai utilisé une couple d'heures à mon hébergé sur Google Code project Grum sur l'état des choses à apporter (il était en effet sur ​​le temps). Grum est une petite application Grails pour la gestion des utilisateurs, me permettant de le framework web Grails 'à «jouer.

Je suis conscient de la mise en œuvre des nombreux plugins Grails omis afin d'avoir moins d'effets secondaires que possible et de le conserver pour ceux qui recherchent simplement une introduction à Grails. Ainsi, inclus dans des solutions Grum, comme l'homme:

  • l'accès à une base de données MySQL en œuvre
  • 1:1, 1: n et n: m GORM modélisé les relations
  • écrire vos propres libs tag
  • Le JSP Tag Library displaytag utilisé la page de données par page, au groupe, en quelque sorte, et dans tous les formats possibles (Excel, CSV, XML, PDF) à l'exportation
  • vous permet de télécharger des fichiers
  • tests fonctionnels avec le plug-in webtest utilise
  • et la prestation de XML basé sur les URL spécifique (négociation de contenu court) met en œuvre

La nouvelle version 0.3 utilise maintenant Grails 1.2.1 et le plugin dans webtest la version 2.0.3. La source de , les fichiers SQL pour créer la base de données MySQL et d'un archivage web possède toutes les bibliothèques nécessaires sur Google Code pour télécharger prête.

Nutztungshinweise:
Le code peut être utilisé librement, mais peut contenir des erreurs pour lesquelles je décline toute responsabilité. Les conditions de licence des bibliothèques, il doit être observé.

gklinkmann écrit par \ \ tags: , des , les , ,

19 octobre

Pendant que j'étais dans la première partie de ma petite série sur les clients HTTP ont employé à la poire, je vais maintenant à la 2e Une partie de mon attention sur le Zend Framework adressée.

Ici aussi, besoin de 2 paquets pour terminer la tâche (voir Partie 1 ). Le paquet Zend_Http est comme le Http_Request2 paquet PEAR à la pure communication HTTP approprié.
Avec Zend_Dom peut démonter le HTML reçu.

Une manière de résoudre la tâche pourrait être:

  Une
 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 ( $ Client = new Zend_Http_Client ($ url, array (
     0 , «Maxredirects '=> 0,
     30 ) ) ; 'Timeout' => 30));

 try {
    $client -> request ( 'GET' ) ; $ Response = $ client -> demande ('GET');

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

       new Zend_Dom_Query ( $response -> getBody ( ) ) ; $ Dom = new Zend_Dom_Query ($ response -> getBody ());
       $dom -> query ( 'form' ) ; $ Les formes = $ dom -> query ('form');

       $forms -> current ( ) ; $ Formulaire = $ formes -> current ();
       $form -> getAttribute ( 'action' ) ; $ Action = $ this - getAttribute> ('action');

       new Zend_Http_Client ( $url . $action , array ( $ Client = new Zend_Http_Client ($ url. $ L'action, array (
           0 , «Maxredirects '=> 0,
           30 ) ) ; 'Timeout' => 30));
       setParameterGet ( 'q' , 'http client examples' ) ; $ Client -> setParameterGet ('q', des exemples client http ');
       $client -> request ( 'GET' ) ; $ Response = $ client -> demande ('GET');

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

       $dom -> query ( 'a.l' ) as $link ) { foreach ($ dom -> query ('a.l') as $ link) {
          $link -> hasAttribute ( 'href' ) ) { if ($ link - hasAttribute> ('href')) {
             $link -> getAttribute ( 'href' ) ; $ Href = $ link - getAttribute> ('href');
             $link -> textContent ; $ Lien = $ lien texte - le contenu du texte>;

             $href \" > $linkText </a><br />" ; echo "<a href= \" $href \"> texte du lien $ </ a> <br />";
          } 
       }

    { Else {}
         . $response -> getStatus ( ) . ' echo "inattendue d'état HTTP: '$ response -> getStatus ()' ..  '.
              responseCodeAsText ( ) ; $ Réponse -> responseCodeAsText ();
     }
 Zend_Http_Exception $e ) { Catch} (Zend_Http_Exception $ e) {
     . $e -> getMessage ( ) ; 'Erreur:' echo $ e -> getMessage ().
 }
 ?> 

Le code parle de lui-même, je ne vais pas l'expliquer à ce point autant de détails que dans la première partie.
La différence est dans l'analyse de HTML. La méthode query () (lignes 18 et 31) prévoit que n'est pas un tableau, mais plutôt un objet de classe Zend_Dom_Query_Result dos. Parce que cette classe, l'interface à deux Countable et Iterator mis en œuvre, les résultats de l'enquête avec un foreach . boucle pour parcourir les Chaque match unique est un objet de la classe DOMElement montré.

Conclusion:
Zend propose également une bonne Zend_Dom Zend_Http et le client HTTP. Si vous utilisez d'autres classes déjà dans son projet de la Zend Framework, cette approche est recommandée.

Perspectives:
Dans la partie 3 je quitte le monde PHP et imaginer avec HttpUnit un client très confortable et riche en fonctionnalités HTTP pour Java.

gklinkmann écrit par \ \ tags: , ,