You are currently browsing the category archive for the 'Programmazione' category.
Ieri, 10 novembre, Google ha anunciato un nuovo linguaggio di programmazione, Go. Non sono riuscito a trovare il link ufficiale e da quanto leggo qua e là mi pare che non sia un progetto ufficiale ma solo di alcuni sviluppatori (Robert Griesemer, Ken Thompson, e Rob Pike) che utilizzano il loro tempo libero, circa il 20% delle loro ore lavorative, per sviluppare altri progetti. Lo sviluppo di Go inizia verso la fine del 2007 ma solo verso la meta del 2008 la sua implementazione iniza a funzionare ed e proprio in quel periodo che Ian Lance Taylor e Russ Cox entrano nel progetto. Anche se non maturo al punto giusto qualche giorno fà il rilascio ufficiale. Il linguaggio si presenta come un C object-oriented molto ottimizzato. Presenta caratteristiche tipiche dei linguaggi dinamici, ma mantiene, quasi immutate, caratteristiche del C. Tutti ci saremmo aspettati un nuovo linguaggio riscritto quasi totalmente e comunque innovativo rispetto a quello che si trova sulla piazza invece l’innovazione forse sta nel tornare indietro, almeno sarà questo che avranno pensato a casa Google. Le caratteristiche principali del linguaggio, come vengono presentate sul sito sono:
- semplice – presenta una sintassi semplice paragonabile a quella di un C misto a Python
- veloce – ovviamente essendo un linguaggio compilato avrà delle performance migliori (pragonabile a quelli scritti in C dicono)
- sicuro – è un linguaggio a tipizzazione statica e un particolare modello di memoria. Ha i puntatori, ma non quelli del C
- concorrenza – implementata a livello nativo e grazie all’utilizzo delle “goroutine”, semplici funzioni eseguite concorrentemente, possiamo scrivere programmi che sfruttano il parallelismo in tutta tranquillità
- divertente - implementa meccanismi di garbage colection, che più che divertente mi sembra necessario per un linguaggio moderno, sintassi pulita, dicono loro, metodi per tutti i tipi e velocita nel deployment di applicazioni.
La ma scotte di Go è quella che vedete in immagine, si chiama Gordon ed è un esemplare di gopher che non so che animale sia e penso nemmeno wordreference.com (http://www.wordreference.com/enit/gopher) sappia esattamente di cosa si tratti.
Al momento Go supporta solo 2 piattafome GNU/Linux e Mac OS e 3 set di istruzioni: amd64, 386 e arm anche se ques’ultima non supportata, non ancora almeno come dicono, su Mac OS. Ha un compilatore nativo specifico per ogni set di istruzioni chiamti 5g, 6g, 8g rispettivamente per arm, amd6a e 386 e prendono il nome dal sistema Plan 9 dei Bell Lab di cui Pike e Thompson erano sviluppatori negli anni ‘80. Mi sorge il dubbio che questa mascotte sia cugina di quella di Plan 9, sembrano essere lo stesso animale amorfo anche se dicono essere un coniglio che si chiama Glenda. Ovviamente esiste anche una versione di GCC apposita per compilare i programmi scritti in Go ed i binari prodotti sembrano essere nativi quindi nulla di pseudo compilato o interpretato da qualche LLVM (Low Level Virtual Machine). Le aspettative per questo linguaggio sembrano essere molte ma qello principale sembra essere quello di scalzare al C++ dal dominio della programmazione concorrente. Il web server che ospita il sito è scritto in Go e solo quello dicono visto che ancora non è pronto per andare in produzione. Bhe che dire io l’ho gia provato e presto postero qualche test ed impressione in merito. ovviamente se ho scritto qualcosa di sbagliato e qualcuno dovesse sentirsi in dovere di smentire me lo faccia sapere, commenti e email sono lì per questo. Per finire in bellezza guardatevi il promo:
– Fine –
Postato con Kblogo
Se sapete usare Subversion di sicuro non vi serve questo post, ma se non avete ben capito come fare a postare il vostro codice sul vostro repository di Google Code allora forse questo potrà aiutarvi. Ovviamente non è una guida passo passo, se cercate qualcosa di completo la vostra ricerca continua, ma se volete caricare il vostro codice allora è arrivato il momento di iniziare. Per prima cosa registrate il vostro progetto su Google, una volta completata la fase di registrazione andate nella tab Source del vostro progetto autenticatevi e quindi copiate il link per i membri autenticati, qualcosa di simile a questo:
# Project members authenticate over HTTPS to allow committing changes.
$ svn checkout https://your-progect-name.googlecode.com/svn/trunk/ your-progect-name --username youraddress@gmail.com
Ovviamente suppongo che voi abbiate già installato Subversion per la vostra piattaforma, se non l’avete fatto questo è il momento di farlo e ovviamente googlate per trovare qualcosa di adatto alle vostre esigenze. Fatto questo aprite il vostro terminale, console, o qualsiasi forma di riga di comando che avete ed incollateci il link che avete copiato, quello sopra per intenderci. Verrà creata nel vostro computer una cartella con il nome del progetto entrateci dentro ed iniziate ad inserire tutti i vostri file e le vostre cartelle. appena fatto digitate nel vostro terminale un
$ svn status
? file1.c
? file2.py
? cartella1
In questo modo sappiamo quali file sono stati aggiunti e cioè tutti quelli con il punto interrogativo che li precede, ora non ci resta che aggiungere questi file al nostro progetto eseguendo
$ svn add file1.c
$ svn add file2.py
$ svn add cartella1
e continuando per ogni file e/o cartella aggiunta nella cartella principale del nostro progetto. A questo punto abbiamo il nostro progetto in locale, ovviamente possiamo editare i file, aggiungerli ma per toglierli? Possiamo usare un semplice
$ svn delete file3.m
se poi volete potete digitare un svn help per una lista dei comandi, sono semplici da capire e la documentazione di Subversion vi darà consiglio. Ora che abbiamo finito di editare il nostro progeto è arrivata l’ora di aggiornare il nostro progetto anche sul server quindi digitando semplicemente
$ svn commit -m "Messaggio sulle vostre modifiche (aggiunte, cancellazzioni, ecc.)"
A questo punto ci verrà chiesto il nostro nome utente, la parte iniziale del vostro indirizzo Gmail, e una password, che non è quella del vostro account, ma è una password che trovate nelle impostazioni dell’hosting, inseritela e tutto verrà caricato online. Per verificare che tutto sia andato a buon fine potete andare sulle pagine del progetto e controllare che l’upload sia andato a buon fine. Da ora in poi vi basta modificare i vostri file come volete basta che alla fine facciate un commit e anche il vostro progetto online sarà aggiornato. Spero di essere stato chiaro e come al solito vi invito a commentare se avete bisogno.
Happy Coding!!!
– Fine –
Post scritto con KBlogo
Scrivo qui solo per tenerne nota, ma magari puo servire anche a voi!!
- Using HTTP is not enough.
- Do not overuse POST.
- Do not depend on URI’s internal structure.
- Do not put actions in URIs.
- Services are seldom resources.
- Sessions are irrelevant.
- Do not invent proprietary object identifiers.
- Do not worry about protocol independence.
Se poi volete saperne di piu trovate maggiori info qui.
– Fine –
Post scritto con KBlogo
Non mi dilungherò tanto nel descrivere cosa sia e a che cosa serve, ma di sicuro troverete tutto quello che vi serve sapere sulle pagine del progetto ospitato da Google. Per farla breve è una piccola libreria scritta in php per interfacciarsi con le api di Identi.ca, piattaforma di microblogging open source basata su Status.net, nuovo nome dato al progetto Laconi.ca. Vediamo un piccolo esempio in grado di postare sul nostro profilo, per prima cosa scaricate la libreria poi aprite il vostro editor preferito e inserite:
require_once("identica.lib.php") or die("Couldn't load Identi.ca library");
$identica = new Identica($username, $password);
$identica->updateStatus('Hello world!');
salvate il tutto e avviatelo noterete che verrà postato sul vostro profilo il mitico Hello World. Per qualsiasi info fate riferimento alla pagina del progetto oppure scrivetemi.
Questo è tutto per ora buon divertimento.
– Fine –
Post scritto con KBlogo
Durante questo fine settimana mi sono un po concentrato sull’utilizzo di python per gestire uno dei database piu famosi al mondo, MySql. Avevo già scritto qualche cosa ma ho voluto creare una interfaccia visuale al semplice e potente client da riga di comando. Il programmino è scritto in python e QT come librerie grafiche, il perché non lo so, forse la settimana prossima faro un porting su GTK. Per il momento il programmino non fa altro che eseguire delle query e fornire i risultati. Ma vediamo velocemente come creare un piccolo script per eseguire delle query su un db Mysql. Per prima cosa abbiamo bisogno del modulo che permette a python di interagire con Mysql, il suo nome è python-MySqldb per installarlo su sistemi Debian based basta digitare, da amministratore:
# apt-get install python-MySqldb
a questo punto abbiamo tutto il necessario per iniziare . Per prima cosa apriamo il nostro nuovo file .py nel nostro editor preferito ed iniziamo con l’importare il modulo:
import MySQLdb
a questo punto non ci resta che creare una connessione con il DB:
conn = MySQLdb.connect (host = "localhost",
user = "testuser",
passwd = "testpass",
db = "test")
ora abbiamo un oggetto connessione che punta ad un database all’indirizzo “localhost” con utente “testuser” e password “testpassword” ed abbiamo chiesto di utilizzare il database “test”. Una volta ottenuta la connessione abbiamo bisogno di qualcosa che ci indichi sempre come e dove comunicare con il DB quindi creiamo un oggetto cursore:
cursor = conn.cursor()
Fatto questo ora possiamo iniziare ad interrogare il nostro DB lanciando delle query semplicemente lanciandole attraverso il metodo appropriato:
cursor.execute ("SELECT * FROM testtable")
dove estraiamo tutto il contenuto della tabella “testtable” all’interno del DB “test” per vedere il risultato della query abbiamo bisogno di prendercelo:
row = cursor.fetchone () print row
Quindi avremo stamapato a schermo il risultato dell’interrogazione. Gli statement sopra non sono ilmassimo dato che potremmo avere piu righe e piu colonne per ogni riga quindi sarebbe meglio ciclare, magari con un for, sul risultato e poi utilizzarlo come meglio crediamo.
Possiamo fare tutte le interrogazioni che vogliamo l’importante è lanciarle con il metodo “execute” l’importante è che al termine di tutte le nostre operazioni chiudiamo la connessione con il DB eseguendo un:
cursor.close() conn.close()
Sinceramente la chiusura del cursore al momento mi da errore ma non so non ho letto per bene la documentazione, quindi assicuratevi di chiudere almeno la connessione con il db. Questo e tutto non vi resta che mettervi e provare, per maggiori info potete visitare il sito del modulo su SourceForge.
Se invece volete usare il mio programmino, chiamato QSql potete scaricarlo dal link qui sotto. Ogni commento o critica è benvenuta, per qualsiasi chiarimento non vi resta che chiedere.
– Fine –
Post scritto con KBlogo
Dato che ogni tanto mi metto a provare qualche idea che mi viene i mente oggi mi sono messo a giocherellare un po con il mod_python [1], ma sul mio server non era configurato quindi, se a qualcuno puo servire, metto qui i semplici passi per configurarlo.
Per prima cosa bisogna installarlo, io uso una Debian quindi un semplice:
sudo apt-get install libapache2-mod-python
Non ci rsta che configurare Apache per interpretare i nostri file Python. Esistono 2 modi per farlo, fargli interpretare file python puri, .py per intenderci, oppure file Python Server Pages , .psp, che permettono di integrare codice python direttamente nell’HTML. Io ho scelto la seconda, non conosco i vantaggi e solo perche ricordavo di aver fatto questa in precedenza e quindi l’ho usata.
passiamo quindi alla configurazione di apache quindi apriamo il file di configurazione di default dei virtual host di Apache, la posizione varia in base alla distribuzione e dipende se avete altre configurazioni di virtual host, richiamando il file in questo modo:
vi /etc/apache2/sites-available/default
e aggiungo le linee che mancano alla vostra configurazione:
[...]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
## Queste linee abilitano l'interpretazione dei file .py
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
## fine
[...]
fatto questo salviamo e riavviamo il server Apache:
sudo /etc/init.d/apache2 restart
Ora bisogna testare se il tutto funziona, sempre che fino ad ora tutto sia andato liscio, lo facciamo creando due file, un semplice form in HTML, lo chiameremo test.html:
<html>
<head><title> Mod_python test form</title></head>
<body>
<form action=”form.py/processa” method=”POST”>
Inserisci il tuo nome:<br />
<input type=”text” name=”name”><br />
<input type=”submit”><br />
</form>
</body>
</html>
e un file python che processi i dati del form, lo chiameremo form.py:
def processa(req, name):
if not name:
return "Who are you?"
else:
return "Ciao %s!" % name
salviamo questi file nella directori radice di Apache, nel mio caso /var/www ed apriamo il nostro browser all’indirizzo, sempre nel mio caso, http://localhost/test.html apparirà un form molto semplice inserite il vostro nome o quello che vi pare e cliccate sul bottone. il risultato sara qualcosa tipo Ciao quellocheavetenserito. Se fino ad ora tutto non ha restituito errori ed ha funzionato allora potete iniziare a divertirvi a scriptare quanto volete, ma se invece qualcosa non funziona allora vi verrà segnalato.
Mod_python utilizza un oggetto request che possiamo utilizzare per processare i nostri dati alcune funzioni utili allo scopo possono essere req.write() e req.read() per scrivere e leggere sull’oggetto o si possono sollevare eccezzioni con apache.SERVER_ERROR. Questo dovrebbe essere tutto se avete problemi chiedete cerchero di rispondervi e chiarire i vostri dubbi.
– Fine –
Post scritto con KBlogo
Posto qui una semplicissima funzione per generare un colore unico in base ad una stringa data. l’algoritmo e semplicissimo e non c’e nulla di cosi elaborato anzi… Spero possa servire a qualcuno?!?!
function generateColor($string) {
// Number to generate
$length = 3;
// Start position in md5 string
$start = 0;
// Value to increment in md5 string
$inc = 10;
$color = array();
$possible = md5($string);
$i = 0;
while ($i < $length) {
$char = substr($possible, $start, $length-1);
//uncomment this to enable hex output
//$color[$i]= $char;
$color[$i]= hexdec($char);
$i++;
$start += $inc;
}
return $color;
}
– Fine –
Post scritto con KBlogo
Ieri mi e capitato di dover compilare un file Java sulla mia Linux Box e quando sono andato lì per farlo da riga di comando mi diceva di non trovare il file allora mi sono messo a girellare e veramente non avevo nulla. Ma come? Se fino all’altro ieri usavo Eclipse come mai oggi non funziona. Allora ho scoperto che installando Eclipse con apt-get si tira giù si il JDK, ma li mette chissà dove e chissà in quale modo, infatti cercando nella macchina si trova qualche classe nelle cartelle di Eclipse che ricorda i file nel /bin che si usano per complire, debuggare o documentare.
Poche chiacchiere mi sono scaricato il file del JDK, che trovate a questo indirizzo, e l’ho installato richiamando il file da linea di comando:
$ chmod +x jdk-6u11-linux-i586.bin
$ ./jdk-6u11-linux-i586.bin
Otteniamo un lungo output, in pratica e la licenza con cui viene distribuita la piattaforma:
This is where you agree to their license. Press the space bar to scroll down in “More”.
…
alla fine della licenza ci sarà una domanda a cui noi risponderemo di si, è qui che daremo conferma per l’installazione
Do you agree the the above license terms? [yes or no]
yes
A questo punto ancora un lungo output scorrerà sul nostro schermo, la procedura di installazione durerà un po, dipende tutto dalla vostra macchina. Appena finito troverete i vostri file in /usr/share/java, se non sarà lì, ma sarà nella directory dove avete salvato il file non preoccupatevi, copiatelo senza problemi.
Fatto questo non resta che dire al vostro sistema dove trovare i file delle classi, i binari, ecc. di java, per farlo aprite il file .bash_profile nella vostra home directory ed inserite quanto segue:
PATH=/usr/java/jdk1.6.0_11/bin:$PATH:$HOME/bin:./
export PATH
export JAVA_HOME=/usr/java/jdk1.6.0_11export CLASSPATH=/usr/java/jdk1.6.0_11/lib/tools.jar:/usr/java/jdk1.6.0_11/jre/lib/rt.jar:./
appena fatto salvate e chiudete il file, ora non ci resta che testare il tutto. Per farlo ciserviamo del classico programma che si impara quando si inizia ad apprendere e studiare un nuovo linguaggio, Hello World, io ovviamente lo modifico sempre mettendo Hello Giasone, ma voi fate un po come volete. Quindi aprite un editor di testi e incollate il questo codice:
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello Giasone");
}
}
salvate il file con il nome Hello.java e provate ad eseguirlo. In Java i file sorgenti vanno prima “compilati” per tradurli in bytecode eseguibile dalla VM, per far ciò dalla riga di comando:
$ javac Hello.java
Vedremo che nella cartella apparirà il file Hello.class, questo è il file eseguibile proviamo quindi ad eseguirlo:
$ java Hello
Ciao Giasone
Ecco allora che tutto funziona!!! Qindi non vi resta che iniziare a giocherellare con il vostro codice. Per grandi progetti vi consiglio di utilizzare ambienti IDE più complessi che vi offrono molte facility in più ed utilizzare questo metodo solo per piccoli file o progetti semplici. Non mi resta che augurarvi un buon lavoro e Enjoy your Java Console.
P.S. Tutto questo e stato testato su una Debian e con il JDK 6 di java ma dovrebbe valere anche per le altre distro, per quelle distibuzioni che supportano i pacchetti rpm esiste anche una versione del JDK con estensione rpm che non ho però provato.
– Fine –
Post scritto con KBlogo





QSql v 1.0




