<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Artiflo Inside &#187; Dev</title>
	<atom:link href="http://www.artiflo.net/category/dev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.artiflo.net</link>
	<description>A draft for /b/tard guys.</description>
	<lastBuildDate>Wed, 18 Jan 2012 18:03:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>CUDA</title>
		<link>http://www.artiflo.net/2009/10/cuda/</link>
		<comments>http://www.artiflo.net/2009/10/cuda/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 22:39:16 +0000</pubDate>
		<dc:creator>Bertrand DANOS</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[bloc]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cuda]]></category>
		<category><![CDATA[GeForce]]></category>
		<category><![CDATA[grille]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[mémoire]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[thread]]></category>
		<category><![CDATA[warp]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1786</guid>
		<description><![CDATA[<p>Voici la seconde partie de mon article sur les GPU. Celui-ci vous permettra de découvrir CUDA de NVIDIA</p> 1      Présentation <p>CUDA ou Computer Unified Device Architecture est une librairie de développement créée par NVIDIA en 2007. Celle-ci associée à une carte graphique compatible, permet d’utiliser la puissance de calculs des GPU d’architectureG80 et plus de [...]]]></description>
			<content:encoded><![CDATA[<p>Voici la seconde partie de mon article sur les <a href="http://www.artiflo.net/2009/10/presentation-d’un-gpu/">GPU</a>.<br />
Celui-ci vous permettra de découvrir CUDA de NVIDIA</p>
<h2>1      Présentation</h2>
<p>CUDA ou <em>Computer Unified Device Architecture</em> est une librairie de développement créée par NVIDIA en 2007. Celle-ci associée à une carte graphique compatible, permet d’utiliser la puissance de calculs des GPU d’architectureG80 et plus de NVidia (à partir des GeForce 8800 et déclinaisons).<br />
Par abus de langage nous parlerons aussi de langage CUDA.<br />
CUDA est aussi le premier langage à exploiter l’unification des shaders : les processeurs de la carte ne sont pas différentiés en unités pour le traitement des vertex ou des fragments, chacun de ceux-ci peut être assigné à n’importe quelle tâche.</p>
<p>L’API CUDA supporte plusieurs langages tels que le C, le C++ et le Fortran.<br />
Ces trois langages peuvent être utilisés simultanément pour écrire diverses fonctions exécutées par le GPU.</p>
<p>Il existe cependant des &laquo;&nbsp;wrapper&nbsp;&raquo;, des passerelles, servant de liaison entre ces langages bas-niveau et des langages de plus haut niveaux tels que Python, Java et .Net.</p>
<p>CUDA est constitué d’un pilote (driver), déjà intégré aux drivers les plus récents, d’un runtime, et de quelques librairies.</p>
<div id="attachment_1785" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-1785" title="Les différents composants de CUDA" src="http://www.artiflo.net/wp-content/uploads/2009/10/composants-300x200.png" alt="Les différents composants de CUDA" width="300" height="200" /><p class="wp-caption-text">Les différents composants de CUDA</p></div>
<p>Il existe 3 niveaux de programmation pour CUDA, chacune disposant de sa propre API :</p>
<p>-       Utilisation d’une librairie externe.<br />
Celle-ci, possède le code de toute les fonctions à exécuter par le GPU, et sert de liaison entre le programme et le GPU.<br />
Le développeur ne peut utiliser que certaines fonctions prédéfinies, et ne peut contrôler directement le GPU.<br />
Les deux librairies les plus connues sont CUBLAS qui offre un ensemble d’éléments pour réaliser des calculs d’algèbre linéaires sur le GPU, ainsi que CUFFT qui permet le calcul de transformée de Fourrier.</p>
<p>-       l’API de haut niveau : l’API CUDA Runtime ou appelée plus communément C for CUDA.<br />
Cette API est implémentée &laquo;&nbsp;au dessus&nbsp;&raquo; de l’API bas niveau. Chaque appel à une fonction du runtime est décomposé en instructions plus basiques gérées par l’API driver.<br />
Ces 2 API sont exclusives : le programmeur doit utiliser soit l’une soit l’autre. Il est impossible de mélanger des appels de fonctions de l’une et de l’autre.<br />
Lorsque l’on parle d’API de haut niveau, il convient de relativiser : l’API runtime reste ce que beaucoup considèreraient comme déjà de très bas niveau. Cependant elle offre des fonctions bien pratiques pour l’initialisation ou la gestion des contextes.<br />
Cette API sera la plus couramment utilisée.</p>
<p>-       l’API de bas niveau : l’API CUDA Driver.<br />
Cette API est plus complexe à gérer, elle demande plus de travail pour lancer un traitement sur le GPU, mais en contrepartie elle est plus flexible, offrant un contrôle supplémentaire au programmeur qui le désire.<br />
Cette API a l’avantage de pouvoir charger des portions de code en tant que module à partir de code binaires CUDA ou de code assembleur, et permet aussi d’inspecter les paramètres, …<br />
Cette API est beaucoup plus difficile à écrire, à débugger et nécessite beaucoup plus de lignes de code à écrire, mais elle offre de meilleure performances.</p>
<p>Les API Runtime et Driver sont capables toutes les deux de communiquer avec des ressources OpenGL ou Direct3D. L’utilité est évidente : CUDA pourrait être utilisé pour générer des ressources (géométrie, textures procédurales, etc.) qui seraient ensuite passées à l’API graphique ou à l’inverse on pourrait imaginer que l’API 3D pourrait envoyer le résultat du rendu à CUDA qui serait dans ce cas utilisé pour effectuer un post traitement. Les exemples d’interactions sont nombreux et l’avantage est que les ressources restent stockées dans la mémoire RAM du GPU sans avoir à passer par le goulot d’étranglement du bus PCI-Express.</p>
<p>CUDA est fourni avec un &laquo;&nbsp;émulateur&nbsp;&raquo; : le code devant s’exécuter sur le GPU est en fait exécuté sur le GPU. Les performances sont alors bien moindres, mais permettent de débugger l’application et de tester celle-ci lorsqu’on ne dispose pas de GPU compatible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/10/cuda/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Authentification Kerberos en JNDI</title>
		<link>http://www.artiflo.net/2009/08/authentification-kerberos-en-jndi/</link>
		<comments>http://www.artiflo.net/2009/08/authentification-kerberos-en-jndi/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 20:39:20 +0000</pubDate>
		<dc:creator>Florian Cristina</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Active directory]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[GSS-API]]></category>
		<category><![CDATA[GSSAPI]]></category>
		<category><![CDATA[JNDI]]></category>
		<category><![CDATA[kerberos JNDI]]></category>
		<category><![CDATA[SASL]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1476</guid>
		<description><![CDATA[<p>La documentation officiel java au sujet de l&#8217;authentification kerberos en JNDI est très bien faite. Mais je vais quand même me faire un petit mémo à ce sujet.</p> <p>Le but du jeu est de mettre en place un processus d&#8217;authentification sécurisé entre une application java sur un poste en Windows XP et un controleur de [...]]]></description>
			<content:encoded><![CDATA[<p><!--:fr-->La documentation officiel java au sujet de l&#8217;<a href="http://java.sun.com/products/jndi/tutorial/ldap/security/gssapi.html">authentification kerberos en JNDI </a>est très bien faite. Mais je vais quand même me faire un petit mémo à ce sujet.</p>
<p>Le but du jeu est de mettre en place un processus d&#8217;authentification sécurisé entre une application java sur un poste en Windows XP et un controleur de domaine active directory sur Windows 2003. Le login et mot de passe utilisé sont ceux de l&#8217;utilisateur définis dans l&#8217;AD. Tout ceci en utilisant JNDI pour les requêtes LDAP.</p>
<p>Il existe plusieurs méthode d&#8217;authentification sécurisé <a href="http://java.sun.com/products/jndi/tutorial/ldap/security/sasl.html">SASL pour JNDI</a>. Je vais ici parler uniquement de l&#8217;authentification en Kerberos v5 à travers la GSSAPI.</p>
<p><!--:--><span id="more-1476"></span><!--:fr--></p>
<h4>1 / Connaitre les protocoles accepter par le serveur.</h4>
<p>Dans un premier temps, il faut être sur que le serveur accepte le GSSAPI.</p>
<p>Une <a href="http://java.sun.com/products/jndi/tutorial/ldap/security/src/ServerSasl.java">requete LDAP</a> permet d&#8217;apporter la réponse (remplacer localhost par l&#8217;ip ou le nom de domaine de votre serveur) :</p>
<pre lang="java">import javax.naming.*;
import javax.naming.directory.*;

import java.util.Hashtable;

/**
 * Demonstrates how to discover a server's supported SASL mechanisms.
 *
 * usage: java ServerSasl
 */
class ServerSasl {
    public static void main(String[] args) {

	try {
	    // Create initial context
	    DirContext ctx = new InitialDirContext();

	    // Read supportedSASLMechanisms from root DSE
	    Attributes attrs = ctx.getAttributes(
		"ldap://localhost:389", new String[]{"supportedSASLMechanisms"});

	    System.out.println(attrs);

	    // Close the context when we're done
	    ctx.close();
	} catch (NamingException e) {
	    e.printStackTrace();
	}
    }
}</pre>
<p>Le serveur devrait répondre quelque chose dans ce gout la :</p>
<pre lang="java">{supportedsaslmechanisms=supportedSASLMechanisms: GSSAPI, GSS-SPNEGO, EXTERNAL, DIGEST-MD5}</pre>
<p>Le support du Kerberos (GSSAPI) est donc confirmé.</p>
<h4>2 / Configuration client kerberos</h4>
<p>A présent, il faut configurer le poste client pour discuter avec le serveur Kerberos. Pour cela il faut créer le fichier de configuration de kerberos : krb5.ini. Sans ce fichier aucune transaction kerberos en LDAP ne peut être faite.</p>
<p>Créer le fichier dans la racine de Windows.</p>
<blockquote><p>Exemple c:\WINNT\kerb5.ini</p></blockquote>
<p>Il doit contenir au minimum ces informations : (remplacer &laquo;&nbsp;exemple&nbsp;&raquo; par vos informations)</p>
<blockquote><p>[libdefaults]<br />
default_realm = EXEMPLE.LAN<br />
default_checksum = rsa-md5</p>
<p>[realms]<br />
EXEMPLE.LAN = {<br />
kdc = SRV01.EXEMPLE.LAN<br />
}</p>
<p>[domain_realm]<br />
.EXEMPLE.LAN = EXEMPLE.LAN</p></blockquote>
<h4>3 / Test d&#8217;authentification</h4>
<p>Maintenant que le fichier de configuration est créé, il faut le tester. Si vous avez correctement configuré le PATH de votre poste client vous devez avoir accés aux commande kinit et klist si ce n&#8217;est pas le cas, ces binaires ce trouve dans le répertoire d&#8217;installation du JDK ou vous pouvez configurer votre path une bonne fois pour toute en <a href="http://www.inrialpes.fr/helix/people/genoud/ENSJAVA/tds/sujets/PriseEnMain/configWin2000.html">suivant ce tuto</a>.</p>
<p>Il faut dans un premier temps initialiser la connexion avec kinit.<br />
Dans l&#8217;interpreteur de commande windows rentrer kinit :</p>
<blockquote><p>C:\Documents and Settings\artiflo&gt;kinit</p></blockquote>
<p>Le mot de passe pour l&#8217;utilisateur courant est demandé :</p>
<blockquote><p>Password for artiflo@EXEMPLE.LAN:</p></blockquote>
<p>Si tout c&#8217;est bien passé un message d&#8217;indication est renvoyé :</p>
<blockquote><p>New ticket is stored in cache file C:\Documents and Settings\artiflo\krb5cc_artiflo</p></blockquote>
<p>On peut vérifier a présent que le ticket est bien arrivé en utilisant klist :</p>
<blockquote><p>C:\Documents and Settings\artiflo&gt;klist</p></blockquote>
<p>Ce qui devrait donner ceci :</p>
<blockquote><p>Credentials cache: C:\Documents and Settings\artiflo\krb5cc_artiflo</p>
<p>Default principal:artiflo@EXEMPLE.LAN, 1 entry found.</p>
<p>[1]  Service Principal:  krbtgt/EXEMPLE.LAN@EXEMPLE.LAN<br />
Valid starting:  Aug 11,  2009 14:49<br />
Expires:         Aug 12,  2009 00:49</p></blockquote>
<p>Tout c&#8217;est bien passer on peut retourner sur eclipse.</p>
<h4>4 / L&#8217;Autentification</h4>
<p>A présent je vais réutiliser les exemples fournis par java. Pour cela j&#8217;ai besoin de ces 3 fichiers.</p>
<p>1 / Le fichier de configuration : <a href="http://java.sun.com/products/jndi/tutorial/ldap/security/src/gsseg_jaas.conf">gsseg_jaas.conf</a></p>
<pre lang="java">GssExample { com.sun.security.auth.module.Krb5LoginModule required client=TRUE;};</pre>
<p>2 / Le dialogue : <a href="http://java.sun.com/products/jndi/tutorial/ldap/security/src/SampleCallbackHandler.java">SampleCallbackHandler.java</a></p>
<pre lang="java">import javax.security.auth.callback.*;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * Demonstrates how to write a callback handler for use with SASL.
 * Used with UseCallback.java, GssExample.java, and Mutual.java.
 *
 * Standalone test: java SampleCallbackHandler
 */
public class SampleCallbackHandler implements CallbackHandler {
    public void handle(Callback[] callbacks)
	throws java.io.IOException, UnsupportedCallbackException {
	    for (int i = 0; i &lt; callbacks.length; i++) {
		if (callbacks[i] instanceof NameCallback) {
		    NameCallback cb = (NameCallback)callbacks[i];
		    cb.setName(getInput(cb.getPrompt()));

		} else if (callbacks[i] instanceof PasswordCallback) {
		    PasswordCallback cb = (PasswordCallback)callbacks[i];

		    String pw = getInput(cb.getPrompt());
		    char[] passwd = new char[pw.length()];
		    pw.getChars(0, passwd.length, passwd, 0);

		    cb.setPassword(passwd);
		} else {
		    throw new UnsupportedCallbackException(callbacks[i]);
		}
	    }
    }

    /**
     * A reader from Standard Input. In real world apps, this would
     * typically be a TextComponent or similar widget.
     */
    private String getInput(String prompt) throws IOException {
	System.out.print(prompt);
	BufferedReader in = new BufferedReader(
	    new InputStreamReader(System.in));
	return in.readLine();
    }

    public static void main(String[] args) throws IOException,
    UnsupportedCallbackException {

	// Test handler

	CallbackHandler ch = new SampleCallbackHandler();
	Callback[] callbacks = new Callback[]{
	    new NameCallback("user id:"),
		new PasswordCallback("password:", true)};

	ch.handle(callbacks);
    }
}</pre>
<p>3 / La création du context JNDI : <a href="http://java.sun.com/products/jndi/tutorial/ldap/security/src/GssExample.java">GssExample.java</a></p>
<pre lang="java">import javax.naming.*;
import javax.naming.directory.*;
import javax.security.auth.login.*;
import javax.security.auth.Subject;

import java.util.Hashtable;

/**
 * Demonstrates how to create an initial context to an LDAP server
 * using "GSSAPI" SASL authentication (Kerberos v5).
 * Requires J2SE 1.4, or JNDI 1.2 with ldapbp.jar, JAAS, JCE, an RFC 2853
 * compliant implementation of J-GSS and a Kerberos v5 implementation.
 * Uses SampleCallbackHandler.
 *
 * usage: java
 *    -Djava.security.auth.login.config=gssapi_jaas.conf \
 *    -Djava.security.krb5.conf=krb5.conf \
 *      GssExample [qop [dn]]
 *
 * The first property indicates which JAAS login module the application needs
 * to use; the second property is for configuration of the Kerberos subsystem.
 *
 * 'qop' is a comma separated list of tokens, each of which is one of
 * auth, auth-int, or auth-conf. If none is supplied, the default is 'auth'.
 */
class GssExample {

    public static void main(String[] args) {

	// 1. Log in (to Kerberos)
	LoginContext lc = null;
	try {
	    lc = new LoginContext(GssExample.class.getName(),
		new SampleCallbackHandler());

	    // Attempt authentication
	    // You might want to do this in a "for" loop to give
	    // user more than one chance to enter correct username/password
	    lc.login();

	} catch (LoginException le) {
	    System.err.println("Authentication attempt failed" + le);
	    System.exit(-1);
	}

	// 2. Perform JNDI work as logged in subject
	Subject.doAs(lc.getSubject(), new JndiAction(args));
    }
}

/**
 * The application must supply a PrivilegedAction that is to be run
 * inside a Subject.doAs() or Subject.doAsPrivileged().
 */
class JndiAction implements java.security.PrivilegedAction {
    private String[] args;

    public JndiAction(String[] origArgs) {
	this.args = (String[])origArgs.clone();
    }

    public Object run() {
	performJndiOperation(args);
	return null;
    }

    private static void performJndiOperation(String[] args) {
	String dn;

	// Set up environment for creating initial context
	Hashtable env = new Hashtable(11);

	env.put(Context.INITIAL_CONTEXT_FACTORY,
	    "com.sun.jndi.ldap.LdapCtxFactory");

	// Must use fully qualified hostname
	env.put(Context.PROVIDER_URL,
	    "ldap://SRV01.EXEMPLE.LAN:389");

	// Request the use of the "GSSAPI" SASL mechanism
	// Authenticate by using already established Kerberos credentials
	env.put(Context.SECURITY_AUTHENTICATION, "GSSAPI");

	// Optional first argument is comma-separated list of auth, auth-int,
	// auth-conf
	if (args.length &gt; 0) {
	    env.put("javax.security.sasl.qop", args[0]);
	    dn = args[1];
	} else {
	    dn = "";
	}

	try {
	    /* Create initial context */
	    DirContext ctx = new InitialDirContext(env);

	    System.out.println(ctx.getAttributes(dn));

	    // do something useful with ctx

	    // Close the context when we're done
	    ctx.close();
	} catch (NamingException e) {
	    e.printStackTrace();
	}
    }
}</pre>
<p>Avec eclipse il ne reste plus qu&#8217;a rajouter quelques argument dans VM arguments  avant la compilation :</p>
<blockquote><p>-Djava.security.auth.login.config=C:\Workbench\GSS\src\GSS1\gsseg_jaas.conf<br />
-Djava.security.krb5.conf=C:\WINNT\krb5.ini</p></blockquote>
<p>Compiler. Indiquez votre nom d&#8217;utilisateur, puis votre mot de passe. Fini.</p>
<p>Par défaut la requête renverra tous les arguments. Mais vous pouvez par la suite créer ce que vous voulez comme requete, comme par exemple une requete qui cherche à renvoyer tous les groupes d&#8217;un USER :</p>
<pre lang="java">// Create the default search controls
SearchControls ctls = new SearchControls();
String filter = "(&amp;(member=CN=Arti flo,OU=ou_DLW_USER,OU=ou_DLW,DC=EXEMPLE,DC=LAN)(objectclass=group)))";

// Search for objects using the filter
NamingEnumeration answers = ctx.search("OU=ou_DLW_USER,OU=ou_DLW,DC=EXEMPLE,DC=LAN",filter, ctls);
while (answers.hasMore()) {
       SearchResult answer = answers.nextElement();
       System.out.println("&gt; " + answer.getNameInNamespace());
}</pre>
<p>Je dédicace mon premier billet java à mon bon lolo <img src='http://www.artiflo.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/08/authentification-kerberos-en-jndi/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problème de case des noms de tables MySQL</title>
		<link>http://www.artiflo.net/2009/08/probleme-de-case-des-noms-de-tables-mysql/</link>
		<comments>http://www.artiflo.net/2009/08/probleme-de-case-des-noms-de-tables-mysql/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 16:19:47 +0000</pubDate>
		<dc:creator>Loïc Bisière</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[case sensitive]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1406</guid>
		<description><![CDATA[<p>Bonjour,</p> <p>Aujourd&#8217;hui j&#8217;aimerais vous faire part d&#8217;un problème courant en ce qui concerne le développement via MySQL sous Windows et sous Unix. La configuration par défaut du serveur MySQL n&#8217;est pas la même selon le système d&#8217;exploitation. Dans mon cas, le problème vient de la variable lower_case_table_names. Cette dernière est configurée à 1 sous Windows [...]]]></description>
			<content:encoded><![CDATA[<p><!--:fr-->Bonjour,</p>
<p>Aujourd&#8217;hui j&#8217;aimerais vous faire part d&#8217;un problème courant en ce qui concerne le développement via MySQL sous Windows et sous Unix. La configuration par défaut du serveur MySQL n&#8217;est pas la même selon le système d&#8217;exploitation. Dans mon cas, le problème vient de la variable <strong>lower_case_table_names</strong>. Cette dernière est configurée à 1 sous Windows et à 0 sous Unix.Vous pourrez trouver tous les détails dans la <a href="http://mysql.mirrors.pair.com/doc/refman/5.0/fr/name-case-sensitivity.html" target="_blank">documentation officielle sur ce sujet</a> et ainsi mieux comprendre les problème engendrés.<img class="alignright size-full wp-image-1412" title="logo_mysql" src="http://www.artiflo.net/wp-content/uploads/2009/08/logo_mysql.gif" alt="logo_mysql" width="114" height="68" /></p>
<p>Mais les explications pour modifier cette variable ou vérifier qu&#8217;elle est sa valeur actuelle ne sont pas forcément fournies au même endroit. Je vous livre donc ici, la marche à suivre complète &#8230;</p>
<p><!--:--><span id="more-1406"></span><!--:fr-->Pour connaître la valeur de vos variables MySQL, rendez vous sur votre interface phpmyadmin. Exécuter la requète SQL suivante :</p>
<pre lang="sql">SHOW VARIABLES</pre>
<p>Vous devriez alors voir apparaître toutes les variables MySQL, et en parcourant cette liste, vous trouverez la fameuse <strong>lower_case_table_names</strong> avec sa valeur associée.</p>
<p>Alors dans la documentation officielle de MySQL en français, il nous explique que mettre cette valeur à 1 sous Unix aura pour répercussion majeure que lorsque             vous utiliserez <code>SHOW TABLES</code> ou             <code>SHOW DATABASES</code>, vous ne verrez pas la             casse originale des noms. Pas si dramatique que ça, mais si on va faire un tour dans la même <a href="http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html" target="_blank">documentation en anglais cette fois ci</a>, et bien on peut lire : <span><strong></strong></span></p>
<blockquote><p><span><strong>Exception</strong></span>: If you are using             <code>InnoDB</code> tables and you are trying to avoid             these data transfer problems, you should set             <a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_lower_case_table_names"><code>lower_case_table_names</code></a> to 1             on all platforms to force names to be converted to             lowercase.</p></blockquote>
<p>Ok, donc plus de doute, surtout dans mon cas, j&#8217;utilise InnoDB.</p>
<p>Alors pour modifier cette variable, ne tentez pas de la modifier depuis la console MySQL, vous aurez juste droit à une jolie erreur vous expliquant que cette variable est en lecture seule. Hum&#8230; c&#8217;est balo.</p>
<p>Direction votre putty pour aller éditer le fichier de conf directement. Nous y voilà donc :</p>
<pre lang="bash">sudo nano /etc/mysql/my.cnf</pre>
<p>Puis rajouter la ligne suivante après la balise [mysqld] comme ceci :</p>
<pre>[mysqld]
lower_case_table_names = 1</pre>
<p>Puis relancer votre server mysql :</p>
<pre lang="bash">sudo /etc/init.d/mysql restart</pre>
<p>Allez vérifier la valeur de la variable comme expliqué plus haut. Si la valeur est 1, tout va bien !<br />
Vous pouvez à présent continuer votre développement sous Windows et votre mise en production sous Unix sans stress !</p>
<p>You&#8217;re Welcome !<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/08/probleme-de-case-des-noms-de-tables-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sajax et l&#8217;URL Rewritting</title>
		<link>http://www.artiflo.net/2009/07/sajax-et-lurl-rewritting/</link>
		<comments>http://www.artiflo.net/2009/07/sajax-et-lurl-rewritting/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 18:01:35 +0000</pubDate>
		<dc:creator>Loïc Bisière</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rewritting]]></category>
		<category><![CDATA[sajax]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1192</guid>
		<description><![CDATA[<p>Re-bonjour, voici le 2ième &#171;&#160;hacks&#160;&#187; pour Sajax (voir mon précédent post sur Sajax et les Cookies).</p> <p>Alors soyons cours mais efficace.</p> <p>Sajax appel ses requêtes asynchrones par l&#8217;adresse courante de la page.</p> <p>exemple :</p> <p style="padding-left: 30px;">Si nous sommes sur la page index.php, les requêtes auront pour adresse :</p> <p style="padding-left: 30px;">http://www.bisiere.fr/index.php?rs=nom_de_la_fonction&#38;rst=&#38;rsrnd=1220887954407&#38;rsargs[]=arg1&#38;rsargs[]=arg2</p> <p style="padding-left: 30px;">Le [...]]]></description>
			<content:encoded><![CDATA[<p>Re-bonjour, voici le 2ième &laquo;&nbsp;hacks&nbsp;&raquo; pour <a title="Simple Ajax Toolkit" href="http://www.modernmethod.com/sajax/" target="_blank">Sajax</a> (voir mon précédent post sur <a title="Sajax et les cookies" href="http://www.artiflo.net/2009/07/sajax-et-les-cookies/" target="_blank">Sajax et les Cookies</a>).</p>
<p>Alors soyons cours mais efficace.</p>
<p>Sajax appel ses requêtes asynchrones par l&#8217;adresse courante de la page.</p>
<p><em>exemple</em> :</p>
<p style="padding-left: 30px;">Si nous sommes sur la page index.php, les requêtes auront pour adresse :</p>
<p style="padding-left: 30px;"><em>http://www.bisiere.fr/index.php?rs=nom_de_la_fonction&amp;rst=&amp;rsrnd=1220887954407&amp;rsargs[]=arg1&amp;rsargs[]=arg2</em></p>
<p style="padding-left: 30px;">Le problème s&#8217;impose lorsque l&#8217;on souhaite utiliser l&#8217;URL Rewritting et accéder à la page index.php via l&#8217;adresse :</p>
<p style="padding-left: 30px;"><em>http://www.bisiere.fr/home</em></p>
<p style="padding-left: 30px;">ce qui nous donnera une &laquo;&nbsp;requête Sajax&nbsp;&raquo; vers cette adresse :</p>
<p style="padding-left: 30px;"><em>http://www.bisiere.fr/home?rs=nom_de_la_fonction&amp;rst=&amp;rsrnd=1220887954407&amp;rsargs[]=arg1&amp;rsargs[]=arg2</em></p>
<p style="padding-left: 30px;">Et au mieux, vous aurez en retour de cette requête la page Html elle même (sans intérêt donc) sinon une erreur.</p>
<p>Le problème se situe dans la fonction <strong>sajax_get_my_uri()</strong> servant à récupérer l&#8217;adresse courante.</p>
<p><span id="more-1192"></span></p>
<p>Je vous propose donc de modifier cette fonction :</p>
<pre lang="php">function sajax_get_my_uri() {
	return $_SERVER["REQUEST_URI"];
}</pre>
<p>ainsi :</p>
<pre lang="php">function sajax_get_my_uri() {
	return $_SERVER["PHP_SELF"].'?'.$_SERVER["QUERY_STRING"];
}</pre>
<p>Et le problème est réglé, votre &laquo;&nbsp;requête Sajax&nbsp;&raquo; ira à la bonne adresse.<br />
Enjoy <img src='http://www.artiflo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Lien utile : <a title="Sajax 0.12" href="http://www.artiflo.net/wp-content/uploads/2009/07/sajax-0.12.zip">Sajax 0.12</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/07/sajax-et-lurl-rewritting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sajax et les Cookies</title>
		<link>http://www.artiflo.net/2009/07/sajax-et-les-cookies/</link>
		<comments>http://www.artiflo.net/2009/07/sajax-et-les-cookies/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 18:00:20 +0000</pubDate>
		<dc:creator>Loïc Bisière</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[cookie]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sajax]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1196</guid>
		<description><![CDATA[<p>Bonjour à tous, aujourd&#8217;hui je vous propose deux &#171;&#160;hacks&#160;&#187; pour Sajax (Simple Ajax Toolkit).</p> <p>Un problème se pose lors de l&#8217;utilisation d&#8217;un script appelé via une XMLHttpRequest de Sajax (requêtes dites « asynchrones ») qui exécute un enregistrement de cookie :</p> function vote_cookie($id) { setcookie("MonCookie", $id, time() + 86400); } <p>Dans notre cas, impossible de faire marcher [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour à tous, aujourd&#8217;hui je vous propose deux &laquo;&nbsp;hacks&nbsp;&raquo; pour <a href="http://www.modernmethod.com/sajax/" target="_blank">Sajax</a> (Simple Ajax Toolkit).</p>
<p>Un problème se pose lors de l&#8217;utilisation d&#8217;un <strong>script appelé via une XMLHttpRequest de Sajax</strong> (requêtes dites « asynchrones ») qui exécute un enregistrement de <strong>cookie</strong> :</p>
<pre lang="php">function vote_cookie($id) {
	setcookie("MonCookie", $id, time() + 86400);
}</pre>
<p>Dans notre cas, impossible de faire marcher ce script car à chaque appel nous avons droit à cette erreur :</p>
<pre lang="php"><strong>Warning</strong>:  Cannot modify header information - headers already sent...</pre>
<p><span id="more-1196"></span></p>
<p>Ce problème viens du script Sajax qui renvoie le caractère &laquo;&nbsp;+&nbsp;&raquo; avant d&#8217;afficher le résultat du script.<br />
Je m&#8217;explique, pour paramétrer un Cookie, il faut que ça soit le première chose envoyée au client car les Cookies font parti de l&#8217;en-tête.</p>
<p>exemple d&#8217;en-tête :</p>
<pre lang="html">Host	www.bisiere.fr
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language	fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding	gzip,deflate
Accept-Charset	ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive	300
Connection	keep-alive
Referer	http://www.bisiere.fr/index.php
Cookie	MonCookie=12</pre>
<p>Alors comment régler ce problème, et bien tout simplement dans le fichier Sajax.php trouver ce bout de code :</p>
<pre lang="php">	echo "+:";
	$result = call_user_func_array($func_name, $args);
	echo "var res = " . trim(sajax_get_js_repr($result)) . "; res;";</pre>
<p>et remplacer le par :</p>
<pre lang="php">	$result = call_user_func_array($func_name, $args);
        echo "+:";
	echo "var res = " . trim(sajax_get_js_repr($result)) . "; res;";</pre>
<p>Ainsi vos fonctions seront appelées et exécutée avant que des informations (autre que l&#8217;en-tête) ne soient envoyées au client.<br />
Problème réglé <img src='http://www.artiflo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  !</p>
<p>Trop facile Sajax ! mais comment l&#8217;utiliser tout en gardant mes règles d&#8217;URL Rewritting ? <a title="Sajax et l'URL Rewritting" href="http://www.artiflo.net/2009/07/sajax-et-lurl-rewritting/" target="_blank">la réponse ici</a> &#8230;</p>
<p>Liens utiles :</p>
<ul>
<li><a href="http://phpcodeur.net/articles/php/cookies/" target="_blank">Tutorial sur les Cookies</a></li>
<li><a href="http://www.modernmethod.com/sajax/" target="_blank">Site Officiel de Sajax</a></li>
<li><a title="Sajax 0.12" href="http://www.artiflo.net/wp-content/uploads/2009/07/sajax-0.12.zip">Sajax 0.12</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/07/sajax-et-les-cookies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un serveur Ubuntu 9.04 64bits virtualisé via VirtualBox pour le développement d&#8217;applications Java / Flex.</title>
		<link>http://www.artiflo.net/2009/07/installation-dun-serveur-ubuntu-9-04-64bits-virtualise-via-virtualbox-pour-le-developpement-dapplications-java-flex/</link>
		<comments>http://www.artiflo.net/2009/07/installation-dun-serveur-ubuntu-9-04-64bits-virtualise-via-virtualbox-pour-le-developpement-dapplications-java-flex/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 20:00:15 +0000</pubDate>
		<dc:creator>Loïc Bisière</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[9.04]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.artiflo.net/?p=1133</guid>
		<description><![CDATA[Cette documentation a pour objectif de reprendre pas à pas l'installation d'un serveur Ubuntu 9.04 64bits. Nous qualifierons ce serveur de pre-prod car son but est de supporter la mise en béta test de nos applications pour nos clients. De plus ce serveur sera virtualisé via VirtualBox. [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour à tous,</p>
<p><img class="size-medium wp-image-1149 alignright" title="glassfish_logo" src="http://www.artiflo.net/wp-content/uploads/2009/07/glassfish_logo_transparent-300x151.png" alt="GlassFish Logo" width="300" height="151" /></p>
<p>pré-requis pour lire cette documentation :</p>
<ul>
<li>Aimer Java / Flex</li>
<li>Aimer coder</li>
<li>Détester les admins sys</li>
</ul>
<h3>Introduction</h3>
<p>Cette documentation a pour objectif de reprendre pas à pas l&#8217;installation d&#8217;un serveur Ubuntu 9.04 64bits. Nous qualifierons ce serveur de pre-prod car son but est de supporter la mise en béta test de nos applications. De plus ce serveur sera vitualisé via VirtualBox.</p>
<p>Le tutorial débute après l&#8217;installation de Ubuntu Server 9.04 64bits. Lors de cette installation aucun service n&#8217;a été pré-installé.</p>
<p><span id="more-1133"></span></p>
<h3>Installer les pré-requis</h3>
<h4>1. Installer les paquets ssh</h4>
<blockquote><p>sudo apt-get install openssh-server</p></blockquote>
<p>Dès la fin de cette étape nous vous invitons à utiliser un client ssh tel que <a title="Putty.org" href="http://www.putty.org/" target="_blank">Putty</a>.</p>
<h4>2. Installer les paquet unzip</h4>
<blockquote><p>sudo apt-get install unzip</p></blockquote>
<h3>Installer les virtualbox additions sur Ubuntu Server 9.04</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install build-essential linux-headers-`uname -r`</p></blockquote>
<h4>2. Monter le fichier image des vboxadditions</h4>
<h4>3. Monter le CD-ROM</h4>
<blockquote><p>sudo mount /dev/cdrom /media/cdrom</p></blockquote>
<h4>4. Exécuter l&#8217;installation</h4>
<blockquote><p>cd /media/cdrom<br />
sudo ./VBoxLinuxAdditions-amd64.run</p></blockquote>
<h3>Installer Apache 2</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install apache2</p></blockquote>
<h3>Installer MySQL Server</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install mysql-server</p></blockquote>
<h3>Installer Php 5</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install php5 libapache2-mod-php5 php5-mysql</p></blockquote>
<h4>2. Configurer Apache</h4>
<blockquote><p>sudo nano /etc/apache2/apache2.conf</p></blockquote>
<p>Après la ligne :</p>
<blockquote><p>DefaultType text/plain</p></blockquote>
<p>Ajouter les lignes suivantes :</p>
<blockquote><p>AddType application/x-httpd-php .php<br />
AddType application/x-httpd-php-source .phps</p></blockquote>
<h4>3. Tester</h4>
<p>Créer le fichier phpinfo.php :</p>
<blockquote><p>sudo nano /var/www/phpinfo.php</p></blockquote>
<blockquote><p>&lt;?php<br />
phpinfo();<br />
?&gt;</p></blockquote>
<p>Relancer Apache :</p>
<blockquote><p>sudo /etc/init.d/apache2 reload</p></blockquote>
<p>Rendez-vous à :</p>
<p>http://ip.du.server/phpinfo.php</p>
<h3>Installer PhpMyAdmin</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install phpmyadmin</p></blockquote>
<h4>2. Tester</h4>
<p>http://ip.du.server/phpmyadmin</p>
<h3>Installer le serveur SVN et son module Apache</h3>
<h4>1. Installer les paquets</h4>
<blockquote><p>sudo apt-get install subversion</p></blockquote>
<h4>2. Créer le répertoire des repository</h4>
<blockquote><p>sudo mkdir /var/svn</p></blockquote>
<h4>3. Installer les paquets</h4>
<blockquote><p>sudo apt-get install libapache2-svn</p></blockquote>
<h4>4. Configuration</h4>
<blockquote><p>sudo nano /etc/apache2/mods-available/dav_svn.conf</p></blockquote>
<p>Remplacer la config par :</p>
<blockquote><p>&lt;Location /svn&gt;<br />
DAV svn<br />
SVNParentPath /var/svn<br />
SVNListParentPath On<br />
&lt;/Location&gt;</p></blockquote>
<p>Redémarrer Apache :</p>
<blockquote><p>sudo /etc/init.d/apache2 restart</p></blockquote>
<p>Vérifier la conf en vous rendant à l&#8217;adresse :</p>
<p>http://ip.du.server/svn/</p>
<h4>5. Sécurité</h4>
<blockquote><p>sudo nano /etc/apache2/mods-available/dav_svn.conf</p></blockquote>
<p>Remplacer la config par :</p>
<blockquote><p>&lt;Location /svn&gt;<br />
DAV svn<br />
SVNParentPath /var/svn<br />
SVNListParentPath On<br />
AuthType Basic<br />
AuthName &laquo;&nbsp;Depot Subversion&nbsp;&raquo;<br />
AuthUserFile /etc/apache2/dav_svn.passwd<br />
Require valid-user<br />
&lt;/Location&gt;</p></blockquote>
<p>Création du fichier htpasswd :</p>
<blockquote><p>sudo htpasswd -cs /etc/apache2/dav_svn.passwd utilisateur</p></blockquote>
<p>Pour créer d&#8217;autres utilisateurs :</p>
<blockquote><p>sudo htpasswd -s /etc/apache2/dav_svn.passwd utilisateur</p></blockquote>
<p>Faire appartenir ce fichier à l&#8217;utilisateur Apache :</p>
<blockquote><p>sudo chown www-data:www-data /etc/apache2/dav_svn.passwd</p></blockquote>
<p>Redémarrer Apache :</p>
<blockquote><p>sudo /etc/init.d/apache2 restart</p></blockquote>
<h4>6. Comment créer un projet</h4>
<blockquote><p>sudo svnadmin create /var/svn/projet<br />
sudo chown -R www-data:www-data /var/svn/projet</p></blockquote>
<h4>7. Comment supprimer un projet</h4>
<blockquote><p>sudo rm -r /var/svn/projet/</p></blockquote>
<h3>Installer JAVA</h3>
<h4>1. Installation</h4>
<p>Installer le dernier JDK :</p>
<blockquote><p>sudo apt-get install sun-java6-jdk</p></blockquote>
<h4>2. Configuration</h4>
<p>Editer le fichier profile de /etc :</p>
<blockquote><p>sudo nano /etc/profile</p></blockquote>
<p>Rajouter au début du fichier ces lignes :</p>
<blockquote><p>export JAVA_HOME=/usr/lib/jvm/java-6-sun<br />
export PATH=$PATH:$JAVA_HOME/bin</p></blockquote>
<p>Tester, vous devez tout d&#8217;abord relancer votre terminal :</p>
<blockquote><p>echo $JAVA_HOME<br />
echo $PATH</p></blockquote>
<h3>Installer le serveur GlassFish</h3>
<h4>1. Préparatifs</h4>
<p>Créer l&#8217;utilisateur GlassFish :</p>
<blockquote><p>sudo adduser &#8211;system glassfish</p></blockquote>
<p>Télécharger la dernière version de GlassFish (<a href="https://glassfish.dev.java.net/public/downloadsindex.html">link</a>) dans un répertoire dont l&#8217;utilisateur glassfish a les droits :</p>
<blockquote><p>cd /home/glassfish<br />
sudo wget lien.de.telechargement</p></blockquote>
<h4>2. Installation</h4>
<p>Exécuter l&#8217;installation via le nouveau user créé :</p>
<blockquote><p>sudo -u glassfish java -Xmx256M -jar nom.du.fichier.jar</p></blockquote>
<p>Déplacer le répertoire d&#8217;installation :</p>
<blockquote><p>sudo mv glassfish /opt</p></blockquote>
<p>Changer les règles pour accéder au répertoire sans le root :</p>
<blockquote><p>sudo chgrp -R admin /opt/glassfish/</p></blockquote>
<p>Exécuter le script d&#8217;installation :</p>
<blockquote><p>cd /opt/glassfish/<br />
sudo chmod -R +x lib/ant/bin/<br />
sudo -u glassfish lib/ant/bin/ant -f setup.xml</p></blockquote>
<p>Après le &laquo;&nbsp;Build Successful&nbsp;&raquo;, on test :</p>
<blockquote><p>sudo -u glassfish bin/asadmin start-domain domain1<br />
http://ip.du.server:4848 (admin | adminadmin)</p></blockquote>
<h4>3. Auto Start</h4>
<p>Créer le fichier :</p>
<blockquote><p>sudo nano /etc/init.d/glassfish</p></blockquote>
<p>Son contenu :</p>
<blockquote><p>#! /bin/sh</p>
<p>GLASSFISHPATH=/opt/glassfish/bin</p>
<p>case &laquo;&nbsp;$1&#8243; in<br />
start)<br />
echo &laquo;&nbsp;starting glassfish from $GLASSFISHPATH&nbsp;&raquo;<br />
sudo -u glassfish $GLASSFISHPATH/asadmin start-domain domain1<br />
;;<br />
restart)<br />
$0 stop<br />
$0 start<br />
;;<br />
stop)<br />
echo &laquo;&nbsp;stopping glassfish from $GLASSFISHPATH&nbsp;&raquo;<br />
sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1<br />
;;<br />
*)<br />
echo $”usage: $0 {start|stop|restart}”<br />
exit 3<br />
;;<br />
esac<br />
:</p></blockquote>
<p>Rendre le script exécutable :</p>
<blockquote><p>sudo chmod a+x /etc/init.d/glassfish</p></blockquote>
<p>Tester en arrêtant le serveur précédemment lancé, puis relancer le :</p>
<blockquote><p>sudo /etc/init.d/glassfish stop<br />
sudo /etc/init.d/glassfish start</p></blockquote>
<p>Mise en place du start/stop automatique de glassfish  :</p>
<blockquote><p>sudo update-rc.d glassfish defaults 90 10</p></blockquote>
<h4>4. Installation des drivers JDBC MySQL</h4>
<p>Installer le package :</p>
<blockquote><p>sudo apt-get install libmysql-java</p></blockquote>
<p>Création du lien symbolique dans le répertoire lib de GlassFish :</p>
<blockquote><p>sudo -u glassfish ln -s /usr/share/java/mysql-connector-java.jar /opt/glassfish/lib/</p></blockquote>
<h3>Installer le serveur Flex BlazeDS</h3>
<h4>1. Préparatifs</h4>
<p>Télécharger la dernière version de BlazeDS (<a href="http://opensource.adobe.com/wiki/display/blazeds/Release+Builds">link</a>) :</p>
<blockquote><p>sudo wget lien.de.telechargement</p></blockquote>
<h4>2. Installation</h4>
<p>Extraire les fichiers en tant qu&#8217;utilisateur blazeds dans un répertoire blazeds :</p>
<blockquote><p>unzip nom.du.fichier.zip -d blazeds</p></blockquote>
<p>Déplacer le répertoire d&#8217;installation :</p>
<blockquote><p>sudo mv blazeds /opt</p></blockquote>
<p>Changer les règles pour accéder au répertoire sans le root :</p>
<blockquote><p>sudo chgrp -R admin /opt/blazeds/</p></blockquote>
<p>Test :</p>
<blockquote><p>/opt/blazeds/tomcat/bin/./startup.sh</p></blockquote>
<p>http://ip.du.server:8400</p>
<h4>3. Auto Start</h4>
<p>Créer le fichier :</p>
<blockquote><p>sudo nano /etc/init.d/blazeds</p></blockquote>
<p>Son contenu :</p>
<blockquote><p>#! /bin/sh</p>
<p>export JAVA_HOME=/usr/lib/jvm/java-6-sun</p>
<p>BLAZEDS=/opt/blazeds/tomcat/bin</p>
<p>case &laquo;&nbsp;$1&#8243; in<br />
start)<br />
echo &laquo;&nbsp;starting Tomcat BlazeDS from $BLAZEDS&nbsp;&raquo;<br />
$BLAZEDS/./startup.sh<br />
;;<br />
restart)<br />
$0 stop<br />
$0 start<br />
;;<br />
stop)<br />
echo &laquo;&nbsp;stopingTomcat BlazeDS from $BLAZEDS&nbsp;&raquo;<br />
$BLAZEDS/./shutdown.sh<br />
;;<br />
*)<br />
echo $”usage: $0 {start|stop|restart}”<br />
exit 3<br />
;;<br />
esac<br />
:</p></blockquote>
<p>Rendre le script exécutable :</p>
<blockquote><p>sudo chmod a+x /etc/init.d/blazeds</p></blockquote>
<p>Tester en arrêtant le serveur précédemment lancé, puis relancer le :</p>
<blockquote><p>sudo /etc/init.d/blazeds stop<br />
sudo /etc/init.d/blazeds start</p></blockquote>
<p>Mise en place du démarrage automatique de tomcat blazeDS :</p>
<blockquote><p>sudo update-rc.d blazeds defaults 91 9</p></blockquote>
<h3>Migrer le serveur SVN</h3>
<h4>1. Dump de l&#8217;ancien serveur SVN</h4>
<blockquote><p>sudo svnadmin dump /chemin/vers/refrenciel &gt; /chemin/vers/fichier</p></blockquote>
<p>exemple dans ma configuration, créer tout d&#8217;abord un répertoire dans votre home pour regrouper tous vos dump :</p>
<blockquote><p>mkdire dumpSVN</p></blockquote>
<p>Puis, dumper vos projets :</p>
<blockquote><p>sudo svnadmin dump /var/svn/projet1 &gt; ~/dumpSVN/projet1<br />
sudo svnadmin dump /var/svn/projet2 &gt; ~/dumpSVN/projet2</p></blockquote>
<p>Puis créer un zip de votre dossier dumpSVN et récupérer le dans votre home du nouveau serveur.</p>
<h4>2. Préparation du nouveau serveur SVN</h4>
<p>Vous devez recréer vos projets :</p>
<blockquote><p>sudo svnadmin create /var/svn/projet<br />
sudo chown -R www-data:www-data /var/svn/projet</p></blockquote>
<p>exemple dans ma configuration :</p>
<blockquote><p>sudo svnadmin create /var/svn/projet1<br />
sudo svnadmin create /var/svn/projet2<br />
sudo chown -R www-data:www-data /var/svn/projet1<br />
sudo chown -R www-data:www-data /var/svn/projet2</p></blockquote>
<h4>3. Load dans le nouveau serveur SVN</h4>
<blockquote><p>sudo svnadmin load /chemin/vers/referentiel &lt; /chemin/vers/fichier</p></blockquote>
<p>exemple dans ma configuration, après avoir récupérer l&#8217;archive dumpSVN :</p>
<blockquote><p>unzip dumpSVN.zip<br />
sudo svnadmin load /var/svn/projet1 &lt; ~/dumpSVN/projet1<br />
sudo svnadmin load /var/svn/projet2 &lt; ~/dumpSVN/projet2</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.artiflo.net/2009/07/installation-dun-serveur-ubuntu-9-04-64bits-virtualise-via-virtualbox-pour-le-developpement-dapplications-java-flex/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

