Martius Web

Les articles : Flash on Linux will only be available for Chrome

le mercredi 22 février 2012, 14:44

This announcement from Adobe here is pretty interesting. In a nutshell, Chrome guys built a new API (Pepper) which allows developers to execute stuff in the browser, using sandboxed native code. Now Google helps Adobe (I don’t know exactly how) and offers an easier integration of Flash in the browser. Then, Adobe choose to focus on integrating Flash in the browser using this API. For the Linux version of Flash plug-in, Adobe won’t support other APIs (hence, other browsers than Chrome).

Paul Rouget tweeted about a mail from Robert O’Callahan talking about the Pepper API. He says that there is already a “rich platform API to sandboxed code : the standards-based Web APIs”. This is mostly true : these APIs are in the making, people are working on it and there is less and less missing fundamental APIs (after all, they’re able to make Boot2Gecko… in Javascript).

Mozilla, and probably other vendors, don’t plan to work on Pepper, since they believe it’s a “duplication of effort”.

I believe that this is exactly why Adobe is doing this right now. They are gambling and trying to impose a dilemma to other browsers: vendors change their mind, allow native stuff in the browser and therefore let Flash live as an environment parallel to all the new web technologies (HTML5, Js new APIs, etc) or they impose the lack of Flash for Linux users, who won’t be able to play Cityville under Firefox anymore.

I believe Adobe couldn’t do this latter: the standard-based APIs are more and more used against Flash which is used as a last-resort solution. In a short time, authoring tools and stable API will convince developers to drop Flash and Adobe, unless Flash can compete with the standard APIs. That’s what brings Pepper: a better integration of native code into the browser.

Les articles : Zsh for the shell nerds

le mercredi 2 mars 2011, 00:37

Il y a quelques semaines mes amis Paul et Nicolas m’ont encouragé a essayé une alternative à Bash, le shell que nous utilisons généralement tous par défaut. Le changement s’est pratiquement fait directement (je suis un gros utilisateur de la console).

Changer de shell dans la console, c’est comme changer d’environnement de bureau (GNOME, Kde, etc) : globalement c’est la même chose, mais la manière dont ils sont présentés va varier. Alors Zsh, ça apporte quoi par rapport à Bash ?

Concrètement, on peut le voir comme une surcouche : la syntaxe des commandes ne change pas énormément. Les principales fonctionnalités qui vous feront basculer sont celles qui apparaissent en mode interactif :

  • l’auto-complétion/complétement (faites votre choix sur la terminologie) est vraiment puissant et paramétrable,
  • la correction des commandes est magique, et évite de retaper de longues commandes pour une faute de frappe,
  • une meilleure gestion de l’historique des commandes.

En plus, zsh supporte de nombreux plugins et supporte un mécanisme de thèmes, dont une impressionnante collection est maintenue sur un dépôt github dans un projet appelé Oh-My-Zsh. Il suffit de cloner le dépôt en local, de suivre le Readme, et de choisir son thème pour qu’en quelques minutes, Zsh soit adopté !

En plus, de nombreux thèmes supportent nativement le plug-in git qui offre la complétion/le complétement et affiche la branche de travail et si des données n’ont pas été archivées dans un commit.

En ce qui me concerne, j’ai choisi le thème “jreese”. Si vous avez le loisir de commenter et de me recommander des plug-ins ou docs pour encore améliorer ma productivité, je suis preneur !

Histoires brèves : Annuler un rm (retrouver des fichiers supprimés) sur une partition ext3 ou ext4

le mardi 18 janvier 2011, 15:40

Le billet court du jour devrait vous permettre d’éviter de paniquer bêtement parce que votre doigt à glissé et que vous avez lancé la commande

rm -rf *

plutôt que :

rsync -rf *

Si si, ça arrive. L’outil qui va vous sauver la vie s’appelle extundelete. Il fonctionne très bien sur une partition ext3 ou ext4, cependant, pour l’utiliser la partition ne doit pas être montée. Pour démonter /home, il vaut mieux soit passer par un live-usb (comme ça /home n’est jamais monté) ou quitter votre session, lancer un terminal non graphique (Ctrl+Alt+F2 par exemple), vous logguer en root (c’est plus génant sur ubuntu…) et hop :

# extundelete --restore-all /dev/sda3

D’autres options comme --restore-file et --restore-files sont également bien pratiques.

Les articles : Set up a Teeworlds server on Debian Lenny (or any other Gnu/Linux)

le mardi 30 novembre 2010, 08:53

If you are reading this, I’m pretty sure you already know Teeworlds, an Open source 2D game between Worms (I mean Wormux) and Doom with graphics from Kirby. Today I’m trying to set up a server to host some sessions of this game.

As you will see, this is quite straightforward, and does not require tremendous skills in GNU/Linux systems administration.

Notice : This content is available in English and I’ll try to provide it in French as soon as possible. I decided to write it in English since I did not found a complete how-to on this -very important- topic.

Histoires brèves : Flash AS3 : Détecter les clics sur un élément caché par un autre

le mercredi 10 novembre 2010, 21:02

Ceci est donc le petit billet du jour, fruit d’un paquet d’heures de recherche pour un résultat fort simple !

Dans le cadre d’une application réalisée en Flash (Action Script 3) - oui, je sais - j’ai une série d’éléments qui sont masqués par une image transparente, faisant office de masque : le calque supérieur prend tout l’espace et capte donc les événements de la souris (notamment le clic).

J’ai cherché plusieurs solutions, j’ai réfléchi à déterminer l’objet cliqué d’après les coordonnées du pointeur, ce qui me semblait complexe étant donné que la forme d’un élément d’un calque en dessous n’est pas vraiment prévisible. Après avoir googlé le problème pendant un moment donc, je suis tombé sur une propriété de la classe (abstraite) InteractiveObject fort utile : mouseEnabled.

Cette propriété permet de désactiver toute interaction de la souris sur l’objet concerné, et la bonne surprise fût que, tout naturellement, le clic souris prenait pour cible l’élément du dessous.

On récapitule donc rapidement :

  1. var gfxElt:MyGraphicElement = new MyGraphicElement();
  2. var mask:MyMask = new MyMask();
  3.  
  4. addChild(gfxElement);
  5. addChild(mask);

l’objet graphique mask recouvre l’objet élément, il n’est plus cliquable.

  1. mask.mouseEnabled = false;

Maintenant si !

Je suis bien conscient que cette découverte n’est pas génialissime en soi, mais peut-être que ce billet épargnera à l’un d’entre vous de perdre du temps et d’imaginer une solution complétement farfelue proche d’une ré-invention de la roue.