Saturday, October 1, 2011

How to load an NPAPI plugin inside a Safari extension, sort of ...


I was recently developing a Safari extension that had to hold an NPAPI plugin inside, but I realized that NPAPI plugins don't work inside the global.html page that runs on the Safari background. I have not seen  anything explaining this behavior in the Safari developer documentation, but I suspect that the problem is that as the global.html page is never displayed, Safari does not even try to load this kind of objects.

The only solution I have found is to put the NPAPI object inside a popover, which is loaded when the application launches and is a common instance inside Safari. The only problem of this is that the object is loaded only when the popover is shown (shit!), although all the javascript is loaded at the beginning. So if your extension has a popover and it must be shown on a common use case, you are good to go, but if not, there is a "crappy" solution that you can try. What I have done (which is veeery tricky...) is assign the popover that holds the NPAPI plugin to a toolbar button, then show the popover programmatically from the global.html page javascript, hide it again and unassign the popover from the toolbar button. The result is that when Safari is launched you momentarily see a popover shown and hidden immediately, but you have access to your NPAPI plugin inside your Safari extension :)

As this solution is a very crappy and unpleasant solution for a developer, please if you find a cleaner one, use that one and share it here ;)

This is the code I have used:

Inside the global.html page:

function deregisterPopover () {
    for (t in safari.extension.toolbarItems) {
        if (safari.extension.toolbarItems[t].identifier === "toolbar-button") {
            safari.extension.toolbarItems[t].popover.hide();
            // Deregister the popover from the toolbar button
            safari.extension.toolbarItems[t].popover = null;
        }
    }
}

// Find the popover that holds the NPAPI plugin
for (t in safari.extension.toolbarItems) {
    if (safari.extension.toolbarItems[t].identifier === "toolbar-button") {
        safari.extension.toolbarItems[t].showPopover();
        safari.extension.toolbarItems[t].popover.hide();
        NpapiPlugin = safari.extension.toolbarItems[t].popover.contentWindow.getPlugin();
    }
}

Inside the popover that holds the NPAPI plugin:

<html>
<head>
    <script>
    function pluginLoaded () {
        safari.extension.globalPage.contentWindow.deregisterPopover();
    }
    function getPlugin() {
        return document.getElementById("npapi-plugin");
    }
    </script>
</head>
<body>
<object type="application/x-test-npapi" id="npapi-plugin">
    <param name="onload" value="pluginLoaded">
</object>
</body>
</html>

Then you will have to register the popover to the toolbar button toolbar-button from the Safari Extension Builder.

More information | StackOverflow

Friday, September 23, 2011

The show has began!

This will be a several topics post. On one hand, I've moved the blog service to Blogger, mainly because I was tired of managing my own server. I was posting much much less than I expected, and I found excessive and useless to maintain a full-time server.

From there I had two options: wordpress.com or Blogger. I chose Blogger for various reasons: one, I can change the .blogspot.com URL to any other domain name I want (in this case saypatata.com) for free; two, I like much more the Blogger's Android app than the Wordpress one; and three, I found the Blogger's web interface simpler (and I don't need nothing sophisticated).

So you will see various changes on the blog: the interface, you will have to modify the RSS feed (sorry for that ;)), and that I will post mainly in english. Don't worry, there will be an automatic translation widget somewhere on the page.
In Blogger there is nothing to make your blog fully multilingual (or I have not found it), so I've decided to go with only english as it is more appropriate for the topics on this blog (and in the process I also improve my writing xD).

On the other hand, as some of you already know, I've recently started a project with three friends (@JoanCasasC@miquelcdp@miquelpuigr) called VoiceU. We won the third price at the Yahoo's HackU celebrated at the UPC School, we've participated on the Tetuan Valley Starup School. And then we decided that the project deserves more, so we started working on it full time, pushing on in order to launch a great Start-Up from it.
I've quited my job at G&D to fully dedicate myself on the project, and we are really excited and motivated, hoping to launch soon!
So it seems my entrepreneurial journey has just began :)

I hope my blogger life to improve a little bit after all of this changes, but I don't promise anything... ;)
So we'll keep in touch!

Thursday, March 31, 2011

3DS: Validació de mercat

Per tal de fer la validació de mercat de la meva proposta pel 3DS d'aquest cap de setmana, he publicat una petita enquesta. És molt rápida d'emplenar i si hi dediqueu 5 minuts us ho agrairé :P
Ja sabeu que qualsevol opinió/comentari serà bén rebut!

Tuesday, March 29, 2011

3DS Barcelona 2011

Aquest serà un cap de setmana bastant especial, ja que durant els dies 1,2 i 3 d'abril es celebra el 3 Day Startup (3DS) a Technova Barcelona, La Salle. Es tracta d'un accelerador d'empreses que ofereix als estudiants una gran oportunitat de fer realitat les seves idees i ambicions, durant un intens cap de setmana. No ho explicaré millor que els propis organitzadors de l'event, així que deixo un parell de links al final del post.

El diumenge dia 3 d'abril a les 18:00 hi ha portes obertes, per a que la gent pugui venir i veure les presentacions dels diferents projectes. Lloc: C/Lluçanès 41-43, Barcelona.
Pel que tinc entès les places son limitades, així que si voleu ser-hi podeu registrar-vos a través de l'enllaç d'evenbrite de sota. Des d'aquí us convido a que, si teniu un rato el diumenge per la tarda, us hi passeu perquè segur serà molt interessant ;)

Enllaços:
Web oficial | http://www.3daystartup.com/barcelona
Evenbrite | http://3dsbarcelona.eventbrite.com/
Facebook | http://www.facebook.com/home.php?sk=group_176990415667764

Friday, February 11, 2011

Hack U de Yahoo!

Aquest cap de setmana es celebra a la FIB el Hack U de Yahoo! És una 'competició' entre varis equips de màxim 4 persones per resoldre un repte (se suposa que informàtic) en 24 hores. Es tracta d'un esdeveniment que Yahoo! porta fent des de fa 6 anys a diferents universitats d'estats units, com Georgia Tech, University of Washington, etc. I aquest any és el primer que salten el xarco, i ho fan aquí a la UPC, lo qual suposa una gran oportunitat per als FIBers (i no FIBers) d'assistir a un esdeveniment d'aquest tipus.

Avui han fet una petita presentació del funcionament, eines molt útils que ens facilitaran molt la feina (de Yahoo! òbviament... xD), hacks d'altres anys, etc. i una mica de soparet al final de tot. Les 24 hores de hacking comencen demà divendres a les 16h, i pel que sembla seran 24 hores molt entretingudes. Segons ens han dit porten menjar, beure, drogues varies per a que no dormim, música i demés. Encara que també es pot marxar a dormir, menjar, anar a fer unes cerveses,... quan es vulgui.

El que veig més peliagut són els 90 segons de presentació que hem de fer davant de tothom al final de les 24 hores. Si, 90 segons, temps de sobres per fer un powerpoint de 50 pagines, demos, ronda triple de preguntes i un descans pel mig per anar a fer un cafè. :)

Veritablement la xixa comença demà, així que qui es vulgui apuntar encara està a temps. De fet ja ens han animat a portar més gent, que hi ha menjar per tothom. :D

Aclaració: s'ha de diferenciar entre hacker i cracker. Hack no té res a veure amb la pirateria, ni seguretat informàtica, ni virus ni res semblant. Un hack és una aplicació/funcionalitat/xorrada útil que es realitzi en temps i recursos reduïts (en aquest cas 24 hores), i un hacker es la persona que desenvolupa aquest hack.

Intentaré anar publicant una mica de info al llarg d'aquest dos dies.

Altres hacks | http://developer.yahoo.com/hacku/pasthacks.html
Kick Ass | http://erkie.github.com/
TipTheWeb | http://tiptheweb.org/

Tuesday, February 1, 2011

Em mudo!

Hola hola!

Com haureu pogut veure, a partir d'ara a la barra de direccions ja no hi apareix saypatata.webhop.net, si no que ha canviat a saypatata.com blog.saypatata.com. De moment encara podreu entrar utilitzant la URL vella, però us recomano que aneu migrant els vostres 'favoritos' i RSS per a que apuntin a la nova, ja que no se fins quan deixaré la redirecció... ;)

Actualització: finalment, per motius del DNS, la direcció del blog quedarà així: http://blog.saypatata.com/ El problema és que a casa tinc IP dinàmica, i encara no he trobat cap servei de DNS que tingui una freqüència d'actualització suficientment baixa...

Nova URL del blog: http://blog.saypatata.com/ (sense les www.!!)

Saturday, January 8, 2011

So this is how liberty dies…

... With thunderous applause


AT&T y Verizon se plantean cobrar una cuota por usar Facebook y YouTube. Aquest és el titular d'un dels articles que llegia avui a Nacionred, i no he pogut evitar recordar una escena de Star Wars, episodi III concretament:




Realment, em sembla gairebé de ciència ficció que es puguin arribar a aquests límits, però si nosaltres els usuaris no hi fem res al respecte, estic convençut que acabarà sent una trista realitat...