martedì, ottobre 13, 2009
Orthogonal Toolbox: esportare un diagramma Entity Relationship da Visio
Per ognuno di questi grafici sono sicuro che esista un tool migliore di Visio. Ma il fatto di poter fare tutti questi tipi di grafici da un solo programma è un gran vantaggio.
Una delle grosse limitazioni che ho incontrato più volte riguarda proprio i diagrammi Entity Relationship. Non è possibile da un ER esportare i dati in codice SQL, o in un qualunque formato che non sia grafico. Non è nemmeno possibile esportare l'elenco delle colonne di una tabella in un file excel.
Dovrebbe essere possibile farlo da Visio for Enterprise Architect. Ma non ho mai avuto la possibilità di vedere questa versione del prodotto. Credo non sia molto diffusa.
Ho trovato un tool fenomenale che si aggancia a Visio e fa abbastanza quello che voglio. Si chiama Orthogonal Toolbox. Questo strumento permette di esportare in XML i dati di un diagramma ER, e poi di applicare un XSD al file XML generato. Quindi è possibile esportare tutti i dettagli, e trasformarli in qualunque altro formato.
A me... me piace.
Salvare la disposizione delle icone sul desktop
Spesso capita di attaccare il portatile ad un proiettore. Talvolta questa operazione provoca il cambio di risoluzione. E le icone sul desktop perdono la disposizione che con la vostra maestria avevate ritenuto essere la più produttiva, intuitiva e soprattutto concettualmente artistica.
Ho scoperto da poco un semplice tool che permette di salvare la disposizione delle icone e ripristinarla in qualunque momento.
Si tratta di una dll (layout.dll). Potete trovarla su un sacco di siti (basta cercare su google layout.dll). Io l'ho scaricato da qui.
Funziona anche con Vista!
mercoledì, maggio 13, 2009
Scalabilità Infinita: elastic map reduce
Amazon ha inserito nella sua offerta di servizi Elastic MapReduce.
Per chi non conoscesse MapReduce, si tratta di un paradigma di programmazione, sviluppato da Google, per applicazioni di calcolo distribuito. Esempio semplice: dobbiamo applicare un algoritmo di clusterizzazione a 30 Miliardi di dati, che sul tuo pc impiega solamente 100 giorni a essere calcolato. Come fare? Semplice, dividiamo il problema in 100 sottoproblemi, lo diamo in pasto a 100 nodi del nostra server farm general-purpose, e alla fine ricomponiamo i risultati ottenuti in un unico output, in 1 giorno.
Piccolo problema, nessuno di quelli che conosco ha una server farm general-purpose con 100 nodi.
A questo punto arriva Amazon, che offre Elastic MapReduce, ovvero ti affitta 100 nodi per 1 giorno, e implementa già il framework hadoop, ovvero il framework che implementa MapReduce.
A questo punto non avrà più senso dire che i tempi di elaborazione sono troppo lunghi. Semmai l'algoritmo è inefficiente. Oppure non si è stati sufficientemente smart da trovare un algoritmo che permette di suddividere il problema in sottoproblemi. In questo caso, i tempi di elaborazione dipendono solo dalla fretta del cliente: lo vuoi in un 1 giorno, affitta 100 nodi. Lo vuoi in un'ora? Affita 2400 nodi.
Il pensiero lineare è finito. Se pensate ancora con i cicli for e while, siete alle schede perforate.
lunedì, marzo 16, 2009
iPod touch jailbreak: il mio unix tascabile hacker-friendly

Un po' di tempo fa dicevo che iPhone e Android erano roba da pivelli, e guardavo con interesse il Neo Freerunner, un cellulare touchscreen con hardware e software open source che era per me l'unico dispositivo che un vero hacker avrebbe voluto avere tra le mani.
Ma visto che sono pigro e parsimonioso mi sono comprato un iPod touch 2g, che fino a una settimana fa era per me un aggeggio tecnologico incredibile, ma troppo chiuso.
Finché non è uscito il jailbreak per l'iPod touch 2g, che OVVIAMENTE ho installato non appena possibile. Il jailbreak è un crack che permette di accedere al sistema operativo interno di iPod e iPhone e di far girare software non approvato da Apple.
Fare ssh VERSO l'iPod touch è stata una vera emozione. Trovare installato apt, ovvero il package manager ereditato da Debian/GNU Linux, è stato ancora più bello.
L'ipoddino così diventa lo strumento definitivo, d'altronde se hai uno Unix, un'interfaccia seriale e il wifi, puoi farci veramente tutto quello che vuoi. Come ad esempio il team di xgps, che ha sviluppato un modulino hardware GPS da agganciare all'ipoddino e il software di navigazione.
D'altronde, se non puoi modificare il tuo device per controllare l'accensione del microonde via webservice, che device inutile è?! :-)
venerdì, novembre 07, 2008
Amazon EC2 news
- gli SLA su EC2: finalmente si potranno usare le macchine EC2 per offerte su servizi che richiedono un livello di disponibilità
- la disponibilità di macchine sul servizio EC2 con Windows Server 2003, e volendo anche con Microsoft SQL Server preinstallato
giovedì, ottobre 09, 2008
giovedì, ottobre 02, 2008
Oracle Open World 2008
giovedì, settembre 18, 2008
ORA-03297: file contains used data beyond requested RESIZE value
In questo caso la soluzione è quella di spostare tutti gli oggetti su un altro tablespace, ridimensionare i datafile alla dimensione opportuna e quindi rispostare gli oggetti.
Oppure una soluzione sub-optimale è quella di ricostruire gli oggetti sul medesimo tablespace (senza quindi la necessità di creare un tablespace d'appoggio temporaneo).
Al termine di tutto questo trasloco è bene ricompilare tutti gli oggetti invalidi.
Ad ogni modo, per spostare tra un tablespace e un altro i vari oggetti, io uso le seguenti meta-query.
Spostare gli indici
select 'alter index '||owner||'.'||segment_name||' rebuild tablespace miotablespace;'
from dba_segments where tablespace_name = 'miotablespace' and segment_type='INDEX' order by segment_name;
Spostare le partizioni degli indici partizionati
select 'alter index '||owner||'.'||segment_name||' rebuild partition '||partition_name||' tablespace miotablespace;' from dba_segments where tablespace_name = 'miotablespace' and segment_type='INDEX PARTITION' order by segment_name;
Spostare le tabelle
select 'alter table '||owner||'.'||segment_name||' move tablespace miotablespace;' from dba_segments where tablespace_name = 'miotablespace' and segment_type='TABLE' order by segment_name;
Spostare le partizioni delle tabelle partizionate
select 'alter table '||owner||'.'||segment_name||' move partition '||partition_name||' tablespace miotablespace;'
from dba_segments where tablespace_name = 'miotablespace' and segment_type='TABLE PARTITION' order by segment_name;


