3 février

Je préfère cette Grails framework web, le major a atteint la version 2. Compte tenu de la richesse des nouvelles fonctionnalités, le 2 est plus que justifiée avant le point. Un bon aperçu de ce qui a changé, propose l'article « Quoi de neuf dans Grails 2.0 "par Dierk König.

Pour moi, ça valait le coup de la console de Grails nouvelle interactif avec TAB-complétion, de couleur, une ligne de sortie et la sortie d'erreur formaté la mise à niveau. C'est principalement pour l'exécution de l'instruction est beaucoup plus rapide car elle ne possède pas la JVM doit être démarré.
En tant que candidat d'essai avait mon exemple d'application Grails Grum (code source sur Google Code ) servir. Mais aussi simple qu'une mise à jour mineure d'une version à l'autre l'était pas.

La première chose que vous devriez mettre à jour les instructions internaliser, en raison d'une simple grails upgrade entraîné en moi devenir l'un des projets incompatibles dans mon environnement de développement ( SpringSource Tool Suite ).

Il est la plupart du temps à se blâmer, mais où sont maintenant les pièges à éviter?

La gestion des dépendances

Un sujet que j'avais ignoré jusqu'à maintenant terminée, a été la gestion de la dépendance. Dans les versions précédentes étaient Grails toutes les bibliothèques nécessaires (tels que les pilotes JDBC) dans la lib répertoire. Propre, il est naturel de déclarer les dépendances. En Grails rend ce dans la classe buildconfig.

conf / BuildConfig.groovy

  {dépendances
    / / Spécifier les dépendances ci-dessous soit
    / / «Build», «compilation», «exécution», «test» ou «fourni» portées par exemple.

    runtime 'mysql: mysql-connector-java: 05.01.16'
    construire "displaytag: displaytag: 1.2"
    runtime "displaytag: displaytag-export-poi: 1.2"
    runtime "displaytag: itext: 1.3"
    runtime "displaytag: poi: 3.2"
 } 

Après que vous devriez dans l'IDE via les outils dépendances Grails -> Actualiser Actualiser dépendances. Si ce n'est pas (comme moi), il contribue à stopper la gestion des dépendances et le lancer.

  • Grails Outils -> Désactiver la gestion des dépendances
  • Grails Outils -> Gestion des dépendances Activer

Alternativement, vous pouvez régler dans la console Grails les commandes suivantes:

  Grails> propre
 Grails> était 

Plugins

Il est venu avec moi à des problèmes de compilation avec les plugins jQuery installés automatiquement et les ressources, je ne pouvais résoudre le problème en réinstallant les plug-ins

  plugin-name > Grails> désinstallation-plugin <plugin-name>
 plugin-name > Grails> install-plugin plugin-name> 

Taglibs

Et où vous avez été le nettoyage est. La journée est createLinkTo depracted ressources et devrait être remplacé par le jour. À ce stade, il faut aussi faire attention à mettre à jour l'avis suivant:

Si vous installez des ressources (ou il est installé automatiquement), le jour ne vais pas écrire quelque chose comme <g:javascript> à la page jusqu'à ce que vous ajoutez les balises <r:layoutResources/> à votre disposition.

Négociation de contenu

Un point c'est pourquoi j'aime Grails Sun, de sorte que puisse être mis en œuvre très facilement REST API. Cela aussi a changé quelque chose dans la version 2.0. La négociation de contenu ne dépend plus sur le format accepté des réponses, mais par le type de contenu de la demande.
Pour cela, nous devons remplacer le code avec le format par request.withFormat. Vous pouvez tester ce changement avec curl . Par exemple, avec:

  xml http: // localhost: 8080 / grum / contactData / list curl - tête Content-Type: text / xml http:// localhost: 8080 / Grum / contact / liste 

Conclusion:
La mise à jour est utile, même si elle est connectée avec le travail un peu plus que d'habitude

Liens:
Grum - l'application Grails 2.0 Exemple

gklinkmann écrit par \ \ tags: ,

25 mai

Jax cette année (Conférence pour Java) a été un bon 2 dernières semaines. Une partie des conférences a été filmée et est maintenant peu à peu avec JAX TV canal disponible sur Vimeo.

Comme toujours, étaient exposés très intéressants de tous les domaines thématiques ci-après. Pour chaque saveur Java donc il devrait être quelque chose.

gklinkmann écrit par \ \ tags: , , ,

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 ,

14 mars

J'ai négligé ces derniers temps les Grails sujet dans ce blog un peu. Donc, il est maintenant, après cette période de sécheresse à l'époque, encore une fois d'écrire une entrée de blog sur ce sujet (peut entraîner plus).
Un de mes premier article sur Grails a montré comment faire Grails et Eclipse ensemble. Cette entrée a été un tel succès que je l'ai fait comme un site permanent a été construit dans le cadre d'un petit tutoriel sur le blog.

Il s'agit d'un il ya quelques mois et de soutenir la création d'applications Grails avec Eclipse est devenu progressivement mieux.
Était-ce le début de telle sorte que, de loin, le meilleur IDE pour Grails a eu l'idée, l'Eclipse libre devient de plus en plus. Pas plus tard que le changement de développeurs Grails à SpringSource et de l'intégration associée à l'Eclipse SpringSource Tool Suite (STS) , a beaucoup évolué.

Mis à part la mémoire principale - la faim de la mission STS, je me sens utilisateurs d'Eclipse en tant que vieux en de bonnes mains. Avec NetBeans et IDEA je ne pourrais jamais vraiment s'habituer.

Pour activer Grails pour soutenir le Grails et Groovy sur les Extensions onglet des tableaux de bord de STS sont installés (voir capture d'écran). Ensuite, il ya pour Grails projette son propre point de vue, avec coloration syntaxique, complétion de code et une navigation claire dans l'explorateur de projet.
Dans la barre d'outils il ya un bouton dans la perspective Grails Grails commandes à exécuter (comme run-app ).

Lors de l'installation des extensions Grails est le répertoire d'installation de la mission STS actuelles Grails version enregistrée.

  springsource / ~> Ls printemps / source
    Grails-1.3.5
    Grails-1.3.6				
    grails-1.3.7
    maven-2.2.1.RELEASE				
    roo-1.1.0.RELEASE			
    tc-serveur-devel-2.0.4.RELEASE
    m-2.5.0.RELEASE 

Y at-il des mises à jour (Aide -> Check for Updates), une nouvelle version de Grails, il ya cette ajouté. Dans les Préférences (Groovy -> Grails) vous devez prendre la nouvelle version de l'espace de travail. Le projet Grails est toujours la upgrade de commande est nécessaire.

Conclusion:
L'intégration dans Eclipse Grails a pris un grand pas en avant. De la fonctionnalité IDEA devrait encore conduire. Projets de Grails là sont pris en charge uniquement dans la version payante ULTIMATE.
Le libre environnement de développement NetBeans et Eclipse à base de STS ne diffèrent guère dans le soutien Grails. Ici, la préférence personnelle va se prononcer sur l'IDE.

Liens:
Discuter sur ce sujet sur ​​stackoverflow.com

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

1 janvier


Un article similaire il ya quelque temps et je dois pour mon ex - gestionnaire de signets del.icio.us écrite.

Mon nouveau service est zootool . A propos des raisons pour le changement que j'ai récemment écrit .
Si l'on se rend au une nouvelle dépendance, tout doit rester bonne. Zootool ainsi fournit une API pour accéder au signet.

Contrairement aux résultats d'une enquête del.icio.us toutefois, sont fournis au format JSON, rendant le HTTP Builder module de Groovy, mais a également aucun problème, comme l'exemple est de vous montrer. Un mot de passe crypté et d'une clé API d'assurer plus de sécurité.

Eh bien, assez longtemps pour parler. Voici le code pour un seul client signet zootool:

  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
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
  de.koo.groovy.rest forfait

 'org.codehaus.groovy.modules.http-builder' , module = 'http-builder' , version = '0.5.1' ) @ Grave (groupe = 'org.codehaus.groovy.modules.http-constructeur, module = "http-constructeur, version = '0 .5.1')

 importer groovyx.net.http. * 
 groovy.util.slurpersupport.GPathResult importation 
 java.security.MessageDigest importation
 importer sun.misc. *

 public class {ZootoolBookmarkClient
   def nom d'utilisateur
   def mot de passe
   def apikey

   ZootoolBookmarkClient publique () {
     username = "<username>"
     mot de passe = "<password>"
     apikey = "<apikey>"
   }

   main ( args ) { public static void main (args) {
     new ZootoolBookmarkClient ( ) def dc = new ZootoolBookmarkClient ()
     courant continu. demande ()
   }

   / ** 
     * Mettre en signet et le traitement des requêtes des résultats  
     * En format HTML comme une liste de définitions 
     * /
   demande du public () {
     def resp

     try {
       / / Authentification
       "http://zootool.com/api/users/items/?username=$username&apikey=$apikey" url = def "http://zootool.com/api/users/items/?username = $ username = $ & apikey apikey"

       RESTClient ( url ) RESTClient rc = new RESTClient (url)
       ( username. toLowerCase ( ) , getEncodedPassword ( ) ) rc. auth. de base (username. toLowerCase (), getEncodedPassword ())

       Demande / / et cocher la réponse
       : ] params def = [:]   
       ( params ) resp = rc. get (params)

       == 200 affirmer, respectivement. état ​​== 200

       println "<dl>"
       { item -> respectivement chaque élément de données {- ..>
         ${item?.url} \" >${item?.title}</a></dt>" println "<dt> <a href= \" ${item?.url} \"> $ {article?. title} </ a> </ dt>"
         "{<dd> article?. title} $ </ dd>" println
       }
       println "</ dl>"
     ( e ) { } Catch (e) {
       printStackTrace e ()
     }
   }

   / ** 
     * Mot de passe de cryptage avec algorithme SHA-1 
     * /
   publique getEncodedPassword () {
     MessageDigest . getInstance ( 'SHA-1' ) MessageDigest md = message digest. GetInstance («SHA-1 ')
     password. getBytes ( 'UTF-8' ) ) md. mise à jour (getBytes password. ("UTF-8 '))

     new BASE64Encoder ( ) ) . encode ( md. digest ( ) ) retour (nouveau Base64Encoder ()). encode (Maryland digest ())
   }
 } 

Je vous souhaite à tous (avec et sans un chat bien entretenu) un 2011 heureux et en santé.

Enfin, quelques liens utiles:

zootool clé API génération
zootool documentation de l'API
Exemple de code pour PHP, Python et Objective-C

gklinkmann écrit par \ \ tags: , ,