30 mai

Toutes les présentations à JAX cette année, les participants cette fois sur DVD, mais uniquement via une application Adobe AIR qui est basé sur http://intellibook.de/special devez vous inscrire.

Adobe AIR n'est pas seulement comme Flash et les ressources doivent être soigneusement (tel que Flash ainsi) Une fois installé sur l'ordinateur. Une application Web aurait préféré.

Certains orateurs ont tellement agréable de ses conférences sur slideshare.net de mettre à disposition. En slideshare il ya aussi la possibilité de mettre en place des événements, mais cela n'a pas été utilisé pour l'événement de cette année, de sorte que les présentations dispersés à travers.

Une fois, j'ai fait une recherche et ont les hits de la journée 2010 jax résumée. Si j'ai oublié un, je dois m'excuser à l'avance et souhaiterait un lien dans les commentaires.

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: , ,

5 mars

Ceux qui ne peuvent pas seulement été avec des applications Web basées sur Java Grails, emploie l'attendu JSP taglib displaytag être un nom de ménage.

Il displaytag sans tables mentons grandes dans les pages serveur Java dans plusieurs pages (pagination), les trier, grouper et à l'exportation vers Excel, CSV, XML et PDF.
Grails a été pris en charge "out of the box" que la pagination et longtemps nous n'utilisons pas de libs balises JSP dans Grails, de sorte que vous pouvez mapper la fonctionnalité restante soit grâce à des plugins ou même dû donner un coup de main.

Depuis Grails 1.1, cette restriction est maintenant levée et de combiner les deux, le test a longtemps été complété avec succès. Seulement l'entrée de blog à ce sujet est, puisque même sur ma liste ToDo. Mais à quoi bon venir à ceux qui (je l'espère :-) ).

Les étapes suivantes sont nécessaires pour intégrer displaytag dans Grails:

libs

Tout d'abord, les bibliothèques devraient être displaytag à côté du chauffeur base de données copié dans le répertoire lib.

Displaytag fichier de configuration

Le fichier de configuration de displaytag displaytag.properties être sous src/java à créer. La structure de ce fichier est dans le document de décrite par displaytag. Pour ma grum projet, la configuration ressemble à ceci:

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
  csv excel xml pdf exporter. csv Excel XML types pdf =
 true l'exportation. excel = true
 true exporter. csv = true
 true l'exportation. xml = true
 true l'exportation. pdf = true
 = org. displaytag . export . excel . DefaultHssfExportView l'exportation. excel. class = org. displaytag. exportation. excel. DefaultHssfExportView
 = org. displaytag . export . DefaultPdfExportView l'exportation. pdf. class = org. displaytag. exportation. DefaultPdfExportView
 = org. displaytag . export . DefaultRtfExportView l'exportation. rtf. class = org. displaytag. exportation. DefaultRtfExportView
 div class = "exportlinks" > Export to : { 0 } </ div > bannière à l'exportation = class = <div "export-left"> Exporter vers. {0} </ div>
 list exporter. = montant liste
 = bottom pagination. bannière. placement bas =
 = No data found. de base. msg. empty_list = Pas de données trouvées.
 . empty_list_row =< tr class = "empty" >< td colspan = "0" > No data found. </ td ></ tr ></ tr > de base. msg. empty_list_row = <tr class = "empty"> <td colspan = "0"> Aucune donnée trouvée. </ td> </ tr> </ tr>
 =< span class = "pagelinks" >< a href = "{1}" >< strong >& lt ;& lt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{2}" >< strong >& lt ;</ strong ></ a >& nbsp ; { 0 } & nbsp ;< a href = "{3}" >< strong >& gt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{4}" >< strong >& gt ;& gt ;</ strong ></ a ></ span > bannière de pagination complète = <span class = "page left"> <a href = "{1}"> <strong> & lt; .. & lt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{2}"> <strong> & lt; gt <a href = "{3}"> <strong> &;; </ strong> </ a> & nbsp; {0} & nbsp < / strong> </ a> & nbsp; & nbsp; & nbsp; <a href = gt "{4}"> <strong> &; & gt; </ strong> </ a> </ span>
 =< span class = "pagelinks" > { 0 } & nbsp ;< a href = "{3}" >< strong >& gt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{4}" >< strong >& gt ;& gt ;</ strong ></ a ></ span > pagination première bannière = <span class = "page left"> {0} & nbsp; .. <a href = "{3}"> <strong> & gt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{4}"> <strong> & gt; & gt; </ strong> </ a> </ span>
 =< span class = "pagelinks" >< a href = "{1}" >< strong >& lt ;& lt ;</ strong ></ a >& nbsp ;& nbsp ;& nbsp ;< a href = "{2}" >< strong >& lt ;</ strong ></ a >& nbsp ; { 0 } </ span > bannière de pagination dernière = <span class = "page left"> <a href = "{1}"> <strong> & lt; .. & lt; </ strong> </ a> & nbsp; & nbsp; & nbsp; <a href = "{2}"> <strong> & lt; </ strong> </ a> & nbsp; {0} </ span>
 =< span class = "pagebanner" > 1 Record found. Seite : </ span > bannière de pagination one_item_found = <span class = "banner page"> page 1 enregistrement trouvé ... </ span>
 =< span class = "pagebanner" > { 0 } Records found. Seite : </ span > pagination bannière all_items_found = <span class = "banner page"> {0} enregistre Page: ... </ span>
 =< span class = "pagebanner" > { 0 } Records found, show { 2 } - { 3 } . </ span >< br />< br /> pagination bannière some_items_found = <span class = "banner page"> {0} enregistrements trouvés, spectacle {2} - ... {3} </ span> <br /> <br /> 

Displaytag wrapper

Les liens dynamiques et mise en forme pour être mis en œuvre au cours de la pattern Décorateur en displaytag. Le décorateur est mis en œuvre dans une classe wrapper qui est bien sûr écrit en Groovy Grails en. Mon application est la classe DisplaytagWrapper qui a créé le projet grum un lien vers les détails de l'utilisateur et les formats de la date de la création.

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
  de.koo.grum.groovy.util forfait

 ; importation org.displaytag.decorator.TableDecorator;

 TableDecorator { public class TableDecorator DisplaytagWrapper {
    Chaîne getLinkToUser () {
       def user = getCurrentRowObject ()
       /grum/user/show/${user.id} \" >${user.username}</a>" ; retour "<a href= \" /grum/user/show/${user.id} \"> $ {} user.username </ a>";
    }
    Chaîne getUserCreatedAt () {
       def user = getCurrentRowObject ()
       . format ( "dd.MM.yyyy HH:mm" ) ; format de retour d'utilisateur createdAt ("yyyy HH: mm") ..
    }
 } 

Filtres d'exportation

Être mis lors de l'exportation vers un format non-HTML, le type de contenu pour la réponse au navigateur. Pour éviter ce problème causant, un filtre doit être défini dans le fichier web.xml, qui contrecarre les erreurs possibles. Displaytag apporte la réponse prioritaire classe de filtre est déjà une mise en œuvre pour cela avec.

Pour Grails à des changements à la web.xml de vous faire, les modèles doivent être installés:

  Grails install-modèles 

Puis il ya le web.xml dans le répertoire src/templates/war . Pour filtrer les entrées suivantes sont nécessaires.

  Une
 2
 3
 4
 5
 6
 7
 8
  <filter>
    <filter-name> Réponse Override filtre </ filter-name>
    <filter-class> org.displaytag.filter.ResponseOverrideFilter </ filter-class>
 </ Filtre>
 <filter-mapping>
    <filter-name> Réponse Override filtre </ filter-name>
    <url-pattern> / * </ url-pattern>
 </ Filter-mapping> 

Intégration avec Server Page Groovy

Si vous avez terminé toutes ces étapes préparatoires, vous pouvez enfin descendre à l'utilisation de displaytag dans une page ASP Groovy.
Dans mon exemple, l'utilisateur / list.gsp toutes les données utilisateur seront affichés sous forme de tableau. Le tableau est par l'attribut sortable triables par nom et prénom (sans accès nouvelle base de données) et, lorsque la pagesize de l'attribut partialList répartis sur plusieurs pages.

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
  = "display" % > <% @ Taglib uri = "http://displaytag.sf.net" prefix = "display"%>  
 <html>
 ..
 defaultsort = "1" partialList = "true" <Affichage: nom de la table = "liste des utilisateurs" DefaultSort = "1" partialList = "true"
 décorateur = "de.koo.grum.groovy.util.DisplaytagWrapper"
 = "${pageSize}" requestURI = "/grum/user/list" size = "$ {size} résultat" pageSize = "$ {} pagesize" requestUri = "/ Grum / user / list"
 = "0" cellspacing = "0" sort = "list" > class = "listing" cellpadding = "0" cellspacing = "0" sort = "list">
    title = "Userame" /> <display:column property = title = "linkToUser" "Userame" />						
    title = "Firstame" sortable = "true" /> <display:column property = title = "firstname" "Firstame" triable = "true" />						
    title = "Lastname" sortable = "true" /> <display:column property = title = "lastname" "Lastname" triable = "true" />						
    title = "Created At" sortable = "true" /> <display:column property = title = "userCreatedAt" "Created At" triable = "true" />						
 </ Display: table>
 ... 

Des attributs supplémentaires ( export , group ) peut, comme dans l'exemple des données de contact ou list.gsp également exporter vers différents formats de sortie et un tableau d'entrées sont atteints.

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
  export = "true" defaultsort = "1" partialList = "true" <Affichage: nom de la table = "liste de données de contact" à l'exportation = "true" DefaultSort = "1" partialList = "true"
 décorateur = "de.koo.grum.groovy.util.DisplaytagWrapper"
 = "${pageSize}" requestURI = "/grum/contactData/list" size = "$ {size} résultat" pageSize = "$ {}" pagesize RequestUri = "/ Grum / données de contact / list"
 = "0" cellspacing = "0" sort = "list" > class = "listing" cellpadding = "0" cellspacing = "0" sort = "list">
     value = "contactData.csv" /> nom = valeur = <display:setProperty "export.csv.filename" "contactData.csv" />
     value = "contactData.xls" /> nom = valeur = <display:setProperty "export.excel.filename" "contactData.xls" />
     value = "contactData.xml" /> nom = valeur = <display:setProperty "export.xml.filename" "contactData.xml" />
     value = "contactData.pdf" /> nom = valeur = <display:setProperty "export.pdf.filename" "contactData.pdf" />
     value = "list" /> nom = valeur = <display:setProperty "export.amount" "list" />

     title = "Name" sortable = "true" group = "1" /> <display:column property = title = "linkContactDataToUser" "Name" triable = groupe = "true" "1" />						
     title = "type" sortable = "true" /> <display:column property = title = "type" "type" triable = "true" />
     sortable = "true" /> <display:column property = "data" triable = "true" />
 </ Display: table> 

Conclusion:
Une fois configuré displaytag un des plus grands des solutions pour les applications Web basées sur Java pour être énumérés dans les données tabulaires. La fonctionnalité dépasse de loin la fonctionnalité standard de Grails. La combinaison de Grails et displaytag je recommanderais à personne.

Liens:
source de Grum

gklinkmann écrit par \ \ tags: , , ,

14 janvier

En tant qu'administrateur, vous devez sélectionner lors de la création des mots de passe des utilisateurs qui ne parle pas seulement de 123 456 e Toutefois, étant donné que le fantasme d'un administrateur est limité, vous pouvez en créer un meilleur.
Un Groovy classe pour un générateur de mot de passe pourrait ressembler à ceci:

  Une
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
  public class {générateur de mot de passe
    main ( def args ) { public static void main (args def) {
       availChars def = []  
       .. 'Z' ) . each { availChars << it. toString ( ) } ('A' .. 'Z'). Chaque {availChars << il. ToString ()}  
       { ( 0 .. 9 ) . each { availChars << it. toString ( ) } } Troisième fois {(0 .. 9). Chaque {availChars << il. ToString ()}}  

       length -> def generate chaîne aléatoire = {longueur ->   
         = availChars. size def max = availChars. taille      
         new Random ( ) def rnd = new Random ()  
         new StringBuilder ( ) def sb = new StringBuilder ()  
         sb. append ( availChars [ rnd. nextInt ( max ) ] ) } longueur. fois {qn. append (availChars [rnd. nextInt (max)])}  
         sb. toString ()  
       }   

       { println generateRandomString ( 8 ) } 10e fois {println générer une chaîne aléatoire (8)}   
    }
 } 

Source: www.chrisrauber.com

C'est encore plus facile, bien sûr, si le contenu est la méthode principale dans le shell Groovy exécute.

gklinkmann écrit par \ \ tags: , ,

28 novembre
handbrake 0.9.4

Certains programmes utilisent une plutôt qu'une autre. Est-ce vous aussi? Ce genre appartient à moi la Free Video Converter HandBrake. Dans la nouvelle version 0.9.4, pour Mac, Linux et Windows pour télécharger est prêt, a beaucoup changé.

Juste par la version 64 bits, une vitesse allant jusqu'à 10 pour cent plus d'être là. En plus de l'amélioration des performances, la nouvelle version contiendra également:

  • support pour les sous-titres qui peuvent être trouvés dans le lecteur et désactiver
  • Une fonction de prévisualisation pour voir comment les paramètres affectent
  • meilleure prise en charge DVD
  • nouveaux presets
  • et beaucoup plus ...

Dans mes premiers essais, la version 64 bits fonctionne très bien sous Snow Leopard. Juste la façon dont la façon de le présenter. :-)

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