Recommend Me


Mardi 16 décembre 2008

Utiliser before à la place de before_filter dans Bivouac

Classé dans : Camping, Projets, Ruby, bivouac — greg @ 12:16

Dans un article précédent, je vous avais montré comment utiliser before_filter dans Bivouac. before_filter ayant été remplacé, dans la dernière version de Bivouac, par la solution proposée par Magnus Holm, voici comment modifier cet exemple pour qu’il fonctionne en version 0.4.0.

La seule modification concerne le controller. En effet, vous pouvez supprimer tout ce qui à trait à la gestion du filtre, soit la classe AdminCheckLogin et l’appel à before_filter :

module TestFilter::Controllers
  # …

  class AdminCheckLogin
    def self.filter( state )
      if state[:user].blank?
        return AdminLogin
      else
        return nil
      end
    end
  end
end

before_filter AdminCheckLogin, :only => [AdminHome]

A la place de tout cela, vous devez ajouter, ou vous voulez, le code suivant dans votre projet :

module TestFilter
  before :AdminHome do
    if @state[:user].blank?
      redirect R(Controllers::AdminLogin)
    end
  end
end  

Comme vous pouvez le voir, l’appel à before se fait dans le module TestFilter et non dans le controller directement. Il faut donc faire attention lorsque vous faire la redirection !

• • •

Lundi 15 décembre 2008

Bivouac 0.4.0

Classé dans : Camping, Projets, Ruby, bivouac — greg @ 20:46

La version 0.4.0 de Bivouac vient d’être mise en ligne.

Rappelons, pour les nouveaux, que Bivouac est un générateur “rails like” pour Camping.

Au programme de cette nouvelle version :

  • Support de Camping >= 1.9 ! A ce sujet je vous conseille d’installer la version de Magnus Holm.
  • Correction d’un bug dans options_for_javascript
  • Dans environment.rb, address a été remplacé par host
  • Camping n’ayant plus de dépendance avec markaby, cette dépendance a été ajoutée dans bivouac
  • Ajout de l’option :ieOnly à javascript_include_tag
  • postamble.rb est deprecated
  • script/plugin et la classe Bivouac::Plugin ont été modifiés afin de supporter la nouvelle tache Rakefile plugin:update
  • Le controller Not Found a été mis à jour
  • Remplacement de before_filter par la solution de Magnus Holm
  • Le générateur view fait un retour en force !
  • Ajout du générateur helper
  • Upgrade de Script.aculo.us en version 1.8.2
• • •

Vendredi 12 décembre 2008

Nab Has Shoes 0.3.1

Classé dans : Linux, Mac, Projets, Ruby, Shoes, Windows — greg @ 19:36

Pour fêter la sortie de Nab Has Shoes 0.3.1, je viens d’ouvrir le projet sur rubyforge qui vient donc compléter la page sur The ShoeBox.

Have fun !

• • •

Jeudi 11 décembre 2008

Nab Has Shoes on the box

Classé dans : Projets, Ruby, Shoes — greg @ 19:32

Nab Has Shoes est désormais disponible sur The ShoeBox

• • •

Terminator Salvation

Classé dans : Important — greg @ 11:50



• • •

Mercredi 10 décembre 2008

Nab Has Shoes 0.3.0

Classé dans : Linux, Mac, Ruby, Shoes, Windows — greg @ 21:02

Voici la version 0.3.0 de Nab Has Shoes


Nab Has Shoes

Téléchargement :

• • •

Ha ! Java !

Classé dans : Java — greg @ 18:13


(Svengaard) en java y a 300 façons de faire la même putain de chose
(Svengaard) dont 300 non adaptées

• • •

Mardi 9 décembre 2008

Mon Nabaztag a des (nouvelles) chaussures !

Classé dans : Linux, MacOSX, Ruby, Shoes, Windows — greg @ 18:58

Pour fêter la sortie de shoes 2 (Raisins), j’ai remis les chaussures de mon Nabaztag.

Nabaztag Shoes Nabaztag Shoes

Téléchargement :

Shoes.app :width => 320, :height => 352, :resizable => false do
  require ‘cgi’
  require ‘iconv’
  require ‘open-uri’
  require ‘fileutils’
  require ‘rexml/document’

  NAB_URI = "http://api.nabaztag.com/vl/FR/api.jsp?"
 
  if /Windows/.match( ENV[‘OS’] )
    HOME = ENV[‘USERPROFILE’]
  else
    HOME = ENV[‘HOME’]
  end
 
  PREF = File.expand_path(File.join(HOME, ".nabaztag.shoes"))

  def write_pref( s, t )
    open( PREF, "w" ) do |f|
      f.print "#{s}|#{t}"
    end
  end
 
  def n_say( s, t, m )
    REXML::XPath.match(
      REXML::Document.new(
        open( NAB_URI +
          "sn=#{s}&token=#{t}&tts=" +
          CGI.escape(
            Iconv.iconv(‘iso-8859-1′, ‘utf-8′, m)[0] )
          ) { |io| io.read }
      ), ‘/rsp/comment’
    ).map{ |n| n.text }
  end
   
  begin
    serial, token = open( PREF ).read.chomp.split( /\|/ )
  rescue Errno::ENOENT
    serial, token = ["", ""]
  end
 
  background "nabaztag.png"

  stack :margin => 30 do
    stack :margin => 5 do
      para "Serial"
      @serial = edit_line :width => "90%"
      @serial.text = serial
    end
    stack :margin => 5 do
      para "Token"
      @token = edit_line :width => "90%"
      @token.text = token
    end
    stack :margin => 5 do
      para "Message"
      @message = edit_line :width => "90%"
    end
   
    flow do
      stack :width => "20%", :margin => 5 do
        b = button "Go" do
          @answer.replace n_say( @serial.text, @token.text, @message.text )
          if serial != @serial.text or token != @token.text
            serial = @serial.text
            token = @token.text
            write_pref( @serial.text, @token.text )
          end
        end
      end
   
      stack :width => "80%", :margin => 5 do
        @answer = para ""
      end
    end
  end
end

Vous avez toujours besoin de cette image.

• • •

Mardi 2 décembre 2008

Documenter avec Ruby

Classé dans : Java, Langage, Projets, Ruby — greg @ 21:00

Je viens de terminer la première partie de ce qui est certainement la plus grosse documentation que j’ai pu écrire dans ma vie. Je n’en dévoilerai pas plus sur le contenu, car il s’agit d’un travail pour mon employeur, sachez simplement qu’il s’agit d’une documentation d’API à destination de développeurs pour les technologies Windows DLL, Framework MacOSX, .Net, Java et SOAP. Ce qui m’intéresse ici est plutôt de vous parler de la méthode employée.

L’ensemble représente pour le moment 6 documents : 4 Quick Start, un document de référence technique (il en reste 3 à écrire) et un document de cas d’utilisations. Le tout représente plus de 450 pages et nous devrions dépasser les 1600 pages quand les trois derniers documents seront rédigés.

L’ensemble a été écrit en XML ce qui présente l’énorme avantage de pouvoir partager des paragraphes, voir des chapitres, entre plusieurs documents. De plus, l’écriture de cette documentation ce faisant à plusieurs, nous utilisons subversion comme repository de sources, impossible — ou tout au moins inutile — avec un document Word ou OOo. Chacun peut ainsi travailler sur une partie précise de la documentation sans perturber les autres. Nous utilisons CruiseControl.rb pour l’intégration continue.

Nous avons un ensemble de feuilles de styles permettant de générer des versions HTML (une page et multi-pages) et du PDF via FOP.

A l’origine nous utilisions ANT pour générer les documents, mais tout cela est en train de migrer vers Rake. Non seulement l’utilisation de FOPJava avec Ruby est très simple mais en plus cela nous permet de migrer tout un ensemble de scripts sous Ruby/Rake. En effet, nous avons plusieurs scripts pour nous aider. L’un par exemple utilise RubyDiff pour rechercher des différences, entre deux versions d’APIs, et génère automatiquement de nouvelles entrées dans la doc. L’utilisation de REXML nous permet de modifier de la documentation automatiquement, ou de générer de nouvelles pages à partir de templates XML, souvent avec l’aide d’Erb. Tout cela est en train d’être réuni dans un Rakefile. Bien entendu chaque action automatisée est journalisée et peut être rejouée, supprimée, remplacée… Ainsi pour la constitution de la trame du document, chacun peut savoir ce qui a été fait. Cela complété avec les possibilités offertes par SVN fait que nous pouvons à tout moment revoir l’ensemble de l’histoire de la fabrication de cette documentation. Bien entendu la conformité de l’ensemble est validée à chaque étape…

• • •

Arrêtez de crypter !

Classé dans : Important, libre — greg @ 11:14

Il est amusant de voir comme nous prenons des habitudes de langage qui vont souvent à notre propre encontre… En effet, combien de fois avons-nous entendu des hackers s’énerver contre la définition donnée par les “médias” de leur titre, les relayant au rang de “méchant” ! Et combien de fois avons-nous entendu ces mêmes hackers vouloir crypter des documents !

Soyons claires, le mot crypter n’existe pas ; en tout cas pas dans la langue française. En effet, si vous voulez transcrire des messages en un langage secret il faut les chiffrer.

Et pourquoi donc Monsieur ? En effet, crypter est (clairement) passé dans le langage courant ! Cependant s’il est préférable de ne pas l’utiliser, c’est surtout à cause de décrypter (qui lui existe). En effet, décrypter consiste à essayer de découvrir un message chiffré, sachant que l’on ignore la méthode de chiffrement. C’est comme forcer une porte !

Donc si vous êtes un hacker, vous chiffrez/déchiffrez ; si vous êtes un pirate, vous chiffrez/décryptez.

• • •
Powered by: WordPress • Template adapted from the Simple Green' Wench theme - RSS