Friday, December 21, 2007

Test post

Sorry for this post: I'm changing a bit the Feeling Black layout and I need to check how the many services I use (FeedBurner, Google AdSense and so on) integrate.

Thursday, December 20, 2007

Whitepaper links now working

If you are one of the folks who tried to download my whitepapers, well I'm really sorry for the broken/wrong links you could have found.

The fact is "Altervista.org" (the provider hosting my main site) didn't provide access to non-html files from sites other than those of the Altervista community.
This one turned out to be discovered only today (thanks to Ivan that pointed out the problem!) and I have finished few minutes ago moving files to a newly created ADrive account and making them publicly available (this time for real!).

So, if you want to download them this time it (will/should) work.

My deepest apologizes for the inconvenient.

P.S. If you want to give it a try, Adrive offers 50 Gigabytes of online storage for free. And you know what? When I say "free" I really mean "FREE"...

FreeRTOS 4.7.0 released

FreeRTOS 4.7.0 has been released. Here's the changelog for the last version (complete changelog):
  • Introduced the counting semaphore macros and demo source files. The Open Watcom PC project has been updated to include the new demo. See the online documentation for more information.
  • Introduced the 'alternative' queue handling API and demo source files.
  • The Open Watcom PC project has been updated to include the new demo source files. See the online documentation for more information.
  • Added AT91SAM7X Eclipse demo project.
  • Added the STM32 primer demo project for the GCC compiler and Ride IDE.
  • Removed the .lock files that were mistakenly included in the V4.6.1 eclipse workspaces.

Wednesday, December 19, 2007

Man at work

Volevasi informare la gentile clientela che il sottoscritto sta lavorando a un whitepaper di piuttosto vasto respiro.
Titolo provvisorio: "Architetture Software: Best practices & Blueprints".

Lo so che come titolo fa un pò schifo, ma consolatevi con quello chè è attualmente lo schema degli argomenti (senza contare che ve l'ho detto che è provvisorio...):
1 "The importance of being Consistent"
1.1 Considerazioni e consigli generali
2. Linee guida per la creazione di nuovi sistemi
2.1 Semplicità
2.2 Omogeneità
2.3 "Separation of Concerns"
3. Architetture stratificate
3.1 Principi e vantaggi
3.2 Sfruttare le librerie sottostanti
3.3 Stratificare il "valore aggiunto"
3.4 Fornire un facile accesso agli strati superiori
4. Consigli di progettazione per librerie software
4.1 Separazione del codice di utilità in librerie per poter essere riutilizzato
4.2 Realizzare API "autonome" e "self-contained" (cioè che per poter essere utilizzate non debbano necessitare di altre librerie esterne)
5. Paradigmi di sviluppo REALMENTE utili
5.1 "Lightweight" Continuous-Integration
5.2 Unit-testing
6. Test
7. Documentazione del codice


Nel caso non fosse chiaro dal precedente elenco mi occuperò di progettazione (pratica) di architetture software, a partire dal basso (ad esempio come progettare una piccola libreria), fino a toccare anche le architetture enterprise (architetture distribuite, SOA, architetture embedded and so on).

Come già detto sono ancora alla fase di raccolta delle idee, ma sin da ora gradirei avere le vostre richieste: "Nicola mettimi un capitolo sull'AOP (Aspected Oriented Programming)", "Nicola che ne dici di parlare di Concurrent Programming", "Nicola e se illustrassi un caso d'uso reale del principio Separation of Concerns?!?", etc. etc.

Nel caso non disponeste di richieste da sottoporre potreste sempre ripiegare su altri tipi di suggerimenti e/o correzioni (bene accette, anche se a seconda di come mi sveglio la mattina).

Istruzioni di installazione per PyGridware (su Ubuntu)

Andrea tempo fa mi ha gentilmente fornito un utile tutorial per l'installazione di un toolkit per il Grid-Computing con Python (su Ubuntu!!!).
Credo sarà di gradimento a molti.

Notare 3 cose:
  • il tutorial è interamente realizzato da Andrea
  • me lo ha fatto avere da un bel po; ergo Andre: mi incenso il capo e scusami per la lunga attesa
  • se doveste avere domande o commenti sarà mia premura mettervi in contatto con Andrea (ve l'ho detto: è lui l'autore del tutorial!)

Tuesday, December 18, 2007

TMIG project: front-page illustration

TMIG project front-page turned out to be quite inspiring.
I think the good design of the red graphic element is the main reason for such a plenty of different versions I came to:

The one above has been the first to be printed... good, but after a while I found myself disappointed by its lack for minimalism. Well, I do find it minimal... but not enough!
So a new version made to light:


Especially for this last one I came to three different solutions (that I don't insert here to avoid an intoxication to you): one without the grey box (click and zoom the image if you don't see it), one with simply my name added and others with different reciprocal positions for the text and the graphic element.

Do you wanna see more? Are you really sure you want to? Post in the comments and I'll upload other solutions I came to.

Monday, December 17, 2007

PDF Whitepaper: "TMIG: Task MIGration library for a multi-CPU, FreeRTOS-based environment"

A new whitepaper made to the light in these cold, rainy days here in Cagliari.

It illustrates design, usage and internals of a C library I'm working on from some months. The "TMIG" library is intended for embedded, multi-CPU environments, based on the FreeRTOS operating system.
I implemented it on a Xilinx Virtex II Pro FPGA, programmed with a 3-CPUs architecture.
CPUs are three Xilinx Microblazes and the memory architecture comprises one private memory for each CPU and a large shared DDR.

I'm considering the possibility of releasing the code in a not so far future (maybe the third quarter of the 2008). If it get released a dual-license style may be chosen (GPLv2/CC/Apache + Commercial).

The TMIG project is part of the Embedded Software Lab, an on-going effort of the Computer Science Department of the University Of Cagliari.


More about the TMIG library and other FreeRTOS-related projects coming soon.
The whitepaper itself is released with the traditional CreativeCommons BY-NC-SA 3.0 license.

Wednesday, December 12, 2007

"Bipartisan", di Luca Ajroldi.
Non credo di essere mai stato più concorde con qualcuno su qualcosa.

Wednesday, November 7, 2007

Nausea nazionale (once was "Orgoglio nazionale")

Massimo Mantellini (Manteblog) cita oggi Michele Serra (de La Repubblica).
Io cito Mantellini che cita Serra:
"Non so come sia farsi assassinare negli altri Paesi, ma farsi assassinare in Italia e' il peggio che puo' capitare. In conseguenza del fatto che la cronaca nera e' un genere di successo, il cadavere diventa una specie di proprieta' pubblica"

Sinceramente? Serra ha perfettamente ragione e Mantellini pure.
Io? Mi limito a cercare di diffondere una lucida analisi (e direi anche condanna) della triste e nauseabonda situazione in cui versano i maggiori quotidiani nazionali. E praticamente tutti i TG (fatto salvo il TG3, ma un po ne risentono anche loro a volte). E si "inizia" a nausare anche sul web.

Volevo concludere con una battuta, ma non me ne vengono: ho sempre pensato che una situazione non diventi veramente grave finchè si riesce a fare una battuta su di essa.

Io oggi sullo stato delle coscienze italiane non riesco a far battute.

Sunday, November 4, 2007

PDF whitepaper: "Tecniche di 'boxing' e 'schermatura' per basi di dati SQL Server 2005"

Il PDF di questo whitepaper è disponibile a questo indirizzo.

Man at work

Qualcuno avrà forse notato che sto sperimentando il formato "whitepaper" applicato al blog.
Si tratta di un esperimento con il quale intendo inaugurare una serie di whitepapers dedicati a casi di studio su progetti reali dei quali mi occupo.

Di questi whitepapers arriveranno al più presto anche le versioni PDF. Giusto il tempo di elaborare un'impaginazione carina.

Tecniche di "boxing" e "schermatura" per basi di dati SQL Server 2005

Nicola Orritos

Abstract

In contesti aziendali complessi ci si trova spesso di fronte a situazioni nelle quali i contenuti di una sola base di dati diventano una risorsa centrale e vitale per buona parte dell'infrastruttura IT dell'intero sistema (sia esso una grossa compagnia o un'organizzazione governativa).
Tale base di dati diventa un hub al quale devono poter accedere un gran numero di sistemi informativi implementati nelle più disparate tecnologie.

Inoltre queste stesse situazioni richiedono sempre più spesso che l'accesso a quegli stessi dati possa essere continuo e il più possibile performante (essendo presenti nell'infrastruttura alcuni sotto-sistemi che eseguono elaborazioni in real-time su di essi).
Una simile mole di richieste deve poter essere accuratamente gestita e controllata, onde evitare dispersioni dei dati, inconsistenze e utilizzi impropri degli stessi. Si ha cioè bisogno di uno strato di intermediazione tra le informazioni contenute nei database e chiunque ne faccia richiesta per qualsiasi motivo.

Questo documento intende esporre alcune delle possibili soluzioni che è possibile adottare per raggiungere tale scopo.
L'esposizione partirà da un'analisi dei vincoli imposti dal dover soddisfare tanti sistemi diversi e prenderà in considerazione un caso particolare nel quale alcune tecnologie pre-esistenti hanno posto dei seri vincoli al'operazione di ristrutturazione intrapresa.

1. La situazione di partenza

Il sistema sul quale si interverrà presenta una classica architettura "client-server", con un'unica base di dati che serve più agenti esterni, ciascuno dei quali ha la necessità di accedere a uno o più insiemi di dati, tutti ugualmente contenuti all'interno di un'unica istanza di un DBMS SqlServer 2005. Gli agenti esterni sono alcuni sistemi informativi appartenenti all'infrastruttura IT di un'unica azienda. Alcuni di loro sono realizzati con tecnologie "compatibili" con la base di dati, altri presentano invece dei problemi di compatibilità che hanno ristretto il numero delle soluzioni applicabili (i vincoli rappresentati da queste incompatibilità saranno analizzati nel paragrafo n.3 , "Requisiti e vincoli").

I dati contenuti nella base di dati (da ora indicata con l'acronimo "DB") devono essere costantemente disponibili ai molti agenti esterni e sarebbe desiderabile se gli accessi potessero avvenire con una certa velocità.
Queste necessità portano però con loro alcune conseguenze potenzialmente molto dannose: spesso e volentieri infatti si tende a varcare il confine che separa un accesso ubiquo ai dati da un loro utilizzo indiscriminato.
Tutto questo quando invece occorrerebbe mantenere i meccanismi e le politiche di accesso i più "semplici" ed efficienti possibili, schermando allo stesso tempo il DB da comportamenti dannosi quali possono essere la proliferazione indiscriminata di utenti, tabelle, viste e permessi.

Inoltre il problema sta non solo nei dati, ma investe anche gli schemi della base di dati e altri aspetti della struttura stessa dei dati: nel caso particolare qui analizzato, prima che ci si rendesse conto delle potenziali ricadute negative della cosa, molti cosiddetti "power-users" ritenuti meritevoli di un accesso poco limitato al sistema hanno dato vita a un variegato insieme di nuove tabelle, viste, Stored Procedure e utenti che costringevano la macchina ospitante il DB a un carico di lavoro a dir poco allarmante.

Un'ulteriore aggravante è costituita dal fatto che queste problematiche hanno un potenziale dannoso che tende a non poter essere controllato con sistemi tradizionali quali l'utilizzo degli "schema" e altre tipologie "classiche" di restrizione dei permessi.
Questo è in parte anche causato dal fatto che SQL Server 2005 utilizza un modello di sicurezza e di controllo degli accessi a dir poco complicato; ben più complicato di quanto potrebbe e dovrebbe essere per poter essere gestito agevolmente da un solo DBA.

2. Requisiti e vincoli

I vincoli ai quali dovrà sottostare la soluzione in grado di ovviare a tutti questi problemi sono molteplici e quasi tutti derivano dall'elevata mole di sistemi che accedono ai dati e dalle diverse modalità con cui ciascuno di essi lo fa.
Innanzitutto dovrà essere garantita un'implementazione semplice: saranno pertanto da evitare approcci che richiedono un eccessivo numero di passaggi da svolgere da parte dei sistemi esterni al DB centrale, così come architetture particolarmente cervellotiche o composte da troppi sistemi che debbano coordinarsi tra loro.

Una cosa importantissima è garantire l'univocità e la consistenza dei dati: nessuna replicazione o distribuzione degli stessi su più DB, a meno che la cosa non possa essere resa trasparente sia a livello di API esposte sia a livello "transazionale" (nel senso relazionale del "termine").

Un altro requisito fondamentale è poi cercare di rendere il passaggio dall'attuale situazione alla nuova il più "indolore" possibile per i sistemi coinvolti: questo significa mantenere il più possibile inalterate le modalità con cui ogni sistema accede al DB; a titolo esemplificativo valga la considerazione che se un sistema accede attualmente tramite una query T-SQLruntime SQL Server, sarebbe auspicabile che non debba in futuro adattarsi ad accedere tramite Web-Service, librerie dati o altre tecnologie diverse da quella già utilizzata.
Ciò è specialmente vero per quegli agenti esterni che basano il loro accesso su una particolare strategia tecnologica in quanto l'unica applicabile per interfacciarsi a SQL Server.

Nel caso reale seguito tutto ciò va a essere ulteriormente complicato dal fatto che dovrà essere garantito ad ogni costo l'uptime del DB, sia dalla soluzione stessa una volta che ne sia stato completato il deployment, sia durante tutta la fase di transizione ad essa.

Infine, il tutto dovrà essere realizzato parallelamente a un altro importantissimo progetto. Si tratta di un'architettura fisica che assicuri al DB centrale alcuni requisiti fondamentali che attualmente non sono ancora stati implementati, in particolare un failovering piuttosto robusto affidato a un cluster di più server (operazione attualmente già oggetto di un ulteriore studio che potrebbe anch'esso essere pubblicato).


3. Premesse a un'efficace soluzione del problema

Sia ben chiaro fin d'ora che non è possibile adempiere a quanto finora esposto senza una intensa collaborazione da parte di tutti i sistemi che accedono e sfruttano la base di dati centrale.
È cioè bene affermare sin da subito che un sistema che voglia accedere ai dati una volta che essi saranno "migrati" alla nuova soluzione non potrà limitarsi a semplici modifiche di alcune delle sue query.
La collaborazione non è infatti richiesta solo a ciascuno di questi sistemi in se, ma anche e soprattutto a coloro i quali di essi fanno utilizzo: saranno queste persone a dover fornire dettagliate descrizioni dei dati ai quali solitamente accedono (o vorrebbero accedere), dei legami tra i dati che intendono estrapolare dai DB, dei formati che si aspettano di ricevere dalle loro query e di tutti quei particolari che saranno poi necessari a fornire a tutti l'accesso più veloce e completo possibile.

Tali sistemi e le persone che ne gestiscono l'accesso al DB centrale saranno cioè parte integrante della soluzione; anzi, a voler essere più precisi, essi e la loro collaborazione saranno la fetta più consistente di essa.

Parte della documentazione che si intende ricavare da questa collaborazione potrà essere estrapolata dalle query e dai dati che già sono stati implementati sulla base di dati e per alcuni di essi sarà probabilmente sufficiente limitarsi a un simile approccio.
Per gli altri casi sarà invece utile (quando non indispensabile) se si potesse procedere alla compilazione da parte dei responsabili dei sistemi coinvolti nell'operazione di una sorta di "questionari" per l'identificazione dei requisiti che si credono necessari per un proficuo utilizzo del DB da parte del software di loro competenza.
Ancor meglio sarebbe organizzare una serie di briefing che possano adempiere a tale compito.


4. Descrizione di alcune delle soluzioni possibili

4.1 Schema generale della soluzione

L'idea generale che si intende perseguire è quella di effettuare un "boxing" dei dati in una struttura software o fisica (o entrambi), che consentano una "schermatura" dei dati stessi dalle influenze esterne.
Si tratta cioè di realizzare una membrana che faccia da mediatore nello scambi di dati occorrente tra il DB centrale e gli agenti esterni che adesso accedono.
Una simile membrana dovrà essere abbastanza intelligente e flessibile da consentire un accesso personalizzato per ogni agente esterno, cercando quanto più possibile di slegarsi dalla tecnologia con cui quest'ultimo si interfaccerà ai dati.
Volendo utilizzare un termine univoco e consistente per riferirsi a questa membrana si farà d'ora in poi uso del sostantivo "Sandbox".

Nonostante le soluzioni presentate differiscano a volte anche pesantemente l'una dall'altra, è possibile individuare tra di esse uno schema comune.
Questo elemento comune è appunto la Sandbox poc'anzi introdotta: un layer di intermediazione tra i dati e l'ecosistema esterno che sarà più o meno visibile alle applicazioni, a seconda dei requisiti di manipolazione dei dati di ciascuna di esse.
Questa "visibilità" discriminatoria ha principalmente la sua ragion d'essere nei requisiti precedentemente elencati: trasparenza e tendenza alla conservazione delle attuali modalità di interfacciamento dei sistemi esterni.

Comunque, quale che sia il modo in cui ciascun sistema esterno "vede" la base di dati, alcuni dei compiti della Sandbox sono stati fissati dal committente del progetto e hanno ovviamente imposto di considerare solo quelle soluzioni che permettevano un'aderenza totale ad essi.
Di seguito l'elenco di questi compiti:
  • supporto all'autenticazione per poter utilizzare i dati
  • logging estensivo delle attività svolte (soprattutto da "chi" esse sono state svolte, quando e in quanto tempo)
  • ottimizzazione spinta delle query eseguite (in modo da non gravare eccessivamente la/e macchina/e ospitante/i il DB)
  • report periodico (a mezzo e-mail) di eventuali malfunzionamenti e di un riassunto delle attività svolte

Un'ultima importantissima funzione integrata nella Sandbox sarà quella di fornire un'interfaccia di programmazione omogenea, ad alto livello e consistente, utilizzabile per creare librerie di accesso personalizzate al DB, secondo i protocolli imposti dalla Sandbox stessa.
Tale interfaccia sarà costituita da API la cui invocazione potrà avvenire sia attraverso script T-SQL sia via codice .NET (C# o VB.NET).

La realizzazione di quest'ultima funzionalità implica a sua volta la creazione di apposite "naming conventions" e di alcune librerie "helper" che aiutino gli utenti dei sistemi esterni a crearsi le proprie routines di accesso ai dati (o ad adattare quelle preesistenti). Tali librerie di supporto saranno parte integrante della Sandbox.

Le convenzioni e gli helpers manterranno essi stessi le modalità di accesso ai dati entro determinati "confini" decisi dagli amministratori del DB centrale.
Confini che dovranno poter essere "spostati" a run-time ricorrendo a un adeguato sistema di configurazione che dovrà perciò essere veloce oltre che omogeneo e di facile comprensione.

In questo strato di API confluirebbe infine tutto lo studio realizzato in collaborazione con i gestori dei vari sistemi esterni, portando cioè a frutto la collaborazione descritta nel paragrafo "3. Premesse a un'efficace soluzione del problema".

(Si noti come alcuni requisiti, ci si riferisce ai punti fissi imposti dal committente, non siano presenti nel paragrafo "2. Requisiti e vincoli" in quanto essi partecipano attivamente e profondamente alla definizione di un particolare schema nella soluzione in via di elaborazione)


4.2 Soluzione n.1: Strato di Web Services

Si tratta della prima e più semplice soluzione che è stata esaminata: semplice, elegante, riutilizzabile e ben supportata sia dalla tecnologia .NET, sia dalle librerie che già sono state scritte (in progetti precedenti) per il DB.

Essa presenta però un serio handicap: costringerebbe chi attualmente accede ai dati tramite query sottoposte direttamente al DB a riscrivere completamente la propria strategia di interfacciamento. Inoltre non tutti i linguaggi e le tecnologie hanno un supporto completo ed efficace agli WebServices.

Si notino comunque due cose che questa soluzione è in parte già stata implementata in almeno un caso particolare: infatti attualmente viene già garantito l'interfacciamento tramite Web Services tra il DB centrale e almeno altri due sistemi dell'ecosistema IT aziendale.
Una seconda nota va poi spesa per affermare come realizzare una soluzione mista (che comprenda quindi anche la tecnologia degli Web Services) sarebbe anch'essa una possibilità sulla quale val la pena contare (a questo proposito si veda il paragrafo "4.6 Pro e contro di un approccio misto").


4.3 Soluzione n.2: Stored Procedures in codice .NET

Piccola premessa: è stata dimostrato anche nel corso di passate collaborazioni con lo stesso committente che scrivere Stored Procedures per il DBMS SQL Server 2005 utilizzando la piattaforma .NET (e il linguaggio C# in particolare) è sufficientemente performante e "sicuro" (pur se non semplicissimo).

Partendo da questo presupposto è naturale ipotizzare uno scenario nel quale l'interfacciamento al DB centrale avvenga continuando ad accedere direttamente al DB, ma non andando più a operare sulle tabelle, bensì su Stored Procedures che ne astraggano dati e semantica, preferibilmente a un livello più alto.
All'atto pratico questo significa che quegli agenti esterni che già utilizzano SQL per accedere ai dati possono continuare a farlo in relativa tranquillità.

Un simile intervento dovrebbe contemplare adeguate convenzioni e verrebbe completato realizzando un modello di programmazione T-SQL e .NET per chi volesse realizzare nuove Stored Procedures: questo adempierebbe perfettamente a quanto descritto nella seconda metà del paragrafo "4.1 Schema generale della soluzione".

La realizzazione di questo modello implica la creazione di un tutorial indipendente dalla tecnologia (perché basato sul linguaggio SQL) e di appositi files di progetto, mirati invece per un utilizzo tramite Visual Studio .NET.
Il tutto guiderebbe all'estensione delle Stored Procedures di base, che saranno comunque già fornite dall'implementazione della soluzione stessa.

Come già detto, quest'approccio garantirebbe il mantenimento della modalità di accesso "diretta" al DB che già molti sistemi adottano: chi già accede in questo modo al DB si potrebbe infatti semplicemente limitare ad aggiornare le proprie query affinché puntino alle opportune Stored Procedures, piuttosto che alle tabelle (alle quali verrebbe tra l'altro precluso l'accesso, di fatto "schermando" l'universo tabellare dagli accessi esterni attraverso lo strato di Stored Procedures).

Inoltre scrivere le Stored Procedures in codice .NET significa che esse potranno svolgere compiti molto più evoluti di quelli permessi dal solo T-SQL: controllo degli accessi e logging fra tutti (adempiendo così ai requisiti elencati nei paragrafi precedenti).

Quasi superfluo aggiungere che combinare questa soluzione con quella che fa uso di Web Services è, oltre che possibile, anche una buona politica: i sistemi che non potessero realizzare librerie di accesso personalizzate in .NET o altri che avrebbero difficoltà ad utilizzare T-SQL potrebbero dialogare con uno o più Web Service appositi.


4.4 Soluzione n.3: Viste modificabili + Stored Procedures

In realtà quella descritta in questo paragrafo è nient'altro che una possibile estensione della precedente (Soluzione n.2): l'accesso non avverrebbe più tramite Stored Procedures, ma tramite "tabelle fittizie" che schermerebbero quelle reali dalla manipolazione diretta da parte dei sistemi esterni.
Le tabelle fittizie possono essere agevolmente realizzate combinando viste, triggers e Stored Procedures: si verrebbero così a creare delle viste modificabili che, reagirebbero a un tentativo di modifica scatenando un trigger che a sua volta invocherebbe apposite Stored Procedures. Si ricadrebbe insomma nella soluzione precedente, ma presentando agli agenti esterni uno schema dei dati ancora più vicino a quello attualmente da loro utilizzato.

Schema che sarebbe inoltre più "ricco" e completo, essendo le viste in questo senso più potenti e più semplici da capire delle Stored Procedures. Questo è un vantaggio che occorre però bilanciare con una maggiore complessità rispetto a quella del modello implementato dalla Soluzione n.2.
Ed è bene far notare come una maggiore complessità porti con se un maggior numero di errori e maggiori costi di manutenzione.


4.5 Soluzione n.4: Macchine "fantasma" + mirroring

Una strada che finora non è stata ancora considerata è quella di una Sandbox "fisica" (piuttosto che software). Per "Sandbox fisica" si intende dividere fisicamente i dati "puri" dalle informazioni che i sistemi esterni vorrebbero ricavare da essi.
Un'esigenza che nasce dal fatto che, nel contesto aziendale che ha richiesto la realizzazione di questo studio, era purtroppo diventata prassi comune realizzare tabelle per raccogliere e aggregare i dati originali in nuove forme; tabelle il cui proliferare indiscriminato genera inconsistenze, ridondanza, pesantezza nell'elaborazione e numerosi problemi di sicurezza.

Questa soluzione vorrebbe "confinare" queste grosse incongruenze a una macchina che non conserva i dati reali ma solo un loro "mirror" preso dal vero DB principale, il quale resterà invece nascosto (un "fantasma") a qualsiasi modifica.
Apposite Stored Procedures o una semplice procedura di mirroring provvederanno alla sincronizzazione delle sole tabelle presenti nel DB "fantasma" con solo i dati rilevanti della macchina esposta all'esterno.

Certo quest'approccio rappresenta senza dubbio un ulteriore livello di sicurezza, ma in se non risolve le problematiche che questo documento ha evidenziato (prima fra tutte l'eccessiva "libertà" con la quale alcuni agenti esterni possono modificare dati e schemi) e pertanto andrebbe adeguatamente integrato con una o più delle altre soluzioni elencate.


4.6 Pro e contro di un approccio misto

Unire alcune delle soluzioni su-esposte è un approccio sicuramente vincente sotto molti aspetti: risolve tutti i problemi e soddisfa tutti i requisiti, garantendo un'elevata flessibilità.
Allo stesso tempo, però, esso porta con se anche alcuni problemi nuovi e non trascurabili, dei quali la complessità è potenzialmente il più dannoso. Sarebbe pertanto opportuno tenere in considerazione l'aumento della complessità quando eventualmente si valuterà come unire le varie soluzioni.

A titolo di esempio: una soluzione come la n.3 ("Viste modificabili + Stored Procedures") è molto potente ma contempla un'architettura costituita di Viste, Triggers e Stored Procedures; ben si capisce che, rispetto alla soluzione n.2 ("Stored Procedures in codice .NET"), l'aumento della complessità è piuttosto rilevante e pericoloso.
Un pericolo che si può potenzialmente manifestare a diversi livelli: concettuale, prestazionale e in sede di manutenzione del sistema.


Conclusioni

Le soluzioni descritte in questo documento sono un primo passo che detterà il modello da seguire nella costruzione del vero e proprio "contenitore intelligente" per i dati del sistema commissionato. Il modello che si andrà a scegliere dovrà poi essere ulteriormente mediato e adattato a un gran numero di diverse esigenze che molti dei software che accedono al DB hanno: alla fine si avrà quasi certamente uno schema misto che include anche alcuni casi particolari (comunque in numero molto esiguo) e che fornirà si un'architettura di interfacciamento solida e uniforme ma anche (e soprattutto) flessibile e facilmente adattabile.

Tuesday, October 30, 2007

FreeRTOS 4.6.0 released

FreeRTOS 4.6.0 has been released (October 28 2007).

This is the changelog (between v4.5.0 and v4.6.0):
+ Changed the method used to force a context switch within an ISR for the
ARM7/9 GCC ports only. The portENTER_SWITCHING_ISR() and
portEXIT_SWITCHING_ISR() macros are no longer supported. This is to
ensure correct behaviour no matter which GCC version is used, with or
without the -fomit-frame-pointer option, and at all optimisation levels.
+ Corrected the prototype for xQueueGenericSend() within queue.h.
For the ones interested on developing for the FreeRTOS environment, I'm working on a whitepaper that shouldn't be available until January 2008.

Monday, October 29, 2007

L'odore della notte

L'odore di legno dei mobili della mia camera e quello di umidità, tipico di Cagliari a quest'ora, sono potenti stimolanti per nuove espressioni che conio senza pudore alcuno.

L'ultima è "paralisi consuetudinale": "soffre di paralisi consuetudinale chi ha bisogno di una soluzione urgente a un grosso problema nell'ambito di un sistema informativo aziendale ma via via che il tempo passa la consuetudine di ignorare il problema paralizza la ricerca della soluzione stessa: la consuetudine di convivere con il problema ci porta infine a ignorarlo (quasi si trattasse di nostra moglie che ha 'rosato' tutte le nostre cravatte lavandole insieme al suo pullover rosso rubino)".

Chiaro, no?

Sunday, October 28, 2007

Vodafone 1 - Flash 0

190.it finalmente si rinnova: minimal, semplice, comprensibile e finalmente con molto meno Flash...
Personalmente avrei usato dei bordi arrotondati qua e la, ma mi piace molto lo stesso (specie se confrontato con la precedente, orribile versione).
Mi sembra che il tutto non sia ancora nella sua versione definitiva (alcune pagine intermedie sono ancora a metà tra la vecchia grafica e la nuova), ma siamo decisamente di fronte a un miglioramento eccezionale.
Qui una presentazione delle novità: http://www.experience.vodafone.it/new (argh! questa per forza in flash)

Monday, October 15, 2007

Piccole cose (Blog Action Day)

Non mi dilungherò sul perchè: chi vuol capire, chi già si comporta così, chi sa che la responsabilità delle proprie azioni è solo la sua, chi sa che le conseguenze delle proprie azioni spesso (e purtroppo) ricadono su altri, ebbene tutti voi non avete bisogno di un perchè: li avete già trovati da tempo.

1. La luce elettrica viene molto spesso prodotta bruciando combustibile fossile: tenere una lampadina accesa nel pieno del giorno, quando non ce n'è assolutamente bisogno, è di sicuro una delle cose più stupide che io abbia mai visto fare (e in quest'elenco di cose stupide ne vedrete molte)
2. Aprire il frigo + prendere il latte + andare al lavabo + versare il latte nella scodella + accendere il fornello + regolare il fornello + rimettere il latte in frigo + chiudere il frigo = un minuto nel quale si è sprecata l'ennesima buona occasione
3. Non buttare le cartacce per terra se non ci sono cestini nei paraggi, a differenza di quello che pensa la maggior parte delle persone, non provoca nessuna strana malattia: pertanto si tratta di un'attività che può essere intrapresa senza timore
4. Spegnere il PC quando non lo si usa è un'altra di quelle cose che non fanno venire malattie strane
5. Spegnere il motore della vostra macchina se in sosta per un lungo periodo (con voi dentro)... indovinate? Anche questo non fa male alla salute (alcuni sostengono che è addirittura vero il contrario)
6. Cestinare un A4 sul quale c'è tutta una facciata libera per poterci scarabocchiare sopra qualche appunto è di sicuro un'altra cosa ad alto contenuto di stupidità
7. Indovinate com'è definibile l'atto del lasciar scorrere a oltranza l'acqua del rubinetto mentre ci si lava i denti? Esatto, bravi: "stupido"
8. Probabilmente non lo sapete, ma lo stesso rubinetto può essere chiuso quando vi allontanate un minuto per prendere la ricarica del sapone
9. Probabilmente sapete ancor meno che ha dei risvolti positivi immediati e persino a lungo termine andare a piedi dal tabaccaio che sta a 500 metri da casa, piuttosto che prendere il vostro SUV 400 cavalli a benzina (notare come anche una vecchia 127 possa essere inclusa nella presente regola)
10. Incredibilmente, nessuna delle precedenti "regole" costa molto in termini di fatica fisica e mentale... incredibilmente


P.S. Mi spiace per i ragazzi del Blog Action Day, ma non ho potuto pubblicare ieri questo post. Le mie scuse più sincere.

Thursday, October 11, 2007

Microsoft Security Advisory (943521) - URL Handling Vulnerability

There is an URL handling vulnerability potentially allowing remote code execution in Windows XP and Windows Server 2003 systems equipped with Internet Explorer 7. Systems using other Internet Explorer versions seem not to be affected by this bug.

At this moment there is no evidence that this vulnerability has lead to any attack, but Microsoft is investigating the public reports that announced the vulnerability.

Obviously, if confirmed, this vulnerability will be patched as soon as possible by Microsoft.
In the meantime... use Firefox or Opera.

Friday, October 5, 2007

Ubuntu security bulletins (USN-525-1 - libsndfile vulnerabilities)

USN-525-1: libsndfile vulnerabilities
Threat-level (*): Moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's recommended that you perform (at least) a standard system upgrade to avoid possible:
  • Remote attacks based on wrong memory buffers handling of the libsndfile library, with the following consequences:
    • arbitrary code execution with the user privileges if a specially crafted FLAC file is executed on the attacked system

________
(*) = IMHO = It's just my opinion...

Ubuntu security bulletins (USN-524-1 - OpenOffice vulnerabilities)

USN-524-1: OpenOffice vulnerabilities
Threat-level (*): Moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's recommended that you perform (at least) a standard system upgrade to avoid possible:
  • Remote attacks based on an integer overflow of the OpenOffice suite, with the following consequences:
    • arbitrary code execution with the user privileges

NOTE: OpenOffice needs to be restarted for the changes to be applied.
________
(*) = IMHO = It's just my opinion...

Thursday, October 4, 2007

Ubuntu security bulletins (USN-523-1 - ImageMagick vulnerabilities)

USN-523-1: ImageMagick vulnerabilities
Threat-level (*): Less-than-moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's recommended that you perform (at least) a standard system upgrade to avoid possible:
  • Remote attacks based on flaws of the ImageMagick libraries, with the following consequences:
    • arbitrary code execution with user privileges

________
(*) = IMHO = It's just my opinion...

Wednesday, October 3, 2007

mastella ti odio anch'io

Vorrebbero oscurare il fake-blog su mastella...
Siamo alla frutta gente...

P.S. Mi ero ripromesso di non fare troppi accenni alla politica in questo blog, ma apprezzo le persone che sanno fare dell'ironia e della satira e quelli del fake-blog su mastella (di nuovo minuscolo ragazzi, avete notato?) rientrano appieno in questa categoria.

P.P.S. Come aiutare questi ragazzi? Semplice: ci si ribella parlandone e diffondendo la notizia (almeno finchè non ci censureranno anche Internet oltre ai TG e ai giornali...). Se avete un blog magari potreste postare la cosa...

Thursday, September 27, 2007

Una soluzione ai problemi dell'open-source

"Quindi, tutti voi, proponete nuove idee, segnalate bug, dite cosa c’è che non va senza peli sulla lingua, insomma, aiutiamoci ad avere il miglior sistema operativo di sempre. Questo è lo spirito Open Source, aiutare, ognuno con i propri mezzi, anche se non si è programmatori." (oneOpenSource blog)

Tempo fa avevo espresso dei dubbi sul "movimento" Open Source nel mondo Linux, secondo me sempre più influenzato (negativamente) dalle varie "caste" dei progetti che lo compongono.
Bene, con le parole citate in cima a questo post mi sono definitivamente convinto che il movimento Open Source (e quindi anche quello Linux) sia diviso in infinite sfumature che partono e si mescolano a partire da due estremi principali:
  • Un movimento che proviene "dal basso", fatto prima di tutto dagli utenti che utilizzano il software e che contribuiscono enormemente alla "causa" dell'Open Source segnalando bugs e suggerimenti
  • Quello che proviene "dall'alto", fatto delle elite di sviluppatori che si formano intorno ai progetti Open più importanti (soprattutto il kernel Linux, ma non solo)
Quello che mi pare di capire è che la corrente "dall'alto" dia sempre meno ascolto a quella "dal basso", risultando nella progressiva nascita di un gigante dai piedi di argilla.
Io utilizzo molto come esempio la cerchia di sviluppatori del kernel, ma le mie considerazioni si applicano indifferentemente a moltissimi altri progetti (vedasi a titolo esemplificativo Gimp e alcune scelte a dir poco bislacche fatte dagli sviluppatori Ubuntu).

Concluderei dicendo che secondo me l'unico modo per far si che la testa del gigante ricominci ad ascoltare anche le altre parti del proprio corpo è farsi sentire, a iniziare dalle segnalazioni e dalle "proteste" che possiamo fare.
Come giustamente ha fatto osservare Dario Freddi con le parole che ho citato in alto.


P.S. Vi farei notare che il discorso sulla "partecipazione attiva" si applica paro-paro all'attuale situazione della politica italiana (leggasi: "prima di condannare i politici, pensiamo a quanto siamo disonesti ogni giorno nel nostro piccolo noi tutti cittadini italiani").

Limiti dell'immaginazione umana

"16 milioni di colori permettono una buona lettura dei numeri a rubrica e delle funzioni messe a disposizione dal dispositivo" (oneMobile blog).
Io lo classificherei con tag "Non esistono limiti all'immaginazione umana"...

Tuesday, September 25, 2007

Ubuntu security bulletins (USN-518-1 - Kernel vulnerabilities)

USN-518-1: Linux kernel vulnerabilities
Threat-level (*): moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's strongly recommended that you perform (at least) a standard system upgrade to avoid possible:
  • Local attacks based on ptrace routines, with the following consequences:
    • denial of service
  • Local attacks on PowerPC computers, with the following consequences:
    • denial of service
  • Local attacks performed exploiting a CIFS filesystems vulnerability, with the following consequences:
    • privileges escalation (gain of additional privileges on the local system)
  • Local attacks that exploits some x86_64 kernels vulnerabilities, with the following consequences:
    • privileges escalation (gain of root privileges on the local system)
NOTE: After the upgrade for the changes to affect your system you must restart your computer.

________
(*) = IMHO = It's just my opinion...

Friday, September 21, 2007

PDF Vulnerability

ENGLISH VERSION:
Please pay attention while opening Adobe PDF files: a very dangerous vulnerability has been found, affecting Adobe readers until Adobe Reader 8.1 (included).
Also Fox-It reader seems to be affected, altough in a less severe way.
Both embedded and standalone versions of a document are affected by this vulnerability.

The only solution is to avoid opening PDF files from non-trusted sources.
(Evince or other Linux readers aren't cited in the vulnerabilty report)


ITA VERSION:
Attenzione: una grave vulnerabilità è stata riscontrata nei files Adobe PDF. La vulnerabilità in questione riguarda gran parte dei reader in commercio, fino all'Adobe Reader 8.1.
Nella versione inglese di questo post il link all'annuncio dello scopritore della vulnerabilità.
Nei commenti al suo post si può notare come anche Fox-It Reader sia affetto da tale vulnerabilità (anche se meno gravemente).
Notare come sia le versioni leggibili dal proprio browser, sia quelle standalone dei documenti PDF potrebbero essere ugualmente affette da codice maligno.

Unico consiglio: BUON-SENSO; se non si conosce la provenienza di un documento PDF, o in generale se non si è sicuri del grado di sicurezza garantito dalla fonte dalla quale esso proviene, allora astenersi dall'aprirlo.
(Nessun reader linux sembra essere citato nell'articolo; penso Evince sia abbastanza sicuro)

Thursday, September 20, 2007

Open source is makin' me loose my temper

UPDATE:
Try InkScape: is way much better than Gimp when it comes to editing box, lines, gradients and, in general, simple linear patterns.
(But it's buggy, too... grrrrr!)

ORIGINAL:
Pleas someone tell them to simply make Gimp work: I've spent the last 40 minutes trying to draw 3 (T-H-R-E-E !!!) bands on the upper right corner of an A4.

Selections that, when moved, move the entire layer instead of just what they are meant to select (why call them "Selections" if they don't "select"?!?), the ridiculous elaboration speed of a "Fill" operation (I was simply filling the entire A4 surface with a plain colour and it took me about 5 seconds!), the total absence of a "transform selection" command (instead, you have to play with mysterious options of the transformation tools option-box)... and other frustrating ones.
And someone dares to compare Gimp to Photoshop!!!

Please "open-source guys", less buzz-words, less auto-contratulating on minimal things, less religion wars, less "Winzozz" and "M$"; please start taking your work seriously, and stop harming users with your incompetence!

Wednesday, September 19, 2007

Ubuntu security bulletins (USN-514-1 - X.org server)

USN-514-1: X.org-related privilege escalation
Threat-level (*): Moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's recommended that you perform (at least) a standard upgrade of your system to avoid possible:
  • Exploits based on a bug found in the server core (and in its composite extension), with the following possible consequences:
    • arbitrary code execution with root user privileges
________
(*) = IMHO = It's just my opinion...

Tuesday, September 18, 2007

Ubuntu security bulletins (USN-513-1 - QT libraries)

USN-513-1: QT libraries possible buffer overflows
Threat-level (*): Less-than-moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
Notice that QT3 libraries are used by all KD3-based applications.
It's recommended that you perform (at least) a standard upgrade of your system to avoid possible:
  • Attacks based on specially crafted UTF-8 strings that can lead to small buffer overflows, with the following possible consequences:
    • arbitrary code execution
    • denial of service
After the upgrade for the changes to affect your system you need to restart your user-session (i.e. log-out and then re-log-in to your system).

________
(*) = IMHO = It's just my opinion...

The new Photoshop logo

OMG: Adobe killed the Photoshop Logo!
(AKA: "Also the best ones sometimes do something wrong...")

Il nuovo logo Photoshop

Diciamocelo: il nuovo logo di Photoshop fa un po cagare...

Qui nel contesto di una magnifica pagina che pubblicizza l'intera famiglia di prodotti Photoshop: notare lo stridio generato dal validissimo layout della pagina, il design dell'animazione flash (anche se 4-5 dei personaggi sembrano un filino "soggetti" con le spalle un po troppo chine) e quello delle confezioni dei prodotti poco più sotto, tutti contro il nuovo logo...

Che dire: capita anche ai migliori di sbagliare.

Giusto!

Erano proprio le parole che stavo cercando:
"Dobbiamo non solo esercitare per primi la correttezza e la moralità che pretendiamo dai politici, ma, soprattutto, dobbiamo avere il coraggio di pretenderla e imporla, nel nostro piccolo, anche nel quotidiano."

L'intervento completo di Alberto Leone lo trovate a questo indirizzo sul suo blog.

Thursday, September 13, 2007

Poco o niente da dire (2)

Questa poi mi vergogno persino ad accostarla alla precedente, ma credo vada fatto e anche detto: Calderoli è un emerito imbecille, ma lo sono molto di più gli imbecilli che lo seguono e gli danno retta (e purtroppo, credetemi, ce ne sono tanti).

Poco o niente da dire (1)

Sinceramente non mi viene niente da dire (la rabbia ha ormai lasciato il posto all'amarezza): "Guantanamo: In fin di vita giornalista sudanese di Al Jazeera catturato sei anni fa" (Cani Sciolti)

Sunday, September 9, 2007

Enabling VT capabilities in VirtualBox 1.5

Today I dramatically increased the speed at which VirtualBox runs my Windows XP virtual machine.
I'm not saying that yesterday VirtualBox performances were not satisfactory: even without VT options enabled Innotek did a very good job for the new release of their software.
But (!) , if you really want to boost the speed at which your virtual machines are emulated up, well, you essentially need 3 ingredients:
  1. A VT-capable CPU (my Intel Core Duo T2300 is VT-enabled)
  2. VirtualBox 1.5
  3. me
Let's go:
  1. First of all check whether your CPU supports VT (or AMD-V, if you are using an AMD CPU): see this page for a list of VT enabled CPUs and this one for the AMD ones, or check Intel and AMD websites for more info. [Psssst: I'll explain you a method to check if VT is enabled by using the command line in a Ubuntu environment; all you have to do is to use these instructions more /proc/cpuinfo | grep vmx (or more /proc/cpuinfo | grep svm if you are an AMD-powered guy) and check whether the command returns some text or not. If at least one line of text is displayed you are ready to proceed with the next step]
  2. Install VirtualBox and open the preferences window (File > Preferences...). Now, in the right-side pane locate the "Extended Features" section and enable the check-box named "Enable VT-x/AMD-V".
  3. That's all: I noticed a very impressive performance improvement in my Ubuntu-box.
I also enabled "Seamless integration" ("'host key' + L" inside your virtual machine), a new feature in VirtualBox 1.5, and you can see the results in this gallery:




Friday, September 7, 2007

Memento (AKA "l'open-source a un bivio")

Firefox comincia a usare un po troppa memoria.
E io potrei stancarmi.

Alla faccia di quelli che criticano sempre IE... ok lui ha i suoi problemi ("narcisismo" e incompetenza, due a caso), ma almeno non mangiava tonnellate di memoria quando lo avviavo.

Credo che gran parte del movimento open-source abbia frainteso il motto "release earlier, release often": vedi la stabilità penosa di molte, troppe distribuzioni.
Non passa giorno che sulla mia UbuntuStudio si verifichi qualche inconveniente grave: oggi mi si è chiusa la sessione utente dopo 2 minuti di lavoro ininterrotto del disco fisso, killando alcuni processi e lasciandone in vita altri. Stavo semplicemente utilizzando VirtualBox (la colpa non è di certo la sua, i problemi li ha il kernel).

E questo è un gran peccato: l'open-source che diventa ciò che ha sempre sbeffeggiato: una mera operazione commerciale e/o di immagine.
Spero di essere io paranoico, altrimenti siamo al principio della fine.

Thursday, September 6, 2007

Le antiche tradizioni possono convivere con le nuove tecnologie

Da PuntoInformatico.it: "Nepal, capre salvano un Boeing".

Commento:
Tralasciando molti degli ironici commenti che si potrebbero fare... solo io vedo questa meravigliosa (sul serio!) commistione tra progresso e tradizioni?
Credo che le due cose possano essere conciliate e credo anche che questo caso sia una prova di ciò.
Inviterei tutti a provare a guardare questa cosa da un'ottica "relativa": proviamo cioè a pensare a quanto una simile notizia possa avvicinare chi ancora vive nel secolo scorso (persone con un'età magari anche molto avanzata, per esempio) al "nuovo secolo" fatto di aerei, globalizzazione, computer e tutte le nuove tecnologie.
Secondo me per un'anziana signora indiana "credere" che anche le nuove tecnologie "obbediscono" ai suoi antichi dei non può che far aumentare la di lei fiducia nelle nuove tecnologie e nel "nuovo mondo che avanza".

Non trovate anche voi?


P.S. Inoltre gli aerei, così come anche noi, non sono poi così tanto nuovi... anzi: in un mondo che cambia così velocemente il "nuovo" invecchia più rapidamente di quanto non faccia il "vecchio".

KB939268: Windows Server 2003 SP1/SP2 stops responding

As specified here, an hotfix is available to resolve one very annoying Windows Server 2003 problem: when the system stops responding but ICMP "ping" works anyway, it COULD be a system process (LSASS.EXE) that stopped working the right way.

The bug affects both SP1 and SP2 patched systems.

The hotfix resolves this situation but must be obtained by contacting the Microsoft Online Customer Services.

Wednesday, September 5, 2007

Eclox: Eclipse code documentation made easy.

Eclox is perfect if you need to add complex code documentation to your projects by using the Eclipse IDE and the Doxygen multi-language documentation tool.

You need to separately install Doxygen in order to use Eclox.

Here are some Screenshots (click to view full-size):

Monday, September 3, 2007

Songbird

I've been trying Songbird for 2-3 days until now.
Pro:
  • By using a simple interface that is quite similar to iTunes you'll be able to discover really new music
Cons:
  • It's a relatively new app and there is still plenty of bugs
  • That GUI really does look like iTunes
Big Con:
  • Is it so difficult to write an iPod library that works with an old Black 1G Nano?!? And are we sure that each project aiming at communicate with an iPod writing its own library will finally provide a working piece of bytes?

BTW: Give Songbird a try because, if you want to discover new music every day, it really deserves your attention.

Filosofia al limone

Piccole gioie della vita: un dentifricio al limone buonissimo... chissà se fa anche guadagnare punti con le fanciulle...
(per un intrigante dibattito sull'utilizzo dei tre puntini di sospensione vi rimando qui)

Monday, August 27, 2007

Ubuntu security bulletins (USN-503-1 - Thunderbird)

USN-503-1: Thunderbird Javascript flaws
Threat-level (*): Less-than-moderate

Affected Ubuntu versions:
  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
Affected Thunderbird version:
  • mozilla-thunderbird 1.5
It's recommended that you perform (at least) a standard upgrade of your system to avoid possible:
  • Attacks based on malicious-emails (based on Thunderbird Javascript flaws):
    • arbitrary execution of applications placed on the attacked computer with the privileges of the user that opened the malicious mail
    • execution of arbitrary code with the privileges of the user
________
(*) = IMHO = It's just my opinion...

Nicola's resources: 1 - Ad networks


  • OpenAds it's not an ad network, but it provides an updated list of them.

[Click on the post title and scroll down to comment]

Sunday, August 26, 2007

Ubuntu security bulletins (USN-499-1 - Apache)

Today I inaugurate a new service: thanks to the Ubuntu Security Notices, I am able to provide an updated list of the Ubuntu vulnerabilities as they are discovered and posted to the ubuntu-security-announce mailing list.
I won't provide every report submitted to this list, but I think I'll select just the more interesting among them.

The first post is for the Apache-aholik ones:

USN-499-1: Apache vulnerabilities
Threat level (*): MODERATE

Affected Ubuntu versions:

  • Ubuntu 6.06 LTS
  • Ubuntu 6.10
  • Ubuntu 7.04
  • (and the corresponding versions of Kubuntu, Edubuntu, and Xubuntu)
It's recommended that you perform (at least) a standard upgrade of your system to avoid possible:
  • XSS attacks (consequences: data/passwords stealing and other minor threats)
  • Denial-of-service attacks
  • Apache signal handling flaws
________
(*) = IMHO = It's just my opinion...

Lock your kernel version

As most of the kernel "developers" are getting lazier, more selfish and blinder every-day, the result is that new kernel versions are really buggy and full of errors.

SOLUTION: "pin" your kernel version in Synaptic.
1. Select "linux-image-XXX"
2. Select the "Packages > Lock Version" menu item

...and now wait until the new versions that will come get stable...

Sunday, August 19, 2007

xFruits: RSS from/to everything
















xFruits.com is a very interesting service that permits to exploit the potential of your RSS feeds. Their site exposes some very interesting services based on RSS feeds:
  • Feed to PDF
  • Feed to Mobile
  • Feed to Mail
  • Mail to Feed
  • Feed to Voice (!)
  • Feed to OPML
  • OPML to Mobile
  • and, of course, feeds aggregation
But, above all, it permits to "chain" these services by building very useful mashups.
i.e. You can build a chain made of "Mail to Feed" + "Feed to Mobile" that lets you check your mail from your mobile phone.
The most impressive mashup it's probably RSS to Voice (powered by VocalFruits) which lets you create podcasts from blog posts, mail messages ("Mail to feed" + "Feed to Voice") and so on.
Available voices are English, French and Spanish, but you need a (paid) account at VocalFruits. This is a bad news/good news: when you create the account at VocalFruits you will be credited with 100 free vocal credits (I think each credit is equivalent to the conversion of, e.g. , one feed), so you have the possibility of evaluating this service before you invest some money.

Finally, these guys are continuously improving and creating new options for you to use with your feeds.

Saturday, August 18, 2007

Update to "Perderne un'altra"

Il tool in questione non è poi tanto usabile: in effetti non fa che scaricare dalla rete un'immagine dell'installer Debian. Immagine tramite la quale, al successivo riavvio del sistema, viene fatta partire l'installazione.
Sembra che per far ciò vada a scrivere su disco (ma non so dirvi dove) e a modificare l'MBR (Master Boot Record). Ergo: utilizzate un Live CD così, prima di installare, potete anche verificare la compatibilità hardware del vostro computer (inoltre vi risparmiate la scrittura dell'MBR e sul disco).

Friday, August 17, 2007

Perderne un'altra

Ecco un'altra buona cosa riguardante il mondo Linux e che finisce a genziane a causa del solito "Microsoft is the Enemy"...
Il tool proposto è un EXE che si scarica facendo click sull'immagine Debian: sembra veloce e usabile, oltrechè essere windows-friendly (da non sottovalutare quando ci si rivolge a un pubblico di utenti windows: li si rassicura già in partenza)...
MA...
Io direi che sarebbe anche ora di smetterla con i varii "Goodbye Microsoft", "Microsoft is Evil" e "Winzozz". Sembrerebbe proprio che Linux non riesca a vivere se non grazie a una costante (e noiosa) contrapposizione a Windows... Ora, se invece ci si concentrasse sul pubblicizzare le belle cose del mondo Linux (e ce ne sono parecchie!) e si lasciasse perdere Microsoft, allora si che si inizierebbe ad apparire seri, professionali e meritorii di essere presi in considerazione. Leggasi: "se si continua con l'atteggiamento Goodbye-Microsoft si fa pubblicità gratuita a Windows e contro-pubblicità altrettanto gratuita al mondo Linux". Il sito si sarebbe anche potuto chiamare "DebianWindowsInstaller.org" (nome bruttino, vabbè) e credo che avrebbe reso un miglior servizio a Debian e avrebbe attirato molti meno "faziosi" del pinguino (che paradossalmente ce l'hanno già installato) e invece molte più persone veramente interessate a cambiare sistema operativo.

Come dicevo: un'altra occasione persa...

[ UPDATE ]

I wanna be a Z(h)ero!

Spread Firefox


Found at "Spreadfirefox.com"
[This work is not mine: visit its original location]

Thursday, August 16, 2007

Skype is burning?

It seems that Skype.com is a bit overloaded (but it can also be Firefox: these days the fox isn't working very well).
But the worst thing is that the Skype client can't connect at all (however it seems it succesfully logs in. But nothing more than this...).
Any idea? Anyone knows the reasons behind these problems?
[UPDATE] Skype official explanation for the currently undergoing problems.
[UPDATE] Skype is back!

Sembrerebbe che Skype.com sia sovraccarico (però potrebbe essere anche che "Firefox is burning", specie ultimamente). Inoltre, cosa ancor peggiore, il client parrebbe non riuscire a connettersi.
Mumble mumble... si accettano ipotesi.
[UPDATE] Ecco la risposta: qui
[UPDATE] Skype è up sin da ieri notte tardi quando aveva già circa 3-4 milioni di utenti collegati. Stamani siamo a quota 5 milioni.

Blog Action Day

"Blog Action Day is based on the premise that if every blog posted on the same issue on the same day we could effectively change the conversation on the web that day" [found at "northxeast.com"].

This one really seems a really useful and clever idea.
Give it a chance to become a success.

Tuesday, August 14, 2007

Feeling Black - Retina


Original (awesome!) picture from tomooka: see the original.
Thanks to tomooka for his really great work and for distributing it under a CC license!
The "Retina" album also contains the "making of" of the illustration. You can see that lovely GIMP on my UbuntuStudio desktop (the album also contains the original picture I remixed).

Creative Commons License
Feeling Black - Retina is licensed under a Creative Commons Attribution-ShareAlike 3.0 License.

Sunday, August 12, 2007

Ubuntu: Switch from Gnu GCJ and GIJ to Sun JRE

If you experienced (I did, grrrrr...) some problems like Eclipse not running very well (e.g. CPU at 100% all the time) or Java-based apps stopping with errors, well Alec the Geek has a possible solution (a definitive solution won't be born until the guys at the GNU Foundation will decide to stop messing around with "Free as in speach..." or "Free as in beach..." or "Libertè, Egalitè, Penguinitè" and maybe will turn back to writing code and FIX GIGANTIC BUGS).

The idea is simple and useful even for other needs: you point the wrappers to the Java compiler and the Java bytecode interpreter to the official Sun JRE, instead of using the GNU implementation (which is the default Ubuntu behavior).
You do that by using the following command, sudo update-alternatives --config java , and by choosing the Sun JRE from the list (only if you have installed it, of course...).

Guys, repeat with me: "Thaaanks Aleeec"

Wednesday, August 8, 2007

TCS vs TCB

Quando inizi a scrivere TCS (Tiscali Customer Service) al posto di TCB (Task Control Block), considera l'ipotesi di abbandonare le "tue" (!) creature fatte di bits al loro destino (almeno per un pò, sigh!) e di dedicarti a del sano sport... o magari a delle relazioni inter-personali che non abbiano come medium MSN (anche se io uso Pidgin, tiè!).

Al solito, un link per voi, tanto per gradire: Cleversafe Open Source Community

Monday, August 6, 2007

Make two different Thunderbird versions cohabit in the same Ubuntu installation

In my recent post "Make two different Firefox versions cohabit in the same Ubuntu installation" I explained why (and how) I have two different Firefox installations sharing the same settings, bookmarks and add-ons.
This time things get a little more tricky, but don't worry and let's get the party started.
  1. Download Thunderbird
  2. Unzip to your home directory (tar xf thunderbird-2.0.0.6.tar.gz , TAB is your friend, use TAB)
  3. Now you have to make mailboxes, settings and the other stuff be shared between your two Thunderbird installations (the "native" one and the "new" one). NOTE: follow these steps before you start your newly downloaded Thunderbird
    1. Locate in your home directory the folder ".mozilla-thunderbird" (you must select "View > Show hidden files" or press "Ctrl + H" if you are using a file manager)
    2. Look at the files that the folder contains: we are interested at the file "profiles.ini" and at a folder named "XXXXXX.default" or "default.XXXXXX" (where "XXXXXX" can be "whatever-Thunderbird-decided" sequence of letters and numbers)
    3. We must link this folder and "profiles.ini" to the folder "/home/$USERNAME/.thunderbird" (if this folder doesn't exist, create it):
      1. cd
      2. ln -s ./.mozilla-thunderbird/profiles.ini ./.thunderbird/profiles.ini
      3. ln -s ./.mozilla-thunderbird/XXXXXX.default ./.thunderbird/XXXXXX.default
  4. Start Thunderbird: /home/$USERNAME/thunderbird/thunderbird
NOTE: You can use both Thunderbird installations and this HOWTO can be applied to any version of Thunderbird and Firefox. This comes pretty useful especially when testing beta (and/or alpha) versions of the two products.

As previously said: let me know if that works (it seems that my comments aren't accessible from the home-page of the blog: to comment you must open the post in its own window by clicking the post title and scroll the page down until you see the "Comments" box).

Monday, July 30, 2007

Secret resources

I'm too tired to write a tutorial, but I have some secret resources I want to share with you:
this, this one and this beautiful service too.

Sunday, July 29, 2007

Feed43: build an RSS feed from plain HTML

When you need to provide an RSS feed to a web-site you aren't able to edit (i.e. you are nor the admin, nor one of the maintainers of this web-site), well, if this is your case, the service I'm going to describe is the solution you were looking for.

Feed43 is a pretty useful service: it satisfied my demands without the need for me to know nor the XML schema of the RSS standard, nor any other particular notion.

It lets define a parsing schema of an HTML page by using a simple wizard. After I entered the site for creating a feed, I suddenly switched to "Advanced mode" and I found this advanced mode being both powerful and simple to understand.
Just a thing may be a bit obscure: hot to use the "{%}" or "{*}" template tags.
I personally used just "{%}" and then, after looking at the assigned numbers in the "Clipped data" text-area, I provided "{%1}" or "{%2}" to, respectively, the "Item title template" and "Item content template".

But, you know, the better way to understand how it works is to try yourself...

This service really fitted my needs, allowing me to build a feed up in less than 10 minutes.

Saturday, July 28, 2007

Make two different Firefox versions cohabit in the same Ubuntu installation

Few days ago I was founding quite disappointing the performance of my Firefox web browser under my Ubuntu distro. In addition, the installed Firefox version won't be updated until Gutsy (or until a security update will be published). (this is a policy I sincerely don't understand: why I can have the always up to date software in Windows and not in Ubuntu? Mah!)

BTW, I came to a solution: installing from the binaries provided by the Mozilla foundation would be enough... Nearly enough: I also didn't want to loose my current Firefox installation, nor I wanted to loose all the plugins and the extensions I had already installed and configured.
So I turned to this solution: install the new version (downloaded from here) side by side with the "old" one, letting them share the same settings folder.
  1. Download Firefox
  2. Move "firefox-2.0.0.5.tar.gz" to your home directory
  3. Extract it (tar xf firefox-2.0.0.5.tar.gz)
That's all: from your home folder run firefox/firefox or type ./firefox from the "firefox" folder or place an icon on your desktop.

From now on the two versions of Firefox will share preferences, settings and extensions (all the settings and the extensions are located into your /home/$USERNAME/.mozilla/firefox folder).

Let me know if that works.

(Coming soon: the same way for... Thunderbird!)

Friday, July 27, 2007

Indexed

Amazing, wonderful... fearful; a deep insight of the real life: Indexed.

SOAP and WSDL mistakes using .NET: the missing input

Sometimes in your WSDL are present web service inputs whose minOccur and maxOccur attributes are not specified.
I found the .NET framework assumes an element defined that way is optional.
Let me better explain: if you don't specify a value for such an element (you usually provides or not this value when you are invoking the web service proxy, generated by using wsdl.exe) the .NET runtime skips inserting that element in the SOAP request.
Now, if the destination web service requires the element... BIG-MISTAKKO: I spend 10 hours debugging such a troublesome behavior... Grrrrr!

Solution 1: always provide minOccur and maxOccur attributes or use required="true"
Solution 2: always provide non-empty and consistent values for every web service input

In my case Solution 2 worked pretty well (actually it was the only one suitable because I didn't have the possibility of modifying the web service).

Feeling the "Black Era"

Listen to this group, "Black Era". Their sound both relax me when I'm nervous and wakes me up when I need to.

Here's their Bio (You noticed it? They are Italian!).
Here's their Last.fm profile.

Least but not last: most of their music is free!

De censura

Quoto, ri-quoto e ancora una volta quoto.
Faccio inoltre mio l'appello: "Non facciamoci fregare"

P.S. "De censura"o "De censurae"?

Thursday, July 26, 2007

The professional Ubuntu (first part)

Ubuntu Studio is an unofficial flavor of Ubuntu, based on Gnome and few other apps, all available through the official Ubuntu repositories.
I will not discuss on how installing Ubuntu Studio in details (see UbuntuStudio.org or/and this wiki for more infos on this topic), but I will tell you one thing: this distro best embodies my concept of "modularity". They took the very few of the Ubuntu core (the "main module") and built up around it a consistent distro, made itself of other modules (that are known, in the Ubuntu language, as "meta-packages").
Ubuntu Studio is made up of 4 meta-packages:
  • Graphics, featuring Gimp, Inkscape, Agave, CinePaint, Scribus and so on
  • Audio, featuring Audacity, Jack, Ardour, Muse and others
  • Video, a metapackage that contains Cinepaint, Kino, Stopmotion and others
  • Audio plugins, containing the most useful plugins for the apps of the Audio meta-package

When I came to install Ubuntu Studio on my laptop I found very interesting to choose at install-time which of those sets of apps will be installed: the installer did all of the hard work on his own, by taking all the .deb packages from the installation CD.
So, this is the first goal of modularization that has been obtained : simple and powerful 20-minutes installations that lets your system in a consistent and immediately productive state.

Also, Ubuntu Studio does so by targeting a precise and unique target of users: the creative professionals.
I want modularity... just give me all AND ONLY the packages I need for my work!

<< Link to the Intro | Link to the second article >> [COMING SOOOOON...]

The professional Ubuntu (Intro)


When I came the first time to UbuntuStudio.org I promised myself the next time I'll be upgrading my Ubuntu I will install this professional flavour of the "human distro".
So, when the Feisty Fawn was born I decided to move from classical Ubuntu to Ubuntu Studio.
Currently the first screenshot (click to see the full size version) you see on the left is the result of some customizations.


Some lines back I highlighted the word "professional"; I did so to focus your attention on an aspect of Ubuntu that is often guiltily omitted: Ubuntu lacks an "I-don't-know-what" that will make it truly professional.
I know, I know, Ubuntu has several "pro-level" apps, offers a highly usable and friendly desktop, is becoming more mature every day, is already a competitive alternative to MS Windows, but I think it really misses a "behavior" that puts it on the same level as Mac OS X is.
No, I'm not jocking, I really do mean that with some adjustments Ubuntu could be a competitive alternative even for those people that every day need a stable, simple, homogeneous and "serious" working environment (talking about you, OS X).

The point in this post is that we can't wait to Ubuntu to become this way, so we can go two different ways:
  1. Help Ubuntu change and become more professional (I absolutely do not mean to make it more OS X like): Launchpad is supposed to be the center of the community, so manifest there your requests for a better Ubuntu and help developers with bugs (the least you can do is help who provides you such a good system with such a little expense (zero, nada, nothing, zéro, null, nil, nothing ...))
  2. Try to customize yourself Ubuntu or any derivative distro, like I did and like we are going to explore in this post
Notice the two preceding points are complimentary: I really encourage you to follow both of them!

Before we develop the central topic of the post I want you to acknowledge the human distro to be a heavy modular one: Linux is modular to a near-to-the-maximum extent and Synaptic and the system of packages and meta-packages that constitute Ubuntu is a perfect and user-friendly complement to this modularity.

We were speaking of "professionalism", why turning to "being modular"?
Because I think the two things are strictly correlated when it comes to operating systems.
So I'll explain how to achieve professionalism through being modular.

Link to the first article >>

Wednesday, July 25, 2007

Servizio anche nel disservizio (2)

Seen at Plaxo.com...
(look at that lovely smart cow...)

(click to see full-size)

The power(s) of Google Analytics

Google Analytics is a wonderful tool that you can't miss if you must manage and monetize one or more web-sites.

It's so full of interesting and useful features that I'm finding new ones every day.
E.g., this way for a awesome result:
1. Login to Google Analytics
2. Select the web-site you want to analyze
3. Select "Content" from the left menu
4. Now select "Site Overlay" from the newly displayed list
5. Check the scores of your links and contents by watching at the little blue-and-white colored bars

Monday, July 16, 2007

Servizio anche nel disservizio

Credo che questo sia un perfetto esempio di come fornire una chiara ed esplicativa pagina di informazione di servizio anche a clienti eventualmente non troppo addentro ai dettagli informatici.

Chiara, semplice, nessun "panico", domande e risposte, un filo di umorismo.
Se volete vederla magari fate in tempo a visitare chl.it, altrimenti credo dovrete accontentarvi del mio screenshot.

Saturday, July 14, 2007

Intel Core Duo optimizations and CK patches for Ubuntu Feisty

If you are, like me, a performance-hungry guy, well, today I have very good news for you.
I found a repository that provides optimized Linux kernel builds for Ubuntu Feisty.
Provided optimizations are the following:
  1. CK patches (read more at this link)
  2. Kernel compiled with Intel Core Duo optimizations
This work is provided by Giuseppe, an Italian blogger you can found at http://www.iuculano.it.
Check Giuseppe's post to read more details; the author of the blog is Italian (like me!), so expect to read these details in Italian... But, even if you don't understand Italian, well this is the sequence of steps to add Giuseppe's repositories to your list and for installing the patched kernel:

wget http://ubuntu.iuculano.it/AE3BE9AA.gpg -O- | sudo apt-key add -

After that, add this repositories to your sources.list:
deb http://ubuntu.iuculano.it feisty all
deb-src http://ubuntu.iuculano.it feisty all

Finally:
sudo apt-get update && sudo apt-get install linux-686-ck linux-headers-686-ck
or
sudo apt-get update && sudo apt-get install linux-core2-ck linux-headers-core2-ck
(depending on your CPU)

Note that even if the kernel is labeled "*-core2-*" it works fine in my Core Duo "first generation", so it sure suits well both Core Duo and Core 2 Duo CPU families.

I tried myself the so-optimized kernel and I found that it provides actual noticeable performance increment only for those applications CPU-intensive (e.g. GIMP, video editing and audio conversations). It also seems that my desktop is more responsive, but I didn't take any test to verify an eventual performance gain for the X server.
I warn you: don't expect sparks and a performance boost from every application of your system (especially from IO-intensive applications... )!

At the bottom of the Giuseppe's post is also provided a tip to increase the responsiveness of the X server:
sudo dpkg-reconfigure -plow x11-common
and answer -10 when it asks for the X server "nice" value.
This is a tip that works with every kernel (it affects the X server, not the kernel) and could probably increase your desktop responsiveness, but I didn't try it, so I can't tell you more.

(If you wanna know more about CK (Con Kolivas) kernel patches: ck.wikia.com)

Friday, July 13, 2007

The crazy MS07-040 .NET patch

It seems that a recently released Microsoft update for the .NET framework it's acting pretty crazy...
Some users reported very annoying problems due to the installation of this patch: hard-disc trashing, machine performances going down, CPU at 100% for a long while and .NET instability.

Involved technologies are .NET framework 1.0, 1.1 and 2.0.

My advice is to avoid (when suitable) the installation of the patch.
It's more secure to wait until the patch got patched (!).

More detailed infos at this link.


(via Slashdot: "Microsoft .NET Patch May Make PCs Go Haywire")