Ack-Ack

Articolo su Internet Magazine

Inserito da ettober | 12.03.2008 | 0 commenti

Su Internet Magazine n.124 di Marzo trovate la mia intervista a Diego La Monica, amico e creatore dell’interessantissimo framework javascript jastEgg

Intervento a RailsToItaly07

Inserito da ettober | 30.12.2007 | 0 commenti

Con orribile ritardo pubblico le slides del mio intervento alla conferenza Rails to Italy 07 dove ho affrontato l’utilizzo dei principali sistemi di ricerca con RubyOnRails.

DOWNLOAD!

da MySQL a PostgreSQL

Inserito da ettober | 20.10.2007 | 0 commenti

In attesa che Il nuovo package manager, frutto del lavoro di Ian Murdock nel Project Indiana, faccia la sua comparsa nella prossima build di Solaris Express Community Edition, ecco un bell’how-to in Sun BigAdmin per ‘switchare’ da MySQL a PostgreSQL

www.carta.org alla tivvù

Inserito da ettober | 16.10.2007 | 0 commenti

L’altra sera a TV7 il rotocalco tel TG1, il direttore di Carta ha parlato di nuovi modi di fare giornalismo, del nuovo sito e del nuovo quotidiano in formato PDF.

Malline

Inserito da ettober | 15.10.2007 | 0 commenti

C’è un nuovo linguaggio di template per rails, e sembra essere molto interessante, Malline . Una cosa rende il codice veramente pulito, si tratta di puro ruby!


div.page do
    h1 'Header one'
    ul.list! do
        li { a 'Link to somewhere', :href => '/foo' }
    end
end

E’ anche disponibile uno script per convertire file rhtml nel nuovo template:


html2mn.rb <input file> <output file>

Vi rimando alla pagina delle features dove troverete molti esempi. E’ ora di ababndonare ERB ?

Apre il nuovo sito di Carta

Inserito da ettober | 15.10.2007 | 0 commenti

Oggi, dopo tanto lavoro, apriamo il nuovo sito di Carta! Con questa nuova edizione il settimanale si rilancia aggiungendo alle edizioni cartacee, il nuovo sito e un’edizione quotidiana in formato PDF.

Il vecchio sito di Carta, con le sue 500.000 pagine viste al mese cominciava a sentire gli anni, il sito era statico ma conteneva migliaia di pagine, la gestione dei contenuti avveniva attravero Dreamweaver se non per una piccola parte del sito dedicata alle news per la quale veniva utilizzato un vecchio software scritto in php. Per la ricerca dei contenuti si era costretti ad utilizzare un motore di ricerca esterno.

Le esigenze del cliente erano queste: poter amministrare la mole notevole di contenuti che vengono inseriti ogni giorno da un interfaccia unica, rendere flessibile la classificazione dei contenuti e renderli ricercabili in maniera efficace. In questi mesi abbiamo trasportato il vasto archivio del vecchio sito statico in un nuovo sistema, basato su Ruby on Rails e abbiamo costruito gli strumenti richiesti dal committente.

Come piattaforma tecnologica, per richiesta di Carta, è stato scelto di usare Debian e Mysql. Il motore di ricerca è stato costruito attorno a Ferret. Un’altra richiesta di Carta era quella di sviluppare un software che permettesse di costruire un file pdf partendo da una selezione degli articoli del giorno pubblicati sul sito. Dato che la veste grafica che si voleva dare al PDF era, per quanto essenziale, piuttosto elaborata (2 colonne, sillabazione, immagini, uso di particolari fonts..) abbiamo deciso di realizzare una piccola applicazione Cocoa che importasse dal sito i contenuti prescelti e creasse, utilizzando il motore di rendering di Mac OS X, il file PDF.

Il risultato grafico non è propriamente web 2.0! Ma anche questa era un’esigenza della redazione, abbiamo comunque introdotto elementi quali i tags, i feed rss, i podcast per RadioCarta.

carta_screenshotl.jpg

Sphinx 0.9.8

Inserito da ettober | 14.10.2007 | 0 commenti

La nuova release di sviluppo di Sphinx che nel giro di poche settimane diverrà la 0.9.8 porta un’importante novità, il supporto nativo per libstemmer che permettera lo stemming in molte lingue, tra cui l’italiano, ed elimininando la precedente disponibilità per il solo inglese e russo (lingua madre dello sviluppatore Andrew Aksyonoff )

Ricordando che è ancora una versione in fase di sviluppo, e quindi non adatta ad essere utilizzata in produzione, per installarla fate così:

Scaricate la versione dev di Sphinx 0.9.8 (al 14/10/2007 rev.871) da questo indirizzo

Scaricate la libreria C di libstemmer da qui

Scompattatela e compilatela direttamente nel directory sphinx-0.9.8-svn-r871/libstemmer_c

Compilate Sphinx con il comando:

$ ./configure —with-libstemmer

seguito naturalmente da:

$ make

$ sudo make install

Per l’utilizzo con il plugin rails ultrasphinx , ricordarsi di modificare adeguatamente il file di configurazione situato in config/ultrasphinx/default.base e di rilanciare

$ rake ultrasphinx:configure

Solr con italian stemming

Inserito da ettober | 02.10.2007 | 0 commenti

Solr (si pronuncia “solar”) è il potente server di ricerca che ingloba la tecnologia di Lucene, un’interfaccia HTML/XML.

Noi utenti rails possiamo utilizzarlo come motore di ricerca per le nostre applicazioni grazie al plugin acts_as_solr .

Ma come fare ad utilizzare uno stemmer italiano? facile! basta aprire il file di configurazione e sostituire la classe java EnglishPorterFilterFactory


<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
 

con


<filter class="solr.SnowballPorterFilterFactory" language="Italian" />

il file di configurazione, un file xml in stile java si trova in vendor/plugins/acts_as_solr/solr/solr/conf/schema.xml

Sempre nello schema di configurazione si possono indicare i file per le stopwords e i sinonimi nella nostra lingua.

OpenSolaris appliance per Parallels

Inserito da ettober | 07.05.2007 | 0 commenti

Sun fornisce una appliance di Solaris Express Developer Edition per Parallels. Questa è un ottima notizia perchè finora per installare OpenSolaris su Parallels bisognava ricorrere ad alcuni noiosi trucchetti .

Configurare Ruby on rails su Debian Etch 4.0

Inserito da ettober | 22.04.2007 | 0 commenti

Questo tutorial segue un’installazione su debian Etch, nel nostro caso la macchina è un Apple Mini Mac (PPC).

Con Etch è diventato davvero immediato installare Ruby on Rails.

Prima aggiorniamo tutto e verifichiamo che alcuni pacchetti base siano presenti nella macchina:

$ sudo apt-get install gcc g++ make libc6-dev flex openssl curl wget bison lib64stdc+6 libstdc+6-4.1-doc

Installiamo Mysql 5

$ sudo apt-get install mysql-server libmysqlclient15-dev mytop

Ora si tratta di installare ruby:

$sudo apt-get install ruby ruby-dev rdoc irb rubygems libzlib-ruby libmysql-ruby

Vengono così installati ruby 1.8.5 e rubygems 0.9.0

Ora ci serve installare Subversion

$ sudo apt-get install subversion subversion-tools

Installiamo Imagemagick

$ sudo apt-get install imagemagick libmagick9-dev

Installazione di Ruby on Rails

Ora finalmente possiamo usare rubygems per installare Ruby on Rail e gli altri pacchetti necessari!

$ sudo gem install rails -y

installiamo un driver di connessione a mysql scritto in C che sostituisca l’originale driver scritto in Ruby:

$ sudo gem install mysql

e alcuni pacchetti necessari per la nostra applicazione, nel mio caso:

$ sudo gem install fastercsv map_by_method net-sftp net-ssh radius rmagick ferret

Installazione di SuperRedCloth

Mancherebbe da installare Redcloth, purtroppo la versione attuale ha diversi problemi sia come prestazioni che come risultati di rendering, installare la futura versione comporta qualche difficoltà in più:

In particolare ora redcloth necessita Ragel, un’interfaccia a eseguibili C, C++ che permette di incrementare le prestazioni di 10x.Ho preferito un’installazione da sorgenti rispetto al pacchetto in debian stable forse troppo datatato:


$ cd source
$ wget http://www.cs.queensu.ca/~thurston/ragel/ragel-5.20.tar.gz
$ tar xvf ragel-5.20.tar.gz
$ cd ragel-5.20
$ ./configure
$ make
$ sudo make install

A questo punto installamo da repository Superredcloth, la futura versione di Redcloth 4:


$ cd source
$ svn co http://code.whytheluckystiff.net/svn/redcloth/branches/superredcloth
$ cd superredcloth/
$ rake
$ rakegem
$ sudo gem install pkg/superredcloth-1.163.gem

Installazione di Mongrel

Mongrel:http://mongrel.rubyforge.org/ è un server HTTP scritto in ruby. in questo tutorial imposteremo un cluster di server mongrel che si occuperanno di servire la nostra applicazione rails. Il frontend sarà affidato al server http Nginx.

$ sud gem install mongrel mongrel_cluster -y

Bisogna poi effettuare delle operazione per lanciare Mongrel come un servzio, questa è una versione leggermente migliorata dello scipt init.d che viene con mongrel_cluster (/var/lib/gems/1.8/gems/mongrel_cluster-0.2.1/resources/mongrel_cluster)

in /etc/init.d/mongrel_clusters:


#!/bin/bash
#
# Copyright (c) 2006 Bradley Taylor, bradley@railsmachine.com
#
# mongrel_cluster       Startup script for Mongrel clusters.
#
# chkconfig: - 85 15
# description: mongrel_cluster manages multiple Mongrel processes for use \
#              behind a load balancer.
#              
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin:/var/lib/gems/1.8/bin
CONF_DIR=/home/ettober/Sites/trunk_carta
RETVAL=0

# Gracefully exit if the controller is missing.
which mongrel_cluster_ctl >/dev/null || exit 0

# Go no further if config directory is missing.
[ -d "$CONF_DIR" ] || exit 0

case "$1" in
    start)
      mongrel_cluster_ctl start -c $CONF_DIR
      RETVAL=$?
  ;;
    stop)
      mongrel_cluster_ctl stop -c $CONF_DIR
      RETVAL=$?
  ;;
    restart)
      mongrel_cluster_ctl restart -c $CONF_DIR
      RETVAL=$?
  ;;
    *)
      echo "Usage: mongrel_cluster {start|stop|restart}" 
      exit 1
  ;;
esac      

exit $RETVAL


a questo punto:

$ sudo chmod +x /etc/init.d/mongrel_cluster

$ sudo update-rc.d mongrel_cluster defaults

Installazione Ngnix

Nginx, è un ottimo server web e proxy di fabbricazione russa. malgrado non sia ancora molto conosciuto è un’ottima per ottenere alte prestazioni, stabilità e un consumo ridotto di memoria. E’ attivo un wiki:http://wiki.codemongers.com/ dove una parte della documentazione è in via di traduzione dal russo.

alcuni prterequisiti:

apt-get install libpcre3-dev zlib1g-dev

su macchine i386 potremmo scaricare il pacchetto .deb da http://deb.wapper.ru/nginx/. Nel nostro caso siamo su PowerPC, scarichiamo quindi i sorgenti da: http://sysoev.ru/nginx/download.html

$ cd /source bq. $ wget http://sysoev.ru/nginx/nginx-0.5.17.tar.gz bq. $ tar -xvf nginx-0.5.17.tar.gz

ora si possono configurare i sorgenti, maggiori inso su: http://wiki.codemongers.com/NginxInstall

$ ./configure—sbin-path=/usr/local/sbin—pid-path=/var/run—conf-path=/etc/nginx.confcat /et —error-log-path=/var/log/ngnx—http-log-path=/var/log/ngnx

Configuration summary
  + threads are not used
  + using system PCRE library
  + OpenSSL library is not used
  + md5 library is not used
  + sha1 library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx" 
  nginx binary file: "/usr/local/sbin" 
  nginx configuration file: "/etc" 
  nginx pid file: "/var/run" 
  nginx error log file: "/var/log/ngnx" 
  nginx http access log file: "/var/log/ngnx" 
  nginx http client request body temporary files: "/usr/local/nginx/client_body_temp" 
  nginx http proxy temporary files: "/usr/local/nginx/proxy_temp" 
  nginx http fastcgi temporary files: "/usr/local/nginx/fastcgi_temp" 

$ sudo make install clean

a questo punto è necessario un init.d script per attivare nginx all’avvio del server:

$ sudo vi /etc/init.d/nginx

#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local:/usr/local/sbin:/usr/local/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC="Nginx HTTP Server" 
test -x $DAEMON || exit 0
# Get lsb functions
#. /lib/lsb/init-functions
. /etc/default/rcS
start() {
echo "Starting $DESC... " 
# echo "Starting $DESC: " 
if ! start-stop-daemon --start --quiet --oknodo --exec $DAEMON
>/dev/null 2>&1; then
status=$?
echo $status
return $status
fi
log_end_msg 0
return 0
}
case "$1" in
start)
start
;;
stop)
echo "Stopping $DESC: " 
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
echo $?
;;
restart|force-reload)
$0 stop
sleep 1
start
#echo "$NAME." 
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0

$ sudo chmod +x /etc/init.d/nginx bq. $ sudo update-rc.d nginx defaults bq. $ sudo /etc/init.d/nginx start

Miglioramento delle prestazioni

La nostra macchina, un Mac mini G4 con soli 256mb di ram ha bisogno di una certo affinamento delle impostazioni per ottenere prestazioni adeguate:

evitiamo di avviare il login grafico all’avvio:

$ sudo mv /etc/rc2.d/S21gdm /etc/rc2.d/_S21gdm

ZFS su FreeBSD 7

Inserito da ettober | 07.04.2007 | 1 commenti

Con una mail alle comunità di FreeBSD e OpenSolaris è stata annnunciato il commit di ZFS in FreeBSD 7.0_CURRENT.

Questa incontro tra le due comunità si affianca alla già effettuata inclusione della nuova piattaforma sun4v per processori Niagara / UltraSPARC-T1 T1 e allo studio per l’inclusione di DTrace al trunk per di FreeBSD 7.0 , in stallo per problemi di incompatibilità nella licenza del software.

Solaris su Parallels

Inserito da ettober | 06.04.2007 | 0 commenti

Fino a poco tempo fa era impossibile installare OpenSolaris su Parallels , la soluzione per la virtualizzazione più usata in ambiente Mac OS X, il boot del cd di installazione si piantava irrimediabilmente, rimaneva solo la versione beta di vmware fusion . Oggi mi ho scoperto che Sun fornisce nella documentazione di Solaris Express Developer edition 2/07 dettagliate istruzioni su come installare su Parallels!

Solaris Express Developer Edition 2/07

Inserito da ettober | 03.04.2007 | 0 commenti

Oggi è arrivato il dvd di Solaris Express Developer Edition 2/07 che avevo ordinato circe 3 settimane fa. Si tratta di un solo dvd in una bustina di plastica, e purtroppo è solo per x86, niente versione sparc! Il dvd contiene, oltre alla build 55 di OpenSolaris, Sun Studio 11, NetBeans IDE 5.5 e un nutrito di pacchetti OpenSource quali PostgreSQL, MySql, Python e varie applicazioni ( StarOffice 8, Firefox) Secondo Sun questo è il sistema ideale per sviluppatori Java e web 2.0.

Tempo di elezioni per OpenSolaris

Inserito da ettober | 22.03.2007 | 0 commenti

La comunità di OpenSolaris sta votando per eleggere il nuovo OpenSolaris Governing Board (OGB) e per la ratifica della bozza di costituzione.

Per poter votare è necessario essere membri della comunità e inserire nella propria pagina profilo una coppia di chiavi SSH. Maggiori istruzioni sul blog di Ben Rockwood

run!

Inserito da ettober | 07.12.2006 | 0 commenti

automatizzare la configurazione di rails e subversion

Inserito da ettober | 21.10.2006 | 0 commenti

Per configuare il controllo di versione per progetti rails con subversion bisogna ricordarsi di effettuare una serie di operazioni :

ignorare i file nelle directory tmp/ e log/

Non considerare il file database.yml

permessi ed eseguibili

etc etc

Tutto questo alla lunga può diventare noiso.. Questo script, sotto forma di baloon , rende tutta la configurazione semplicissima: dopo aver fatto il checkout dal nostro repository basta lanciare dalla cartella root del progetto:

ruby -ropen-uri -e ‘eval(open(“http://balloon.hobix.com/svn_configure”).read)’

Un baloon non è altro che una pagina web che agisce come uno script .. Naturalmenteci si può anche non fidare e scaricare il baloon come normale file.rb… per lanciarlo con più sicurezza!

svn_configure

Conferenza RailsEurope 2006

Inserito da ettober | 15.09.2006 | 0 commenti

Qui Londra, prima conferenza Rails in Europa.. post-conf-pint ;-)

WebTech 2006 Sofia Bulgaria

Inserito da ettober | 05.07.2006 | 0 commenti


The conference as in the previous two years will focus on new technologies in web programming, open source and everything that stands for IT (Internet Technologies).

During the two days event visitors will be acquainted with many aspects of these technologies and will be introduced to the future plans for development.

Unfreeze Rails

Inserito da ettober | 10.04.2006 | 0 commenti

rake unfreeze_rails svn propdel svn:externals vendor (from rails app root dir)

Un nuovo webserver! Cherokee

Inserito da ettober | 02.03.2006 | 0 commenti

C’è nuovo interessante webserver Cherokee

E’ ancora giovane, il supporto per FastCGi è ancora in fase di sviluppo e non vengono supportati .htaccess ma le prestazioni sembrano di tutto rilievo.

Ce la farà a differenziarsi da Lighhtpd?

Installare Lighttpd in FreeBSD

Inserito da ettober | 21.02.2006 | 0 commenti

Questo è un breve how-to con le istruzioni per l’installazione su FreeBSD 6, la versione di Lighttpd è la 1.4.10.

installazione

cd /usr/ports/www/lighttpd/ && make install clean

Apparirà un messaggio per la scelta delle opzioni di compilazione, va bene lasciare solo openSSL selezionata.

Per automatizzare l’avvio di Lighttpd si può aggiungere a /etc/rc.conf

lighttpd_enable=”YES”

Con l’installazione viene creato un file di configurazione in /usr/local/etc per utilizzarlobasta rinominarlo:

cd /usr/local/etc && cp lighttpd.conf.sample lighttpd.conf

nel file di configurazione bisogna indicare la posizione dei file di log, ad esempio in /var/log:

cd /var/log/ && touch lighttpd.access.log lighttpd.error.log && chown www:www lighttpd.*.log

Gestire l'albero dei Ports in FreeBSD

Inserito da ettober | 12.02.2006 | 0 commenti

installazione

Se si utilizza una versione di FreeBSD precedente alla 6.0 necessario installare questi port

cd /usr/ports/security/portaudit && make install clean

In tutti i casi serve installare questi ports:

cd /usr/ports/sysutils/portsnap && make install clean cd /usr/ports/sysutils/portupgrade && make install clean

portaudit confronta i port installati con un archivio di rischi di sicurezza portsnap serve per l’aggiornamento dell’albero dei port portupgrade aggiorna i port già installati

aggiornamenti

prima di procedere all’agiornamento bisogna generare un file di configurazione:

cd /usr/local/etc/ && cp portsnap.conf.sample portsnap.conf

A questo punto facciamo partire l’aggiornamento. Al primo utilizzo è necessario scaricare l’intero albero in /var/db/portsnap con il comando:

portsnap fetch fetch

e poi copiarlo in /usr/ports con:

portsnap fetch extract

Ad ogni successivo utilizzo basterà digitare il comado:

portsnap fetch update

Ora abbiamo una copia dell’ultima versione dell’albero dei ports in /usr/ports, bisogna tenere presente che questo viene aggiornato con intervalli di circa un’ora, potremmo quindi creare un ruolo nel nostro crontab per mantenere sempre aggiornato il nostro albero.

Quali Ports possono essere aggiornati?

Ora che abbiamo effettuato l’aggiornamento dell’albero dei ports, possiamo individuare quali ports hanno disponibile un aggiornamento con il comando

pkg_version | grep ‘<’

Ci verrà mostrata una lista di ports,

ImageMagick <
apache <
postgresql-client <
postgresql-server <

per aggiornare un singolo port usa

portupgrade apache

se vuoi puoi aggiornare tutti i ports:

portupgrade -a