Christian KAKESA

Aller au contenu | Aller au menu | Aller à la recherche

lundi 9 février 2009

Installer acts_as_xapian sur DreamHost

Qu'est ce que Xapian ?

Xapian Logo
Xapian est un moteur de recherche Open Source, écrit en C++, qui permet grâce à des modules d'être utilisé dans des langages de script tel que Ruby mais bien d'autres aussi.
L'avantage de ce genre de moteur, est qu'il permet une recherche dite "Full text" et documentaire, car celui-ci s'appuie sur le langage naturel pour indexer les données. Globalement sur de gros volumes de données, il permet une catégorisation intelligente dans le but de remonter l'information la plus pertinente lors d'une recherche.

Voici une petite astuce pour installer acts_as_xapian sur un espace d'hébergement DreamHost.

Téléchargement des fichiers

Se connecter en SSH sur votre compte DreamHost et récupérer les sources du projet Xapian : xapian-core et xapian-biding.

mkdir -p ~/tmp/src
mkdir -p ~/opt/ruby_modules
cd ~/tmp/src
wget http://oligarchy.co.uk/xapian/1.0.10/xapian-core-1.0.10.tar.gz
tar -zxvf xapian-core-1.0.10.tar.gz
wget http://oligarchy.co.uk/xapian/1.0.10/xapian-bindings-1.0.10.tar.gz
tar -zxvf xapian-bindings-1.0.10.tar.gz

Compiler et installer Xapian

cd xapian-core
./configure --prefix=$HOME/opt
make && make install
cd ../xapian-bindings
./configure --with-ruby --prefix=$HOME/opt RUBY_LIB=$HOME/opt/ruby_modules RUBY_LIB_ARCH=$HOME/opt/ruby_modules XAPIAN_CONFIG=$HOME/opt/bin/xapian-config
make && make install

Une fois l'installation terminée, installer le plugin acts_as_xapian dans votre projet rails :

cd racine_de_mon_projet_rails
git clone git://github.com/frabcus/acts_as_xapian.git vendor/plugins/acts_as_xapian

Éditer ENSUITE, le fichier config/environment.rb et dans le bloc "Rails::Initializer.run do |config|" ajouter :

if ENV['RAILS_ENV'] == "production"
	config.load_paths += [ ENV['HOME'] + '/opt/ruby_modules' ]
end

Il est possible d'avoir un message comme quoi que Xapian n'est pas installer sur la machine mais tout fonctionne correctement.
Il ne vous reste plus qu'Ã suivre la documentation pour utiliser xapian dans vos models rails.

lundi 10 novembre 2008

RubySoul-NG, client NetSoul graphique

RubySoul-NG est un client graphique pour le protocol NetSoul qui permet aux étudiants du groupe IONIS de bénéficier des ressources réseaux partagées tels que Web, FTP, Imprimantes etc... Ce protocol permet aussi l'échange de messages instantanées, l'envoi d'alertes comme la réception d'un mail, d'un appel téléponique etc... Sans une connection au serveur NetSoul aucun étudiant ne peut accèder au réseaux informatique de l'école ; donc n'a accès à aucun service dans le parc informatique des étudiants (PIE).

RubySoul-NG tente de proposer tous ces services (ressources du PIE et messagerie instantané) et a pour but prochainement d'ajouter d'autres options comme l'envoi de fichier, le multi chat (muc) etc...

N'hésitez pas à me remonter vos commentaires pour améliorer les fonctionnalités de RubySoul-NG.

Voici quelques screenshots du client NetSoul écrit en ruby-gnome2...

mardi 21 octobre 2008

RubySoul Server, client NetSoul

RubySoul Server est un client d'authentification basé sur le protocol NetSoul.
Ce client ne sert qu'aux personnes ayant un accès dans le PIE des écoles du groupe IONIS, à savoir :

  • ETNA
  • EPITECH
  • EPITA
  • IPSA
  • ISBP
  • ...

Il permet une utilisation en mode daemon/service, sur un poste qui a besoin d'une connexion permanente au PIE des écoles du groupe IONIS.
Idéale pour les postes serveurs.

Liste des clients NetSoul existants :

dimanche 6 avril 2008

NetSoul sur freenode (IRC)

Pour tous ceux qui veulent des informations ou tout simplement parler du protocol NetSoul, venez échanger via le chan #netsoul-dev sur irc.freenode.net

Ce chan n'est pas officiel mais permet de réunir les étudiants ayant contribués à l'écriture d'un client NetSoul.

RubySoul, RubySoul-Server, RubySoul-NG sur google code

Etant donné que je termine ma scolarité dans moins 6 mois, j'ai décidé d'héberger les sources de mes clients sur des plateformes publiques dans le but de permettre aux étudiants motivés de continuer les développements.

Si vous voulez contribuer à l'amélioration de ces clients NetSoul n'hésitez pas à me rejoindre.

lundi 24 mars 2008

Clients NetSoul en ruby

J'ai maintenant 3 branches de client NetSoul écrit en ruby. Ce post permet d'eclaircir sur les différentes utilisations et fonctionnalités de chacun des clients.

Rubysoul-Server (console) RubySoul (shell console) RubySoulng (graphique)
Dépendances : ruby >= 1.8

RubySoul-Server permet uniquement l'authentification au serveur NetSoul, comprenant l'accès aux ressources du PIE.

Ce client convient parfaitement aux plateformes de type serveur ayant par example un tunnel VPN avec l'école.

Dépendances : ruby >= 1.8

RubySoul permet en plus de l'authentification d'autres possibilités :

  • Recevoir et envoyer des messages de messages instantanés à ces contacts.
  • Afficher la liste des contacts connectés, non connectés
  • Ajout, suppression de contact
  • Alertes emails, téléphonie VOIP

Etant admiratif du shell des routeurs cisco, à terme le shell rubysoul ressemblera aux shells cisco. Actuellement le shell est historisé, la touche TAB permet de connaitre les commandes possibles.

Ce client convient parfaitement aux plateformes dépourvus d'interface graphiques.


Rubysoul
envoyé par ckakesa

Dépendances : ruby >= 1.8 ; ruby-gnome2

RubySoulng est un client NetSoul graphique nécessite le package ruby-gnome2. Il intégre toutes les fonctionnalités de la version shell console. Ce client est beaucoup plus aisé à prendre en main.

Ce client convient sur toutes plateformes : station de travail, bureautiques etc..., muni d'une couche graphique.

dimanche 13 janvier 2008

RSOULng video de la version alpha 0.1.0 + photos

Voici une vidéo de la version actuellement en développement. Cette version est encore très jeune, les possibilités sont montré dans la vidéo.
Je serai prochainement en possession des spécifications officielles du protocole NetSoul ; à partir de là je pourrais faire une revue de code et implémenter correctement les fonctionnalités manquantes.

RubySoul-NG 0.1.0a en vidéo haute définition (HD)


RubySoul-NG 0.1.0a (vidéo HD) from Christian KAKESA on Vimeo.

Quelques photos

samedi 3 novembre 2007

Installer ruby sur Win32 pour utiliser les objects OLE sur une plateforme windows, un jeu d'enfant.

Téléchargement : http://rubyforge.org/frs/download.php/27227/ruby186-26_rc2.exe

Dans le but de piloter une application excel, j'ai du faire quelques recherches afin de mettre en place une plateforme windows(Vista)/ruby pour réaliser une application de facturation avec générant de pdf, etc...

Un exemple vaut mieux que de longs discours...
Télécharger le binaire ci-dessus. Une fois terminé, procéder à l'installation de ruby. A la fin de celui-ci, ouvrir un shell windows et tester les commandes suivantes :

$ irb
$irb> require "win32ole"
$irb> ie = WIN32OLE.new('InternetExplorer.Application')
$irb> ie.visible = true
$irb> ie.Navigate('http://www.kakesa.net', 1)
$irb> ie.quit
$irb> exit

Ceci n'est qu'un avant goût de ce qu'on peut réaliser avec cette technologie, que j'ai finalement reconnu la puissance malgré mes rétissances lorsque que j'ai du commencer ce projet.
Pour le début de mon projet un code de test avec excel donnerais basiquement ceci :

$ irb
$irb> require "win32ole"
$irb> xls = Win32OLE.new "Excel.Application"
$irb> xls.Visible = true
$irb> xls.quit
$irb> exit

On a ouvert Excel en ruby, y a plus qu'a chargé un fichier, puis récupérer des données externe tel que (données dans une base MySQL) puis les traiter dans le doc Excel...

Téléchargement : http://dev.mysql.com/downloads/mysql/5.0.html#win32, choisissez : Windows ZIP/Setup.EXE (x86).

Comment se connecter à une base de données MySQL ?
Tout d'abord récupérer sur le site de MySQL AB l'installeur automatique du serveur MySQL, lancer l'installation, lancer ensuite le wizard de configuration disponible dans "Tous les programmes/MySQL..." afin de définir l'utilisateur "root" ainsi que son mot de passe etc...
Ensuite nou pouvons installer le connecteur ruby de mysql :

$ gem search mysql --remote
$ gem install mysql

Le choix 1 devrait convenir....
Testons maintenant :

$ irb
$irb> require "mysql"
$irb> dbh = Mysql.real_connect "localhost", "login", "mdp", "db"
$irb> puts dbh.get_server_info
$irb> res = dbh.query "SHOW DATABASES"
$irb> while row = res.fetch_row do
$irb> puts row.to_s
$irb> end
$irb> exit

Testons maintenant de quoi générer du PDF :

$ gem search pdf --remote
$ gem install pdf-writer

Accepter les dépendances proposées. Il ne reste plusqu'à tester cette fonctionnalité.

$ irb --simple-prompt
>> require "pdf/writer"
>> pdf = PDF::Writer.new
>> pdf.select_font "Times-Roman"
>> pdf.text "Hello GEET (GEek ETna)"
>> pdf.text "Hello GEET (GEek ETna)", :font_size => 72, :justification => :center
>> pdf.save_as "hello_geet.pdf"
>> exit
$ "c:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe" hello_geet.pdf

Magnifique, nous sommes prêt à réaliser notre application de facturation.
Quelle puissance !!!

vendredi 17 août 2007

Livre : Débuter en programmation avec Ruby

Débuter en programmation avec Ruby

Je viens de finir ce livre en 2 jours, je ne suis pas débutant en programmation, mais j'ai eu envie de repartir de zéro afin solidifier mes bases en Ruby puis de passer aux livres de niveau "expert".
Première chose sur ce livre il s'adresse bien à un futur programmeur qui débute en programmation ou en Ruby. C'est plutôt une bonne chose !!! Mais en plus d'être clair et agréable à lire, ce livre reprend les concepts fondamentaux de la programmation (procédurale et objet). Je le conseil donc à tous ceux qui débute en programmation mais aussi à ceux qui s'initient au langage Ruby. Car Chris Pine (l'auteur) est très pédagogue et explique aussi certains aspects caractéristiques de ruby tel que l'exécution des blocs de code et des procs :

def ma_fonction un_proc
    puts 'Je suis occuped !!!'
    un_proc.call
    puts 'OK je suis dispo.'
end

proc_dire_bonjour = Proc.new do
    puts 'Bonjour'
end

proc_dire_aurevoir = Proc.new do
   puts 'Au revoir'
end

ma_fonction proc_dire_bonjour
ma_fonction proc_dire_aurevoir

Résultat dans IRB :

irb(main):031:0* ma_fonction proc_dire_bonjour
Je suis occuped !!!
Bonjour
OK je suis dispo.
=> nil
irb(main):032:0> ma_fonction proc_dire_aurevoir
Je suis occuped !!!
Au revoir
OK je suis dispo.
=> nil

Alors vous me direz, oui mais c'est quoi cet exemple à la c*n ???
Imaginez que pour une raison ou pour une autre vous rêviez d'executer 3 fois le code d'un proc passé en paramêtre de notre fonction "ma_fonction" (chose qui peut être crucial dans les routines de tests automatiques d'applications, de jeux vidéos ou autres):

def ma_fonction un_proc
    puts 'Je suis occuped !!!'
    un_proc.call
    un_proc.call
    un_proc.call
    puts 'OK je suis dispo.'
end

ou encore

def ma_fonction un_proc
    puts 'Je suis occuped !!!'
    3.times do
      un_proc.call
    end
    puts 'OK je suis dispo.'
end

Et voilà le tour est joué. Pour les connaisseurs ce traitement est très puissants... Je vous laisse le maîtriser à travers le livre.
Ruby a aussi un système similaire aux procs qui sont les blocs, en gros on peux créer une fonction capable d'exécuter un bloc de code comme ceci :

def ma_fonction &un_bloc
    start_time = Time.now
    un_bloc.call
    duration = Time.now - start_time
    puts 'Temps d\'execution : ' + duration.to_s + 'secondes'
end

ma_fonction do
    #Je calcule quelque chose de très grand
    number = 1
    25000.times do
        number = number + number
    end
    puts 'Le result est un nombre à ' + number.to_s.length.to_s + ' chiffres'
end

C'est vraiment trop beau ; je crée une fonction qui accepte un bloc en paramètre (noter le '&' devant 'un_bloc'), et tout ce qui est exécuté dans mon bloc, est profilé (le temps d'exécution). Je vous laisse imaginez les possibilités offertes par ces deux exemples (raccourcis) de Chris Pine mais qui sont propre au langage Ruby...

Personnellement je recherche, maintenant, un livre de niveau expert en Ruby (fera l'objet d'un autre post) et je commence la seconde édition du livre "RubyOnRails" de Dave Thomas et David Heinemeier.
RUBY quand tu nous tient !!!

mardi 24 avril 2007

Initiation RubyOnRails à l'ETNA

Epitech, l'école de l'informatique en actionLogo ETNA, Ecole des Technologies Numeriques Appliquées

Initiation RubyOnRails
    Staff
  • Professeur: Fabien JAKIMOWICZ
  • HDD-CAM: Christian KAKESA