Au fil des jours...
Ça y est! Le module de recherche de pages du site tuxcoffee.net est en place à titre expérimental pour l'instant, avec de petites lacunes mais déjà bien pratique.
Il n'y aura, par conséquent, plus d'autres nouvelles sur l'implémentation de celui-ci jusqu'à l'annonce d'un article complet sur le programme et la disponnibilité d'une archive du programme.
Ce module est visible sur la bannière du site et en bas de chaque page.
L'écriture d'une expression pour la recherche sur tuxcoffee.net est très simple.
- Les mots séparés par un espace permettent de rechercher les pages du sites où ils sont tous présents.
- Une virgule permet de préciser un "ou" dans l'expression de recherche.
- La casse des caractères n'est pas pris en compte. Les mots de l'index sont tous en minuscules.
- Les caractères accentués sont retirés des mots de l'index. C'est une lacune, voir la suite de la nouvelle.
Par exemple l'expression "ruby rails cgi, editions eni" permet de rechercher toutes les pages contenant les mots ruby, rails et cgi, mais aussi toutes les pages contenant editions et eni à la fois.
Lacunes et points à améliorer dans le module de recherche :
- les mots avec accents, ne sont pas pris en compte "tel que" pour l'instant. En fait les caractères accentués disparaissent.
- Tout le contenu d'une page HTML est référencé, y compris les mots contenus dans la partie <head></head>. Par conséquent certaines pages seront données en résultat dans la recherche alors que vous ne visualiserez pas le mot recherché dans celles-ci...
Envoyer un commentaire...


Une autre partie du module de recherche CGI en langage Ruby, le programme d'appel, appelé à partir d'un formulaire HTML. Le formulaire de recherche ressemble à ceci :
<form action="/cgi-bin/cgi_look_for.rb">
<input type="text" name="expr" />
<input type="submit" value="Rechercher" />
</form>
Le programme ruby /cgi-bin/cgi_look_for.rb récupère la chaine de recherche expr du formulaire et va chercher dans le fichier index index_tuxcoffee.txt les fichiers répondants à cette expression.
require 'erb'
require 'cgi'
require 'words_with_files_in_index'
cgi = CGI.new("html4Tr")
# Get cgi entry parameter
expr = cgi['expr']
template = ""
File.open("./template_search_result.erb", "r") do |file|
file.each_line { |line| template += line }
end
rhtml = ERB.new(template)
# setup the template data
words_with_files = WordsWithFilesInIndex.new("./index_tuxcoffee.txt", expr)
# Produce result.
out = rhtml.result(words_with_files.get_binding)
# HTML view
cgi.out { out }
Un article complet, ainsi que l'archive de tous les scripts et classes Ruby du module CGI de recherche seront bientôt disponible.
Envoyer un commentaire...


Je viens de me mettre au langage Ruby, et la meilleure façon d'apprendre est la pratique et l'étude de programmes existants (une fois les bases connues). Pour la pratique j'ai décidé de refaire la roue et de mettre en place un module CGI de recherche par mots clefs sur mon site tuxcoffee.net .
Les bases du programme sont en place, hormis la partie web proprement dite. J'ai décidé de présenter certains morceaux clefs sous forme de nouvelles avant que le programme ne soit finalisé sous forme d'archive (pour la première version) ainsi que la doc écrite et générée. L'objectif de ce programme est simple, mais il me permettra de rassembler des composants indispensables de ruby, comme les bases du langages, les tests unitaires, la doc générée avec rdoc, ...
Première partie d'un ensemble de classes, modules et scripts qui vont composer ce module de recherche, la classe Index qui me permet d'instancier un objet index qui représente l'index d'un ou plusieurs fichiers des mots qui y sont contenus :
class Index
attr_reader :index
def initialize
@index = {}
end
def add_file_to_index(file_to_index)
# pour chaque ligne du fichier, extraction des mots et indexation.
File.open(file_to_index, "r") do |file|
file.each_line do |line|
line.scan(/\w[-'\w]+\w/) do |word| # Recherche des mots dans 1 ligne.
word.downcase!
@index[word] = [] if @index[word].nil?
@index[word].push(file_to_index) unless @index[word].include?(file_to_index)
end
end
end
end
def search(word)
@index[word.downcase]
end
end
Un point faible à corriger dans le source montré ici, les caractères accentués ne sont pas pris en compte :(
Les sources de ce programme sont sous
licence GPL, licence qui sera incluse dans le programme final qui sera librement utilisable et modifiable dans les termes de cette licence.
Envoyer un commentaire...



Figure 4: Livre Debian GNU/Linux version 3.1 (Sarge) - Administration du système
Agrandir l'image...
Livre sur l'administration du système Debian GNU/Linux, des bases d'un système GNU/Linux aux spécificités Debian pour une compréhension et une maitrise avancée.
Pour en savoir plus ...
Lire l'article...
Livre aux Editions ENI...
Envoyer un commentaire...



Figure 3: GINK, un projet hébergé par Savannah
Il s'agit d'un vieux projet que j'ai arrêté en 2003. C'est principalement une interface graphique à un ensemble d'outils réseaux, faisant de ce logiciel une sorte de couteau suisse pour le réseau. D'autres projets similaires sont arrivés à maturité avant que celui-ci n'aboutisse.
Je le garde sous le coude, comme exemple de développement objet en langage Perl avec l'outil interactif de construction d'interface graphique Glade. Le code est propre, alors...
Description du projet...
Dépot CVS...
Le site de Savannah...
Envoyer un commentaire...


Les programmeurs sont attachés à un ou plusieurs langages qu'ils considèrent de façon intrinsèque comme supérieurs aux autres. Un point de vue qui permet au développeur de se comparer aux autres. Le graphique qui suit illustre cet ensemble de points de vue non objectifs... ;)

Figure 2: Image sur lukewelling.com. License: inconnue
Ce clasemment très subjectif me séduit tout de même, les langages que j'ai longuement pratiqués se retrouvent plutôt en haut de tableau. Pour Ruby c'est en cours. Par contre, ayant utilisé le langage Ada pendant des années, je le mets beaucoup plus haut dans cette hiérarchie. C'est mon point de vue et ma nouvelle...
Envoyer un commentaire...


Agrandir l'image...
Cet article décrit la mise en place d'un environnement simple mais néanmoins complet de développement Ruby et Rails. Il se termine par le traditionnel "Hello World" sous Rails pour s'assurer que l'environnement est bien en place.
Lire l'article...
Envoyer un commentaire...


Ces notes traitent de la mise en place d'un service sur HPUX. La version de HP-UX qui a été utilisée pour des tests est la 11i (B.11.11). La gestion des services est similaire sur la plupart des versions 10 et 11 de HP-UX.
Sont décrits ici la gestion des scripts de démarrage et d'arrêt de services, la gestion des niveaux d'exécution et à partir de quoi commencer à écrire un script de démarrage pour un nouveau service, ou bien, un service existant ne possédant pas de script de lancement et d'arrêt.
Lire l'article...
Envoyer un commentaire...




Dernière compilation : today
- Copyright (c) 2005 - 2006 Yann Le Thieis.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".