lunedì 23 marzo 2009

Windows XP su QEMU: Avvio ed Ottimizzazione

Finalmente riesco a scrivere qualcosa riguardo QEMU.
Come già detto, ho installato windows xp come immagine di qemu.
Il passo successivo è quello di avviare la macchina con interfaccia di rete abilitata:
Il comodo metodo di default è :

> shatsar@erakis:~$ qemu -hda xp.img -boot c -m 512 -localtime -net nic -net user

In questo modo crea un'interfaccia di rete con una configurazione basilare (con dhcp e nat) per far uscire la macchina virtuale su internet.

Se (per caso) ci fossero problemi con versioni trial/attivazioni, c'è la possibilità di passare un ulteriore parametro (startdate) per far credere alla macchina virtuale di essere in altre "coordinate temporali":

> shatsar@erakis:~$ qemu -hda xp.img -boot c -m 512 -localtime -startdate 2009-03-03T10:01:21 -net nic -net user

Magari il tempo di acquistare una licenza o trovare il crack, ma io questo non l'ho detto, sia chiaro..

== Ottimizzazioni
Avendo poco spazio su disco e poca ram bisogna lavorare un po' sull'ottimizzazione, contando che questa macchina verrà usata solo per task ridotti (se volete usarla di più dovrete darle in pasto ben più di 2.5GB e 512m di ram), ecco quello che ho fatto:
tasto destro su risorse del computer --> proprietà --> avanzate --> prestazioni (Impostazioni)
* effetti visivi: su "Regola in modo da avere prestazioni migliori"
* page file: di default viene istanziato come il 150% della RAM.. se vi sembra che dare un range da 768MB a 1.5GB al file di paging su 2.5GB totali di disco sia quantomeno limitante, dalla scheda avanzate si può cambiare l'impostazione della memoria virtuale scendendo a valori ragionevoli
* disinstallare le applicazioni inutili: da pannello di controllo --> installazione applicazioni --> installazione componenti di windows ho tolto tutto tranne explorer (che poi, in realtà, per alcuni componenti, quello che si va a togliere è solo il link nel menù start..)
* ho tolto l'impostazione di esplora risorse che "Cerca automaticamente cartelle e stampanti di rete" da strumenti --> opzioni --> visualizzazione.
* ho tolto l'immagine di sfondo
* già che c'ero ho fatto anche un bel defrag..

Non ho voluto apportare troppe modifiche all'installazione attuale, quindi niente software esterni per ottimizzazione/caching nè ho eliminato i font..

domenica 22 marzo 2009

TeXlipse

Chi mi conosce da tempo sa che uso spesso LaTeX; l'ho usato per scrivere diversi documenti e anche qualche presentazione. Avevo iniziato anche a scrivere qualcosa su LaTeX per ArabianFenix, tra l'altro..e tutt'ora lo uso per diverse cose: per esempio, stanco del modello europeo, sto scrivendo anche il Curriculum Vitae in LaTeX..

Inoltre, il fatto che il sorgente sia in forma di file di testo, mi permette un versionamento ottimale, con un diff sensato ed utilizzabile, cosa che, ovviamente, decade con formati binari quali odt e doc. Per questo motivo è in LaTeX sia la documentazione dei miei progetti opensource (che sto tralasciando da un po', ma riprendo tutto tra un paio mesi) che la mia tesi specialistica (che ormai è praticamente finita) che è poi sotto repository subversion locale.

Ho sempre scritto documenti latex con vi per poi compilare con script shell (per il semplice fatto che per gestire bene i riferimenti interni, bisogna compilare più di una volta). Per un breve periodo avevo usato altri editor. Alcuni erano un po' troppo visuali per i miei gusti, mentre kile, in assoluto il mio preferito, semplicemente è scritto con le QT, mentre io uso Gnome, quindi diventava un po' lento.. convincendomi a tornare a vi.

Comunque, dovendo già usare eclipse per il codice su cui ruota la mia discussione, ho provato a cercare una plugin per latex: ed è così che ho trovato TeXlipse, uno strumento che mi sta agevolando parecchio il lavoro di scrittura della tesi.

Ora, con questa plugin di eclipse, è tutto molto più rapido: ho impostato texlipse in modo da compilarmi ad ogni modifica i sorgenti .tex e di dare in output in formato pdf.

Un'altra caratteristica che mi sta aiutando parecchio, oltre, ovviamente, al fatto che mi segnala subito gli eventuali errori nelle direttive latex, è il partial building:
per esempio, avendo un .tex "master" che include tutti i capitoli (con la direttiva \include), quando sto lavorando massicciamente su un capitolo, non ha senso che mi ricompili tutto.. per cui attivando la compilazione parziale, texclipse mi crea un file .tex temporaneo che ha la struttura del mio documento master, ma include solamente il capitolo su cui sto lavorando.

E, come si sa, gestire un file più piccolo ha sempre i suoi vantaggi..

martedì 17 marzo 2009

[HOWTO] PL/SQL: cursore dinamico (con parametro)

Dato che in rete non avevo trovato nulla di veramente chiarificatore a riguardo, posto qualche riga di PL/SQL su come ho risolto il problema di fare un cursore dinamico. Il codice seguente ovviamente è una versione semplificata di quello che ho scritto realmente, ma è giusto per far capire il concetto..

visto che non è possibile dichiarare un cursore senza inizializzarlo, ho creato due cursori nel seguente modo:

CREATE OR REPLACE FUNCTION calcolaQualcosa RETURN NUMBER IS
  cursor categorie is select categoria from catalogo where;
  cursor prodotti(p_param varchar2) is select distinct prodotto from prodotti where categoria = p_param;
BEGIN
...


e all'interno del codice si usa semplicemente così::

for i in categorie loop
  for j in prodotti(i.categoria) loop
    dbms_output.put_line('Categoria: ' || i.categoria || 'Prodotto: ' || j.prodotto);
  end loop;
end loop;

mercoledì 11 marzo 2009

[HOWTO] Installare Trac su Fedora Core 8

Sto preparando un ambiente di sviluppo su un server di un cliente, una macchina Fedora Core 8.
Premesso che il repository svn è già installato (in locale), installo anche trac che, secondo me, è uno strumento davvero importante..


[root@server ~]# yum install trac
[root@server ~]# trac-admin /usr/local/trac initenv
.. segue configurazione rapida con il wizard (inserire correttamente il path del repository)..
[root@server ~]# yum install mod_python
[root@server ~]# vim /etc/httpd/conf/httpd.conf


dove, in fondo, ho aggiunto:


<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /usr/local/trac
PythonOption TracUriRoot /trac
</Location>


Ora bisogna impostare i diritti sulla cartella del trac in modo da dare i permessi in scrittura al server apache:


[root@server ~]# cd /usr/local/trac/
[root@server trac]# chgrp -R apache db/
[root@server trac]# chmod 774 -R db/

(oppure chown al posto di chgrp e niente chmod.. va a gusti, credo)

Per attivare l'autenticazione di default, cioè a livello di httpd (che non è un granchè, ma può bastare in questo caso), dentro /etc/httpd/conf/httpd.conf, ho aggiunto le righe:


<Location /trac/login>
AuthType Basic
AuthName ".."
AuthUserFile /usr/local/trac/.htpasswd
Require valid-user
</Location>


Ora creiamo il file di password:

[root@server trac]# htpasswd -c /usr/local/trac/.htpasswd michele
New password:
Re-type new password:
Adding password for user michele
[root@server trac]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@server trac]#



fatto.. rapido ed indolore.. la prima volta che avevo installato trac (parlo di almeno 3 anni fa) era stato decisamente più problematico..

domenica 8 marzo 2009

Va bene scrivere libri, ma bisogna anche saper distribuirli..

Piccola nota polemica verso il libro Producing Open Source.. o meglio, verso chi ha deciso come distribuirlo..
Infatti dopo aver letto i commenti positivi espressi su Coding Horror ho deciso di leggerlo.

Prima una digressione:
Da tempo ormai il poco che riesco a leggere è in forma di file chm decompilato da visualizzare splendidamente sullo smartphone durante i miei allegri spostamenti da pendolare.

Il motivo è che il formato pdf è scomodo. Infatti è vero che esiste il formato tagged pdf, per permettere il reflow (aumentando lo zoom la riga va a capo), ma i visualizzatori che li supportano sono a pagamento oppure non sono compatibili col mio smartphone. Per cui il dover continuare a fare lo scroll orizzontale per leggere la riga, poi tornare indietro per la riga successiva mi avrebbe fatto passare la voglia di leggere qualunque cosa.

La soluzione mi è venuta in mente quando avevo tra le mani un file in formato chm che mi interessava. Dopo aver cercato un viewer, ho pensato di affrontare il problema da un altro punto di vista: decompiliamolo.

Quindi ho apt-get installato arCHMage e ho iniziato a decompilare i chm, mettendo poi le cartelle contenenti i file html direttamente sullo smartphone. Si vedono bene, nel senso che si riesce a fare uno zoom adeguato e la riga va a capo per cui c'è da fare solo lo scroll verticale di tanto in tanto.

Da quando ho iniziato a sfruttare in questo modo il tempo perso sui mezzi pubblici ho sofferto meno l'infelice decisione di prendere questo smartphone..

Comunque il libro in questione (Producing Open Source Software) è disponibile gratuitamente in queste modalità:
* paginona singola online (credo che mi bloccherebbe lo smartphone per 10 minuti circa per caricarlo)
* multi-pagine online (perfetto, quello che voglio, c'è anche un archivio da scaricare con queste pagine?)
* pdf
* formato RocketBook (ho dovuto cercare in rete per capire che era un antenato del kindle)
* oppure tar.gz da 11MB con dentro pdf, sorgenti docbook, file per rocketbook, html singolo e html multi-pagina il tutto in 20 lingue diverse .. e per fortuna che non ho voluto lo zip, che supera 20MB ..

eh cazzo, avrei fatto prima a fare un download automatico con wget ..

Per altro ho dovuto modificare il css, che creava dei margini di 130px a destra e 130px a sinistra.. per uno schermo di 320px di larghezza non era proprio ottimale..