Category: Logiciels

navigate into koha code with vim

Par mc, 13 juillet 2010 10 h 11 min

this is an update for http://www.tinybox.net/2009/06/27/edit-koha-code-with-vim/


" if vim is in a koha root
if isdirectory('C4')
" Verb: ( n = navigate, o = open )
" Adjective: ( o = opac, i = intranet )
" Noon: ( t = template, n = include )

let g:koha_itmpl='koha-tmpl/intranet-tmpl/prog/en/modules' " intranet templates
let g:koha_iinc='koha-tmpl/intranet-tmpl/prog/en/includes' " intranet includes
let g:koha_otmpl='koha-tmpl/opac-tmpl/prog/en/modules' " opac templates
let g:koha_oinc='koha-tmpl/opac-tmpl/prog/en/includes' " opac includes

" so to open an intranet template, go on it with cursor and type ,oit

nnoremap ,nit :e =g:koha_itmpl
nmap ,oit ,nit/
nnoremap ,nii :e =g:koha_iinc
nmap ,oii ,nii/

nnoremap ,not :e =g:koha_otmpl
nmap ,oot ,not/
nnoremap ,noo :e =g:koha_oinc
nmap ,ooi ,ooi/

" add include in the path ... so gf works inside templates
exec 'set path+='.g:koha_iinc

endif

Dance, Koha, dance !

Par mc, 3 juin 2010 7 h 51 min

At the last Biblibre‘s CodeRun (beginning of May 2010), i wrote the first lines of a CGI wrapper for Dancer. The initial goal was to be able run legacy CGI.pm scripts written with the OO style on the top of Dancer

- with a minimal amount of changes (or even better: no change at all)
- every required changes must keep CGI compatibility.
- add the ability to share the bytecoding and the values of the loaded modules between http requests (as mod_perl does) to reduce time response and load average.
- make the CGI applications easier to debug (using dancer standalone server, the debug console and warning catch)

The proof of concept is to make Koha ILS run on top of Dancer. I wrote a kohadance.pl script for that.

I spent some time to work on it since, wrote some test files to make sure that i’m able to use %ENV, return correct http responses, correctly provide access to the http get and post parameters, correctly transmit the $query->header settings to Dancer, handle cookies, … . All the test suite runs successfully.

The results seems to be better than expected:
- the only code i had to change in koha is to replace the exit call by an safe_exit subroutine


sub psgi_env { any { /^psgi\./ } keys %ENV }
sub safe_exit {
if ( psgi_env ) { die 'psgi:exit' }
else { exit }
}

and make the CGI wrapper see the psgi:exit die as a normal termination. If anyone have an idea to trap ‘exit’ as it in the code: i’ll be very pleased to know.

- I’m now able to mix CGI.pm and Dancer code. So if you choose to break the CGI compatibility, you can port your script to a Dancer app step by step.

But there are still bugs! Speaking about koha: i can now log in and out the intranet, navigate on koha pages without experimenting some weird error or crash but (lot of)? stuff doesn’t work (for example: the main search doesn’t work). If you want to try yourself:

* git clone http://github.com/sukria/Dancer.git and git://github.com/eiro/Dancer-CGI-wrapper.git
* go to your koha root
* apply Dancer-CGI-wrapper/koha/0001-add-PSGI-ability.patch
* export KOHA_CONF
* run perl Dancer-CGI-wrapper/koha/kohadance.pl
* connect to http://localhost:3000 and http://localhost:3000/opac with your browser
* enjoy the kohadance « no search » opac ;)

Next steps are:

* use koha to go on debugging by identifying malfunctions, write tests and make them work
* make the package more CPAN ready. It’s already packaged thanks to module-starter but it is not a real Dancer plugin yet (bad namespaces, no use of Dancer::Plugin mechanics, no real documentation)

Help or feedback are welcome. please fork me on github :) .

euler 1 en zsh

Par mc, 30 janvier 2010 18 h 48 min

as we debated about reusability in shell scripting. i wrote a solution for the euler’s project problem 1.

- multiple_of writes a condition string usable by awk.
- sum compute the sum of the stdin entries that matches the condition
- seq is a standard command that generate a list of natural

multiples_of () { print -n '!( $0 % '$^@') || ' 0 }</code>
 
sum () {
awk "$( $@ )"' { i=+$0 }
END { print i }
'
}
 
seq 9 | sum multiples_of 3 5

Un nouveau « home » pour Android

Par kyusan, 21 janvier 2010 17 h 26 min

Depuis aujourd’hui un nouveau home (l’écran d’accueil de votre téléphone) est disponible sur le Market : Slide Screen

A peine un jour que je l’essaye et je ne peux déjà plus m’en passer, c’est sobre, simple et efficace (tout ce que j’aime en gros :) ). Au lieu d’essayer de décrire le principe, voici une vidéo de démonstration :

A savoir que l’application coûte environ 5 euros mais qu’il y a une version gratuite qui utilise le bas de l’écran pour faire la pub de la version payante.

ps : il manque juste un espace dédié à Google Chat et elle sera parfaire :)

Installer Songbird sous Ubuntu

Par kyusan, 20 janvier 2010 13 h 16 min

Un article assez proche du dernier que j’ai écris mais qui peut servir à ceux qui ont le même problème que moi avec Songbird 1.4.3 (qui refuse de se lancer à cause du module Python de Gstreamer sous Ubuntu Karmic). L’idée est d’installer la version de développement via un dépôt PPA :

sudo add-apt-repository ppa:songbird-daily
sudo aptitude update
sudo aptitude install songbird

Ainsi vous allez obtenir la version 1.5.0a, bien qu’elle ne soit pas la version stable officielle, je n’ai eu aucun soucis avec.

Migration de Drupal vers WordPress terminée

Par kyusan, 11 janvier 2010 18 h 30 min

Le blog est passé de Drupal à WordPress, pourquoi ce changement ? Après mon enthousiasme pour Drupal, j’ai fini par être lassé par les multiples mises à jour de sécurité et de perdre enormement de temps pour la mise à jour des plugins.

Poursuivre la lecture 'Migration de Drupal vers WordPress terminée'»

Profiter de la résolution en « .local » sous Windows

Par matts, 22 février 2009 23 h 14 min

J’avais (très) brièvement évoqué dans ce billet la possibilité de se connecter aux machines du réseau local avec une résolution de nom du type « machine.local » en utilisant Avahi.

Mais comment faire pour bénéficier de cet avantage lorsqu’on est sous Windows ?

Avahi est en réalité une implémentation pour *nix de Zeroconf, un ensemble de techniques pour la création « automatique » de réseaux IP. La partie qui s’occupe de la résolution de noms s’appelle mDNS.

Il existe d’autres implémentations de Zeroconf, notamment Bonjour, utilisée principalement sous MacOS.

Apple a cependant mis à disposition une version de Bonjour pour Windows, qui est téléchargeable ici : http://support.apple.com/downloads/Bonjour_for_Windows

Cette version comporte mDNSresponder, qui s’occupera des adresses en « .local ».

ipython vs vim: doc et navigation

Par mc, 25 janvier 2009 2 h 06 min

NOTE: BBcode est completement debile: il vire les symboles lt; et gt;, j’ai remplacé par (( et )) dans le présent doc.

cette fois pour la doc: a nouveau, j’ai depuis des années avec vim ce que tu as trouvé dans ipython.

K permet d’utiliser ‘keywordprg’ pour acceder a la documentation d’un mot clef. Par defaut, keywordprg vaut man -s, dans le ftplugin de perl, c’est redefini pour etre perldoc -f.

donc: je suis dans un fichier perl, j’ai tappé split mais la syntaxe m’échappe ? je me mets sur le split, je tappe K .. et voila …

maintenant, pour les modules: si je tappe K dessus, il va ouvrir le perldoc et me balancer une erreur: c’est man qu’il me faut: mieux: le plugin man de vim!

Ajoute vite ca dans ton vimrc:

run ftplugin/man.vim
nnoremap ,K :exec ‘Man ‘.expand(‘((cfile))’)((cr))

voila, maintenant, je vais sur le nom du module, je fais ,K et je suis dans la bonne doc … Je veux voir le code ce ce module? pas de pb: je me remets sur le nom du module et je fais ((c-w))((c-f)) (ben ouais … un module c’est un fichier) …

on continue: tu veux naviguer dans tes fonctions perl amoureusement écrites?

sudo aptitude install ctags
ctags --languages=perl -R -o TAGS

maintenant, mets toi sur ton appel de fonction et tappes ((c-])) … t’es sur la declaration … ((c-o)) pour te ramener sur l’appel.

bon … en fait tu sais pas trop et tu veux voir la fonction *et* la signature … :sp((cr)) puis ((c-])) … voila: en haut la fonction, en bas, l’appel!

evidement, tu peux ajouter les tags de tes modules favoris si besoin était …

pour ce qui c’est de la completion: il faut savoir que ((c-n)) et ((c-p)) vont aussi chercher dans les modules. Ca permet une completion qui n’est pas sensitive au contexte du tout mais ca peut aider. Il y a une fonction autocomplete pour python, il faudrait voir si ((c-x))((c-o)) c’est plus sympa.

Découper un fichier vidéo

Par matts, 18 janvier 2009 23 h 58 min

Comment découper une portion de vidéo au format Xvid sous Windows ?

- Télécharger et installer VirtualDub

- Télécharger et installer les codecs Xvid

- Lancer VirtualDub, ouvrir la vidéo

- Aller au début de la partie qu’on veut découper

- Faire stop

- Appuyer sur l’avant dernière icône de la barre d’icônes pour marquer le début de la sélection

- Se déplacer à la fin de la partie qu’on veut découper

- Appuyer sur la dernière icône de la barre d’icônes pour marquer la fin de la sélection

- Menu « Edit » -> « Crop to selection »

- Dans les menus « Audio » et « Video », s’assurer que « Direct Stream Copy » est bien coché.

- Menu « File » -> Save as AVI, choisir un nom de fichier, sauver.

Interagir avec un Amarok distant via SSH et Dcop

Par matts, 17 janvier 2009 12 h 30 min

Il arrive souvent que je sois dans le canap’ avec le PC portable et éventuellement un chat sur les genoux, et que j’aie envie d’interagir avec l’Amarok qui passe de la musique sur le PC fixe relié à la chaine Hi-Fi.

Et bien, avec SSH et Dcop, c’est possible !

On se connecte en SSH à la machine en question :

ssh ma_machine

En oubliant pas de récupérer le display, on peut :
Récupérer le nom de l’artiste ou de la chanson qui passe actuellement :

DISPLAY=:0 dcop amarok player artist
DISPLAY=:0 dcop amarok player title

Passer à la chanson suivante :

DISPLAY=:0 dcop amarok player next

On peut aussi mettre en pause, rajouter des chansons à la liste de lecture, activer ou désactiver le mode aléatoire, etc. Pour avoir la liste des actions disponibles, c’est :

DISPLAY=:0 dcop amarok

Et finalement, pour ceux qui utilisent kirocker, on peut également le passer en mode plein-écran, en passant par Kicker cette fois :

DISPLAY=:0 dcop kicker Kirocker showFullScreen

Super, plus besoin de se lever ! :-)

Panorama Theme by Themocracy