Visualizzazione post con etichetta Free Software. Mostra tutti i post
Visualizzazione post con etichetta Free Software. Mostra tutti i post

domenica 26 settembre 2010

SQLite - Il database da taschino

Avere il supporto di un database all'interno di un'applicazione aiuta ad immagazzinare i dati, a tenerli in ordine ed a consultarli con efficienza.

SQLite (http://www.sqlite.org/) è un database relazionale che sta all'interno delle applicazioni e permette di fare tutto ciò che solitamente richiederebbe una database tradizionale diviso in client e server (leggere MySQL, PostgreeSQL).

Per ora ho provato l'integrazione solo con due linguaggi, C++/Qt4 e Java.

In entrambi i casi i risultati sono stati ottimi e l'integrazione è stata rapidissima.

QT4
Qt4 mette a disposizione una libreria per interagire con il db. Ecco uno stralcio di codice che permette di misurare il tempo di esecuzione di due semplici query.

int main(int argc, char *argv[])
{

QTime t;
t.start();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");


db.setDatabaseName("qt.db");
db.open();

QSqlQuery * query = new QSqlQuery("insert into T1 values (1,'Insert from program.');",db);

int result = 1;
result = (query->exec()) ? 0 : -1;

query->prepare("SELECT * FROM T1;");
query->exec();

while(query->next())
{
QString line = query->value(0).toString() + ","+query->value(1).toString();
QString deb = "Linea trovata: " + line;
qDebug(deb.toStdString().c_str());

}


int elapsed = t.elapsed();

return elapsed;
}

Facendo girare il programma sul mio laptop il tempo di esecuzione è stato di 3 millisecondi. Un ottimo risultato direi.
Java
Ecco un piccolo esempio di codice Java che fa la stessa cosa.
public static void main(String[] args) throws SQLException {
try {
Class.forName("org.sqlite.JDBC");

Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stat = conn.createStatement();
stat.executeUpdate("insert into T1 values (1,'Insert from program.');");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}

Con il la parte di codice scritta in Java non ho eseguito dei test di performance ma ha garantito una portabilità incredibile visto che il file .jar contiene al suo interno la libreria per interagire con il database.

Questo è solo un primo articolo che vuole fornire lo spunto a tutti quelli che verranno. Spero di essere stato utile.

Alla prossima.

lunedì 12 luglio 2010

How to install Hping3 from source code

Nella mia nuova Slackbox mancava uno strumento che è oggetto di studio da parte di un corso universitario che seguo:

hping



Mi sono così procurato i sorgenti da http://www.hping.org/ e ho effettuato i soliti comandi:
./configure
make...

ecco che spunta un errore:
libpcap_stuff.c alla linea 61 non riesce a trovare una funzione che si trova nel sorgente net/bpf.h

Installo allora le librerie che vengono riportate in alcuni siti: http://www.tcpdump.org/ e più precisamente la libreria libpcap.

Queste librerie vengono installate facilmente eseguendo:
./configure
make
make install

Il file bpf.h viene però posizionato male.
Dando questi comandi è possibile vedere come il file di nostro interesse si trovi dentro pcap e che la cartella net non è stata creata per niente.
# cd /usr/local/include/
# cd pcap
# ls

Diamo allora i seguenti comandi:
# mkdir ../net
# cp *.h ../net/

Dopo di che posizioniamoci nella directory con i file sorgenti di Hping3 e diamo in sequenza:
./configure
make
make install

Il risultato sarà questo:
root@slackbox:~# hping3
hping3>



Buon divertimento con Hping3.

martedì 4 maggio 2010

Ubuntu 10.04 prime impressioni

Ho installato Ubuntu 10.04 (mannaggia non mi ricordo mai i nomi in codice delle varie release...) per processori a 64bit e mi trovo davanti a una Ubuntu box installata di fresco.

Dopo 3 upgrade di versione ho preso la decisione di installare questa LTS da zero per avere il nuovo file system ext4 e vedere come va.
Ecco quindi le primissime impressioni di questa release:
  1. Il primo punto va sicuramente dedicato all'interfaccia grafica che è stata decisamente rinnovata e trova in questo rilascio una maturità che fin'ora era mancata. La discutibile scelta di mettere i pulsanti di gestione della finestra sulla sinistra della barra del titolo ha trovato una pronta spiegazione oggi. Sia che il tema scuro che il tema chiaro (molto OSX) danno uno stile moderno e distinto.
  2. È vero non c'è più gimp, il messenger predefinito è empathy ecc ecc ecc ma io le trovo tutte scelte condivisibili e ragionevoli. Gimp si fa in un attimo a installare e Empathy trovo che sia un client buono, da esplorare, ma che mi ha già dato parecchie soddisfazioni.
  3. La velocità complessiva del sistema mi sembra incrementata. L'unica cosa che pesa leggermente di più sulle prestazioni è Compiz. Con Compiz attivo le applicazioni che fanno uso intensivo della scheda grafica, come giochi e grafica 3d, ne risentono e tendono a scattare.
Parliamo invece dell'aria che si respira. Social, Cloud e Web sembrano le tre parole che hanno dettato la stesura di questa release. Oltre allo spostamento dei pulsanti di controllo si trovano di default e facilmente configurabili tutti gli strumenti per instant messaging. Empathy permette di comunicare con tutti i principali canali, da msn a facebook. Gwibber permette di aggiornare i propri contatti di social networking. Evolution da alle mail una nuova veste e rende calendario, mail e contatti integrati perfettamente all'interno del sistema. A tutto questo si unisce il servizio Ubuntu One, che già era presente nella versione 9.10, che garantisce quel tocco di cloud proprio di questi tempi.

Un'unica raccomandazione quindi: Get Ubuntu!

domenica 18 aprile 2010

Debian tricolore

Questa è una notizia che non può fare altro che inorgogliosirci:
Stefano Zacchiroli è stato eletto come Debian Project Leader.

È possibile consultare la sua pagina personale a questo indirizzo.

Ne tesse le lodi anche il Project Leader uscente, Steve McIntyre, che dichiara: "I've had a great time working for Debian as DPL and I'm more than happy to be handing over the reigns to Stefano. He has excellent ideas and should do a good job for us.".

Dall'articolo ufficiale emerge anche che Stefano è stato scelto fra un gruppo di candidati tra cui figura anche una donna: Margarita Manterola.

Chissà che un domani non ci sia una leadeship rosa per il progetto Debian.

martedì 9 marzo 2010

wait() in Go, How to?

Stamattina sono stato colto da un dubbio che ha fortunatamente trovato una risposta nella ricchissima mailing list di go-language: http://groups.google.com/group/golang-nuts?pli=1

La domanda che mi sono posto è la seguente: esiste un modo intelligente per aspettare che tutte le go routines abbiano finito la loro esecuzione prima di procedere alla chiusura della funzione main?

Stamattina, come al solito, apro le mail e trovo la seguente discussione.

Subito arrivano alcune risposte come ad esempio:
The standard practice in Go seems to be for goroutines to pass to a
channel so signal their end. For example:

package main

func routine(quit chan int) {
// do stuff
quit <- 1

}

func main() {
routineQuit := make(chan int)
go routine(routineQuit)

<-routineQuit // blocks until quit is written to

}

-Daniel

Ma poi arriva questo link che vi invito caldamente a seguire se siete interessati all'argomento come lo sono io perchè lo spiega in modo molto chiaro: link.

A breve altri approfondimenti.
Buon Go a tutti!

mercoledì 11 novembre 2009

Let's GO

Il mio aggregatore di notizie mi vomita tonnellate di news ogni giorno in una pagina dal design minimale (GOOGLE RULEZ).
Oggi però, proprio parlando di Google, mi è saltato all'occhio un trafiletto veramente interessante:

Have you heard about Go? We released a new, experimental systems programming language today. It is open source and we're excited about sharing it with the development community. For more information, check out the Google Open Source blog.

By Robert Griesemer, Rob Pike, Ken Thompson, Ian Taylor, Russ Cox, Jini Kim and Adam Langley - The Go Team


Allora mi sono precipitato sul sito ufficiale: http://golang.org e ho scoperto che è un linguaggio di sistema dinamico come python ma che si compila e ha una velocità di esecuzione come C/C++.
In pratica ora non resta che prendersi i tutorial e cercare di capire che cosa ci ha nascosto mamma Google per tutto questo tempo...

È ora di tuffarsi in un nuovo linguaggio tutto da imparare...

sabato 26 settembre 2009

Linux Day 2009, -1 mese

Comincio con lo scusarmi per un lungo periodi di silenzio ma sto preparando un articolino particolarmente interessante, che se funzionerà porterà ad altri interessanti articolini, oltre all'arrivo di un BlackBerry che implora di essere utilizzato per lo sviluppo.

Anche quest'anno si terrà il Linux Day il 24 ottobre. Il Linux Day è l'occasione per tutti i membri della comunità Gnu/Linux di far conoscere al mondo le potenzialità dell'open source. Si terranno iniziative portate avanti dai vari LUG in tutt'Italia e io sarò presente al Linux Day di Lucca per seguire tutto quello che hanno preparato nella cornice di Capannori i ragazzi del LuccaLUG.

Buon divertimento a tutti!!!

sabato 5 settembre 2009

Fedora 11 sul mio pc

La mia scheda di rete, o il mio router, devo ancora capirlo, mi ha sempre dato problemi con ubuntu.

Ho provato molte strade ma nessuna ha portato frutti quindi ho provato a installare Fedora 11 che aggiorna il kernel a una versiona più recente.

Ora vedremo come si comporterà nei prossimi riavvii. Il problema infatti sorge mano a mano che si va avanti.

lunedì 3 agosto 2009

Firefox oltre un miliardo di volte

Lo so, lo so. In questi giorni sono usciti diversi articoli che riportano questa notizia.

Il fatto è che proprio non posso fare a meno di riportare questo evento anche sul mio blog. Sono proprio contento di questo traguardo raggiunto da Mozilla Firefox.

Io uso sempre questo browser ed effettivamente non mi fiderei a circolare su iternet altrimenti.
So che i suoi bug ce li ha anche il pandino ma mi sembra quasi uno scudo impenetrabile rispetto alla concorrenza. (Ok ok, parlatemi pure di Opera ma io mi tengo Firefox).

Per non parlare della miriade di plug-in che praticamente rendono Firefox il coltellino svizzero del terzo millennio.

Continuate cosi! :)

lunedì 6 luglio 2009

Arena Live

Non c'è che dire, bisogna fare veramente i complimenti a questi ragazzi che hanno fatto un lavorone.



Esisteva già Open Arena, un gioco free basato sull'engine di Quake 3 Arena. Ma ora hanno fatto di più: Arena Live. Questo gioco si propone di essere l'alternativa free al nuovo gioco di casa id, di prossimo arrivo su Gnu/Linux, Quake Live.

L'ho provato ed il gioco è abbastanza giocabile, ma il peso di tale novità è grande. Un segnale alla casa: "ID, datti una mossa che qui se no ci si organizza altrimenti!".

Dopo il 20, giorno della laurea tanto sudata, mi ci troverete ogni tanto. Nel frattempo, buon divertimento!

mercoledì 10 giugno 2009

Linux 2.6.30 is out

Linus comincia la sua solita mail di annuncio parandosi già da eventuali bug che la 2.6.30 potrebbe avere, ma un dato è certo:

abbiamo fra le mani il nuovo kernel che contiene una discreta quantità di succose novità.



As mentioned last week, -rc8 was the last -rc, and there really isn't any
point in delaying the real release any more.

I'm sure we've missed something, and I know we have some regressions
pending. At the same time, we do need the coverage of a eral release, and
on the whole it looks pretty good. We've fixed a few regressions in the
last few days, and there's always 2.6.30.x.


La cosa che mi ha colpito per prima e della quale do subito il link sono i filesystems.

Un link tutto da leggere e da gustare!

domenica 31 maggio 2009

Disegnare 2d con Qt4

Facciamo una piccola divagazione rispetto alla gestione dei Todo.
Con le Qt è molto semplice anche disegnare in 2D.


Per disegnare una linea o un cerchio come quelli appena mostrati il procedimento è molto semplice.

Cominciamo con il mostrare per intero il codice:
void MainWindow::paintEvent(QPaintEvent * event)
{
QPainter painter( this );
painter.setPen(QColor(255,0,0));
painter.drawLine(QPointF(0,0),QPointF(50,50));
QRectF rect (60,60,100,100);
QPainterPath path (QPointF(100,100));

path.addEllipse(rect);
painter.fillPath(path,QColor(0,255,0));
}


Per prima cosa va fatto l'override del metodo paintEvent() proprio dei widget.

painter.setPen(QColor(255,0,0));
painter.drawLine(QPointF(0,0),QPointF(50,50));

Con queste due semplici linee di codice è molto semplice disegnare e definire anche la formattazione.
Per riempire invece un tondo bisogna creare un QPainterPath, ovvero un insieme di primitive di disegno da disegnare tutte insieme.
Queste semplici istruzioni sono ovviamente utilizzabili ovunque e il metodo paintEvent è reimplementabile in ogni componente per poterne definire lo stile di disegno.

Buon divertimento :)

martedì 12 maggio 2009

Mozilla Prism 1.0 beta

L'avevo già presentato un po' di tempo fa sempre su questo blog.

Si tratta di un programma che consente di utilizzare le applicazioni web come applicazioni studiate per il desktop.

Ora Prism è giunto alla versione 1.0 beta e bisogna assolutamente testarne le novità e soprattutto il modo innovativo di utilizzare le web application.

Ecco il post dell'annuncio: link.

lunedì 11 maggio 2009

Laboratorio Programmazione di Rete Open

Oggi è stato completato l'esame di Laboratorio di Programmazione di rete.

Pubblichiamo quindi il codice che è già presente su internet dall'inizio del progetto.
E' possibile quindi scaricarlo, testarlo e utilizzarne il codice.

Se individuate dei problemi potete sempre inserire una "issue" nel pannello delle segnalazioni, ne saremo veramente grati.

Cliccate qui per andare al sito "ufficiale" del progetto.

sabato 18 aprile 2009

Google App Engine Java Support

La notizia non è fresca fresca, anche se sono passati solo pochi giorni, ma ora sarà possibile scrivere applicazioni web sulla "piattaforma" App Engine di google anche con il linguaggio Java™.

Sul blog ufficiale ecco come comincia l'annuncio:
Today, we're very excited to announce the availability of a new programming language for Google App Engine. Please welcome the Java runtime!

Gli articoli su questo nuovo arrivato nel mondo App Engine non si fermano e Google afferma addirittura che:
...we're expanding the early look signups to 25,000 developers...

L'intero intervento si trova a questo indirizzo.

Il piatto sembra veramente gustoso, come d'altronde lo era già quando App Engine supportava solo Python.

Anche in questo caso Google ci ha semplificato molto la vita fornendo, SDK, Plug-in per Eclipse, Emulatore offline e tanta documentazione.

Possiamo vedere quanto è semplice creare un applicazione di Guestbook, questa volta in Java, nel video che si trova sul sito ufficiale:



Mi sono già venute in mente un paio di ideuzze per vedere di cosa è capace questo strumento.

Buon coding a tutti ;)

sabato 28 marzo 2009

Venditori Ubuntu

Sono un accanito lettore della newsletter italiana di Gnu/Linux Ubuntu.



Nel numero 12 della newsletter, raggiungibile a questo indirizzo, mi ha colpito una notizia in particolare:

Avviato il Progetto Venditori Ubuntu


L'idea è quella di creare una lista dei produttori e rivenditori di pc con sopra installato Ubuntu.

Un progetto veramente interessante che offre un servizio comodo per chi vuole comperare un cd e vuole essere libero di scegliere Gnu/Linux come sistema operativo del proprio computer.

Ubuntu 9.04 Countdown.

A fine aprile uscirà la nuova versione di Ubuntu: 9.04

Come sempre ci prepariamo alla nuova uscita con il countdown sulla destra!!!

Dai ragazzi che mancano solo 26 giorni!

sabato 14 marzo 2009

Primo programma Qt - Convertitore

Avete scaricato Qt Creator di cui ho parlato nello scorso post?
Se no, MOLTO MALE!!!! Correte a scaricarlo immediatamente.

Se si, M O L T O B E N E!
Possiamo cominciare a vedere come funziona e come è facile creare programmini utili (o anche meno utili).

Oggi proveremo a creare un convertitore lira-euro, oramai non più utile ma che può essere molto utile per imparare qualche nozione di base su librerie grafiche.

Bene apriamo l'IDE e creaimo un nuovo progetto ( File->New->Qt4GuiApplication ) e chiamiamolo Convertitore e la classe di grafica MainWindow.

Automaticamente il nostro IDE avrà creato 4 file come in questa figura:


Ora creaimo i seguenti controlli:
  1. una label text con object name "valuta" e il testo (si cambia cliccandoci sopra due volte) "Lira";
  2. un push button con object name "ok_bt" e il testo "Converti";
  3. un line edit con object name "line" e nessun testo al suo interno.
Rinominiamo anche il testo della finestra in "Convertitore Lira-Euro".

Otteniamo in questo modo una finestra che assomiglia a questa:


Ora dobbiamo aggiungere la logica del programma all'interno dei file "mainwindow.h" e "mainwindow.cpp".

Apriamo il file mainwindow.h e fra gli attributi pubblici e privati inseriamo le seguenti linee:

void on_ok_bt_clicked();


L'IDE automaticamente collegherà questa funzione alla pressione del tasto "Converti" dell'interfaccia, l'importante è che abbia lo stesso nome "void on__clicked();"

Ora scriviamo il corpo del metodo nel file C++:

void MainWindow::on_ok_bt_clicked()
{

QString money = ui->valuta->text();

if(money == "Lira")
{
//Convertiamo le lire in euro
QString line = ui->line->text();

float numero = line.toFloat();
numero = numero / 1936.27;

QString a = QString::number(numero);

ui->line->setText(a);
ui->valuta->setText("Euro");
}
else
{
//Convertiamo gli euro in lire
QString line = ui->line->text();

float numero = line.toFloat();
numero = numero * 1936.27;

QString a = QString::number(numero);

ui->line->setText(a);
ui->valuta->setText("Lira");
}


}


Dobbiamo per forza usare gli oggetti QString che ci mette a disposizione Qt per prendere i dati dai controlli e reinserire i risultati.

Clicchiamo su e "come per magia" comparirà il nostro convertitore in tutto il suo splendore:



Questo è il punto di partenza per una marea di terre inseplorate. Diamo pure sfogo alla nostra fantasia.

domenica 15 febbraio 2009

Rilasciata Debian 5.0

Gli sviluppatori di Debian vogliono augurare buon S. Valentino a tutti e lo fanno con una nuova release.

14 Febbraio 2009

Il Progetto Debian è lieto di annunciare il rilascio ufficiale di Debian GNU/Linux versione 5.0 (nome in codice "lenny"), dopo 22 mesi di sviluppo costante. Debian GNU/Linux è un sistema operativo libero che supporta un totale di dodici architetture di processori e include gli ambienti desktop KDE, GNOME, Xfce e LXDE...

questo è solo l'inizio dell'articolo con il quale gli sviluppatori hanno annunciato la nuova release.

Il mio pensiero va anche a
Thiemo Seufer, uno sviluppatore Debian deceduto il 26 dicembre 2008 in un tragico incidente d'auto. Thiemo era coinvolto in Debian in molti modi: provvedeva alla manutenzione di numerosi pacchetti ed era il sostenitore principale del port di Debian verso le architetture MIPS. Era inoltre un membro del nostro gruppo del kernel, così come del gruppo dell'installatore Debian. I suoi contributi vanno oltre il progetto Debian: ha anche lavorato sul port MIPS del kernel di Linux, sull'emulazione MIPS di qemu e a molti altri progetti minori, troppi per essere menzionati qui.
come si può leggere nel solito articolo alla voce "Dedica".

Ora non ci resta che scaricarla e provare con mano le novità.

domenica 11 gennaio 2009

Poker TH 0.6.3

Solo recentemente mi è capitato sotto mano questo gioco, open source e veramente entusiasmante.

Poker TH permette, a 7 giocatori su internet o a un giocatore umano contro 6 giocatori controllati dal computer, di giocare alla versione Texana del poker che sta spopolando anche in italia conosciuta col nome di Texas hold'em.

Il gioco è molto curato, sia nella parte grafica, che nella parte audio e cattura subito il giocatore scatenando la letale sindrome del "ancora un'ultima poi stacco".

La roadmap, reperibile sul sito ufficiale, mette veramente l'acquolina in bocca visto che si parla di online ranking e supporto a 10 giocatori, ora purtroppo limitato a 7.

Insomma, direi che è giunto il momento di cominciare un bel torneino online, e pensare che il poker non mi era mai piaciuto più di tanto.