BusTO — Libera il trasporto pubblico Piemontese

Il 29 ottobre 2014 alle ore 01:38 fu annunciato il rilascio della prima versione stabile di BusTO! Un’applicazione che permette a tutti i Torinesi di vedere gli orari di bus e tram in tempo reale utilizzando esclusivamente software libero, ovvero nel completo rispetto della propria privacy (ovvero totalmente il contrario di molte simili applicazioni sul Play Store).

L’app è scaricabile per ora esclusivamente da F-Droid, un altro software libero che rispetta la tua privacy e che contiene esclusivamente altro software libero! (Una matriosca di software libero!)

Disponibile su F-Droid
Installa F-Droid e cerca BusTO!
QRCode per scaricare BusTO da F-Droid
…o scannerizza il QRCode con Barcode Scanner

F-Droid è un luogo super-sicuro in cui puoi scaricare applicazioni molto utili oltre alla nostra BusTO. Sul tuo Android abilita Impostazioni > Sicurezza > Origini sconosciute per poter scaricare F-Droid in pace, e poter così iniziare ad amare BusTO!

Caratteristiche di BusTO @ F-Droid

Non sei tracciato

La stragrande maggioranza delle applicazioni del Play Store fanno largo uso di Google Analytics SDK, una libreria spiacevole che nasce con l’unico scopo di tracciare ogni utente di una certa applicazione e riferire allo sviluppatore ogni utilizzo.
BusTO@F-Droid non ti traccia in alcun modo.

Risparmio di Internet & Batteria

Molte app del Play Store si auto-risvegliano non appena il telefono ha una connessione ad Internet per tentare di riferire all’autore informazioni sull’utilizzo. Ci sono modi per bloccare l’invio di queste informazioni, ma non c’è modo per bloccare questo comportamento spiacevole.
BusTO@F-Droid non ha anti-funzionalità: non spedisce alcun dato di questo tipo nè in background e nè in primo piano e ciò comporta anche un risparmio di dati Internet e di batteria. Inoltre,
BusTO@F-Droid nasce con la logica di riciclare di ogni risorsa Internet: Se non serve richiedere via Internet il nome di una fermata, non serve farlo! Così abbiamo ragionato per svilupparla.

Pubblicità? AHAHAH!

Non è che ci fanno schifo i soldi: semplicemente non ci interessa diventare milionari a spese della tua privacy. A noi interessa esclusivamente avere un’applicazione funzionale e che non annoi con spiacevoli pubblicità invasive. Infatti la maggior parte delle applicazioni sul Play Store utilizza i servizi di Google Analytics e di Google Adword che identificano unilateralmente il tuo dispositivo, schedando i tuoi interessi per mostrarti pubblicità mirata inserita da inserzionisti che ti guardano come veri avvoltoi.
BusTO non scenderà mai a compromessi di questo tipo e perciò non ti traccierà e non conterrà mai pubblicità. Se vuoi sostenere BusTo per questa scelta, puoi donarci un caffè o una bella birra rossa che servirà a supportarci moralmente. Non avremo certo gloria con spam e tracking!

Supporto Material Design Android Lollipop!

Ai nostri utenti piace il Material Design e perciò BusTO è nata sfruttando al meglio l’interfaccia grafica di Android 5 Lollipop.

(Prova a trascinare verso il basso gli orari dei passaggi della fermata per ricaricarli!)

Prendi parte alla combriccola

BusTO nasce per essere un software libero: Hai il diritto di lamentarti con te stesso se qualcosa non ti piace, in quanto hai il potere di cambiare ogni singola riga di codice e puoi ricondividere le tue migliorie con tutti (soprattutto con noi!). In ogni caso ci sono tanti modi di migliorare quest’applicazione, per esempio inviando bug o idee o regalandoci la classica birra.

Come funziona?

Scarica l’app da F-Droid e premi il tasto Menù > Info, per scoprirlo! Perchè ci fai scrivere due volte le stesse cose? Suvvia!

I tuoi diritti

BusTO è un software libero. Significa che puoi:

  • Usare BusTO come ti pare
  • Studiare il suo codice come ti pare
  • Modificare il codice come ti pare
  • Condividere con chi vuoi il frutto del tuo lavoro

Tutto ciò è per permettere a tutti di verificare con i propri occhi quanto BusTO ami i propri utenti e rispetti la loro privacy, ma non solo: è per permettere a tutti di migliorarla anche mentre noi siamo sotto la doccia. Maggiori informazioni nel Menù > Info dell’applicazione.

Grazie!

Grazie per l’utilizzo, e grazie a tutti i contributori! In particolare grazie a Marco Gagino e a Ludovico Pavesi ed a me (Valerio Bozzolan!) Un ringraziamento speciale a 5T Srl che fornisce i dati in tempo reale.

Software libero a portata di Android con F-Droid

Android è un software libero, in teoria.

Ciò significa che abbiamo il diritto legale di usare Android per qualsiasi scopo, di studiarlo e modificarlo, di re-distribuirlo, bla bla bla, poichè ce lo dice la licenza. (A parte che non è vero, dato che praticamente tutti gli smartphone hanno tonnellate di software non libero pre-installato… ma comunque…)

Ma… le applicazioni?

F-Droid
F-Droid, “Market” per Android di software libero

Intanto inizia a prendere il tuo Android, vai a questo indirizzo, e scarica F-Droid:

F-Droid.org

Ah, prima di farlo, vai in Impostazioni > Sicurezza e abilita “Origini sconosciute” (e se vuoi disabilita “Verifica app”).

Con la prima opzione stai dicendo che vuoi scaricare app che abbiano qualsiasi origine. È giusto: vuoi la libertà di fare quello che ti pare.

Con la seconda opzione dici a Google che non vuoi che tu sia controllato per ogni applicazione che installi. È opzionale, noi lo facciamo perchè non ci piace essere sotto il controllo di Google.

Dicevamo, ovviamente gli sviluppatori fanno quello che vogliono con le loro applicazioni e ci mettono le licenze che vogliono. Ma se volessimo essere devoti al software libero e alla nostra privacy, abbiamo il diritto legale di disattivare pure tutte le applicazioni di terze parti (ciò significa anche quelle dei servizi Google come Gmail e Google Play stessi. Esatto, sono di terze parti: non fanno originariamente parte di Android e hai il diritto di disattivarle in qualsiasi modo se hai voglia, e di rimpiazzarle), e iniziamo una nuova vita liberi… come il software! F-Droid in questo ci dà una mano.

F-Droid è un’applicazione che permette di scaricare altre applicazioni di cui si ha la piena certezza che siano libere, ma trovi ulteriori informazioni sulla pagina di Wikipedia di F-Droid (che fra l’altro abbiamo scritta noi!)

Ecco alcune applicazioni che potrai trovare su F-Droid (ultimo aggiornamento 18 gennaio 2016) in ordine pseudo casuale come-mi-pare:

  1. Acrylic Paint
    Semplice strumento di disegno multitouch. OK, non vale, l’abbiamo fatta noi
  2. Mozilla Firefox
    Mica può mancare Il Browser.
    (Gli avvertimenti in rosso sono spiegati nella descrizione dell’app, non ti spaventare.)
  3. K-9 Mail
    Il client di posta più completo per il tuo smartphone. Si interfaccia a OpenKeyChain per mandarsi email in modo cifrato (vedi il “nostro” indovinello a proposito di cifratura).
  4. Apollo
    Un player musicale.
  5. Calculator
    Calcolatrice che plotta grafici.
  6. Barcode Scanner
    Fotografa una miriade di tipi di codici a barre o di QR Code e recupera le informazioni che contengono. Permette anche di generarli.
  7. Dimmer
    Per usare il telefono al buio senza esserne abbagliati.
  8. AFWall+
    Permette di negare Internet alle singole applicazioni via WiFi, 3G.
  9. FasterGPS
    Aumenta le prestazioni del proprio ricevitore GPS configurandolo con server di geolocalizzazione più vicini.
  10. Amaze File Manager
    Davvero un ottimo file manager.
  11. Sky Map
    Punta il telefono verso il cielo, ed ammira le stelle!
    L’applicazione è costruita senza la liberia di tracciamento di Google Analytics, e utilizza soltanto le sue mappe stellari.
  12. LibreOffice Viewer Beta
    La suite per ufficio libera, per eccellenza, ora su Android.
  13. Conversations
    Applicazione che si basa sul protocollo XMPP (Jabber), ovvero è in grado di gestire molteplici account di chat come per esempio la Facebook Chat (postedit: no, da qualche tempo Facebook ha chiuso questo protocollo…) o Google Talk (che sarebbe Hangout).
  14. OsmAnd~
    Navigatore per qualsiasi luogo, offline (si basa su OpenStreetMap).
  15. Shattered Pixel Dungeon
    Un gioco che fa della difficoltà la sua bellezza.
  16. oandbackup
    Backup e restore delle singole applicazioni. Serve il root ovviamente!
  17. ownCloud client
    Chi sa cos’è lo amerà; chi non lo sa non gli serve a molto. Ma presto parleremo di ownCloud, giuro.
  18. BusTo
    Se sei Piemontese! Sì, l’abbiamo fatta noi
  19. MineSweeper
    OK, anche questa l’abbiamo fatta noi
  20. Chord Shift
    Per traslare accordi musicali in fretta.
    OK, anche quest’ultima l’abbiamo fatta noi Basta. Per ora.
  21. Kontalk
    Chat cifrata end-to-end pronta al volo 100% software libero con server distribuiti guidati dalla comunità? Kontalk. Un Italiano fra i principali sviluppatori. Si basa sull’amato protocollo XMPP.
    Ci abbiamo donato qualche spicciolino, se lo meritano. Bravi team Kontalk!

E infine:

  • Cowsay
    Originariamente nato per GNU/Linux la cui unica (in)utilità è generare mucche e altre bestie strane sotto forma di testo. Tipo:
 ____________________
( Viva viva F-Droid! )
 --------------------
   o
    o
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

Alcune fra le applicazioni sopra citate ovviamente possono anche trovarsi su Google Play. Ma su F-Droid abbiamo la certezza che siano completamente libere e che non siano state manipolate in un momento intermedio dall’autore.

Continua l’argomento F-Droid su Wikipedia.

Buon F-Droid a tutti!

Catturare video da schermo su Ubuntu Linux

Per riprendere il proprio schermo sul nostro Ubuntu, esiste il programma Kazam.

Puoi scaricarlo dall’Ubuntu Software Center cliccando su questo pulsante, oppure cercando sull’Ubuntu Software Center «Kazam».

Download da Ubuntu Software Center
Kazam – Ubuntu Software Center

Kazam ha un interfaccia grafica semplicissima per permetterci di fare un filmato del proprio schermo.

Ecco come è la sua interfaccia all’attuale versione 1.4.2-0ubuntu1:

Screenshot di Kazam per Ubuntu Linux
Kazam – Interfaccia

Selezionando “ScreenCast” e premendo il bottone Capture, il programma inizierà a fare un filmato al nostro desktop, nell’area selezionata. Possiamo scegliere di riprendere l’intero schermo, oppure solo la finestra corrente, oppure un area ben precisa.

Per interrompere, il metodo più efficace è digitare la seguente combinazione di tasti:

Super + Ctrl + f

(Ricordando che il tasto Super sulle vostre tastiere è il logo di Windows)

Migliorare i video

Nel caso Kazam stia rallentando troppo il vostro computer, o nel caso si volesse migliorare la qualità d’immagine, provate ad andare in FilePreferences. Si aprirà una finestra simile a quella in basso, in cui potete abbassare o alzare il framerate.

Il framerate è il numero di fotogrammi al secondo di registrazione. È un valore che se lo si tiene basso, permetterà di avere video più scattosi ma avvantaggiando la velocità del computer ottenendo inoltre video molto più leggeri… Allo stesso tempo alzando il valore del framerate (anche a 60 fotogrammi al secondo!) il video diventa di una fluidità eccezionale, ovviamente se il computer può permetterselo…

Editing Kazam preferences
La modifica del framerate degli screencast di Kazam

Buon utilizzo!

Automatizzare mouse e tastiera di un PC

Possono capitare situazioni in cui sarebbe comodo registrare una sequenza di azioni da mouse e tastiera, da poter far ripetere al PC quante volte si vuole, a che velocità si vuole e in che momento si vuole.

Uno dei migliori programmi per fare tutto questo è MacroMaker. Con MacroMaker chiunque può automatizzare il proprio PC.

Purtroppo nel momento della scrittura di questo articolo MacroMaker supporta soltanto Windows 95, 98, NT, 2000, 2003 e XP… Nelle versioni successive a XP (come Vista,  7 e 8…) MacroMaker potrebbe non funzionare affatto.

MacroMaker - Automatizza il tuo PC
MacroMaker

Iniziamo subito a provare MacroMaker se abbiamo una versione di Windows compatibile, e scarichiamolo dal sito ufficiale:

Andiamo nella cartella dove è stato scaricato, (C:/Documents and Settings/Nome Utente/Documenti/Download), ed estraiamolo.

Click destro in Windows XP su un file zippato

In seguito entriamo nella cartella estratta e lanciamo l’installazione aprendo il file MacroMakerInst.msi. Se l’installazione non termina correttamente, probabilmente sono da eseguire anche i restanti file contenuti nella cartella estratta, prima di rilanciare MacroMakerInst.msi.

Dopo l’installazione sarà visibile nella barra delle applicazioni la seguente icona:

Barra Applicazioni Windows XP - MacroMaker

Significa che MacroMaker è operativo, ed è pronto per essere configurato.

Cliccando su di essa finalmente si aprirà l’interfaccia del programma.

MacroMaker Screenshot

  1. Dall’Add di destra, si può decidere di fare una registrazione di azioni (mouse/tastiera).
  2. Dall’Add di sinistra, si può creare le macro da eseguire (e includere le registrazioni fatte da destra).
  3. In seguito si salva e si Esegue.

Lasciamo alcuni video per poter addentrarsi nel programma più facilmente. Buon utilizzo

Come intasare un PC – Reyboz Directory Invader 2012

Ho scoperto nel cassetto un simpatico programma che avevamo realizzato per fare uno scherzo incoscenzioso ad una persona… Un programma molto banale che creava cartelle a non finire, ma arricchito con un simpatico regolatore di trasparenza (per nascondere la finestra), nonchè di un algoritmo che faceva in modo che il computer rimanesse stabile durante l’intera creazione.

Il programma è molto semplice:

  1. Scegli una cartella di destinazione (Ad esempio il Desktop)
  2. Decidi il nome che avranno le tue cartelle (Consecutive, o casuali)
  3. Modifichi la quantità (una, cinquecento, o 1 milione…)

E crei!

Crea - Reyboz Directory Invader 2012

Ecco come appare il mio Desktop dopo aver usato Reyboz Directory Invader.

Screenshot 1 - Reyboz Directory Invader - 2012

Screenshot 1 - Reyboz Directory Invader - 2012

Buona invasione!

Codice per convertire cifre in parole – Visual Basic VBA PHP e Javascript

Se hai bisogno di convertire un numero:

123.456.783

Nel suo corrispondente letterale:

Centoventitremilioniquattrocentocinquantaseimilasettecentottantatrè!

Il nostro codice ti potrà essere di aiuto poichè rispetta la grammatica Italiana e soddisfa fino a diciotto cifre!

Il nostro convertitore di numeri in parole (che abbiamo chiamato spell_my_int) è disponibile in diversi linguaggi: Bash, PHP, Visual Basic/VBA, e Javascript!

Termini e condizioni!

I codici sorgente presenti in questa pagina sono rilasciati sotto i termini della licenza libera GNU General Public License versione 3 o successive: Hai il diritto di utilizzare, migliorare/peggiorare questo codice per qualsiasi necessità a patto che il codice da te prodotto sia chiaramente coperto dalla stessa licenza (affinchè io per esempio possa avvantaggiarmi delle tue migliorie ). Inoltre, ti prego di segnalare su questa pagina un link dove riporti un riferimento al tuo utilizzo, per facilitarmi appunto il mio lavoro di andare a vedere come la gente usa e migliora il mio codice

Il codice funziona. In ogni caso (come per ogni software Libero) non diamo alcuna garanzia o responsabilità

Grazie, e buon uso!

Versione Bash per GNU/Linux

Il nostro script per linea di comando Bash sui sistemi GNU/Linux (e credo Mac OS X) è disponibile su Launchpad con il nome di n2t-it (number to text – Italiano).
Per prima cosa occorre installare bzr da utente root:

apt-get install bzr

Quindi da utente normale bisogna scaricare il sorgente ed entrare nella cartella:

bzr branch lp:n2t-it
cd n2t-it

A quel punto si può usarlo (ha molte opzioni):

# Per la pagina di manuale
./n2t -h
 
# Esempio minimale
./n2t 123.45
 
# Esempio completo da STDIN
echo 123/44 | ./n2t -c "/" -t " virgola " -d

Versione per Microsoft Windows©

Screenshot spell_my_int() - Visual Basic - Reyboz Blog

Puoi scaricare il programma spell_my_int per Windows da questo indirizzo.
Oppure puoi vedere il codice del programma (in Visual Basic) scorrendo più in basso.

Versione in PHP

Puoi vedere la versione in PHP online su questo indirizzo.
Oppure puoi usarlo sul tuo sito personale inserendo nella tua pagina questo codice:

<iframe src="http://lab.reyboz.it/spell_my_int/PHP/?number=0" width="250" height="150" />
  <p>Your browser does not support iframes.</p>
</iframe>

Puoi inoltre scorgere il codice scorrendo più in basso.

Versione in Javascript

Visualizzalo online in JavascriptVedi codice Javascript

spell_my_int() in Visual Basic

'	Convertitore di numeri interi in corrispettivi letterali.
'	Esempio:	123 => centoventitrè
'	Born:	10 Giugno 2012
'	Licenza: GNU General Public License (versione 3 o successive)
'	Autore: Valerio Bozzolan - Reyboz.it
Public Function spell_my_int(ByVal num As Long, Optional ByVal centOOttanta As Boolean = False) As String
	Dim numstring As String = num.ToString
	Dim numlen As Integer
	Dim IDcent As Byte
	Dim subnumerostring As String
	Dim subnumero As Integer
	Dim cifra(2) As String
	Dim text(2) As String
	Dim prime2cifre As Integer
	Dim result As String = ""
	Dim sezione As Integer = 0
	Dim mono() As String = {"", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove"}
	Dim duplo() As String = {"dieci", "undici", "dodici", mono(3) & "dici", "quattordici", "quindici", "sedici", "dicias" & mono(7), "dici " & mono(8), "dician" & mono(9)}
	Dim deca() As String = {"", duplo(0), "venti", mono(3) & "nta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta"}
	Dim cento() As String = {"cent", "cento"}
	Dim mili(,) As String = {{"", "mille", "milione", "miliardo", "bilione", "biliardo"}, {"", "mila", "milioni", "miliardi", "bilioni", "biliardi"}}
	Dim max As Long = (10 ^ (6 * 3) - 1) - 1
	If (num < 0) Then
		Return "Minimo 0!"
	ElseIf (num > max) Then
		Return "Massimo " & max & "!"
	ElseIf (num = 0) Then
		Return "zero"
	End If
	Select Case (numstring.Length Mod 3)
		Case 1
			numstring = "00" & num.ToString
		Case 2
			numstring = "0" & num.ToString
		Case Else
			numstring = num.ToString
	End Select
	numlen = numstring.Length
	'MsgBox("Numlen: " & numlen & "  subnumero: " & numstring)
	Do While ((sezione + 1) * 3 <= numlen)
		subnumerostring = Mid(numstring, (numlen - ((sezione + 1) * 3)) + 1, 3)
		subnumero = CInt(subnumerostring)
		cifra(0) = Mid(subnumerostring, 1, 1)
		cifra(1) = Mid(subnumerostring, 2, 1)
		cifra(2) = Mid(subnumerostring, 3, 1)
		'MsgBox("Sezione numero: " & sezione & ", cifre della sezione: " & cifra(0) & cifra(1) & cifra(2))
		If (subnumero <> 0) Then
			prime2cifre = CInt(cifra(1)) * 10 + CInt(cifra(2))
			'MsgBox(prime2cifre)
			If (prime2cifre < 10) Then
				text(2) = mono(cifra(2))
				text(1) = ""
			ElseIf (prime2cifre < 20) Then
				text(2) = ""
				text(1) = duplo(prime2cifre - 10)
			Else
				'ventitre => ventitrè
				If (sezione = 0 And cifra(2) = 3) Then
					text(2) = "trè"
				Else
					text(2) = mono(cifra(2))
				End If
				'	novantaotto => novantotto
				If (cifra(2) = 1 Or cifra(2) = 8) Then
					text(1) = Mid(deca(cifra(1)), 1, deca(cifra(1)).Length - 1)
				Else
					text(1) = deca(cifra(1))
				End If
			End If
			If (cifra(0) = 0) Then
				text(0) = ""
			Else
				' centoottanta => centottanta
				If (Not centOOttanta And cifra(1) = 8 Or (cifra(1) = 0 And cifra(2) = 8)) Then
					IDcent = 0
				Else
					IDcent = 1
				End If
				If (cifra(0) <> 1) Then
					text(0) = mono(cifra(0)) & cento(IDcent)
				Else
					text(0) = cento(IDcent)
				End If
			End If
			'	unomille	=> mille
			'	miliardo	=> unmiliardo
			If (subnumero = 1 And sezione <> 0) Then
				If (sezione >= 2) Then
					result = "un" & mili(0, sezione) & result
				Else
					result = mili(0, sezione) & result
				End If
			Else
				result = text(0) & text(1) & text(2) & mili(1, sezione) & result
			End If
		End If
		sezione = sezione + 1
	Loop
	Return result
End Function

spell_my_int() in VBA (Visual Basic for Application)

'	Convertitore di numeri interi in corrispettivi letterali.
'	Esempio:	123 => centoventitrè
'	Born:	10 Giugno 2012
'	Licenza: GNU General Public License (versione 3 o successive)
'	Autore: Valerio Bozzolan - Reyboz.it
Function spell_my_int(ByVal num As Long) As String
    Dim centOOttanta As Boolean
    centOOttanta = false
    Dim numstring As String
    Dim numlen As Integer
    Dim IDcent As Byte
    Dim subnumerostring As String
    Dim subnumero As Integer
    Dim cifra(2) As String
    Dim text(2) As String
    Dim prime2cifre As Integer
    Dim result As String
    Dim sezione As Integer
    Dim mono(9) As String
    Dim duplo(9) As String
    Dim deca(9) As String
    Dim cento(2) As String
    Dim mili(1, 9) As String
    Dim max
    max = ((10 ^ (6 * 3)) - 1) - 1
    '   Caricamento di mono() in formato esteso
    mono(0) = ""
    mono(1) = "uno"
    mono(2) = "due"
    mono(3) = "tre"
    mono(4) = "quattro"
    mono(5) = "cinque"
    mono(6) = "sei"
    mono(7) = "sette"
    mono(8) = "otto"
    mono(9) = "nove"
    '   Caricamento di duplo() in formato esteso
    duplo(0) = "dieci"
    duplo(1) = "undici"
    duplo(2) = "dodici"
    duplo(3) = "tredici"
    duplo(4) = "quattordici"
    duplo(5) = "quindici"
    duplo(6) = "sedici"
    duplo(7) = "dicias" & mono(7)
    duplo(8) = "dici" & mono(8)
    duplo(9) = "dician" & mono(9)
    '   Caricamento di deca() in formato esteso
    deca(0) = ""
    deca(1) = duplo(0)
    deca(2) = "venti"
    deca(3) = mono(3) & "nta"
    deca(4) = "quaranta"
    deca(5) = "cinquanta"
    deca(6) = "sessanta"
    deca(7) = "settanta"
    deca(8) = "ottanta"
    deca(9) = "novanta"
    '   Caricamento di cento() in formato esteso
    cento(0) = "cent"
    cento(1) = cento(0) & "o"
    '   Caricamento di mili(0 ,) in formato esteso
    mili(0, 0) = ""
    mili(0, 1) = "mille"
    mili(0, 2) = "milione"
    mili(0, 3) = "miliardo"
    mili(0, 4) = "bilione"
    mili(0, 5) = "biliardo"
    '   Caricamento di mili(1 ,) in formato esteso
    mili(1, 0) = ""
    mili(1, 1) = "mila"
    mili(1, 2) = "milioni"
    mili(1, 3) = "miliardi"
    mili(1, 4) = "bilioni"
    mili(1, 5) = "biliardi"
    result = ""
    sezione = 0
    If (num < 0) Then
        spell_my_int = "Minimo 0!"
    ElseIf (num > max) Then
        spell_my_int = "Massimo " & max & "!"
    ElseIf (num = 0) Then
        spell_my_int = "zero"
    Else
        numstring = CStr(num)
        Select Case (Len(numstring) Mod 3)
            Case 1
                numstring = "00" & CStr(num)
            Case 2
                numstring = "0" & CStr(num)
            Case Else
                numstring = CStr(num)
        End Select
        numlen = Len(numstring)
        'MsgBox ("Numlen: " & numlen & "  subnumero: " & numstring)
        Do While ((sezione + 1) * 3 <= numlen)
            subnumerostring = Mid(numstring, (numlen - ((sezione + 1) * 3)) + 1, 3)
            subnumero = CInt(subnumerostring)
            cifra(0) = Mid(subnumerostring, 1, 1)
            cifra(1) = Mid(subnumerostring, 2, 1)
            cifra(2) = Mid(subnumerostring, 3, 1)
            'MsgBox ("Sezione numero: " & sezione & ", cifre della sezione: " & cifra(0) & cifra(1) & cifra(2))
            If (subnumero <> 0) Then
                prime2cifre = CInt(cifra(1)) * 10 + CInt(cifra(2))
                'MsgBox (prime2cifre)
                If (prime2cifre < 10) Then
                    text(2) = mono(cifra(2))
                    text(1) = ""
                ElseIf (prime2cifre < 20) Then
                    text(2) = ""
                    text(1) = duplo(prime2cifre - 10)
                Else
                    'ventitre => ventitrè
                    If (sezione = 0 And cifra(2) = 3) Then
                        text(2) = "trè"
                    Else
                        text(2) = mono(cifra(2))
                    End If
                    '   novantaotto => novantotto
                    If (cifra(2) = 1 Or cifra(2) = 8) Then
                        text(1) = Mid(deca(cifra(1)), 1, Len(deca(cifra(1))) - 1)
                    Else
                        text(1) = deca(cifra(1))
                    End If
                End If
                If (cifra(0) = 0) Then
                    text(0) = ""
                Else
                    ' centoottanta => centottanta
                    If (Not centOOttanta And cifra(1) = 8 Or (cifra(1) = 0 And cifra(2) = 8)) Then
                        IDcent = 0
                    Else
                        IDcent = 1
                    End If
                    If (cifra(0) <> 1) Then
                        text(0) = mono(cifra(0)) & cento(IDcent)
                    Else
                        text(0) = cento(IDcent)
                    End If
                End If
                '   unomille    => mille
                '   miliardo    => unmiliardo
                If (subnumero = 1 And sezione <> 0) Then
                    If (sezione >= 2) Then
                        result = "un" & mili(0, sezione) & result
                    Else
                        result = mili(0, sezione) & result
                    End If
                Else
                    result = text(0) & text(1) & text(2) & mili(1, sezione) & result
                End If
            End If
            sezione = sezione + 1
        Loop
        spell_my_int = result
    End If
End Function

spell_my_int() in PHP

/*
	Convertitore di numeri interi in corrispettivi letterali.
	Esempio:	123 => centoventitrè
	Born:	10 Giugno 2012
	Licenza: GNU General Public License (versione 3 o successive)
	Autore: Valerio Bozzolan - Reyboz.it
*/
function spell_my_int($num, $centOOttanta=false) {
	$num	= (int) $num;
	$mono	= array("", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove");
	$duplo	= array("dieci", "undici", "dodici", "{$mono[3]}dici", "quattordici", "quindici", "sedici", "dicias{$mono[7]}", "dici{$mono[8]}", "dician{$mono[9]}");
	$deca	= array("", $duplo[0], "venti", "{$mono[3]}nta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta");
	$cento	= array("cent", "cento");
	$mili	= array(
		0 => array("", "mille", "milione", "miliardo", "bilione", "biliardo"),
		1 => array("", "mila", "milioni", "miliardi", "bilioni", "biliardi")
	);
	$max	= pow(10, count($mili[0]) * 3) - 1;
	if( !is_numeric($num) ) {
		return "Non &egrave; un numero!";
	} elseif ( $num < 0 ) {
		return "Numero negativo!";
	} elseif ( $num > $max ) {
		return "Limite superato!";
	} elseif( $num == 0 ) {
		return "zero";
	}
	$result	= "";
	$sezione	= 0;
	$num	= (string) $num;
	switch( strlen($num) % 3 ) {
		case 1:	$num	= "00$num";
			break;
		case 2:	$num	= "0$num";
	}
	$numlen	= strlen($num);
	while( ($sezione + 1) * 3 <= $numlen ) {
		$cifra	= substr($num, (($numlen - 1) - (($sezione + 1) * 3)) + 1, 3);
		$numero	= (int) $cifra;
		$cifra[0]	= (int) $cifra[0];
		$cifra[1]	= (int) $cifra[1];
		$cifra[2]	= (int) $cifra[2];
		if( $numero <> 0 ) { 
			$prime2cifre	= (int) ($cifra[1] . $cifra[2]);
			if( $prime2cifre < 10 ) {
				$text[2]	= $mono[$cifra[2]];
				$text[1]	= "";
			} elseif( $prime2cifre < 20 ) {
				$text[2]	= "";
				$text[1]	= $duplo[$prime2cifre - 10];
			} else {
				//	ventitre => ventitrè
				if( $sezione == 0 && $cifra[2] == 3 ) {
					$text[2]	= "tr&egrave;";
				} else {
					$text[2]	= $mono[$cifra[2]];
				}
				//	novantaotto => novantotto
				if( $cifra[2] == 1 || $cifra[2] == 8 ) {
					$text[1]	= substr($deca[$cifra[1]], 0, -1);
				} else {
					$text[1]	= $deca[$cifra[1]];
				}
			}
			if( $cifra[0] == 0 ) {
				$text[0]	= "";
			} else {
				//	centoottanta => centottanta
				if( !$centOOttanta && $cifra[1] == 8 || ($cifra[1] == 0 && $cifra[2] == 8) ) {
					$IDcent	= 0;
				} else {
					$IDcent	= 1;
				}
				if( $cifra[0] <> 1 ) {
					$text[0]	= $mono[$cifra[0]] . $cento[$IDcent];
				} else {
					$text[0]	= $cento[$IDcent];
				}
			}
			//	unomille	=> mille
			//	miliardo	=> unmiliardo
			if( $numero == 1 && $sezione <> 0 ) {
				if( $sezione >= 2 ) {
					$result	= "un" . $mili[0][$sezione] . $result;
				} else {
					$result	= $mili[0][$sezione] . $result;
				}
			} else {
				$result	= $text[0] . $text[1] . $text[2] . $mili[1][$sezione] . $result;
			}
		}
		$sezione++;
	}
	return $result;
}

spell_my_int() in Javascript

/*
	Convertitore di numeri interi in corrispettivi letterali.
	Esempio:	123 => centoventitre'
	Born:	10 Giugno 2012
	Licenza: GNU General Public License (versione 3 o successive)
	Autore: Valerio Bozzolan - Reyboz.it
*/
function spell_my_int(numstr, centOOttanta) {
	mono	= new Array ("", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove");
	duplo	= new Array ("dieci", "undici", "dodici", mono[3] + "dici", "quattordici", "quindici", "sedici", "dicias" + mono[7], "dici" + mono[8], "dician" + mono[9]);
	deca	= new Array ("", duplo[0], "venti", mono[3] + "nta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta");
	cento	= new Array ("cent", "cento");
	mili	= new Array ();
	mili[0]	= new Array ("", "mille", "milione", "miliardo", "bilione", "biliardo");
	mili[1]	= new Array ("", "mila", "milioni", "miliardi", "bilioni", "biliardi");
	text	= new Array ();
	cifra	= new Array ();
	result	= "";
	sezione	= 0;
	// In Javascript si fa così per dire che questo parametro e' opzionale, con valore false di default
	centOOttanta = centOOttanta || false;
	numstr += '';
	// Non deve cominciare per zero altrimenti parseInt() impazzisce...
	while ( numstr.substr(0, 1) == "0" && numstr.length != 1 ) {
		numstr	= numstr.substr(1, numstr.length);
	}
	num	= parseInt(numstr);
	switch( numstr.length % 3 ) {
		case 1:	numstr	= "00" + numstr;
			break;
		case 2:	numstr	= "0" + numstr;
	}
	numlen	= numstr.length;
	if( isNaN(num) ) {
		return "Non e' un numero!";
	} else if ( num < 0 ) {
		return "Numero negativo!";
	} else if ( numstr.length > 6 * 3 ) {
		return "Limite superato!";
	} else if( num == 0 ) {
		return "zero";
	}
	while( (sezione + 1) * 3 <= numlen ) {
		subnumerostring = numstr.substr(((numlen - 1) - ((sezione + 1) * 3)) + 1, 3);
		if( subnumerostring != "000" ) {
			subnumero = parseInt(subnumerostring);
			cifra[0] = subnumerostring.substr(0, 1);
			cifra[1] = subnumerostring.substr(1, 1);
			cifra[2] = subnumerostring.substr(2, 1);
			prime2cifre	= parseInt(cifra[1] * 10) + parseInt(cifra[2]);
			if( prime2cifre < 10 ) {
				text[2]	= mono[cifra[2]];
				text[1]	= "";
			} else if( prime2cifre < 20 ) {
				text[2]	= "";
				text[1]	= duplo[prime2cifre - 10];
			} else {
				//	ventitre => ventitrè
				if( sezione == 0 && cifra[2] == 3 ) {
					text[2]	= "tre'";
				} else {
					text[2]	= mono[cifra[2]];
				}
				//	novantaotto => novantotto
				if( cifra[2] == 1 || cifra[2] == 8 ) {
					text[1]	= deca[cifra[1]].substr(0, deca[cifra[1]].length -1);
				} else {
					text[1]	= deca[cifra[1]];
				}
			}
			if( cifra[0] == 0 ) {
				text[0]	= "";
			} else {
				//	centoottanta => centottanta
				if( !centOOttanta && cifra[1] == 8 || (cifra[1] == 0 && cifra[2] == 8) ) {
					IDcent	= 0;
				} else {
					IDcent	= 1;
				}
				if( cifra[0] != 1 ) {
					text[0]	= mono[cifra[0]] + cento[IDcent];
				} else {
					text[0]	= cento[IDcent];
				}
			}
			//	unomille	=> mille
			//	miliardo	=> unmiliardo
			if( subnumero == 1 && sezione != 0 ) {
				if( sezione >= 2 ) {
					result	= "un" + mili[0][sezione] + result;
				} else {
					result	= mili[0][sezione] + result;
				}
			} else {
				result	= text[0] + text[1] + text[2] + mili[1][sezione] + result;
			}
		}
		sezione++;
	}
	return result;
}

Utilizzi pratici di spell_my_int()

Utilizzo di spell_my_int() in Visual Basic:

 
' Scrivere qui il codice lungo di spell_my_int() in Visual Basic!

Sub prova()
	dim num as long
	dim num_in_parole as string
	num = 123
	num_in_parole = spell_my_int(num)
	msgbox(num_in_parole)
End Sub

Utilizzo di spell_my_int() in una macro VBA:

 
' Scrivere qui il codice lungo di spell_my_int() in VBA!!!

Sub prova()
	dim num as long
	dim num_in_parole as string
	num = 123
	num_in_parole = spell_my_int(num)
	msgbox(num_in_parole)
End Sub

Utilizzo di spell_my_int() dentro una cella di Excel: (prima bisogna copiare il codice lungo di spell_my_int() nel modulo “nomemodulo”)

=nomemodulo.spell_my_int(123)

Utilizzo di spell_my_int() in PHP:

<?php
 
// Scrivere qui il codice lungo di spell_my_int() in PHP!
 
$num	= 123;
$num_in_parole = spell_my_int($num);
echo $num_in_parole;
?>

Utilizzo di spell_my_int() in Javascript:

<script type="text/javascript">
 
// Scrivere qui il codice lungo di spell_my_int() in Javascript!
 
num = 123;
num_in_parole = spell_my_int(num);
alert(num_in_parole);
</script>

Fare screenshots con Windows

Potrebbe, per alcuni, sembrare l’argomento di questo articolo ovvio e/o banale; mentre potrebbe invece per alcuni altri rivelarsi un “trucchetto” comodo ed utile da poter utilizzare nelle più svariate occasioni.

Fare uno screenshot significa di per sè immortalare ciò che viene visualizzato in un determinato istante sul monitor del tuo computer.

Per farlo vi sono, certamente, molti programmi ma quello di cui parleremo ora è un metodo che non richiede in alcun modo l’utilizzo di programmi aggiuntivi.

Vi saranno necessari soli 3 passaggi:

  1. Per fare lo “scatto” vi basterà premere il pulsante “Stamp” (che potreste anche trovare con il nome “Print/Screen/SysRq”) nella parte in alto a destra di praticamente tutte le tastiere per PC in commercio.

    Print screen - Reyboz Blog

  2. Aprire l’applicazione “Paint” (di serie su tutti i PC Windows) e premere la combinazione “Ctrl + V” per incollare.
    Ora vi ritroverete l’immagine scattata precedentemente, incollata su Paint.
    Non vi resta che salvare il tutto!
  3. Premete: File → Salva con nome…  ora, dopo aver scelto la destinazione di salvataggio del file, sotto “Nome file” mettete (naturalmente) il nome con cui volete che venga salvata l’immagine; invece  sotto “Salva come” selezionate dal menù a tendina il formato JPEG e premete su “Salva”. Avrete così salvato uno screenshot in modo facile e veloce e soprattutto senza l’utilizzo di software aggiuntivi!

Nintendo DS – Modificare i livelli di New Super Mario Bros

NSMB Editor (New Super Mario Bros Editor) permette di stravolgere completamente un qualunque livello di New Super Mario Bros e di modificarlo sul proprio computer a rigor dei più intimi schiribizzi grazie ad una interfaccia grafica piuttosto semplice. Ovviamente prima bisogna essere in possesso delle ROM di gioco. Per chi possiede una Wii sappia che NSMB Editor esiste anche per loro…

Ecco una parte di un livello progettato completamente da noi grazie a NSMB Editor.

NSMB Editor - Reyboz Blog

Preparazione

  1. Ottenere la ROM di New Super Mario Bros da uno dei seguenti siti: CoolRom (zip), Rom-nintendods (rar), Megaupload (rar) (Aggiornamento: Megaupload è stato chiuso dal Dipartimento della Giustizia degli Stati Uniti il 19 gennaio 2012).
  2. Oltre alla ROM ci serve un buon emulatore, cioè un programma che simuli il Nintendo DS sul nostro computer per provare subito le modifiche fatte. Fra i tanti consigliamo No$gba per Windows, scaricabile dal sito della Emubase.
    Se usate No$gba per emulare New Super Mario Bros preverrei ogni vostro spavento nel vedere questo errore quando tenterete di caricarlo col gioco: “Saved data could not be read. Turn off & reinsert the Game Card“.

    Errore No$gba New Super Mario Bros - Reyboz Blog

    Ciò si risolve andando su No$gba nel menù “Options“→”Emulation Setup” e impostando il menù “NDS Cartdridge Backup Media” su “FRAM 32KBytes” come da immagine.

    Impostazioni No$gba New Super Mario Bros - Reyboz Blog

    Se il vostro computer non fosse esattamente Speedy Gonzales abbassate la qualità audio nel menù “Sound Output Mode” ed in “Sound Desired Sample Rate“, e se non bastasse abbassare la voce “Multiboot Normal/Burst Delays” su “Fast/Fast”, e provate a settare la voce “Emulation Speed, LCD Refresh” su “Unlimited MHz Disaster 10%” (Quelt’ultima opzione lo farà schizzare come un anguilla, se non volete vedere Mario svolazzare come un moscerino carico di propano lasciatelo impostato su “Realtime, Auto“).

  3. Ora che dovreste avere un emulatore perfetto, scarichiamoci l’editor: Da Romhacking (zip), o da Google Code (zip).

Usare NSMB Editor

NSMB Editor sembra graficamente molto semplice. Si immagina, si paciocca, si salva ed è fatta! A sinistra il bottone Objects ci permette di scegliere e di piazzare gli oggetti sulla mappa (prato, scatola, moneta ecc..), mentre usando il bottone Sprites sfrutteremo tutto ciò che è dinamico (Fuoco, lava, acqua, nemico, pulsante ecc). La maggior parte di questi Sprites si possono configurare a proprio piacimento cambiando il codice in “Sprites Data” di cui consigliamo di leggerne le funzionalità su questo forum grandioso: NSMB Hacking.

E siccome dubitiamo profondamente che tu non inciampi nei nostri stessi problemi… invece che un sano “Arrangiati”, chiudiamo con qualche “Tips and Triks” che troverete raramente tutti insieme, fidatevi, torneranno utili!

  • Ho problemi con la visuale… Come faccio?
    Può capitare che alcuni livelli che creerete richiedano una visuale che sia simile a quella dei tipici livelli delle Torri… per intenderci, che la visuale vada su quando Mario va su, che essa vada giù quando Mario va giù… Non così scontata! Ciò si può risolvere allargando la Views sulla mappa, ma se ciò non bastasse (e spesso non basta) provate drasticamente a esportare una mappa da un livello Torre e ad importarla nel livello in cui state lavorando. Perderete quel livello… ma la grafica sarà a posto. Purtroppo è l’unico rimedio che abbiamo scovato, e perfavore, se ne trovate di migliori, avvisateci accidenti!
  • Alcuni sprites sono a sfondo rosso invece che a sfondo blu e sono inutilizzabili… Come mai?
    Dai un occhiata a Level Configuration -> Sprite Set (nella finestra di NSMB Editor, durante l’editor di una mappa, nella barra in alto).
  • Voglio trasformare il livello 1 da una collina armoniosa ad un inferno di lava. Come faccio?
    Dai un occhiata a Level Configuration-> Graphics.
  • Per ridimensionare facilmente un qualsiasi oggetto tieni premuto Shift e trascinalo con il mouse.
  • Per copiare facilmente un qualsiasi oggetto tieni premuto Ctrl e trascinalo con il mouse.
  • Ti è permesso anche modificare i livelli dove si gioca in modalità multiplayer “Mario vs Luigi”… guarda meglio il menù principale di NSMB Editor!

Presto il mio carissimo amico Sabia Giovanni, alias Sylar SweeEmo,  che ringrazio per la soffiata sull’esistenza di NSMB Editor, ci fornirà di un meravigliosa guida da lui creata contenente l’elenco completo di tutti gli Sprites utilizzabili nell’editor, arricchito con tutte le opzioni che siamo riusciti a scovare in aggiunta a quelle che ci sono scritte nei forum principali che si vedono in rete.

Sbrigati Sabia, aspettiamo te! Buon “editoring” a tutti…

Aggiornamento: Nasce la prima guida Italiana sugli Sprites di NSMB!

Ora disponibile: nsmb.reyboz.it

Reyboz Music plugin per WordPress

É ormai terminata la fase di “test-crash” e siamo felici di pubblicare direttamente su queste pagine la versione ufficiale di un plugin sviluppato dal Reyboz Blog e dedicato a tutti coloro che amano la musica:

Il Reyboz Music plugin, appunto.

Monoscopio - Prova online del Reyboz Music - Reyboz Blog

Il Reyboz Music plugin sarà visibile a tutti i visitatori che passeranno da questo istante in poi sulle nostre linee web, offrendo in loro tributo un brano, scelto da voi, su tutte le pagine del nostro sito, che cambierà automaticamente allo scadere della mezzanotte e verrà sostituito con un altro dalla nostra lunga Playlist…  sperando che sia di spunto per favorire il buon’umore! Terminata totalmente la fase di Prova per questa “Beta” probabilmente renderemo pubblici i listati di tutto il nostro semplice applicativo affinchè possa essere d’aiuto per sviluppare o migliorare questo piccolo software a tutti i “piccoli sviluppatori” come noi.

Se hai tempo/voglia può darsi che tu abbia un ottimo brano da consigliarci, e se ciò fosse, scrivici qui

Nel caso che il tuo brano venga accettato ti avviseremo quando sarà pubblicato e allegheremo il tuo nome per ringraziarti di aver contribuito ad allargare la nostra Playlist giornaliera.

Che altro dire se non…

Reyboz Music – The simple playlist!