mardi 5 octobre 2010

web : faire des onglets en HTML

Pour faire des onglets, il est possible d'utiliser une solution simple (mais non recommandée car vaut mieux tout faire en CSS) à base de tableau

Voici un exemple :


<table border="0" cellpadding="0" cellspacing="0" width="100%" class="borderTableContent">
<tr>
<td align="center" class="selectedTxtIntitule" width="25%">
<a href="/monAppli/distancierDIUMRecherche.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBoutonWhite">Visualisation DIUM</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierDIUM.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Chargement DIUM</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierNationalRecherche.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Visualisation Distancier National</a>
</td>
<td>
<img src="img/gif/line_separator_bt.gif" alt="" height="25" width="1" />
</td>
<td align="center" class="txtIntitule" width="25%">
<a href="/monAppli/distancierNational.do?dispatch=onInit" onclick="showLoadingDiv();" class="lkBouton">Chargement Distancier National</a>
</td>
</tr>
</table>

vendredi 1 octobre 2010

unix / linux : commandes scp

Voici, un petit rappel de la commande scp :

scp index.jsp enwoo@cronos:/dev/bo/8

Voici un petit rappel pour ssh :

ssh enwoo@cronos

java : JVM 32 bits et 64 bits

Voici un extrait d'une conversation d'expert sur les JVMs 32 bits et 64 bits ...


L'intérêt d'une JVM 64-bits est uniquement de pouvoir manipuler plus de mémoire, donc d'avoir un paramètre -Xmx beaucoup plus gros qu'une JVM 32-bits.

La plus part des JVM 32-bits ne peuvent pas dépasser 3,5 Go de Xmx et c'est beaucoup moins pour certaines implémentations.

Aujourd'hui la plus part des applications Web tournent sur des JVM 32-bits et c'est largement suffisant : une application Web bien codé tourne très bien un JVM de 1 Go tout en traitant plusieurs sessions utilisateurs. Si vous avez plus d'utilisateurs que prévu alors vous devrez déployer d'autre JVM de 1 Go avec la même application et mettre en place un sytème de load-balancing (c'est ce qu'on appelle la "scalabilité").

Attention, il ne faut pas confondre les bits de la JVM et les bits de l'OS : plusieurs JVM 32-bits tournant sur un OS 64-bits est une architecture très répendue.



Qui dit plus de mémoire dit des garbage collector plus longs à réaliser,

Qui dit pointeur de 64-bits dit plus de mémoire à manipuler pour la même quantité d'information métier.

Donc un JVM 64-bits avec un -Xmx10g sera beaucoup plus lente "globalement" qu'une JVM 32-bits avec un -Xmx1g.

Une JVM 64-bits est bien adapté à un batch qui par conception doit manipuler un très gros volume de données en mémoire.

Une JVM 64-bits est aussi un paliatif à une application Web mal conçue (cas par exemple de caches mémoires trop gros ou non limités).

mardi 28 septembre 2010

java : eclipse choisir la JVM

Lorsque l'on a plusieurs projets java, il est fréquent que ces derniers n'utilisent pas tous la même version de java ... Mais on souhaite néanmoins disposer du dernier eclipse et outils ...

Pour cela, il est possible de préciser dans le eclipse.ini, des paramètres de démarrage:

Comme pour choisir une VM différente de celle spécifiée dans le JAVA_HOME -vm :
pour choisir un workspace -data
ou encore pour obliger eclipse a rafraichir sa configuration (après une install sale d'un plugin)-clean


-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-framework
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vm
C:\Program Files\Java\jre6\bin\javaw.exe
-vmargs D:\ArchCvs\V9
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+PrintGCDetails
-Xloggc:D:/eclipse/gc


lundi 27 septembre 2010

maven : compiler un projet Flex

Voici, un exemple de pom permettant de compiler un projet flex (swf). De plus, ce dernier ne nécessite pas d'installation du flex SDK.



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${project.parent.groupId}</groupId>
<artifactId>mon-appli-flex</artifactId>
<packaging>swf</packaging>
<version>${project.parent.version}</version>
<name>Mon Appli Flex Module</name>

<parent>
<groupId>com.enwoo</groupId>
<artifactId>boc</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<dependencies>
<dependency>
<groupId>flexlib</groupId>
<artifactId>flexlib</artifactId>
<version>2.5</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.maboite</groupId>
<artifactId>CGFlexFwk</artifactId>
<version>1.0.71</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>flexlib</groupId>
<artifactId>flexlib</artifactId>
<version>2.5</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>flex-framework</artifactId>
<version>3.5.0.12683</version>
<type>pom</type>
</dependency>
</dependencies>

<build>
<sourceDirectory>src/main/flex</sourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.3.0</version>
<extensions>true</extensions>
<configuration>
<sourceFile>mon-appliFlex.mxml</sourceFile>
<output>${basedir}/../mon-appli/appli-web/src/main/webapp/mon-appliFlex.swf</output>
<services>${basedir}/../mon-appli/appli-web/src/main/webapp/WEB-INF/flex/services-config.xml</services>
<contextRoot>/mon-appli</contextRoot>
<compiledLocales>
<locale>fr_FR</locale>
<locale>en_US</locale>
</compiledLocales>
<debug>${flex.debug}</debug>
<warnings>
<noConstructor>false</noConstructor>
</warnings>
</configuration>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>3.5.0.12683</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.compiler</groupId>
<artifactId>asdoc</artifactId>
<version>3.5.0.12683</version>
<type>zip</type>
<classifier>template</classifier>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>

mercredi 22 septembre 2010

oracle : identification externe par le user Unix

Voici, un moyen simple de lancer des scripts SQL via des ksh sans avoir les mots de passe Oracle.

En fait, lors de la création de l'utilisateur, il est possible que le SGBD, en l’occurrence Oracle, délègue l'authentification au système d'exploitation.

Pour cela, il suffit de créer un user avec "identified externally". L'exemple suivant montre la création de l'utilisateur ENWOO.

Ce dernier pourra se logger sur Unix/Linux, et n'aura qu'a taper sous sqlplus (en mode silencieux) la commande "connect /"

$sqlplus /NOLOG
SQL>connect /


Voici un petit exemple de script:


#!/bin/ksh
ORACLE_SID=maBddOracle
# connection a oracle en mode silencieux
sqlplus -s /nolog 1>/dev/null << FIN
WHENEVER SQLERROR EXIT FAILURE;
# connection en deleguant l'authentification a l'OS
connect /
FIN
if [ $? != 0 ]
then
echo "Connexion impossible (${ORACLE})"
exit 1
fi



-- Create the user
create user ENWOO
identified externally
default tablespace TBSBOUSER
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant tablespacedev to ENWOO;
grant tablespacesysconnect to ENWOO;
-- Grant/Revoke system privileges
grant unlimited tablespace to ENWOO;

unix / linux : trouver les process et sockets ouverts

Voici, une commande permettant de trouver les sockets et fichiers ouverts

Attention il est nécessaire de préciser le protocole ... il y a une différence d'affichage entre lsof -i et lsof -i tcp:7666 ... Dans le cas lsof -i, je ne voyais pas mon processus qui utilisait le port 7666 en tcp !!!

lsof -i tcp:7666

Voici plusieurs exemples :


lsof -i (tous services internet TCP/UDP)
lsof -i tcp (tous services TCP)
lsof -i udp (tous services UDP)
lsof -i tcp:80 (services TCP sur port 80)
lsof -i @56.85.68.98 (liaison internet de mon poste avec 56.85.68.98)



Permet de trouver tous les fichiers ouverts par l'utilisateur "toto" ou "500" et par le process 1234 ou 12345:

lsof -p 1234,12345 -u 500,toto

Voici une très bonne page