Introduction à Drush: Installation et gestion des modules

L’outil Drush est à Drupal ce que Rake est à Rails: Un outil de gestion en ligne de commande très pratique et qui permet d’économiser beaucoup de temps.

La dernière version ne se trouve pas dans les dépots d’Ubuntu 10.04, vous allez devoir récupérer le .deb de Debian qui se trouve ici: http://packages.debian.org/fr/squeeze/all/drush/download

Installez le package normalement. Après l’installation, vous pouvez utiliser la commande Drush. En lançant simplement la commande sans la moindre option, vous obtiendrez la liste des commandes.

Dans cette liste des commandes, vous pouvez voir l’exemple suivant:

drush dl cck zen Download CCK module and Zen theme.

En effet, la commande drush pm-download ou son raccourci drush dl permet de télécharger directement des modules et des thèmes se trouvant sur le site de Drupal.org. Si vous faites la commande drush help dl, vous verrez que cette commande permet déjà de faire beaucoup de choses. Mais pour le moment, je vais simplement vous présenter le téléchargement et l’activation des modules pour votre site drupal. Via le prompt, placez vous là où se trouve le fichier settings.php de votre site. Nous allons installer les modules cck sur le site Drupal. Dans un premier temps, il faut télécharger ce module:

calysto@GUNNM:/var/www/site_drupal/sites/default$ drush dl cck
Project cck (6.x-2.9) downloaded to [success]
/var/www/site_drupal/sites/all/modules/cck.

Après l’avoir téléchargé, on voudrait activer le module Content. Pour cela, il faut utiliser la commande drush pm-enable ou drush en comme ceci:

calysto@GUNNM:/var/www/site_drupal/sites/default$ drush en content
The following projects will be enabled: content
Do you really want to continue? (y/n): y
content was enabled successfully. [ok]

Sachez que si vous désirez activer un module dépendant d’autres non activés mais présent dans le projet, il va vous demander s’il peut aussi les activer.

calysto@GUNNM:/var/www/site_drupal/sites/default$ drush en nodereference
The following projects will be enabled: text, optionwidgets, nodereference
Do you really want to continue? (y/n): y
nodereference was enabled successfully. [ok]
optionwidgets was enabled successfully. [ok]
text was enabled successfully. [ok]

Cette commande vous permet donc d’installer facilement et rapidement de nombreux modules. Si vous désirez désinstaller des modules, il vous faudra procéder en 2 étapes. D’abord désactiver le module pour qu’il ne soit plus utilisé sur votre site puis le désinstaller pour supprimer variables et tables qui y sont lié. La désactivation est aussi intéressante si vous désirez garder les données d’un module sans que celui soit encore utilisable. Pour désactiver un module, il faut utiliser la commande drush pm-disable ou son raccourci drush dis comme ceci:

calysto@GUNNM:/var/www/site_drupal/sites/default$ drush dis content
The following projects will be disabled: content, nodereference, optionwidgets, text
Do you really want to continue? (y/n): y
content was disabled successfully. [ok]
nodereference was disabled successfully. [ok]
optionwidgets was disabled successfully. [ok]
text was disabled successfully. [ok]

En désactivant un module dont dépendent d’autres modules, vous les désactiverez en même temps. Pour désinstaller complètement un module, il faut lancer la commande drush pm-uninstall comme ci-dessous:

calysto@GUNNM:/var/www/site_drupal/sites/default$ drush pm-uninstall content
The following modules will be uninstalled: content
Do you really want to continue? (y/n): y
content was successfully uninstalled. [ok]

Même si d’autres modules sont dépendants de content, il sera le seul désinstaller.

Voilà, je pense faire d’autres tutoriels pour cette commande plus tard, vous avez déjà de quoi vous faciliter la vie avec ces quelques commandes.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Activation de clean url dans Drupal

Clean url est un module de Drupal qui permet les urls de votre site de façon simplifier en retirant la directive « ?q= ». Ceci permet de faire des urls plus simple à écrire et à lire et est indispensable pour le fonctionnement de certains modules. Pour activer clean url dans Drupal, il faut d’abord régler certaines choses dans Apache2.
Dans un premier temps, il faut activer le module rewrite dans apache2. Ce module s’active de façon simple:

sudo a2enmod rewrite

Si vous désirez le désactiver pour une raison ou une autre, la commande est également simple:

sudo a2dismod rewrite

Une fois le module activé, il faut faire une modification dans votre vhost pour que apache2 reconnaissent les fichiers .htaccess. Par défaut dans apache2, le fichier qui gère votre vhost est dans /etc/apache2/sites-available et se nomme default. Éditez le avec les droits administrateurs, il devrait contenir ceci:

‹VirtualHost *:80 ›

ServerAdmin webmaster@localhost
DocumentRoot /var/www
‹Directory /›

Options FollowSymLinks
AllowOverride None

‹/Directory›
‹Directory /var/www/›

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

‹/Directory›

Dans le fichier, la ligne

AllowOverride None

indique qu’aucune commande contenu dans les .htaccess du dossier ne seront interprété. Et cela est vrai pour tous les dossiers en dessous sauf directive contraire. Pour activer l’interprétation des .htaccess pour notre site Drupal, il faut donc donner les bons paramètres dans le dossier contenant le site. J’ai donc rajouté ceci dans le fichier default à la suite des directives précédemment affichées:

‹Directory /var/www/site_drupal›

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all>

‹/Directory›

Il faut ensuite recharger les données d’apache, soit avec la commande

sudo /etc/init.d/apache2 reload

qui permet de recharger les données sur les modules et les sites ou avec la commande

sudo /etc/init.d/apache2 restart

qui permet de purement et simplement de redémarrer apache2 (plus violent si vous avez des sites qui tournent sur votre serveur, vous couperez leur fonctionnement)

Après ces différents paramétrages, vous devriez pouvoir démarrer le module Clean Url dans Drupal. Si toute fois cela ne fonctionne pas, vérifiez que votre Drupal a bien un fichier .htaccess à sa base. Il y en a un par défaut mais comme il s’agit d’un fichier caché, il se peut qu’il n’est pas été prit en compte si vous avez copier-coller les fichiers contenus dans le dossier de Drupal pour les mettre à la racine de votre site.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Installation de Minecraft sous Linux

Petit tutoriel d’aide pour lancer Minecraft sous Linux et plus précisément sous Ubuntu. En effet, même si Minecraft est en java et que le logiciel est censé fonctionner sous n’importe quel système, la réalité n’est pas aussi idyllique que la théorie.

Pour commencer, sachez que Minecraft ne fonctionne pas avec openjdk, la version 100% libre de Java qui est dans les dépots de base. Comme précisé sur le site de Minecraft, vous devez utiliser la version de Java de Sun Oracle qui elle n’est pas totalement libre. Pour pouvoir l’installer, vous devez d’abord ajouter le dépot où l’on peut trouver les packages. Dans Ubuntu, ses dépots sont les dépots partenaires.

Pour les rajouter via l’interface graphique, allez dans:

Système -> Administration -> Gestionnaire de paquets Synaptic -> Configuration -> Dépôts -> Autres logiciels

et sélectionnez « http://archive.canonical.com/ubuntu lucid partner » (ou une autre version si vous n’avez pas celle-ci)

Rafraichissez la liste des packages et installez les packages suivant:
sun-java6-jre sun-java6-plugin

La ligne de commande pour cette installation est:

sudo apt-get install sun-java6-jre sun-java6-plugin

Une fois ces paquets installés, si vous pensez avoir d’autres version de Java, il faut indiquer au système quelle version utiliser. Pour cela, lancer la commande:

sudo update-alternatives ––config java

et sélectionnez le numéro de la version java de Sun.

Par la suite, allez dans le dossier où se trouve le fichier jar de minecraft, faites clique droit sur le fichier et sélectionnez « Ouvrir avec Java 6 Runtime ».

Vous pouvez aussi lancer le jeu en ligne de commande, cela vous permettra d’avoir plus de détails sur le résultat de l’exécution (en cas de crash notamment) :

java -jar minecraft.jar

ou

java -cp minecraft.jar net.minecraft.LauncherFrame

Si vous obtenez une erreur de mémoire, lancez la commande:

java -Xmx1024M -Xms512M -cp Minecraft.jar net.minecraft.LauncherFrame

Pour ceux qui se le demande, l’option -Xmx1024M indique à Java d’utiliser au maximum 1024Mo de RAM tandis que l’option -Xms512M indique à Java de s’allouer de base 512Mo de RAM.

Normalement, Minecraft devrait enfin pouvoir se lancer et fonctionner. Pour plus de détails, vous pouvez aussi vous référer à la page du site français d’Ubuntu.

Remarque: Ce poste était anciennement la première partie de cet article. Je l’ai séparé pour alléger la lecture.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

L’erreur de la mort de Call of Duty Modern Warfare 2

L’erreur va probablement être corrigé dans les jours prochains mais je fais quand même un poste histoire de débloquer le jeu pour ceux qui veulent jouer avant le patch.

Depuis la nouvelle mise à jour du jeu, vous avez probablement rencontré cette sublime erreur:

Couldn’t load image ‘gamefonts_pc’

ou

Couldn’t load image ‘specialty_new_nonenglish’

C’est parce que la nouvelle mise à jour ne prend vraisemblablement pas en compte la localisation, que vous avez autre chose que de l’anglais et qu’elle va chercher les fichiers anglais qui n’existe justement pas. Alors vous allez devoir renommer des fichiers.

Allez dans Program Files\steam\steamapps\common\call of duty modern warfare 2\main
Vous y trouverez les fichiers
localized_french_iw00.iwd
localized_french_iw01.iwd
localized_french_iw02.iwd

Et bien il ne vous reste plus qu’à renommer vos 9 fichiers en
localized_english_iw00.iwd
localized_english_iw01.iwd

Bref, du gros patch comme on aime, surtout quand on a payé son jeu à 60$.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Apache sous Windows ne veut pas se lancer

Peut être avez vous rencontré ce bogue récemment sous Wamp. En tentant d’exécuter des pages php sous wamp, vous n’obtenez que des pages blanches et le service d’apache n’arrive pas à se lancer.

Pour vérifier que apache est bien lancé, dans l’interface de wamp, vous devez vérifier les états de son service comme l’image si dessous:
Interface du lancement de service d'Apache
Si vous n’arrivez pas à lancer ce service et que vous avez skype en fonctionnement, alors la solution à votre problème est peut être toute simple.

En effet, skype, pour pouvoir être utilisé même sur un réseau où la plupart des ports auraient été bloqué, peut utiliser le port 80. C’est logiquement le port utilisé par http et donc le même port utilisé par apache qui ne peut alors plus se lancer correctement. Pour régler ce soucis, dans les options de Skype, allez dans Avancées puis Connexions et décochez la case « Utilisez les ports 80 et 443 comme alternatives ». Redémarrez Skype et testez le démarrage d’apache après. Le service devrait se lancer et votre serveur Wamp pourra fonctionner correctement.

Je ne sais pas si cette erreur est aussi présente sous GNU/Linux par contre.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Minecraft sous Linux: Carte ATI et Wine

Si vous êtes le malheureux possesseur d’une carte graphique ATI, vous risquez d’avoir un problème en voulant lancer Minecraft, le jeu va freezer voir crasher au moment du chargement de la carte. Si vous avez une carte NVidia, vérifiez que vous avez correctement installé les drivers de votre carte graphique. Normalement, les drivers propriétaires fournis par NVidia sont de bonnes qualités. Mais ce n’est pas toujours le cas des drivers ATI et de nombreuses personnes rencontres des problèmes avec. Et ces problèmes touchent énormément Minecraft (sous Windows également d’ailleurs). Si c’est le cas, une nouvelle galère s’offre à vous et là, vous avez 2 solutions:
- Installer les drivers non officiel de votre carte si ceux de Catalyst sont moins performants. Pour cela, il faut qu’ils prennent en compte l’accélération 3D. Cette solution n’est pas forcément évidente, vous avez des risques de détruire votre interface graphique si vous n’y allez pas en toute connaissance de cause. Je vous conseille de vous référez à cette page pour plus de détails: The open source ATI drivers (en anglais)
- L’autre solution consiste à faire tourner Minecraft avec… wine. Oui, c’est très ironique de devoir émuler la version Windows d’un programme Java sous Linux mais dans mon cas, c’est la seule solution que j’ai trouvé.

Je vais donc expliquer la solution avec Wine. Pour ceux qui ne connaissent pas Wine, il s’agit d’un logiciel qui émule un environnement Windows sous Linux. Il permet donc d’utiliser un certain nombre de logiciel qui ne sont normalement compatible qu’avec Windows, y compris des jeux (mais ne rêvez pas, vous ne ferez pas tourner tout et n’importe quoi en un claquement de doigt). Pour commencer, il vous faut installer wine:

sudo apt-get install wine

Ensuite, vous devez télécharger Java pour Windows sur le site de Java.

Une fois le fichier récupéré, vous ne pouvez pas l’exécuter comme ça, vous devez donner un droit d’exécution dessus. Faites la commande:

chmod a+x jre-6u24-windows-i586-s.exe

Vous pouvez ensuite l’exécuter ainsi:

wine jre-6u24-windows-i586-s.exe

Une fenêtre devrait s’ouvrir. Suivez les étapes d’installation comme sous Windows. Précision: Contrairement aux vieilles versions de java, il n’est pas nécessaire de modifier le fichier system.reg de Wine pour que celui-ci reconnaisse Java. Vous pouvez quand même tester que java a bien été installé via la commande:

wine java -version

Enfin, téléchargez le fichier Minecraft pour windows et dans le dossier où se trouve l’exécutable, exécutez la commande:

wine Minecraft.exe

Si vous êtes aussi chanceux que moi, vous aurez peut être droit à cette erreur:

Error occurred during initialization of VM
Could not reserve enough space for object heap.

Cette erreur est dû à un problème de mémoire, Java voulant s’octroyer plus de mémoire que le système ne peut en offrir. Si vous avez ce même soucis, une des solutions consisterait à utiliser Linux en 64bits étant donné que Linux ne peut pas utiliser plus de 4Go de Ram théoriquement en 32bits. Pour cela… il faut formater votre système pour installer une version 64bits de votre OS. Je me demande tout de même si ça n’est pas un soucis de Java étant donné que celui installé pour Linux ne me pose aucun problème et qu’il a tout de même plus de 3Go de libre au moment de l’exécution ce qui est largement assez pour minecraft.

En insistant un peu, vous devriez peut être le lancer. Pour ma part, je fini par obtenir l’erreur suivante:

#
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (0xc0000194), pid=47, tid=60
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# C [ntdll.dll+0x24b5a]
#

ainsi qu’un fichier de log. N’ayant pas trouvé de solution pour ce problème, j’ai testé une autre technique plus tordue encore: Lancer le fichier jar de minecraft avec la version java installé sur wine.

Pour cela, dans le dossier où se trouve le fichier jar, exécutez la commande suivante:

wine java -jar minecraft.jar

N’exécutez pas les options -Xmx1024M et -Xms512M si vous avez l’erreur « Could not create the Java virtual machine », vous aurez une erreur mémoire (pour ma part, même en insistant, il n’a jamais voulu lancer le jeu avec ces options)

calysto@GUNNM:~/Téléchargements$ wine java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

Insistez avec la commande (sans les options -Xmx et -Xms), le jeu devrait finir par se lancer.

Fenêtre de jeu de Minecraft

Si vous n’avez pas de son, dans les options Audio de wine, ajoutez des pilotes (personnellement, j’en ai ajouté un peu au hasard en testant). il est possible que le son arrive au bout de quelques secondes. Le dossier .minecraft se trouve dans le dossier Application Data dans l’arborescence de wine.

Vous pouvez maintenant jouer. Sachez tout de même qu’au bout d’une heure et quelques, la mémoire peut saturer et java crasher. Il vous faudra relancer l’application. Enfin, sachez que si vous désirez jouer sous Linux, préférez une carte NVidia à une ATI, vérifiez aussi la compatibilité matérielle. Et ne vous leurrez pas, pour jouer à une majorité de jeux, la meilleure solution reste d’utiliser Windows.

Remarque: Ce poste a été coupé en deux. La première partie du tutoriel expliquait comment installer Minecraft sous GNU/Linux, il se trouve maintenant ici. Pour ma part, depuis la mise à jour de mon kernel et de mes drivers de carte graphique, Minecraft ne se lance plus correctement d’aucune façon. A moins d’une nouvelle mise à jour me débloquant, il n’y aura plus de tuto pour Minecraft sous Linux avant un bon moment.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Compiler la librairie Qt sous un Windows x64 avec Visual Studio 2008

Pour compiler la librairie Qt sous un Windows x64 avec Visual Studio 2008, la manipulation peut être particulière. En effet, en compilant cette librairie, vous pouvez rencontrer cette erreur:

fatal error U1077: ‘C:/Qt/2010,04/qt/bin/moc.exe’: return code ‘0×1’

Pour remédier à ce problème, vous pouvez tenter les actions suivantes. Après avoir téléchargé la librairie, ouvrez le prompt de Visual Studio 2008 en version x64 (VS2008 x64 win64 Command Prompt), Dans le répertoire de Qt, lancez tout d’abord un clean:

nmake clean

Cela permet de supprimer tout fichier qui pourrait compromettre votre installation. Et même si vous venez de télécharger le dossier, n’hésitez pas à le faire pour être certain qu’aucun fichier malencontreux ne viendra faire échouer 4h de compilation.

Après la fin de votre clean, lancez la configuration avec les options suivantes.

configure -debug-and-release -opensource -shared -platform win32-msvc2008

Il n’existe pas d’option pour compiler votre librairie en x64, vous devez donc obligatoirement compiler en win32.

Après la fin de la configuration et avant de lancer la compilation, vous devez d’abord supprimer plusieurs fichiers du nom de mocinclude.tmp qui sont soudainement apparu dans plusieurs dossiers et qui sont vraisemblablement responsables de vos échecs. Supprimez donc tous les fichiers mocinclude.tmp dans les dossiers suivant :

src/script/tmp/moc/release_shared/

src/script/tmp/moc/debug_shared/

src/3rdparty/webkit/webcore/tmp/moc/release_shared/

src/3rdparty/webkit/webcore/tmp/moc/debug_shared/

Vous pouvez enfin lancer la commande nmake et vous occuper 4h le temps de la compilation.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Gestion de la DropDownList en ASP.NET MVC2

Le Framework MVC2 de ASP. NET permet de créer des sites web en utilisant MVC. Avec cette architecture, la création du visuel est un peu particulière et pas forcément intuitive pour quelqu’un n’ayant jamais travaillé sur un framework MVC. Ici je vais expliquer comment créer une liste déroulante à partir de données provenant de la base et avec une liste fixe.

Pour la création d’une DropDownList avec des données de la base de données, ayons déjà un exemple de base de données. Un système de gestion pour une ludothèque par exemple : Une table Jeu (Games) à un et un seul développeur (Developers). Un développeur peut avoir fait plusieurs jeux.

Tables Game et Developers

Si le CRUD de Developers est basique, il est un peu différent pour Games. En effet, pour indiquer le développeur du jeu lors de la création et de l’éditeur, on ne va pas entrer le nom à la main dans une TextBox : Entrer un Id à la main n’a aucun sens et si c’était le nom qui était demandé, les erreurs possibles seraient trop nombreuses (fautes de frappe, entrée d’un développeur qui n’existe pas dans la base, etc). On va donc utiliser une liste déroulante dans les vues « create » et « edit » de Games pour permettre de sélectionner un développeur parmi ceux qui sont dans la base.

Pour cela, on va d’abord récupérer le contenu de la table Developers et afficher ce qui nous intéresse. On enregistrera ensuite l’Id du développeur sélectionné dans la table Games pour la clé étrangère developers_id.

Regardons d’abord le controller pour modifier la fonction en GET de create de Game :

GamesController.cs :

// GET: /Games/Create

public ActionResult Create()

{

MyBaseDataContext db = new MyBaseDataContext();
ViewData["Developers_Id"] = new SelectList(db.Developers, « Id », « Name »);
Game game = new Game();
return View(game);

}

Au moment de la création de la vue « create », en plus d’envoyer un nouvel objet Game pour remplir ces différents attributs, on va également envoyer une SelectList contenant tous les objets de la table Developers via une ViewData. Lors de la création de la liste, on indique que les valeurs sont les Id des objets et le texte qui apparaitra dans la DropDownList sera le « Name ». Pour ce qui est de la variable db, elle peut être déclarée en haut de la classe si vous le désirez.

Modifions maintenant la vue Create. Là où l’on doit remplir les informations sur le développeur :

<div class= »editor-label » >

<%: Html.LabelFor(model => model.Developers_Id) %>

</div>

<div class= »editor-field » >

<%= Html.DropDownList(« Developers_Id »)%>

</div>

La DropDownList va vous permettre d’afficher la liste des noms des développeurs. Pour cela, on appelle implicitement la ViewData « Developers_Id ». Au moment de la validation, le système va récupérer l’Id du développeur. Etant donné quel’objet Html a le même nom de l’attribut de l’objet, il sera insérer dans l’attribut developers_Id de l’objet.

Maintenant, comment gérer l’édition pour que le développeur de l’objet qu’on édite soit sélectionné par défaut dans la DropDownList ?

Dans le controller de Game, modifions la fonction GET de « edit » :

// GET: /Games/Edit/1

public ActionResult Edit()

{

Game game = new Game();
MyBaseDataContext db = new MyBaseDataContext();
ViewData["Developers_Id"] = new SelectList(db.Developers,
« Id »,« Name »,
game.Developers_Id);
return View(game);

}

Ici, on récupère le contenu de la table Developers pour le mettre dans une SelectList de la même manière que dans le create. La différence est le nouveau paramètre « game.Developers_Id ». Cela permet d’indiquer dans le constructeur de la SelectList que la valeur sélectionnée est égale à developers_Id.

Pour la vue edit, le code est le même que pour la vue create :

<div class= »editor-label » >

<%: Html.LabelFor(model => model.Developers_Id) %>

</div>

<div class= »editor-field » >

<%= Html.DropDownList(« Developers_Id »)%>

</div>

Vous savez maintenant réaliser une liste déroulante avec des données de la base.

Maintenant, comment réaliser une DropDownList avec des données fixes non issues de la base. Prenons un exemple simple, une table Persons. Une personne a un prénom, un nom et un sexe.

Table Persons

Pour le sexe, vous n’allez pas créer une table pour la remplir des différentes possibilités ni remplir le sexe à la main via une TextBox(toujours trop de possibilité d’erreur entre les mots pouvant être employés et les fautes de frappe). On va donc créer une liste avec 3 choix possibles : « Non renseigné », « Femme », « Homme ».

Modifions d’abord la fonction GET du create dans le PersonsController.cs :

// GET: /Persons/Create

public ActionResult Create()

{

List<SelectListItem> items = new List<SelectListItem>();

items.Add(new SelectListItem
{

Text = « Non renseigné »,
Value = « Non renseigné »,
Selected = true

});
items.Add(new SelectListItem
{

Text = « Femme »,
Value = « Femme »

});
items.Add(new SelectListItem
{

Text = « Homme »,
Value = « Homme »

});
ViewData["Sex"] = items;
Person person = new Person();
return View(person);

}

On crée une List<SelectListItem> contenant nos éléments sous la forme de SelectListItem. Le « Text » sera ce qui est affiché dans la DropDownList, « Value » sera ce qui est récupéré si la donnée est sélectionnée, « Selected » indique si c’est cette donnée sélectionnée. On envoie ensuite cette liste à la vue avec un ViewData.

La vue Create se présente comme précédemment :

<div class= »editor-label » >

<%: Html.LabelFor(model => model.Sex) %>

</div>

<div class= »editor-field » >

<%= Html.DropDownList(« Sex »)%>

</div>

Ensuite, pour l’Edit, la modification est légèrement différente :

// GET: /Persons/Edit/1

public ActionResult Edit()

{

Person person = new Person();
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem
{

Text = « Non renseigné »,
Value = « Non renseigné »,
Selected = (person.Sex == « Non renseigné »)

});
items.Add(new SelectListItem
{

Text = « Femme »,
Value = « Femme »,
Selected = (person.Sex == « Femme »)

});
items.Add(new SelectListItem
{

Text = « Homme »,
Value = « Homme »,
Selected = (person.Sex == « Homme »)

});
ViewData["Sex"] = items;
return View(person);

}

La seule différence est au niveau du Selected. On teste si le sexe de la personne correspond. On sait que si c’est le cas, la variable sera mit à True. Il suffit enfin d’afficher dans la vue Edit de la même manière que précédemment :

<div class= »editor-label » >

<%: Html.LabelFor(model => model.Sex) %>

</div>

<div class= »editor-field » >

<%= Html.DropDownList(« Sex »)%>

</div>

Et vous avez enfin fini de créer vos DropDownList.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

Installation de Ruby On Rails sous Ubuntu

Ruby On Rails est un framework MVC basé sur Ruby afin de réaliser des sites web. Si l’installation n’est pas très complexe, il faut bien comprendre comment cela fonctionne.

Dans un premier temps, il faut installer les packages ruby et ruby-dev qui permettent de réaliser du développement Ruby. Vous pouvez sélectionner la version de Ruby que vous désirez installer. Sachez que le package ruby-dev est dépendant du package ruby, ils doivent donc être de la même version. Sachez également que si vous ne précisez pas la version, la version qui sera installer par défaut à l’heure où j’écris ses lignes sera la 1.8.7. Et enfin, vous pourrez trouver jusqu’à la 1.9.1 dans les dépôts par défaut de Ubuntu. Pour installer ces deux packages, rien de plus simple:

sudo apt-get install ruby ruby-dev

Pour permettre d’utiliser des protocoles sécurisés avec ruby, nous allons installer le package pour openssl. Il faut taper cette commande:

sudo apt-get install libopenssl-ruby

Après cette installation, vous devez installer un nouveau package un peu particulier: rubygems.
Rubygems est un programme qui permet d’installer des packages écris en Ruby appelés des gems. C’est aussi grâce à ce programme que l’on a la possibilité d’installer le framework rails. Pour installer Rubygems, il suffit simplement d’exécuter cette commande:

sudo apt-get install rubygems

Afin de pouvoir utiliser rubygems proprement et sans se compliquer la vie, il va falloir faire quelques modifications dans le fichier ~/.gemrc. Il est possible que ce fichier caché n’existe pas à votre dossier personnel. ça n’est pas grave, nous allons le créer et nous allons y ajouter une ligne pour préciser où doivent être installer les gems et aussi préciser à gems qu’il ne doit pas installer les docs (qui sont très longue à installer en plus d’être lourdes). Pour cela, ajouter simplement la ligne:

gem: ––bindir /usr/local/bin ––no-ri ––no-rdoc

En précisant que l’on doit installer les gems dans un dossier bin, cela vous permet d’utiliser les gems après installation sans modifier le $PATH. Vous pouvez installer les gems dans un dossier à part si vous le désirez mais sachez que vous devrez dans ce cas soit indiquer le chemin complet de l’application soit ajouter le dossier où se trouve les gems dans votre $PATH.

Enfin, nous arrivons à l’installation de rails. Rails est un package gem, d’où l’utilité de rubygems. Pour l’installer, rien de bien compliqué:

sudo gem install rails

A partir de là, vous avez installé Rails, mais cela ne signifie pas qu’il est encore utilisable: Il manque une base de données.

Pour réaliser une application en Rails, on peut utiliser différents types de bases de données sans que cela n’influence le code. La seule chose qui changera sera un fichier de configuration du nom de database.yml Il vous faudra par contre installer le gem de liaison entre la base de données et rails.

Pour cette exemple, nous allons utiliser une base de données MySQL. Pour cela, nous allons l’installer:

sudo apt-get install mysql-server

Au cours de l’installation, renseignez un mot de passe administrateur de votre choix. Lorsque l’installation est fini, il va falloir faire quelques configurations. Ces configurations ne sont pas pour Rails et sont à faire pour n’importe quel projet. En effet, actuellement, vous ne pouvez créer et utiliser les bases de données qu’avec l’utilisateur ‘root’. Cette utilisateur sert à la gestion de votre système MySQL, pas pour l’utilisation d’une base de données via un projet (en plus, vous donneriez le mot de passe root à tous vos développeurs ainsi, ça n’aurait plus rien de sécurisé). Afin d’utiliser la base de données de façon propre, nous allons donc créer un utilisateur et une base de données pour notre projet Rails.

Dans un premier temps, il faut se connecter à Mysql:

mysql -u root -p

Donnez votre mot de passe lorsqu’il vous le demande. L’option -u permet d’indiquer l’utilisateur avec lequel on désire se connecter au système. L’option -p indique que l’on va fournir un mot de passe. Cette option est inutile si l’utilisateur n’a pas de mot de passe. Ne l’oubliez pas dans le cas contraire ou votre connexion échouera.

Une fois connecté, on désire créer un nouvel utilisateur avec un mot de passe.

CREATE USER « my_user »@ »localhost » IDENTIFIED BY « password »;

Bien entendu, modifiez le nom de votre utilisateur « my_user » et son mot de passe « password » par ce que vous désirez. Pour ce qui est du localhost, tout dépend si vous désirez que la base de données soit accessible avec cette utilisateur via votre serveur directement ou depuis des ordinateurs distants. Vous pouvez indiquer le nom de l’ordinateur du réseau si vous désirez que l’utilisateur ne soit accessible que de ce poste, d’une adresse IP, d’un réseau, d’un domaine ou depuis n’importe quel ordinateur. Bon, cet article n’étant pas là pour décrire la configuration complète de MySQL et qu’il s’adresse aux débutants en Rails, je ne vais pas m’étendre dessus et si vous voulez en savoir plus, vous pouvez vous référer à la documentation de MySQL. Sachez simplement qu’en mettant « localhost », l’utilisateur ne sera accessible que si l’on s’y connecte depuis le serveur.

Ensuite, on désire donner des droits à cet utilisateur et indiquer sur quelle base. Pour cela, créons déjà la base que l’on va utiliser dans le projet Rails:

CREATE DATABASE MyDatabaseRails_Development;

Ici le nom que j’ai donné à la base est à rallonge, vous pouvez bien entendu lui donner le nom de votre choix. Sachez juste que dans un projet Rails, vous pouvez avoir 3 bases de données: Une pour la développement, une pour les tests et une pour la mise en production. Donnez leur un nom en conséquence pour ne pas vous tromper. La longueur importe peu (tant que vous ne dépassé pas la limite de MySQL), il sera nécessaire de ne l’indiquer qu’une seule fois dans le projet.

Une fois la base créée, on donne tous les droits à notre utilisateur sur cette base:

GRANT ALL ON MyDatabaseRails_Development.* TO « my_user »@ »localhost »;

Pour expliquer rapidement, cette ligne donne tous les droits (lecture, création, suppression, modification) à l’utilisateur « my_user » sur toutes les tables de la base « MyDatabaseRails_Development ». Si vous désirez modifier les droits de votre utilisateur de manière précise, je vous invite à vous rendre sur la documentation de MySQL. Une fois toutes ses modifications apportées, il manque encore le gem pour lier MySQL à Rails. On va donc l’installer. On installe d’abord le package qui permet de faire du développement avec MySQL:

sudo aptitude install libmysqlclient-dev

Puis on installe le gem permettant d’utiliser MySQL avec Rails:

sudo gem install mysql

Si vous désirez utiliser une autre base de données, il vous faudra installer le gem correspondant à la base. Référez vous au wiki de Rails pour cela.

Enfin, pour installer des pluggins en .git sur Ubuntu, il faut au préalable installer le package git-core. Git est un logiciel de version, comme cvs ou svn mais décentralisé contrairement à ces derniers. De nombreux plugins pour Ruby On Rails sont installable facilement via Git. Vous pourrez donc les installer simplement en utilisant une ligne de commande. Cela est surtout utile pour les plugins qui ne sont pas dans le dépôt officiel et que vous ne pouvez installer autrement qu’à la main en réalisant un copier-coller.

sudo apt-get install git-core

Enfin, pour une raison que j’ignore, le gem rake ne s’est pas installer lors de mon installation alors que je pensais qu’il l’était par défaut. Ce gem permet de gérer bon nombre d’actions, notamment au niveau de la base de données. Si lors du développement, vous rencontrez le même problème que moi, il vous suffit d’installer le gem rake:

sudo gem install rake

Voilà pour ce premier tutoriel pour l’installation de Ruby On Rails sur Ubuntu. J’espère que celui-ci vous aura aidé. Je ferais peut-être d’autres tutoriels pour la création de projet en Rails.

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn

La Libuntu (Ubuntu Party de Montréal), c’est fini

Et voilà, la Ubuntu Party de Montréal est finie. Ce fut un weekend constructif et bien rempli pour présenter Ubuntu et le Libre à tous les visiteurs. Fatiguant également. Au final, une centaine de personnes seront venues nous voir, des débutants et des moins débutants, venu assister aux conférences ou installer et tester Ubuntu. Le samedi a été un peu chaotique, les premières conférences ayant trop débordé nous avons dû fusionner la démonstration d’Ubuntu et l’accessibilité et annuler la présentation d’OpenOffice.org et Mozilla Firefox. Le processeur de l’ordinateur que nous utilisions pour présenter Ubuntu et son installation nous a lâcher en pleine conférence et on a dû finir sur une VM étant donné que j’utilise Fedora. Et faute d’avoir pu faire sa conférence OpenOffice.org, Ludovic aura improvisé un petit atelier crêpes qui aura eu son succès.
Le dimanche, malgré le manque de monde (maudit beau temps) qui nous a fait réorganiser les conférences, elles auront toutes eu lieu et auront toutes trouvé leur public. Et comme il fallait finir la journée en beauté, nous avons fait découvrir en plus un très bon bar aux personnes qui étaient restés jusqu’à la fin :)

Je voulais remercier par ailleurs toutes les personnes qui nous ont aidé à organiser cet évènement:
Aurélien bien sûr avec qui j’ai co-organisé.
Hayat et Claudette pour nous avoir permis d’utiliser les locaux de Supinfo et nous avoir conseillé.
Fabian Rodriguez pour nous avoir conseillé et aidé et nous avoir apporté des cds de la dernière version.
Tous les conférenciers: Fabian, Miguel, Ludovic, François, Joe, Thomas, Jean-François et Félix.
Les différentes personnes qui nous ont beaucoup aidé: Tristan, Laurent, Julie, Joe de nouveau ainsi que tous ceux qui était là pour le bon déroulement du weekend.

Je remercie aussi les visiteurs d’être venu et d’avoir été fort sympathiques :-)

Et pour la prochaine, on vous informe ;-)

Post to Twitter Post to Facebook Post to Google Buzz Post to LinkedIn