domenica 30 agosto 2009

Warsow 0.5 released

Il mondo dei giochi open source è costellato di prodotti di nicchia con un gameplay particolari o esperimenti.


Warsow è sviluppato da un team che a potenziato il motore grafico di quake 2 e sviluppato un gioco dal gameplay originale. Ma non basta. Via via che si procede nelle release, seppure sempre in beta, aggiungono mappe, modalità, armi e migliorano costantemente movimenti e bilanciamento.

Questo processo unito a una community di tutto rispetto rende Warsow una perla veramente rara da non lasciarsi scappare.

Ecco il sito ufficiale da dove è possibile scaricare la nuova versione e partecipare al forum di discussione molto popolato: www.warsow.net

PS: da giocare fra un duel di quakelive e l'altro .

mercoledì 19 agosto 2009

Quake Live for Linux

Questo è sicuramente l'evento dell'estate. Quake Live sbarca con una puntualità svizzera su Gnu/Linux.
Facciamo un po' di chiarezza:
  1. Quake Live è uno sparattutto in prima persona praticamente solo multiplayer
  2. Quake Live ha un motore grafico che è un potenziamento del motore rilasciato sotto GPL di Quake 3 Arena
  3. Quake Live è completamente gratuito
  4. Quake Live si gioca direttamente dal browser scaricando solo:
    • un plug-in per firefox
    • i dati di gioco dal sito
È stato lanciato più di un anno fa su Windows (mannaggia mannaggia) e da ieri lo possono giocare sia gli utentu Mac che gli utenti Gnu/Linux.

Precipitatevi al sito http://www.quakelive.com e provatelo è gratis ;)

venerdì 7 agosto 2009

Meritato riposo

Sono arrivate le tanto sospirate ferie. Quest'anno io e la mia ragazzia puntiamo verso la Toscana.



Per questo il blog questa settimana, come capita da un pochino, non avrà aggiornamenti.

Ci vediamo il 17 agosto ;)

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! :)

sabato 1 agosto 2009

Utilizzo di Qt per i file

Siamo dunque giunti al primo di una serie di articoli che tratteranno le librerie Qt in maniera un po' più seria (e anche il primo articolo da dott. ihihih!!!).

Apriamo il nostro fidato Qt Creator e proviamo a interagire con un file, che potrebbe essere benissimo un file di configurazione o un file di sistema.

Per allenarci creeremo una funzione preso in input un file, una funzione per effettuare le modifiche a una stringa e una tabella hash (int,qstring) passata per puntatore, riempie la tabella con indice e stringa modificata dalla funzione.

Nel nostro caso la funzione di modifica della stringa sarà semplicemente prendere i primi x caratteri.
void parseString( void * str )
{
QString * objStr = (QString * ) str;

*objStr = (*objStr).left( CODE_LEN );
}

Quindi nella nostra funzione fillHashTable andiamo ad aprire e scorrere il file come segue:

1) Creiamo un oggetto di tipo QFile passandogli il path del file da aprire:
    QFile filePtr (file);


2) Creiamo uno stream di dati sul file in sola lettura e cicliamo fino a che non viene raggiunta la fine del file.
    QTextStream stream( &filePtr );
while( !stream.atEnd() )
{
line = stream.readLine();
}


Ora con la linea ottenuta possiamo fare quello che vogliamo. Nell'esempio cerchiamo i token separati dallo spazio e il primo token sarà il numero il secondo la stringa da formattare.

Ecco quindi l'intera funzione:
void fillHashTable( QString file , void(*parser) (void * str), QHash <int , QString> * tb )
{
QHash <int , QString> table;
QFile filePtr (file);
bool fin = false;

if( !filePtr.open(QIODevice::ReadOnly | QIODevice::Text) )
{
cout<<"ERRORE nell'apertura del file"<<endl;
exit( -2 );
}
table.clear();
QTextStream stream( &filePtr );
QString line, tok01 , tok02;
QStringList tokens;

while( !stream.atEnd() || !fin )
{
line = stream.readLine();
if( line == "" )
{
fin = true;
continue;
}

tokens = line.split( " " );
tok01 = tokens[0];
parseString( &tokens[1] );
tok02 = tokens[1];

table.insert( tok01.toInt() , tok02 );
}


filePtr.close();

*tb = table;
}


Si dovrà dunque scrivere un main che semplicemente stampa a console i valori inseriti nella tabella hash.
Importante: l'oggetto QHash appena creato ha già un elemento in posizione 0. Per questo va pulito con il metodo clear. In merito a questo, che per me è un difetto, sto cercando materiale ma per il momento non ho ancora trovato nulla.

Ecco infine il main creato per quest'esempio:
int main(int argc, char *argv[])
{
QHash <int , QString> table;
table.clear();
fillHashTable( "file.txt", parseString, &table );
cout<<"Stampa della hash di dimensione "<<table.size()<<endl;
for( int i = 0; i < table.size() ; i++ )
{
cout<<i<<" : "<<table[i].toStdString()<<endl;
}

return 0;
}


Per ora ho concluso. Buon divertimento con quest'esempio che può ovviamente essere adattato a molte situazioni.

È arrivato il nuovo computer!!!

Ebbene si. Dopo anni di servizio il mio HP Compaq nx7400 che mi ha accomapagnato in tutti i laboratori e nella stesura della tesi è andato in pensione.

La scelta è stata ardua ma alla fine abbiamo trovato il più degno sostituto:



ecco la scheda tecnica che si può leggere anche qui:


Marca: Asus
Modello: X71SL-7S002C
Processore: Intel Core 2 Duo P8400, 2.26 GHz, 3MB cache L2, FSB 1066 MHz
Memoria: 4Gb DDR2 (ho fatto mettere 2 moduli da 2GB)
Schermo: 17 pollici WXGA+ (1440 x 900) Asus Splendid - Glare Type
Scheda Video: NVIDIA GeForce 9300M GS, 512MB dedicati
Hard Disk: 320 GB SATA 5400 rpm
Drive Ottico: Masterizzatore DVD DL Super Multi
Porte: 1 x VGA D-Sub 15 pin, 4 x USB 2.0, 1 x HDMI, 1 x Kensington Lock, 1 x Uscita Cuffie, 1 x S/PDIF, 1 x jack Microfono, 1 x RJ-11, 1 x RJ-45, 1 x Express Card, Card Reader 8in1
Networking: WiFi 802.11a/b/g/n, Gigabit Ethernet LAN 10/100/1000, Bluetooth 2.0+EDR, Modem V.92/56Kb
Sistema Operativo: Gnu/Linux Ubuntu 9.04 (è stato immediatamente levato Windows Vista Premium che è in dotazione)
Batteria: Li-Ion 8 celle
Dimensioni: 410 x 298.5 x 38.4/41.7 mm
Peso: circa 3.5 Kg
Altro: Webcam 1.3MP, Tastierino numerico

A voi i commenti.