Visualizzazione post con etichetta howto. Mostra tutti i post
Visualizzazione post con etichetta howto. Mostra tutti i post

lunedì 9 novembre 2009

[HOWTO] Trac AccountManagerPlugin

I've just installed AccountManager Trac plugin in one of my trac instances (in this howto i will name it "xyz").


repo:/tmp# svn co http://trac-hacks.org/svn/accountmanagerplugin/0.11 .
repo:/tmp# cd 0.11
repo:/tmp/0.11# python setup.py bdist_egg
repo:/tmp/0.11# cd dist/
repo:/tmp/0.11/dist# mv TracAccountManager-*.egg /path/to/trac/xyz/plugins/


In xyz/conf/trac.ini i have added:


[components]
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.web_ui.RegistrationModule = disabled
acct_mgr.web_ui.emailverificationmodule = disabled
acct_mgr.htfile.HtPasswdStore = enabled

[account-manager]
password_store = HtPasswdStore
password_file = /path/to/trac/xyz/conf/trac.htpasswd


Then i had to edit my apache httpd configuration. On this server i run several trac instances (with the TracEnvParentDir set to /path/to/trac/ ) so my login configuration was:


<Location "/trac/*/login">
    AuthType Basic
    AuthName "Login"
    AuthUserFile /etc/httpd/conf/htpasswd
    Require valid-user
</Location>


Then it became:


<Location ~ /trac/(?!xyz)*/login">
    AuthType Basic
    AuthName "Login"
    AuthUserFile /etc/httpd/conf/htpasswd
    Require valid-user
</Location>


Adding that regex, now i exclude from this directive the path /trac/xyz/login.
Consequently the form login (handled by the AccountManagementPlugin) is only available in xyz instance (with a reserved password file), while the others (including future ones) will use the apache basic authentication.

martedì 21 luglio 2009

Disabilitare il lookup degli host in resolv.conf

Mi è capitato spesso di vedere dei server che rispondono alla richiesta di una connessione dopo alcuni secondi. Questo delay è dovuto alla risoluzione da parte del server del nome dell'host che ha richiesto la connessione. Raramente il pc client ha un nome associato (per esempio in reti interne in dhcp) per cui ci sono volte in cui questo delay fa davvero incazzare..

Normalmente basta associare all'ip corrente del client un nome in /etc/hosts, ma spesso non vale la pena riempire questo file con varie entry in caso di dhcp selvaggio.

Ultimamente avevo affrontato il problema per ssh, impostando a No il flag "UseDns" in /etc/ssh/sshd_config. Questo snelliva le connessioni ssh, lasciando però il delay, per esempio, nelle connessioni postgreSQL.

Quindi ho scoperto che questo si può migliorare agendo sul file resolv.conf.

In /etc/resolv.conf si possono mettere un sacco di impostazioni avanzate (vedere la sezione options del man), in particolare il flag che mi sta facendo risparmiare un sacco di tempo è no-check-names

martedì 7 luglio 2009

[HOWTO] mvn eclipse:eclipse su progetti j2ee

Torno attivo sul blog dopo un periodo offline (dovuto ad una grandissima mole di lavoro, soprattutto per la startup di cui ormai sono parte integrante) con un brevissimo post con un tip utile per chi vuole usare maven ed eclipse:

normalmente (per progetti Java) la plugin di maven per eclipse funziona splendidamente, anche in presenza di diversi moduli, per i quali crea le dipendenze tra progetti eclipse. Per risolvere il problema della configurazione dei progetti WTP, dopo aver impostato il packaging a war, il modo per far generare correttamente i file di progetto di eclipse è di aggiungere le seguenti righe al pom, nella sezione plugins


<plugin>
  <artifactId>maven-eclipse-plugin</artifactId>
  <version>2.7</version>
  <configuration>
    <wtpversion>2.0</wtpversion>
  </configuration>
</plugin>

martedì 19 maggio 2009

[HOWTO] Immagini con testo dinamico in PHP con GD

Ormai i miei pochi lettori avranno capito che passo da un argomento all'altro senza alcuna logica, ma salto da una tematica all'altra in base ai vari progetti che seguo contemporaneamente (che senso avrebbe lavorare in partita iva per una sola azienda?) oppure in base a miei interessi o mie ricerche personali.

In questo caso si tratta di lavoro: fare un'immagine di sfondo con un testo configurabile che viene scritto in una certa area. In PHP

Pensavo fosse una cosa complessa.. invece l'ho preparato in 5 minuti:

<?php
// Imposto l'header http
header("Content-type: image/png");

// carico lo sfondo
$im = ImageCreateFromPng('sfondo1.png');

// trovo l'indice del bianco nella palette
// (il colore della scritta)
$white = imagecolorexact($im, 255, 255, 255);

// imposto il font (questo è il path dei font di magento,
// ma è possibile mettere un ttf a scelta)
$font_file='./lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf';

// testo esemplificativo (poi sarà valorizzato in base a query
// o a input dell'utente)
$msg_text = "Hello World\nCome va?";

// posizione da cui parto a scrivere
$x=50;
$y=50;

// passo tutto alla funzione imagefttext con 12pt di grandezza font e
// angolo 0 (normale da sx a dx)
imagefttext($im,12,0, $x, $y, $white, $font_file, $msg_text);

// invio la png risultante
ImagePNG($im);

// libero la risorsa
ImageDestroy($im);
?>


That's all folks

mercoledì 29 aprile 2009

[HOWTO] Installare kqemu su debian

Visto che in un post precedente avevo accennato a module-assistant, dedico un rapido post al suo utilizzo per installare kqemu.

kqemu è il modulo del kernel necessario per avere prestazioni migliori usando qemu.
Installarlo con module-assistant è rapidissimo:


erakis:~# m-a prepare
erakis:~# m-a clean,get,build kqemu
erakis:~# m-a install kqemu


Il primo comando prepara il pc alla compilazione (installando build-essential, i kernel headers etc etc..). Il secondo prima fa pulizia da eventuali compilazioni precedenti, poi scarica i sorgenti di kqemu e li compila, creando il .deb per il pc in questione. Infine lo si installa.. meglio di così..

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 22 febbraio 2009

[HOWTO] usare un vecchio pc come postazione internet

Un anno fa, dopo più di tre anni di onorato servizio, ho dovuto cambiare portatile. Il vecchio notebook, un fujitsu-siemens amilo m7400, in realtà funziona ancora bene, se non fosse che non si riesce praticamente più a chiudere.
Infatti a novembre 2007 ha ceduto un qualche pezzo interno che collegava la staffa sinistra dello schermo alla scocca, per cui il movimento di apertura e chiusura fa leva sui punti sbagliati.. il risultato è il seguente:





Tempo fa avevo deciso di rimetterlo in piedi mettendo fluxbox come window manager. In seguito avevo apportato altre modifiche alla configurazione, per arrivare a quella attuale:

= Configurazione e software più usati
* debian
* fluxbox
* gdm
* firefox
* tilda
* ssh, vncviewer

= gdm: autologin
Ho disinstallato xdm e messo gdm, perchè gdm prevede già la possibilità di abilitare l'autologin. Quindi all'avvio di gdm ho lanciato la configurazione (cliccando su actions --> configura ) e nella finestra del gdmsetup, nel tab Sicurezza, ho selezionato "abilita accesso automatico" e ho messo il mio utente

= fluxbox: autostart
Ho messo in autostart firefox e tilda, in modo da avere il browser a tutto schermo aperto subito appena loggato e la disponibilità di una console "a scomparsa" sempre a portata di mano (l'ho configurato per attivarsi alla pressione di F1)



shatsar@alrami:~$ cat .fluxbox/startup | tail -n 8
firefox &
tilda &
# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.

exec /usr/bin/fluxbox
# or if you want to keep a log:
# exec /usr/bin/fluxbox -log "/home/shatsar/.fluxbox/log"


= fine
In questo modo mi trovo con un pc vecchio ancora utilizzabile, rapido nell'accensione (una configurazione ridotta all'osso, praticamente nessun demone), silenzioso e subito pronto (non devo loggarmi nè avviare programmi). Così posso controllare la posta, leggere qualche news, cazzeggiare su linkedin etc etc anche nei ritagli di tempo, nelle situazioni, cioè, in cui non accenderei un altro pc. E vista l'avanzata dei servizi gestibili via browser, posso fare una serie di operazioni anche più complesse..
facendo così ho rimandato di qualche tempo la sua fine, in fondo dopo tre anni passati insieme non se lo meritava..

venerdì 13 febbraio 2009

HOWTO: Installare windows XP su qemu

= Premessa
Ho scaricato da emule un'immagine di windows xp da installare sul pc di un mio amico (con regolare licenza, per la cronaca..). Quindi in fase di installazione, il codice che ho inserito è quello sul classico adesivo che si trova nella parte inferiore dei portatili.
Già che ho il cd di xp, ho pensato di virtualizzarmi un'installazione di windows xp con la licenza del mio portatile vecchio.

= QEMU
Ho scelto di usare qemu, che, tra gli emulatori che conosco, è sicuramente il più adatto per i desktop. Per esempio, per citare due opzioni che ho scartato, XEN è usato per altri scopi (virtualizzazioni "a lungo termine" sui server) e virtualbox non esiste a 64bit. Credo che qemu sia la soluzione adatta per emulazioni meno performanti e temporanee per testare alcune cose. Per cui si accende la macchina virtuale, si fa quello che si deve fare e la si spegne.
La particolarità di qemu è che virtualizza una macchina standard, non quella su cui gira. Questo risolve un sacco di problemi, secondo me.. ma può essere limitante.

= HOWTO
installare qemu
> erakis:/home/shatsar# apt-get install qemu
..

preparare l'immagine (qcow2 è il formato più versatile, utile per avere immagini ridotte, ma si può lasciare il formato raw e se si vuole usare un po' seriamente di certo non basteranno 2600M):

> shatsar@erakis:~$ qemu-img create -f qcow2 /home/shatsar/xp.img 2600M
> Formatting '/home/shatsar/xp.img', fmt=qcow2, size=2662400 kB
> shatsar@erakis:~$ ls -alh xp.img
> -rw-r--r-- 1 shatsar shatsar 24K 2009-02-13 10:44 xp.img

ora avviare l'installazione

> shatsar@erakis:~$ qemu -hda xp.img -boot d -cdrom /dev/cdrom -m 512 -localtime

dopo qualche tempo che sta girando l'installazione:
> shatsar@erakis:~$ ls -alh xp.img
> -rw-r--r-- 1 shatsar shatsar 168M 2009-02-13 10:57 xp.img

ed è destinato a crescere..Il resto è storia nota, una normalissima installazione windows (fatta in una finestra..)

Una volta finita l'installazione, si può spegnere il tutto. Dalla volta successiva per lanciare windows si potrà fare direttamente:

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

Nel prossimo post riguardo qemu scriverò qualcosa di più sulla configurazione

giovedì 5 giugno 2008

[Howto] create fedora 9 xen images (on fedora)

A little howto on creating xen images (using torrent to download the iso instead of using http/ftp during installation).

**On Domain-0**

Get DVD iso
-----------

retrieve the .torrent
> wget http://torrent.fedoraproject.org/torrents/Fedora-9-x86_64-DVD.torrent

download the image with rtorrent (text-based) or any other bittorrent client
> rtorrent Fedora-9-x86_64-DVD.torrent

check the file
> sha1sum -c Fedora-9-x86_64-DVD/SHA1SUM


Mount the image and "create" a repository
--------

Mount the iso image using loop device
> mkdir /mnt/fedora_loop/
> mount -o loop Fedora-9-x86_64-DVD/Fedora-9-x86_64-DVD.iso /mnt/fedora_loop/

Make a symlink in apache (so http://localhost/fedora will be the content of the iso image
this is also helpful if you don't have internet connection here but only the dvd: you can link directly the dvd content and proceed ahead
> ln -s /mnt/fedora_loop/ /var/www/html/fedora

Start httpd service
> service httpd start

Install
-------

Start the install process with virt-install (parameters are optional)
> virt-install -b xenbr1 -s 16 -f /xen/fedora9.img -n fedora9 -r 256 --nographics -l http://192.168.1.1/fedora

*where 192.168.1.1 is Domain-0's IP address*