SlideShare a Scribd company logo
S.P.R.I.T.e. Magazine VI
S.P.R.I.Te.MagazineS.P.R.I.Te.Magazine VIVI
Bimensile gratuito - Associazione studentesca S.P.R.I.Te.
C.d.l. In Scienze dell'Informazione – Cesena
Numero 6 – anno 2007
SOMMARIOSOMMARIO
Ajax articolo numero 2 - Demo 2
Welcome Day CSR - Tommaso
Dionigi
5
wxWidgets e wxDevC++ - Elvis
Ciotti
6
Development day 8
Last.fm, the social music
revolution - Matteo Battistelli
8
“Stay hungry. Stay foolish.” by
Steve Jobs - Venturi Filippo
10
Enigmi matematici e soluzioni 13
Streamtuner – Matteo Lupini 15
Eccoci qua !
S.P.R.I.Te. Magazine è il giornalino della nostra associazione nel quale
parliamo dei nostri progetti, attività, argomenti inerenti il nostro c.d.l. e non
solo.
Per chi già non ci conoscesse, l'associazione S.P.R.I.Te. è composta di
studenti volenterosi che offrono il loro aiuto per creare tutto quello che non è
normalmente offerto agli studenti: servizio fotocopie e dispense,
organizzazione feste, gestione sala Albatros, buffet di benvenuto alle
matricole, linux/development-day, ecc...
Per consultare l'elenco completo dei progetti/attività consulta il nostro sito
http://sprite.csr.unibo.it/
Se ti senti coinvolto e vuoi darci una mano, scrivere un articolo per questo
giornalino o proporre idee, contattaci all'indirizzo e-mail
sprite@sprite.csr.unibo.it, oppure vieni a trovarci negli orari di apertura,
siamo nell'atrio della sede del c.d.l. , accanto all'aula E.
S.P.R.I.Te.
Ricordiamo i prossimi eventi ai quali non puoi assolutamente mancare:
• Mar 23 Ottobre – Vidia Club (S.Vittore): Festa delle matricole 07 [pag 3]
• Ven 26 Ottobre – Aule Scienze dell'Informazione: Development day 07 [pag 4]
23 OTTOBRE
Festa delle matricole 2007
[PAG 4]
26 OTTOBRE 07
Development Day
[PAG 8]
scherzo alle matricole e
Welcome Day S.P.R.I.Te.
[PAG. 5]
PAG 1
S.P.R.I.T.e. Magazine VI
Ajax articolo numero 2
di Demo <sensorario@gmail.com>
Nello scorso numero ho introdotto Ajax e vi ho mostrato
un semplice esempio di codice su come è nato e quale era
una delle sue prime implementazioni. Dall'introduzione
dei frameset e degli iframe ci sono stati un po' di
cambiamenti. Vari browser hanno iniziato ad
implementare diverse soluzioni per dare a Javascript il
“potere” di effettuare chiamate GET e/o POST in
background. Senza tornare troppo nel dettaglio, in questo
numero introdurrò due nuovi concetti senza discostarmi
troppo da quanto detto nel precedente articolo.
1) XMLHttpRequest / ActiveXObject(Microsoft.XMLHTTP)
2) PHP5 & XML (rss)
Con il primo elimineremo un sacco di codice sia
javascript che html al fine di rendere le nostre pagine
sempre più leggere, e capaci di sfruttare le potenzialità di
ajax. Di per se pochi kb in una pagina non fanno la
differenza ma un milione di siti per un pugno di kb di
traffico in meno per ogni pagina che viene vista... Se tutti
gli sviluppatori fossero più consapevoli nel creare le
proprie applicazioni ne gioverebbe tutta la rete.
Con il secondo introdurremo e vedremo in maniera
assolutamente periferica, come php5 consente di
interagire con lo standard rss.
sprite.html
<html>
<head>
<script language="JavaScript" src="caricaFeed.js"></script>
</head>
<body onload="javascript:caricaFeed('elfo', 'sprite.php');">
<div id="elfo">Sto caricando ...</div>
</body>
</html>
Tutto il codice HTML della volta scorsa è scomparso. Per
chi non avesse letto lo scorso numero il pattern utilizzato
prevedeva l'utilizzo di un'applicazione a frame. In un
frame con altezza 0% venivano caricate le pagine (essendo
questo frame nascosto) che andavano a riempire la pagina
principale nel frame con altezza impostata al 100%.
Diciamo che lo spazio occupato ora è almeno un terzo o
addirittura un quarto.
In questo documento HTML ci sono 3 cose da notare.
Per prima la chiamata ad un file .js che ho chiamato
caricaFeed.js. La seconda è la chiamata alla funzione
caricaFeed(); non appena il documento è stato caricato
(<body ... onload=””>). Terzo è l'elemento <div id=”elfo”
/>.
Come nell'esempio scorso, mi piace spiegare i miei script
esattamente per come si comportano:
Il browser ha caricato sprite.html, ha incluso un
file javascript, e quando finisce di caricare tutto il
documento si genera l'evento onload e il tag body fa si che
venga richiamata la funzione caricaFeed('elfo',
'sprite.php');. Andiamo a vedere che cosa fa questa
funzione (che ci tengo a sottolineare è l'unica presente in
questo esempio: a dimostrazione del fatto che ajax può
ridurre notevolmente il “peso” e/o la “leggibilità” di
un'applicazione web).
caricaFeed.js
function caricaFeed(id, pagina)
{
if(window.XMLHttpRequest)
req = new XMLHttpRequest();
else if (window.ActiveXObject)
req = new ActiveXObject(Microsoft.XMLHTTP);
req.onreadystatechange = function()
{
if(req.readyState == 4)
if(req.status == 200)
document.getElementById(id).innerHTML = req.responseText;
};
var today = new Date();
var strDateOut = today.getFullYear() + today.getMonth()
+ today.getDate() + today.getMinutes()
+ today.getSeconds();
PAG 2
S.P.R.I.T.e. Magazine VI
req.open("GET", pagina + "?" + strDateOut, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
}
Specifichiamo subito che questa funzione vuole due
argomenti:
1) id dell'elemento nella pagina html
2) la pagina da caricare in background
In primo luogo (chiedo venia se ho omesso commenti
direttamente nel codice), viene creato l'oggetto in grado di
leggere la struttura DOM (Document Object Model) che si
vuole caricare. Dovete sapere che IE e FF hanno due
implementazioni differenti per la gestione delle richieste
HTTP con Javascript (ma va ...).
Per creare un parser controlliamo se esiste
window.XMLHttpRequest. Questo è il nome dell'oggetto
su FF. Beh, ovviamente c'è ancora quel “sempre troppo”
percento dell'utenza che si ostina ad utilizzare IE. In quel
caso l'XMLHttpRequest non esisterà e quindi noi
andremo a creare un controllo ActiveX con
window.ActiveXControl(Microsoft.XMLHTTP). In questo
articolo non voglio entrare nel dettaglio del
funzionamento delle implementazioni di Microsoft o di
altri standard, mi limiterò a dire che hanno punti in
comune.
Teniamo presente che questo oggetto caricherà una
pagina in background, questo caricamento attraverserà
diverse fasi che scaturiranno degli eventi. In particolare
noi possiamo andare a gestire il “momento”
onreadystatechange.
Ogni volta che cambia lo stato di questo oggetto si
controlla se lo stato è 4 (finished) ed a quel punto si
controlla che lo stato sia 200. Se lo stato dovesse essere
404 avremo una situazione di “page not found”. Appurato
il fatto che il nostro documento in background è stato
caricato, ne preleviamo il testo reperibile dall'attributo
responseText. A questo punto lo possiamo
tranquillamente “schiaffare” dove vogliamo. Per come ho
scritto questa funzione, la nostra pagina andrà a caricare
l'elemento passato come argomento: nel nostro caso
“elfo”.
I più attenti noteranno un codice strano:
caricaFeed.js
...
var today = new Date();
var strDateOut = today.getFullYear() + today.getMonth()
+ today.getDate() + today.getMinutes()
+ today.getSeconds();
req.open("GET", pagina + "?" + strDateOut, true);
...
Questo codice assurdo, serve per evitare che IE carichi la pagina in background dalla cache. Se notate viene aggiunta
alla pagina php una querystring il cui valore sarà al 99.9% sempre diverso. Questo fa credere ad IE che le richieste
sono diverse e caricherà nuovamente la pagina in questione.
Adesso è il turno della pagina php. Che cosa farà mai questa pagina?
sprite.php
<?php
$xmldoc = new DOMDocument();
$xmldoc->load('http://punto-informatico.it/fader/pixml.xml');
$xp = new DOMXPath($xmldoc);
$xml = $xp->query("//rss/channel/item/title");
foreach ($xml as $node) {
print $node->textContent.'<br>';
}
?>
Questa è una pagina semplicissima. Anche qui ci sarebbe
da estendere ancora di più questo articolo e parlare
meglio del DOM xml con php, poi... Xpath. Eheheh le cose
da dire sarebbero davvero tante.
Limitiamoci a dire che in questo documento viene creato
un oggetto DOMDocument il cui costruttore altro non fa
che allocare la memoria per contenere un file XML. Il
documento può essere interno o appartenente ad un sito
PAG 3
S.P.R.I.T.e. Magazine VI
esterno. Infatti nella riga successiva si nota che l'XML
caricato fa riferimento al sito di punto-informatico.
Il costruttore della classe DOMXPath, invece, prende
come parametro l'oggetto della classe DOMDocument che
contiene il documento XML, e ne crea uno nuovo che può
essere interrogato con Xpath. La riga successiva carica
tutti i titoli dell'rss. Un semplice foreach se li scorre tutti e
mostra il contenuto del nodo title.
Fine =)
-Per domande e chiarimenti
-GMAIL sensorario at gmail.com
-ICQ 55493398
-MSN knottyboy at hotmail.it
-MYSPACE http://www.myspace.com/knottyboybox
Festa delle matricole 2007
PAG 4
S.P.R.I.T.e. Magazine VI
Welcome Day CSR: una giornata a base di S.P.R.I.Te.!
Il primo giorno di scuola: di nuovo!
Di Tommaso Dionigi <info@tommaso.dionigi.name>
Ormai abituato a “primi giorni di scuola” la
preoccupazione e l’ansia sono ridotte al minimo.
Probabilmente un ambiente nuovo ti non emoziona più
come i banchi, gli odori, i colori di quella prima
elementare di tanti anni fa.
Allora arrivi tranquillo, cercando di riabituarti alla
sveglia che suona in linea con gli orari della “gente
normale”, orari abbandonati a giugno, quando saltando
l’ostacolo dell’esame di maturità ti avviavi con passo
deciso verso quella che capirai presto essere l’ultima vera
e lunga vacanza degli anni di scuola.
Si arriva presto oggi, il “quarto d’ora accademico” non è
ancora entrato a far parte dei tuoi ritardi abituali.
Alle nove sono tutti li, come te, ad aspettare l’inizio della
nuova, ennesima metamorfosi della propria figura di
studente.
Il primo giorno di scuola non si fa gran che, ti dici. Forse
te la caverai in qualche ora, forse nessuno ha pensato a
come organizzare una giornata di passaggio. Ma si, si...
sarà una cosa veloce e ci penseremo domani.
Invece no.
Giacca, cravatta e passo deciso: entra il professore. Non
sembra avere voglia di scherzare né tanto meno di
perdere il suo tempo in inutili introduzioni.
Il concetto è chiaro: 5 minuti del suo tempo valgono di
più della tua intera mattinata. Non c’è speranza.
Sospettavi che “all’Università fossero un po’ esigenti”,
ma non saresti mai arrivato ad immaginare tanto.
Tutti in silenzio, le parole del professore si susseguono
ad un ritmo molto diverso da quello dei tuoi pensieri che
invece ripetono lenti: “non guardare me, ci sono altre 100
persone qui dentro, io taccio e faccio finta di niente”.
Suona un cellulare, la fondamentale raccomandazione
del prof è già stata violata: lui sta perdendo tempo a causa
vostra. Al malcapitato dopo qualche minuto restano solo
frammenti dell’oggetto che fino a poco prima usava come
telefono.
Alla lavagna un limite che non sai risolvere: sono passati
solo 10 minuti.
Ma... non dovevi cavartela con qualche cenno
introduttivo o poco altro? Qualcosa non va, non è
possibile!
Quello che accade dopo è poco importante: il prof si
interrompe, gira il portatile... cosa sta succedendo?
La rivelazione: S.P.R.I.Te. ha pensato a te molto prima
che tu mettessi piede in quell’aula, quella mattina del
primo giorno di ottobre. Era uno scherzo. Benvenuta
all’università cara matricola!
Un’introduzione da parte dei referenti del Corso di
Laurea, qualche ora di lezione. Vai a vedere cosa avrà
avuto il coraggio di organizzare ancora “S.P.R.I.Te.” .
E’ “S.P.R.I.Te. Welcome!”. Stranamente è tutto
tranquillo.
Ma poi cosa sarà questa sprite? E che nome sarà mai
questo?!
Studenti Polo Romagnolo Informatica e Tecnologie,
eccoti la spiegazione.
Benvenuto! Mangi, bevi, fai la tessera dell’Associazione
(l’hai fatta la tessera vero?! ndr).
Ora puoi anche tornare a casa.
Questo primo giorno da universitario non te lo
dimenticherai tanto facilmente.
Tommaso Dionigi
Presidente Ass.Stud. S.P.R.I.Te.
info@tommaso.dionigi.name
Il video dello scherzo a questo link:
http://sprite.csr.unibo.it/blog/2007/10/10/scherzo-matricole-1-ottobre-2007/
PAG 5
S.P.R.I.T.e. Magazine VI
Window applications con wxWidgets e wxDevC++
di Elvis Ciotti <info@elvisciotti.it>
Questa guida, rivolta a chi conosce già C++, illustra un
modo open-source e platform-independent per creare
applicazioni a finestre per Ms Windows, Linux, Max Os
X, Win CE. In pratica un'alternativa gratuita e portabile
a Ms Visual C++ /NET.
Le librerie che forniscono queste funzionalità sono le
wxWidgets (http://wxwidgets.org).
Possono essere usate dai linguaggi ad oggetti C++,
C#/net,Per, Python.
A differenza delle MFC e WTL, utilizzano un look
nativo, quindi indipendente delle API di Ms Windows,
non servono quindi dll esterne. Le wxWidgets sono
estensibili e Open Source.
La grafica che ne risulterà non sarà quindi
perfettamente in stile visuale di Ms Windows se
compilate in piattaforme win32, in pratica lavorerete in
modalità WYSINAWYG (What You See Is Not Always
What You Get).
Nel sito trovate la guida, da tenere sottomano per la
lista funzioni.
Per utilizzare le librerie con l'ausilio di tools per
disegnare i controlli con il mouse, esiste wxDev-C++
(http://wxdsgn.sourceforge.net), ambiente di sviluppo
Dev C++ modificato per utilizzare al meglio le librerie
wxWidgets.
wxDev-C++ contiene sia le librerie che tool grafici per
disporre i controlli nelle finestre, oltre a creare
automaticamente il codice c++ necessario
all'istanziazione, inizializzazione e funzionamento dei
componenti.
Il compilatore che usa è MinGW (cioè il porting di GCC
su windows), non molto veloce ma con un ottimo
debugger. L'editor supporta l'autocompletamento del
codice, comprese le funzioni della libreria wxWidgets.
Iniziamo
Dal menu File creiamo un nuovo wxFrame, lasciamo il
nome Progetto1.
Automaticamente vengono creati i file:
Progetto1Frm.cpp
Progetto1Frm.h
Progetto1Frm.wxform
questi 3 file contengono la classe Progetto1Frm,
estensione di wxFrame.
Consiglio già da adesso di abituarsi a consultare la
guida per vedere le funzioni della classe wxFrame, in
modo da sapere già da subito cosa è possibile fare.
Ad esempio, quando inseriamo i componenti (bottoni,
EditText, Selectbox...) nella finestra, viene ridefinito il
metodo CreateGUIControls() che li instanzia durante la
costruzione della classe, oltre a definire altre proprietà
della finestra.
Progetto1App.cpp
Progetto1App.h
Progetto1App.rc
Contengono il "main" dell'applicazione, cioè il codice
che lancia le varie finestre create.
In questi file viene definita la classe Progetto1FrmApp,
ereditata da wxApp.
I metodi sono essenzialmente due: OnInit() che
instanzia e mostra il nostro unico frame (Progetto1Frm)
e OnExit() che gestisce l'uscita dal programma.
Il file wxform è il file che memorizza le dimensioni dei
frames (windows) e componenti (widgets) al loro
interno.
Primi passi
Per inserire il codice che vogliamo parta con un evento
di un componente, clicchiamo sul componente, nella
finestra proprietà scegliamo l'evento dal menù a discesa.
Viene automaticamente creata la funzione ed aggiunta
alla classe del frame.
Dobbiamo solo inserire il codice da eseguire allo
scatenarsi dell'evento.
Le variabili relative ai componenti della finestra, sono
puntatori alle classi degli oggetti relativi della libreria
(wxButton per i pulsanti, wxTextCtrl per editbox...),
sono dichiarate "private" nella classe Progetto1Frm.
Se siamo all'interno di una funzione della classe (ad
esempio la funzione che parte al click su un pulsante),
per usarne una proprietà, dobbiamo chiamare:
WxButton1->metodo(<argomenti>)
L'elenco dei metodi lo trovate nella guida, classe
WxButton.
Stringhe
Le stringhe, indispensabili per utilizzate quasi tutti i
controlli (es: testo editabile wxTextCtrl, testo dei
pulsanti WxButton), vanno usate con la classe wxString,
quasi identica alla classe String della StdLib C++.
La classe wxString presenta le funzioni per calcolarne
lunghezza, leggerne un carattere, concatenazione,
estrazione sottostringa, conversione del formato,
conversione in numero.
PAG 6
S.P.R.I.T.e. Magazine VI
Alcune funzionalità
Elenco alcuni metodi dei controlli più usati, in modo da
poter creare fin da subito qualche cosa di utile.
Consultate l'elenco degli argomenti e prototipi delle
funzioni nella guida di wxWidgets.
Caselle di testo anche multilinea (wxTextCtrl):
AppendText, GetValue, SetValue, GetNumberOfLines,
GetLineText, GetLineLength, GetStringSelection,
SaveFile, SetValue
CheckBox (wxCheckBox): GetValue, SetValue
SelectBox (wxChoice): Append, GetSelection
Abbiamo anche molti altri controlli, per selezione date,
print e MessageDialog, ColourDialog, Timer,
TreeListCtrl, HTMLwindow...
Sviluppo con wxDevc++
Ci sono dei problemi riguardanti il tool per disegnare i
frames e i componenti al loro interno.
Al momento, disegnando un controllo, non è possibile
più cambiarne il nome per richiamarne proprietà e
metodi, neanche sostituendo tutte le dichiarazioni nei
files del codice. Si può rimediare a questo bug usando un
puntatore alla classe col nome che vogliamo.
Se vogliamo isolarci da questi problemi e avere più
controllo (componenti simili potrebbero essere meglio
gestiti da un array di puntatori piuttosto che da una
variabile per ogni controllo), possiamo creare
manualmente il codice inserendo le dichiarazioni dei
componenti nella classe del frame (Progetto1Frm) e
inserirne la creazione in CreateGUIControls(), metodo
della classe, dove istanziamo il componente con le
relative proprietà.
wxDev-C++ permette di aggiornare il compilatore, le
librerie (anche le wxWidgets) e i files al suo interno
senza dover reinstallare il programma, tramite una
funzionalità presente nel menù di info/about.
Come già detto, l'eseguibile dell'applicazione che viene
prodotto non richiede alcuna libreria esterna per
disegnare e gestire i componenti delle finestre, questo
comporta che la grafica sarà leggermente diversa e
l'eseguibile sarà di alcuni Mb.
L'enorme vantaggio è che abbiamo un software
completamente indipendente, ricompilabile senza tante
modifiche in altre piattaforme.
Una volta compilato su Ms Windows, la grafica del
software funziona sempre, senza terminare
nell'eventuale mancanza di una dll esterna come
potrebbe succedere per applicazioni create con librerie
specifiche del sistema operativo.
Tra le varie opzioni dell'editor di codice, possiamo
specificare i colori con cui vengono evidenziate le varie
parti, oltre a carattere, tabulazioni e modo di elencare le
classi e metodi esistenti.
Troviamo nel menu anche il supporto CVS e controlli
per upload files / progetto.
Tra le opzioni di compilazione troviamo anche il
supporto per compilatori Visual C++ 6, Visual C++
2005, Visual C++ NET, qualora si abbiamo installati, in
alternativa al MinGw presente con l'ambiente.
Alternative
Segnalo anche le librerie SmartWin++
(http://smartwin.sourceforge.net), sempre distribuite
sotto licenza GPL e fornite con un ambiente tipo DevCpp
Segnalo anche Ultimate++
(http://upp.sourceforge.net/index.html), un ambiente
di sviluppo che dovrebbe creare eseguibili meno pesanti
e compilare più velocemente.
Un ambiente RAD (rapid application development)
commerciale per disegnare con le wxWidgets è
WxDesigner (http://www.roebling.de), mentre un
ambiente alternativo a wxDev-C++ freeware è invece
VisualWx (http://visualwx.altervista.org).
PAG 7
+
Interfaccia di wxDevC+
S.P.R.I.T.e. Magazine VI
Development day – 26 ottobre 2007
Development Day
Il Development Day si svolgerà lungo tutta la
giornata del 26 Ottobre 2007 presso il Corso di
Laurea in Scienze dell’Informazione di Cesena.
Il tema centrale di questa giornata tratta,
ovviamente, la programmazione in tutti i suoi
aspetti. La giornata sarà composta di interventi
puramente relazionali (detti talk) e di
interventi con dimostrazione pratica (detti
workshop). Inoltre, saranno suddivisi in due
livelli: livello I, che si riferisce a quei interventi
in cui non è necessaria una conoscenza molto
approfondita dell’argomento relazionato, e
livello II, in cui è necessaria una conoscenza
approfondita dell’argomento relazionato.
Call for Paper
Chiunque voglia proporre una conferenza per
il Development Day può consultare il Call for
Paper. Troverete tutte le specifiche per farci
pervenire le vostre proposte. Sono indicati gli
argomenti generali che preferiremmo trattare
durante le due giornate, le modalità di
svolgimento delle conferenze, le modalità di
invio degli interventi e le date da rispettare per
la richiesta e la conferma della propria
conferenza.
Se avete interventi da proporre per il
Development Day vi invitiamo a contattarci di
modo che i vostri contributi, i risultati del
vostro lavoro, le vostre esperienze possano
essere condivise con chi come voi apprezza e
lavora con Linux o più in generale con e per gli
utenti e gli sviluppatori del mondo del free
software e dell’open source.
Elenco dei talk, informazioni al sito web: http://sprite.csr.unibo.it/blog/progetti/linuxday-2007/
Last.fm, the social music revolution
di Matteo Battistelli <matteo.battistelli2@studio.unibo.it>
Vi piace ascoltare musica? E vi piace farlo, magari,
tramite il vostro pc... mentre programmate, leggete la
posta, scribacchiate un breve articolo per il giornale di
Sprite? E magari vi piacerebbe avere una cronologia di ciò
che avete ascoltato, su questa ottenere una serie di
statistiche e trovare utenti per il web che hanno gusti
simili ai vostri e che possano consigliarvi qualche pezzo
interessante?
Oppure avete un gruppo e qualche vostro brano da
distribuire, o semplicemente volete pubblicizzare le vostre
prossime esibizioni live?
Bene allora last.fm è il sito che fa per voi.
Quella che segue è solo una breve introduzione ad alcune
delle funzioni , a mio avviso le più interessanti, che il sito
offre. Per le altre vi consiglio di andare su www.last.fm e
dare una sbirciatina alla guida: il sito è molto intuitivo e
con qualche click del mouse scoprirete che si possono far
parecchie cose interessanti.
PAG 8
S.P.R.I.T.e. Magazine VI
Audioscrobbler
Una volta registrati al sito e scaricato l'apposito player (o
un plug-in per vostro player preferito) siete pronti per
effettuare l'
audioscrobbling.
Ma che cos'è
l'audioscrobbler?
Esso non è altro
che un sistema
per tenere traccia
dei brani che
ascoltate. Questi
saranno
immediatamente
pubblicati sul
vostro spazio
last.fm (che si
trova all'indirizzo
www.last.fm/user/vosto_username). Dopo un numero
sufficiente di brani memorizzati il sito inizierà a fornirvi
una serie di statistiche tra cui la classifica degli artisti,
album e pezzi più ascoltati. Inoltre, e questa è forse la
cosa più interessante, vi consiglierà brani o musicisti
compatibili con i vostri gusti.
Sulla base di ciò che ascoltate inoltre verra stilata una
lista di "vicini", utenti cioè che hanno gusti simili ai vostri
e da cui potrete farvi consigliare qualche nuovo artista.
I profili degli artisti.
Per ogni cantante o gruppo esiste un apposito spazio
all'interno del sito che mostra una breve descrizione con
la lista dei suoi concerti oltre che la classifica dei brani
più ascoltati dagli utenti del sito. Alcuni di questi brani
possono essere scaricati, gratuitamente o a pagamento, o
ascoltati in streaming.
Questa sezione del sito, naturalmente, può essere usata
anche da gruppi emergenti che possono fare l'upload dei
propri brani e decidere in che modo distribuirli o
pubblicare le date dei propri concerti.
Playlist
Una funzione molto interessante è quella che dà la
possibilità di creare una playlist con i propri brani
preferiti. Se alla vostra playlist vengono aggiunti almeno
15 brani (scelti anche tra quelli distribuiti a pagamento) di
album e artisti diversi quest'ultima potrà essere
liberamente ascoltata in streaming da chiunque si colleghi
all'indirizzo del vostro spazio su last.fm. Naturalmente
l'utente non potrà scegliere liberamente il brano da
ascoltare: sarà il sistema che si occuperà di selezionare,
come una sorta di radio on-line, quale brano della playlist
trasmettere in streaming.
Widgets
In questa sezione del sito è possibile creare delle piccole
applet da inserire nel proprio sito web o blog. Con una
serie di semplici click otterrete in un batter d'occhio il
codice html da aggiungere alla propria pagina web. E'
possibile, ad esempio, creare il codice di un semplice
playlist player, un "quilt", cioè un collage animato delle
copertine degli album o delle foto degli artisti preferiti,
oppure la classifica dei brani più ascoltati.
PAG 9
S.P.R.I.T.e. Magazine VI
“Stay hungry. Stay foolish.” by Steve Jobs
a cura di Venturi Filippo (2007.05.19)
Fidatevi di me.
Questo articolo è lungo, ma merita di essere
letto e scommetto una birra che alla fine mi
darete ragione.
Nel Giugno 2005, alla Stanford University,
situata in California nella Contea di Santa Clara,
Steve Jobs (fondatore di Apple) ha ricevuto la
laurea honoris causa, ovvero uno speciale titolo
accademico assegnato ad una persona come
riconoscimento alla propria esperienza e
competenza in un determinato campo del
sapere, pur senza aver dato esami.
Steve Jobs, alla Stanford University
L’evento è stato sicuramente importante anche se ormai questo genere di riconoscimento sta perdendo valore, visto
che avviene sempre più spesso, da quando le università hanno scoperto il lato “pubblicitario” di questo tipo di
iniziativa.
La parte più interessante però è il discorso tenuto da Jobs che, pur essendo lungo, ha fatto riflettere e a anche portato
alla luce alcuni piccoli aneddoti sul Jobs studente e in seguito manager, senza mai annoiare. Ecco il testo tradotto. (Il
video è reperibile all’indirizzo http://news-service.stanford.edu/news/2005/june15/videos/51.html)
“Sono onorato di essere qui con voi oggi alle vostre lauree in una delle migliori università del mondo. Io non mi
sono mai laureato. Anzi, per dire la verità, questa è la cosa più vicina a una laurea che mi sia mai capitata. Oggi
voglio raccontarvi tre storie della mia vita. Tutto qui, niente di eccezionale: solo tre storie.”
La prima storia è sull’unire i puntini
“Ho lasciato il Reed College dopo il primo semestre, ma
poi ho continuato a frequentare in maniera ufficiosa per
altri 18 mesi circa prima di lasciare veramente. Allora,
perché ho mollato?
E’ cominciato tutto prima che nascessi. Mia madre
biologica era una giovane studentessa di college non
sposata, e decise di lasciarmi in adozione. Riteneva con
determinazione che avrei dovuto essere adottato da
laureati, e fece in modo che tutto fosse organizzato per
farmi adottare fin dalla nascita da un avvocato e sua
moglie. Però quando arrivai io loro decisero all’ultimo
minuto che avrebbero voluto adottare una bambina.
Così quelli che poi sono diventati i miei genitori adottivi
e che erano in lista d’attesa, ricevettero una chiamata nel
bel mezzo della notte che gli diceva: “C’è un bambino, un
maschietto, non previsto. Lo volete voi?” Loro risposero:
“Certamente”. Più tardi mia madre biologica scoprì che
mia madre non si era mai laureata al college e che mio
padre non aveva neanche finito il liceo. Rifiutò di
firmare le ultime carte per l’adozione. Poi accetto di
farlo, mesi dopo, solo quando i miei genitori adottivi
promisero formalmente che un giorno io sarei andato al
college.
Diciassette anni dopo andai al college. Ma
ingenuamente ne scelsi uno altrettanto costoso di
Stanford, e tutti i risparmi dei miei genitori finirono per
pagarmi l’ammissione e i corsi. Dopo sei mesi, non
riuscivo a vederci nessuna vera opportunità. Non avevo
idea di quello che avrei voluto fare della mia vita e non
vedevo come il college potesse aiutarmi a capirlo.
Eppure ero là, che spendevo tutti quei soldi che i miei
genitori avevano messo da parte lavorando per tutta la
loro vita. Così decisi di mollare e avere fiducia che tutto
sarebbe andato bene lo stesso. Era molto difficile
all’epoca, ma guardandomi indietro ritengo che sia stata
una delle migliori decisioni che abbia mai preso.
Nell’attimo che mollai il college, potei anche smettere di
seguire i corsi che non mi interessavano e cominciai
invece a capitare nelle classi che trovavo più
interessanti.
Non è stato tutto rose e fiori, però. Non avevo più una
camera nel dormitorio, ed ero costretto a dormire sul
pavimento delle camere dei miei amici. Guadagnavo
soldi riportando al venditore le bottiglie di Coca cola
vuote per avere i cinque centesimi di deposito e poter
comprare da mangiare. Una volta la settimana, alla
domenica sera, camminavo per sette miglia attraverso
la città per avere finalmente un buon pasto al tempio
Hare Krishna: l’unico della settimana. Ma tutto quel che
ho trovato seguendo la mia curiosità e la mia intuizione
è risultato essere senza prezzo, dopo. Vi faccio subito un
esempio.
Il Reed College all’epoca offriva probabilmente la
miglior formazione del Paese relativamente alla
calligrafia. Attraverso tutto il campus ogni poster, ogni
etichetta, ogni cartello era scritto a mano con calligrafie
PAG 10
S.P.R.I.T.e. Magazine VI
meravigliose. Dato che avevo mollato i corsi ufficiali,
decisi che avrei seguito la classe di calligrafia per
imparare a scrivere così. Fu lì che imparai dei caratteri
serif e san serif, della differenza tra gli spazi che
dividono le differenti combinazioni di lettere, di che cosa
rende grande una stampa tipografica del testo. Fu
meraviglioso, in un modo che la scienza non è in grado
di offrire, perché era artistico, bello, storico e io ne fui
assolutamente affascinato.
Nessuna di queste cose però aveva alcuna speranza di
trovare una applicazione pratica nella mia vita. Ma poi,
dieci anni dopo, quando ci trovammo a progettare il
primo Macintosh, mi tornò tutto utile. E lo utilizzammo
tutto per il Mac. E’ stato il primo computer dotato di una
meravigliosa capacità tipografica. Se non avessi mai
lasciato il college e non avessi poi partecipato a quel
singolo corso, il Mac non avrebbe probabilmente mai
avuto la possibilità di gestire caratteri differenti o font
spaziati in maniera proporzionale. E dato che Windows
ha copiato il Mac, è probabile che non ci sarebbe stato
nessun personal computer con quelle capacità. Se non
avessi mollato il college, non sarei mai riuscito a
frequentare quel corso di calligrafia e i persona
computer potrebbero non avere quelle stupende capacità
di tipografia che invece hanno. Certamente all’epoca in
cui ero al college era impossibile unire i puntini
guardando il futuro. Ma è diventato molto, molto chiaro
dieci anni dopo, quando ho potuto guardare all’indietro.
Di nuovo, non è possibile unire i puntini guardando
avanti; potete solo unirli guardandovi all’indietro. Così,
dovete aver fiducia che in qualche modo, nel futuro, i
puntini si potranno unire. Dovete credere in qualcosa - il
vostro ombelico, il destino, la vita, il karma, qualsiasi
cosa. Questo tipo di approccio non mi ha mai lasciato a
piedi e invece ha sempre fatto la differenza nella mia
vita.
La mia seconda storia è a proposito
dell’amore e della perdita
Sono stato fortunato: ho trovato molto presto che cosa
amo fare nella mia vita. Woz e io abbiamo fondato Apple
nel garage della casa dei miei genitori quando avevo
appena 20 anni. Abbiamo lavorato duramente e in 10
anni Apple è cresciuta da un’azienda con noi due e un
garage in una compagnia da due miliardi di dollari con
oltre quattromila dipendenti. L’anno prima avevamo
appena realizzato la nostra migliore creazione - il
Macintosh - e io avevo appena compiuto 30 anni, e in
quel momento sono stato licenziato. Come si fa a venir
licenziati dall’azienda che hai creato? Beh, quando Apple
era cresciuta avevamo assunto qualcuno che ritenevo
avesse molto talento e capacità per guidare l’azienda
insieme a me, e per il primo anno le cose sono andate
molto bene. Ma poi le nostre visioni del futuro hanno
cominciato a divergere e alla fine abbiamo avuto uno
scontro. Quando questo successe, il Board dei direttori si
schierò dalla sua parte. Quindi, a 30 anni io ero fuori. E
in maniera plateale. Quello che era stato il principale
scopo della mia vita adulta era andato e io ero devastato
da questa cosa.
Non ho saputo davvero cosa fare per alcuni mesi. Mi
sentivo come se avessi tradito la generazione di
imprenditori prima di me - come se avessi lasciato
cadere la fiaccola che mi era stata passata. Incontrai
David Packard e Bob Noyce e tentai di scusarmi per aver
rovinato tutto così malamente. Era stato un fallimento
pubblico e io presi anche in considerazione l’ipotesi di
scappare via dalla Silicon Valley. Ma qualcosa
lentamente cominciò a crescere in me: ancora amavo
quello che avevo fatto. L’evolvere degli eventi con Apple
non avevano cambiato di un bit questa cosa. Ero stato
respinto, ma ero sempre innamorato. E per questo decisi
di ricominciare da capo.
Non me ne accorsi allora, ma il fatto di essere stato
licenziato da Apple era stata la miglior cosa che mi
potesse succedere. La pesantezza del successo era stata
rimpiazzata dalla leggerezza di essere di nuovo un
debuttante, senza più certezze su niente. Mi liberò dagli
impedimenti consentendomi di entrare in uno dei periodi
più creativi della mia vita.
Durante i cinque anni successivi fondai un’azienda
chiamata NeXT e poi un’altra azienda, chiamata Pixar, e
mi innamorai di una donna meravigliosa che sarebbe
diventata mia moglie. Pixar si è rivelata in grado di
creare il primo film in animazione digitale, Toy Story, e
adesso è lo studio di animazione più di successo al
mondo. In un significativo susseguirsi degli eventi, Apple
ha comprato NeXT, io sono ritornato ad Apple e la
tecnologia sviluppata da NeXT è nel cuore dell’attuale
rinascimento di Apple. E Laurene e io abbiamo una
meravigliosa famiglia.
Sono sicuro che niente di tutto questo sarebbe successo
se non fossi stato licenziato da Apple. E’ stata una
medicina molto amara, ma ritengo che fosse necessaria
per il paziente. Qualche volta la vita ti colpisce come un
mattone in testa. Non perdete la fede, però. Sono
convinto che l’unica cosa che mi ha trattenuto dal
mollare tutto sia stato l’amore per quello che ho fatto.
Dovete trovare quel che amate. E questo vale sia per il
vostro lavoro che per i vostri affetti. Il vostro lavoro
riempirà una buona parte della vostra vita, e l’unico
modo per essere realmente soddisfatti è fare quello che
riterrete un buon lavoro. E l’unico modo per fare un
buon lavoro è amare quello che fate. Se ancora non
l’avete trovato, continuate a cercare. Non
accontentatevi. Con tutto il cuore, sono sicuro che
capirete quando lo troverete. E, come in tutte le grandi
storie, diventerà sempre migliore mano a mano che gli
anni passano. Perciò, continuate a cercare sino a che
non lo avrete trovato. Non vi accontentate.
La mia terza storia è a proposto della morte
Quando avevo 17 anni lessi una citazione che suonava
più o meno così: “Se vivrai ogni giorno come se fosse
l’ultimo, sicuramente una volta avrai ragione”. Mi colpì
molto e da allora, per gli ultimi 33 anni, mi sono
guardato ogni mattina allo specchio chiedendomi: “Se
oggi fosse l’ultimo giorno della mia vita, vorrei fare
quello che sto per fare oggi?”. E ogni qualvolta la
risposta è “no” per troppi giorni di fila, capisco che c’è
qualcosa che deve essere cambiato.
Ricordarsi che morirò presto è il più importante
strumento che io abbia mai incontrato per fare le grandi
scelte della vita. Perché quasi tutte le cose - tutte le
aspettative di eternità, tutto l’orgoglio, tutti i timori di
PAG 11
S.P.R.I.T.e. Magazine VI
essere imbarazzati o di fallire - semplicemente
svaniscono di fronte all’idea della morte, lasciando solo
quello che c’è di realmente importante. Ricordarsi che
dobbiamo morire è il modo migliore che io conosca per
evitare di cadere nella trappola di chi pensa che avete
qualcosa da perdere. Siete già nudi. Non c’è ragione per
non seguire il vostro cuore.
Più o meno un anno fa mi è stato diagnosticato un
cancro. Ho fatto la scansione alle sette e mezzo del
mattino e questa ha mostrato chiaramente un tumore
nel mio pancreas. Non sapevo neanche che cosa fosse un
pancreas. I dottori mi dissero che si trattava di un
cancro che era quasi sicuramente di tipo incurabile e che
sarebbe stato meglio se avessi messo ordine nei miei
affari (che è il codice dei dottori per dirti di prepararti a
morire). Questo significa prepararsi a dire ai tuoi figli in
pochi mesi tutto quello che pensavi avresti avuto ancora
dieci anni di tempo per dirglielo. Questo significa essere
sicuri che tutto sia stato organizzato in modo tale che
per la tua famiglia sia il più semplice possibile. Questo
significa prepararsi a dire i tuoi “addio”.
Ho vissuto con il responso di quella diagnosi tutto il
giorno. La sera tardi è arrivata la biopsia, cioè il
risultato dell’analisi effettuata infilando un endoscopio
giù per la mia gola, attraverso lo stomaco sino agli
intestini per inserire un ago nel mio pancreas e
catturare poche cellule del mio tumore. Ero sotto
anestesia ma mia moglie - che era là - mi ha detto che
quando i medici hanno visto le cellule sotto il
microscopio hanno cominciato a gridare, perché è
saltato fuori che si trattava di un cancro al pancreas
molto raro e curabile con un intervento chirurgico. Ho
fatto l’intervento chirurgico e adesso sto bene.
Questa è stata la volta in cui sono andato più vicino
alla morte e spero che sia anche la più vicina per qualche
decennio. Essendoci passato attraverso posso parlarvi
adesso con un po’ più di cognizione di causa di quando la
morte era per me solo un concetto astratto e dirvi:
Nessuno vuole morire. Anche le persone che vogliono
andare in paradiso non vogliono morire per andarci. E
anche che la morte è la destinazione ultima che tutti
abbiamo in comune. Nessuno gli è mai sfuggito. Ed è
così come deve essere, perché la Morte è con tutta
probabilità la più grande invenzione della Vita. E’
l’agente di cambiamento della Vita. Spazza via il vecchio
per far posto al nuovo. Adesso il nuovo siete voi, ma un
giorno non troppo lontano diventerete gradualmente il
vecchio e sarete spazzati via. Mi dispiace essere così
drammatico ma è la pura verità.
Il vostro tempo è limitato, per cui non lo sprecate
vivendo la vita di qualcun altro. Non fatevi intrappolare
dai dogmi, che vuol dire vivere seguendo i risultati del
pensiero di altre persone. Non lasciate che il rumore
delle opinioni altrui offuschi la vostra voce interiore. E,
cosa più importante di tutte, abbiate il coraggio di
seguire il vostro cuore e la vostra intuizione. In qualche
modo loro sanno che cosa volete realmente diventare.
Tutto il resto è secondario.
Quando ero un ragazzo c’era una incredibile rivista che
si chiamava The Whole Earth Catalog, praticamente una
delle bibbie della mia generazione. E’ stata creata da
Stewart Brand non molto lontano da qui, a Menlo Park,
e Stewart ci ha messo dentro tutto il suo tocco poetico. E’
stato alla fine degli anni Sessanta, prima dei personal
computer e del desktop publishing, quando tutto era fato
con macchine da scrivere, forbici e foto polaroid. E’ stata
una specie di Google in formato cartaceo tascabile, 35
anni prima che ci fosse Google: era idealistica e
sconvolgente, traboccante di concetti chiari e fantastiche
nozioni.
Stewart e il suo gruppo pubblicarono vari numeri di
The Whole Earth Catalog e quando arrivarono alla fine
del loro percorso, pubblicarono il numero finale. Era più
o meno la metà degli anni Settanta e io avevo la vostra
età. Nell’ultima pagina del numero finale c’era una
fotografia di una strada di campagna di prima mattina,
il tipo di strada dove potreste trovarvi a fare l’autostop
se siete dei tipi abbastanza avventurosi. Sotto la foto
c’erano le parole: “Stay Hungry. Stay Foolish.”, siate
affamati, siate folli. Era il loro messaggio di addio. Stay
Hungry. Stay Foolish. Io me lo sono sempre augurato
per me stesso. E adesso che vi laureate per cominciare
una nuova vita, lo auguro a voi.
Stay Hungry. Stay Foolish.
Grazie a tutti.”
FONTI:
http://news-service.stanford.edu/news/2005/june15/grad-061505.html
http://news-service.stanford.edu/news/2005/june15/videos/51.html
http://macintosh.wordpress.com/2005/10/27/stay-hungry-stay-foolish/
http://www.youtube.com/watch?v=D1R-jKKp3NA
PAG 12
S.P.R.I.T.e. Magazine VI
Enigmi matematici
tratti da chiesi.net
Una corda e tre animali
Immaginate di avere una corda lunga quanto la
circonferenza terrestre (cioè all'incirca 40000 km), che si
trova distesa lungo l'equatore. Immaginate ora di
prendere questa corda, di tagliarla, di aggiungervene un
metro e quindi di ridistribuirla attorno all'equatore in
modo che abbia una distanza dalla superficie terrestre che
rimanga costante lungo tutta la circonferenza.
La domanda a cui dovete cercare
di rispondere è: quale dei seguenti
tre animali può passare di misura
nello spazio interposto tra la corda
e la superficie: una formica, un
gatto o un elefante?
Il ciclista
Un ciclista scala una montagna
alla media di 20 km/h , e poi,
giunto in cima, gira la bicicletta e
ridiscende a valle (seguendo la
stessa strada) ad una media di 60
km/h. Qual è la media complessiva
tenuta dal ciclista, durante tutto il suo viaggio?
Stato di famiglia
Due vecchi amici matematici si ritrovano dopo molti
anni, e discorrono per un po'. Il primo fa: "Allora hai tre
figli? E quanti anni hanno?". L'altro risponde:
"Considerando le loro età come numeri interi, il loro
prodotto è 36, e la somma è il numero civico di questa
casa qui davanti". Il primo ci pensa un po' e sbotta: "Beh,
non mi hai certo dato dei dati sufficienti!" e il secondo
ribatte: "Hai ragione: il maggiore ha gli occhi azzurri".
Quali sono le età dei tre figli?
Gioco a premi
Supponiamo di essere a un gioco a premi e di dovere
scegliere quale porta aprire fra le tre proposte dal
presentatore. Dietro una di queste c'e` un'auto, nelle
altre due... una capra. Noi scegliamo una porta, e come
capita in tutte le puntate, il presentatore ci dice "Ne sei
proprio sicuro? Puoi ancora cambiare la scelta: anzi, ti
voglio aiutare", e apre una delle porte che noi non
abbiamo scelto, mostrando una capra. Ammesso che
vogliamo vincere l'auto, ci conviene cambiare porta, o la
cosa è indifferente?
Corde che bruciano
Ci sono a disposizione due corde di lunghezza uguale, e
tanti accendini quanti si vuole... e nient'altro! Entrambe le
corde, se incendiate, impiegano un'ora esatta per
bruciare.
Cioè dando fuoco ad una estremità, il fuoco arriverà
all'altra estremità dopo esattamente 60 minuti. Le due
corde però non bruciano in maniera uniforme, ma
casualmente, e non bruciano nemmeno
nello stesso modo ma ognuna per i fatti
suoi. L'obiettivo del gioco è riuscire a
trovare un modo per calcolare il passare
di un quarto d'ora di tempo.
Successione di numeri
Qual è il termine successivo in questa
successione?
1 - 11 - 21 - 1211 - 111221 - ...
Le noci di cocco
Tre marinai trovano un mucchio di noci
di cocco. Il primo ne prende la metà più mezza noce. Il
secondo prende metà di quello che è rimasto più mezza
noce. Anche il terzo prende metà del rimanente più mezza
noce. Rimane esattamente una noce che essi danno alla
scimmia. Quante erano inizialmente le noci del mucchio?
I berretti
Tre esploratori vengono catturati da una tribù africana
con l'hobby degli enigmi. Il capo tribù decide di graziarli
solo se si dimostrano sufficientemente intelligenti. Mostra
loro tre berretti rossi e due berretti bianchi. Poi li benda e
pone sulla testa di ognuno un berretto rosso. Una volta
sbendati ogni esploratore può vedere il berretto sulla testa
degli altri ma non il proprio.
Chiede al primo: "Di che colore è il berretto che hai sulla
testa?". Il primo osserva gli altri due e risponde che non lo
sa. Chiede al secondo: "Di che colore è il berretto che hai
sulla testa?". Il secondo osserva gli altri due e risponde
che non lo sa. Chiede al terzo: "Di che colore è il berretto
che hai sulla testa?". Il terzo risponde esattamente
dicendo che il proprio berretto è rosso salvando la vita a
tutti e tre. Come ha fatto a saperlo? (Si supponga che i tre
esploratori siano dei logici perfetti, cioè siano in grado di
dedurre istantaneamente tutte le conseguenze da un
insieme di premesse dato).
SOLUZIONI NELLA PROSSIMA PAGINA !
PAG 13
S.P.R.I.T.e. Magazine VI
Soluzioni
soluzioni agli enigmi della pagina precedente
Una corda e tre animali
La risposta è: un gatto. Questa risposta è sorprendente,
in quanto si è indotti a pensare che allungare una
circonferenza così lunga di una percentuale tanto
insignificante provochi un aumento del raggio altrettanto
insignificante. Invece questo non è vero, poichè
l'incremento subito dal raggio dipende solo dalla
lunghezza del pezzo di corda aggiunto e non dal raggio
della circonferenza iniziale. Detto questo, il calcolo è
veramente immediato. Infatti, indicando con R il raggio
terrestre, con PI la costante pi greco e con C=2*PI*R la
circonferenza, si ha che la distanza tra la corda e la
superficie terrestre vale: d = (C+1)/(2*PI) - R = 1/(2*PI)
che vale circa 16 centimetri, e quindi ci può passare sotto
un gatto.
Il ciclista
La risposta corretta è: 30 km/h. La risposta più
frequente che viene data a questo problema è è invece 40
km/h, basata sul fatto che che il ciclista ha percorso
esattamente metà del cammino alla velocità (media) di 20
km/h e esattamente l'altra metà alla velocità (media) di
60 km/h; ma ciò nondimeno, la risposta è errata, giacché
procedendo in discesa ad una velocità tripla rispetto a
quella tenuta in salita il nostro atleta ha pedalato per un
tempo triplo alla velocità di 20 km/h rispetto al tempo in
cui è andato a 60 km/h. La risposta corretta è dunque
data da v = (3 x 20 + 60) / 4 = 30 km/h. Bisogna cioè
tenere conto del peso relativo di ciascuna delle medie.
Stato di famiglia
Le terne di numeri interi il cui prodotto è 36 (con le
somme vicino) sono riportate in tabella. Il secondo
matematico conosce la somma (vede il numero della casa)
ma non sa rispondere. Questo significa che la somma è 13,
l'unico numero che appare due volte. La seconda
affermazione del primo matematico ci dice che la risposta
giusta è 9-2-2, nell'altro caso infatti si avrebbero due
gemelli di 6 anni.
Terna Somma
36-1-1 38
18-2-1 21
12-3-1 16
9-4-1 14
9-2-2 14
6-6-1 13
6-3-2 11
4-3-3 10
Gioco a premi
Il trucco qui è il fatto che il presentatore non apre una
porta a caso, ma ne sceglie una con una capra.
Supponiamo di avere scelto la prima porta: in questo
momento abbiamo probabilità 1/3 che l'auto sia dietro
una qualunque porta. Nei due casi in cui l'auto sia nella
porta 2 o 3, il presentatore apre rispettivamente la porta 3
o 2, e se noi cambiamo scelta vinciamo (probabilità 2/3);
se avevao scelto la porta giusta, lui ne apre a caso una
delle altre (probabilità 1/6 per ciascuna) e se noi
cambiamo perdiamo (probabilita` 1/3). Quindi ci
conviene cambiare porta.
Corde che bruciano
All'inizio si prende la prima corda e si dà fuoco a
entrambe le estremità contemporaneamente, e sempre
nello stesso istante accendo un estremo della seconda
corda. Passata mezz'ora la prima corda sarà
completamente consumata (visto che ci avrebbe
impiegato un'ora se fosse stata accesa solo da una parte).
A questo punto la seconda corda continuerebbe a bruciare
ancora per mezz'ora, ma se si dà fuoco anche all'altro
estremo, finirà esattamente nel giro di un quarto d'ora....
il quarto d'ora da misurare.
Successione di numeri
Il termine successivo è 312211. Ogni termine si ricava dal
precedente "spiegando cosa è scritto": in 1112211 ci sono
tre 1, due 2 e ancora due 1, quindi 3 1, 2 2, 2 1, quindi
312221.
Le noci di cocco
La risposta è 15 noci. Infatti se alla fine resta una noce
(quella che viene data alla scimmia) vuol dire che il terzo
marinaio si è trovato davanti ad un mucchio di 3 noci, dal
quale ne ha prese 2, ovvero metà del mucchio (cioè una
noce e mezza) più mezza noce, lasciandone 1.
Analogamente il secondo marinaio avrà avuto a
disposizione 7 noci prendendone 4 (3 e mezzo + 1 mezza
noce) e lasciandone appunto 3 per il terzo marinaio.
Infine, il primo marinaio poteva disporre di un totale di 15
noci, e ne ha prese 8.
I berretti
Il primo esploratore non sa rispondere di che colore è il
proprio berretto perciò evidentemente vuol dire che gli
altri due non hanno entrambi il berretto bianco,
altrimenti avrebbe saputo rispondere che il proprio era
rosso.
Neppure il secondo esploratore sa di che colore è il
proprio berretto, ciò significa che il terzo non può avere il
berretto bianco altrimenti lui avrebbe detto che il suo è
rosso (non potendo essere entrambi bianchi).
Di conseguenza il terzo dice che è il proprio è rosso .
PAG 14
S.P.R.I.T.e. Magazine VI
Streamtuner - Installazione, uso e trickz
di Matteo Lupini <matteo.lupini@studio.unibo.it>
Salve ragazzi, amanti di Linux e della musica. Stanchi
della solita musica? Avete mai sentito parlare di
streaming Audio/Video? Certamente, immagino.
Streaming (dall'inglese stream che significa fiume, o
corrente) è quel flusso di dati audio/video trasmessi da
una sorgente ad una o più destinazioni tramite la rete
internet. Lo streaming può essere Live oppure
OnDemand. Per OnDemand intendiamo quella corrente
di dati che risiede sul server ospitante, e che viene avviata
su richiesta del client. Live invece, significa la tradizionale
trasmissione radio o video in broadcast. I dati che
vengono trasmessi in streaming, sono compressi per
poter occupare il minor numero di banda possibile, e
vengono bufferizzati sul client, ovvero, prima di
riprodurre, vengono prima raccolte una quantità di
informazioni tale da non creare stalli o interruzioni nella
riproduzione. Questi file, quindi, non vengono scaricati
interamente e fisicamente sul client, i dati ricevuti
vengono decompressi e riprodotti pochi secondi dopo
l'inizio della ricezione, e scompaiono con la chiusura del
programma.
In questa sede mi occuperò di streaming Audio Live, e di
un programma per poter utilizzare questo servizio sulla
propria Linux Box. Vediamo come poter usare
StreamTuner!
Streamtuner (http://www.nongnu.org/streamtuner) è
free ed è coperto dalla GNU GPL, sfrutta servizi come
SHOUTcast (http://www.shoutcast.com) e Live365
(http://www.live365.com), che sono siti web che
permettono di ascoltare la propria musica preferita in
streaming, su vere e proprie radio. Streamtuner permette
di sfogliare gli archivi e le radio di questi due principali
servizi, di selezionare un canale, e con l'aiuto di
StreamRipper di poterla registrare e riascoltarla quando
si vuole. Ma andiamo passo passo:
Installazione:
Streamtuner si può reperire dal proprio sito web, oppure
dalle repository Debian tramite il comando:
# apt-get install streamtuner
ricordatevi, però, di abilitare l'opzione “universe” nelle
vostre repository.
Per poter funzionare correttamente, Streamtuner ha
bisogno dei seguenti pacchetti: GTK+ (versione 2.4.0 o
superiore) e libcurl (versione 7.10.8 o superiore), che sono
essenziali per il funzionamento del programma, più altri
pacchetti opzionali: libxml (versione 2.0 or superiore),
TagLib (versione 1.2 o superiore), Python (versione 2.3 o
superiore) e PyGTK (versione 2.4.0 o superiore). Con
tutta questa roba, streamtuner funzionerà alla perfezione,
e sarete in grado di sfogliare non soltanto SHOUTcast e
Live365, ma anche Xiph, basic.ch, Google Stations e
punkcast.com. Per l'installazione dai sorgenti, seguite la
guida INSTALL che si trova all'interno del pacchetto, per
poterlo compilare adeguatamente.
Utilizzo:
Aprite Streamtuner, selezionate il servizio che preferite,
come SHOUTcast o Live365, selezionate il genere
musicale che preferite poi andate sulla stazione che volete
ascoltare e cliccate sul pulsante che si trova in alto “Tune
In”. Si aprirà il lettore multimediale predefinito che
riceverà la radio e la bufferizzerà riproducendo la stazione
selezionata. Semplice, no? Per modificare il lettore
multimediale andate nel menu Edit -> Preferences. Nella
scheda Application vedrete una tabella. Nella colonna di
destra, dove c'è scritto “Listen to a stream”, di fianco
apparirà la scritta, ad esempio “xmms %q”. Cancellare
xmms e sostituirlo con amarok, ad esempio, o noatun. La
cosa importante è di non eliminare %q alla fine, lasciarlo
invariato. Esempio: “amarok %q” o “/usr/bin/amarok
%q”.
Trickz
Ora, non vi basta ascoltare solo la musica, ma volete
registrarla e salvarla sul vostro hard disk per poterla
ascoltare ogni volta che volete? Ci pensa Streamripper.
Importante: registrare musica dalla radio è perfettamente
legale, come anche registrare un programma dalla TV, ma
ricordate che condividere questa musica da voi registrata
sulla rete è vietato, dato che tutta la musica riprodotta è
coperta da diritti d'autore. Ci siamo capiti? Se proprio
volete farlo, vedete almeno di non farvi beccare! ;) Ma
veniamo a noi. Per scaricare streamripper utilizziamo il
nostro fantastico Advanced Package Toolkit, se
utilizziamo Debian, oppure scarichiamo i sorgenti e li
compiliamo da http://streamripper.sourceforge.net, in
questo modo:
# apt-get install streamripper
Ora, diciamo a streamtuner di usare streamripper per
registrare musica, in questo modo: Nel menu Edit ->
Preferences, cerchiamo nella colonna di destra la voce
“Record a stream”, e cancelleremo quello che c'è dentro
con, ad esempio, questa riga
x-terminal-emulator -e streamripper %q
-d /home/mouse/Ripped -r -q
dove “/home/mouse/Ripped” è la cartella dove andrà
salvata tutta la musica registrata. Ricordate che la cartella
dove andrete a salvare i file, deve poter godere dei
permessi dell'utente, perché se non ci sono i permessi di
scrittura, il rippaggio non funzionerà.
L'opzione "-r" dice a Streamripper di creare un server di
ritrasmissione. In altre parole, se non lo fate scaricherete
la versione rippata due volte, una da streamripper, e una
dal vostro media player. Non è un problema se avete una
banda larga, ma d'altro canto risparmiare banda è
importante. Come dicevo, l'opzione "-r" creerà un "relay
server" usando di default la porta 8000 ma, nel caso fosse
occupata, continuerà cercando nella prossima porta
aperta. In genere, se la 8000 è occupata, la 8001 non lo
sarà.
Esempio. Trovate una radio carina. La caricate, il vostro
lettore si apre e la ascoltate. Vi piace e decidete di iniziare
a rippare. Premete il pulsante "Record". Si aprirà una
PAG 15
S.P.R.I.T.e. Magazine VI
console (da qui "x-terminal-emulator"), e streamtuner
inizierà il suo lavoro. Ora potete ascoltare qualsivoglia
con il vostro lettore multimediale (altre radio, file locali,
etc), perché intanto streamripper continuerà a rippare su
quella stazione e salverà i file sul disco. Se decidete di
voler ascoltare cosa è stato fin'ora rippato, invece di
connettervi a quella stazione, vi connetterete al server
creato da streamripper, e per farlo aprite con il vostro
media player "http://localhost:8000/” (oppure
http://localhost:8001/, etc).
Tutto chiaro? Buon divertimento nel mondo dello
streaming audio, e ricordate: l'udito è un senso dell'uomo
molto importante, non lo rovinate!! :-P
FINE
Hanno collaborato a questo numero (in ordine alfabetico):
Matteo Battistelli, Elvis Ciotti (articolo e impaginazione giornalino), Tommaso Dionigi,
Demo/Simone Gentili, Lupini Matteo, Filippo Venturi
PAG 16

More Related Content

Similar to S.P.R.I.Te. magazine n.6

Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per IniziareAjax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziareastanco
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)jampslide
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
XeDotNet
 
Ajax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni webAjax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni web
Dominopoint - Italian Lotus User Group
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
KnowCamp
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesigner
Matteo Magni
 
Lezione JSP database Crud
Lezione JSP database CrudLezione JSP database Crud
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
Giampiero Granatella
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
Franco Lombardo
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5
Pietro Polsinelli
 
04 Tapestry5 In Action Pratica
04   Tapestry5 In Action   Pratica04   Tapestry5 In Action   Pratica
04 Tapestry5 In Action Pratica
bobpuley
 
Ajax
AjaxAjax
Abusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side StorageAbusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side Storageameft
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
Davide Cerbo
 
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0 Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Andrea Volpini
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
Alessandro Martin
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
Dominopoint - Italian Lotus User Group
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Giovanni Cappellini
 

Similar to S.P.R.I.Te. magazine n.6 (20)

Ajax Primi Passi Per Iniziare
Ajax Primi Passi Per IniziareAjax Primi Passi Per Iniziare
Ajax Primi Passi Per Iniziare
 
JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)JAMP DAY 2010 - ROMA (3)
JAMP DAY 2010 - ROMA (3)
 
Write less do more...with jQuery
Write less do more...with jQueryWrite less do more...with jQuery
Write less do more...with jQuery
 
Ajax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni webAjax - Presente e futuro delle applicazioni web
Ajax - Presente e futuro delle applicazioni web
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
Javascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesignerJavascript - 4 | WebMaster & WebDesigner
Javascript - 4 | WebMaster & WebDesigner
 
Lezione JSP database Crud
Lezione JSP database CrudLezione JSP database Crud
Lezione JSP database Crud
 
Wpo extended
Wpo extendedWpo extended
Wpo extended
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5Matteo Bicocchi - Introducing HTML5
Matteo Bicocchi - Introducing HTML5
 
04 Tapestry5 In Action Pratica
04   Tapestry5 In Action   Pratica04   Tapestry5 In Action   Pratica
04 Tapestry5 In Action Pratica
 
Ajax
AjaxAjax
Ajax
 
Abusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side StorageAbusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side Storage
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 
Lezione js pdatabasecrudterzaparte
Lezione js pdatabasecrudterzaparteLezione js pdatabasecrudterzaparte
Lezione js pdatabasecrudterzaparte
 
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0 Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
 
Web Performance Optimization
Web Performance OptimizationWeb Performance Optimization
Web Performance Optimization
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 

More from Elvis London

SPRITe magazine n.3
SPRITe magazine n.3SPRITe magazine n.3
SPRITe magazine n.3Elvis London
 
S.P.R.I.Te. magazine
S.P.R.I.Te. magazineS.P.R.I.Te. magazine
S.P.R.I.Te. magazineElvis London
 
S.P.R.I.Te. magazine n.2
S.P.R.I.Te. magazine n.2S.P.R.I.Te. magazine n.2
S.P.R.I.Te. magazine n.2Elvis London
 
S.P.R.I.Te. magazine n.1
S.P.R.I.Te. magazine n.1S.P.R.I.Te. magazine n.1
S.P.R.I.Te. magazine n.1Elvis London
 
S.P.R.I.Te. magazine n.8
S.P.R.I.Te. magazine n.8S.P.R.I.Te. magazine n.8
S.P.R.I.Te. magazine n.8Elvis London
 
S.P.R.I.Te. magazine n.7
S.P.R.I.Te. magazine n.7S.P.R.I.Te. magazine n.7
S.P.R.I.Te. magazine n.7Elvis London
 
S.P.R.I.Te. magazine n.4
S.P.R.I.Te. magazine n.4S.P.R.I.Te. magazine n.4
S.P.R.I.Te. magazine n.4Elvis London
 
Sicurezza smartcard
Sicurezza smartcardSicurezza smartcard
Sicurezza smartcardElvis London
 
Ogg vorbis
Ogg vorbisOgg vorbis
Ogg vorbis
Elvis London
 
Relazione licenze d'uso del software
Relazione licenze d'uso del softwareRelazione licenze d'uso del software
Relazione licenze d'uso del software
Elvis London
 
Sicurezza smartcard
Sicurezza smartcardSicurezza smartcard
Sicurezza smartcardElvis London
 
Lean startup
Lean startupLean startup
Lean startup
Elvis London
 
London Underground
London UndergroundLondon Underground
London Underground
Elvis London
 
Tesi sistema di tipi jolie
Tesi sistema di tipi jolieTesi sistema di tipi jolie
Tesi sistema di tipi jolie
Elvis London
 

More from Elvis London (17)

SPRITe magazine n.3
SPRITe magazine n.3SPRITe magazine n.3
SPRITe magazine n.3
 
S.P.R.I.Te. magazine
S.P.R.I.Te. magazineS.P.R.I.Te. magazine
S.P.R.I.Te. magazine
 
S.P.R.I.Te. magazine n.2
S.P.R.I.Te. magazine n.2S.P.R.I.Te. magazine n.2
S.P.R.I.Te. magazine n.2
 
S.P.R.I.Te. magazine n.1
S.P.R.I.Te. magazine n.1S.P.R.I.Te. magazine n.1
S.P.R.I.Te. magazine n.1
 
S.P.R.I.Te. magazine n.8
S.P.R.I.Te. magazine n.8S.P.R.I.Te. magazine n.8
S.P.R.I.Te. magazine n.8
 
S.P.R.I.Te. magazine n.7
S.P.R.I.Te. magazine n.7S.P.R.I.Te. magazine n.7
S.P.R.I.Te. magazine n.7
 
S.P.R.I.Te. magazine n.4
S.P.R.I.Te. magazine n.4S.P.R.I.Te. magazine n.4
S.P.R.I.Te. magazine n.4
 
Sicurezza smartcard
Sicurezza smartcardSicurezza smartcard
Sicurezza smartcard
 
Lezionidifoggiano
LezionidifoggianoLezionidifoggiano
Lezionidifoggiano
 
Comprate1cane
Comprate1caneComprate1cane
Comprate1cane
 
Andareinvacanza
AndareinvacanzaAndareinvacanza
Andareinvacanza
 
Ogg vorbis
Ogg vorbisOgg vorbis
Ogg vorbis
 
Relazione licenze d'uso del software
Relazione licenze d'uso del softwareRelazione licenze d'uso del software
Relazione licenze d'uso del software
 
Sicurezza smartcard
Sicurezza smartcardSicurezza smartcard
Sicurezza smartcard
 
Lean startup
Lean startupLean startup
Lean startup
 
London Underground
London UndergroundLondon Underground
London Underground
 
Tesi sistema di tipi jolie
Tesi sistema di tipi jolieTesi sistema di tipi jolie
Tesi sistema di tipi jolie
 

S.P.R.I.Te. magazine n.6

  • 1. S.P.R.I.T.e. Magazine VI S.P.R.I.Te.MagazineS.P.R.I.Te.Magazine VIVI Bimensile gratuito - Associazione studentesca S.P.R.I.Te. C.d.l. In Scienze dell'Informazione – Cesena Numero 6 – anno 2007 SOMMARIOSOMMARIO Ajax articolo numero 2 - Demo 2 Welcome Day CSR - Tommaso Dionigi 5 wxWidgets e wxDevC++ - Elvis Ciotti 6 Development day 8 Last.fm, the social music revolution - Matteo Battistelli 8 “Stay hungry. Stay foolish.” by Steve Jobs - Venturi Filippo 10 Enigmi matematici e soluzioni 13 Streamtuner – Matteo Lupini 15 Eccoci qua ! S.P.R.I.Te. Magazine è il giornalino della nostra associazione nel quale parliamo dei nostri progetti, attività, argomenti inerenti il nostro c.d.l. e non solo. Per chi già non ci conoscesse, l'associazione S.P.R.I.Te. è composta di studenti volenterosi che offrono il loro aiuto per creare tutto quello che non è normalmente offerto agli studenti: servizio fotocopie e dispense, organizzazione feste, gestione sala Albatros, buffet di benvenuto alle matricole, linux/development-day, ecc... Per consultare l'elenco completo dei progetti/attività consulta il nostro sito http://sprite.csr.unibo.it/ Se ti senti coinvolto e vuoi darci una mano, scrivere un articolo per questo giornalino o proporre idee, contattaci all'indirizzo e-mail sprite@sprite.csr.unibo.it, oppure vieni a trovarci negli orari di apertura, siamo nell'atrio della sede del c.d.l. , accanto all'aula E. S.P.R.I.Te. Ricordiamo i prossimi eventi ai quali non puoi assolutamente mancare: • Mar 23 Ottobre – Vidia Club (S.Vittore): Festa delle matricole 07 [pag 3] • Ven 26 Ottobre – Aule Scienze dell'Informazione: Development day 07 [pag 4] 23 OTTOBRE Festa delle matricole 2007 [PAG 4] 26 OTTOBRE 07 Development Day [PAG 8] scherzo alle matricole e Welcome Day S.P.R.I.Te. [PAG. 5] PAG 1
  • 2. S.P.R.I.T.e. Magazine VI Ajax articolo numero 2 di Demo <sensorario@gmail.com> Nello scorso numero ho introdotto Ajax e vi ho mostrato un semplice esempio di codice su come è nato e quale era una delle sue prime implementazioni. Dall'introduzione dei frameset e degli iframe ci sono stati un po' di cambiamenti. Vari browser hanno iniziato ad implementare diverse soluzioni per dare a Javascript il “potere” di effettuare chiamate GET e/o POST in background. Senza tornare troppo nel dettaglio, in questo numero introdurrò due nuovi concetti senza discostarmi troppo da quanto detto nel precedente articolo. 1) XMLHttpRequest / ActiveXObject(Microsoft.XMLHTTP) 2) PHP5 & XML (rss) Con il primo elimineremo un sacco di codice sia javascript che html al fine di rendere le nostre pagine sempre più leggere, e capaci di sfruttare le potenzialità di ajax. Di per se pochi kb in una pagina non fanno la differenza ma un milione di siti per un pugno di kb di traffico in meno per ogni pagina che viene vista... Se tutti gli sviluppatori fossero più consapevoli nel creare le proprie applicazioni ne gioverebbe tutta la rete. Con il secondo introdurremo e vedremo in maniera assolutamente periferica, come php5 consente di interagire con lo standard rss. sprite.html <html> <head> <script language="JavaScript" src="caricaFeed.js"></script> </head> <body onload="javascript:caricaFeed('elfo', 'sprite.php');"> <div id="elfo">Sto caricando ...</div> </body> </html> Tutto il codice HTML della volta scorsa è scomparso. Per chi non avesse letto lo scorso numero il pattern utilizzato prevedeva l'utilizzo di un'applicazione a frame. In un frame con altezza 0% venivano caricate le pagine (essendo questo frame nascosto) che andavano a riempire la pagina principale nel frame con altezza impostata al 100%. Diciamo che lo spazio occupato ora è almeno un terzo o addirittura un quarto. In questo documento HTML ci sono 3 cose da notare. Per prima la chiamata ad un file .js che ho chiamato caricaFeed.js. La seconda è la chiamata alla funzione caricaFeed(); non appena il documento è stato caricato (<body ... onload=””>). Terzo è l'elemento <div id=”elfo” />. Come nell'esempio scorso, mi piace spiegare i miei script esattamente per come si comportano: Il browser ha caricato sprite.html, ha incluso un file javascript, e quando finisce di caricare tutto il documento si genera l'evento onload e il tag body fa si che venga richiamata la funzione caricaFeed('elfo', 'sprite.php');. Andiamo a vedere che cosa fa questa funzione (che ci tengo a sottolineare è l'unica presente in questo esempio: a dimostrazione del fatto che ajax può ridurre notevolmente il “peso” e/o la “leggibilità” di un'applicazione web). caricaFeed.js function caricaFeed(id, pagina) { if(window.XMLHttpRequest) req = new XMLHttpRequest(); else if (window.ActiveXObject) req = new ActiveXObject(Microsoft.XMLHTTP); req.onreadystatechange = function() { if(req.readyState == 4) if(req.status == 200) document.getElementById(id).innerHTML = req.responseText; }; var today = new Date(); var strDateOut = today.getFullYear() + today.getMonth() + today.getDate() + today.getMinutes() + today.getSeconds(); PAG 2
  • 3. S.P.R.I.T.e. Magazine VI req.open("GET", pagina + "?" + strDateOut, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(null); } Specifichiamo subito che questa funzione vuole due argomenti: 1) id dell'elemento nella pagina html 2) la pagina da caricare in background In primo luogo (chiedo venia se ho omesso commenti direttamente nel codice), viene creato l'oggetto in grado di leggere la struttura DOM (Document Object Model) che si vuole caricare. Dovete sapere che IE e FF hanno due implementazioni differenti per la gestione delle richieste HTTP con Javascript (ma va ...). Per creare un parser controlliamo se esiste window.XMLHttpRequest. Questo è il nome dell'oggetto su FF. Beh, ovviamente c'è ancora quel “sempre troppo” percento dell'utenza che si ostina ad utilizzare IE. In quel caso l'XMLHttpRequest non esisterà e quindi noi andremo a creare un controllo ActiveX con window.ActiveXControl(Microsoft.XMLHTTP). In questo articolo non voglio entrare nel dettaglio del funzionamento delle implementazioni di Microsoft o di altri standard, mi limiterò a dire che hanno punti in comune. Teniamo presente che questo oggetto caricherà una pagina in background, questo caricamento attraverserà diverse fasi che scaturiranno degli eventi. In particolare noi possiamo andare a gestire il “momento” onreadystatechange. Ogni volta che cambia lo stato di questo oggetto si controlla se lo stato è 4 (finished) ed a quel punto si controlla che lo stato sia 200. Se lo stato dovesse essere 404 avremo una situazione di “page not found”. Appurato il fatto che il nostro documento in background è stato caricato, ne preleviamo il testo reperibile dall'attributo responseText. A questo punto lo possiamo tranquillamente “schiaffare” dove vogliamo. Per come ho scritto questa funzione, la nostra pagina andrà a caricare l'elemento passato come argomento: nel nostro caso “elfo”. I più attenti noteranno un codice strano: caricaFeed.js ... var today = new Date(); var strDateOut = today.getFullYear() + today.getMonth() + today.getDate() + today.getMinutes() + today.getSeconds(); req.open("GET", pagina + "?" + strDateOut, true); ... Questo codice assurdo, serve per evitare che IE carichi la pagina in background dalla cache. Se notate viene aggiunta alla pagina php una querystring il cui valore sarà al 99.9% sempre diverso. Questo fa credere ad IE che le richieste sono diverse e caricherà nuovamente la pagina in questione. Adesso è il turno della pagina php. Che cosa farà mai questa pagina? sprite.php <?php $xmldoc = new DOMDocument(); $xmldoc->load('http://punto-informatico.it/fader/pixml.xml'); $xp = new DOMXPath($xmldoc); $xml = $xp->query("//rss/channel/item/title"); foreach ($xml as $node) { print $node->textContent.'<br>'; } ?> Questa è una pagina semplicissima. Anche qui ci sarebbe da estendere ancora di più questo articolo e parlare meglio del DOM xml con php, poi... Xpath. Eheheh le cose da dire sarebbero davvero tante. Limitiamoci a dire che in questo documento viene creato un oggetto DOMDocument il cui costruttore altro non fa che allocare la memoria per contenere un file XML. Il documento può essere interno o appartenente ad un sito PAG 3
  • 4. S.P.R.I.T.e. Magazine VI esterno. Infatti nella riga successiva si nota che l'XML caricato fa riferimento al sito di punto-informatico. Il costruttore della classe DOMXPath, invece, prende come parametro l'oggetto della classe DOMDocument che contiene il documento XML, e ne crea uno nuovo che può essere interrogato con Xpath. La riga successiva carica tutti i titoli dell'rss. Un semplice foreach se li scorre tutti e mostra il contenuto del nodo title. Fine =) -Per domande e chiarimenti -GMAIL sensorario at gmail.com -ICQ 55493398 -MSN knottyboy at hotmail.it -MYSPACE http://www.myspace.com/knottyboybox Festa delle matricole 2007 PAG 4
  • 5. S.P.R.I.T.e. Magazine VI Welcome Day CSR: una giornata a base di S.P.R.I.Te.! Il primo giorno di scuola: di nuovo! Di Tommaso Dionigi <info@tommaso.dionigi.name> Ormai abituato a “primi giorni di scuola” la preoccupazione e l’ansia sono ridotte al minimo. Probabilmente un ambiente nuovo ti non emoziona più come i banchi, gli odori, i colori di quella prima elementare di tanti anni fa. Allora arrivi tranquillo, cercando di riabituarti alla sveglia che suona in linea con gli orari della “gente normale”, orari abbandonati a giugno, quando saltando l’ostacolo dell’esame di maturità ti avviavi con passo deciso verso quella che capirai presto essere l’ultima vera e lunga vacanza degli anni di scuola. Si arriva presto oggi, il “quarto d’ora accademico” non è ancora entrato a far parte dei tuoi ritardi abituali. Alle nove sono tutti li, come te, ad aspettare l’inizio della nuova, ennesima metamorfosi della propria figura di studente. Il primo giorno di scuola non si fa gran che, ti dici. Forse te la caverai in qualche ora, forse nessuno ha pensato a come organizzare una giornata di passaggio. Ma si, si... sarà una cosa veloce e ci penseremo domani. Invece no. Giacca, cravatta e passo deciso: entra il professore. Non sembra avere voglia di scherzare né tanto meno di perdere il suo tempo in inutili introduzioni. Il concetto è chiaro: 5 minuti del suo tempo valgono di più della tua intera mattinata. Non c’è speranza. Sospettavi che “all’Università fossero un po’ esigenti”, ma non saresti mai arrivato ad immaginare tanto. Tutti in silenzio, le parole del professore si susseguono ad un ritmo molto diverso da quello dei tuoi pensieri che invece ripetono lenti: “non guardare me, ci sono altre 100 persone qui dentro, io taccio e faccio finta di niente”. Suona un cellulare, la fondamentale raccomandazione del prof è già stata violata: lui sta perdendo tempo a causa vostra. Al malcapitato dopo qualche minuto restano solo frammenti dell’oggetto che fino a poco prima usava come telefono. Alla lavagna un limite che non sai risolvere: sono passati solo 10 minuti. Ma... non dovevi cavartela con qualche cenno introduttivo o poco altro? Qualcosa non va, non è possibile! Quello che accade dopo è poco importante: il prof si interrompe, gira il portatile... cosa sta succedendo? La rivelazione: S.P.R.I.Te. ha pensato a te molto prima che tu mettessi piede in quell’aula, quella mattina del primo giorno di ottobre. Era uno scherzo. Benvenuta all’università cara matricola! Un’introduzione da parte dei referenti del Corso di Laurea, qualche ora di lezione. Vai a vedere cosa avrà avuto il coraggio di organizzare ancora “S.P.R.I.Te.” . E’ “S.P.R.I.Te. Welcome!”. Stranamente è tutto tranquillo. Ma poi cosa sarà questa sprite? E che nome sarà mai questo?! Studenti Polo Romagnolo Informatica e Tecnologie, eccoti la spiegazione. Benvenuto! Mangi, bevi, fai la tessera dell’Associazione (l’hai fatta la tessera vero?! ndr). Ora puoi anche tornare a casa. Questo primo giorno da universitario non te lo dimenticherai tanto facilmente. Tommaso Dionigi Presidente Ass.Stud. S.P.R.I.Te. info@tommaso.dionigi.name Il video dello scherzo a questo link: http://sprite.csr.unibo.it/blog/2007/10/10/scherzo-matricole-1-ottobre-2007/ PAG 5
  • 6. S.P.R.I.T.e. Magazine VI Window applications con wxWidgets e wxDevC++ di Elvis Ciotti <info@elvisciotti.it> Questa guida, rivolta a chi conosce già C++, illustra un modo open-source e platform-independent per creare applicazioni a finestre per Ms Windows, Linux, Max Os X, Win CE. In pratica un'alternativa gratuita e portabile a Ms Visual C++ /NET. Le librerie che forniscono queste funzionalità sono le wxWidgets (http://wxwidgets.org). Possono essere usate dai linguaggi ad oggetti C++, C#/net,Per, Python. A differenza delle MFC e WTL, utilizzano un look nativo, quindi indipendente delle API di Ms Windows, non servono quindi dll esterne. Le wxWidgets sono estensibili e Open Source. La grafica che ne risulterà non sarà quindi perfettamente in stile visuale di Ms Windows se compilate in piattaforme win32, in pratica lavorerete in modalità WYSINAWYG (What You See Is Not Always What You Get). Nel sito trovate la guida, da tenere sottomano per la lista funzioni. Per utilizzare le librerie con l'ausilio di tools per disegnare i controlli con il mouse, esiste wxDev-C++ (http://wxdsgn.sourceforge.net), ambiente di sviluppo Dev C++ modificato per utilizzare al meglio le librerie wxWidgets. wxDev-C++ contiene sia le librerie che tool grafici per disporre i controlli nelle finestre, oltre a creare automaticamente il codice c++ necessario all'istanziazione, inizializzazione e funzionamento dei componenti. Il compilatore che usa è MinGW (cioè il porting di GCC su windows), non molto veloce ma con un ottimo debugger. L'editor supporta l'autocompletamento del codice, comprese le funzioni della libreria wxWidgets. Iniziamo Dal menu File creiamo un nuovo wxFrame, lasciamo il nome Progetto1. Automaticamente vengono creati i file: Progetto1Frm.cpp Progetto1Frm.h Progetto1Frm.wxform questi 3 file contengono la classe Progetto1Frm, estensione di wxFrame. Consiglio già da adesso di abituarsi a consultare la guida per vedere le funzioni della classe wxFrame, in modo da sapere già da subito cosa è possibile fare. Ad esempio, quando inseriamo i componenti (bottoni, EditText, Selectbox...) nella finestra, viene ridefinito il metodo CreateGUIControls() che li instanzia durante la costruzione della classe, oltre a definire altre proprietà della finestra. Progetto1App.cpp Progetto1App.h Progetto1App.rc Contengono il "main" dell'applicazione, cioè il codice che lancia le varie finestre create. In questi file viene definita la classe Progetto1FrmApp, ereditata da wxApp. I metodi sono essenzialmente due: OnInit() che instanzia e mostra il nostro unico frame (Progetto1Frm) e OnExit() che gestisce l'uscita dal programma. Il file wxform è il file che memorizza le dimensioni dei frames (windows) e componenti (widgets) al loro interno. Primi passi Per inserire il codice che vogliamo parta con un evento di un componente, clicchiamo sul componente, nella finestra proprietà scegliamo l'evento dal menù a discesa. Viene automaticamente creata la funzione ed aggiunta alla classe del frame. Dobbiamo solo inserire il codice da eseguire allo scatenarsi dell'evento. Le variabili relative ai componenti della finestra, sono puntatori alle classi degli oggetti relativi della libreria (wxButton per i pulsanti, wxTextCtrl per editbox...), sono dichiarate "private" nella classe Progetto1Frm. Se siamo all'interno di una funzione della classe (ad esempio la funzione che parte al click su un pulsante), per usarne una proprietà, dobbiamo chiamare: WxButton1->metodo(<argomenti>) L'elenco dei metodi lo trovate nella guida, classe WxButton. Stringhe Le stringhe, indispensabili per utilizzate quasi tutti i controlli (es: testo editabile wxTextCtrl, testo dei pulsanti WxButton), vanno usate con la classe wxString, quasi identica alla classe String della StdLib C++. La classe wxString presenta le funzioni per calcolarne lunghezza, leggerne un carattere, concatenazione, estrazione sottostringa, conversione del formato, conversione in numero. PAG 6
  • 7. S.P.R.I.T.e. Magazine VI Alcune funzionalità Elenco alcuni metodi dei controlli più usati, in modo da poter creare fin da subito qualche cosa di utile. Consultate l'elenco degli argomenti e prototipi delle funzioni nella guida di wxWidgets. Caselle di testo anche multilinea (wxTextCtrl): AppendText, GetValue, SetValue, GetNumberOfLines, GetLineText, GetLineLength, GetStringSelection, SaveFile, SetValue CheckBox (wxCheckBox): GetValue, SetValue SelectBox (wxChoice): Append, GetSelection Abbiamo anche molti altri controlli, per selezione date, print e MessageDialog, ColourDialog, Timer, TreeListCtrl, HTMLwindow... Sviluppo con wxDevc++ Ci sono dei problemi riguardanti il tool per disegnare i frames e i componenti al loro interno. Al momento, disegnando un controllo, non è possibile più cambiarne il nome per richiamarne proprietà e metodi, neanche sostituendo tutte le dichiarazioni nei files del codice. Si può rimediare a questo bug usando un puntatore alla classe col nome che vogliamo. Se vogliamo isolarci da questi problemi e avere più controllo (componenti simili potrebbero essere meglio gestiti da un array di puntatori piuttosto che da una variabile per ogni controllo), possiamo creare manualmente il codice inserendo le dichiarazioni dei componenti nella classe del frame (Progetto1Frm) e inserirne la creazione in CreateGUIControls(), metodo della classe, dove istanziamo il componente con le relative proprietà. wxDev-C++ permette di aggiornare il compilatore, le librerie (anche le wxWidgets) e i files al suo interno senza dover reinstallare il programma, tramite una funzionalità presente nel menù di info/about. Come già detto, l'eseguibile dell'applicazione che viene prodotto non richiede alcuna libreria esterna per disegnare e gestire i componenti delle finestre, questo comporta che la grafica sarà leggermente diversa e l'eseguibile sarà di alcuni Mb. L'enorme vantaggio è che abbiamo un software completamente indipendente, ricompilabile senza tante modifiche in altre piattaforme. Una volta compilato su Ms Windows, la grafica del software funziona sempre, senza terminare nell'eventuale mancanza di una dll esterna come potrebbe succedere per applicazioni create con librerie specifiche del sistema operativo. Tra le varie opzioni dell'editor di codice, possiamo specificare i colori con cui vengono evidenziate le varie parti, oltre a carattere, tabulazioni e modo di elencare le classi e metodi esistenti. Troviamo nel menu anche il supporto CVS e controlli per upload files / progetto. Tra le opzioni di compilazione troviamo anche il supporto per compilatori Visual C++ 6, Visual C++ 2005, Visual C++ NET, qualora si abbiamo installati, in alternativa al MinGw presente con l'ambiente. Alternative Segnalo anche le librerie SmartWin++ (http://smartwin.sourceforge.net), sempre distribuite sotto licenza GPL e fornite con un ambiente tipo DevCpp Segnalo anche Ultimate++ (http://upp.sourceforge.net/index.html), un ambiente di sviluppo che dovrebbe creare eseguibili meno pesanti e compilare più velocemente. Un ambiente RAD (rapid application development) commerciale per disegnare con le wxWidgets è WxDesigner (http://www.roebling.de), mentre un ambiente alternativo a wxDev-C++ freeware è invece VisualWx (http://visualwx.altervista.org). PAG 7 + Interfaccia di wxDevC+
  • 8. S.P.R.I.T.e. Magazine VI Development day – 26 ottobre 2007 Development Day Il Development Day si svolgerà lungo tutta la giornata del 26 Ottobre 2007 presso il Corso di Laurea in Scienze dell’Informazione di Cesena. Il tema centrale di questa giornata tratta, ovviamente, la programmazione in tutti i suoi aspetti. La giornata sarà composta di interventi puramente relazionali (detti talk) e di interventi con dimostrazione pratica (detti workshop). Inoltre, saranno suddivisi in due livelli: livello I, che si riferisce a quei interventi in cui non è necessaria una conoscenza molto approfondita dell’argomento relazionato, e livello II, in cui è necessaria una conoscenza approfondita dell’argomento relazionato. Call for Paper Chiunque voglia proporre una conferenza per il Development Day può consultare il Call for Paper. Troverete tutte le specifiche per farci pervenire le vostre proposte. Sono indicati gli argomenti generali che preferiremmo trattare durante le due giornate, le modalità di svolgimento delle conferenze, le modalità di invio degli interventi e le date da rispettare per la richiesta e la conferma della propria conferenza. Se avete interventi da proporre per il Development Day vi invitiamo a contattarci di modo che i vostri contributi, i risultati del vostro lavoro, le vostre esperienze possano essere condivise con chi come voi apprezza e lavora con Linux o più in generale con e per gli utenti e gli sviluppatori del mondo del free software e dell’open source. Elenco dei talk, informazioni al sito web: http://sprite.csr.unibo.it/blog/progetti/linuxday-2007/ Last.fm, the social music revolution di Matteo Battistelli <matteo.battistelli2@studio.unibo.it> Vi piace ascoltare musica? E vi piace farlo, magari, tramite il vostro pc... mentre programmate, leggete la posta, scribacchiate un breve articolo per il giornale di Sprite? E magari vi piacerebbe avere una cronologia di ciò che avete ascoltato, su questa ottenere una serie di statistiche e trovare utenti per il web che hanno gusti simili ai vostri e che possano consigliarvi qualche pezzo interessante? Oppure avete un gruppo e qualche vostro brano da distribuire, o semplicemente volete pubblicizzare le vostre prossime esibizioni live? Bene allora last.fm è il sito che fa per voi. Quella che segue è solo una breve introduzione ad alcune delle funzioni , a mio avviso le più interessanti, che il sito offre. Per le altre vi consiglio di andare su www.last.fm e dare una sbirciatina alla guida: il sito è molto intuitivo e con qualche click del mouse scoprirete che si possono far parecchie cose interessanti. PAG 8
  • 9. S.P.R.I.T.e. Magazine VI Audioscrobbler Una volta registrati al sito e scaricato l'apposito player (o un plug-in per vostro player preferito) siete pronti per effettuare l' audioscrobbling. Ma che cos'è l'audioscrobbler? Esso non è altro che un sistema per tenere traccia dei brani che ascoltate. Questi saranno immediatamente pubblicati sul vostro spazio last.fm (che si trova all'indirizzo www.last.fm/user/vosto_username). Dopo un numero sufficiente di brani memorizzati il sito inizierà a fornirvi una serie di statistiche tra cui la classifica degli artisti, album e pezzi più ascoltati. Inoltre, e questa è forse la cosa più interessante, vi consiglierà brani o musicisti compatibili con i vostri gusti. Sulla base di ciò che ascoltate inoltre verra stilata una lista di "vicini", utenti cioè che hanno gusti simili ai vostri e da cui potrete farvi consigliare qualche nuovo artista. I profili degli artisti. Per ogni cantante o gruppo esiste un apposito spazio all'interno del sito che mostra una breve descrizione con la lista dei suoi concerti oltre che la classifica dei brani più ascoltati dagli utenti del sito. Alcuni di questi brani possono essere scaricati, gratuitamente o a pagamento, o ascoltati in streaming. Questa sezione del sito, naturalmente, può essere usata anche da gruppi emergenti che possono fare l'upload dei propri brani e decidere in che modo distribuirli o pubblicare le date dei propri concerti. Playlist Una funzione molto interessante è quella che dà la possibilità di creare una playlist con i propri brani preferiti. Se alla vostra playlist vengono aggiunti almeno 15 brani (scelti anche tra quelli distribuiti a pagamento) di album e artisti diversi quest'ultima potrà essere liberamente ascoltata in streaming da chiunque si colleghi all'indirizzo del vostro spazio su last.fm. Naturalmente l'utente non potrà scegliere liberamente il brano da ascoltare: sarà il sistema che si occuperà di selezionare, come una sorta di radio on-line, quale brano della playlist trasmettere in streaming. Widgets In questa sezione del sito è possibile creare delle piccole applet da inserire nel proprio sito web o blog. Con una serie di semplici click otterrete in un batter d'occhio il codice html da aggiungere alla propria pagina web. E' possibile, ad esempio, creare il codice di un semplice playlist player, un "quilt", cioè un collage animato delle copertine degli album o delle foto degli artisti preferiti, oppure la classifica dei brani più ascoltati. PAG 9
  • 10. S.P.R.I.T.e. Magazine VI “Stay hungry. Stay foolish.” by Steve Jobs a cura di Venturi Filippo (2007.05.19) Fidatevi di me. Questo articolo è lungo, ma merita di essere letto e scommetto una birra che alla fine mi darete ragione. Nel Giugno 2005, alla Stanford University, situata in California nella Contea di Santa Clara, Steve Jobs (fondatore di Apple) ha ricevuto la laurea honoris causa, ovvero uno speciale titolo accademico assegnato ad una persona come riconoscimento alla propria esperienza e competenza in un determinato campo del sapere, pur senza aver dato esami. Steve Jobs, alla Stanford University L’evento è stato sicuramente importante anche se ormai questo genere di riconoscimento sta perdendo valore, visto che avviene sempre più spesso, da quando le università hanno scoperto il lato “pubblicitario” di questo tipo di iniziativa. La parte più interessante però è il discorso tenuto da Jobs che, pur essendo lungo, ha fatto riflettere e a anche portato alla luce alcuni piccoli aneddoti sul Jobs studente e in seguito manager, senza mai annoiare. Ecco il testo tradotto. (Il video è reperibile all’indirizzo http://news-service.stanford.edu/news/2005/june15/videos/51.html) “Sono onorato di essere qui con voi oggi alle vostre lauree in una delle migliori università del mondo. Io non mi sono mai laureato. Anzi, per dire la verità, questa è la cosa più vicina a una laurea che mi sia mai capitata. Oggi voglio raccontarvi tre storie della mia vita. Tutto qui, niente di eccezionale: solo tre storie.” La prima storia è sull’unire i puntini “Ho lasciato il Reed College dopo il primo semestre, ma poi ho continuato a frequentare in maniera ufficiosa per altri 18 mesi circa prima di lasciare veramente. Allora, perché ho mollato? E’ cominciato tutto prima che nascessi. Mia madre biologica era una giovane studentessa di college non sposata, e decise di lasciarmi in adozione. Riteneva con determinazione che avrei dovuto essere adottato da laureati, e fece in modo che tutto fosse organizzato per farmi adottare fin dalla nascita da un avvocato e sua moglie. Però quando arrivai io loro decisero all’ultimo minuto che avrebbero voluto adottare una bambina. Così quelli che poi sono diventati i miei genitori adottivi e che erano in lista d’attesa, ricevettero una chiamata nel bel mezzo della notte che gli diceva: “C’è un bambino, un maschietto, non previsto. Lo volete voi?” Loro risposero: “Certamente”. Più tardi mia madre biologica scoprì che mia madre non si era mai laureata al college e che mio padre non aveva neanche finito il liceo. Rifiutò di firmare le ultime carte per l’adozione. Poi accetto di farlo, mesi dopo, solo quando i miei genitori adottivi promisero formalmente che un giorno io sarei andato al college. Diciassette anni dopo andai al college. Ma ingenuamente ne scelsi uno altrettanto costoso di Stanford, e tutti i risparmi dei miei genitori finirono per pagarmi l’ammissione e i corsi. Dopo sei mesi, non riuscivo a vederci nessuna vera opportunità. Non avevo idea di quello che avrei voluto fare della mia vita e non vedevo come il college potesse aiutarmi a capirlo. Eppure ero là, che spendevo tutti quei soldi che i miei genitori avevano messo da parte lavorando per tutta la loro vita. Così decisi di mollare e avere fiducia che tutto sarebbe andato bene lo stesso. Era molto difficile all’epoca, ma guardandomi indietro ritengo che sia stata una delle migliori decisioni che abbia mai preso. Nell’attimo che mollai il college, potei anche smettere di seguire i corsi che non mi interessavano e cominciai invece a capitare nelle classi che trovavo più interessanti. Non è stato tutto rose e fiori, però. Non avevo più una camera nel dormitorio, ed ero costretto a dormire sul pavimento delle camere dei miei amici. Guadagnavo soldi riportando al venditore le bottiglie di Coca cola vuote per avere i cinque centesimi di deposito e poter comprare da mangiare. Una volta la settimana, alla domenica sera, camminavo per sette miglia attraverso la città per avere finalmente un buon pasto al tempio Hare Krishna: l’unico della settimana. Ma tutto quel che ho trovato seguendo la mia curiosità e la mia intuizione è risultato essere senza prezzo, dopo. Vi faccio subito un esempio. Il Reed College all’epoca offriva probabilmente la miglior formazione del Paese relativamente alla calligrafia. Attraverso tutto il campus ogni poster, ogni etichetta, ogni cartello era scritto a mano con calligrafie PAG 10
  • 11. S.P.R.I.T.e. Magazine VI meravigliose. Dato che avevo mollato i corsi ufficiali, decisi che avrei seguito la classe di calligrafia per imparare a scrivere così. Fu lì che imparai dei caratteri serif e san serif, della differenza tra gli spazi che dividono le differenti combinazioni di lettere, di che cosa rende grande una stampa tipografica del testo. Fu meraviglioso, in un modo che la scienza non è in grado di offrire, perché era artistico, bello, storico e io ne fui assolutamente affascinato. Nessuna di queste cose però aveva alcuna speranza di trovare una applicazione pratica nella mia vita. Ma poi, dieci anni dopo, quando ci trovammo a progettare il primo Macintosh, mi tornò tutto utile. E lo utilizzammo tutto per il Mac. E’ stato il primo computer dotato di una meravigliosa capacità tipografica. Se non avessi mai lasciato il college e non avessi poi partecipato a quel singolo corso, il Mac non avrebbe probabilmente mai avuto la possibilità di gestire caratteri differenti o font spaziati in maniera proporzionale. E dato che Windows ha copiato il Mac, è probabile che non ci sarebbe stato nessun personal computer con quelle capacità. Se non avessi mollato il college, non sarei mai riuscito a frequentare quel corso di calligrafia e i persona computer potrebbero non avere quelle stupende capacità di tipografia che invece hanno. Certamente all’epoca in cui ero al college era impossibile unire i puntini guardando il futuro. Ma è diventato molto, molto chiaro dieci anni dopo, quando ho potuto guardare all’indietro. Di nuovo, non è possibile unire i puntini guardando avanti; potete solo unirli guardandovi all’indietro. Così, dovete aver fiducia che in qualche modo, nel futuro, i puntini si potranno unire. Dovete credere in qualcosa - il vostro ombelico, il destino, la vita, il karma, qualsiasi cosa. Questo tipo di approccio non mi ha mai lasciato a piedi e invece ha sempre fatto la differenza nella mia vita. La mia seconda storia è a proposito dell’amore e della perdita Sono stato fortunato: ho trovato molto presto che cosa amo fare nella mia vita. Woz e io abbiamo fondato Apple nel garage della casa dei miei genitori quando avevo appena 20 anni. Abbiamo lavorato duramente e in 10 anni Apple è cresciuta da un’azienda con noi due e un garage in una compagnia da due miliardi di dollari con oltre quattromila dipendenti. L’anno prima avevamo appena realizzato la nostra migliore creazione - il Macintosh - e io avevo appena compiuto 30 anni, e in quel momento sono stato licenziato. Come si fa a venir licenziati dall’azienda che hai creato? Beh, quando Apple era cresciuta avevamo assunto qualcuno che ritenevo avesse molto talento e capacità per guidare l’azienda insieme a me, e per il primo anno le cose sono andate molto bene. Ma poi le nostre visioni del futuro hanno cominciato a divergere e alla fine abbiamo avuto uno scontro. Quando questo successe, il Board dei direttori si schierò dalla sua parte. Quindi, a 30 anni io ero fuori. E in maniera plateale. Quello che era stato il principale scopo della mia vita adulta era andato e io ero devastato da questa cosa. Non ho saputo davvero cosa fare per alcuni mesi. Mi sentivo come se avessi tradito la generazione di imprenditori prima di me - come se avessi lasciato cadere la fiaccola che mi era stata passata. Incontrai David Packard e Bob Noyce e tentai di scusarmi per aver rovinato tutto così malamente. Era stato un fallimento pubblico e io presi anche in considerazione l’ipotesi di scappare via dalla Silicon Valley. Ma qualcosa lentamente cominciò a crescere in me: ancora amavo quello che avevo fatto. L’evolvere degli eventi con Apple non avevano cambiato di un bit questa cosa. Ero stato respinto, ma ero sempre innamorato. E per questo decisi di ricominciare da capo. Non me ne accorsi allora, ma il fatto di essere stato licenziato da Apple era stata la miglior cosa che mi potesse succedere. La pesantezza del successo era stata rimpiazzata dalla leggerezza di essere di nuovo un debuttante, senza più certezze su niente. Mi liberò dagli impedimenti consentendomi di entrare in uno dei periodi più creativi della mia vita. Durante i cinque anni successivi fondai un’azienda chiamata NeXT e poi un’altra azienda, chiamata Pixar, e mi innamorai di una donna meravigliosa che sarebbe diventata mia moglie. Pixar si è rivelata in grado di creare il primo film in animazione digitale, Toy Story, e adesso è lo studio di animazione più di successo al mondo. In un significativo susseguirsi degli eventi, Apple ha comprato NeXT, io sono ritornato ad Apple e la tecnologia sviluppata da NeXT è nel cuore dell’attuale rinascimento di Apple. E Laurene e io abbiamo una meravigliosa famiglia. Sono sicuro che niente di tutto questo sarebbe successo se non fossi stato licenziato da Apple. E’ stata una medicina molto amara, ma ritengo che fosse necessaria per il paziente. Qualche volta la vita ti colpisce come un mattone in testa. Non perdete la fede, però. Sono convinto che l’unica cosa che mi ha trattenuto dal mollare tutto sia stato l’amore per quello che ho fatto. Dovete trovare quel che amate. E questo vale sia per il vostro lavoro che per i vostri affetti. Il vostro lavoro riempirà una buona parte della vostra vita, e l’unico modo per essere realmente soddisfatti è fare quello che riterrete un buon lavoro. E l’unico modo per fare un buon lavoro è amare quello che fate. Se ancora non l’avete trovato, continuate a cercare. Non accontentatevi. Con tutto il cuore, sono sicuro che capirete quando lo troverete. E, come in tutte le grandi storie, diventerà sempre migliore mano a mano che gli anni passano. Perciò, continuate a cercare sino a che non lo avrete trovato. Non vi accontentate. La mia terza storia è a proposto della morte Quando avevo 17 anni lessi una citazione che suonava più o meno così: “Se vivrai ogni giorno come se fosse l’ultimo, sicuramente una volta avrai ragione”. Mi colpì molto e da allora, per gli ultimi 33 anni, mi sono guardato ogni mattina allo specchio chiedendomi: “Se oggi fosse l’ultimo giorno della mia vita, vorrei fare quello che sto per fare oggi?”. E ogni qualvolta la risposta è “no” per troppi giorni di fila, capisco che c’è qualcosa che deve essere cambiato. Ricordarsi che morirò presto è il più importante strumento che io abbia mai incontrato per fare le grandi scelte della vita. Perché quasi tutte le cose - tutte le aspettative di eternità, tutto l’orgoglio, tutti i timori di PAG 11
  • 12. S.P.R.I.T.e. Magazine VI essere imbarazzati o di fallire - semplicemente svaniscono di fronte all’idea della morte, lasciando solo quello che c’è di realmente importante. Ricordarsi che dobbiamo morire è il modo migliore che io conosca per evitare di cadere nella trappola di chi pensa che avete qualcosa da perdere. Siete già nudi. Non c’è ragione per non seguire il vostro cuore. Più o meno un anno fa mi è stato diagnosticato un cancro. Ho fatto la scansione alle sette e mezzo del mattino e questa ha mostrato chiaramente un tumore nel mio pancreas. Non sapevo neanche che cosa fosse un pancreas. I dottori mi dissero che si trattava di un cancro che era quasi sicuramente di tipo incurabile e che sarebbe stato meglio se avessi messo ordine nei miei affari (che è il codice dei dottori per dirti di prepararti a morire). Questo significa prepararsi a dire ai tuoi figli in pochi mesi tutto quello che pensavi avresti avuto ancora dieci anni di tempo per dirglielo. Questo significa essere sicuri che tutto sia stato organizzato in modo tale che per la tua famiglia sia il più semplice possibile. Questo significa prepararsi a dire i tuoi “addio”. Ho vissuto con il responso di quella diagnosi tutto il giorno. La sera tardi è arrivata la biopsia, cioè il risultato dell’analisi effettuata infilando un endoscopio giù per la mia gola, attraverso lo stomaco sino agli intestini per inserire un ago nel mio pancreas e catturare poche cellule del mio tumore. Ero sotto anestesia ma mia moglie - che era là - mi ha detto che quando i medici hanno visto le cellule sotto il microscopio hanno cominciato a gridare, perché è saltato fuori che si trattava di un cancro al pancreas molto raro e curabile con un intervento chirurgico. Ho fatto l’intervento chirurgico e adesso sto bene. Questa è stata la volta in cui sono andato più vicino alla morte e spero che sia anche la più vicina per qualche decennio. Essendoci passato attraverso posso parlarvi adesso con un po’ più di cognizione di causa di quando la morte era per me solo un concetto astratto e dirvi: Nessuno vuole morire. Anche le persone che vogliono andare in paradiso non vogliono morire per andarci. E anche che la morte è la destinazione ultima che tutti abbiamo in comune. Nessuno gli è mai sfuggito. Ed è così come deve essere, perché la Morte è con tutta probabilità la più grande invenzione della Vita. E’ l’agente di cambiamento della Vita. Spazza via il vecchio per far posto al nuovo. Adesso il nuovo siete voi, ma un giorno non troppo lontano diventerete gradualmente il vecchio e sarete spazzati via. Mi dispiace essere così drammatico ma è la pura verità. Il vostro tempo è limitato, per cui non lo sprecate vivendo la vita di qualcun altro. Non fatevi intrappolare dai dogmi, che vuol dire vivere seguendo i risultati del pensiero di altre persone. Non lasciate che il rumore delle opinioni altrui offuschi la vostra voce interiore. E, cosa più importante di tutte, abbiate il coraggio di seguire il vostro cuore e la vostra intuizione. In qualche modo loro sanno che cosa volete realmente diventare. Tutto il resto è secondario. Quando ero un ragazzo c’era una incredibile rivista che si chiamava The Whole Earth Catalog, praticamente una delle bibbie della mia generazione. E’ stata creata da Stewart Brand non molto lontano da qui, a Menlo Park, e Stewart ci ha messo dentro tutto il suo tocco poetico. E’ stato alla fine degli anni Sessanta, prima dei personal computer e del desktop publishing, quando tutto era fato con macchine da scrivere, forbici e foto polaroid. E’ stata una specie di Google in formato cartaceo tascabile, 35 anni prima che ci fosse Google: era idealistica e sconvolgente, traboccante di concetti chiari e fantastiche nozioni. Stewart e il suo gruppo pubblicarono vari numeri di The Whole Earth Catalog e quando arrivarono alla fine del loro percorso, pubblicarono il numero finale. Era più o meno la metà degli anni Settanta e io avevo la vostra età. Nell’ultima pagina del numero finale c’era una fotografia di una strada di campagna di prima mattina, il tipo di strada dove potreste trovarvi a fare l’autostop se siete dei tipi abbastanza avventurosi. Sotto la foto c’erano le parole: “Stay Hungry. Stay Foolish.”, siate affamati, siate folli. Era il loro messaggio di addio. Stay Hungry. Stay Foolish. Io me lo sono sempre augurato per me stesso. E adesso che vi laureate per cominciare una nuova vita, lo auguro a voi. Stay Hungry. Stay Foolish. Grazie a tutti.” FONTI: http://news-service.stanford.edu/news/2005/june15/grad-061505.html http://news-service.stanford.edu/news/2005/june15/videos/51.html http://macintosh.wordpress.com/2005/10/27/stay-hungry-stay-foolish/ http://www.youtube.com/watch?v=D1R-jKKp3NA PAG 12
  • 13. S.P.R.I.T.e. Magazine VI Enigmi matematici tratti da chiesi.net Una corda e tre animali Immaginate di avere una corda lunga quanto la circonferenza terrestre (cioè all'incirca 40000 km), che si trova distesa lungo l'equatore. Immaginate ora di prendere questa corda, di tagliarla, di aggiungervene un metro e quindi di ridistribuirla attorno all'equatore in modo che abbia una distanza dalla superficie terrestre che rimanga costante lungo tutta la circonferenza. La domanda a cui dovete cercare di rispondere è: quale dei seguenti tre animali può passare di misura nello spazio interposto tra la corda e la superficie: una formica, un gatto o un elefante? Il ciclista Un ciclista scala una montagna alla media di 20 km/h , e poi, giunto in cima, gira la bicicletta e ridiscende a valle (seguendo la stessa strada) ad una media di 60 km/h. Qual è la media complessiva tenuta dal ciclista, durante tutto il suo viaggio? Stato di famiglia Due vecchi amici matematici si ritrovano dopo molti anni, e discorrono per un po'. Il primo fa: "Allora hai tre figli? E quanti anni hanno?". L'altro risponde: "Considerando le loro età come numeri interi, il loro prodotto è 36, e la somma è il numero civico di questa casa qui davanti". Il primo ci pensa un po' e sbotta: "Beh, non mi hai certo dato dei dati sufficienti!" e il secondo ribatte: "Hai ragione: il maggiore ha gli occhi azzurri". Quali sono le età dei tre figli? Gioco a premi Supponiamo di essere a un gioco a premi e di dovere scegliere quale porta aprire fra le tre proposte dal presentatore. Dietro una di queste c'e` un'auto, nelle altre due... una capra. Noi scegliamo una porta, e come capita in tutte le puntate, il presentatore ci dice "Ne sei proprio sicuro? Puoi ancora cambiare la scelta: anzi, ti voglio aiutare", e apre una delle porte che noi non abbiamo scelto, mostrando una capra. Ammesso che vogliamo vincere l'auto, ci conviene cambiare porta, o la cosa è indifferente? Corde che bruciano Ci sono a disposizione due corde di lunghezza uguale, e tanti accendini quanti si vuole... e nient'altro! Entrambe le corde, se incendiate, impiegano un'ora esatta per bruciare. Cioè dando fuoco ad una estremità, il fuoco arriverà all'altra estremità dopo esattamente 60 minuti. Le due corde però non bruciano in maniera uniforme, ma casualmente, e non bruciano nemmeno nello stesso modo ma ognuna per i fatti suoi. L'obiettivo del gioco è riuscire a trovare un modo per calcolare il passare di un quarto d'ora di tempo. Successione di numeri Qual è il termine successivo in questa successione? 1 - 11 - 21 - 1211 - 111221 - ... Le noci di cocco Tre marinai trovano un mucchio di noci di cocco. Il primo ne prende la metà più mezza noce. Il secondo prende metà di quello che è rimasto più mezza noce. Anche il terzo prende metà del rimanente più mezza noce. Rimane esattamente una noce che essi danno alla scimmia. Quante erano inizialmente le noci del mucchio? I berretti Tre esploratori vengono catturati da una tribù africana con l'hobby degli enigmi. Il capo tribù decide di graziarli solo se si dimostrano sufficientemente intelligenti. Mostra loro tre berretti rossi e due berretti bianchi. Poi li benda e pone sulla testa di ognuno un berretto rosso. Una volta sbendati ogni esploratore può vedere il berretto sulla testa degli altri ma non il proprio. Chiede al primo: "Di che colore è il berretto che hai sulla testa?". Il primo osserva gli altri due e risponde che non lo sa. Chiede al secondo: "Di che colore è il berretto che hai sulla testa?". Il secondo osserva gli altri due e risponde che non lo sa. Chiede al terzo: "Di che colore è il berretto che hai sulla testa?". Il terzo risponde esattamente dicendo che il proprio berretto è rosso salvando la vita a tutti e tre. Come ha fatto a saperlo? (Si supponga che i tre esploratori siano dei logici perfetti, cioè siano in grado di dedurre istantaneamente tutte le conseguenze da un insieme di premesse dato). SOLUZIONI NELLA PROSSIMA PAGINA ! PAG 13
  • 14. S.P.R.I.T.e. Magazine VI Soluzioni soluzioni agli enigmi della pagina precedente Una corda e tre animali La risposta è: un gatto. Questa risposta è sorprendente, in quanto si è indotti a pensare che allungare una circonferenza così lunga di una percentuale tanto insignificante provochi un aumento del raggio altrettanto insignificante. Invece questo non è vero, poichè l'incremento subito dal raggio dipende solo dalla lunghezza del pezzo di corda aggiunto e non dal raggio della circonferenza iniziale. Detto questo, il calcolo è veramente immediato. Infatti, indicando con R il raggio terrestre, con PI la costante pi greco e con C=2*PI*R la circonferenza, si ha che la distanza tra la corda e la superficie terrestre vale: d = (C+1)/(2*PI) - R = 1/(2*PI) che vale circa 16 centimetri, e quindi ci può passare sotto un gatto. Il ciclista La risposta corretta è: 30 km/h. La risposta più frequente che viene data a questo problema è è invece 40 km/h, basata sul fatto che che il ciclista ha percorso esattamente metà del cammino alla velocità (media) di 20 km/h e esattamente l'altra metà alla velocità (media) di 60 km/h; ma ciò nondimeno, la risposta è errata, giacché procedendo in discesa ad una velocità tripla rispetto a quella tenuta in salita il nostro atleta ha pedalato per un tempo triplo alla velocità di 20 km/h rispetto al tempo in cui è andato a 60 km/h. La risposta corretta è dunque data da v = (3 x 20 + 60) / 4 = 30 km/h. Bisogna cioè tenere conto del peso relativo di ciascuna delle medie. Stato di famiglia Le terne di numeri interi il cui prodotto è 36 (con le somme vicino) sono riportate in tabella. Il secondo matematico conosce la somma (vede il numero della casa) ma non sa rispondere. Questo significa che la somma è 13, l'unico numero che appare due volte. La seconda affermazione del primo matematico ci dice che la risposta giusta è 9-2-2, nell'altro caso infatti si avrebbero due gemelli di 6 anni. Terna Somma 36-1-1 38 18-2-1 21 12-3-1 16 9-4-1 14 9-2-2 14 6-6-1 13 6-3-2 11 4-3-3 10 Gioco a premi Il trucco qui è il fatto che il presentatore non apre una porta a caso, ma ne sceglie una con una capra. Supponiamo di avere scelto la prima porta: in questo momento abbiamo probabilità 1/3 che l'auto sia dietro una qualunque porta. Nei due casi in cui l'auto sia nella porta 2 o 3, il presentatore apre rispettivamente la porta 3 o 2, e se noi cambiamo scelta vinciamo (probabilità 2/3); se avevao scelto la porta giusta, lui ne apre a caso una delle altre (probabilità 1/6 per ciascuna) e se noi cambiamo perdiamo (probabilita` 1/3). Quindi ci conviene cambiare porta. Corde che bruciano All'inizio si prende la prima corda e si dà fuoco a entrambe le estremità contemporaneamente, e sempre nello stesso istante accendo un estremo della seconda corda. Passata mezz'ora la prima corda sarà completamente consumata (visto che ci avrebbe impiegato un'ora se fosse stata accesa solo da una parte). A questo punto la seconda corda continuerebbe a bruciare ancora per mezz'ora, ma se si dà fuoco anche all'altro estremo, finirà esattamente nel giro di un quarto d'ora.... il quarto d'ora da misurare. Successione di numeri Il termine successivo è 312211. Ogni termine si ricava dal precedente "spiegando cosa è scritto": in 1112211 ci sono tre 1, due 2 e ancora due 1, quindi 3 1, 2 2, 2 1, quindi 312221. Le noci di cocco La risposta è 15 noci. Infatti se alla fine resta una noce (quella che viene data alla scimmia) vuol dire che il terzo marinaio si è trovato davanti ad un mucchio di 3 noci, dal quale ne ha prese 2, ovvero metà del mucchio (cioè una noce e mezza) più mezza noce, lasciandone 1. Analogamente il secondo marinaio avrà avuto a disposizione 7 noci prendendone 4 (3 e mezzo + 1 mezza noce) e lasciandone appunto 3 per il terzo marinaio. Infine, il primo marinaio poteva disporre di un totale di 15 noci, e ne ha prese 8. I berretti Il primo esploratore non sa rispondere di che colore è il proprio berretto perciò evidentemente vuol dire che gli altri due non hanno entrambi il berretto bianco, altrimenti avrebbe saputo rispondere che il proprio era rosso. Neppure il secondo esploratore sa di che colore è il proprio berretto, ciò significa che il terzo non può avere il berretto bianco altrimenti lui avrebbe detto che il suo è rosso (non potendo essere entrambi bianchi). Di conseguenza il terzo dice che è il proprio è rosso . PAG 14
  • 15. S.P.R.I.T.e. Magazine VI Streamtuner - Installazione, uso e trickz di Matteo Lupini <matteo.lupini@studio.unibo.it> Salve ragazzi, amanti di Linux e della musica. Stanchi della solita musica? Avete mai sentito parlare di streaming Audio/Video? Certamente, immagino. Streaming (dall'inglese stream che significa fiume, o corrente) è quel flusso di dati audio/video trasmessi da una sorgente ad una o più destinazioni tramite la rete internet. Lo streaming può essere Live oppure OnDemand. Per OnDemand intendiamo quella corrente di dati che risiede sul server ospitante, e che viene avviata su richiesta del client. Live invece, significa la tradizionale trasmissione radio o video in broadcast. I dati che vengono trasmessi in streaming, sono compressi per poter occupare il minor numero di banda possibile, e vengono bufferizzati sul client, ovvero, prima di riprodurre, vengono prima raccolte una quantità di informazioni tale da non creare stalli o interruzioni nella riproduzione. Questi file, quindi, non vengono scaricati interamente e fisicamente sul client, i dati ricevuti vengono decompressi e riprodotti pochi secondi dopo l'inizio della ricezione, e scompaiono con la chiusura del programma. In questa sede mi occuperò di streaming Audio Live, e di un programma per poter utilizzare questo servizio sulla propria Linux Box. Vediamo come poter usare StreamTuner! Streamtuner (http://www.nongnu.org/streamtuner) è free ed è coperto dalla GNU GPL, sfrutta servizi come SHOUTcast (http://www.shoutcast.com) e Live365 (http://www.live365.com), che sono siti web che permettono di ascoltare la propria musica preferita in streaming, su vere e proprie radio. Streamtuner permette di sfogliare gli archivi e le radio di questi due principali servizi, di selezionare un canale, e con l'aiuto di StreamRipper di poterla registrare e riascoltarla quando si vuole. Ma andiamo passo passo: Installazione: Streamtuner si può reperire dal proprio sito web, oppure dalle repository Debian tramite il comando: # apt-get install streamtuner ricordatevi, però, di abilitare l'opzione “universe” nelle vostre repository. Per poter funzionare correttamente, Streamtuner ha bisogno dei seguenti pacchetti: GTK+ (versione 2.4.0 o superiore) e libcurl (versione 7.10.8 o superiore), che sono essenziali per il funzionamento del programma, più altri pacchetti opzionali: libxml (versione 2.0 or superiore), TagLib (versione 1.2 o superiore), Python (versione 2.3 o superiore) e PyGTK (versione 2.4.0 o superiore). Con tutta questa roba, streamtuner funzionerà alla perfezione, e sarete in grado di sfogliare non soltanto SHOUTcast e Live365, ma anche Xiph, basic.ch, Google Stations e punkcast.com. Per l'installazione dai sorgenti, seguite la guida INSTALL che si trova all'interno del pacchetto, per poterlo compilare adeguatamente. Utilizzo: Aprite Streamtuner, selezionate il servizio che preferite, come SHOUTcast o Live365, selezionate il genere musicale che preferite poi andate sulla stazione che volete ascoltare e cliccate sul pulsante che si trova in alto “Tune In”. Si aprirà il lettore multimediale predefinito che riceverà la radio e la bufferizzerà riproducendo la stazione selezionata. Semplice, no? Per modificare il lettore multimediale andate nel menu Edit -> Preferences. Nella scheda Application vedrete una tabella. Nella colonna di destra, dove c'è scritto “Listen to a stream”, di fianco apparirà la scritta, ad esempio “xmms %q”. Cancellare xmms e sostituirlo con amarok, ad esempio, o noatun. La cosa importante è di non eliminare %q alla fine, lasciarlo invariato. Esempio: “amarok %q” o “/usr/bin/amarok %q”. Trickz Ora, non vi basta ascoltare solo la musica, ma volete registrarla e salvarla sul vostro hard disk per poterla ascoltare ogni volta che volete? Ci pensa Streamripper. Importante: registrare musica dalla radio è perfettamente legale, come anche registrare un programma dalla TV, ma ricordate che condividere questa musica da voi registrata sulla rete è vietato, dato che tutta la musica riprodotta è coperta da diritti d'autore. Ci siamo capiti? Se proprio volete farlo, vedete almeno di non farvi beccare! ;) Ma veniamo a noi. Per scaricare streamripper utilizziamo il nostro fantastico Advanced Package Toolkit, se utilizziamo Debian, oppure scarichiamo i sorgenti e li compiliamo da http://streamripper.sourceforge.net, in questo modo: # apt-get install streamripper Ora, diciamo a streamtuner di usare streamripper per registrare musica, in questo modo: Nel menu Edit -> Preferences, cerchiamo nella colonna di destra la voce “Record a stream”, e cancelleremo quello che c'è dentro con, ad esempio, questa riga x-terminal-emulator -e streamripper %q -d /home/mouse/Ripped -r -q dove “/home/mouse/Ripped” è la cartella dove andrà salvata tutta la musica registrata. Ricordate che la cartella dove andrete a salvare i file, deve poter godere dei permessi dell'utente, perché se non ci sono i permessi di scrittura, il rippaggio non funzionerà. L'opzione "-r" dice a Streamripper di creare un server di ritrasmissione. In altre parole, se non lo fate scaricherete la versione rippata due volte, una da streamripper, e una dal vostro media player. Non è un problema se avete una banda larga, ma d'altro canto risparmiare banda è importante. Come dicevo, l'opzione "-r" creerà un "relay server" usando di default la porta 8000 ma, nel caso fosse occupata, continuerà cercando nella prossima porta aperta. In genere, se la 8000 è occupata, la 8001 non lo sarà. Esempio. Trovate una radio carina. La caricate, il vostro lettore si apre e la ascoltate. Vi piace e decidete di iniziare a rippare. Premete il pulsante "Record". Si aprirà una PAG 15
  • 16. S.P.R.I.T.e. Magazine VI console (da qui "x-terminal-emulator"), e streamtuner inizierà il suo lavoro. Ora potete ascoltare qualsivoglia con il vostro lettore multimediale (altre radio, file locali, etc), perché intanto streamripper continuerà a rippare su quella stazione e salverà i file sul disco. Se decidete di voler ascoltare cosa è stato fin'ora rippato, invece di connettervi a quella stazione, vi connetterete al server creato da streamripper, e per farlo aprite con il vostro media player "http://localhost:8000/” (oppure http://localhost:8001/, etc). Tutto chiaro? Buon divertimento nel mondo dello streaming audio, e ricordate: l'udito è un senso dell'uomo molto importante, non lo rovinate!! :-P FINE Hanno collaborato a questo numero (in ordine alfabetico): Matteo Battistelli, Elvis Ciotti (articolo e impaginazione giornalino), Tommaso Dionigi, Demo/Simone Gentili, Lupini Matteo, Filippo Venturi PAG 16