Comincia la settimana

Solitamente la settimana non inizia mai bene, c’è sempre qualcosa a fare in modo che il bilancio non sia del tutto positivo ma questa è cominciata niente male.
Ho trovato due progetti molto interessanti che voglio condividere con voi; il primo è jpm il nuovo strumento di sviluppo di addon rilasciato da Mozilla, era ora che pubblicassero uno strumento compatibile con NodeJS e con gli strumenti odierni di sviluppo come Grunt o Gulp. Finora esisteva un plugin per Grunt che doveva usare lo strumento cfx spawnando un processo figlio, vedremo se qualcuno riuscirà a tirarne fuori un plugin degno di questo nome.

Il secondo progetto è una figata pazzesca, praticamente hanno impacchettato un servizio come quello offerto da Codepen o JSfiddle in un addon per Firefox; penso che ci passerò molto tempo a lavorare. Siccome è un bel progetto ed è anche open vi segnalo la repository su github.

Firefox OS e le richieste Cross-Domain

Se si vuole usare le richieste Cross-Domain in un’app per Firefox OS possiamo usare 2 diversi approcci:
– fare tutto a mano e usare l’oggetto XMLHTTPRequest ogni volta che dobbiamo richiedere qualche cosa
– configurare il tutto a modino e usare la solita sintassi

Ora io non so nulla di CROSS e configurazione di certificati lato server e bla bla bla ma da questa pagina si capisce subito che potremmo semplicemente prendere jQuery e nel file che includiamo nel nostro sito aggiungere al costruttore la proprietà mozSystem: true

jQuery.ajaxSettings.xhr = function() {
try {
return new XMLHttpRequest({mozSystem: true});
} catch( e ) {}
};

Ecco questo non va fatto assolutamente; primo perché avete modificato il file di jQuery e quindi questa modifica verrà rilevata dai revisori del marketplace, secondo perché cosa pensate che accadrà quando aggiornerete jQuery? La nuova istruzione non ci sarà, quindi la vostra webApp crasherà mentre voi vi grattate la testa.

Ciò che dovete veramente fare è includere questa modifica nella vostra app semplicemente aggiungendo un file cross.js con questo contenuto alla vostra pagina; ricordatevi che nelle app privileged, ovvero quelle che possono ottenere i permessi di fare richieste Cross-Domain, sono vietati gli script in-line ovvero ogni tag script della vostra pagina non deve avere contenuto e deve puntare ad un file locale, quindi niente CDN!

TL;DR

ecco il contenuto del file da includere, salvatelo in cross.js o quello che volete e aggiungetelo alla vostra pagina prima di fare qualsiasi richiesta HTTP.

$.ajaxSetup({
   xhr: function () {
          return new XMLHttpRequest({ mozSystem: true });
   }
});

questo è al momento l’unico metodo che funziona visto che $.ajaxSetup non riesce a settare la proprietà se la indicate dalla proprietà xhrFields benchè questa sia la proprietà desisgnata prorpio per risolvere questo problema dal team di jQuery

Durante l’ultimo mese mi sono ritrovato a giocare con NodeJS, una piattaforma per eseguire codice JavaScript direttamente sulla macchina (server-side). La cosa più semplice sarebbe stata di installarlo dalle repository di Ubuntu, visto che non era importante per me avere l’ultima versione disponibile al momento, ma la lettura di questo articolo mi ha fatto desistere.

Riassunto dell’articolo

Packages can run arbitrary scripts, which makes sudoing a package manager command as safe as a chainsaw haircut.
Isaac Z. Schlueter

Principalmente non c’è niente di sbagliato nell’installazione di NodeJS in una cartella del sistema con permessi di root se non fosse che NodeJS si porta dietro un secondo pezzo di software chiamato NPM, un gestore di pacchetti per NodeJS.

Installare NPM in una cartella con i permessi di root significa dare ai pacchetti che installerò i permessi di root quando li eseguirò. Quando ci si fida di chi ha creato il pacchetto (ad esempio voi vi fidate del vostro lavoro) questo è un problema che non si pone ma non sempre potete fidarvi .

Come ovviare alla situazione? Cambiare la cartella di installazione di NodeJS (o anche solo di NPM) può essere una buona idea. Io ho scelto la cartella ~/.local/node della mia macchina per esempio.

Ecco quindi le istruzioni da seguire per l’installazione locale di NodeJS e NPM partendo dai sorgenti che potete scaricare dal sito ufficiale..

View Fullscreen

Una cosa importante da ricordarsi è che in questo modo l’eseguibile di NodeJS non risulta in una cartella della PATH, quindi prima di usare uno qualsiasi degli strumenti che sono legati a NodeJS bisogna dare il comando export PATH=PATH:mia/cartella/installazione/locale.

Happy Coding!