lunedì 31 dicembre 2007

...we wish you a happy new open year...

Il 2007 si è concluso. O meglio si concluderà fra poche ore. Voglio solo augurare a tutti...

Il 2007 si è concluso con l'ascesa di PCLinuxOS su distrowatch. Si è concluso con con una diffusione esponenziale di Ubuntu in ambiente desktop. Si è concluso con la speranza che il 2008 sarà un anno di svolta per i sistemi GNU/Linux. Ogni anno si è detta questa frase e ogni anno la si ripeterà. Io non so cosa sarà di GNU/Linux l'anno prossimo ma so che continuerò a sperare e a lavorare per un mondo informatico sempre più aperto.

venerdì 28 dicembre 2007

Python vacanziero


Data di oggi: 11100/1100/11111010111

Ebbene si, durante le vacanze ci si svaga.
Oggi sebbene lo studio inconba sulla mia testa ho trovato una decina di minuti per scrivere questo strambo programma dalla dubbia utilità.
Non ha un nome preciso ma il suo compito è convertire una data in binario.
L'output è un po' grezzo perchè stampa solo una lista ma è già sufficientemente chiaro tant'è che la data odierna la potete leggere in binario in alto.

Il programmino è diviso in due file scaricabili da qui:

python_serale.py
import util

if __name__ == "__main__":
print 'Convert data in binary...'

day = input('Day > ')
month = input('Month > ')
year = input('Year > ')

#Convert day
bin_day = util.binario(day)
bin_day = util.invert_list(bin_day)

#Convert month
bin_month = util.binario(month)
bin_month = util.invert_list(bin_month)

#Convert year
bin_year = util.binario(year)
bin_year = util.invert_list(bin_year)

#Append complete data
data = []
data = data + bin_day
data = data + ["/"]
data = data + bin_month
data = data + ["/"]
data = data + bin_year

print 'Binary conversion:'
print data


util.py
def binario(a):
li = []
while(a > 0):
li.append(a % 2)
a = a / 2

return li

def invert_list(li):
index_list = len(li) - 1
new_list = []

#We invert the list with a while loop
while index_list >= 0:
new_list.append(li[index_list])
index_list = index_list - 1

return new_list


Per eseguire il prgramma è sufficiente dare da terminale il comando:
~$ python python_serale.py

giovedì 27 dicembre 2007

Update Android SDK - Version m3-rc37a

Si lo so, ho un pelino di ritardo ma recupero. E' uscita una nuova versione dell' SDK per lo sviluppo per Android.

Version m3-rc37a and ADT 0.3.3 were released on December 14, 2007.


Diversi sono i cambiamenti e sono minuziosamente riportati sul sito ufficiale http://code.google.com/android

New Features
Android Debug Bridge (ADB)

* Now supports multiple emulators on one host computer. Please note that you need to use the -data option when starting secondary emulators, to allow those instances to save their data across sessions. Also, DDMS does not yet support debugging on multiple emulators yet.

ADT Plugin for Eclipse

* Adds editor capabilities for working with Android manifest files, such as syntax highlighting and autocompletion. The editor capabilities require the Web Tools WST plugin for Eclipse, which is included in most Eclipse packages. Not having WST does not prevent the ADT plugin from working. If necessary, you can download and install WST from the Web Tools Project downloads page. To update directly from an Eclipse installation, you can add a remote update site with this URL: http://download.eclipse.org/webtools/updates . Note that installing WST on Eclipse 3.4 will require installing other packages, as detailed on the WTP downloads page.
* Now retries to launch the app on the emulator if it fails due to timing issues when the emulator is booting.
* Adds support for loading custom skins from the /lib/images/skins/ directory. The Skin dropdown in the Emulator tab is now built from the content of the skins/ directory in order to support developer-made skins.
* Adds an Emulator control panel. This is a UI on top of the emulator console that allows you to change the state of the network and gsm connection, and to initiate incoming voice call. (This is also present in standalone DDMS.)
* Adds support for referenced projects. Android projects will add to the apk package any code from referenced projects.
* Eclipse console now warns if an .apk that is pushed to the device declares the same package as another already installed package.
* Java classes generated by the Eclipse plugin are now marked as derived automatically, so that Team plugins do not consider them as regular source.

Emulator Console

* Now provides support for emulating inbound SMS messages. The ADT plugin and DDMS provide integrated access to this capability. For more information about how to emulate inbound SMS from the console, see SMS Emulation.

Emulator

* The default emulator skin has been changed to HVGA-P from QVGA-L. For information about emulator skins and how to load a specific skin when starting the emulator, see Using Emulator Skins.


Sono stati risolti anche diversi problemi:

Resolved Issues
907947

adb -version now returns a version number.
917462

Audio on Windows is fixed and is no longer 'choppy'.
Removed Manifest File Locking on Mac OS X

ADT plugin now uses a custom java editor for R.java/Manifest.java, to make those files non-editable. This is to replace the current locking mechanism which causes issues on Mac OS (preventing projects from being deleted). Note that your project must recompile at least once for the lock to be removed from the files.
The following known issues noted in m3-rc20 are now fixed:

* 890937: Emulator does not support non-qwerty keyboards.
* 894618: adb shell may fail to connect when used the first time.
* 896274: On Windows, the emulator window may start off-screen.
* 899949: The emulator may fail to start with -useaudio on some environments.
* 912619: Emulator console listens on non-local ports 5554-5584.
* 917399: On Windows, running multiple emulator consoles can result in unexpected behavior when simulating incoming telephone calls.

Known Issues

Unless otherwise noted, known Issues from m3-rc22a also apply to m3-rc37a.


Non c'è che dire, una release molto interessante. Mettiamoci al lavoro!

giovedì 20 dicembre 2007

Buone Feste

In questi giorni sono stato letteralmente mangiato vivo dai progetti universitari e non ho avuto molto tempo di seguire il blog.
Auguro a tutti Buone feste!!!

sabato 15 dicembre 2007

La nuova piazza è la rete.

Non prendo in toto ciò che dice Beppe Grillo, non sono sempre d'accordo con ciò che dice Beppe Grillo ma ho letto un articolo del Corriere della Sera nel quale c'era un punto toccato da Beppe Grillo che ha destato la mia attenzione e al quale vorrei fare una piccola estensione.

BG:
"Marini si rende conto che il mondo sta cambiando e lui ha potuto fare quello che ha potuto fare e ai suoi tempi riempivano le piazze con milioni di persone, adesso la piazza è miliardi di persone in rete. E' ovvio che siano un po' spaventati."


E' dannatamente vero. I media stanno cambiando e l'Italia rappresenta un po' il terzo mondo di questo cambiamento.

BG:
"L'informazione con i suoi limiti, con la sommersione di informazioni inutili, la gente è sommersa di ca…. È un mezzo destinato a scomparire, sarà assorbito dalla rete. La rete è la cosa più democratica che esista perchè c'è il contraddittorio"


Tutto il resto non mi trova pienamente d'accordo. Ma soffermiamoci su queste parole.
Il nuovo mezzo d'informazione sicuramente infinitamente più potente della televisione è la rete.
La rete fa SEMPRE, in ogni momento della giornata informazione. Ma vorrei dire che la vera informazione deve essere fatta nella maniera più libera, divincolandola da monopolii software e da folcloristiche idee governative.

Allora potremo davvero dire che internet è la piazza del mondo.

venerdì 14 dicembre 2007

Simpatica iniziativa Microsoft

L'ora è tarda ma mi è passato ora sotto mano un articolo di tuxjournal.net che mi ha fatto sorridere, soprattutto perchè stiamo parlando di software proprietario, quindi non sappiamo esattamente cosa combini davvero sulla macchina.
Per farla breve, Microsoft ti regala Vista e Office se ti fai spiare per 3 mesi. Nell'attesa di verificare la notizia permettetemi una sguaiata risata dato che si parte dal presupposto che Windows Vista non contenga già software che monitora le attività del povero utente.

Per tutte le informazioni che per anni Microsoft ha raccolto su tutte le persone che hanno un pc ci meriteremmo tutti una copia gratuita di Vista e Office per riuscire finalmente a stabilizzare quel tavolo che balla nello sgabuzzino.

Indirizzo all'articolo completo: http://www.tuxjournal.net/?p=2122

giovedì 13 dicembre 2007

Ubuntu 8.04 - Nuovo look (Puntata 2)

Ne avevo già parlato, o meglio avevo già segnalato l'articolo di tuxjournal che ne parlava.

Ubuntu vuole rifarsi il trucco, lavevamo capito. Questa volta abbiamo dato una decisa sterzata sul versante colori.
Guardate le immagini a questo indirizzo e commentate.
Secondo me è stato fatto un netto salto di qualità verso un'interfaccia grafica molto professionale.

martedì 11 dicembre 2007

GNU/Linux nelle scuole.


Mi sembra fondamentale che con il concludersi del 2007 e l'avvicinarsi del 2008 si dia una concreta spallata al software proprietario.
Un passo concreto e fondamentale, ma soprattutto di educazione delle persone a una mentalità aperta, è l'inserimento di GNU/Linux nelle scuole.
Penso che ci siano diversi motivi il primo dei quali è di tipo etico. Il software libero nella maggior parte dei casi è anche gratuito quindi gli studenti possono seguire le lezioni ed esercitarsi a casa senza pagare costosissimi software o infrangere la legge ottenendo copie pirata dei programmi e soprattutto non si deve sottostare al volere di una ditta.
Un secondo motivo non meno importante è il prezzo. Installando sistemi GNU/Linux non solo si risparmierebbe sul costo del sistema operativo (da centinaia di euro per postazione a 0) e infine si risparmierebbe anche sull'hardware dato che GNU/Linux ha richieste hardware decisamente più contenuto rispetto ai dispendiosi sistemi operativi proprietari.

Veniamo dunque a un aiuto concreto firmando la petizione per portare GNU/Linux nelle scuole italiane a quest'indirizzo: http://firmiamo.it/linuxscuola

E' importantissimo prendere la direzione che porta verso il free software perchè solo divincolandoci dai catenacci del software proprietario che possiamo veramente chiamare i laboratori di informatica delle scuole come tali, insegnando il vero controllo del proprio computer.

lunedì 10 dicembre 2007

Project-Helper 1.0

Ecco a voi un'interessante utility per i vostri progetti: Project-Helper.
PH (per comodità) è un programmino da linea di comando che prende come parametro da terminale il nome del file del progetto ad esempio:

./ph scheduler


e crea due file:
-scheduler.h con alcune librerie standard dentro.
-scheduler.c con il riferimento ad h e il main dentro.

Il programmino può essere scaricato a questo indirizzo.

Ovviamente è open source e il semplice sorgente è possibile scaricarlo a questo indirizzo.

E' vero che è integrato in tutti gli IDE ma per chi come me ama l'editor di testo semplice che si carica in un attimo forse può essere molto comodo.

Per farlo partire automaticamente digitando semplicemente ph è necessario:
-o copiarlo all'interno della cartella /bin
-o aggiungere a $PATH la cartella nella quale è contenuto (attenzione perchè così prenderà tutto il contenuto della cartella).

Una volta installato in questa maniera basterà digitare
$ph mio_file

e il gioco è fatto.

sabato 8 dicembre 2007

Slackware 12.0 - L'epilogo

Purtroppo non un felice epilogo per la mia avventura su slackware. Sembra che il grub (installato male da fedora) non si possa levarlo automaticamente installando slackware.
Ora sto recuperando i dati importanti con la live di Ubuntu, ma non appena mi sarà possibile ritornerò all'attacco...

venerdì 7 dicembre 2007

Slackware 12.0


Ebbene si... dopo tanta corte fatta al sistema che io considero "puro gnu/linux" ho preso il toro per le corna, ho creato una partizione su mio pc desktop, ho inserito il dvd di Slackware 12.0 e in questo momento sto formattando la partizione con un sistema operativo che considero un'entusiasmante avventura.
Ora non ci resta che provare a sistemare il sistema al meglio per fargli provare nuove vette ancora inesplorate.
Inutile dire che che molte cose potrebbero andare storte durante questa installazione quindi la tensione è alta.
Consiglio allora nel frattempo alcune letture interessanti:
http://slackware.it/ - Il sito italiano di riferimento che contiene anche la guida principale a Slacky
http://www.slackware.com/ - Il sito ufficiale del progetto.
http://www.slacky.eu/ - Il sito della comunità italiana, che però ora sembra essere offline.

(il logo in alto è preso dal sito http://slackware.it)

giovedì 6 dicembre 2007

[LOL] Vero programmatore

Cercando informazioni su Ritchie, creatore del C, su Wikipedia, ho trovato un articolo interessante
che parla del "vero programmatore".
Ci sono molte leggende su chi sia un "vero programmatore" (in inglese "real programmer"), cerchiamo di capire chi è davvero scorrendo il wiki.

"Il termine vero programmatore (mutuato dall'inglese real programmer) è un termine usato solitamente in modo sarcastico e goliardico da alcuni programmatori per descrivere uno stereotipo programmatore vecchia scuola, tutt'uno con la macchina al punto da conoscerla spesso meglio dei suoi stessi progettisti."
Continua dicendo:
"A differenza del programmatore normale, il vero programmatore amerebbe lavorare di notte e nei fine settimana, meglio se in sessioni di 15-20 ore consecutive per poi schiantare a terra esausto dopo aver bevuto almeno 100 caffè."

Vediamo ora le origini del termine:
"Le origini del termine vero programmatore vengono ricondotte ad un articolo goliardico del 1983 intitolato Real Programmers Don't Use Pascal, di Ed Post. Nell'articolo venivano messi in ridicolo gli allora emergenti linguaggi di programmazione come il Pascal, a cui veniva contrapposta la figura del sistemista tuttofare specializzato nell'uso del linguaggio FORTRAN."

Ecco un idolo:
"Il primo e più famoso tra i «veri programmatori» è Mel Kaye, immortalato in Story of Mel, un post su usenet di Ed Nather caposaldo della letteratura hacker. A quanto è dato sapere, programmava esclusivamente in linguaggio macchina - in "grezzi, disadorni, imperscrutabili numeri esadecimali"."

Per curiosità sono andato a vedere chi è Mel Kaye. Non ne parliamo qui ma la sua pagina wiki è raggiungibile a questo indirizzo.

Il vero programmatore si è saputo modernizzare, infatti:
"col passare degli anni la figura del «vero programmatore» è stata ripresa e riadattata man mano che nuovi e più potenti linguaggi di programmazione venivano creati. Se quindi il vero programmatore degli anni Ottanta "fa tutto in FORTRAN" anziché in Pascal, quello degli anni Novanta "fa tutto in C" anziché in C++ o Java, oppure "fa tutto in Perl" anziché in Python o Ruby."

Chi è quindi il vero programmatore?

PS: Consiglio in oltre la lettura di questo testo: http://www.arcetri.astro.it/~comore/true_programmer.txt

The only IDE you need!

E' uscito il nuovo IDE di casa Sun! La nuova versione di NetBeans fornisce il supporto per un numero spaventoso di linguaggi oltre a fornire uno strumento di sviluppo web completamente visuale.
Ecco i pacchetti che sono in netbeans:
Ajax | C/C++ | Databases | Debugger | Desktop | Editor | GUI Builder | Java EE | Java ME | Java SE | Javascript | Mobile | Profiler | Refactor | REST | Rich Client Platform | Ruby | SOA | SOAP | UML | Web | WSDL | XML

Maggiorni dettagli e il link al download si possono trovare sul sito ufficiale: www.netbeans.org

mercoledì 5 dicembre 2007

PDF secondo FSF

Secondo la Free Software Foundation il supporto al Portable Document Format è un po' trattato male da parte del mondo open source. Ha deciso quindi di "scendere in campo" e fornire un set di librerie per la gestione dei PDF.
Sul sito della FSF, www.fsf.org, è possibile infatti leggere l'obbiettivo principale di questo progetto: "The goal of the GNU PDF project is to develop and provide a free, high-quality, complete and portable set of libraries and programs to manage the PDF file format, and associated technologies."

Il sito del progetto http://gnupdf.org/Main_Page da un'idea piuttosto chiara dei passi che FSF vuole fare. Primo fra tutti seguire lo standard ISO 32000.

martedì 4 dicembre 2007

SFAT - La luce

Ebbene si... Dopo mille avventure, ricevimenti, e-mail e mesi insonni è arrivato anche il mio turno di vittoria.
Sono riuscito a scrivere sul disco, mantenendo la gestione dei blocchi logici le directory che tramite comando
$./sfat_mkdir
voglio creare sul disco.

Ecco il codice sicuramente buggato che ho prodotto.
Un chiaro segno di luce.
Ecco il codice:
__________________________
/**
*Funzione che permette di scrivere una nuova directory_entry sul disco.
*
*@param fs device sul quale scrivere.
* dt directory_table dalla quale prendere la directory
* entry da scrivere sul blocco.
* log blocchi nella quale e' divisa la directory table
* num_log_block numero di blocchi logici sulla quale e' divisa.
* f_ctrl struttura di controllo della FAT.
*
*@return 0 se tutto e' stato fatto correttamenet
* un codice di errore altrimenti.
*/

int writeDe(FILE *fs, directory_table * dt,int * log, int num_log_block,fat_ctrl * f_ctrl){
int result = 0;
int n_e_per_block; /*Numero di entry che ho per blocco*/
int num_entry_last_block; /*Numero di entry nell'ultimo blocco*/
int num_entry_first_blk; /*Numero di entry nel primo blocco*/
int size_entry_last_block;
int new_fat_free_block;
int remaining_size;
int pos_num_entry; /*Posizione sul disco di num_entry*/
int position; /*Variabile che mi tiene la posizione in
cui scrivere*/

int prova;
dir_entry * curr_dir;

printDt(dt);
pos_num_entry = f_ctrl->blk_base + (log[0]*f_ctrl->b_sector->block_size);
result = fseek(fs,pos_num_entry,SEEK_SET);
if(result == -1)
return ERBD;

/*Scrivo il nuovo numero di entry*/
result = fwrite(&dt->num_entry,sizeof(int),1,fs);
if(result == -1)
return EWBD;

/*Ora mi posiziono sull'ultimo blocco e guardo se ci sta'
la nuova directory entry*/

if(num_log_block == 1){
/*Se ho solo un blocco su cui e' salvata la directory table
l'ultimo blocco di memorizzazione coincide con il primo*/

num_entry_first_blk = dt->num_entry-1;
size_entry_last_block = (num_entry_first_blk * sizeof(dir_entry)) + sizeof(int);
remaining_size = f_ctrl->b_sector->block_size - size_entry_last_block - sizeof(int);
}
else{
/*Calcolo il numero di dir_entry per blocco.*/
n_e_per_block = f_ctrl->b_sector->block_size / sizeof(dir_entry);
/*Calcolo il numero di dir_entry nel primo blocco*/
num_entry_first_blk = (f_ctrl->b_sector->block_size - sizeof(int)) / sizeof(dir_entry);
/*Ottengo il numero di entry che ho nell'ultimo blocco*/
num_entry_last_block = dt->num_entry - num_entry_first_blk -
((num_log_block - 2)* n_e_per_block);

/*Calcolo la dimensione delle dir_entry nell'ultimo blocco*/
size_entry_last_block = sizeof(dir_entry) * num_entry_last_block;
/*Calcolo la dimensione che mi rimane all'interno dell'ultimo blocco*/
remaining_size = f_ctrl->b_sector->block_size - size_entry_last_block;
}

/*Controllo ci sia ancora abbastanza spazio nell'ultimo blocco di
memorizzazione*/

if(remaining_size > sizeof(dir_entry)){
/**
*-Ci posizioniamo all'ultimo blocco;
*-Ci spostiamo dopo l'ultima dir_entry;
*/

position = f_ctrl->blk_base + (log[num_log_block - 1] * f_ctrl->b_sector->block_size) + size_entry_last_block;
result = fseek(fs, position, SEEK_SET);
}
else{
/**
*Altrimenti non c'e' abbastanza spazio nel blocco corrente per
*poter inserire una nuova directory entry.
*Quindi:
*-Cerco un nuovo blocco libero nella fat
*-Aggiorno la fat con il nuovo blocco occupato
*-Mi posiziono nel nuovo blocco trovato
*/

new_fat_free_block = searchFreeBlockInFAT(f_ctrl);
result = updateFAT(f_ctrl,new_fat_free_block);

/*Mi posiziono nell'ultimo blocco*/
position = f_ctrl->blk_base + (new_fat_free_block * f_ctrl->b_sector->block_size);
result = fseek(fs,position,SEEK_SET);

}
/*Una volta che mi sono posizionato correttamente, scrivo la dir_entry*/

curr_dir = dt->table[dt->num_entry - 1];

result = fwrite(curr_dir,sizeof(dir_entry),1,fs);

fflush(fs);
if(result == -1)
return ERBD;



return result;
}
__________________________

Spero possa chiarire le idee su quello che vuol dire salvare una directory entry su un disco.