Apollo, Firefox 3 e Rails: tutti offline

Sabato 24 Marzo, 2007

Magnetk e Joyent hanno creato Slingshot, un tool che permette ad una applicazione Rails di funzionare offline! Contemporaneamente è stata rilasciata la Alpha 3 di Gran Paradiso, ovvero FireFox 3, anch’esso pronto a sfidare questa nuova frontiera dell’offline. Possiamo affermare senza esagerazione, almeno da quanto si legge sulla rete, che è iniziata una vera e propria competizione che vede schierati Adobe Apollo, FireFox 3 e nuovi contendenti come Slingshot.

Slingshot, tuttavia, si propone di far sviluppare (o portare) applicazioni Rails direttamente sul Desktop  e di farle girare in modo “semplice e trasparente“;

Joyent Slingshot allows developers to deploy Rails applications that work the same online and offline (with synchronization) and with drag into and out of the application just like a standard desktop application.

Per una dimostrazione di Slingshot vedi il filmato Quicktime.

Non esiste, quindi, una vera e proprio diretta concorreza tra Slingshot e Apollo. Quest’ultimo, infatti, ha in definitiva un target diverso, come indicato da Wikipedia ;)

“A cross-OS runtime that allows developers to employ their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop Rich Internet Applications.”

Interessanti - invece - sono le caratteristiche di FireFox 3 (come gli Animated PNG - APNG), che si pone in maniera diversa dalle soluzioni sopra esposte.  

La caratteristica che condividono i contendenti, quindi, è questa nuova tendenza a lavorare - o a permettere di lavorare - offline! È curioso che questo interesse sia esploso quasi all’improvviso, in un momento storico che vede la rete al centro di molti interessi. Inoltre, proprio in questi ultimi anni, la diffusione della banda larga ha portato gli utenti a rimanere continuamente connessi in rete, un cordone ombellicale impensabile sino a pochi anni fa; l’era del Dial-Up è ormai finita.

Proprio questa necessità di connessione perpetua ha dato il via alla generazione 2.0 (web2.0), al contributo sociale di tutti in quanto tutti connessi. L’offline è, nonstante tutto questo, un esigenza tecnica, non un cambio di tendenza. Probabilmente è di sicuro interesse poter investire su tecnologie di questo tipo. Il Wireless, molto probabilmente, dominerà nel prossimo futuro, ma a differenza di un cavo potrebbe essere maggiormente soggetto a improvvisi mancamenti (!

Poter lavorare sconnessi ha evidentemente tutta una serie di vantaggi che - come spesso accade - oggi non riusciamo nemmeno a vedere chiaramente.

Post correlati

Adobe Apollo Alpha Release

Lunedì 19 Marzo, 2007

Finalmente Adobe ha rilasciato la versione Alpha di Apollo. Siamo ancora lontani dalla versione finale, tuttavia è possibile verificare alcune delle sue funzionalità grazie ai Demo delle applicazioni (file .air) proposte online. L’installazione (Apollo runtime) di questa Alpha pesa circa 6Mb - per Windows. I Demo (Apollo sample applications) non arrivano a pesare nemmeno 600Kb. Dopo aver installato il runtime di Apollo nulla sembrerà cambiato sul vostro PC (non viene aggiunto nessun link sul desktop o sulla barra delle applicazioni), nonostante abbiate installato - di fatto - il nuovo browser di Adobe! Vedi Web2.0: Adobe ci prova con Apollo? 

Continua a leggere… »

Post correlati

Dove Javascript vince

Sabato 17 Marzo, 2007

Scegliere la tecnologia da usare nello sviluppo di una Web Application è di vitale importanza, per non ritrovarsi nei guai subito dopo. Il tipo di Web Application, le sue caratteristiche di funzionamento, sono il primo punto da prendere in considerazione per poter scegliere il FrameWork e le tecnologie correlate.
Ho spesso discusso sull'efficacia di script Javascript nei confronti di tecnologie diverse come Adobe Flash o Java. Tuttavia è bene sottolineare un aspetto importante spesso sottovalutato: l'accesso al DOM. Javascript, in questo caso, è il candidato (per non dire il solo) prediletto per questo tipo di operazione.

Strumenti con Snap, ad esempio, funzionano su un semplicissimo meccanismo: quando la pagina HTML è caricata (e dopo aver inserito il caricamento dello script Javascript) viene eseguita una scansione della pagina HTML e aggiunto un nuovo codice in punti particolari. Nel caso specifico di Snap vengono identificati tutti i link a pagine esterne (o interne nella configurazione dell'ultimo rilascio), i TAG <A> per indenderci. Questi vengono modificati in modo tale che al passaggio del mouse si apra una finestra di anterpima del link (vedi questo stesso Blog per un esempio).

Non solo Snap ma molti altri script Javascript fanno praticamente la stessa cosa. Ultimamente questa tecnica si è largamente diffusa grazie alla libreria Prototype, che mette a disposizione tutta una serie di metodi (come il famoso $ o doppio-dollaro $$ - vedi Prototype: l'uso del doppio dollaro ($$)) sia per rintracciare che modificare - al volo - gli elementi di una pagina HTML.

Muoversi all'interno del DOM HTML è dunque compito specifico di Javascript. Storicamente, tra l'altro, Javascript fu introdotto proprio per leggere e scrivere i contenuti di una pagina HTML.
Se ad esempio volessimo fare alcune modifiche ad una pagina HTML tramite Adobe Flash, ci aggorgeremmo - o presto o tardi - di essere costretti ad invocare una funzione Javascript. Il nuovo ActionScript 3.0, ad esempio, mette a disposizione una classe (ExternalInterface) adatta a tale scopo. Una volta (nelle precedenti versioni di ActionScript) si usava il comando getURL() - oggi sostituita dalla migliore flash.net.navigateToURL() - o fscommad() per chiamare una funzione Javascript:

Actionscript:
  1. getURL("javascript:miaFunzione()");

Inoltre:

The ExternalInterface class is the External API, an application programming interface that enables straightforward communication between ActionScript and the Flash Player container; for example, an HTML page with JavaScript, or a desktop application with Flash Player embedded.

Notate quel "desktop application" che tanto ricorda Apollo!

Oggi, grazie a ExternalInterface, è possibile invocare una funzione Javascript in modo quantomeno più pulito (questa classe permette una gestione notevolmente più efficace rispetto a getURL(), come ad esempio il passaggio di parametri):

Actionscript:
  1. /* calls the external function "addNumbers"
  2. passing two parameters, and assigning that function's result
  3. to the variable "result" */
  4. var param1:uint = 3;
  5. var param2:uint = 7;
  6. var result:uint = ExternalInterface.call("addNumbers", param1, param2);

JavaScript:
  1. <script><!--
  2.     // adds two numbers, and sends the result back to ActionScript
  3.     function addNumbers(num1, num2) {
  4.         return (num1 + num2);
  5.     }
  6. // --></script>

Cosa possiamo concludere quindi? Tra tutti i vari framework e librerie disponibili l'analisi iniziale del progetto che si vuole realizzare rimane di fondamentale importanza. Sbagliare questa fase può compromettere seriamente le successive fasi di qualsiasi progetto Web2.0. Javascript, quindi, vince su tutti quando si deve interagire con il DOM.

Post correlati

FlickrCash: cercare su Flickr in modo migliore

Mercoledì 14 Marzo, 2007

Jesse Skinner ha creato FlickrCash, un'applicazione Ajax per cercare, gestire e vedere le foto su Flickr, usando jQuery come motore. Questo è un'interessante esempio di come un servizio nasce dall'uso di un'altro. Infatti FlickrCash preleva i dati, le foto, proprio da Flickr, nonostante abbia una sua Login e un suo ambiente separato. Come mostrato nel video qui sotto, la navigazione è davvero originale; una moltitudine di immagini tutte contemporaneamente!

Post correlati

Web2.0: Gran Paradiso-Firefox 3.0 e Apollo

Lunedì 12 Marzo, 2007

È disponibile online la versione Alpha 2 di Firefox 3.0, nome in codice Gran Paradiso. Tra le novità annunciate (la versione definitiva è attesa per fine 2007) troviamo la possibilità di utilizzare il browser in modalità off-line. Tutto questo ricorda Adobe Apollo che, nonostante non si presenti come browser, ne evoca i tratti essenziali.

Continua a leggere... »

Post correlati

Aggiornamenti Reinvigorate

Mercoledì 7 Marzo, 2007

Reinvigorate, il servizio dedicato alle statistiche Web, ha aggiunto un nuovo report sulla distribuzione oraria del traffico, disponibile sulla scheda 'Traffic'. Questo nuova funzione è in grado di sommare più di 700 ore di traffico, dando una visione interessante dell'andamento orario di visite e pagine viste, inter-quartile range (IQR) compreso.
Davvero interessante risulta la seconda novità che riguarda il vecchio Hostname/IP che viene ora sostituito con un report Geolocalizzato disponibile nella scheda 'Visitor Detail', davvero niente male (sfrutta Google Map).

Inoltre questa nuova visualizzazione è in grado di mostrare i nomi dei visitatori che posseggono un indirizzo risolvibile, il tutto integrato con la caratteristica del name tags di Reinvigorate, così da mostrare, in pratica, alcuni visitatori per nome!

Post correlati

Codice per Commodore 64

Lunedì 5 Marzo, 2007

Ho recuperato il mio blocchetto del Commodore 64 per verificare il porting dell'emultatore FC64 proposto quache Post fa! Purtroppo alcune funzionalità della tastiera non sono proprio riuscito a farle funzionare, quindi non ho potuto provare e inserire alcuni listati interessanti (vecchi ricordi nostalgici). Se ricordate, il Commodore 64 aveva combinazioni speciali usate durante la scrittura del codice BASIC, come il simbolo della R in negativo (reverse) o il cuoricino, sempre in negativo, per pulire lo schermo. Se qualcuno trova il modo di farlo... Tuttavia alcune limitazioni possono essere aggirate ricorrendo al comando BASIC CHR$. Ad esempio per pulire lo schermo basta usare PRINT CHR$(147), che corrisponde al cuoricino in negativo!
Altri Tricks, come bloccare e sbloccare la combinazione RUN/STOP RESTORE sono anch'essi fuori dalla mia portata... per ora.

Questa è la lista del codice che ho provate e funziona:

CODE:
  1. POKE 53280,4
  2. SYS 64766

INPUT CON LE VIRGOLETTE

Mette le doppie virgolette dopo la richiesta da tastiera

CODE:
  1. 100 POKE 198,1:POKE 631,34
  2. 110 INPUT A$

LINEA VERTICALE CON LE POKE

Crea una linea animata verticale

CODE:
  1. 100 PRINT CHR$(147)
  2. 110 FOR R = 1 TO 24
  3. 120 POKE 55296+33+40*R,5
  4. 130 POKE 1024+33+40*R,71
  5. 140 NEXT R

RESTRINGIMENTO DELLO SCHERMO

Accesso diretto al VIC Video, permette di restringere orizzonatalmente e verticalmente l'area visibile del Commodore 64. Usato per gli scrool orizzontale e verticale.

CODE:
  1. POKE 53270,32
  2. POKE 53265,23

BLOCCARE IL COMANDO LIST

Scrivere un qualsiasi listato e digitate il seguente codice. Provate ora a digitare LIST e vedrete che il listato non è più visualizzabile, nonostante al RUN il codice funzioni uguale.

CODE:
  1. POKE 775,200

CURSORE LAMPEGGIANTE

CODE:
  1. POKE 788,55

SOSTITUIRE LA SCRITTA READY. CON EDDIE!

Le prime 3 righe copiano il Kernel dalla ROM alla RAM, considerate che ci mette un po', almeno un minutino a copiare il Kernel, ma le vale la pena. Le ultime sostituiscono la scritta "READY." con "EDDIE!". Ricordatevi alla fine di digitare POKE 1,54 - che sposta il puntamento al Kernel dalla ROM alla RAM. Se volete provare con altri caratteri le volte successive basta eseguire le righe di codice dalla 40 in poi, quindi usate RUN 40

CODE:
  1. 10 FOR J = 40960 TO 49151
  2. 20 POKE J, PEEK(J)
  3. 30 NEXT J
  4. 40 FOR J = 41848 TO 41853
  5. 50 READ L$
  6. 60 POKE J, ASC(L$)
  7. 70 NEXT J
  8. 80 DATA E,D,D,I,E,!
  9.  
  10. POKE 1,54

SE ACCIDENTALMENTE DIGITATE "NEW"

Questa riga permette di recuperare un listato in caso si digiti accidentalmente il comando NEW

CODE:
  1. POKE 2050,1:SYS 42291:POKE 45,PEEK(34):POKE 46,PEEK(35):CLR

Ho provato anche codice Assembly, inserendolo come DATA e altre POKE. Tutto sembra funzionare.
Di esempi e codicilli ne ho davvero molti, quindi mi fermo qui - per ora. Spero che quanto prima venga implementato nell'emulatore anche il SID, così da far rivivere tanti effetti e suoni del vecchio - ma sempre meraviglioso - Commodore 64! Anche un Assembly non sarebbe male... ;)

Post correlati

Commodore 64 Web Emulator

Venerdì 2 Marzo, 2007

Se leggete gli ultimi due Post che ho scritto (Net Software e Amiga Web Emulator), questo sembra la diretta conseguenza. Apropos, quindi, di emulatori e Flash 9 con ActionScript 3.0, ecco qualcosa di veramente grandioso, nostalgia a parte. Il progetto si chiama FC64 e vuole essere un'emulatore a basso livello del glorioso Commodore 64! È stato scritto in ActionScript 3.0, quindi per visualizzare il filmato (mi sento strano a chiamare filmato una cosa di questa genere...) dovete installare la versione 9 del plugin di Adobe.


Commodore 64 - Flash 9 Web Emulator

Il progetto non è ancora completato, mancano alcuni dettagli relativi all'implementazione di tutte le parti dell'emultatore, come il SID (Sound Interface Device), i CIA Timer, la collisione degli sprite, ecc... (una lista completa la trovate sul sito FC64 ).
Tuttavia è possibile addirittura caricare una serie di giochini funzionanti, come il mitico ed indimenticabile Galaga!

Post correlati

Net Software

Venerdì 2 Marzo, 2007

È successo alla TV di trasformarsi in Net TV, come già era successo alla Radio di diventare Net Radio, per non parlare della musica! Ora, come anticipato in altri Post, è ufficiale anche per il Software di trasformarsi a breve in Net Software!

Adobe, che come sappiamo ha da poco acquisito Macromedia, ufficializza le Web Application - del Web 2.0 - in vere e proprie RIA (Rich Internet Applications) con l'annuncio di voler portare sul Web il noto software di fotoritocco Photoshop. È recente l'accordo tra Adobe e Photobucket per rendere disponibile online una tecnologia per l'editing e il remix video. Grazie alla nuova tecnologia sviluppata per Flash 9, con ActionScript 3.0, Adobe punta in alto, anticipando che entro sei mesi sarà disponibile online una versione di Photoshop basata, appunto, su tecnologia Flash.

Effettivamente le nuove potenzialità di ActionScript 3.0 (che coinvolgono progetti come Flex e Apollo - vedi anche Web2.0: Adobe ci prova con Apollo e Ajax: Rich Internet Application) lo rendono il candidato perfetto per l'implementazione di vere RIA sul Web. Ajax, dal canto suo, si vede spodestato dal suo trono in questo nuovo scenario. Nonostante gli innumerevole Framework Ajax, alcuni di ottimo livello, prodotti nel corso di questi ultimi anni, Flash garantisce un'ambiente più evoluto e semplice da manipolare. Inoltre parliamo di uno dei Plugin più diffuso al mondo: Flash ha infatti alle spalle qualche anno in più rispetto ad Ajax e derivati.

Inoltre risulta ovvio che Adobe scelga Flash, essendo oramai lui il produttore. Tuttavia ci sono da considerate questioni tecniche che possono - ad oggi - essere risolte in modo armonico unicamente ricorrendo a tecnologie come quella Flash. Dando uno sguardo al nuovo ActionScript 3.0 ci si rendo subito conto delle enormi possibilità di sviluppo che offre questa nuova piattaforma. Lo standard ECMA del linguaggio e i nuovi oggetti messi a disposizione dal Framework, permettono di arrivare ad un livello di dettaglio impensabile con le precedenti versioni di Flash: una su tutte, ad esempio, la possibilità di accedere ai dati Bitmap di un'immagine caricata da disco!

L'attacco da parte di Adobe sembra svolgerersi quindi su due fronti distinti che hanno in comune la tecnologia Flash (che ricordiamo ha da sempre la capacità di interagire attivamente con il browser e quindi con Javascript lato Client e Scripting lato Server).

Il primo attacco avviene dall'esterno, sul versante browser, dove la tecnologia Apollo si propone di fatto come alternativa ai Kernel usuali delle diverse piattoforme oggi disponibili (Windows, Mac OS, Linux, ecc...); usare Adobe Apollo, quindi, al posto del browser per ottenere prestazioni e applicazioni (vere e proprie RIA) impensabili, aggirando così le incompatibilità tra Internet Explorer, FireFox e compagnia. Inoltre Apollo garantisce una piattaforma unica di sviluppo, al pari di Javascript-Ajax, ma senza i problemi di compatibilità. Quest'ultimo punto è uno scacco notevole a tecnologie come Ajax che ancora oggi soffrono enormemente delle questioni legate alla compatibilità tra browser; non dimentichiamo, inoltre, tutta la questione legata alla resa (rendering) grafica dei CSS!

L'altro attacco avviene direttamente dall'interno, colpendo i Framework Ajax con la carta Flash. L'elemento vincente in questa strategia risiede nell'uso di Flash, della tecnologia Flash, che trova applicazione sia in Flex, sia in Apollo, sia in versione standalone come già siamo abituati a vedere (semplici file SWF per intenderci)! Non c'è dubbio che tale scenario è estremamente invitante per gli sviluppatori, Web e non. Ciò che realizzo in Flash diventa immediatamente riusabile in vari modi, senza costringermi a modificare una sola riga di codice e, inoltre, senza preoccuparmi della compatibilità!

Tutto questo, a mio avviso, è un'importante passo avanti, una svolta di proporzioni notevoli che coinvolge anche il mondo dei giochi e del Marketing. Ne parleremo ancora prossimamente, statene certi!

Post correlati

Box.net: share your files anywhere

Martedì 27 Febbraio, 2007

Come vi sarete accorti ho inserito un nuovo simpatico servizio per la condivisione dei File: Box.net. Questo strumento (nell'ormai consueto stile web.2.0) mette a disposizione gratuitamente 1Gb di spazio (pagando potrete aumentare sia le features che lo spazio, la versione Basic - gratuita - vi regala comunque 1Gb) dove posizionare file di ogni tipo (l'anteprima è possibile solo per file multimediali come JPG, MP3, GIF, ...). Il sistema è realizzato molto bene (all'inizio ho avuto qualche difficoltà nel muovermi nelle pagine...) e permette di gestire un vero e proprio disco virtuale permettendo di creare cartelle, sotto cartelle, inviare file, gestire i Tag, informazioni aggiunte e altro ancora.

Il sistema supporta Blogger, Wordpress, LiveJournal, e Typepad per la pubblicazione automatica.

Ogni file possiede un permalink e grazie ad un Widget in Flash (come quello che vedete posizionato sulla sidebar di destra di Undolog.com) è possibile visualizzare in tempo reale i file che si è deciso di condividere (file o cartelle rese pubbliche).
La condivisione (public), ovvero la proprietà di essere visualizzati da tutti, avviene per singoli file o cartelle. Inoltre i Widget in Flash sono personalizzabili (si può scegliere il titolo e una serie di colori di sfondo), come le cartelle o i file da visualizzare; in questo modo si possono creare una serie di Widget tematici. Da provare...

Post correlati