Catégories
Open-source Systeme

Création d’un script de démarrage sous Linux

Dans cet article nous allons voir comment automatiser le démarrage d’un service ainsi que son arrêt sur un système GNU/Linux (plus particulièrement sur une distribution Ubuntu 8.04 Server).

A titre d’exemple, nous allons voir comment lancer un portail Liferay au démarrage de la machine, et comment l’arrêter proprement lors d’un reboot ou d’un shutdown.

Création du script

Nous allons donc créer un script nommé ‘liferay‘ que l’on va placer dans le répertoire /etc/init.d .

#!/bin/sh

# le nom du service
SERVICE_NAME=Liferay
# le répertoire où se trouvent les exécutables du service
SERVICE_DIRECTORY=/opt/Portal/bin
# le nom du script de démarrage du service
SERVICE_STARTUP_SCRIPT=startup.sh
# le nom du script d'arrêt du service
SERVICE_SHUTDOWN_SCRIPT=shutdown.sh

usage()
{
        echo "-----------------------"
        echo "Usage: $0 (stop|start|restart)"
        echo "-----------------------"
}

if [ -z $1 ]; then
        usage
fi

service_start()
{
        echo "Starting service '${SERVICE_NAME}'..."
        OWD=`pwd`
        cd ${SERVICE_DIRECTORY} && ./${SERVICE_STARTUP_SCRIPT}
        cd $OWD
        echo "Service '${SERVICE_NAME}' started successfully"
}

service_stop()
{
        echo "Stopping service '${SERVICE_NAME}'..."
        OWD=`pwd`
        cd ${SERVICE_DIRECTORY} && ./${SERVICE_SHUTDOWN_SCRIPT}
        cd $OWD
        echo "Service '${SERVICE_NAME}' stopped"
}

case $1 in
        stop)
                service_stop
        ;;
        start)
                service_start
        ;;
        restart)
                service_stop
                service_start
        ;;
        *)
                usage
esac
exit 0

Maintenant, il faut donner les permissions d’exécution sur ce script

# chmod a+x /etc/init.d/liferay

Automatisation

Maintenant que le script est créé, il ne reste plus qu’à faire en sorte que le service se lance au démarrage de la machine et qu’il se stoppe à l’arrêt de celle-ci. Le runlevel qui nous intéresse ici est le numéro 2, mais on peut appliquer cette configuration pour les autres.

Il existe 2 méthodes pour procéder: la première consiste à créer des liens symboliques à la main dans le répertoire /etc/rc2.d en respectant les conventions de nommage, et la seconde (plus simple), consiste à utiliser la commande update-rc.d (c’est cette méthode que nous allons utiliser).

Avant tout chose, il faut déterminer le moment exact où le script s’exécutera:

  • Démarrage du service
    Le service liferay doit se lancer une fois que le serveur de base de données est démarré (en l’occurrence, il s’agit de MySQL).
    En regardant dans le répertoire /etc/rc2.d, on voit que le service mysql démarre à la position 19 (ce numéro peut changer suivant les configurations), donc nous allons démarrer le service liferay à la position 20.
  • Arrêt du service
    Le service liferay doit s’arrêter avant que le serveur de base de données ne s’arrête.
    En regardant dans le répertoire /etc/rc6.d (le runlevel 6 est consacré à l’arrêt de la machine), on voit que le service mysql s’arrête en position 18. Nous allons donc arrêter le service liferay en position 17.

Voici donc la commande qui permet de configurer le service comme décrit précédemment:

# update-rc.d liferay start 20 2 . stop 17 6 .

Désactiver un service

Pour désactiver le lancement automatique d’un service au démarrage, il existe 3 possibilités:

  • utiliser la commande update-rc.d
    # update-rc.d -f liferay remove
  • supprimer le lien symbolique du répertoire /etc/rcX.d (où X représente le numéro de runlevel désiré)
  • retirer les permissions d’exécution sur le script situé dans le répertoire /etc/init.d

Pour plus d’infos, consulter la documentation de la commande update-rc.d.

Catégories
Image Open-source

Ajouter un reflet à un logo avec GIMP

Voici un petit tutorial Gimp permettant de réaliser un logo avec un reflet style Cover Flow de iTunes.

Tout d’abord, ouvrir le fichier dans The Gimp (nous prenons ici le logo du blog de Nicolargo).

Pour réaliser ce reflet, nous allons tout d’abord doubler la hauteur de l’image. Pour cela,

  • aller dans le menu Image / Taille du canevas

  • décocher le lien qui permet de garder les proportions (le maillon de chaine situé entre la longueur et la hauteur de l’image) et doubler la valeur de la hauteur (ici on passe de 47 à 94)

Dans la palette des calques, dupliquer l’arrière plan (ou le calque souhaité):

  • sélectionner le calque
  • aller dans le menu Calque / Dupliquer le calque
  • renommer ce nouveau calque en « Reflet« 

  • sélectionner le calque « Reflet »
  • aller dans le menu Calque / Transformer / Miroir vertical
  • déplacer le calque « Reflet » en dessous du calque principal en sélectionnant l’outil de déplacement (touche M) et en utilisant la souris ou les flèches du clavier.

Désormais, il ne reste plus qu’a créer l’effet de reflet sur ce calque. Pour cela, nous allons utiliser un Masque de Calque.

Un masque de calque sert à masquer certaines zones du calque à l’aide d’un outil de remplissage quelconque (pinceau, crayon, pot de peinture, etc.). Le fait de peindre une zone en noir sur ce masque va masquer cette zone sur le calque (et donc la rendre transparente). La couleur blanche rend la zone dessinée opaque et les niveaux de gris permettent de la rendre plus ou moins transparente.

Vérifier que le calque « Reflet » est bien sélectionné, puis aller dans le menu Calque / Masque / Ajouter un masque de calque. Dans la boite de dialogue, sélectionner « Blanc (opacité complète)« .

Si vous regardez la palette des calques, vous verrez que le calque « Reflet » possède une deuxième vignette : c’est le masque, qui est blanc pour le moment. Vous pouvez a tout moment décider de dessiner sur le calque ou sur son masque en cliquant sur la vignette appropriée.

  • sélectionnez le masque (il doit alors être entouré d’une bordure blanche) puis, à l’aide de l’outil dégradé (touche L), dessinez un dégradé vertical blanc->noir (le blanc étant en haut et le noir en bas)
  • ajuster l’opacité du claque de reflet si nécessaire

  • pour avoir un aperçu du résultat, mettre un calque de fond (noir ou blanc)

Et voilà !

Catégories
Open-source Systeme

Créer un OS Live sur CD et clé USB

Avoir un système d’exploitation live sur CD ou clé USB peut s’avérer extrêmement utile lorsque, par exemple, Windows plante au démarrage (ah bon?) et que l’on veut récupérer des fichiers importants sur le disque, ou tout simplement pour transporter sa propre boite a outils de geek dans sa poche.

Creative Commons License photo credit: Locator

Pour cela, on peut :

  • télécharger un OS Live existant comme celui d’Ubuntu, DSL (Damn Small Linux) ou autre
  • créer son propre OS from scratch
  • partir d’un OS Live existant et le customizer

La première solution est évidemment la plus simple et la plus rapide, mais ne permet pas de pré-configurer le système.

La seconde solution est la plus complète de toutes, mais nécessite de longues heures de compilation.

La troisième est un excellent compromis entre les 2 autres solutions et est celle que nous allons détailler dans ce sujet…

Catégories
Developpement Open-source

Tutorial jQuery

Jquery logojQuery est une bibliothèque javascript open-source et cross-browser qui permet de traverser et manipuler très facilement l’arbre DOM de vos pages web à l’aide d’une syntaxe fortement similaire à celle d’XPath (qui est la syntaxe de manipulation d’arbre XML). jQuery vous permet par exemple de changer/ajouter une classe CSS, créer des animations, modifier des attributs, etc. mais également de gérer les événements javascript ainsi que de faire des requetes AJAX le plus simplement du monde.

Pour développer jQuery, il suffit de connaitre un seul objet référencé par la variable « $ ». Cet objet est en fait une fonction javascript qui est le point d’entrée de tout le framework, et dont le retour est l’object « $ » lui-meme (dont le contexte dépend de la fonction appelée) ce qui permet d’enchainer facilement et rapidement des actions (comme nous le verrons dans les exemples qui suivent).

Maintenant que les présentations sont faites, passons sans attendre aux exemples !

Tout d’abord, jQuery peut etre téléchargé ici sous forme d’un fichier .js normal ou compressé : http://jquery.com.Une fois téléchargé, il suffit de l’insérer entre les balises <head> et </head> de vos pages html.

Exemple : <script type= »text/javascript » src= »jquery-1.2.2.min.js »/>Quelques bases sur la sélection…

  • $(« p »);
    Cet appel retourne tous les éléments P (paragraphes) de votre document : on a rarement fait plus simple.
  • $(« .tata »);
    Cet appel retourne tous les éléments de votre document qui ont la classe CSS « tata ».
  • $(« #toto »);
    Cet appel retourne l’élément de votre document, s’il existe, dont l’attribut ID est « toto ».
  • $(« #titi > span »);
    Cet appel retourne tous les éléments SPAN contenus dans l’élément dont l’identifiant est « titi ». On pourrait écrire cet appel de cette façon également : $(« span », $(« #titi »));
  • $(« table#tutu > tr:even »);
    Cet appel retourne tous les éléments TR pairs (pour les lignes impaires remplacer « even » par « odd ») contenus dans l’élément TABLE dont l’identifiant est « tutu » (à noter la grande originalité des noms que je donne a mes identifiants…). Cet appel peut etre extremement utile pour appliquer une couleur de fond a toutes les lignes paires par exemple.

A partir de la, vous pouvez appliquer toutes les fonctions de jQuery que vous voulez. En voici quelques exemples concrets (cliquez ici pour télécharger les exemples d’appels jQuery du tutorial et les jouer chez vous) !

  • $(« p »).addClass(« bluebg »);
    Cet appel va chercher tous les éléments P de votre document et leur ajouter la classe CSS nommée « bluebg » si ils ne la possèdent pas déjà.
  • $(« p »).removeClass(« bluebg »);
    Cet appel retire la classe « bluebg » des éléments P du document.
  • $(« p »).toggleClass(« bluebg »);
    Cet appel va alterner les fonctions « addClass » et « removeClass » vues précédemment.
  • $(« p:odd »).css(« border », « 5px solid black »);
    Cet appel va ajouter une bordure noire de 5px d’épaisseur a tous les éléments P impairs.
  • $(« a[href=http://www.google.fr] »).css(« font-weight », « bold »).css(« color », « red »).css(« background-color », « green »);
    Cet appel va transformer tous les liens pointant vers le site http://www.google.fr, comme celui-ci : google.fr c’est par ici !
  • $(« p#testAppend > span »).append(« Hello World ! »);
    Cet appel va ajouter du texte a la balise SPAN contenu dans l’élément P dont l’identifiant est « testAppend ».

Quelques effets sympas maintenant !

  • $(« #testAnim »).show(« slow »);
  • $(« #testAnim »).hide(« normal »);
  • $(« #testAnim »).slideDown(500);
  • $(« #testAnim »).slideUp(200);
  • $(« #testAnim »).toggle();
  • $(« #testAnim »).fadeIn();
  • $(« #testAnim »).fadeOut();

Si jamais vous trouvez que la bibliothèque jQuery propose peu d’animation, sachez qu’il est possible de rajouter des plugins ! Voici une petite liste de plugins très intéressants :

  • Interface est certainement le plugin le plus connu : il ajoute énormément d’animations a jQuery. Allez voir la page d’exemples ici
  • ThickBox permet de faire des « popup » html (pour faire des galeries d’images par exemple)
  • UI Datepicker permet de créer des calendriers très simplement
  • etc.

Voila, c’est fini pour cette petite introduction a jQuery. Voici quelques liens qui vous seront certainement utiles :

Bon développement !NDNicolargo: Merci à Ritchi, maître-es développeur pour ce billet !

Catégories
Open-source Web

Liferay Portal – Open Source

Liferay est un portail J2EE open source conforme à la norme JSR-168 de sun, et tournant sur la majorité des serveurs d’applications existants.
Liferay en est à sa 8e année de développement, et utilise les dernières technologies J2EE de pointe telles que Spring, Struts, JSF, Hibernate, Ajax, Velocity, WSRP et bien d’autres.

Avant de présenter le produit, voyons ce qu’est un portail:

Un portail est une application web dont le rôle est d’aggréger sur une ou plusieurs pages des ressources et services différents (centrés sur un domaine particulier), tout en fournissant un système de sécurité permettant de gérer les permissions de ses différents utilisateurs et groupes d’utilisateurs. Les ressources ou services qui sont fournis par le portail sont matérialisés par ce que l’on appelle des ‘Portlets‘: ce ne sont en fait simplement que des applications web J2EE ayant la seule particularité d’être conformes à la specification JSR-168.

Un utilisateur connecté au portail peut disposer d’un espace privé (qu’il retrouve a chaque connexion) sur lequel il peut organiser ses applications favorites (des Portlets donc) sur une ou plusieurs pages.

L’administrateur peut, grâce au système de sécurité, restreindre l’accès à certains portlets (ou fonctionnalités d’un portlet) à certains utilisateurs ou groupes d’utilisateurs du portail par exemple.

A titre d’exemple, Google offre un portail personnalisable a chaque utilisateur accessible en cliquant sur le lien ‘Personnaliser cette page‘ sur le site du moteur de recherche. On arrive alors sur une page nous donnant la possiblité d’ajouter ou de supprimer des informations (présentées sous forme de Portlet) mais aussi des les réorganiser sur la page.

Parlons de Liferay maintenant !

Liferay est donc un projet OpenSource, développé par une communauté assez active (une mise a jour majeure tous les 3 mois environ), et disponible sur le site http://www.liferay.com.
Le portail est disponible sous 2 formes:
– une version Professional étant une application web POJO (Plain Old Java Object) exécutable directement sur une instance de conteneur web J2EE (Tomcat par exemple) et ne comportant donc aucun EJB
– une version Enterprise étant une application web exécutable directement sur une instance de conteneur d’EJB (JBoss par exemple)

La version Professional est un bon point de départ pour tester: elle est disponible en téléchargement, sous forme d’application complète avec le serveur intégré et configuré (ici pour Tomcat), ou sous forme de fichier WAR ou EAR. Les sources du portail sont bien entendu aussi disponibles sur la page de téléchargement.

Liferay est compatible avec tous les SGBD existants (grâce a l’utilisation du framework Hibernate), et s’exécute par défaut avec le SGBD embarqué HSQLDB.

Une fois le serveur lancé, on arrive sur la page d’accueil:

Toutes les pages disponibles pour le moment appartiennent à la communauté des ‘Invités’ vu qu’aucune connexion n’est nécessaire pour les visualiser. Pour se connecter, cliquer sur le lien ‘Sign In‘ situé en haut a droite de la page. Entrer le login et mot de passe d l’administrateur par défaut:
  • login: test@liferay.com
  • password: test

Une fois connecté, nous sommes redirigés vers la communauté privée de l’administrateur contenant déjà plusieurs portlets. Dans cet ensemble de pages on peut, en cliquant sur la barre de titre des différents portlets, déplacer les portlets, les supprimer, en ajouter d’autres, etc.
En plaçant le pointeur de la souris sur l’icone présent dans le coin supérieur droit, on obtient la liste des actions disponibles sur la page courante.

En cliquant par exemple sur l’icone représentant un ‘+’, un menu apparait et permet d’ajouter sur la page courante les portlets disponibles sur le portail. On peut aussi gérer son compte ou changer la disposition des portlets sur la page (Layout), etc.
Si l’on veut revenir a la communauté des invités, il suffit de sélectionner ‘Guest’ dans le menu apparaissant lorsque l’on place le pointeur de la souris sur l’icone représentant un panneau de direction. D’autres communautés existent et peuvent être créées par le biais du portlet ‘Communities’.

Liferay est livré avec beaucoup de portlets plus ou moins utiles. Les plus intéressants sont:

  • Journal
    permet d’écrire des articles et de les publier grâce au portlet Journal Content, mais aussi de générer un flux RSS par exemple.
  • Message Boards
    un forum avec abonnement et génération de flux RSS également
  • Wiki, Blogs
  • Polls
    pour faire des sondages
  • IFrame
    pour afficher un site ou une page externes dans un portlet (par exemple essayez avec google.fr !)
  • Calendar
    un calendrier avec gestion des évenements (par mail, RSS, etc)
  • … et bien sur tous les portlets d’administration du portail !
Et l’on peut bien entendu rajouter ses propres portlets grâce au système d’autodeploy qui permet de les rajouter à chaud (c’est à dire sans redémarrer le serveur !).

Pour terminer, je parlerai de quelques fonctionnalités de Liferay très intéressantes lorsque l’on veut l’utiliser en entreprise:

  • Liferay dispose d’un mécanisme permettant d’une part d’intéragir avec le LDAP de l’entreprise lors de l’étape de login, mais aussi de synchroniser les groupes du LDAP dans le portail !
  • Liferay fournit les connecteurs pour intéragir avec un système de SSO (Single Sign On) tel que CAS. Typiquement, le SSO est utile si l’on dispose de 2 applications web différentes ayant chacune leur système d’authentification propre et que l’on veut faire en sorte que le fait de s’authentifier sur l’une nous authentifie automatiquement sur l’autre (donc on ne se Logge qu’une seule fois).
Voila j’espère que cette petite introduction vous aura convaincu de la puissance d’un portail web et spécifiquement de Liferay, de la valeur ajoutée et du gain de temps que cela peut apporter à une entreprise qui doit se créer un intranet.