Darkoneko’s Weblog

Dimanche 1 novembre 2009

Personnalisons Wikipédia : raccourcis clavier en mode édition

Ce billet fait partie de la série “Personnalisons Wikipédia“.

La plupart des logiciels WYSIWYG permettent de modifier l’apparence d’un texte (mise en gras, italique, souligné, etc) à l’aide de raccourcis clavier (respectivement ctrl+b, ctrl+i, ctrl+u, …) La personnalisation d’aujourd’hui vous permettra de créer des raccourcis clavier en JavaScript afin d’avoir des facilités similaires lors de vos éditions sur Wikipédia

Introduction

(ceux qui ne s’intéressent pas aux explications peuvent passer directement au code complet, à la fin du billet)

Le code du jour fait appel à la notion d’évènement, pour lesquels vous trouverez plus d’informations sur Wikibooks. Les évènements qui nous intéressent ici sont ceux qui nous permettront de savoir quand l’utilisateur appuie sur une certaine combinaison de toucher sur le claviers, et sont au nombre de deux :

  • “appui sur une touche du clavier” (onkeydown)
  • “relachement d’une touche du clavier” (onkeyup).

Ces deux évènements permettent d’accéder en interne à un code correspondant à la touche qui viens d’être appuyée ou relachée.

Histoire de nous faciliter la vie, MediaWiki possède déjà une fonction JavaScript permettant de modifier un texte sélectionne comme l’on veux. Cette fonction est par exemple utilisée lorsque vous cliquez sur un des boutons au dessus (la barre de menu) ou en dessous (les listes de caractères spéciaux), en mode édition.

Cette fonction est insertTags(). Elle prend 3 paramètres, qui sont respectivement :

  • les caractères à ajouter avant la sélection
  • Les caractères  à ajouter après la sélection
  • Le texte par défaut,  s’il n’y avait pas de texte séléctionné.

Exemple pour mettre un texte en souligné :


 insertTags('<u>', '</u>', 'souligné');

Note : Le code n’a été, pour l’instant, testé que sous Firefox 3.0 et 3.5.4. N’hésitez pas à me donner un feedback sur le bon fonctionnement (ou non) sur d’autres versions et navigateurs.

Note2 : il faut savoir que les raccourcis défini en javascripts seront prioritaires sur ceux du logiciel (du moins avec firefox)

Passons au code…

Conteneur

Histoire d’être un minimum propre, notre code sera, comme pour les autres de mes billets, encapsulé dans une fonction


function keyboardShortcuts() {
  // le code sera ici
}

 

Utilisation des évènements

La méthode pour définir une action (= l’appel à une fonction) sur les évènements qui nous intéresse est la suivante :


  document.onkeyup = function(e) { //l'user relâche une touche
    //code à executer
  }

  document.onkeydown = function(e){  //l'user appuie sur une touche
    //code à executer
  }

Problématique de la double touche

Problème : nous avons besoin de savoir lorsque l’utilisateur appuie à la fois sur “ctrl” et une lettre. Or, l’événement de base ne permet de le faire que pour une seule touche à la fois
Solution : créer une variable qui sait si ctrl est actuellement appuyé ou non


  var isCtrl = false; //la touche commence "non enfoncée"

  //l'evenement "onkeyup" est appelé à chaque fois qu'une touche est relachée.
  document.onkeyup=function(e) {
    if(e.which == 17) isCtrl=false;  //l'user relâche la touche ctrl (qui a le code 17). La variable passe a False
  }

  //l'evenement "onkeydown" est appelé à chaque fois qu'une touche est pressée.
  document.onkeydown=function(e){
    if(e.which == 17) { //l'user appuie sur la touche ctrl. La variable passe a True
      isCtrl=true;
    }
  }

Gestion des actions en elle-même

J’ai géré ci dessous 5 raccourcis :

  • ctrl+b, pour mettre un texte en gras
  • ctrl+i, pour mettre un texte en italique
  • ctrl+l (L minuscule), pour faire un lien interne
  • ctrl+m pour mettre le texte entre {{ }} et faire un modèle
  • ctrl+u, pour souligner un texte

D’autres sont ajoutables à volonté, attention juste à ne pas utiliser des lettre dont vous vous servez souvent en édition pour vos raccourci (par exemple ctrl+x/c/V pour couper/copier/coller)

(sera mis dans la fonction d’onKeyDown)


    if( isCtrl == true ) {
       switch (e.which) { //quelle touche a été enfoncée ?
  	  case 66: //b
            insertTags("'''", "'''", 'gras');
            return false
	    break;
	  case 73: //i
            insertTags("''", "''", 'italique');
            return false
	    break;
          case 76: // l
            insertTags('[[', ']]', 'lien interne');
            return false
	    break;
          case 77: // m
            insertTags('{{', '}}', 'modèle');
            return false
	    break;
	  case 85: //u
            insertTags('<u>','</u>', 'souligné');
            return false
	    break
       }
     }

Résultat final

Pour les flemmards et ceux qui ont peur d’en oublier un morceau, le code complet ci dessous; recopiable tel quel :


function keyboardShortcuts() {

  var isCtrl = false;

  document.onkeyup=function(e) { //l'user relâche la touche ctrl. La variable passe a False
    if(e.which == 17) isCtrl=false;
  }

  document.onkeydown=function(e){
    if(e.which == 17) { //l'user appuie sur la touche ctrl. La variable passe a True
      isCtrl=true;
      return;
    }

    //gestion des ctrl+lettre que l'on veux ajouter.
    if( isCtrl == true ) {
       switch (e.which) { //quelle touche a été enfoncée ?
  	  case 66: //b
	    insertTags("'''", "'''", 'gras');
            return false
	    break;
	  case 73: //i
	    insertTags("''", "''", 'italique');
            return false
	    break;
          case 76: // l
	    insertTags('[[', ']]', 'lien interne');
            return false
	    break;
          case 77: // m
	    insertTags('{{', '}}', 'modèle');
            return false
	    break;
	  case 85: //u
	    insertTags('<u>', '</u>', 'souligné');
            return false
	    break
       }
     }
  }
  return true
}

//la fonction qui gère tous les appel de fonctions (du moins dans mes divers billets :)
//!\ CELA VEUX DIRE QU'IL FAUT FUSIONNER AVEC LA FONCTION main() EXISTANTE, SI VOUS EN AVEZ UNE /!\
function main() {
  // [...  autres fonctions  ... ]

   if (wgAction == "edit" || wgAction == "submit")  { //à n'appeller que si en mode edition, sinon c'est inutile
      keyboardShortcuts()
   }
}

addOnloadHook(main)

Et Voili ! Comme d’habitude, n’oubliez pas de forcer le rafraichissement du monobook (ou vector) après avoir sauvegardé.

Source : Ce billet sur Lixya.org ; et un merci à Phe pour le coup de main :)

Edit : retiré un “]” qui trainait au milieu du code – forcement, ça marche mieux maintenant – désolé :(

Vendredi 30 octobre 2009

Les serveurs de Wikimedia Commons sont en surcharge

Les serveurs de Wikimedia Commons sont en surcharge

Wikimedia Commons” (ou plus simplement “Commons“)  est la banque de médias  centrale des projets Wikimedia, c’est à dire qu’elle stocke la plupart des images utilisées sur les différentes Wikipédias, Wikibooks, Wikispecies, etc.

Il y a actuellement environ 4000 nouvelles images importées sur Commons chaque jour, mais différents partenariats (voir par exemple, côté partenariats  celui ci et celui là) nécessitent des “batch“, des imports massifs de dizaines voire centaines de milliers d’images par bot dans un laps de temps relativement court.

Il y a une petite semaine, j’ai surpris une discussion intéressante entre un tecchie de la Wikimedia Foundation et un dresseur de bot sur le canal IRC  des développeurs, #wikimedia-tech .  J’y ai appris que l”espace disque des serveurs sur lesquels tournent Commons se fait rare. Pour fonctionner correctement, le système utilisé pour le stockage des images recommande fortement de ne pas remplir l’espace disque à plus de 80%. Nous avons dors et déjà dépassé cette limite (86%). D’après eux, à partir de 90% ça va commencer à sentir très mauvais  (voir ce qui est arrivé en juillet dernier).

De nouveaux serveurs ont dors et déjà été commandés, mais il n’arriveront que d’ici 3 à 5 semaines (plus 2/3 jours d’installation). C’est assez tard, mais 1) il y a des soucis de recrutements à la Wikimedia Foundation pour ces postes, ils sont en sous effectifs pour planifier les commandes et gérer le parc serveur en général 2) Sun (le fournisseur) est long pour la livraison de ce genre de commandes.

Pas de panique toutefois : les serveurs sont largement en mesure de supporter la charge normale (4000/jour) jusqu’à l’arrivée des renforts ; On ne peut par contre pas en dire autant si ça monte à 40.000/jour (typiquement, en cas d’import massif), donc les dresseurs de bots s’occupant des batchs ont été contactés pour leur demander d’appuyer  sur “pause” jusqu’à ce que la jauge d’espace libre repasse dans le vert.

Une fois le nouveau matos installé, Commons disposera d’un total de 24 Teraoctets de stockage

NB : par curiosité, j’avais demandé si supprimer les plus anciennes  “images effacées” (qui restent habituellement  physiquement sur les disques, pour permettre d’annuler la suppression ) des serveurs pour gagner de la place était une bonne idée, on m’a demandé en réponse si j’avais envie de déclencher une émeute chez les Wikipédiens :)

Samedi 24 octobre 2009

Le comité d’arbitrage de la Wikipédia en langue allemande démissionne

7 des 9 membres du Schiedsgericht (comité d’arbitrage) de la Wikipédia en langue allemande ont démissionné début octobre 2009.

Les raisons invoquées sont multiples :

  • Manque d’un mandat/de règles claires quand à la gestion de certains problèmes
  • Manque d’autorité vis à vis de la communauté
  • Conflits internes

Pour en avoir discuté avec des contributeurs locaux à l’époque (courant avril 2007), je sais que le Schiedsgericht a été créé parce que la Wikipédia allemande avait un mal fou à se débarrasser de certains de ses  trolls. Visiblement, ça n’aura pas tenu sur la durée.

Ce type de problèmes n’est pas spécifique à nos cousins germains : Notamment, la Wikipédia  espagnole a voté la  dissolution de son “Comité de Resolución de Conflictos en avril 2009 dernier ; et l’on pense aussi aux diverses critiques (justifiées ou non) envers celui de la Wikipédia Francophone (quoiqu’il fonctionne pas trop  mal, je trouve). Sans avoir pour l’instant vérifié (je me renseignerais ces prochains jours) il est probable que ceux de certaines des autres langues rencontrent des problèmes similaires.

Au fond, peut-être que le problème est simplement d’avoir voulu recopier ce qui se fait sur le project original, la Wikipédia anglophone ; cela peut venir d’une différence de moeurs/culture (là bas, Jimmy Wales est “benevolent dictator” et peut théoriquement trancher tout débat litigieux), d’une mauvaise adaptation (durée des mandats, modes d’élections, status, etc),  ou de tout un tas de problèmes de contexte (prendre un bout d’une machine sans prendre le reste est souvent sources de problèmes).

La morale à 2 balles de l’histoire -mes morales valent rarement plus-  est que ce qui marche là bas ne marchera pas forcément ailleurs (et au passage, certains contributeurs avec leur “enwiki ceci, enwiki cela” gagneraient à l’admettre).

(source)

Mercredi 21 octobre 2009

Anime de la saison d’automne 2009

cliquez pour agrandir
descriptions des animes de la nouvelle saison : cliquez pour agrandir

Trucs que je regarde

notes de A (génial!) à C (passable).

  • To aru kagaku no Railgun (a certain scientific railgun) : Side story de To aru majutsu no index (diffusé fin 2008) et adapté du manga du même nom (que j’ai beaucoup apprécié), j’en espérais de grandes choses, mais… les 3 épisodes que j’en ai vu sont une grosse déception. La rencontre “forcée” entre les 4 personnages principaux dès le premier épisode est un beau gachis, entre autres choses.  Note : C+
  • Seiken no blacksmith (the sacred blacksmith) : adapté d’une light novel, l’histoire se déroule dans un univers de fantasy plutôt classique, et l’histoire semble avoir un bon potentiel. Note : B
  • Sora no otoshimono (Heaven’s lost property) :  tiré du manga, l’histoire est relativement bête et ecchi (quoique la trame de fond est intéressante). Je ne suis habituellement pas fan de ce genre d’anime, mais la fin de l’épisode 2 m’a littéralement fait mourir de rire. Note : C
  • 11eyes : tiré d’une visual novel. La trame de l’histoire est interressante (univers parallèle, tout ça). Note : B+

Vous remarquerez que je n’ai attribué aucun “A”. C’est parce que pour ce que j’en ai vu, cette saison d’anime n’a aucune œuvre qui sorte vraiment du lot (alors que dans la précédente, il avait entre autres Bakemonogatari).

Trucs que je regarderais/testerais

  • Kimi ni todoke : l’histoire était absolument adorable au format manga… mais je supporte généralement assez mal les shoujo en version animée.
  • Sasameki koto : un bon potentiel ; à tester (avec des réserves similaires à celle pour kimi ni todoke).
  • Shakugan no Shana S : la suite de l’exellente série sous forme de 4 OAV, en attendant la prochaine saison.

Trucs que je regarderais peut-être

  • Asura Cryin’ saison 2 : j’ai regardé la première saison… L’histoire ne cassait pas franchement des briques, mais je suis (un peu) curieux de voir comment ça finira.
  • Tegami bachi (letter bee) : le manga était assez sympathique, bien qu’un peu trop enfantin à mon gout. Sera peut très bon ou alors écœurant de gaminitude…ou un mélange des deux.
  • Natsu no arashi saison 2 : …une fois que j’aurai regardé la première saison, et si elle me plait. C’est de l’auteur du génialissime School rumble (même si ça n’en atteint probablement pas le niveau), donc pas de raison que ça ne soit pas plaisant à regarder, en fait.
  • Darker than black saison 2 : Comme natsu no arashi, “si un jour je finie de regarder la première saison”
  • Kuuchuu buranko (Trapeze) : d’après le trailer, un véritable  OVNI graphique. Je suis pas du tout sur d’apprécier, mais c’est à tenter.

Trucs que je ne regarderais pas

  • Battle spirit : un clone de yugi-oh, destiné aux enfants.
  • Queen’s Blade : ecchi sans histoire -_-;
  • Nyan koi : ecchi, sans histoire -_-;
  • Kämpfer : pire que les deux ci dessus réunis.
  • InuYasha : beurk.
  • Yumeiro Pattisière : le design ne m’inspire pas, le niveau probable de l’histoire non plus (pour enfants).
  • Miracle train : vu la tronche du truc, ça ne sera pas ma tasse de thé
  • anyamaru tantei kiruminzuu : idem
  • Nogizaka Haruka no Himitsu saison 2 : la première saison était chiante à mourir.
  • Gokyoudai monogatari : mon dieu, le design O_o
  • Fairy Tail : le manga m’a pas inspiré. L’anime de Rave (du même auteur) non plus.
  • Stitch : pas mon truc.
  • Kiddy girl-and : Beurk.  Bien qu’ayant apprécié la première saison (en 2002), la nouvelle héroïne à tout de la “coconne joyeuse et tête en l’air” et ça me donne pas envie de regarder. Aaah, la “moé-ification” et ses méfaits…

Unrelated note

La plupart de ces animes n’ont pas encore leurs fiches sur frwiki ! C’est honteux, j’ai du lier aux articles anglais du coup… De valeureux traducteurs dans la salle ? (rêvons)

Mercredi 23 septembre 2009

Wikipédias : ratio éditeurs/locuteurs

J’vous présente ci dessous, pour les langues les plus parlées, une comparaison/ratio entre le nombre de locuteurs d’une langue et le nombre de contributeurs (ayant au moins 5 éditions) sur la Wikipédia correspondant à cette langue.

En fait, on n’est pas si mal placé par rapport aux anglophones ; et je trouve le taux de participation de nos cousins germains particulièrement remarquable. Bien sur, les esprits chagrins rétorqueront que le nombre d’éditeurs n’est pas nécessairement représentatif de la qualité des articles :)

Wikipédias : ratio éditeurs/locuteurs

Note pour les indicatifs “regions” (enfin ceux utilisés) :

  • AF : Afrique
  • AS : Asie
  • AU : Australie
  • EU : Europe
  • NA : Amérique du nord (north amercia)
  • SA : Amérique du sud (south america)

(source : billet d’Eric Zatche sur Infodisiac)

Mardi 22 septembre 2009

Détails sur la dotation d’Omidyar Network à la Wikimedia Foundation

J’en parlais dans un autre de mes billets, Omidyar Network a annoncé récemment une dotation allant jusqu’a 2 millions de dollars US à la Wikimedia Foundation (WMF). Ci dessous plus d’informations sur le sujet ->

Détails sur la dotation d'Omidyar Network à la Wikimedia FoundationLa dotation se répartira en 4 étapes :

  • 500.000 USD  sans condition et livrés très prochainement
  • jusqu’à 500.000 USD en “matching funds”* lors de la prochaine levée de fond.
  • 500.000 USD  sans condition, qui seront livrés un an après ceux de la première étape.
  • 500.000 USD au printemps 2011 si les objectifs fixés sont atteints.

* le terme “matching funds” signifie (dans le contexte des levées de fond de la WMF) qu’Omidyar Network s’engage, pour tout (gros) don accordé à la WMF, à donner une somme équivalente ; ici dans dans la limite de 500K USD.

Je dois dire que je suis assez surpris : la dotation était initialement présentée comme dépendant directement des résultats vis à vis d’objectifs donnés ; or il s’avère qu’en pratique seulement un quart du pactole en dépend. On va pas s’en plaindre, remarque :)

Pour les curieux/curieuses d’entre vous, la source (voir plus bas) cite aussi des explications de Sue Gardner vis-à-vis de quelques éléments :

  • la non diffusion des chiffres exacts à atteindre dans le cadre de la dotation
  • l’impression d’une partie de la communauté qu’Omidyar Network a “acheté un siège au board” avec sa dotation.

(source : wikipedia Signpost – en anglais)

Lundi 21 septembre 2009

Wikimedia Italia attaquée en justice pour 20.000.000€

Wikimedia Italia attaquée en justice pour 20M€Oui, vous avez bien lu : Wikimedia Italia -le chapter italien de la Wikimedia Foundation (WMF)-, ainsi que son ancienne présidente Frieda Brioschi, sont actuellement poursuivis en justice, et les plaignants leur réclament la modique somme de vingt millions d’euros.

Les plaignants sont Giampaolo Angelucci (un membre du parlement Italien) et son fils. La “raison” serait des éditions intervenues sur l’article du père, et qui serait diffamant pour les deux personnes.

Je vous laisse lire la source (en anglais, mais sera probablement bientôt traduit) concernant le merdier que sont les procédures judiciaires italiennes, et me contenterais de dire ceci :

Comme d’habitude, on a affaire a une bande de (…) pas foutus de se renseigner au préalable sur qui est responsable de quoi ; voire pire, qui ont peut-être fait ça en connaissance de cause… mais quoi qui l’en soit, on ne rappelera jamais suffisament que :

Wikimedia Italia, comme comme Wikimedia France, Wikimedia CH et tous les autres chapters,  n’est qu’une association indépendante visant à la promotion des projets de la WMF.

  • Ils ne possèdent pas les serveurs faisant tourner les différentes Wikipédia, wikinews, etc. (c’est la WMF)
  • Ils n’ont aucun accès particulier sur lesdits serveurs
  • Il n’ont aucun droit/devoir particulier de modération ou responsabilité éditoriale  sur les articles italiens de Wikipédia, wikibooks, wikisource, etc.
  • Ils n’ont pas de liens juridiques vis à vis de la Wikimedia Foundation.

Vous l’aurez compris, attaquer en justice Wikimedia Italia au sujet d’un article de la Wikipédia italienne, c’est à peu près aussi intelligent que poursuivre en justice un mangeur de saucisson comme responsable de la grippe porcine. C’est du grand n’importe quoi.

(sources : cette page ; bistro italien)

Samedi 19 septembre 2009

l’Usability Team ne manque pas de saveurs

Ou plus exactement , l’Usability Team ne manque pas de fruité. Cela se repère à leurs noms des différentes versions du skin (habillage de MediaWiki) qu’ils sont en train de mettre au point.

J’avais déjà fait remarquer tantôt qu’ils suivaient l’alphabet dans leurs noms de versions, mais mon inculture en noms fruitiers m’a fait louper le plus important, du moins jusqu’à hier :)

Voyons donc :

Version 1 : Açaï

Acai-berry

L’açaï est le fruit d’un palmier originaire d’amérique du sud, le Euterpe oleracea.

C’est cette version que vous pouvez actuellement tester, en choisissant le skin “vector” dans vos préférences utilisateur.

Version 2 : Babaco

400px-Babaco

Le Babaco (Vasconcellea ×heilbornii) est le nom d’un arbre  hybride (et de son fruit) originaire d’Ecuador, la République de l’Equateur. Là encore, un fruit originaire d’amérique du sud.

Cette version du skin “vector” devrait etre disponible partout d’ici quelques semaines ; en attendant, vous pouvez la tester sur des wikis “prototype”.

Version 3 : ??

Donc, nous savons qu’il s’agira d’un fruit et qu’il commencera pas la lettre C. Mais lequel ?

Je vous le donne dans le mille, ça sera un…

250px-Lemon

Ouip, la 3eme version de l’habillage/skin de l’Usability Team se nommera Citron. Je dois dire que ma première réaction fut la surprise : “comment, ils vont utiliser le terme français Citron, au lieu de l’anglais Lemon ?”, mais foin de franco-centrisme ! Ce même mot est utilisé pour désigner ce fruit dans au moins deux autres langues.

(source)

Vendredi 18 septembre 2009

Wikimedia Foundation refile ses vieux serveurs

la Wikimedia Foundation (WMF), qui gère les parcs de serveurs permettant de faire fonctionner Wikipédia/Wikiversity/Wikinews/etc., s’apprête à se débarrasser de 35 de ses plus vieux serveurs, les pauvres n’étant plus suffisamment puissants pour faire tourner le bouzin.

Ils se proposent donc de les envoyer à diverses Associations à but non lucratif qui en feront la demande. Ce n’est pas la première fois qu’une telle opération est lancée, les habitués de mon blog se rappelleront ce billet de mars 2009 qui mentionnait une démarche similaire.

L’offre est plus ou moins limitées aux USA. Pour reprendre les propos de RobH, le prix de l’envoi serait tout simplement trop important vis-à-vis de la valeur de la machine.

(source)

Jeudi 17 septembre 2009

La Wikimedia Foundation (re)déménage

La Wikimedia Foundation (WMF), qui gère les serveurs de Wikipédia, Wikibooks, Wikisources, etc..  s’apprête à déménager.

Petit historique rapide

La WMF a été fondée par Jimmy Wales en juin 2003. Ses locaux se trouvent alors à Saint Petersburg, en Floride.

En février 2008, ils quittent le sable chaud et le sud-est des USA pour la côte Ouest côte Ouest, et s’installent dans le quartier South of Market (SoMa) de San Francisco, en Californie. Afin d’éviter toute confusion, je précise que les serveurs sont eux restés dans leur DataCenter floridien.

Bref

Donc, la WMF s’apprête à re-déménager. Pour être plus précis, ils s’installeront au 149 New Montgomery Street ; Le coin est d’ailleurs plutôt joli, si j’en crois Google Maps, et ils auront le PacBell Building juste en face (dont la beauté est discutable, mais c’est toujours sympathique d’être à côté d’un bâtiment historique).

La raison principale du déménagement est le manque d’espace : la WMF a de plus en plus d’employés (ils s’apprêtent d’ailleurs à engager 3 personnes supplémentaires) et il n’y a plus la place pour tout le monde. Par exemple,  l’Usability team travaille actuellement dans des locaux loués chez Wikia, a quelques patés de maison de ceux de la WMF. Les nouveaux locaux permettront des les rapatrier avec le reste des employés.
(source :  [Foundation-l])

Page suivante »

Publié sur WordPress.