Shorewall e fail2ban
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
Patterns in ruby: factory
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:
Exploring ruboto
Installazione di ruboto su debian/ubuntu in 6 semplici passi
- passo uno, installare la JDK java:
sudo apt-get install sun-java6-jdk
- installare jruby con rvm (per installare rvm seguire questa guida):
rvm install jruby
- installare l’SDK android (vedi qui), io l’ho installata in ~/android-sdk
- aggiungere la seguente linea in ~/.bashrc :
export PATH=$PATH:~/android-sdk/tools
- generare un emulatore (vedi qui)
- installare ruboto:
rvm jruby-1.5.0 gem install ruboto-core
installare ruby1.9 e rails3 su debian/ubuntu
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
Patterns in Ruby: Observer
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.
Patterns in ruby: Singleton
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…)
shortcuts per rails compatibili con rails3
Questo è uno script bash che permette di lanciare rails server/console/generate rispettivamente con rs/rc/rg ed è compatibile con rails 2 e 3:
Patterns in ruby: strategy
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…)
Patterns in ruby: template method
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…)
