RSS Feed
Sep 7

Shorewall e fail2ban

Posted on Tuesday, September 7, 2010 in Tecnologia

Ho recentemente attivato un piccolo server di sviluppo, riporto di seguito la configurazione usata per shorewall e fail2ban, un setup minimale dal quale si può partire per configurazioni più complesse.

Shorewall

Shorewall è uno script (recentemente riscritto in perl, un tempo era solo bash) per la gestione e configurazione del firewall/networking di linux. L’utilizzo di shorewall è incredibilmente semplice e permette di configurare da iptables per il firewall a QOS/Traffic Shaping e persino openvpn e ipsec. Questa è la configurazione base del server di sviluppo:

/etc/shorewall/interfaces:

###############################################################################
#ZONE	INTERFACE	BROADCAST	OPTIONS
int	eth0

(more…)

Sep 7

Patterns in ruby: factory

Posted on Tuesday, September 7, 2010 in Sviluppo Software

Il factory pattern non descrive altro che un’oggetto che genera un’altro oggetto rispondendo alla domanda di quale classe? Esistono due varianti il factory method e l’factory abstract, l’esempio che segue è preso da wikipedia, ed è l’implementazione classica del factory method scritta in java:

(more…)

Sep 5

Lo Zen e l’arte di non pensare

Posted on Sunday, September 5, 2010 in Salute

Conosco diverse persone che si occupano (alcune di mestiere) delle cosidette medicine alternative o naturali, io stesso (come sempre curioso) in passato ho studiato parecchio il tema. Dopo molte riflessioni credo di aver trovato qual’è tra i tanti difetti dell’approccio alternativo (occidentale) quello più dannoso: l’influenza del taoismo.

Il taoismo è una filosofia religiosa di origine cinese che ha influenzato bene o male tutte le altre discipline. In particolare sono permeati i concetti di yin e yang. La ricerca dell’equilibrio e del benessere sono obiettivi nobili che condivido appieno, e questo è lo yin e yang: equilibrio. Ad esempio nella macrobiotica la salute è raggiunta (o meglio mantenuta) attraverso l’equilibrio degli alimenti, il risultato è un’alimentazione molto neutra dove ogni eccesso yin è bilanciato con uno yang e viceversa.

A parte la soggettività nella classificazione yin/yang e diversi principi validi in oriente riportati pari pari in occidente, il problema vero nasce quando si inizia a vedere tutto bianco o nero, buono o cattivo.

Quindi la medicina alternativa è buona, quella tradizionale è cattiva. Le “cose chimiche” (bisognerebbe dire di sintesi visto che senza chimica non esisteremmo) sono cattive mentre le “cose naturali” sono buone (provate a mangiare 10-15 bacche di belladonna .. tanto per dirne una), le alghe hijiki sono bene qualsiasi cosa che contiene zucchero è male.

Credo sia proprio questa visione in bianco e nero il danno peggiore delle medicine naturali, un’abitudine a categorizzare le cose senza ponderare i contesti, annullare il pensiero critico e la capacità di approfondire i concetti. D’altra parte l’annullamento della capacità critica è l’unico modo che hanno le multinazionali farmaceutiche che vendono prodotti omeopatici di poter sopravvivere, visto che non sono mai state in grado di dimostrarne l’efficacia. Per non parlare di altre fantasiose discipline più recenti come i fiori di Bach che vanno tanto di moda oggi o i rimedi del maestro, dove se non è l’effetto placebo (risultato ottenibile anche con acqua) è la profezia che si autoadempie. Ma tanto l’essere umano è portato a credere per natura.

Sep 3

Exploring ruboto

Posted on Friday, September 3, 2010 in Sviluppo Software

Installazione di ruboto su debian/ubuntu in 6 semplici passi

  1. passo uno, installare la JDK java:
    sudo apt-get install sun-java6-jdk
  2. installare jruby con rvm (per installare rvm seguire questa guida):
    rvm install jruby
  3. installare l’SDK android (vedi qui), io l’ho installata in ~/android-sdk
  4. aggiungere la seguente linea in ~/.bashrc :
    export PATH=$PATH:~/android-sdk/tools
  5. generare un emulatore (vedi qui)
  6. installare ruboto:
    rvm jruby-1.5.0
    gem install ruboto-core
Sep 2

installare ruby1.9 e rails3 su debian/ubuntu

Posted on Thursday, September 2, 2010 in Sviluppo Software

Installare Ruby on Rails 3 oggi è molto piu semplice grazie a due tool che aiutano a gestire le dipendenze: RVM per avere diverse istanze di ruby ognuna con un suo set di gemme e bundler che aiuta a gestire i set di gemme necessari per ogni istanza di ruby on rails.

Per installare RVM bisogna innanzitutto assicurarsi che siano installati alcuni pacchetti:

 sudo apt-get install subversion bison git-core curl

Successivamente lanciare il seguente comando:

 bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

a questo punto inserire in ~/.bashrc la seguente linea:

  [[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm

e voilà, una volta riavviata la shell rvm è pronto per essere utilizzato, per installare ruby 1.9.2 (al momento l’ultima release stabile) basta lanciare il comando:

 rvm package install zlib
 rvm install ruby-1.9.2

(more…)

Aug 30

Patterns in Ruby: Observer

Posted on Monday, August 30, 2010 in Sviluppo Software

Capita spesso che al variare di un determinato valore tanti elementi distinti debbano aggiornarsi, ad esempio un grafico che si aggiorna al variare dei valori di una tabella, o le celle di un foglio di calcolo. In tutti questi casi torna utile l’Observer pattern. Nell’esempio che segue variando i valori delle valute verrà automaticamente aggiornato il grafico, ovviamente il numero degli observer non è limitato ad uno.

(more…)

Aug 27

Patterns in ruby: Singleton

Posted on Friday, August 27, 2010 in Sviluppo Software

Uno dei pattern piu controversi e discussi (es: leggi qui, qui e qui) è il singleton. Il singleton pattern viene utilizzato quando l’oggetto ha una sola ed unica istanza. Ad esempio alcuni software hanno un’unico file di configurazione o un solo accesso al database. L’implementazione del pattern in ruby è la seguente: (more…)

Aug 26

shortcuts per rails compatibili con rails3

Posted on Thursday, August 26, 2010 in Sviluppo Software

Questo è uno script bash che permette di lanciare rails server/console/generate rispettivamente con rs/rc/rg ed è compatibile con rails 2 e 3:

Aug 26

Patterns in ruby: strategy

Posted on Thursday, August 26, 2010 in Sviluppo Software

Abbiamo visto il template method pattern, un’ottima soluzione per variare una parte di algoritmo (nel caso visto in base alla tipologia di gioco, Omaha o Texas Hold’em). Il problema principale del template method è che si basa sull’ereditarietà: è la classe padre che richiama i metodi specifici della classe specializzata.

Lo strategy pattern non fa uso di ereditarietà, ma delega la parte di algoritmo che varia ad un’altra classe (o in ruby molto spesso un modulo) che verrà incluso nella classe contesto. Ecco lo stesso esempio usato per il template method rivisto con lo strategy pattern: (more…)

Aug 25

Patterns in ruby: template method

Posted on Wednesday, August 25, 2010 in Sviluppo Software

Sui patterns della gang of four books si trovano spesso testi e implementazioni su linguaggi come java o c++, ma gli stessi pattern implementati in ruby sono molto più eleganti e meno prolissi,  questo grazie alle potenti caratteristiche che offre il linguaggio. Ho intenzione di scrivere alcuni post sul blog relativamente all’implementazione in Ruby di questi patterns.

Il template method pattern viene usato quando in un determinato algoritmo una o piu parti devono poter cambiare. Ad esempio in un progetto realizzato qualche tempo fa per la gestione di partite di  poker dovevo variare alcune parti della logica in base al gioco specifico Omaha o Texas Hold’em. (more…)