Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   Blog du projet ZiK

Catégorie: debian-fr

11/10/2010

Permalink 16:18:08, Catégories: Récapitulatif, Nouvelle version, debian-fr, 48 mots   French (FR) , vinc-mai

ZiK 0.15.2

Cette version corrige des bogues dans l'assistant and dans le module brainz qui peuvent provoquer la fermeture de ZiK.
L'entrée « éditer » a disparu du menu « liste de lecture » car il provoque un bogue. La liste peut toujours être éditée via le boutton ou le menu contextuel.

Vous devez être identifié pour poster un commentaire.

09/10/2010

Permalink 18:03:17, Catégories: Récapitulatif, Nouvelle version, debian-fr, 106 mots   French (FR) , vinc-mai

Sortie de ZiK 0.15

La version 0.15 de ZiK est sortie.

Un assistant explique le fonctionnement de ZiK lors d'une nouvelle installation. Il permet aussi une configuration rapide du logiciel. Il est disponible via le menu aide.
L'édition de la liste de lecture et la recherche de pistes audio sont maintenant intégrées à la fenêtre principale.
La vue compact permet d'afficher un plus grand nombre de pistes audio dans la liste de lecture.
ZiK supporte maintenant ruby-taglib2 et les nouvelles versions de rghk (0.2) et de gtk (2.22).
La traduction française a été mise à jour.
Pour plus d'informations, voyer le fichier ChangeLog.

Téléchargez ZiK sur developpez.com.

Vous devez être identifié pour poster un commentaire.

07/10/2010

Permalink 17:26:01, Catégories: Récapitulatif, Ruby, debian-fr, 632 mots   French (FR) , vinc-mai

Adapter une bibliothèque C pour ruby (5)

Diverses fonctions

Je vais présenter ici quelques fonctions utiles. Pour des questions de faciliter, j'ai créé deux nouvelles méthodes pour le module TagLib bien qu'elles n'aient rien avoir avec taglib.

Utiliser un bloc

 
rb_define_singleton_method(mTagLib, "block", block, 0); 

La méthode TagLib.block ne prend aucun paramètre, mais un bloc doit lui être fourni. Elle exécute ce bloc en lui passant comme argument l'objet TagLib et retourne le bloc sous la forme d'un Proc.
 
$ make 
$ irb 
> require './lib/taglib2.rb' 
=> true 
TagLib.block{|a| p a} 
TagLib 
=> #<Proc:0xb75ba510@(irb):2> 

Voici la fonction implémentant ce comportement.
 
VALUE 
block(VALUE self) 

  rb_yield(self); 
  return rb_block_proc(); 


rb_yield permet d'appeler le bloc passé à la méthode alors que rb_block_proc permet de le manipuler sous la forme d'un Proc.

Utiliser des paramètres optionnels

Je propose d'écrire l'équivalent de code écrit en ruby.
 
def TagLib.n(tab=["Salut", "Re"]) 
  tab.to_a 
  tab.each{|s| $stdout.puts s} 
  tab[0] 
end 

 
rb_define_singleton_method(mTagLib, "n", n, -1); 

Le dernier argument lors de la déclaration de la méthode TagLib.n vaut -1 ce qui indique que la méthode ne possède pas un nombre d'arguments fixees. La fonction rb_scan_args permet de récupérer de manière propre les paramètres passés à la méthode. Le troisième argument de cette fonction est une chaîne de caractère représentant deux chiffres. Le premier indique le nombre de paramètres obligatoires, le second indique le nombre de paramètres optionnels.
 
VALUE 
n1(VALUE str) 

  return rb_funcall(rb_stdout, rb_intern("puts"), 1, str); 

 
VALUE 
n(int argc, VALUE* argv, VALUE self) 

  VALUE tab; 
 
  rb_scan_args(argc, argv, "01", &tab); 
  if (NIL_P(tab)) 
  tab=rb_ary_new3(2, rb_str_new2("Salut"), rb_str_new2("Re")); 
  rb_funcall(tab, rb_intern("to_a"), 0); 
 
  rb_iterate(rb_each, tab, n1, Qnil); 
  return RARRAY(tab)->ptr[0]; 


TagLib.n peut donc être appelée avec un paramètre ou sans. Si aucun argument n'a été passé (tab=nil), tab est initialisé en créant un tableau contenant deux objets String. On vérifie ensuite que tab appartient à la classe Array ou s'en rapproche (duck typing). rb_funcall permet d'appeler une méthode (deuxième argument) d'un objet (premier argument) avec un certain nombre (troisième argument) de paramètres (arguments suivant). rb_intern permet d'obtenir la méthode à partir d'une chaîne de caractères.
La fonction n1 est ensuite appelé pour chacun des éléments du tableau grâce à rb_iterate. LA méthode retourne, finalement, le premier élément de tab, la macro RARRAY permettant d'accéder à la structure interne d'un objet de la classe Array, le champ ptr permettant d'accéder aux éléments.
 
> TagLib.n 
Salut 
Re 
=> "Salut" 
> TagLib.n(["Bonjour"]) 
Bonjour 
=> "Bonjour" 

Liens utiles

Quelques liens qui m'ont aidé à écrire des extensions pour ruby en C :
le fichier README.EXt fourni avec ruby,
ruby-doc.
En ce qui concerne taglib :
l'exemple dans les sources de taglib,
le fichier bindings/c/tag_c.h.

Sources

Le code, présenté dans ces billets, implémentant le module, TagLib est téléchargeable ici.

Conclusion

Cette série d'articles est finie. J'espère qu'ils vous seront utiles.

Vous devez être identifié pour poster un commentaire.

06/10/2010

Permalink 00:43:54, Catégories: Récapitulatif, Ruby, debian-fr, 305 mots   French (FR) , vinc-mai

Adapter une bibliothèque C pour ruby (4)

Ce quatrième billet présente comment obtenir une documentation grâce à rdoc : il suffit de commenter les fichiers sources.

Documentation

Commenter

Pour documenter les méthodes de la classe TagLib::File, il suffit de commenter les différentes fonctions les implémentant.

La méthode title permet d'obtenir le titre d'une piste. On l'indique en commentaire juste avant la fonction file_get_title.
 
/*Get track title*/ 
VALUE 
file_get_title(VALUE self) 

Par défaut, les paramètres d'une méthode sont nommés p1, p2, .... Pour la méthode title=, on utilise l'instruction call-seq: pour afficher le texte title=title (au lieu de title=(p1)).
 
/* 
call-seq: title=title 
 
Set track title to title 
 
title: a string 
*/ 
VALUE 
file_set_title(VALUE self, VALUE title) 

La méthode initialize ne devrait jamais être appelée directement depuis un code ruby. On utilise l'instruction :nodoc: pour indiquer que la méthode ne doit pas apparaitre dans la documentation.
 
/*:nodoc:*/ 
VALUE 
file_init(VALUE self, VALUE path) 

J'indique que je ne désire pas commenter le module TagLib en plaçant un commentaire vide afin d'éviter que rdoc utilise un commentaire non-désiré.
 
/* */ 
  mTagLib=rb_define_module("TagLib"); 

Dans le fichier lib/raglib2.rb, j'ajoute la directive :main: afin que la page initiale de la documentation pointe sur la classe TagLib::File.
 
#:main: TagLib::File 
module TagLib 

Bizarrement, cette directive ne semble pas fonctionner si elle est placée dans le fichier taglib2.c.

Produire la documentation

 
rdoc --exclude extconf.rb 

Le fichier doc/index.html est créé.
aperçu de la documentation

Conclusion

Rendez-vous pour le dernier billet où j'introduirai quelques concepts que je n'ai pas utilisé dans le module TagLib.

Vous devez être identifié pour poster un commentaire.

04/10/2010

Permalink 16:47:34, Catégories: Ruby, debian-fr, 1372 mots   French (FR) , vinc-mai

Adapter une bibliothèque C pour ruby (3)

Cet article fait suite au premier et deuxième billets dans lesquels nous avons vu comment créer un objet de la classe TagLib::File. Cet objet utilise les fonctions de la bibliothèque taglib, écrite en C, afin d'accéder aux tags de fichiers audio. Dans ce billet, nous verrons comment obtenir les valeurs des tags et comment modifier un tag.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

03/10/2010

Permalink 15:37:27, Catégories: Récapitulatif, Ruby, debian-fr, 1330 mots   French (FR) , vinc-mai

Adapter une bibliothèque C pour ruby (2)

Cet article fait suite au premier. Il s'intéresse à la classe principale qui permettra de manipuler les tags de fichiers audio.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

01/10/2010

Permalink 16:17:24, Catégories: Récapitulatif, Ruby, debian-fr, 1016 mots   French (FR) , vinc-mai

Adapter une bibliothèque C pour ruby (1)

Introduction

J'utilise régulièrement ruby-taglib. Malheureusement, certains bugs empêchent son utilisation avec ruby 1.9. Après avoir tenté, avec plus ou moins de succès, de corriger ces bugs, j'ai décidé de réécrire cette bibliothèque. La version originale est basée sur ruby/DL, bibliothèque que je n'ai jamais utilisée. Je profite de cette réécriture pour proposer une série d'articles sur la manière d'adapter une bibliothèque C.

» Lire la suite!

Vous devez être identifié pour poster un commentaire.

24/09/2010

Permalink 09:01:47, Catégories: debian-fr, 629 mots   French (FR) , vinc-mai

Bonjour planète

Suite à ma première contribution directe au projet debian (cf : ci-dessous), j'écris ce billet pour présenter mon expérience avec linux. Je précise que je ne suis pas informaticien de formation.

À la découverte de linux

Suite à quelques utilisations sporadiques de différentes distributions linux, j'ai réellement découvert linux en installant ubuntu 5.10. Après avoir réglé quelques difficultés, je trouve mes marques et retrouve certains logiciels que j'utilisais sous windows. Un seul logiciel me manque vraiment, il s'agit de DéKiBulle un lecteur audio que j'apprécie particulièrement.

À la découverte de ruby

Plus pour m'amuser que pour autres choses, en 2007, je commence à développer un petit script, en bash, nommé ZiK qui me permet de lire mes fichiers audio. Puis je décide de développer une interface graphique et un lecteur audio digne de ce nom dans l'idée d'apprendre un langage de programmation. Après avoir hésité entre ruby et python, j'opte pour ruby. Si j'avais su que python est livré en standard dans la plupart des distributions, mon choix aurait peut-être été différent. Cependant, je ne regrette pas mon choix, je trouve ruby plus sexy (avis totalement orienté par mon expérience).

À la (re)découverte des paquets debian

J'ai découvert les paquets debian côté « fabricant » lorsque j'ai voulu distribuer ZiK sous la forme d'un paquet debian.
J'ai procédé en plusieurs étapes.
J'ai tout d'abord, tout simplement, invoquer dpkg-deb --build sur une arborescence locale imageant une installation de ZiK en prenant soin d'ajouter un dossier DEBIAN contenant les fichiers control et changelog.
J'ai ensuite écrit un fichier rules afin de pouvoir publier un paquet sur mon ppa (debuild et pbuilder sont devenus alors très utiles). La qualité de paquets disponibles sur ce dernier laissent à désirer.
La troisième étape implique la création de paquets plus propres qui seront, si possible, intégrés à debian.

Contribuer à debian

Afin de pouvoir définir des raccourcis clavier globaux pour mon application ZiK, je développe une bibliothèque nommée rghk (ruby global hotkeys). La construction de son paquet debian étant relativement aisé, je me suis proposé pour inclure cette bibliothèque. Elle est maintenant disponible pour debian unstable (ainsi que sous ubuntu 10.10) sous le nom libglobalhotkeys-ruby. Elle ne devrait cependant pas être incluse dans squeeze car son arrivée dans les dépôts à précéder le gel seulement de quelques heures.
Je remercie Lucas Nussbaum de l'équipe pkg-ruby-extra pour son aide lors du processus d'inclusion.
Ayant réussi mon galon d'essai, ZiK devrait prochainement rejoindre debian (en version 0.15 ou 0.16).

Mes codes

rghk

rghk permet de définir des raccoucrcis clavier globaux (actifs même si l'applications est en arrière plan).
Le code suivant permet d'afficher Binded lorsque les touches control et a sont enfoncées. Un exemple plus détaillé est disponible avec le code source.
 
 require 'globalhotkeys'#Since 0.2.0 
 #require 'rghk'#for older version 
 kb=GlobalHotKeys::KeyBinder.new 
 kb.bind(GlobalHotKeys::KeyVal.from_name('a'), GlobalHotKeys::Modifier::CONTROL_MASK){puts 'Binded'} 
 #GlobalHotKeys::KeyVal.from_name function is implemented since 0.2.0 
 kb.unbind 

La dernière version de rghk, pas encore disponible sous debian, apporte des changements importants :
l'appel à require a été modifié,
la possibilité d'obtenir la « valeur d'une touche clavier » depuis une chaîne de caractère.

ZiK

Si vous voulez tester le lecteur audio nommé ZiK, un paquet debian est disponible. Les instructions pour l'installation du paquet sont disponibles sur le wiki.
Pour les utilisateurs d'Ubuntu un ppa permet une installation aisée de ZiK sous ubuntu. L'installation est détaillée sur le wiki.
N'hésitez pas à faire part de vos impressions.

Vous devez être identifié pour poster un commentaire.

16/08/2010

Permalink 19:42:38, Catégories: Récapitulatif, ZiK, debian-fr, 201 mots   French (FR) , vinc-mai

Contribuer au graphisme de ZiK

Bonjour.

ZiK utilise intensivement le thème de l'utilisateur. Seules quelques images sont fournies directement par le lecteur audio.
J'aimerai personnaliser ces dernières. Cependant, je n'ai pas le talent nécessaire pour créer ces images. Je lance donc un appel à contribution.

Pour l'instant six images sont concernées. On peut les apercevoir au niveau du bouton qui permet de changer de vue. Il faudrait donc des images représentant :
la vue navigateur,
la vue liste de lecture,
la vue générale (navigateur et liste de lecture),
la vue compacte (navigateur et liste de lecture cachés),
la vue cd,
la vue radio.

Par la suite, trois autres images devraient être nécessaires. Elles représenteront :
un dossier,
un fichier audio,
une liste de lecture (fichiers m3u, pls ou xspf...).
Elles seront visibles depuis la partie navigateur.

J'aimerai que les images soient au format svg et sous une licence (Creative Commons ?) permettant leur distribution avec les sources de ZiK ainsi qu'une intégration facile à des distributions linux (ex : debian).

N'hésitez pas à me contacter si vous avez des questions où si vous êtes intéressés pour contribuer à ZiK.
Je remercie d'avance toute personne me contactant à ce sujet.

Vous devez être identifié pour poster un commentaire.

06/08/2010

Permalink 17:46:00, Catégories: Récapitulatif Linux, ZiK, rghk, debian-fr, 79 mots   French (FR) , vinc-mai

[Linux] Debian

Afin de pouvoir définir des raccourcis clavier globaux, ZiK utilise rghk. rghk est une bibliothèque ruby qui permet de définir raccourcis clavier pour une application graphique fonctionnant même si la fenêtre de l'application n'est pas active.
rghk est maintenant intégré au projet debian. Le paquet source se nomme libglobalhotkeys-ruby. Je ne pose la question si je dois renommer rghk (rglobalhotkeys, ruby-globalhotkeys ?).
Suite à cette première contribution à debian, je compte inclure ZiK (en version 0.15 ?).

Vous devez être identifié pour poster un commentaire.

01/08/2010

Permalink 16:36:45, Catégories: Nouvelle version, debian-fr, 153 mots   French (FR) , vinc-mai

Sortie de la version 0.14.0 de ZiK

ZiK version 0.14 est sorti. De nombreuses modifications sont incluses dans cette version.

En sélectionnant l'option session unique dans vos préférences, les fichiers ouverts depuis une application externe (par exemple nautilus) sont ajoutés à la liste de lecture au lieu d'être ouvert dans une nouvelle fenêtre.
Un nouveau module permettant l'édition automatique de vos tags via musicbrainz.org fait son apparition.
La modification des configurations des modules est maintenant permise même si le module n'est pas chargé.
L'affichage de la durée des pistes fonctionne maintenant pour presque tous les formats audio.
Amélioration du support du format xspf
Ajout possible de liste de lecture depuis une application externe.
Résolution de bugs.
Mise à jour de la traduction.

ZiK fonctionne maintenant sous ruby 1.9. De nombreux bugs concernant ce point ont supprimés.

N'hésitez pas à faire part de vos remarques sur le forum ou à commenter ce billet.

Vous devez être identifié pour poster un commentaire.

Liste des blogs

Blog du projet ZiK

Catégories


Rechercher

<  Décembre 2011  >
Lun Mar Mer Jeu Ven Sam Dim
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web