News,Development Resources,Featured Content

receive news by mail:

Loading SpatialBundles Download list...
Visualizzazione post con etichetta The Road To.... Mostra tutti i post
Visualizzazione post con etichetta The Road To.... Mostra tutti i post

Updated FreeDesktop.org page to reflect latest 2011 SpatialBundle status


SpatialBundle specification at the moments is fully compatible with ROX Filer AppDir proxy detector and provide gvfs and Nautilus compatibility for beautifications
with ioProgram I mean a generic name for the main folder container, it's up to the packager to rename
ioProgram folder name should be build with following this structure:
$PROGRAM_NAME$VERSION"-"$DISTRO this is required by the CrossBundle AppRun proxy file at runtime

"/SpatialBundle 0.9.43.2 Skeleton on 2011"


  • ioProgram
    • Contents
      • Cover
        • Default
          • gtk-2.0
            • gtksrc
      • Library
      • Resources
        • Library
        • Binary
        • ABOUT.png
        • APPLICATIONS.png
        • BLUETOOTH.png
        • DESKTOP.png
        • EMAIL.png
        • FOLDER.png
        • Icon.png
        • RESET.png
        • SEND.png
        • $applicationname.png
    • Linux-ia32
      • bin
      • lib
      • share
      • ...
    • Linux-ia64
      • bin
      • lib
      • share
      • ...
    • Linux-ppc
      • bin
      • lib
      • share
      • ...
    • Linux-amd64
      • bin
      • lib
      • share
      • ...
    • NetBSD-ppc64
      • bin
      • lib
      • share
      • ...
    • OSX-ppc
      • bin
      • lib
      • share
      • ...
    • Windows-lpia
      • bin
      • lib
      • share
      • ...
    • Haiku-amd64
      • bin
      • lib
      • share
      • ...
    • $PLATFORM_OS-$ARCHITECTURE
      • $PREFIX
  • AppInfo.xml  -- ROX compatibility
  • AppRun.desktop -- ROX compatibility
  • Info
  • ioProgram -> AppRun
  • .CRCsum
  • .SHA512sum
  • .directory
  • .DirIcon -- ROX compatibility
  • .hidden
This container specification will be followed by a lot of interactions specifications that you can try just downloading one of the hundreds packages made by me just for testing on my daily testers. To let you point to latest fresh packages you can try at the moment (2011) here:
SpatialBundles are designed to be fully 100% cross platform in hardware and operative systems that are POSIX compliant (GNU/Linux, *BSD*, OSX, Android, Bada, MeeGo, Maemo, iOS,mostly when you find a POSIX shell and a minimal classical shell tooling like sed, awk and few more dependencies to be refined in future).
Features now include:
- It's Free, really like Public Domain...fully covered and protected by GNU/GPL...what else??
- One App -> One File
- No installation
- Click and Run like feedback
- No FUSE dependencies
- Depend only by POSIX shell and few posix low level system tool
- No image file to be mounted
- Zero Impact (involve not leaving footprints on the disk)
- Full Privacy (do not leave personal data on the disk)
- It's an active Object with it's own method and attributes
- Does not require hosted proxy software to be installed to run and works
- Provide direct manipulation feedback
- Embeds it's own icon like .exe windows file
- It's fully self hosted
- Provide methods to optimize running fully on RAM from the start (good for low resources device where accessing disk is critical)
- Provide dynamic FreeDesktop menu
- Can embeds everything it's not designed to only host applications but can act as a classical compression/archive container
- You can send it by mail or by blue-tooth because it's a file
- Provide basic strong security tool to avoid code injection against middle men
- Every single binary and library is parsed against SHA512sum
- Can be embedded into apt or rpm repository to be spread worldwide via strong and secure channels
- Provide Cover technology for GTK applications, the package maintainer can choose a default theme
- GTK applications can be themed by user via local settings
Q: Why I don't like FUSE based solutions?
A: because due to FUSE it's far to be POSIX compliant and does not grant me transparent and easy fully cross platform (do we have FUSE on OSX? or Bada? or Windows? as standard installation)
Q: Why not C/C++?
A: because needs a compiler hardware and os specific. The improving speed it's not well balanced with the great portability of a POSIX shell
  • so POSIX shell wins again
Q: What about Perl?
A: Good very good, it's the second choice but at the moment should be well investigated in term of standard installation availability in all the common platform out there.
At the moment SpatialBundle works with POSIX Shell but I cannot exclude in future to convert the code in Perl In my opinion Perl "rock on" and should be the natural choice, hope to do the big change in future...

[The Road To...] Lunedi 28 Aprile 2008 03:34 A.M.



Questo fine settimana lungo l'ho dedicato principalente a due attività:
1) Km e Km di mountain bike qui intorno i castelli romani
2) Avanzamento dei lavori sui SpatialBundles con finalmente la versione 0.9.x dalla quale si atterra direttamente alla 1.0 usando la numerazione di wine ovvero 0.9.x con x intero senza limiti mentre prima x era intero massimo 9 dopodiche si avanzava alla versione successiva.
Attualmente sto debuggando la versione 0.9.9 in quanto per qualche malinteso non si avvia più l'applicazione incorporata dalla tray.
Il problema è legato all'unset di alcune variabili di ambiente.
Ne approfitto per lavorare sul pacchetto ioAmuleAdunanzaFlamingo1.2 la quale versione funziona trasparentemente su Ubuntu Gutsy Gibbon 7.10, Ubuntu Hardy Heron 8.04 e Debian Lenny, mi ero ripromesso di lavorare anche sulla Xandros versione eeePC e lo faccio appena ho tempo di settare una chroot dedicata.
Il settaggio di una chroot Xandros verrà prodotta in questo modo:
• Memoria USB da 8GB (SD HC con adatttore USB)
• Installazione da DVD sulla memoria SD via USB
• Copia immagine dell'installazione su disco rigido
• Esecuzione di uno script che automaticamente monta l'immagine rw in loopback binding di /dev /proc nell'immagine montata e poi chroot.
In questo modo cerco di massimizzare la trasportabilità del chroot tra macchine differenti in quanto manipolo un singolo file (due con lo script di inizializzazione), controllo dello spazio occupato in quanto una volta saturata l'immagine disco ho una barriera per non saturare inconsapevolmente il disco che lo ospita (problema che mi si ripresenta spesso agendo indiscriminatamente con apt-get install o apt-get build-dep nelle chroot).

SpatialFactory0.9.9 presenta ora un codice nettamente ripulito.
Ora è possibile passare i classici parametri a linea di comando che questi verranno trasparentemente passati al binario dell'applicazione ospite.
passando l'opzione --help risponde l'help del Bundle se si passa l'opzione --help-all risponde l'help degli eseguibili binari
A titolo di esempio:

ioAmuleAdunanzaFlamingo1.2-WxGTK2.8.7-Ubuntu7.10 --help
########################################################################################
## Infodomestic Objects http://www.infodomestic.com/ forge.objects@infodomestic.com ########################################################################################
## Luca Cappelletti (C) 1995 - 2008 Released under GNU/GPL (www.gnu.org) #
## luca dot cappelletti at gmail dot com
##########################################################################
Usage: ioAmuleAdunanzaFlamingo1.2-WxGTK2.8.7-Ubuntu7.10 [OPTION]...

Defaults for the options are specified in brackets.

Configuration:
-h, --help display this help and exit
-hh, --help-all display all options you can pass directly to the binary
-r, --reset, --restart reset and restart the main application program
-f, --free free the cache and clean the memory stopping running processes

Mentre se passo il parametro --help-all (funziona solo con lo SpatialBundle in cache e quindi dopo averlo eseguito la prima volta) ritorna:

amule --help:
Usage: amule [-v] [-h] [-i] [-geometry ] [-d] [-o] [-r]
-v, --version Displays the current version number.
-h, --help Displays this information.
-i, --enable-stdin Does not disable stdin.
-geometry: Sets the geometry of the app.
uses the same format as standard X11 apps:
[=][{xX}][{+-}{+-}]
-d, --disable-fatal Does not handle fatal exception.
-o, --log-stdout Print log messages to stdout.
-r, --reset-config Resets config to default values.

ed2k --help:
aMule ED2k link parser v1.1.1

Usage:
--help Prints this help.
--version Displays version info.

ed2k://|file| Causes the file to be queued for download.
ed2k://|server| Causes the server to be listed or updated.
ed2k://|serverlist| Causes aMule to update the current serverlist.

Come vedete in sequenza elenca diligentemente gli help dei singoli binari con bit eseguibile prensenti nell'applicazione incorporata.
E' un processo creato automaticamente durante il build del bundle.

Qualsiasi parametro non contemplato nell'elenco dei vari help standard verrà passato direttamente al binario principale dell'applicazione (in questo caso 'amule')
Per evitare errori inaspettati è sempre meglio passare i parametri tra virgolette "" in questo modo anche errori di parsing del codice possono essere raggirati.
E' mia intenzione fare in modo che l'utilizzatore abbia carta bianca nel passare parametri arbitrari ai multipli binari eseguibili presenti nell'eventuale applicazione ospite (ad esempio aMule ha due binari uno è 'amule' l'altro è 'ed2k'), penso ad applicazioni del calibro di KOffice dove la cartella degli eseguibili presenta tutti i binari di applicazioni variegate come KWord KChart i quali meritano un eventuale trattamento dedicato.

Ho cambiato il tema per le applicazioni GTK vestendo ora Murrine che fortunatamente è anche standard in Ubuntu 8.04. La versione del tema è la compact che riduce lo spreco dello spazio del monitor cosi da massimizzare l'usabilità nei sistemi UMPC tipo eeePC con schermo max 10 pollici a 1024x768.

Dal punto di vista dello sviluppatore ora lo SpatialBuilder 0.9.9 capisce se si sta lavorando in un terminale/screen o dal desktop e si comporta di conseguenza per il feedback.
Nel secondo caso fornisce il feedback da una console xterm che verrà automaticamente chiusa al termine del build.Dopo questa fase viene eseguito il file manager del sistema host per puntare al pacchetto costruito.E' in grado di manovrare GNOME Nautilus, KDE Konqueror, KDE Dolphin, ROX Filer, XFCE Thunar, nel caso usa come fault-back una session xterm puntata alla cartella di build dalla quale è possibile operare il test o le classiche manipolazioni sui file.
Essendo il build basato su servo-terminale è possibile costruirci intorno sistemi automatizzati per build multipli.

Arrivare alla 1.0 significa fornire agli sviluppatori, manutentori, packagers uno strumento integrato semplice che permette, basandosi su elementari poche regole, di costruire uno SpatialBundle da poter distribuire a tutti liberando l'utilizzatore finale dall'egemonia centralista dei package manager catalog based di qualsiasi titolo (esempio: apt,rpm,yum.PackageKit,pkgsrc, etc. etc.).
Con gli SpatialBundle finalmente il catalogo sarà solo un servizio a valore aggiunto e non una necessità intrinseca alla struttura come lo è oggi (usare i deb al di fuori della gestione di apt è da folli).
SpatialBundle si vuol inserire senza sostituire ma integrandosi nell'ecosistema della distribuzione del software e più in generale di dati a qualsiasi titolo (anche fosse un semplice film).
In futuro sarà possibile ad esempio distribuire un film incorporato in uno SpatialBundle con un player dedicato e fare in modo ad esempio che sia visualizzabile anche su macchine che non possono avere installato un player per motivi di licenza o altro.
L'utilizzatore in questo caso si limita a ricevere il file e cliccarci sopra ed il film viene eseguito in visione.
Sono le 4.50 direi che posso andare a sdraiarmi che alle 6.45 mi devo preparare per andare al lavoro...
Chiudo la sessione "Macinacodice" aperta giovedi sera...
per ora è tutto a presto :)
Luca Cappelletti
http://developer.infodomestic.com
luca dot cappelletti at gmail dot com (Mail, GTalk e MSN)
luca dot cappelletti (Skype quando mi ricordo di accenderlo)

[The Road To...] Domenica 9 Marzo 2008

Questi due giorni li ho passati nello sviluppo della versione 0.8.9.2 dello SpatialBuilder che è la tecnologia integrata in uno SpatialFactory produttore di uno SpatialBundle che contiene un CrossBundle.

Nella considerazione di funzionamento multipiattaforma ho dovuto rivedere l'utilizzo della progress bar di zenity nei nuovi termini multipiattaforma e quindi cominciare ad integrare le widgets di dialog, la quale progress bar viene definita "gauge".

Le widgets dialog non sono installate di default su tutti i sistemi ed in particolare non lo è in Ubuntu Linux Hardy Heron 8.04 e quindi il suo utilizzo è delegato alla presenza di un precompilato embedded come payload

Il problema del precompilato è la necessità di fornire un binario per piattaforma rompendo cosi la premessa di trasparente multipiattaforma dello SpatialBundle che è basato, per ora, sullo scripting shell POSIX con qualche richiamo specializzato a bash (DEPRECATED da risolvere).
Il binario multipiattaforma in oggetto è relativo solo alla tecnologia di building per sviluppatori SpatialBuilder quindi comunque rivolto ad un bacino di utenza più specializzata e tollerante agli attriti cognitivi o eventuali fine tuning forzati.
Il costo di manutenzione di sviluppo multipiattaforma di dialog, se confrontato a quello attuale del solo SpatialBuilder, è alto, in quanto il suo sviluppo richiede una compilazione completa per piattaforma cosa che non avviene con bash (il quale richiede solo fine tuning sulla piattaforma testata).
L'utilizzo dei servizi dell'host è fortemente promosso (zenity,kdialog).
Dialog deve rappresentare, lì dove è necessario e possibile, un fault back di emergenza.

[The Road To...] Domenica 14 Ottobre 2007

Mattina:
Riduco al minimo l'utilizzo di zenity in favore di xmessage prima di finire di mettere completamente a punto ioDialog che rappresenta l'oggetto di dialogo di Infodomestic Objects (wrapper a tutte le forme di widget dialogs disponibili sulle distribuzioni).
Test su Ubuntu Dapper, Ubuntu Feisty, FreeBSD 6, PCBSD, Sun Solaris 10
TODO: pulizia zenity con xmessage
La dicitura:
xmessage -center -buttons Yes,No -default No -print message
scrive il messaggio "message" con i pulsanti [Yes][No] e default evidenziato su [No], cliccando su un pulsante ritorna il nome del pulsante.
10:59
99% delle dipendenze a zenity sono state escluse e sostituite dal più flessibile xmessage.
Rimane la principale dipendenza che permette la manipolazione del system tray elementare.
A differenza di Zenity con xmessage è possibile integrare testo di Help per le scelte da operare.
Nei messagi di conferma dove compare solo il classico testo piu pulsante tipo:
--------------------------------------------------
"Ciao tutte le cose sono state svolte!!"
[OK]
--------------------------------------------------
Ho inserito un delay di 5 secondi per auto chiudersi.
Dipendenze da risolvere:
System tray entry per il primo menu e File selector per la scelta di destinazione del Send to...
Questi due componenti possono essere completamente riprogrammati con FLTK o simili.

11:24
Trunk SpatialFactory 0.8.8
0.8.8 usa xmessage per comunicare.
Si aspetta due file proxy di nome: ioNomeProgramma e ioWrapper in Contents/Resources/bin per la gestione dei binari reali

12:47
Attualmente nella modalità --silent si perde completamente il controllo della gestione del'oggetto, ovvero non si possono modificare gli attributi ne inviare messaggi per richiamare evetuali metodi (come per esempio il metodo Remove).
E' necessario introdurre un punto di ingresso sicuro tramite il file system come per esempio $HOME/Objects all'interno del quale replicare la vista di ioDock e permettere di accedere ai metodi esposti nel tray:
About
Open
Send
Controls
Remove

Quindi ioDock può far riferimento diretto a $HOME/Objects

Ad ogni esecuzione diretta copia l'oggetto ioMenu in $HOME/Objects ed esegue $HOME/Objects/ioProgrammaMenu --Open
Ad ogni Remove rimuove anche il relativo $HOME/Objects/ioProgrammaMenu
Se si esegue Open e ioProgramma non è disponibile allora autorimuove $HOME/Objects/ioProgrammaMenu e rilascia un messaggio di avvertimento.
Ciò preserva da evenutali condizioni di inconsistenza dove è presente il Menu ma non il programma.
ioProgrammaMenu è uno SpatialBundle

14:58
Primo wrapper 100% convertito in Object Rexx.
Nel frattempo la legna nel camino viene divorata dalle fiamme tramite una funzione gradino del tipo: Ciocco umido->Brace ... non c'è gusto
Devo cambiare notebook a passare a qualcosa con monitor max 15pollici, case alluminio, doppio processore 64bit super efficiente, batteria eterna, wifi e bluetooth, super scheda grafica 3D OpenGL con tanta RAM non condivisa.Ma i Powerbook ultima serie ci si avvicinano?Vedremo.

20:45
Mollo tutto e mi faccio una minidose di tenente Colombo e poi Heroes a tutto spiano.Rexx puo aspettare.
Dopo vomito pe la giornata in modalita macinacodice...ora mi godo il trip televisivo.

[The Road To...] Sabato 15 Settembre 2007

I post The Road To vengono prodotti con tomboy in modalita macinacodice.
Questi poi vengono tenuti in stagionatura in .tomboy fino a quando non mi rendo conto che mi sto ricordando di doverli postare!!!

---

18:00
E' dalle 9:30 di questa mattina che sono testa chinata sulla tastiera ad emettere flussi di bit.
Ho preparato un ambiente di runtime per REXX tramite Regina.
Ora si clicca sul Bundle ioReginaREXX e si avvia un terminale dedicato all'interno del quale è disponibile l'ambiente interpretato di Regina e quindi possibile passargli uno script .rexx da eseguire.
L'ambiente ha con se tutte le variabili di ambiente settate e disponibili, nonchè una shell ristretta.

Penso che gli sviluppatori di applicazioni desktop che richiedono un'interfaccia grafica, oggi dovrebbero preoccuparsi di offrire con la stessa applicazione delle interfacce separate e dedicate per classi di dispositivi.
Ad esempio:
Personal computer con monitor da almeno 8/10 pollici
Dispositivi mobili con monitor 4/8 pollici
Dispositiv mobili con monitor max 4 pollici.

Insomma la stessa applicazione ricompilata per un Nokia N73, per un Palm Tungsten, Per un Nokia N800, per un table da 10 pollici, per un iBook 12 fino a un desktop da 20 pollici, etc etc... dovrebbero avere delle interfacce grafiche disegnate esplicitamente per quel tipo di visualizzazioni.
E' lo stesso problema che i designers web incontrano ed affrontano già da tempo.
Quindi mi auguro che in futuro essi sviluppano più di una interfaccia dedicata.
Oggi è possibile pensare seriamente all'utilizzo di interfacce AJAX locali, chiaramente supportate da motori di rendering superveloci che tengono il passo con i widget classici.

20:49
Compilato e "Bundlizzato" ioLibnotify che verrà usato come componente di notifica dagli SpatialBundles.
Sarà onnipresente in ogni Bundle come carico pagante da 405Kilos
Il Dock tray implementato già da almeno una settimana funziona a meraviglia.La sua garanzia di funzionamenteo è strettamente vincolata all'utilizzo di Ubuntu Feisty.Questo concetto necessità di seria revisione ponendo in primo piano elementi quali: indipendenza dal gnome -panel e dal system tray applet di gnome.
In poche parole potrebbe essere necessario prendere in considerazione un pannello gtk/gnome agnostico che puo girare ovunque e che abbia un system tray bay standard che accetti icone svg/png da 128px.

Devo costruire un sistema di notifica basato su named pipe e non su librerie da compilare.
Il sistema, li dove presente, esegue il faultback a libnotify altrimenti esegue la sua notifica nativa da implementare con widget leggeri e super specializzati.

Il prossimo sistema di notifica sarà basato su OSD per operare un rinforzo informativo sulle attività dei Bundles.

Le notifiche devono poter operare ed essere esplicitate anche in una console.

Infodomestic Objects non vuole reinventare un mondo su tutte le piattaforme come sta riuscendo egregiamente Gnome tramite le sue librerie specializzate, ma vuole dare una forma al mondo che già esiste utilizzando scalpello e collante.

Mi è stato chiesto da un ragazzo americano di creare il Bundle di Pidgin.
La mia attuale toplist comprende:

GIMP
Calcolatrice
Terminale
Text Editor
Browser Web
Calendario
Thunderbird
Rubrica condivisa
Pidgin
Gnumeric
Abiword
Rhythmbox

E' assolutamente fondamentale avere canvas con un widget crossplatform leggero che possa integrare una libreria di parsing e rendering Web2.0 (XHTML CSS2 ECMAScript/Actionscript).
Con questo canvas ultraspecializzato che può essere eseguito in qualsiasi environment X sarà possibile integrare le applet Dashboard di Apple, Google e Yahoo ed eseguire direttamente materiale Flash (per quelle Apple è necessario un ulteriore layer di adattamento che traduce le chiamate a OSX).
Questa peculiarita è un KillerApp per il Desktop Linux e dovrebbe essere seriamente presa in considerazione.
Qualcosa si muove nella giusta direzione grazie a KHTML ed incredibile a dirsi: Apple stessa.
WebKit è una tecnologia che emerge grazie ai lavori di Apple su KHTML e presto sarà pienamente disponibile anche per GTK.
Epiphany su WebKit è gia in lavorazione e porterà degli ottimi risultati.
Ci si può chiedere sul perchè non supportare Gecko nell'incarnazione XULRunner, la risposta è che ancora non ritengono il caso di sganciarsi definitivamente dai widget XUL based (il quale di per se è un ottimo linguaggio di marcatura per widget tipo GLADE).Ci sono dei timidi binding ma la leggerezza e l'integrazione nativa è ancora utopia per questo progetto megalitico.
Mozilla è ancora un mondo a se stante e cambieranno seriamente registro nel momento che WebKit si sarà pienamente diffuso erodendo quote a Gecko.
Installare Mozilla, oggi, è l'equivalente impegno di installare Java.
E' un ambiente di esecuzione generico con widget specializzati per il rendering web, ma non dista molto dal runtime Java per principi. Infatti possiamo costruire aplicazioni verticali specializzate ed eseguirle con lo XULRunner.
Il principio è ottimo ma l'implementazione è troppo pesante in termini di spazio occupato e latenze di parsing.
Questo è quanto riguarda il classico Firefox, ma qualcosa si sta seriamente muovendo in seno a Mozilla e Minimo è gia una sua risposta concreta.
Lo spinoff di Thunderbird potrebbe essere un primo segno di tentivo di ottimizzazione dei gruppi di lavoro.
Devono dare una risposta concreta altrimenti crolleranno sotto il proprio peso.

23:54

Prima di passare al nuovo giorno...
Con l'utilizzo del notify ho integrato uno screenshot dell'applicazione che si va avviando.
Il feedback è immediato in quanto la rappresentazione non è tradotta con un'icona approssimata, ma diretta con una fotografia del'applicazione stessa.

[The Road To...] Raccolta di appunti sparsi durante l'avanzamento di SpatialBundle

Martedi 14 Agosto 2007

01:30 A.M.
Con le modifiche apportate a Java6 entra prepotentemente in scena il wrapper per la prima diretta esecuzione di AppRun.
Il wrapper in questione si trova in Linux-ix86/bin e nell'ipotesi più semplice richiama direttamente il binario principale.
Nel caso di Java6 in qualità di suite , il wrapper richiama il pannello di controllo e il JavaWS cache manager per fornire un feedback di base all'utilizzatore.

Dopo la prima esecuzione viene copiato AppRun.desktop in $HOME/Desktop/Broken_Link_You_Can_TRASH_It_$PROGRAMMA.desktop
L'effetto di questa copia è quello di avere un'icona colorata nel caso di cache attiva (il .desktop risolve felicemente contro il $prefix) nel caso che la cache sia stata --free allora compare nel desktop il nome del file .desktop che cerca di essere descrittivo della situazione poco felice con le parole: BROKEN_Link_You_Can_TRASH_It_ioJre6u1-feisty.desktop in questo modo l'utilizzatore osservando un file testo ostile ed il suo nome che lo invita ad essere buttato nel cestino, potrebbe eliminarlo direttamente ripulendo il Desktop di una foglia secca (DEPRECATo nel futuro implemento una soluzione più elegante).
Le parole BROKEN e TRASH sono volutamente poste in maiuscolo tale che l'effetto di Information Foraging permetta di intercettare piu velocemente le parole chiavi dell'invito proposto.
Ricordo che ad oggi l'utilizzo di un file .desktop è DEPRECABILE per l'inconsistenza tra l'oggetto reale ed il metadato.L'utilizzatore puo facilmente scambiare l'uno con l'altro.
Il problema verrà meno quando in futuro sarà possibile incorporare le voci .desktop in script eseguibili.

Quando si esegue uno SpatialBundle .jar questo deve poter accettare in ingresso uno SpatialBundle ioJre tale da poterlo aprire e passargli se stesso come argomento da lanciare.
Questa tecnica permette ai livelli superiori di poter effettuare il drop di un Jar su un ioJre e viceversa.
Un Jar che non trova un ioJre deve aprire una finestra di dialogo per fare scegliere all'utilizzatore lo ioJre voluto e consigliare nello stesso momento la capacita di drop dello ioJre sul Jar. Quest'ultimo dopo il drop prende nota della path di sorgente e registra un mime per le future esecuzioni.

03:30 A.M.
Ho aggiunto la capacità di parsing dei programmi Java Web Start potenzialmente passabili dal Web Browser che deve risolvere il mime.
Un file .jnlp viene copiato in cache locale poi eseguito direttamente.

• Lo SpatialBundle si occupa di eliminare il .desktop nel Desktop nel caso di ioProgramma --free

04:35 A.M.
Le modifiche apportate allo SpatialFactory meritano un cambio trunk da 0.7.4 a 0.7.5 cosa che avverrà prima di chiudere la sessione notturna ed avere la nightly build finale verso le 05:00 A.M.
File modificati makeself-header AppRunFooter fAppRun

05:20 A.M.
Brancolo nel buio attivo la modalita debug diretta nel codice per sapere cosa succede.

05:30 A.M.
file ed area di codice di bug ingaggiata

05:45 A.M.
Bug Aperto
Trunk 0.7.5
Sessione Chiusa


Domenica 19 Agosto 2007
Colonna (Casteli Romani) - Rome Italy


01:27 A.M.
Aperta la sessione per risolvere il bug del trunk 0.7.5

01:52 A.M.
Bug risolto ma sarebbe necessario che il CrossBundle riuscisse a distinguere tra una richiesta diretta da terminale ed un passaggio mime.
Il bug è risolto con default sul mime quindi: ..../bin/java -jar $YourPayLoad
La versione da terminale è momentaneamente commentata: ..../bin/java -jar $YouAreHere/$YourPayLoad
viene eseguito il parsing contro .jar e .jnlp per abilitare il mime sui file webstart anche tramite browser.

02:43 A.M.
mentre risolvo alcune questioni sul CrossBundle di Jre6 (clicco sullo SpatialBundle e deve aprire anche un file selector per farmi scegliere un .jar da eseguire) ascolto in cuffia dall'ibook G4 1Ghz 12' le mie ultime 10 traccie di musica elettronica sperimentale create quando ero in montagna i giorni precedenti...
E penso...codifico su questo catorcio di Acer Aspire 3000 (ma con Ubuntu Feisty on board) con un AMD 2800+ ed ascolto musica su un ibook G4 1Ghz e Mac OSX che da le piste a tutti!!! (...quasi tutti ;-)
E penso...che per garantirmi incontaminazioni di -dev varie ho una fresh feisty desktop e non posso ascoltare mp3!!! non posso perche dovrei avere una rete per tirare giù i codec dai repo di ubuntu e se avessi installato la reciproca versione di Freespire ora sarebbe tutto ok gia da CD (ma dovrei imbarcarmi KDE).
E penso...che una potenziale prossima compera potrebbe essere uno spettacolare Powerbook G4 12' di quelli superPower (ma perche non hanno mai fatto un G5 Powerbook... ho ancora la geekBava).
E penso... che con un PowerbookG4 partizionerei definitivamente per condividere con OSX Ubuntu e compilare rilassato senza temere di dovermi addormentare prima di vedere terminata una compilazione di GIMP tramite Pkgsrc di NetBSD...eh gia...dovete sapere che ha un overhead notevole per garantire la massima qualità di codice in crosscompiling e crossplatform...dare ed avere ;)
Piu andiamo avanti e piu questa ridicola saga dei Macbook Intel based andrà avanti ed i Powerbook costeranno sempre meno sempre meno sempre meno..fino a non trovarne piu :) ...ed intanto gli IBM G5 fanno sognare sempre più... vabbe torno sul codice...e ci ripenso.
Mi interessa arrivare alla Ubuntu 2008.4 che sembra essere una LTS con una macchina con supporto grafico 3D completo perche a quel punto Compiz & Co sarà una realta consolidata della quale non si puo far piu finta di nulla.

05.28 A.M.
Uno SpatialBundle che contiene uno Jar esegue uno spatialbundle Jre passando se stesso come parametro a runtime.
Quindi:
$ioMioJar ioJre
esegue
$ioJre /tmp/Programs/ioMioJar/Linux-ix86/bin/MioJar.jar

06:42 A.M.
Sessione terminata, svengo dal sonno.
Sviluppo un template per un wrapper al binario principale.
Se clicco ad un Jre mi chiede un Jar se clicco ad un Jar mi chiede un Jre.

15:27 P.M.
Dormito,svegliato,bevi acqua,lava denti,doccia,piatto di muesly con yogurt all'Aloe.
Modalita MacinaCodice ON
No Stop Coding.

19:18 P.M.
SpatialFactory 0.7.6 out.
Respatializing ioBash3.2 con SpatialFactory 0.7.6

20:08 P.M.
Bundling SpatialFactory 0.7.6 per fornire agli sviluppatori un tool spacialized.

Domenica 26 Agosto 2007
Colonna (Casteli Romani) - Rome Italy

12:51 P.M
Dopo due giorni in modalità "macinacodice" full immersion sono arrivato alla versione 0.8.4

Il mio attuale versioning funziona cosi:
X.Y.Z
dove X per ora è 0
Y ha un range da 0 a 9
Z ha un range da 0 a 9

Z viene incrementato di una unità ogni qualvolta viene introdotto almeno una modifica strutturale dove le funzionalita (retrocompatibili) vengono modificate, eliminate, sostituite, aggiunte.

Se vengono solo risolti bug questi vengono testati con versioni del tipo:
X.Y.Z.bugN
Ma al rilascio di buN viene anche rilasciato un Z+1 in questo modo la versione successiva eredita la risoluzione dei bug e qualche funzionalità in più cosi il rilascio non risulta sterile alla sola risoluzione del bug (che saranno sempre presenti per tutto l'arco della vita di tutto software del mondo).

Ad oggi le funzionalità di Infodomestic Objects Spatial Bundles producono i seguenti effetti interattivi:
L'utilizzatore clicca sullo SpatialBundle questo si carica in memoria ram/disco, attiva un'icona nel system tray ed avvia un programma wrapper che esegue i comandi specificati dal packager.
Cliccando sull'icona rappresentativa nel system tray si apre un menu contestuale con le seguenti voci:

About (informazioni testuali sul contenuto pagante dello SpatialBundle)
Clear (libera dalla memoria lo SpatialBundle)
Send to... (invia a: Cartella, Mail, Bluetooth, ....)
Properties (Statistiche dinamiche)

18:14
SuperMegaBug risolto.

Considerando che il CrossBundle è disponibile anche per gli altri utenti del computer sarebbe opportuno rendere disponibili in una locazione di comodo anche gli SpatialBundle singoli.
Ogni SpatialBundle dopo essersi aperto in un CrossBundle condiviso copia se stesso nella locazione condivisa.
La copia avviene solo se si apre in questo modo si previene una scrittura in uno spazio dove già presente ma appartenente ad altro utente.Non è necessario, cosi, un controllo di presenza per questa specifica azione.
La chiusura del CrossBundle deve eliminare anche la presenza dello SpatialBundle condiviso.
Al riavvio del computer tutti i CrossBundle e SpatialBundle condivisi vengno eliminati.
L'osservazione degli oggetti puo avvenire tramite il menu Action di qualsiasi Bundle nel system tray tramite il menu Send to... dove è possibile spostare lo SpatialBundle originale in una qualsiasi cartella (o spedire per posta o bluetooth o latro via plugin TODO).
Il menu Send to... potrebbe prevedere la possibilità di osservare il contenitore di tutti gli SpatialBundles condivisi nel sistema dagli utilizzatori attivi.
Esempio:
Send to...
• Desktop
• Another Destination...
• Mail
• Bluetooth
• SMS
∘ Infrared irDa
• Open All Shared Items...

Nel caso di tentata sovrascrittura nel Desktop o nella destinazione scelta l'azione ritorna un messaggio di avvertimento senza sovrascrivere.

Modificato il menu Action le funzioni di:
About
Play
Controls
Remove
Send to...
Properties

20:20
Ogni SpatialBundle ora viene condiviso in: /tmp/InfodomesticObjects/SpatialBundles/SharedItems/
cio comporta dei benefici per tutti gli utilizzatori concorrenti dello stesso computer.
Ogni utilizzatore è in grado anche di cancellare accidentalmente la propria copia e quindi copiare di nuovo dal menu Action lo SpatialBundle originale in una nuova locazione.

Sabato 1 Settembre 2007
Colonna (Casteli Romani) - Rome Italy

15:00
SpatialBundles con SpatialFactory 0.8.6

Sessione SpatialFactory 0.8.6 aperta

Modificato il menu Action le funzioni di:
About
Open
Send
Controls
Remove

Remove è un'azione drastica che richiede maggiore riflessione e minore impulsività quindi viene posto alla fine dell'elenco.

About al primo posto per sopperire anche ad eventuale click isterico.

23:00

Lavoro ancora assiduamente su una funzionalità che permette ad uno SpatialBundle di trovare una risorsa in un intorno stretto del luogo dove si trova posizionato lo SpatialBundle stesso.

Definizione: Considero un intorno stretto del nodo campione, il grafo costituito dai nodi connessi con una distanza massima di 3 dal nodo campione.

Questo metodo dovrebbe permettere a SpatialBundle di trovare velocemente alcune dipendenze nel caso non le avesse con se.

Ad esempio ioJGnash necessità dell'adattatore ioJre per funzionare.Potrebbe incorporarlo con se aumentanto di peso, ma anche cercarlo localmente.Considerando che ioJre pesa 99Mb, risulta essere un connettore non facilmente trasportabile per SpatialBundle di dimensioni 1/10 (è un nonsense dove ci sono lacune di banda come l'Italia ora, pero fuziona ottimamente per software distribuito tramite supporto ottico).

Domenica 09 Settembre 2007

Implementazione della modalità di avvio --silent
Questa modalita deve permettere di caricare in memoria l'applicazione senza avviare interfaccie grafiche.

La modalità si attiva con un'opzione passata allo SpatialBundle
ie: ioPippo --silent

Questa modalità esegue le seguenti operazioni:
Carica la memoria.
Attiva la sua rappresentazione nel Tray.
E' necessario prevedere una funzione del tipo:
--silent-nodock
che evita anche l'esplicitazione nel Dock.
Potrebbero beneficiare di questa funzione i Framework di supporto ad esempio Kdelibs, QT
Ad esempio ioAmarok attiva ioQt e ioKdelibs i quali attivano la loro rappresentazione nel Dock.Tramite la seguente definizione è possibile limitare la rappresentazione al solo ioAmarok:

ioQt --silent-nodock
wait
ioKdelibs --silent-nodock
wait
ioAmarok

E' una modalità deprecabile normalmente in quanto fuori dal controllo visuale dell'utilizzatore il quale deve sempre avere un ritorno di esperienza dall'attività del Computer.

Nella lavorazione di SpatialBundle 0.8.8 integro la funzione fSay come primitiva del futuro ioSpeak.
Questa funzione sostituisce il normale output di dialogo con un dialogo dedicato per l'ambiente in uso.
E' in grado di emettere informazioni utilizzando i widget dell'ambiente principale di run e si adatta in funzione della disponibilità fino a ridurre l'output ad un semplice echo.
Sono stati presi in considerazione i seguenti widget sets:
Zenity
GDialog
KDialog
XDialog
Dialog
bash echo
Quest'ultimo non deve funzionare necessariamente da una sessione di console ma anche da una sessione X dove non sono presenti i precedenti dialogs widget.Nel caso apre una finestra xterm (o altri disponibili) ed emette l'informazione.
L'ultimo stadio è l'implementazione parallela di un sintetizzatore vocale che lavora in parallelo.

SpatialBundle vs OSX Bundle

Dedicato ai miei 200 Twitter Followers
grazie di cuore ;)



La Apple promuove presso la comunita degli sviluppatori OSX un documento di 66 pagine per descrivere le varie modalita di packaging and delivering del software.
Essa considera 5 distinte aree di applicazione per tipologie di packaging:

Type Destination
Application /Applications
Framework /Library/Frameworks
Font /Library/Fonts
Documentation /Library/Documentation
Command-line tool /usr/local/bin














Un esempio pratico:

Component Component type Installation destination
Levon.app
Application
/Applications
Levon_User_Guide.pdf Documentation /Library/Documentation
SharedServices.framework Framework /Library/Frameworks

E' facilmente intuibile che dal punto di vista posizionale, l'applicazione Levon subisce ancora un effetto UNIX filesystem.
Lo UNIX filesystem per l'utilizzatore casalingo tipicamente monoutente è fortemente DEPRECATO per i sistemi Infodomestic Objects.

La tecnologia degli SpatialBundles di Infodomestic Objects di nuovo riducono enormemente la complessita topologica ed organizzativa anche nei confronti degli sviluppatori che devono concentrarsi sul loro prodotto piuttosto che assecondare l'architettura, la quale, dovrebbe essere sempre un servizio che faciliti il lavoro e non qualche cosa che lo rende piu complesso.

Di nuovo il processo di delivering finale di un Bundle OSX utilizza i seguenti blocchi:

Product -> Container -> Transport -> Computer

Il blocco Product è un Bundle directory quindi deve necessariamente essere inserito in un contenitore che lo riduce ad un file per poter essere agevolmente manipolato.
Il Container OSX è tipicamente un archiviatore o un file immagine (.zip || .dmg).
Nel primo caso l'utilizzatore deve attivamente estrarre il contenuto dall'archivio .zip e poi operare manipolazioni sul suo contenuto (esempio duplicarlo, attivarlo con un click, rinominarlo, etc).
Nel secondo caso (immagine DMG) il Container è un vero e proprio filesystem chiuso e rappresentato da un file.Nel momento che l'utilizzatore clicca sul file .dmg le funzioni di systema gia presenti in un computer con OSX automaticamente si preoccupano di aprire il contenitore e rendere subito disponibile alla manipolazione il contenuto.

Uno SpatialBundle Infodomestic Objects risolve drasticamente la maggior parte delle operazioni che l'utilizzatore finale deve eseguire per prendere possesso delle funzionalita del programma.
Uno SpatialBundle è Product e Container nello stesso momento quindi la complessità di retrieving e manipolazione per l'utilizzatore finale si riduce a:

SpatialBundle -> Transport -> Computer/Run

Le azioni di un utilizzatore Infodomestic Objects nel tramite di uno SpatialBundle si possono ridurre a pochi passi:

La persona trova lo SpatialBundle in internet, clicca nella pagina web, il programma automaticamente si scarica nel Desktop e si esegue.
Altro caso, la persona compra una raccolta software su supporto ottico (CDROM o DVD), trascina l'icona del programma nel desktop e poi clicca sopra ed il programma parte.

Il vantaggio principale di utilizzare un filesystem di tipo .dmg contro un .iso sta principalmente nel fatto che è possibile parcheggiare file e mantenere intatti gli attributi del file stesso con particolare riguardo all'attributo di esecuzione che in un filesystem .iso non è possibile.
Lo svantaggio è che bisogna sempre far riferimento a tecnologie di parsing OS centriche e quindi delegare alla bonta del proxy in questione l'eventualita di potersi eseguire.

Nel caso di Linux sarebbe possibile usare un semplicissimo filesystem ext2 e simulare con un proxy installato sul sistema gli stessi effetti della manipolazione di un .dmg.
In questo caso verrebbe sempre meno uno dei concetti di Infodomestic Objects ovvero decentralizzazione del potere esecutivo per passarlo in mano all'utilizzatore che usa il suo spazio protetto di memoria.
Un secondo problema che riguarda sempre la centralizzazione è relativo al comando di mount necessario per eseguire il mounting dell'immagine il quale richiede un accesso di amministratore (assolutamente DEPRECABILE).
Con una classica installazione Desktop di Ubuntu non è possibile costruire workaround efficienti per simulare l'autofissaggio (mounting) di un immagine (equivalente di DMG in OSX) cosi come avviene intimamente nel Finder di OSX.

L'unica clasuola chiesta all'utilizzatore di Infodomestic Objects è quella di abilitare la capacita di esecuzione del file, che avviene solo la prima volta per quel programma.
Questa clausola aumenta la sicurezza in quanto nel caso di malware/virus/worms allarma attivamente l'utilizzatore che sta per eseguire un programma e non, quindi, osservare un oggetto dati tipo immagine, musica, documento...

E' previsto l'inserimento di tecnologia di intelligenza artificiale per permettere un uso piu autonomo e consapevole del software permettendo che l'utilizzatore possa anche sbagliare, come sua umana natura e diritto.

Packaging Gaim into ioGaim2.0 for feisty IOL2007






apt-get source OK
configure && make && make install OK
preparing Bundle package..
checking Icons...

[The Road To...] Domenica 24 Giugno 2007 04:35

E' preoccupante l'utilizzo del gateway /Programs che richiede necessariamente un accesso root per la manipolazione.
Un sistema Infodomestic Objects 100% da installazione CD Live puo contenere nativamente un gateway /Programs -> /tmp/Programs ma meglio ancora /Programs potrebbe risolvere le necessita di installazione rigida dove l'utilizzatore condiviso lo richieda.
In /Programs si possono memorizzare direttamente gli SpatialBundles che continueranno a funzionare con il metodo classico di disk caching.
Nei sistemi compatibili con Ubuntu si continuera ad usare il meccanismo diretto dello SpatialBundle manipolato dall'utilizzatore nella sua HOME o nello spazio dove esso puo leggere e scrivere (esempio puo prelevare i programmi da un cdrom).
Nel caso di utilizzo centralizzato utilizzando apt-get si usa quindi /Programs come land runway dove posizionare gli SpatialBundles che verranno poi utilizzati ed eseguiti centralmente dagli utenti.
Un installazione centralizzata permette di poter far riferimento ad un catalogo persistente non modificabile di software gestito dall'amministratore del sistema, ma lasciando la capacita di poter effettuare una copia e poter usare il software liberamente svincolandosi dall'amministratore anche quando esso ha eliminato il componente dal computer.
Il servizio mkdirPrograms si preoccupa di generare /tmp/Programs e /dev/shm/Programs
Gli SpatialBundle si devono preoccupare della generazione dinamica dei link simbolici a seconda se viene attivata la modalita bitJet /tmp/Programs/ioProgramma -> /dev/shm/Programs/ioProgramma
TUTTE le compilazioni avvengono contro /tmp/Programs/

[The Road To...] atomic transaction safe file move

Dopo vari esperimenti ne emerge che c'è un grosso pericolo che la cache RAM venga velocemente saturata dai software pesanti.
A tal proposito consiglio la seguente modifica: Il centro nevralgico di esecuzione risulta essere /tmp/Programs/ioProgramma ma lo spatial bundle prepara alla migrazione in /dev/shm/Programs/ e nel caso migra solo ioProgramma nel seguente modo:
1) mi assicuro che la cartella /dev/shm/Programs esiste
2) mi assicuro che lo spazio necessario a destinazione sia sufficiente (> 10% del programma)
3) mv /tmp/Programs/ioProgramma /dev/shm/Programs/ioProgramma
4) ln -s /dev/shm/Programs/ioProgramma /tmp/Programs/ioProgramma

Per garantire l'atomicita della transazione sarebbe il caso di usare la tecnica di OSX dove viene creato un segnaposto per il nome del file prima di cominciare a copiare a destinazione.
Il segnaposto viene creato con un semplice $touch ioProgramma in questo modo si ha garantito uno pseudo lock sul nome file ma non sulla grandezza.
Potrebbe essere possibile associare al touch il comando dd in questa sequenza:
1) Si esegue il touch fileDestinazione in modo ricorsivo
2) Si esegue dd if=fileSorgente of=fileDestinazione in modo ricorsivo

Ritengo necessario quindi riscrivere l'algoritmo di mv Move con i seguenti metodi:
check Destinazione >10%
touch a Destinazione
dd if of
diff destinazione sorgente = 0
rm Sorgente

bitJet=true
Se l'utente dinamicamente decide di spostare il software nella turbocache bitJet deve poterlo fare con i metodi che gia conosce, ovvero passare comandi live usando il programma stesso esempio ioProgramma --bitJet=true anche se ioProgramma è gia in esecuzione riceve e modifica lo stato spostando dalla cache disco a quella RAM.
ioProgramma --bitJet=false riporta la cache RAM a cache Disk.

In questo modo si puo dare uno strumento dinamico anche al sistema per gestire criticita.

E' possibile rendere la soluzione ancora piu granulare agendo direttamente sui binari e sulle singole librerie facendo magari riferimento ad una lista di oggetti che lo sviluppatore vuole granularmente rendere piu veloci a runtime.

I vari livelli di granularita potrebbero passare per:
Tutto il programma in blocco
Solo le cartelle bin,sbin,lib,var
I singoli componenti a scelta libera

Per ognuna delle soluzioni è necessaria una gestione precisa dei link simbolici.

E' comunque sempre necessario a livello di first time building eseguire un profiling preciso di performance per identificare le bottleneck del programma ed eventualmente proporre un caching RAM per quelle componenti particolarmente penalizzate senza necessariamente tirare dentro blocchi di bit non influenti al fine del miglioramento dell'efficienza di esecuzione.

[The Road To...]

Introduco il concetto di Dinamyc Framework per assecondare una realtà strettamente necessaria:
Se un'applicazione per funzionare ha bisogno di un framework di librerie (esempio le QT libs) queste devono essere portate dietro dall'applicazione stessa e messe a disposizione nella cache disco.
In funzione della grandezza del framework si puo introdurre nella Turbo Cache utilizzando la tecnologia bitJet oppure nella cache disco.
Nel caso specifico di QT, l'installazione occupa piu di 250 MB e quindi non si puo inserire nella Turbo cache (max 250MB).
Nei casi specifici dove è richiesto un Framework addizionale per ora la soluzione è di eseguire l'embedding nel Bundle dell'applicazione, quindi Bundle in a Bundle che viene aperto ed eseguito e posizionato in:
/tmp/Frameworks
con la stessa tecnica viene messo a disposizione degli altri utenti fino al riavvio.
Frameworks meno impegnativi possono essere spostati nella Turbo cache.

E' conveniente quindi compilare direttamente contro la cache disco e poi usare link simbolici dalla cache disco alla turbo cache per risolvere gli spostamenti dinamici.

Essendo la cache disco una risorsa grandissima, diventa il centro nevralgico prima delle valutazioni di efficienza.

[The Road To...] Rebuild World?


La tentazione di ricostruire il mondo è immensamente grande.Non mi tornano mai i conti nel bilancio ricavato dal rapporto Benefici/Entropia.
Insomma queste distribuzioni Linux ed in particolare Ubuntu...sono ecologicamente insostenibili.
Apt è una spada di damocle per la materia duale che va dal layer GNU (escluso) in su.
Ai tempi del C64 riuscivo a programmare grafica usabile (con il joystick) che risultava pulita efficace e fluida.
Oggi con un banalissimo AMD 2800+ e 512MB di RAM devo subire lacune di rendering quando trascino le finestre di Nautilus da una parte all'altra dello schermo (cosa che non succede manco al piu cesso di Mac...ok ho esagerato!!!).
Il mondo dello sviluppo OpenSource è tutt'altro che ecologico e decisamente entropico.
Mi piacerebbe lavorare con un sistema composto da:
Layer GNU di base gestito da un sistema a prova di bomba come Apt.
Layer grafico X/framebuffer gestito da un sistema in stile port di BSD (ricompilazione/ottimizzazione/installazione) posto in un bundle separato.
Layer userland gestito direttamentre dall'utente con programmi non installanti in stile Bundles di OSX/*STEP/ROX/RISC OS.
Il lato GNU + Kernel deve contenere nativamente in modo completamente trasparente un sistema tipo OpenSSI

Non è da escludere riconsiderare per il layer GNU l'utilizzo di builder del calibro di NetBSD (54 piattaforme supportate) o T2


SYSTEM CRASH SAFE
Cerco di immaginare un gruppo di software collaborativo che faccia di tutto per mantenere integro il sistema.
Se il sistema si interrompe l'utilizzatore anche in emergenza deve essere in grado di riprendere il proprio lavoro portarlo a compimento e poi eventualmente recuperare il sistema principale corrotto.
Esempio:
Dopo aver fornito una distribuzione stabile, l'utilizzatore scarica nella memoria ulteriori programmi (Abiword e Gnumeric).
Durante l'uso di Gnumeric il sistema si blocca non permettendo piu il lavoro, a quel punto l'utilizzatore riavvia e direttamente da GRUB selezione una sessione specializzata di nome Gnumeric che si limita ad avviare un kernel separato con un X separato minimale e Gnumeric al top esclusivamente per permettere di lavorare direttamente e concludere il proprio lavoro.

[The Road To...] Windows Manager Changes


Reintroduco il tasto "Chiudi" posizionandolo nell'angolo a sinistra. Elimino il tasto Massimizza e lascio Minimizza nell'angolo a destra.
RATIONALE:
I controlli GTK generici richiedono, nelle loro varie configurazioni, anche la presenza del tasto Chiudi della finestra, diversamente l'utente potrebbe non riuscire ad usare completamente l'interfaccia in modo consistente.
E' un problema di integrazione tra le tecnologie che va risolto a monte..forse Freedesktop è il luogo ideale.
Doppio click sulla barra della finestra produce la massimizzazione.E' una funzionalita nascosta in quanto ridondante alla capacita di estensione manuale dell'utilizzatore.
In pratica la persona è in grado, utilizzando l'angolo in basso a destra della finestra, di modellare la stessa a proprio piacimento e quindi anche massimizzarla, ma non minimizzarla o chiuderla completamente.
Cosi ho deciso di esplicitare visualmente le due funzioni di Chiusura e Minimizazione tenendole adeguatamente separate tra loro per evitare errori dovuti all'imprecisione di puntamento.
Sfrutto, in questo caso, anche la legge di Fitts per migliorare la capacita di puntamento in quanto le due funzionalita sono agli estremi degli angoli della finestra.
Considerando che la chiusura della finestra è un evento disastroso, ponendo il tasto a sinistra (mentre normalmente lo si aspetta a destra grazie alla diffusione di Windows e OSX) l'utilizzatore ha a disposizione piu tempo per ragionare e controllare la compulsivita (conosciuta come click isterico).
Dai test che ho eseguito, risultano diminuiti i casi di chiusura accidentale della finestra.
L'eliminazione del pulsante di Massimizzazione pulisce l'interfaccia grafica riducendo la complessita.
La funzionalita è comunque presente usando il menu contestuale sulla barra della finestra e comunque cliccando due volte sulla stessa.

[The Road To...]

Quando Mario attiva la cache con io SpatialBundle questo deve rimanere autoconsistente attraverso l'uso di Maria ed altri utilizzatori.
Cio implica che le modifiche dinamiche al proprio Desktop devono avvenire TUTTE localmente in $HOME/.local
Devono essere eliminate le modifiche nella LiveDir.
Mario ha i diritti in scrittura nello ioSpatialBundle in caching quindi è l'unico che potrebbe scrivere nella LiveDir mentre Maria ha solo diritti in lettura rimanendo penalizzata in scrittura nella LiveDir.
La LiveDir viene eliminata a favore di un metodo dinamico in caching: DinamicCacheLiveDir presente in /tmp/ioSpatialBundle_DinamicCacheLiveDir_Maria/ costruita semplicemente con:
export PROGRAMMA=ioSpatialBundle
export PERSON=whoami
export CacheLiveDir=$PROGRAMMA"_DinamicCacheLiveDir_"$PERSON

[The Road To...]

Bisogna tener conto che Manuela potrebbe voler/dover passare un file allo SpatialBundle per poterci operare sopra.
Potrebbe operare in questa direzione trascinando il file sullo SpatialBundle oppure passare in qualche modo il parametro a linea di comando o tramite un'associazione MIME esempio:

$ioGftp ftp://manuela@ftp.infodomestic.com

In questo caso lo SpatialBundle deve essere in grado elegantemente di poter prendere qualsiasi parametro $1 in ingresso conservarlo gelosamente e portarlo all'attenzione del CrossBundle ed in particolare del file ultimo eseguibile in questo caso in:

/Programs/ioGftp/Linux-ix86/bin/gftp ftp://manuela@ftp.infodomestic.com

Questo comporta che lo SpatialBundle rende accessibile globalmente la $1 esportandola definitivamente a runtime per i sottoprocessi con un comando del tipo:

export $PayLoad=$1

da quel momento in poi qualsiasi script puo conoscere il valore del $PayLoad inteso come carico da assegnare al CrossBundle (inserire in SpatialBundleToDo)

[The Road To...]

Il rispetto del versioning avviene in compilazione dove il compilato deve rispettare il prefix contenendo anche il numero di versione.
Questo processo è potenzialmente indipendente dal nome dello SpatialBundle il quale è un file nominabile come si vuole.
Esempio:
Compilazione con
$./configure --prefix=/tmp/Programs/ioWine0.9.8/Linux-ix86
e SpatialBundle di nome
ioWine

Per questa ragione è opportuno inserire con precisione il numero di versione nel file ioWine0.9.8_SpatialFactory.sh tale da permettere al builder di sapere dove costruire il dinamic disk cache.

In questo modo si puo aggirare il problema di necessaria sincronia tra il nome dello SpatialBundle che segue regole di apparenza e il nome della destinazione compilata che segue la coerenza di versioning per evitare conflitti.

Di conseguenza è possibile avere anche 4 file SpatialBundle di nomi vari e puntare allo stesso programma con 4 versioni differenti.

Esempio di differenze tra /tmp/Programs/ioJava1.4 e /tmp/Programs/ioJava1.5 con eventuali SpatialBundles di nome ioJava e ioJava2

Etichette

Latest Releases

Starred items

Flash On The Air

Subscribe to Mailinglist

Panel

.

HCCard OpenID ClaimID

Contact Infodomestic | Terms of Use | Privacy Policy

Copyright © 1994-2011 Infodomestic.com All rights reserved.