2/25/2011

Growl Mac pour l'API de notification Google Chrome (poc)

Extension Google Chrome Growl pour les notifications web
Peut-être avez-vous vu passé ce tweet:
Je comprends tout à fait que le staff en charge de Chrome ne souhaite pas développer des extensions spécifiquement pour Mac (ou Windows ou Linux). Mais même si Growl n'est pas intégré en natif sous Mac, il est dommage de ne pas en profiter lorsqu'il est présent sur la machine. L'autre raison de cette non implémentation est que Growl ne gère pas les notifications de type HTML alors que ce type de notification est possible via l'API Web Notification.

Enfin si aucune extension Google Chrome pour Growl Mac n'existe c'est parce qu'il est impossible d'appeler un exécutable (dans notre cas Growlnotify) depuis une extension (pour des raisons de sécurité bien évidement).

Il faudrait donc pouvoir exécuter un exécutable depuis une extension Google Chrome. Une solution possible est de communiquer via websocket avec un serveur NodeJS local qui se chargera d'exécuter Growlnotify:


L'extension ChromeGrowl surcharge la méthode createNotification ainsi que createHTMLNotification de l'API de notification. Voici l'extension en action:


Le support de createHTMLNotification est pour le moment quasiment inexistant car dans la majorité des cas une requête cross-domain est requise. La solution serait d'envoyer l'url au serveur node qui téléchargerait le contenu puis après analyse afficherait le plus d'informations possible via Growl.

Le code est disponible sur mon GitHub Chrome-Growl-Notification. Il s'agit d'un proof of concept réalisé en quelques heures n'hésitez pas à le forker pour l'améliorer ou corriger de possibles bugs.

EDIT: Je viens de découvrir qu'il faut payer une taxe de 5$ pour pouvoir publier des plugins sur le Google Chrome Extensions Directory. Je ne compte pas verser le moindre $ pour un petit POC, néanmoins si l'envie vous en dit vous pouvez toujours faire un don :).

Sources:
1/31/2011

[Video] My work on Gam3r, CSS3 Goodness

I've done some work lately on the Gam3r's design adding some CSS3 goodness. Here is a quick video summary.

1/23/2011

Javascript: $=-[$=[]],$$=$/$+(!$+{})

After having read this post yesterday. I feel like that was my turn to put my 2 cents. After some tests, I tweeted the javascript code below which return "boNjour":
$=-[$=[]],$$=$/$+(!$+{}),_=-~-~-~$,__=$$[(_*_)+~$],$$[_*_]+__+$$[$]+$$[-~(_*_)]+__+$$[_+-~-~$]+$$[_+-~$]

How ? Where are the letters ?

The first statement is:
$ = -[$=[]];
$ == 0

With this $ I can get all the letters I want for the word "bonjour" thanks to the second statement:
$$ =  $/$+(!$+{});
$$ == "NaNtrue[object Object]"

$/$+(!$+{}) ?

First of all, I wanted an n:
$/$ == 0/0 == NaN
typeof($/$) == "number"

Next an u r:
$          == 0;
!$         == true
typeof(!$) == "boolean"

And finally the b o j:
true+{} == "true[object Object]" // Thanks to type coercion
!$+{}   == "true[object Object]"

Then, I needed to convert NaN (a number) to a string. Which is easy with javascript's type coercion:
number + string = string
So:
$/$ + (!$+{}) == "NaNtrue[object Object]"
$$ = $/$ + (!$+{});


The last statement of the code do the following:
$$[9]+$$[8]+$$[0]+$$[10]+$$[8]+$$[5]+$$[4] == "boNjour"

But... where are the numbers ?

The NOT operator is the anwser !
The ~ operator in JavaScript means -(N+1) so -~ = +1
if $ = 0 then -~-~-~$ = 3


Remember, we already have 0 (with $):
$ == 0
I started with a 3, because 3*3 = 9, (3*3)-1 = 8, (3*3)+1 = 10, (3+(1+1)) = 5 and 3+1 = 4. We can get all these numbers by playing around with $ & ~ :
-~-~-~0 == -~-~-~$ == 3
_ = -~-~-~$

Let's do it !
_*_ == 9
$$[_*_] == "b";

o is used 2 times so it has his own variable __ in order to reduce the code's length:
(_*_)+~$ == 9 + -1 == 8
__ = $$[(_*_)+~$];
__ == "o";

$$[0] == "N";
$$[$] == "N";

1 + (_*_) = 1 + 9 = 10 //With N=9, -(N+1) = -10 so
~9 == -10
-~(_*_) == 10
$$[-~(_*_)] == "j";

3 + (1+1) = 3 + -~-~0 = 5
_ + -~-~$ == 5
$$[_+-~-~$] == "u";

3 + 1 == 4
_ + -~$ == 4 // N=0, -(-(N+1)) = -(-1) = 1
$$[_+-~$] == "r";

And here we are:
$$[_*_]+__+$$[$]+$$[-~(_*_)]+__+$$[_+-~-~$]+$$[_+-~$] == "boNjour";

Your turn now :)

[Edit] Some converters already exists:
« »
 
 
Made with on a hot august night from an airplane the 19th of March 2017.