Alessio Caiazza

Articles tagged 'italiano'

La notte blu della ricerca

Sabato 8 e domenica 9 maggio 2010 a Firenze si terrà “La notte blu della ricerca”.

Si tratta di un evento organizzato in seno a La Notte Blu, un'occasione per festeggiare i 27 paesi dell'Unione Europea.

Nell'ambito della categoria le ore della scienza troviamo la notte blu della ricerca, una non-stop di 27 ore (il numero dei paesi dell'Unione Europea) sulla ricerca a Firenze, in Italia ed in Europa.

Domenica 9 alle ore 14, grazie all'invito di Tommaso Pecorella, terrò assieme a lui un talk su IPv6 e la fine del mondo nel 2012. Il talk cerca un'ironica linea di congiunzione fra le profezie maya ed i calcoli di Geoff Huston sulla fine degli indirizzi IPv4. Cercheremo di non andare troppo sul tecnico, mantenendo la discussione più sul management e scendendo nei dettagli di IPv6 solo dove necessario.

Per i più impavidi si terrà il concorso eroe della ricerca che consiste nella raccolta delle firme di tutti i relatori delle 27 ore di conferenza…buona fortuna!

(l0g.in 45XDM2)

Mercurial e Redmine: aggiornamento automatico dello stato dei BUG

Da qualche giorno sto usando redmine per la gestione dei miei repository mercurial.

Una cosa che trovo molto utile è cambiare lo stato dei BUG riportati nel tracker direttamente con il messaggio di commit.

C'è un problema, di default il tracker di redmine non si aggiorna finché qualcuno non visita la pagina del repository…vediamo come risolvere il problema.

Mercurial ci mette a disposizione degli hook per eseguire alcuni script in corrispondenza di determinati eventi; possiamo sfruttare l'hook changegroup per aggiornare redmine.

Colleghiamoci in ssh al server su cui si trovano redmine e modifichiamo il file .hg/hgrc del nostro repository.

# output of /path/to/hg/repos/.hg/hgrc
# Mercurial - Redmine issue updater hook
# please update cd redmine with your redmine path
[hooks]
changegroup.redmine = cd redmine && ruby script/runner "Repository.fetch_changesets" -e production

A questo punto non ci resta che eseguire un commit ed un push di prova.

(l0g.in 44NMT1)

Il mio disco fa BIP! Seagate ST9500420ASG 7200 rpm

Capita a tutti di fare l'acquisto sbagliato. Ma un hard disk che fa BIP (o click) mette sempre un po’ di terrore.

Stiamo parlando del favoloso HD seagate ST9500420ASG da 7200 RPM.

Si tratta in effetti di un disco nato male. Leggendo in giro si scopre che tutti i produttori di PC che li hanno equipaggiati sui loro computer hanno avuto gli stessi problemi (Apple, HP, DELL).

Vediamo come risolverli!

Prima di tutto bisogna dire che se avete acquistato un PC con dentro questo disco è già uscito il firmware updater e dovete cercarlo sul sito del produttore, ma se come me vi siete fatti male da soli, scegliendo di comprarlo direttamente dalla seagate…beh avete bisogno di questa guida.

Nota: Non mi ritengo responsabile di eventuali danni al vostro disco o pc, per me ha funzionato, ma seguite la procedura a vostro rischio e pericolo.

Il problema

Adesso possiamo individuare il problema, se il vostro disco ogni tanto fa il rumorino che si sente nel video allora state leggendo il post giusto.

Sembra che il problema sia dovuto ad una politica di risparmio energetico troppo aggressiva del firmware originale. (versione 0002SDM1)

Come dicevo le case costruttrici di PC sono state chiamate ad aggiornare i loro FW, ma la seagate non si degna di rilasciare un aggiornamento per chi il disco lo ha comprato da solo. Fortunatamente per noi il FW rilasciato da DELL (versione 0005SDM1) è compatibile anche con il nostro disco, ed il controllo sul seriale, che impedisce ad un disco non DELL di essere aggiornato, è facilmente aggirabile.

Apple e Sudden Motion Sensor

Prima di procedere oltre devo fare una piccola digressione per i possessori di un MAC, questo HD incorpora un sensore di movimento che protegge il disco in caso di movimenti bruschi, sfortunatamente i macbook hanno un loro sensore (SMS) sulla scheda madre che fa lo stesso identico lavoro; questo porta a una situazione di conflitto in cui oltre ad avere il BIP si hanno dei momenti di blocco del disco il cui il sistema operativo va in freeze per 1-2 secondi e poi si sente il disco ripartire, per risolvere questo problema bisogna disabilitare il sensore SMS.

Con Snow Leoprad (10.6) aprire il terminale ed eseguire i seguenti comandi:

sudo pmset -a sms 0
# ti verrà chiesta la password
sudo pmset -g

Se tutto è andato a buon fine avremo una risposta del genere:

Active Profiles:
Battery Power       -1
AC Power        -1*
Currently in use:
 hibernatemode  3
 halfdim    1
 lidwake    1
 acwake     0
 womp       1
 sleep      10
 disksleep  10
 sms        0
 hibernatefile  /var/vm/sleepimage
 ttyskeepawake  1
 displaysleep   10

Controllare che il valore di sms sia 0. Adesso il sensore è disabilitato. Per altre versione di OS X fare riferimento al link in fondo al post.

Aggiornamento del Firmware

Dopo aver verificato di avere effettivamente un disco seagate ST9500420ASG con versione FW 0002SDM1 scarichiamo il SW per l'aggiornamento del firmware dal sito della DELL. Una volta installato troveremo il file Seagate Utility.iso nella cartella C:\dell\drivers\R250352. Non dobbiamo fare altro che masterizzarlo su un CD ed riavviare il PC dal lettore di CD. ( Nel caso abbiate un MAC basta riavviare tenendo premuto il tasto alt, vi apparirà una schermata con il vostro disco e un CD con sotto una freccetta, fare click sulla freccetta sotto al dispositivo da cui volete fare il boot. Purtroppo non sono sicuro se serva o meno BootCamp per questo passaggio )

Adesso il vostro PC si avvierà in DOS e proverà ad aggiornare il FW fallendo per via del seriale.

A questo punto vi troverete davanti un prompt del DOS e dovete digitare il seguente comando:

FHDL -m HOLLIDAY -f 0005SDM1.LOD -i ST9500420ASG -b -v

Una volta terminato l'aggiornamento potete riavviare il PC e dire addio al fastidioso clicking.

Link

(l0g.in 43yBPS)

Dr. Nolith

Non vi preoccupate, sono vivo :)

Ultimamente sono stato poco presente perché stavo portando avanti il mio lavoro di tesi. Adesso che ho finito cercherò di essere più presente e di continuare a portare avanti about-me.

Per il momento segnalo che sto preparando una lezione introduttiva su IPv6 che si terrà durante il corso di “Gestione e Sicurezza di Reti di Telecomunicazioni” dell'Università di Firenze.

(l0g.in 42SB6s)

[redirector] Sinatra + Heroku=> Micro-applicazioni di cui non preoccuparsi

Oggi mi son imbattuto in un problema che ho risolto grazie a sinatra ed heroku.

Nei giorni scorsi avevo deciso di usare il domino bb.alessiocaiazza.info come mia pagina personale su bitbucket, solo che poi ho comprato il dominio l0g.in e avrei preferito usare code.l0g.in.

Fin qui nulla di male, ma come fare con tutti i link che avevo disseminato in giro per il web? Avrebbero puntato ad una pagina di errore? No!

Mi è venuto in mente che con sinatra è possibile catturare le url con delle regexp…quindi…

#
# redirector
#
# (c) 2009 - Alessio Caiazza 

require 'rubygems'
require 'sinatra'

REDIRECT_TO='http://l0g.in'

get '/' do
    redirect REDIRECT_TO
end

get '/*' do
    redirect "#{REDIRECT_TO}/#{params[:splat][0]}"
end

e poi deploy su heroku e custom domain service …..fatto!

Ho colto l'occasione per provare hg-git, quindi ho pubblicato tutto su github.

(l0g.in 3zyK8N)

Firmare gli archivi jar

Un po’ di tempo fa mi ero imbattuto nel problema di utilizzare online un'applet generata con Processing che utilizzasse CaptureMJPEG.

Ero giunto alla conclusione che fosse necessario firmare l'applet e qualche giorno dopo mi sono procurato tramite CaCert una chiava utilizzabile per la firma del codice.

Quello che segue è un rapido riepilogo dei passi necessari per la firma dei jar.

Individuazione della chiave

kaiman:applet nolith$ keytool -list -storetype pkcs12 \
-keystore keystore.p12
Immettere la password del keystore:  **********************

Tipo keystore: pkcs12
Provider keystore: SunJSSE

Il keystore contiene 1 entry

id di alessio caiazza a root ca, 2-giu-2009, keyEntry,
Impronta digitale certificato (MD5): 81:57:63:80:D9:71:61:CD:6D:1E:CA:1D:28:0C:19:F8

Firma

kaiman:applet nolith$ jarsigner -storetype pkcs12 \
-keystore keystore.p12 micc_histo.jar \
"id di alessio caiazza a root ca"
Enter Passphrase for keystore: ****************************

Per quanto riguarda gli applet esportati con Processing è necessario firmare il proprio jar e core.jar (i jar di CaptureMJPEG sono forniti già firmati dalla versione 1.0.1)

(l0g.in 3zxDPt)

heroku.com il deploy di applicazioni rack-based è un gioco

Ieri sera ho scoperto un servizio interessante, si chiama Heroku ed è un hosting di applicazioni basate su rack come ad esempio Ruby on Rails o Sinatra.

Fino a qui nulla di nuovo, ma il loro sistema si basa sulla semplicità della procedura di deploy che come ben sa chi ci ha provato, non è proprio al livello di una applicazione php.

Per provare un po’ questo sistema ho deciso di creare una mini applicazione con sinatra che esegue l'hash MD5 di alcune stringhe. Vediamo come funziona.

Prerequisiti

È necessario installare la gemma heroku; per l'applicazione dell'esempio serviranno anche le gemme sinatra e thin.

$ sudo gem install heroku
$ sudo gem install sintra 
$ sudo gem install thin

Per il deploy serve git. Scaricabile da qui.

Fatto questo è necessario registrare un account su Heroku.

L'applicazione

Creiamo il file hasher.rb dentro la cartella hasher.

require 'rubygems'
require 'sinatra'
require 'digest/md5'

get '/' do
  erb :home
end

post '/md5' do
  unless params[:str].nil?
    "<code>MD5(#{params[:str]}) -> #{Digest::MD5.hexdigest(params[:str])}</code>"
  else
    redirect '/'
  end
end

# Accettiamo solo richieste in POST
get '/md5' do
  redirect '/'
end

use_in_file_templates!

__END__

@@ home

<p>
Questa è una semplice webapp (esagerato!) per spiegare come funziona 
<a href="http://heroku.com">Heroku</a>.<br></br>
Puoi trovare l'articolo relativo nel mio 
<a href="http://bit.ly/nkw0V" rel="me">blog</a>.
</p>

<form action="/md5" accept-charset="utf-8" method="post">
  <input type="text" name="str" value="Write here..." id="str"></input>
  <input type="submit"></input>
</form>

Per il deploy con rack è necessario creare anche il file config.ru

#rack config file
require 'hasher'
run Sinatra::Application

Il deploy

Ora giunge il momento di mandare online la nostra applicazione

#creiamo il repository git nella cartella corrente
$ git init
Initialized empty Git repository in /Users/nolith/Documents/Projects/hasher/.git/

#aggiungiamo tutti i file nella cartella al controllo di versione
$ git add .

#eseguiamo il commit dei file
$ git commit -m 'Import iniziale: hash md5'
[master (root-commit)]: created 21b62e4: "Import iniziale: hash md5"
 2 files changed, 41 insertions(+), 0 deletions(-)
 create mode 100644 config.ru
 create mode 100644 hasher.rb

#creiamo una nuova applicazione su heroku
# sarà possibile rinominarla in seguito
$ heroku create
Enter your Heroku credentials.
Email: utente@server.it
Password:
Uploading ssh public key
Created http://growing-summer-43.heroku.com/ | git@heroku.com:growing-summer-43.git
Git remote heroku added

#eseguiamo l'upload dell'applicazione
$ git push heroku master
Counting objects: 4, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 784 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)

-----> Heroku receiving push
-----> Rack app detected
       Compiled slug size is 004K
-----> Launching..... done
       App deployed to Heroku

To git@heroku.com:growing-summer-43.git
 * [new branch]      master -> master

#Proviamo la nostra applicazione
$heroku open

Alcune note

La prima volta che si utilizza un comando di heroku vengono richieste le credenziali di accesso e viene fatto l'upload di una chiave pubblica ssh (Come creare una coppia di chiavi per ssh).

Finito! Siamo online!

Conclusioni

Quanto mostrato si può fare anche per una applicazione Rails, in questo caso non servirà il file config.ru. Attualmente il deploy di una applicazione basata su rack non è dei più semplici, anche se devo dire che mod_rails ha notevolmente migliorato le cose. Dobbiamo però considerare anche il fattore economico, per piccole applicazioni di test heroku è gratuito, per applicazoni che necessitano di risorse consistenti direi che la scelta di basarsi su AWS è un vantaggio non da poco, i benefici offerti dalla struttura di Amazon sono impossibili da ottenere ad un costo contenuto per uno sviluppatore indipendete o una PMI.

(l0g.in 3zhDy9)

CaptureMJPEG come Applet

Recentemente ho trasferito CaptureMJPEG su BitBucket e ho controllato che fosse compatibile con Processing 1.0.

Mi sono accorto del fatto che gli applet che utilizzano CaptureMJPEG non funzionano, dovendo instaurare una connessione HTTP e non essendo firmata l'applet si ottiene che non è possibile collegarsi alla videocamera.

Per risolvere il problema basta firmare l'applet esportata, a questo proposito ho contattato il team di supporto di CAcert per farmi attivare l'opzione per la firma del codice in modo da poter fare altre prove.

Stay tuned

(l0g.in 3zaHBx)

XX Congresso Nazionale AIP-ITCS

Il 9 e 10 maggio, sfruttando l'ospitalità di una amico, sono stato al decimo Congresso Nazionale AIP-ITCS dal titolo Web 3.0 Innovazione e Collaborazione.

L'evento è stato interessante e sfrutto queste quattro righe per annotare gli interventi che più hanno colpito il mio interesse.

Simone Brunozzi, Amazon Web Services Evangelist for Europe, ha presentato il Cloud Computing di Amazon.

Alessio L.R. Pennasilico aka mayhem, Security Evangelist, con il suo intervento Web 3.0, Identità 2.0, Mercato 0.9 Beta ha portato una discussione sulla differenza tra le tecnologie, le esigenze degli utenti e lo stato del mercato.

Yvette Agostini, Renewable Energies & Information Security Consultant, ha fatto a mio parere l'intervento più bello. Lo si potrebbe riassumere con la frase WEB 3.0? Ok, ma ricordiamoci che è solo un nome figo per una rispolverata a delle vecchie funzionalità. I vecchi problemi di sicurezza rimangono e se ne aggiungono di nuovi. Un paper interessante citato da Yvette parla di De-Anonimizzazione di Social Network.

Matteo G.P. Flora, Fool s.r.l. CEO, ha presentato i vari servizi di FoolDNS. Personalmente uso FoolDNS Community edition fin dalla closed beta e devo dire che è tutto un altro navigare.

Per finire avrei voluto sentire l'intervento di Giandomenico Sica, direttore della comunicazione presso ITSME, ma per problemi di salute non si è presentato all'evento e quindi dovrò aspettare un'altra occasione per avere qualche news su ITSME.

Itsme operating system will be based on Linux and provided with a new graphical user interface, implementing the metaphor of stories and venues, exploiting the services of a specifically designed layer organizing information.

The itsme operating system will expand the Linux operating system beyond its current horizons. It will consist of two main parts: a front-end based on the “stories and venues” metaphor and a back-end, situated between a standard Linux operating system and the front-end, delivering the services needed for supporting user interaction.

(l0g.in 3zaFyL)
Alessio

Hello. My name is Alessio Caiazza. I'm also known as nolith. I love writing code and technology. I'm passionate about production engineering.

This is where I write my thoughts trying to follow IndieWeb principles.

Staff Backend Engineer, Delivery @ GitLab

he/him/his

"Il sapere umano appartiene al mondo."

An IndieWeb Webring 🕸💍