Posts filed under ‘administration’

Utiliser Git et Xcode 3

Ceux qui ont téléchargé la bêta de Xcode 4 peuvent d’ores et déjà profiter de l’intégration de Git à leur IDE favori :).
Mais ceux qui possèdent un Mac Mini par exemple ont aussi pu apprécier la lourdeur et l’instabilité de la dernière bêta de cette dernière version, préférant continuer à travailler sous la version 3 de Xcode.

A chaque ouverture de votre projet Xcode, les données du dossier .pbxproj vont être modifiées, polluant votre index Git. Nous allons donc utiliser la commande de git permettant d’ignorer certains fichiers, afin que seuls vos codes sources et vos fichiers utilisés par le projets soient sous contrôle de version.

Premièrement, nous allons crééer un fichier .gitignore à la racine du dossier du projet controlé par git.

Dans ce fichier nous renseignons ces lignes :

# fichiers xcode a ignorer
build/*
*.pbxuser
*.mode1v3

# fichiers osx a ignorer
.DS_Store
profile

Référence : http://www.kernel.org/pub/software/scm/git/docs/gitignore.html

Mais si comme moi vous avez déja commité ces fichiers sur votre repository git, alors il vous faudra les enlever (en anglais « untrack ») du controle de version avec la commande :

git rm -f nom_de_projet.xcodeproj/nom_utilisateur.*
git rm -f build/*
et enfin
git commit -m "remove useless files"

Rassurez-vous car si ces fichiers seront enlevés du disque dur, le build sera recréé à la prochaine compilation du projet, et les fichiers de préférences utilisateur du .pbxproj seront regénérés automatiquement par xcode.

24 août 2010 at 22 h 30 min Laisser un commentaire

Mieux que le « spotlight » : les outils de bases d’ UNIX

Pour ceux qui l’ignorent encore, Snow Leopard et plus généralement la famille MacOS x, est basé sur le systeme d’exploitation BSD.

SI vous êtes un jour confrontés à la problématique de retrouver le nom d’un fichier contenant une certaine chaîne de caractère (dont vous avez oublié le nom), utilisez la puissance des outils de bases d’unix pour effectuer cette tâche et jouissez de la commande grep et du -exec de find! 🙂

Une petite piqure de rappel au cas ou vous n’êtes pas familiers de la ligne de commande linux :

find / -exec grep -l expression_a_rechercher {} \;

19 septembre 2009 at 14 h 10 min Laisser un commentaire

Playing with the shell history on Unix-ish systems

When using the shell on a server, you could type command revealing secrets on your root password or on your server organisation. For instance: just imagine your return keypress has not been working while becoming root, and your « su » password would be written without security asterisk and save in the history…)…

Moreover, it’s sometimes useful to scan your entire history when playing around with your shell.

So you juste have to learn the some shell history tricks command.

How to list the entire shell history ?

Just type « history  »

How to clear the shell history ?

Just type « history -c »

How to avoid having twice the same command in the shell history ?

Just insert this in » ~/.bash_profile: »
export HISTCONTROL=ignoredups

Hope these few tricks could have been useful for you !

27 février 2009 at 20 h 01 min Laisser un commentaire

Sécuriser MySQL : création d’un utilisateur dédié à une base de donnée

Dans l’ensemble de cet article on supposera l’utilisateur MySQL root existant avec le mot de passe: rootPass

Etape 1 : Créer l’utilisateur

Connectez vous en root sur la table appelée « mysql », et tapez la commandes suivantes.

INSERT INTO user(host,user,password) VALUES (‘localhost’,’nom_user’,PASSWORD(‘pass_user’));

Etape 2 : Créer la base de donnée

En root, il suffit d’entrer les commandes CREATE DATABASE nom_database;.
Pour générer les tables, que vous avez déjà probablement crée lors de la phase de développement, je vous conseille d’exporter la structure depuis le SGBD de dev, puis de l’insérer dans le SGBD de production en utilisant:
mysql -u root -prootPass nom_database <votrefichier.sql

Etape 3 : Attribuer les droits : insertion, suppression, et lecture sur l’ensemble de la base

L’attribution des droits s’effectue avec l’usage de la commane GRANT, comme suit:

GRANT SELECT, INSERT, UPDATE ON nom_database.* TO nom_user@’localhost’ ;

Validez l’attribution de ces droits par:
flush privileges;

Références

http://dev.mysql.com/doc/refman/5.0/fr/adding-users.html

23 février 2009 at 12 h 01 min Laisser un commentaire

Comment convertir un fichier ISO en UTF-8 ?

Les soucis de chaïnes UTF-8 / Isos ont déja été évoqués dans un article traitant des serveurs de pages web.

Mais que faire d’un fichier existant qui serait en encodé avec des caractères en ISO ? C’est le cas par exemple des fichiers de localisation en français du forum punBB / FluxBB.

Soit on passe les page servies en ISO avec la commande addDefaultCharset, cf. les directives de bases d’Apache httpd (dommage quand même d’en arriver là!).
Soit on convertit notre fichier en UTF-8 a l’aide d’un utilisaire bien pratique.

Comment connaitre l’encodage d’un fichier ?

En premier lieu, nous pouvons vérifier le type d’encodage avec file sous Linux:


user@bécane:~> file /home/user/fichier.txt
/home/user/fichier.txt: ISO-8859 text

Comment convertir le fichier encodé en ISO-8859x en fichier UTF-8

iconv, va nous permettre de réaliser ce tour de magie. Il vous sauvera la vie plus d’une fois si vous jonglez avec les bases de données de clients multiples peu soucieux de l’encodage de leurs caractères…

user@bécane:~> iconv -f ISO-8859-1 -t UTF-8 /home/user/fichier.txt -o /home/user/fichierUTF-8.txt

Et voila, les accents et autres caractères spéciaux sont maintenant convertis en UTF-8
Ultra pratique !

17 octobre 2008 at 15 h 21 min Laisser un commentaire

La chaîne d’encodage UTF-8… de la requête client à la réponse serveur.

Lors de la mise en production d’une application web, j’ai du faire face comme tout programmeur un jour ou l’autre à un problème, assez pénible, de charset:

Les accents (é, à et les ç) qui passaient pourtant sans broncher sur le serveur de dévelopement s’affichaient « cassés » sous forme Ä�… Bref de l’iso 8859 est venu mettre son nez dans notre circuit en UTF-8!

Les basiques à vérifier:

1. entêtes des header lors de la requête, et lors de la réponse http:

Pour vérifier les headers HTTp, je vous conseille l’excellent Live HTTP headers, plugin pour firefox…

Ils doivent spécifier un mime-type correct, suivi d’un point virgule et « charset=UTF-8 »

Cela se paramètre soit au niveau de votre serveur applicatif (header() en PHP, setContentType() avec J2EE / Java EE) soit au niveau d’Apache (directive addDefautCharset).

2 Encodage du document:

Le document HTML doit préciser la ligne meta suivante:

<meta content= »text/html;charset=utf-8«  http-equiv= »Content-Type« />

A partir de ces deux étapes tout document chez le client est donc en utf-8. Mais le problème persistait dans mon cas!

3 Le système d’exploitation

Taper locale charmap sous linux pour connaitre le charset utilisé par le système, en général UTF-8 par défaut sur les sytèmes récents, sinon un dpkg-reconfigure locales sera nécessaire (Debian).

4 Le serveur applicatif

Pour php, je ne peux plus rien pour vous, il ne gère pas l’utf8 en natif (bouuuuh, la honte !!!), il faudra vous renseigner ailleurs sur ce sujet…Pour ce qui est des objets javascript, l’utf ne sera pas cassé car javascript gère parfaitement bien l’UTF-8 en natif par défaut. Java est par défaut en utf-8. A tout hasard, on peut forcer son usage en passant le paramètre Dfile.encoding=UTF-8 à la JVM. Si vous lancez un serveur tomcat sous linux, il suffit pour cela de spécifier dans le script de démmarage du service: « CATALINA_OPTS= »-Dfile.encoding=UTF-8″« . Si vous utilisez un frontend, le passage de paramètres via l’url peut également casser l’utf-8 … Configurez votre connecteur correctement avec l’attribut URIEncoding dans le server.xml. Voici un exemple:

<Connector port= »8080″ maxThreads= »150″ minSpareThreads= »25″ maxSpareThreads= »75″ enableLookups= »false » redirectPort= »8443″ acceptCount= »100″ debug= »0″ connectionTimeout= »20000″ disableUploadTimeout= »true » URIEncoding= »UTF-8« />

5 Le code source

Concernant mon problème, ce n’était toujours pas reglé… J’étais désespéré, et je noyais mon chagrin en relisant la javadoc, quand soudain je tombai sur le deus ex machina du cycle de dévelopement d’une WebApp:

request.setCharacterEncoding(« UTF-8 »);
response.setCharacterEncoding(« UTF-8 »);

6. Encore plus loin

Ouf! Pour moi l’aventure de la chasse à l’ISO 8859 était terminée, l’utf-8 regnait en maître, les derniers morceaux encodés en ISO se cachaient dans les recoins les plus sombres de la mémoire vive avant de mourir lors d’un sanglant reboot. Mais pour toi, lecteur qui cherche à résoudre ton problème d’encodage de caractères accentués, il faudra encore t’assurer que le reste de ta chaine de développement ne corrompt pas l’UTF 8. Par exempe, MySQL, crée tout ses tables en charset ISO latin par défaut :

ALTER TABLE `table_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin fera probablement l’affaire pour modifier a postériori une mauvaise création de table…

référence : http://dev.mysql.com/doc/refman/5.0/fr/charset-general.html

Et puis… votre éditeur de texte doit lui aussi être configuré avec le bon charset… un erreur qui fait toujours sourire mais c’est parfois son propre outil qui ne sauve pas les fichiers avec le bon charset !

En espérant que cette petite checklist vous aura dépannés !

9 octobre 2008 at 2 h 22 min 2 commentaires

HOWTO: configure Tomcat to send mails, using javamail

This article shows step by step a way to configure Apache Tomcat J2EE server to send emails.

You will need first a working Tomcat server of course, and a mail server. You can have it on your own machine, just like me, so the smtp server would be « localhost », or on another machine from which you can use smtp, for instance your Internet Service Provider smtp (generally smtp.nameofyourISP.com)

Step 1 : Install the right libraries:

Sending mails with tomcat require 2 librairie: the javamail API, and the Java Activation Framework (jaf).
Depending on your JDK /JRE version, you will need to place 1 or 2 files in your /catalina_home/commons/libs/ folder.
If you have a 1.6 java version (check with java -version) you will need only the mail.jar otherwise, you will need both mail.jar and activation.jar.

Important: you must not include these two files into your webapp, or you will get an almost wired error:
java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session

Let’s download the files:

javamail-1_4_1.zip

With JDK / JRE 1.6 it’s the only one you will need. With other versions, take also this file: java activation framework

Unzip these file (if needed, on a Debian system for instance, download the zip package: apt-get unzip), and move it to the appropriate catalina folder (don’t forget to stop tomat service before).

mv /home/your_username/javamail-1.4.1/mail.jar /your_tomcat_home/common/lib/

The same applies to the activaction.jar if needed.

2. Configure your webapp:

2 step to configure your webapp. First, edit the conext.xml, and declare you mail ressource to make it available:

<Resource auth="Container" mail.smtp.host="localhost" name="mail/NomDeLaRessource" type="javax.mail.Session"/>

Next, edit your web.xml file and declare your webapp using your mail resource:

<resource-ref>
<description>Votre description </description>
<res-ref-name>mail/NomDeLaRessource</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

3. Write the code

To test your configuration, here is a working sample code:

Session session = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup(« java:comp/env »);
session = (Session) envCtx.lookup(« mail/NomDeLaRessource »);

} catch (Exception ex) {
System.out.println(« lookup error »);
System.out.println( ex.getMessage());
}

Here is the code which actually send the mail:


Message message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(expediteur);
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress(destinataire);
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject(sujet);
message.setContent(corps, "text/html;charset=UTF-8");
Transport.send(message);
} catch (AddressException ex) {
System.out.println( ex.getMessage());
} catch (MessagingException ex) {
System.out.println( ex.getMessage());
}

The most convenient is to create a hepler method, with receiver adress, subject, body, etc…but that’s your work 🙂

Thanks goes to tomcat mailing list people, especially Chuck and Martin.

Références : tomcat.apache.org/

26 septembre 2008 at 9 h 27 min 10 commentaires

Configurer Tomcat pour envoyer des mails

Cet article présente pas à pas une méthode pour configurer le serveur J2EE Tomcat afin de pouvoir envoyer des mails.

Vous aurez besoin au préalable d’un Tomcat installé, et d’un serveur de mail sortant (installé sur votre serveur, comme dans le cas de cet article, ou bien acceptant de relayer vos mail – par exemple le serveur SMTP de votre FAI mail.free.fr, mail.wanadoo.fr, etc…).

1 Installer les librairies de l’API JavaMail:

Il faut placer les fichiers mail.jar et activation.jar dans le dossier /catalina_home/commons/libs/.

J’insiste sur ce point: il est important de ne pas inclure ces 2 librairies dans votre webapp, sous peine d’avoir cette erreur assez peu explicite:

java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session

Nous allons donc télécharger ces deux librairies:

javamail-1_4_1.zip

Si vous utiliser le JDK 1.6 ou le JRE, vous n’auraez besoin que de javamail.

On dézippe l’archive fraichement utilisée (j’ai du télécharger le paquet unzip avec apt-get unzip, car gunzip ne prend en charge que les archives .gz), puis on place la librairie (n’oubliez pas de stopper le serveur avant).

mv /home/votre_username/javamail-1.4.1/mail.jar /opt/tomcat/common/lib/

Faire la même chose avec le fichier activation.jar si vous n’utiliser pas le JRE en version 6.

Si vous utilisez une version antérieure, vous aurez besoin également du Java Activation Framework:

2. Configurer la webapp:

La configuration s’effectue en deux étapes. Dans le fichier context.xml, on va déclarer la ressource avec cette ligne:

<Resource auth="Container" mail.smtp.host="localhost" name="mail/NomDeLaRessource" type="javax.mail.Session"/>

Ensuite, dans le fichier web.xml on va déclarer l’utilisation de la ressource afin qu’elle soit accessible par la webapp:

<resource-ref>
<description>Votre description </description>
<res-ref-name>mail/NomDeLaRessource</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

3. Ecrire le code

Pour accéder à la ressource qu’on vient de définir, il faut utiliser le code java suivant :

Session session = null;
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
session = (Session) envCtx.lookup("mail/NomDeLaRessource");

} catch (Exception ex) {
System.out.println("erreur au lookup");
System.out.println( ex.getMessage());
}

Ensuite, voici un exemple qui permet d’envoyer les messages:

Message message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(expediteur);
InternetAddress to[] = new InternetAddress[1];
to[0] = new InternetAddress(destinataire);
message.setRecipients(Message.RecipientType.TO, to);
message.setSubject(sujet);
message.setContent(corps, "text/html;charset=UTF-8");
Transport.send(message);
} catch (AddressException ex) {
System.out.println( ex.getMessage());
} catch (MessagingException ex) {
System.out.println( ex.getMessage());
}

Le plus pratique est de créer une fonction « helper » pour pouvoir envoyer des messages facilement, du type envoyerMessage(destinataires[],sujets[],corps[])… mais ce n’est pas l’objet de cet article.

Maintenant,votre Tomcat devrait être prêt pour envoyer des mails !

Références : tomcat.apache.org/
Tomcat mailing-list

26 septembre 2008 at 8 h 59 min 1 commentaire

Debian: comment activer les logs du démon cron ?

Par défaut sur la Debian, les logs de cron ne sont pas activés;

Si comme moi vous n’avez pas de sortie dans /var/log/crond, il vous faut éditer /etc/syslog.conf et rajouter cette ligne:

cron.* -/var/log/cron

Sauvez et quittez, puis créez le fichier avec touch /var/log/cron.
Redémarrez le démon syslog avec /etc/init.d/sysklogd restart.

Et voilà !

24 septembre 2008 at 20 h 03 min 3 commentaires

Installer le connecteur mysql java sur un serveur Tomcat

Nous allons installer le support de mysql au serveur Tomcat.

Il est important de ne pas dupliquer l’installation du connecteur (ne pas inclure dans le code source s’il n’est pas inclus.

il suffit de copier le fichier jar dans le dossier catalina_home/common/libs

Ainsi on fait un:

wget http://mir2.ovh.net/ftp.mysql.com/Downloads/Connector-J/mysql-connector-java-5.1.6.tar.gz

puis tar -zxvf ./mysql-connector-java-5.1.6.tar.gz

et enfin mv ./mysql-connector-java-5.1.6.tar.gz /catalinahome/common/libs/

et ca devrait être bon 🙂 N’oubliez pas de remplacer catalina_home par votre propre répertoire d’installation de Tomcat bien entendu…

23 septembre 2008 at 19 h 33 min Laisser un commentaire

Older Posts