lower_case_table_names=1
jeudi 7 janvier 2010
Mysql en case insensitive sur linux Red hat
Dans le fichier my.ini, sous la section mysqld, ajouter la ligne suivante :
mercredi 2 décembre 2009
Install Mysql from the zipped installation
Customize a MySQL installation from a zip file is easy :
Look in the configuration file and set the path in it correctly.
Once done, you can set it up as a windows service using the simple command line
Change the root password
Look in the configuration file and set the path in it correctly.
"D:\myproject\MySQL\MySQL Server 5.1\my.ini
Once done, you can set it up as a windows service using the simple command line
"D:\myproject\MySQL\MySQL Server 5.1\bin\mysqld.exe" --install
"D:\myproject\MySQL\MySQL Server 5.1\bin\mysqld.exe" --remove
Change the root password
mysqladmin -u root password NEWPASSWORD
lundi 30 novembre 2009
Configuring JNDI Javamail resource over SSL for SMTP
You declare your JAVAMAIL resource into the server.xml (or in the appropriate context file in your configuration directory) file of your tomcat :
Then your resource is accessible via this URI in your webapp :
Also, you must copy the two files
activation.jar and mail.jar in your tomcat common/lib server.
You may refer to the JIRA documentation where I had this hint
http://www.atlassian.com/software/jira/docs/v3.13/smtpconfig.html
<Resource name="mail/MailServer" auth="Container"
type="javax.mail.Session"
mail.smtp.host="smtp.mailserver"
mail.smtp.port="465"
mail.smtp.auth="true"
mail.smtp.user="myuser"
password="mypassword"
mail.smtp.starttls.enable="true"
mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
/>
Then your resource is accessible via this URI in your webapp :
java:comp/env/mail/MailServer
Also, you must copy the two files
activation.jar and mail.jar in your tomcat common/lib server.
You may refer to the JIRA documentation where I had this hint
http://www.atlassian.com/software/jira/docs/v3.13/smtpconfig.html
mercredi 30 septembre 2009
Définition ORACLE
Définitions :
Instance :
Une instance oracle est un processus destinée à servir les données.
Listener :
Un listener est un processus gérant les connexions lourdes de sql net. Le listener n'est pas indispensable pour faire fonctionner le JDBC
Tablespace :
Un Tablespace est la définition d'un espace sur le système de fichier contenant les données. Dans les bases de données modernes, la notion de Tablespace est plus discrète, car elle ne fait pas référence au données mais au système.
User :
Un user est un espace de table. La notion de schema qui est beaucoup parlante est identique à celle du user.
Database :
Est un ensemble de schémas.
Instance :
Une instance oracle est un processus destinée à servir les données.
Listener :
Un listener est un processus gérant les connexions lourdes de sql net. Le listener n'est pas indispensable pour faire fonctionner le JDBC
Tablespace :
Un Tablespace est la définition d'un espace sur le système de fichier contenant les données. Dans les bases de données modernes, la notion de Tablespace est plus discrète, car elle ne fait pas référence au données mais au système.
User :
Un user est un espace de table. La notion de schema qui est beaucoup parlante est identique à celle du user.
Database :
Est un ensemble de schémas.
mercredi 16 septembre 2009
Débuter en JSF
Faire un tag combobox :
myCommandBean est le nom du bean mise en correspondance la combobox. #{myCommandBean.myfield} est le nom du champ qui stocke l'information.
Le fichier face-config.xml contient la configuration de Jface :
Ces lignes permettent de déclarer le bean de stockage des informations de la combo box dans la session. Les valeurs affectée à ce bean pourront être exploitée durant toute la session. C'est une bonne idée que d'utiliser ce scope par défaut.
Le getter dans le bean com.mybusiness.MyCommandBean utilise une propriété HtmlSelectOneListbox
myCommandBean est le nom du bean mise en correspondance la combobox. #{myCommandBean.myfield} est le nom du champ qui stocke l'information.
<h:selectOneListbox id="myCommandBean" binding="#{myCommandBean.myfield}" size="1" >
<f:selectItems
value="#{myCommandBean.myfieldList}" />
</h:selectOneListbox>
Le fichier face-config.xml contient la configuration de Jface :
<managed-bean>
<managed-bean-name>myCommandBean</managed-bean-name>
<managed-bean-class>com.mybusiness.MyCommandBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Ces lignes permettent de déclarer le bean de stockage des informations de la combo box dans la session. Les valeurs affectée à ce bean pourront être exploitée durant toute la session. C'est une bonne idée que d'utiliser ce scope par défaut.
public List getMyfieldList() {
List list = new ArrayList();
list.add(new SelectItem("01", "moncul"));
list.add(new SelectItem("02", "machemise"));
return list;
}
Le getter dans le bean com.mybusiness.MyCommandBean utilise une propriété HtmlSelectOneListbox
public HtmlSelectOneListbox getMyfield() {
return myfield;
}
public void setMyfield(HtmlSelectOneListbox myfield) {
this.myfield = myfield;
}
vendredi 24 juillet 2009
Générer des document openXML Word 2003/2007
Les récents standards OpenXML et Open document permettent de générer des documents sans passer par des APIs propriétaires.
Pour comprendre les formats docx de word, rien de tel que l'exemple. Le contenu en clair du fichier s'observe en dézippant le fichier word (renommert son extension .docx en .zip). Ainsi il est possible d'étudier le contenu. Ce zip comporte plusieurs fichiers :
- word/document.xml : Comporte le contenu
- word/header1.xml, word/headerx.xml: Décrit les entêtes (par section)
- word/footer1.xml : Décrit les pieds de page
- word/styles.xml : Décrit les mises en forme
Les fichiers contenus dans le zip sont nombreux. Le fichier principal est le fichier document.xml.
A priori, l'édition de son contenu ne contient rien qui soit 'user friendly', par exemple :
Le principe de génération naturel est d'utiliser XSLT (XML Stylesheet Language Transformation) pour effectuer la transformation des données métiers brutes en un fichier document.xml.
(Toutefois, n'oubliez pas que les outils de transformation plus simple tel que Velocity peuvent être approprié dans le cas de traitement élémentaire (http://velocity.apache.org/))
Pour ne pas composer manuellement, le document.xml, mieux vaut l'extraire de votre document modèle et le copier/coller dans un fichier XSL reprenant la structure du document. Puis, en localisant endroits où ajouter les informations dans le fichier, on ajoute les valeurs de notre document XML.
Les balise XSL suivantes sont très utiles
Cette pratique présente un inconvénient, du fait de la création de ce fichier par un programme, le contenu est souvent excessivement verbeux et dénué de toute forme d'intelligence. Pour générer un fichier Word à partir d'une transformation XSL, il vaut mieux comprendre un minimum la logique de ce fichier. Comprendre les balise principales est utile
Une fois que le document est constitué, il suffit de refaire un zip et de renommer l'extension .zip en .docx. Si vous compressez l'OpenXML à l'aide de java, il faut faire attention à ce que les entries utilise le caractère '/' et non pas '\', autrement le fichier ne pourra être ouvert par la suite OpenOffice.
Pour comprendre les formats docx de word, rien de tel que l'exemple. Le contenu en clair du fichier s'observe en dézippant le fichier word (renommert son extension .docx en .zip). Ainsi il est possible d'étudier le contenu. Ce zip comporte plusieurs fichiers :
- word/document.xml : Comporte le contenu
- word/header1.xml, word/headerx.xml: Décrit les entêtes (par section)
- word/footer1.xml : Décrit les pieds de page
- word/styles.xml : Décrit les mises en forme
Les fichiers contenus dans le zip sont nombreux. Le fichier principal est le fichier document.xml.
A priori, l'édition de son contenu ne contient rien qui soit 'user friendly', par exemple :
<w:document>
<w:body>
<w:p w:rsidR="00047630" w:rsidRDefault="00047630">
<w:pPr>
<w:tabs>
<w:tab w:val="center" w:pos="7655"/>
<w:tab w:val="right" w:pos="15451"/>
</w:tabs>
<w:ind w:right="-29"/>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
<w:b/>
<w:bCs/>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
<w:b/>
<w:bCs/>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
<w:t>REGULATION :</w:t>
</w:r>
</w:p>
<w:tbl>
<w:tblPr>
<w:tblW w:w="0" w:type="auto"/>
<w:tblInd w:w="-68" w:type="dxa"/>
<w:tblLayout w:type="fixed"/>
...
Le principe de génération naturel est d'utiliser XSLT (XML Stylesheet Language Transformation) pour effectuer la transformation des données métiers brutes en un fichier document.xml.
(Toutefois, n'oubliez pas que les outils de transformation plus simple tel que Velocity peuvent être approprié dans le cas de traitement élémentaire (http://velocity.apache.org/))
Pour ne pas composer manuellement, le document.xml, mieux vaut l'extraire de votre document modèle et le copier/coller dans un fichier XSL reprenant la structure du document. Puis, en localisant endroits où ajouter les informations dans le fichier, on ajoute les valeurs de notre document XML.
Les balise XSL suivantes sont très utiles
<xsl:value-of select="/MyDoc/MyObject1/title"/> // Pour récupérer des valeurs simples
<xsl:for-each select="/MyDoc/MyObject2"> // Pour le parcours de collection
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:n2="urn:hl7-org:v3"
exclude-result-prefixes="n2 xs xsi xsl">
<xsl:output method="xml" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<w:document
xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
<w:body>
...
...
...
</w:body>
</w:document>
</xsl:template>
</xsl:stylesheet>
Cette pratique présente un inconvénient, du fait de la création de ce fichier par un programme, le contenu est souvent excessivement verbeux et dénué de toute forme d'intelligence. Pour générer un fichier Word à partir d'une transformation XSL, il vaut mieux comprendre un minimum la logique de ce fichier. Comprendre les balise principales est utile
- <w:p> : Sert à commencer un paragraphe
- <w:pPr> : Définit les paramètres du paragraphe
- <w:rPr> : Définit les paramètres applicables au mot. Un rPr peut-être définit au niveau du wPr Lorsqu'il concerne tous les mots du paragraphe ou dans w:r lorsqu'il concerne un mot seulement
- <w:tabs> : Permet de définir les différentes tabulations dans une paragraphe
- <w:r> : Définit un groupe de mots
- <w:t> : Définit un mot
- <w:tab> : Insère une tabulation
- <w:tbl> : Une table
- <w:tr> : Une ligne (table row)
- <w:tc> : Une colonne (table column)
- <w:b> : Met le texte en gras
- <w:u> : Souligne le texte (Attention il faut préciser le type de soulignement)
- <w:customXml element='??'> : Est une balise qui permet de définir des structures de XML comme des information cachées, c'est utile pour structurer le document de manière invisible.
Une fois que le document est constitué, il suffit de refaire un zip et de renommer l'extension .zip en .docx. Si vous compressez l'OpenXML à l'aide de java, il faut faire attention à ce que les entries utilise le caractère '/' et non pas '\', autrement le fichier ne pourra être ouvert par la suite OpenOffice.
lundi 20 juillet 2009
JDOM vs DOM et SAX
La librairie JDOM a l'inconvénient majeur de ne pas être présente dans les APIs JAVA et de ne pas être une norme W3C. Pourtant, même si elle ne propose aucune révolution théorique, cette librairie est plus pratique à utiliser que ses consors SAX et DOM. En faits, SAX et DOM ont été développés pour couvrir être implémenté en C et C++ notamment, JDOM n'ayant pas ses limitations peut se permettre d'être plus intelligente.
Cette API est très sympathique car elle se sert des fonctionnalités de JAVA pour ne plus avoir en tête les considération de consommation de mémoire qui sont souvent problématique dans le cas des fichiers XML. Les performances s'apparentent à celle du SAX et la souplesse est proche du DOM.
Elle possède des fonctionnalités qui s'apparente à XPath (mais en plus simple). JDOM peut-être utilisé pour des transformations de noeuds non prises en compte trivialement par XSL (Déplacements de noeuds, clonages, modification de structure hiérarchiques)
Et pour ceux qui doutent encore, il a été décidé que JDOM sera intégré au futures JDK.
Alors lancez vous !
Exemple de parsing :
Exemple de sérialisation :
Exemple de sérialisation :
Exemple de copie de noeud :
C'est souvent beaucoup plus simple que XSL dans le cas de transformations complexes !
Cette API est très sympathique car elle se sert des fonctionnalités de JAVA pour ne plus avoir en tête les considération de consommation de mémoire qui sont souvent problématique dans le cas des fichiers XML. Les performances s'apparentent à celle du SAX et la souplesse est proche du DOM.
Elle possède des fonctionnalités qui s'apparente à XPath (mais en plus simple). JDOM peut-être utilisé pour des transformations de noeuds non prises en compte trivialement par XSL (Déplacements de noeuds, clonages, modification de structure hiérarchiques)
Et pour ceux qui doutent encore, il a été décidé que JDOM sera intégré au futures JDK.
Alors lancez vous !
Exemple de parsing :
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(xslIs);
Exemple de sérialisation :
XMLOutputter xmlOutputter = new XMLOutputter();
xmlOutputter.output(doc, fos);
Exemple de sérialisation :
XMLOutputter xmlOutputter = new XMLOutputter();
xmlOutputter.output(doc, fos);
Exemple de copie de noeud :
Element cloneElement = (Element) originalElement.clone();
parentElement.addContent(cloneElement);
C'est souvent beaucoup plus simple que XSL dans le cas de transformations complexes !
Inscription à :
Articles (Atom)