Inscriptions pour RailsCamp Paris ouvertes !

Ruby France, Silicon Sentier et AF83 ont le plaisir de vous annoncer l’organisation du premier RailsCamp (BarCamp/DevCamp dédié à Ruby on Rails) parisien. Il aura lieu le samedi 17 mai 2008 dans le cadre convivial de la Cantine, Paris, France.

Le thème de cette non-conférence est bien sûr Ruby on Rails, mais aussi des sujets afférents : Capistrano, Mongrel, Prototype, Script.aculo.us…

L’événement est gratuit et ouvert à tous, des experts Rails aux débutants. Il suffit de s’inscrire et toutes les explications complémentaires sont là

N’oubliez pas que vous pouvez participer en proposant des présentations, en prenant part aux ateliers / sessions de développement, en nous faisant des suggestions, en devenant sponsor !

  • La page d’accueil du RailsCamp Paris
  • Le flux RSS de Ruby France pour avoir les dernières infos de ce DevCamp

Inscriptions pour RailsCamp Paris ouvertes !

Ruby France, Silicon Sentier et AF83 ont le plaisir de vous annoncer l’organisation du premier RailsCamp (BarCamp/DevCamp dédié à Ruby on Rails) parisien. Il aura lieu le samedi 17 mai 2008 dans le cadre convivial de la Cantine, Paris, France.

Le thème de cette non-conférence est bien sûr Ruby on Rails, mais aussi des sujets afférents : Capistrano, Mongrel, Prototype, Script.aculo.us…

L’événement est gratuit et ouvert à tous, des experts Rails aux débutants. Il suffit de s’inscrire et toutes les explications complémentaires sont là

N’oubliez pas que vous pouvez participer en proposant des présentations, en prenant part aux ateliers / sessions de développement, en nous faisant des suggestions, en devenant sponsor !

  • La page d’accueil du RailsCamp Paris
  • Le flux RSS de Ruby France pour avoir les dernières infos de ce DevCamp

Bivouac 0.2.0 (bientôt)

Je devrais très bientôt (ce soir ?) de mettre à disposition la version 0.2.0 de bivouac.

Il s’agit d’une version majeur dans laquelle le générateur a été réécrit en grande partie. Ceci afin non seulement d’améliorer le code, mais également de permettre le support des générateurs dans les plugins. Je profite donc pour déplacer le générateur scaffold et le proposer comme nouveau plugin.

Le plugin iUI’s Tent, permettant de créer des applications pour iPhone, passe en version alpha-2. Il est encore loin d’être fonctionnel, mais donne déjà une bonne vision de ses futures possibilités.

La branche 0.2.x ouvre la voie vers la première version stable. En attendant, il reste pas mal de choses à faire :

  • Réorganisation de certaines classes de façon à faciliter la création de plugins.
  • Ajout du générateur mailer.
  • Support des WebServices.
  • Stabilisation des plugins iUI’s Tent et Scaffold’s Tent.
  • Modification du script plugin afin de support la récupération via http (en plus de svn)
  • Documentation…

Experimentations avec les Mixins / Modules et les méthodes statiques (self)

Bivouac 0.1.6

Les versions s’enchaînent… Dans celle-ci, j’ai supprimé tooltip pour le rétrograder au rang de plugin. Ceci est possible grâce au support des tâches rake dans les plugins.

Vous trouverez également dans le repository une pre-version du plugin iUI.

Pour utiliser le plugin tooltip :

$ bivouac test_tooltip
        create /Users/greg/temp/test_tooltip
        …
        create /Users/greg/temp/test_tooltip/app/controllers/index.rb

$ ruby script/plugin install tooltip
A    tooltip/LICENCE
A    tooltip/init.rb
A    tooltip/tasks
A    tooltip/tasks/tooltip.rake
A    tooltip/INSTALL
A    tooltip/lib
A    tooltip/lib/tooltip
A    tooltip/lib/tooltip/view_helpers.rb
A    tooltip/copy_on_install
A    tooltip/copy_on_install/public
A    tooltip/copy_on_install/public/javascripts
A    tooltip/copy_on_install/public/javascripts/tooltip.js
A    tooltip/README
Checked out revision 31.

$ rake plugin:tooltip:install
(in /Users/greg/temp/test_tooltip)
Install /Users/greg/temp/test_tooltip/public/javascripts/tooltip.js

$ ruby script/generate controller tooltip
        create /Users/greg/temp/test_tooltip/app/controllers/tooltip.rb
        create /Users/greg/temp/test_tooltip/app/views/tooltip.rb
        create /Users/greg/temp/test_tooltip/test/test_tooltip.rb

Puis, modifiez app/views/tooltip.rb comme ceci :

  1. module Ttt::Views
  2.   def testtt
  3.     html do
  4.       head do
  5.         javascript_include_tag :defaults
  6.         javascript_include_tag "tooltip"
  7.       end
  8.       body do
  9.         div( :id => "tooltip_me" ) do
  10.           "Hello World"
  11.         end
  12.         tooltip( "i_m_the_tooltip", "tooltip_me" ) do
  13.           "Content of the tooltip"
  14.         end
  15.       end
  16.     end
  17.   end
  18. end

Seesmic via Jabber

Vu sur le blog de Seesmic la possibilit de suivre par un bot Jabber des vnements sur des contenus ou des utilisateurs. Le bot permet de tracker du texte ou des vidos de la mme manire que le bot Jabber de Twitter.

Mme si Jabber / Gtalk n’est pas encore l’IM le plus usit sur le Net il n’en reste pas moins que c’est celui le plus implment grce au standard ouvert qu’est XMPP. Sachant que les messageries instantanes sont au moins, sinon plus, autant employes qu’un navigateur web je pense que l’implmentation de quelques XEP tel que la XEP-0071: XHTML-IM qui permet d’envoyer au client du texte riche au format XHTML, comme le fait Gajim, pourrait aider populariser Jabber. Les wallpapers anims dans le texte c’est le minimum syndical il parait :)

Bivouac 0.1.5

La version 0.1.5 de bivouac est disponible. Au programme, le passage à la version 1.6.0.2 de prototype et à la version 1.8.1 de Script.aculo.us. J’en ai profité pour ajouter un nouveau helper sound. Voici un petit bout de code (directement inspiré des exemples de Script.aculo.us) que vous pourrez retrouver dans bivouac_sample :

module BivouacSample::Views
  def sound
    html do
      head do
        javascript_include_tag :defaults
      end
      body do
        h1 "Sound"
        a "play sound (parallel)", :href => "#", :onclick => play_sound_js( "sound/sword.mp3" ); br
        a "play sound (overwrite)", :href => "#", :onclick => play_sound_js( "sound/sword.mp3", :replace => true ); br
        a "Mute", :href => "#", :onclick => disable_sound_js
        a "Enable sounds", :href => "#", :onclick => enable_sound_js
      end
    end
  end
end

Mon super navigateur avec Qt JRuby !

Mon DSL commence à prendre ses formes maintenant que j’ai résolu mes petits problèmes. Il ne m’en reste qu’un sur lequel je reviendrais plus tard (quand j’aurais fait une première release). Mon premier exemple est un navigateur :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Qt.app do
  window :main do
    options :title => "Safari 10.2"
    
    def browser
      @browser ||= web_view
    end

    hbox do
      field = line_edit
      
      push_button "Go" do
        browser.load(Qt::QUrl.new(field.text))
      end
    end
    
    browser.load(Qt::QUrl.new('http://google.fr'))
  end
end

Qt.app englobe toute l’application (pour l’instant tout doit être dans un seul fichier mais je changerais ça). On définit à l’intérieur autant d’objets window que l’on veut et on a une méthode open pour afficher ces fenêtres. Au lancement de l’application Qt.app charge la fenêtre main si elle existe, donc pas besoin de le faire à la main.

A l’intérieur de la fenêtre on définit les options : le titre, les dimensions… Il y a aussi la gestion des layouts HBox et VBox, les autres viendront après. Le push_button accepte un bloc optionnel qui gère l’évènement pressed (le clicked avec JRuby bug) et enfin le browser avec WebKit. Pour les objets Qt autres que les widgets on peut les appeler avec le namespace Qt.

Certaines choses pourraient encore changer, mais je trouve ça déjà plutôt bien. J’ai aussi testé avec plusieurs fenêtres et c’est vraiment le top. Créer une application aussi simplement que Shoes mais avec les fontionnalités de Qt, c’est génial !

Signaux et slots avec Qt Jambi et JRuby

Un des problèmes rencontrés avec Qt Jambi utilisé avec JRuby est une incompatibilité au niveau de la gestion des évènements (le système de signaux et de slots en Qt). Vous pouvez trouver plus d’informations de ce système sur la documentation de Qt Jambi

Il existait déjà une petite extension pour palier à ce problème pour Jython, je l’ai donc reprise et adapatée pour JRuby. La petite différence avec Ruby ce sont les blocs, j’ai donc rajouté à cette petite extension un support des blocs. Petit exemple rapide avec un simple bouton qui quitte l’application quand on le clique :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
include Java

module Qt
  include_package 'com.trolltech.extensions.jruby'

  import 'com.trolltech.qt.gui.QApplication'
  import 'com.trolltech.qt.gui.QPushButton'
  
  def self.event(*args, &block)
    block.call(*args) if block_given?
  end
end

Qt::QApplication.new(ARGV.to_java(:string))

btn = Qt::QPushButton.new "My Button"
Qt::Signals.connect(btn.clicked, Qt.method('event'), Proc.new {
  Qt::QApplication.quit
})

btn.show
Qt::QApplication.exec

Sommairement, j’ai écrit une classe Signals avec une méthode connect qui prend en premier argument l’évènement, le signal, et en deuxième argument la méthode à éxécuter, le slot (sous la forme MyObject.method('methode_a_executer')). Le bloc est optionnel et s’il est présent, va être ajouté à la méthode à exécuter. Ce que j’ai fait dans l’exemple est une méthode générique qui va récupérer le bloc et l’appeler. Au clic du bouton, le bloc sera donc appelé.

Via le DSL que je suis en train de développer, ce sera beaucoup plus simple. Il suffira d’appeler le signal et de lui passer le bloc :

1
2
3
4
5
6
Qt.application do
  btn = push_button "My Button"
  btn.clicked do
    app.quit
  end
end

On sent plus le Ruby déjà. Je mettrais bientôt à disposition cette extension avec quelques exemples (celui de la documentation de Qt Jambi, celui-là et encore d’autres), mais j’aimerais bien finir une première version de mon DSL avant.

Yoolink-sidebar pour Typo

Depuis quelque temps, j'ai commencé à utiliser yoolink pour remplacer del.icio.us. Yoolink est exactement comme del.icio.us dans son concept. Mais il a une interface beaucoup plus sympathique et avec des nouvelles fonctionnalités plus interressante. J'utilisais sur ce blog le plugin del.icio.us pour afficher les derniers bookmarks que j'ai ajouté sur del.icio.us. Mais n'utilisant plus ce service et utilisant yoolink à la place, j'ai décidé d'adapter le plugin del.icio.us pour yoolink.

Voici comment vous pouvez l'installer :

  1. Récupérer le plugin en le téléchargeant sur Github : Yoolink-sidebar-0.1.0
  2. Copier le contenu du plugin dans le dossier /vendor/plugins
  3. Redémarrer Typo
  4. Dans l'administration, vous pouvez désormais placé le plugin yoolink.
  5. Configurer le plugin yoolink :
    • Login : indiquez votre login yoolink
    • items limit : indiquez le nombre de bookmark afficher par le plugin
    • groups link by days : Groupez les bookmarks par date avec celle-ci d'afficher
    • Allow links in description : Permettre les hyperliens dans les descriptions des bookmark. Par défaut, ils sont désactivés

Au niveau des CSS, le plugin est contenu dans une balise div avec comme id "yoolink". De base, c'est celle utilisé par votre thème.