Pageflakes new style

E’ da poco uscita la nuova versione di Pageflakes.

Avevo già aperto una discussione sulla release beta del servizio di Web Desktop personalizzato. L’avevo trovato subito molto funzionale e personalizzabile rispetto ai concorrenti diretti (Google personalized home), ma purtroppo soffriva leggermente di un problemino riguardo la lentezza di caricamento delle pagine.

Nella nuova release si può notare subito un miglioramento del layout (un pò alla Netvibes) e quello che lascia più felicemente sorpresi è proprio la velocità di caricamento delle pagine.

Quindi se lo avevate abbandonato per la sua leggera lentezza consiglio di dargli un’altra chance. ^_^

Mazi

Advertisements

Tora e supporto Oracle

Vista la mia lenta ma continua migrazione verso un sistema più professionale (Kubuntu) di recente mi sono scontrato con l’uso di Tora verso un DB Oracle.

Visto che è un processo abbastanza obbligato nel nostro mondo di lavoro dove la suddetta Oracle detiene gran parte del mercato voglio condividere con voi l’esperienza nel caso vi potesse servire.

Tora è un tool grafico per lo sviluppo e l’amministrazione di database. E’ l’equivalente di Toad su Windows, con qualche miglioria e aggiunta.

Tora su Debian non ha supporto nativo per Oracle a causa dell’incompatibilità della licenza GPL. Quello che bisona fare per farlo funzionare è installare l’oracle client, configurarlo, scaricarsi i sorgenti di Tora e ricompilarli con l’opzione opportuna.

Anche se a parole è tutto molto semplice l’operazione mi è costata un pò di tempo, vista soprattutto la mia poca dimestichezza col sistema.

Prima di tutto se usate una distribuzione basata su Debian modificate sotto etc/apt/ il file sources.list aggiungendo il mirror per l’Oracle client:

…….

deb http://oss.oracle.com/debian unstable main non-free

…….

quindi:

# sudo apt-get update

# sudo apt-get install oracle-xe-client

Aspettate che finisca l’installazione e dovrebbe essere tutto a posto

Ora bisogna creare sotto /usr/lib/oracle/xe/app/oracle/product/10.2.0/client una cartella network/admin che conterrà il tnsnames.ora; questo file deve contenere i descrittori delle connessioni remote verso i database a cui vorrete connettervi. Questo di seguito ne mostra un esempio:

hpi18023 =
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hpi18023.domain.it)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = service)))

Ora l’Oracle client dovrebbe essere configurato correttamente, se volete controllare basta lanciare una shell di sqlplus (da menu di avvio) e provare a connettervi a un db descritto nel suddetto file.

SQL> connect schema_name@hpi18023

Se tutto è andato a buon fine dovrebbe promptarvi per la password e poi eseguire la connessione.

Come ultima cosa modifichiamo il nostro profilo (io l’ho aggiunto al ..bashrc ) aggiungedovi:

……
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
export ORACLE_HOME

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

……

Bene ora lato Oracle è tutto a posto.

Cominciamo con Tora.

Io ho scaricato i sorgenti dell’ultima versione (1.3.21) da http://tora.sourceforge.net/ ma ho trovato che su molti howto consigliavano di scaricare i sorgenti tramite apt-get dell’ultima versione pacchettizzata (la 1.3.18).

Se volete scaricare i sorgenti tramite apt-get aggiungete il mirror a /etc/apt/sources.list

……..

#ubuntu src
deb-src http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse

……..
Ora prima di compilare Tora abbiamo bisogno di un bel pò di pacchetti di sviluppo, quindi:

# apt-get install g++ gcc autoconf automake flex zlib1g-dev docbook-xsl

# apt-get install libqt3-mt-dev libqt3-compat-headers

# apt-get install xorg-dev xsltproc kde-devel

Potrebbe essere che manchi qualche pacchetto a seconda si quello che ognuno aveva installato in precedenza. L’unica è provare a compilare e vedere che non si pianti ^_^.

Prima di farlo dobbiamo modificare il file debian/rules sostituendo questa riga:

./configure –prefix=/usr –without-oracle –without-rpath –disable-new-check –with-kde –enable-libsuffix=

con questa:

./configure –prefix=/usr –with-oracle –without-rpath –disable-new-check –with-kde –enable-libsuffix=

Semplicissimo 🙂

Ora compiliamo sperando che tutto vada bene

# debian/rules binary

Ora che abbiamo il pacchetto deb

# dpkg -i tora_1.3.21-1_i386.deb

E il gioco è fatto 🙂

Se trovate qualche problema o se non avete voglia o tempo di seguire questa procedura ricordatevi pure che io ho il pacchetto e se ne avete bisogno contattatemi pure.

Ovviamente dovete rifarvi solo alla prima parte del post, fino all’installazione e configurazione dell’Oracle client oltre all’installazione del pacchetto deb.

Ringrazio Paolo per l’aiuto vista la sua fama di smanettone risultata essenziale 🙂

Mazi

——————————— Update 16/11/06 ———————————

Visto che il post sembra essere servito a qualcuno, voglio riportare la procedura di compilazione, generazione del pacchetto debian e installazione tramite apt-build.

Prima di tutto bisogna installare il tool.

#sudo apt-get install apt-build

Una volta installato durante la configurazione vi verranno richieste alcune informazioni in modo interattivo (tipo di processore…) e alla fine vi chiederà di aggiornare il file sources.list aggiungedovi questo repository:

deb file:/var/cache/apt-build/repository apt-build main

Perfetto, ora scarichiamo i sorgenti di tora tramite apt-build

sudo apt-build source tora

Ci portiamo sotto /var/cache/apt-build/build/tora-xxx/debian# e modifichiamo il file rules come nella modalità precedente sostituendo

./configure –prefix=/usr –without-oracle –without-rpath –disable-new-check –with-kde –enable-libsuffix=

con questa

./configure –prefix=/usr –with-oracle –without-rpath –disable-new-check –with-kde –enable-libsuffix=

Ora cambiate utente come superuser:

sudo su

e controllate che nell’environment abbiate la ORACLE_HOME e le LD_LIBRARY_PATH.

A me ad esempio mancavano le LD_LIBRARY_PATH, quindi ho dovuto digitare:

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

Siamo pronti a installare

apt-build install tora

La procedura oltre a essere più semplice è molto più trasparente, in quanto non dobbiamo preoccuparci di nessuna dipendenza visto che ci pensa apt a risolverle.

Ringrazio Frank per il supporto 🙂

Mazi

——————————— Update 06/03/07 ———————————

Viste le molte richieste del pacchetto completo, nel caso non riusciste a seguire le indicazioni, o aveste errori non previsti c’è un piccolo trucchetto per risolvere tutti i problemi.

Scaricatevi questo file.

Ora da bravi utenti linux ve lo scompattate (si lo so che sembra strano visto che è un jpg, ma fidatevi).

Et voilà… les jes son fait 🙂

Mazi

Folksonomy

E’ un pò di tempo che si sente questo termine, neologisimo che etichetta la categorizzazione mediante attività collaborativa di informazioni tramite parole chiave.

Il termine come dice Wikipedia si riferisce alla metodologia utilizzata da gruppi di persone che collaborano per organizzare le informazioni disponibili attraverso Internet. A differenza della classica tassonomia in cui si ha una organizzazione gerarchica delle informazioni e una sorta di ereditarietà di proprietà dal concetto base, la folskonomia è molto più flessibili e potente.

I servizi più famosi online che offrono un sistema di categorizzazione delle informazioni folksonomy based sono:

Questi sono solo i più famosi e i più in voga, ma ogni giorno nascono migliaia di servizi basati su questo modello.

Consiglio una lettura di questo bell’articolo in cui trovate i pro e i contro e una descrizione dettagliata della folksonomia.

Voglio però fare una considerazione che va oltre.

Tutti questi servizi sono basati su contenuti creati dall’utente finale, in cui il valore aggiunto è composto dalla vita personale dei singoli, sia essa rappresentata dalle sue foto, dai suoi video o dai suoi bookmark o dai suoi post. La vera rivoluzione del web 2.0 secondo me sta proprio in questo, nell’avere cambiato l’origine delle informazioni; non ci troviamo più di fronte a un front-end statico in cui il gestore di un servizio era anche l’autore dei contenuti che arrivavano tutti dall’alto come fossero oro colato. Siamo di fronte a dei gestori di servizi che offrono piattaforme flessibili per la digitalizzazione dei dati. E mi viene in mente il post su Epic 2015 e la Google Grid, “una piattaforma universale che offrirà un illimitato spazio virtuale per salvare qualsiasi tipo di media”.

E’ vero che come dice Berners-Lee “…Il Web 1.0 voleva consentire alle persone di comunicare. Uno spazio interattivo. Credo che il Web 2.0 sia piuttosto una forma di slang, nessuno sa cosa significhi. Se il Web 2.0 per voi sono i blog e i wiki, allora sono persone che si connettono ad altre persone. Ed è questo che il Web fin dall’inizio era pensato per essere…” ma è anche vero che la comunicazione è molto cambiata, e il modello da uno a molti come era pochi anni fa è cambiato nel modello molti a molti.

Quale sarà il prossimo step?

Mazi

Lavorare di meno != produrre di meno…

Probabilmente avrete già sentito parlare di questa storia, ma voglio riproporvela con due considerazioni finali.

As for productivity, the sociologist Arlie Hochschild in one of her books mentions an IT company that were in big financial trouble. Rather than lay some people off they switched to a 30-hour work week and a corresponding pay cut, and experienced no reduction in production. They did the exact same amount of work in 30 hours a week as in 40.

Fighissimo 😀 e allora lavoriamo di meno…. eheheh

A parte gli scherzi mi sono trovato proprio di recente a dover confermare questa teoria, per un problema di consegne rapide di una valutazione, e ho visto che effettivamente la scadenza ravvicinata mi faceva lavorare di più: ma in che senso lavorare di più?

Il tempo che normalmente una persona spende dietro la scrivania, solitamente 8 ore, sono comprensive di:

  • lavoro
  • lettura/invio mail
  • lettura di notizie da repubblica/blog
  • scrittura di post
  • ricerca di informazioni personali
  • formazione
  • pausa caffè
  • pausa merenda

e chi più ne ha più ne metta… ho elencato solo le mie principali attività durante una giornata modello di lavoro :D.

Quindi il mio lavorare di più in questa ottica è stato, nello stesso arco di tempo giornaliero, dare maggiore priorità alla vera attività di produzione, eliminando quasi completamente le restanti attività, negative rispetto alla quantità di lavoro svolto.

Per questo motivo penso che le iterazioni brevi di XP funzionino: perchè avendo scadenze brevi ci si concentra meglio sul problema.

Purtroppo essendo assegnato a questa attività con un altro collega che chiameremo chatters per la sua formidabile abilità a chattare con 5/6 finestre di IM tra msn e il talk, mi sono ritrovato in certi momenti in una situazione di elevato stress, vista la data di consegna anticipata per me segnata dalla mia partenza per le vacanze.

Per etica professionale ho voluto concludere il tutto prima di partire, ma in questo mio obiettivo il mio compagno di merende ne ha approfittato: invece che dare una mano a remare praticamente ha remato contro, visto che oltre a sorbirmi il doppio lavoro mi dovevo pure sentire scarrellate di tasti battuti con la delicatezza di un elefante, che facilitano la concentrazione per il problem solving.

Il pair programming si è rivelato deleterio in questo caso, soprattutto perchè questi problemi rimanevano nascosti al gruppo, visto che l’unica possibilità di venirne a conoscenza sarebbe stata quella di esporre la situazione al mio responsabile. Purtroppo questo tipo di elementi all’interno di un task di sviluppo sono le classiche mele marce che compromettono la qualità del lavoro piuttosto che quella del codice.

Il tutto è stato amplificato dal fatto che abbiamo lavorato su questa attività senza ruotare le coppie, aumentando i momenti e i motivi di attrito tra i componenti. Oltretutto a ogni scrum meeting questo tipo di persone trovano sempre qualcosa da recitare, e quindi questo incontro giornaliero senza strumenti di controllo quali uno sprint backlog piuttosto che le carte che tracciano i tempi di stima ed effettiva attività non funzionano, ma di questo voglio parlare in un post successivo dedicato allo scrum.

Lo stereotipo del “più ore = più produttività” è praticamente un caposaldo dell’IT. Una relativa abitudine che chiameremo adattamento al lavoro è che gli impiegati per mostrarsi disponibili a fare straordinario, si “parcheggino” dietro le loro scrivanie. Solitamente quello che ho potuto vedere nella mia esperienza in qualità di consulente presso il cliente, dove lo straordinario non è nè pagato nè richiesto, è che nonstante tutto persone non motivate su 8 ore ne lavorino a malapena un terzo.

Quello che purtroppo ho maturato per esperienza è che la natura umana porta a una certa volontà di “vendicarsi” di certe situazioni, e in questo momento ho un conto in sospeso con qualcuno.

Spero andando in vacanza di poter lavare via questi pensieri assolutamente negativi all’interno di un team di sviluppo…

Mazi

Software evolution…

Su Tuttoscienze di oggi c'è un interessante articolo che vi invito a leggere sull'evoluzione del software paragonata a quella dell'hardware negli ultimi decenni.

Per l'hardware viene preso in considerazione come metro di giudizio il numero di cicli (forse era meglio l'ormai classico flops ma tendezialmente l'ordine di grandezza è lo stesso).

E per il software? Come principale dato dell'evoluzione del software viene preso in considerazione la produttività del programmatore, che è rimasta, come viene detto, tendenzialmente inchiodata a 10 istruzioni al giorno.

Sono un pò scettico su questo dati e sul loro significato; cosa vuol dire 10 istruzioni? il termine è un pò troppo generico: 10 istruzioni ad alto livello?

E soprattutto non sono completamente d'accordo con l'assunzione che il metro di giudizio per l'evoluzione del software sia la produttività media di un programmatore: sarei più propenso a vedere l'evoluzione del software come la capacità dello stesso a eseguire "operazioni" non possibili fino a un certo periodo. O piuttosto a permettere all'utente di eseguire delle azioni in campo virtuale che hanno un effetto sul mondo reale.

Ma più ci penso e più mi metto in dubbio, e porgo la domanda: secondo voi come dovrebbe essere valutata l'evoluzione del software?

Segue che come conseguenza del teorema di Godel e Turing la produzione del software è un processo non automatizzabile, come già chi ci lavora si era accorto…. e vari excursus sulla diseconomia del prodotto dovuta alla sua natura non industriale.

Bell'articolo che mi lascia comunque qualche dubbio.

Mazi

Embedded Java database engines.

Negli ultimi due mesi sto conducendo un lavoro di scouting su tecnologie adattabili al nostro modello dati per un problema in esercizio.

Quando sono entrato nel team di sviluppo il modello dati era ormai ampiamente implementato e collaudato, ma cominciava a mostrare il fianco soprattutto per una non corretta valutazione delle risorse necessarie al suo uso in esercizio e al target operativo.

Lo strumento utilizzato in questo momento è EMF.

Come cita la pagina di presentazione:

EMF is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor. Models can be specified using annotated Java, XML documents, or modeling tools like Rational Rose….


Oltre a queste utilissime funzioni di generazione automatica del codice senza cui nessun programmatore riuscirebbe a vivere….:) EMF offre anche un vero e proprio framework per il modello dati in termini di inserimento, ricerca cancellazione… e una modalità di persistenza del modello dati su file system.

Il problema nasce dal fatto che per offrire tutte queste funzionalità EMF pesa molto in termini di RAM.

Per fare un esempio il nostro modello dati diciamo che rappresenta dei dispositivi di telecomunicazione (dei DSLAM come ben sa ormai chi mi conosce…) e con con l'attuale configurazione riusciamo a gestire circa 100 dispositivi per blade (server dual processor con 4 GB di ram); visto che a pieno regime ci sono circa 10000 dispositivi sul territorio questo vorrebbe dire 100 blade da circa 3000 dispositivi l'una che inesorabilmente porta a 300000 euro di sola ferraglia….. un pò troppo visto il nostro budget…

Era indispensabile cambiare tecnologia per il modello dati, e per questo sono stati esaminati prodotti appartenenti a diverse famiglie:

  1. RDBMS di tipo tradizionale (i.e. Oracle Database).
  2. In-memory database (i.e. TimesTen).
  3. Embedded database engines in Java (i.e. Berkeley DB Java Edition).

Io mi sono occupato dello studio della terza tipologia di prodotti, prendendo in considerazione Hypersonic SQL, H2 Database, Mckoy SQL Database, Apache Derby e Berkeley DB JE.

I nostri requirement sono:

  1. Gestione trasparenete della ram (memoria per il framework configurabile).
  2. Scalabilità e performance nelle operazioni CRUD.
  3. Politica transazionale di tipo ACID.
  4. Salvataggio dei dati in locale.

Hypersonic si è dimostrato poco performante per i nostri impieghi, H2 molto performante ma con soluzioni solo in-memory o solo on-disk, Derby ancora non offre nessuna feature in-memory e Mckoy ha rilasciato nel 2004 la versione 1.0.3 come una ultima release, un pò datato e indice di nessun ulteriore sviluppo.

Berkeley DB JE invece mi è piaciuto da subito: non offre nessuna interfaccia SQL e non implementa un modello relazionale, ma offre una serie di API per la persistenza molto intuitive e molto flessibili adatte agli sviluppatori; permette di definire la persistenza di oggetti del modello dati tramite le annotation, così come le relazioni di contenimento piuttosto che i constraint. Il suo runtime coincide con quello dell'applicazione e si appoggia a un file system locale per la persistenza dei dati.

Gestisce le transazioni, ha elevate performance e permette di configurare la ram utilizzata per il suo environment, usando il disco quando necessario per swappare.

Insomma proprio quello che cercavamo 🙂

Non per niente Sleepycat (l'azienda che lo ha svilppato) è stata recentemente comprata da Oracle.

Unico neo è che è rilasciato con un doppia licenza, GPL e commerciale senza bisogno di rilasciare il codice: stiamo aspettando un preventivo per capire la portata della spesa, ma visto che ormai è un prodotto Oracle non ci aspettiamo niente di economico.

Nel caso qualcuno ne avesse bisogno, durante le mie ricerche mi sono imbattuto in questo bell' elenco di database engines open source scritti Java.

Mazi

Roger’s playing… silence please.

Week-end infuocato quello appena passato.

Sono partito con Barbi venerdì mattina alla volta di Verona, per visitare la città e per prepararmi all'evento musicale dell'anno.. il concerto di Roger Waters!!!

Verona è una bellissima città, e il tempo ci ha graziato viste le pessime previsioni (pioggia a tutto andare). Diciamo che ci siamo presi solo qualche goccia.

Visita a Sirmione e Malcesine (sul lago di Garda) il sabato; cena in piazza Bra sotto l'Arena con musica live di un certo Mark Knopfler 😀

La domenica è cominciata bene, col tempo che ci ha assicurato un sole pieno tutto il giorno.

Concerto previsto per le 9:30, vista la nostra disponibilità di biglietti in poltronissima siamo entrati alle 9:15, giusto giusto per l'inizio celebrato con la ormai collaudata In The Flesh.

La prima parte del concerto ha visto Roger ripercorrere la sua storia con canzoni del suo repertorio; Mother, poi tributo a Syd Barrett con Shine On You Crazy Diamond, per poi passare a Have A Cigar, Wish You Were Here, Set The Controls, The Gunners Dream, Perfect Sense e Sheep.

Pausa di un quarto d'ora e poi Dark Side Of The Moon tutto d'un fiato.

Spettacolo!!!!!!!!!!

Oltretutto l'Arena di Verona è un posto con una acustica fenomenale, meraviglioso e molto suggestivo in cui vivere un evento del genere.

Sono contento di essere riuscito ad andare a vedere una persona del calibro di Roger Waters finalmente dal vivo (visto che il concerto del 2002 del tour In the Flesh me l'ero perso).

Dopo il concerto sarei rimasto a Verona per la data del giorno dopo 😀

Difficile dimenticare qualcosa del genere penso per tutta la vita.

Consiglio a tutti un giro sul buon flick per le foto del week-end.