Saturday, January 30, 2010

Seaside-Hosting compatible Pharo

L'hébergeur gratuit (pour des applications non-commerciales) Seaside-Hosting accepte maintenant les images Pharo ! J'en ai donc profité pour déployer ma première image Seaside... et c'est d'une simplicité étonnante.

Il suffit juste de créer un compte, uploader son image, clicker sur Start et c'est fini. Cool.

J'ai donc mis en ligne une image avec SimpleWebDoc: http://magaloma.seasidehosting.st/

Friday, January 29, 2010

Screencast sous Linux

Après avoir essayé pas mal d'outils disponibles sous Linux pour réaliser des screencasts et alimenter Pharocasts, voici le contenu de ma boîte à outils du moment.

Pour enregistrer j'utilise Xvidcap. On définit une zone de capture et le mode multi-frame permet de générer la vidéo à la volée. Ma zone de capture est en 800x600, éviter les résolutions exotiques (garder du 4:3 ou 16:9). Dans le cas contraire on risque une perte importante de la qualité par les encodeurs et les sites de publication en ligne.
J'enregistre en avi/mpeg4.

Pour couper les scènes, j'aime bien Avidemux. Interfaces texte, GTK et Qt disponibles. Il s'appuie sur son propre fork de FFmpeg pour l'encodage et c'est très rapide si vous gardez le même format que la vidéo originale.

Pour encapsuler au format mov, car les possesseurs d'anciennes versions de MacOSX ont des soucis avec l'avi, j'utilise la commande suivante (qui ne doit pas être la meilleure, vu que le fichier généré double de taille pour une qualité moindre):
ffmpeg -i mavideo.mpeg -b 500k mavideo.mov

Je suis toujours à la recherche d'un outil sympa pour le montage, type Kdenlive, mais je n'ai encore rien trouvé qui me plaise vraiment.

Pour publier, entre Vimeo, YouTube et DailyMotion, c'est Vimeo que je préfère pour la qualité de la vidéo.

Friday, January 22, 2010

ProfStef news

ProfStef est inclut dans le Metacello Repository. Metacello permet de spécifier les dépendances entre packages.

Cela signifie qu'il est maintenant assez simple de charger ProfStef et ses dépendances dans Pharo via Loader (l'équivalent d'apt-get pour Pharo):
Gofer new
        squeaksource: 'Loader';
        package: 'Loader';
        load.

Loader new load: 'ProfStef'.


Il est maintenant possible de créer son propre tutorial intéractif pour ProfStef. Comment ? Il y a un tutorial pour ça :).

Dans un Workspace, évaluez:
ProfStef goOn: HowToMakeYourOwnTutorial.

Monday, January 18, 2010

Smalltalk interactive tutorial

ProfStef est un tutorial intéractif sur Smalltalk (un peu inspiré de Try Ruby).
L'objectif est d'apprendre les bases du langage Smalltalk de manière ludique.

Pour charger ProfStef dans votre image, évaluez le code suivant dans un Workspace:

Gofer new
    squeaksource: 'ProfStef';
    package: 'ProfStef';
    load.



Sunday, January 10, 2010

Blog dédié à Pharo

Je viens de mettre en ligne un blog qui me servira à publier et pointer des tutoriels vidéo sur Pharo. Ça s'appelle Pharocasts et c'est ici: http://pharocasts.blogspot.com/

Friday, January 8, 2010

GUI et Pharo

J'ai fait une vidéo sur Pharo montrant les techniques de base pour disposer des éléments dans une fenêtre et répondre aux clics sur les boutons.



Voici un des exemples de code de la vidéo:

|aWindow aPanel buttonPanel|

aWindow := SystemWindow labelled: 'My first window'.

aPanel := PluggablePanelMorph new.
aWindow addMorph: aPanel fullFrame: (
    LayoutFrame
        fractions: (0@0 corner: 1@1)
        offsets: (0@0 corner: 0@50 negated)).
aPanel color: (Color blue).

buttonPanel := PluggablePanelMorph new.
aWindow addMorph: buttonPanel fullFrame: ( 
    LayoutFrame
        fractions: (0@0.99 corner: 1@1)
        offsets: (0@50 negated corner: 0@0)).
buttonPanel  color: (Color green).


#(one two three) do: [:label| |aButton| 
 aButton := PluggableButtonMorph new label: label; yourself.
 buttonPanel addMorph: aButton fullFrame: nil.
].


aWindow openInWorld.

Monday, January 4, 2010

Ruby 1.9, SQLite et UTF-8

Comme abordé précédemment dans le billet Migrer vers Ruby 1.9, le gem sqlite3-ruby actuel (version 1.2.5) ne fonctionne pas vraiment avec des données UTF-8.

Un fork de la version 1.2.4 qui corrige ces problèmes est disponible ici: http://github.com/qoobaa/sqlite3-ruby.

Pour l'installer, clonez d'abord le repository avec git:

git clone git://github.com/qoobaa/sqlite3-ruby.git

puis allez dans le répertoire créé et construisez le gem:

cd sqlite3-ruby
gem build sqlite3-ruby.gemspec

si tout fonctionne vous avez maintenant le gem sqlite3-ruby-1.2.6.gem. Installez-le:

gem install sqlite3-ruby-1.2.6.gem 

C'est tout pour Linux, sous Windows cela se complique étant donné que le gem intègre une extension C qu'il faut linker avec SQLite. Vous devriez donc tomber sur l'erreur:

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

ou si vous avec déjà installé le devkit:

checking for sqlite3.h... no

La suite nécessite d'avoir le devkit d'installé sur votre machine (voir http://rubyinstaller.org/download.html et http://wiki.github.com/oneclick/rubyinstaller/development-kit ).

Créez un répertoire qui contiendra les fichiers nécessaires à la compilation de l'extension, à savoir sqlite3.h (dans le sous-répertoire include) et sqlite3.dll (dans le sous-répertoire lib). Par exemple:

C:\Ruby19\sqlite3
            |- include
            |   |- sqlite3.h
            |- lib
                |- sqlite3.dll 

Le fichier sqlite3.h se trouve dans les sources de SQLite: http://www.sqlite.org/sqlite-amalgamation-3_6_21.zip

Le fichier sqlite3.dll se trouve dans la distribution binaire pour Windows: http://www.sqlite.org/sqlitedll-3_6_22.zip

Modifiez ensuite la configuration de la compilation de l'extension pour inclure le répertoire créé. Ouvrez le fichier ext/sqlite3_api/extconf.rb des sources du gem et ajoutez la ligne suivante:

dir_config("sqlite3", "C:\\Ruby19\\sqlite3")

Vous pouvez maintenant regénérer le gem et l'installer:

gem build sqlite3-ruby.gemspec
gem install sqlite3-ruby-1.2.6.gem