giovedì 30 aprile 2015

Mappa d'Europa interattiva

Il programmatore Viktoras Didziulis ha scritto questo semplice programma per dimostrare come creare una cartina interattiva.

Cliccando su una regione, una voce ci dice le informazioni di un paese. Il programma è scaricabile da qui: iMap.livecode.
Oppure in alternativa potete lanciare il seguente comando:

go url "http://ekoinf.net/revolution/ParentScripts.rev" 

Il programma utilizza la libreria revSpeak, per creare la voce narrante, che è sempre inclusa in livecode. In questo modo non ci sono pesanti registrazioni da allegare, ma basta scrivere il testo e il computer lo legge.
Il programma inoltre usa i poligoni che cambiamo trasparenza per evidenziare i vari paesi dove passa sopra il mouse.

mercoledì 22 aprile 2015

Grafici

Le possibilità di Livecode per fare grafici sono infinite, ad esempio questo video mostra alcune possibilità:
Nel video è pubblicizzata l'estensione ChartMaker che potete trovare qui: http://livecode.com/products/thirdparty/flexiblelearning/chartmaker/
L'estensione ha un'interfaccia grafica per creare grafici in maniera veloce, ma tutto quello che è mostrato nel video lo potete fare da soli, anche senza acquistare l'estensione.
Come vedete ci sono grafici a linee,  a barre, a torta, di qualunque complessità.

lunedì 20 aprile 2015

Registrare l'audio

Livecode si appoggia a QuickTime su Windows e Mac per gli elementi multimediali. Una delle funzionalità di quicktime che possiamo utilizzare grazie a livecode è quella di registrare l'audio.
Possiamo impostare ogni dettaglio della registrazione se vogliamo, oppure lasciare le impostazioni de default. Ad esempio prima di registrare l'audio possiamo impostare il formato di file che vogliamo ottenere.
La funzione recordCompressionTypes() ci dà dei codec disponibili, ad esempio su windowsXp ottengo:
  • No compression,raw 
  • MACE 3:1,MAC3
  • MACE 6:1,MAC6
  • QDesign Music 2,QDM2
  • Qualcomm PureVoice,Qclp
  • Apple Lossless,alac
  • ALaw 2:1,alaw
  • 32-bit Floating Point,fl32
  • 64-bit Floating Point,fl64
  • IMA 4:1,ima4
  • 24-bit Integer,in24
  • 32-bit Integer,in32
  • AAC a bassa complessità MPEG 4,mp4a
  • 16-bit Little Endian,sowt
  • 16-bit Big Endian,twos
  • µLaw 2:1,ulaw
 Per impostare un particolare codec, basta impostare la proprietà recordComporession.
 Possiamo impostare il tipo di file, utilizzando la proprietà recordformat, tra:
  • aiffrecords per il formato AIF
  • waverecords per il formato WA
  • ulawrecords per il formato AU
  • movierecords per il formato video QuickTime

Possiamo impostare la fonte da cui registrare l'audio, impostando la proprietà recordInput tra le seguenti:
  • imic - microfono interno
  • emic -il jack audio esterno
  • cd - il lettore CD
  • irca - il jack  RCA
  • tvfm - da una radio FM
  • idav - da un input analgicoDAV
  • mbay - dispositivo media-bay
  • modm - da un modem
  • zvpc - da un zoom video input
  • none - non registra
Possiamo impostare la frequenza di campionamento in kilohertz con la proprietà recordrate.
Una volta scelto se e cosa impostare i comandi da utilizzare sono:

record sound file "registrazione.aiff"

mentre per mettere in pausa e riprendere la registrazione abbiamo:

record pause
record resume

Infine per chiudere la registrazione abbiamo:
stop recording

In questo modo potete fare programmi di registrazione molto complessi.
Per gli utenti linux, che non hanno quicktime a disposizione, c'è il programma sox oppure arecord che possimo utilizzare dentro il nostro livecode, ad esempio:

shell("sox -t alsa default output.wav")

giovedì 16 aprile 2015

Gadget

Nel 2009 Livecode lanciò un simpaticissimo gadget: la tazza con il codice per il caffè. Ecco un'immagine:
Il codice è il seguente:

on WakeUp
   put "groundCoffee" into revMug
   repeat numSugar times
      add sugar to revMug
   end repeat
   if wantMilk then      
      add milk to revMug      
   end if   
end wakeUp
#enjoy

E voi che gadget fareste?

martedì 14 aprile 2015

Ricerca delle specie aliene

In biologia una specie aliena può essere semplicemente una specie che si trova in un ambiente che non è il suo. Le specie aliene possono provocare delle vere catastrofi ecologiche, un ecosistema dove appaiono degli animale che non ha antagonisti, ad esempio, li porta molte volte ad una riproduzione incontrollata.
Per questo motivo la NOBANIS studia le specie invasive estranee all'Europa.
L'Europa unita per questo motivo ha finanziato il progetto DAISE che ha costruito un database delle specie aliene e il software utilizzato è il nostro Livecode (allora si chiamava ancora Revolution):
La semplicità di livecode ha permesso l'utilizzo di vari database (SQLite e MySQL), la grafica vettoriale per mostrare volta per volta le regioni europee colpite e la creazione di ottimi report.
Ecco altre immagini:

martedì 7 aprile 2015

Anagrammi italiani

Data una serie di lettere, trovare tutte le parole valide nel minor tempo è una sfida di programmazione molto difficile. Oggi, riprendendo l'articolo sul gioco scarabeo, vedremo il metodo migliore e più veloce.
Per avere dei risultati sorprendenti, non bisogna fare tutti gli anagrammi possibili delle lettere. Ad esempio, date le lettere AMOR un programma lento si metterebbe a cercare tutti i possibili anagrammi:

a, am, ma, amo, oma, oam, amor, ecc.

Ma ciò è sbagliato!
Non ci servono tutti gli anagrammi, ma solo la firma delle parole. La firma è la serie di lettere di una parola, ordinandole alfabeticamente; ad esempio:
  • amor  ->  amor
  • ramo ->  amor
  • Roma -> amor
Come vedete le tre parole diverse hanno la stessa firma, quindi date le parole AMOR, le uniche firme che ci servono sono:

a, am, amo, amor, amr, ao, aor, ar, m, mo, mor, mr, o, or, r

sono solo 15 elementi, mentre un programma generico di anagrammi ne produrrebbe 64.
A questo punto ci serve un database che contenga le firme di tutte le parole valide, e le relative firme; cercando tutte le parole con una determinata firma, otterrete tutti gli anagrammi validi per quelle lettere.
Il codice del programma è quasi tutto qui:

on mouseUp
   put the text of field "lettere" into lettere
   #ordiniamo alfabeticamente
   #put ordinaalfab(lettere) into lettere
   put lettere & CR into field "combinazioni"
   rimuovilettera lettere
   sort field "combinazioni"
   put the text of field "combinazioni" into lista
   put empty into field "combinazioni"
   repeat for each line tLine in lista
      trovaparole tLine
   end repeat
end mouseUp

function ordinaalfab lettere
   repeat for each char tChar in lettere
      put tChar & CR after let2
   end repeat
   delete last char of let2
   sort let2
   replace CR with empty in let2
   return let2
end ordinaalfab

on trovaparole lettere
   put the connessione of this card into connID
   put "SELECT parola FROM parole WHERE firma='" & lettere & "'" into tSQL      
   put revDataFromQuery(tab,return,connID,tSQL) into tRecords   
   if tRecords is not empty then
      put tRecords & CR after field "combinazioni"
   end if
end trovaparole


on controlla lettere
   put ordinaalfab(lettere) into lettere
   if lettere is not among the lines of field "combinazioni" then      
      put lettere & CR after field "combinazioni"
   end if
end controlla

on rimuovilettera lettere
   put the number of chars of lettere into n
   repeat with i=1 to n
      put lettere into temp
      delete char i of temp
      controlla temp
      rimuovilettera temp
   end repeat  
end rimuovilettera



Il programma potete scaricarlo da qui: risolutore scarabeo.