Oggi presentiamo un'app per iOS, fatta con livecode, che aiuta a scegliere il nome per i propri figli: baby name eliminator.
Questa app permette i scegliere una lista di nomi per categoria, dare un voto ai nomi preferiti e pian piano arrivare al nome che più ci piace.
Il programma lo potete scaricare da qui: https://itunes.apple.com/us/app/baby-name-eliminator/id459025614?mt=8
Qui sotto potete vedere alcune schermate:
lunedì 30 novembre 2015
giovedì 26 novembre 2015
Raccolta fondi per nuovo comando replace
Il comando replace in livecode serve per sostituire una parola con un altra in una stringa, ad esempio:
Ora è possibile applicarlo anche direttamente ai campi di testo così:
solo che così perdiamo tutta la formattazione del testo.
Per questo motivo la società livecode ha lanciato una nuova raccolta fondi per permette al replace di lasciare intatta la formattazione.
Potete trovare tutte le informazioni qui: https://livecode.com/project/find-replace/
Che ne pensate?
replace "Mario" with "Lucia" in "Mario si alza presto la mattina"
Ora è possibile applicarlo anche direttamente ai campi di testo così:
replace "Mario" with "Lucia" in field "miotesto"
solo che così perdiamo tutta la formattazione del testo.
Per questo motivo la società livecode ha lanciato una nuova raccolta fondi per permette al replace di lasciare intatta la formattazione.
Potete trovare tutte le informazioni qui: https://livecode.com/project/find-replace/
Che ne pensate?
giovedì 19 novembre 2015
Programmatore livecode cercasi
Pubblico qui un'annuncio della società Trevix design :
Salve a tutti.
Sto sviluppando una applicazione per commercialisti, avvocati e professionisti in genere che promette di essere molto interessante.
Prevista per Desktop e tablet, l'idea ha passato il primo turno del Pitch your App in Create it with Livecode.
Il premio eventuale finale sarà un viaggio a Los Angeles per presentare la App a possibili investitori.
La necessità di renderla disponibile per mobile e la complessità delle funzioni che ormai vengono richieste a qualsiasi App (acquisti in App, DataGrid, Sharing files, notifiche, protezione, strategie di vendita, ecc) mi fanno rendere conto che per una persona sola il lavoro è immane.
Cerco quindi un collaboratore/socio che, a fronte di futuri possibili utili (niente soldi subito), voglia aiutarmi a svilupparla.
Idealmente il collaboratore ha una preparazione simile alla mia (lavoro con Livecode da 10 anni e ho già alcune applicazioni attive - http://www.trevix.it/software.html) o complementare. Conoscenza della lingua inglese è necessaria.
Contattatemi per maggiori informazioni: info@trevix.it
Roberto
trevix
martedì 17 novembre 2015
BJJ Scoreboard
Certe volte capita che il programma che ci servirebbe tantissimo non esiste. In questi frangenti o rinunciamo, o ce lo creiamo da noi.
Ricardo Varjão ha deciso di farsi da solo il programma per segnare i punti nei tornei di ju-jitsu utilizzando livecode.
Il risultato è stato talmente eccellente tanto che il suo programma è tra i più utilizzati per segnare i punti nei tornei mondiali.
Ecco una schermata del suo programma:
Il programma è un'app per iOS e lo potete trovare qui: https://itunes.apple.com/us/app/bjj-scoreboard/id513066325?mt=8
Il programma può essere utilizzato oltre che nei tornei, anche per allenamento.
Ricardo Varjão ha deciso di farsi da solo il programma per segnare i punti nei tornei di ju-jitsu utilizzando livecode.
Il risultato è stato talmente eccellente tanto che il suo programma è tra i più utilizzati per segnare i punti nei tornei mondiali.
Ecco una schermata del suo programma:
Il programma è un'app per iOS e lo potete trovare qui: https://itunes.apple.com/us/app/bjj-scoreboard/id513066325?mt=8
Il programma può essere utilizzato oltre che nei tornei, anche per allenamento.
lunedì 16 novembre 2015
Mandare email dal server livecode
Livecode, oltre ad essere un ottimo linguaggio di programmazione, è disponibile anche come server web.
Se abbiamo installato il livecode server su un sistema operativo Linux (o Mac), possiamo appoggiarci a un programma di posta già presente, in modo da poterlo sfruttare anche con altre applicazioni.
Uno dei programmi sempre presenti su linux è sendmail.
Qui di seguito vediamo il codice del messaggio che potremmo usare per inviare le email:
Come vedete è quasi più grande il commento per spiegare come funziona che il codice del messaggio.
In fondo ci sono due funzioni piccolissime: una per mettere il carattere di escape per i caratteri riservati della shell (shellEscape()), l'altra funzione (wrapQ()) serve solo a mettere il virgolette all'inizio e alla fine di una stringa.
Interessante è la stringa utilizzata per separare gli allegati è creata unendo il la parola "boudary" con il numero che esce fuori con la funzione seconds(). Per chi non lo sapesse la funzione seconds indica il numero di secondi tra l'istante corrente è il 1/1/1970. In questo modo non ci dovrebbero essere problemi a separare gli allegati tra loro.
Dove vedete due e commerciali ("&&"), non è un errore, bensì è un sistema più veloce equivalente a scrivere "& space &".
Il resto del codice è tutto commentato, ma se avete domande, fatele pure nei commenti e proverò a rispondervi.
Se abbiamo installato il livecode server su un sistema operativo Linux (o Mac), possiamo appoggiarci a un programma di posta già presente, in modo da poterlo sfruttare anche con altre applicazioni.
Uno dei programmi sempre presenti su linux è sendmail.
Qui di seguito vediamo il codice del messaggio che potremmo usare per inviare le email:
on mail pTo, pSub, pMsg, pFrom, pCc, pBcc, pHtml, pAtts
#Questo messaggio serve per mandare le email
#ogni indirizzo può essere del tipo "nome <indirizzo_email>"
# gli indirizzi possono essere separati da virgola
# la lista degli indirizzi, in alternativa, può essere un array, con un array degli allegati per ognugno
#Variabili:
-- pTo - La lista degli indirizzi a cui spedire
-- pSub - L'oggetto del messaggio
-- pMsg - Il corpo del messaggio
-- pFrom - L'indirizzo email del mittente
-- pCc - La lista degli indirizzi in copia (CC)
-- pBcc - La lista degli insirizzi in copia nascosta (BCC)
-- pHtml - Questa variabile può essere true o false, e indica se il messaggio deve essere in HTML o meno
-- pAtts - L'array degli allegati da spedire, nella forma:
-- * name: il nome dell'allegato
-- * path: il percorso assoluto di dove si trova l'allegato sul server
-- * type: il tipo MIME dell'allegato
#Qui costruiamo l'header del messaggio anche con gli indirizzi A: e CC:
put "From:" && pFrom & return & "To:" && pTo & return & "Subject:" && pSub & return into tMsg
if pCc is not empty then
put "Cc:" && pCc & return after tMsg
end if
#qui mettiamo il separatore per gli allegati (multipart)
if pAtts is an array then
local tBoundary
put "boundary" & the seconds into tBoundary
put "MIME-Version: 1.0" & return & "Content-Type: multipart/mixed; boundary=" & wrapQ(tBoundary) & return & "--" & tBoundary & return after tMsg
end if
#qui mettiamo il corpo del messaggio (HTML o TEXT)
if pHtml is true then
put "Content-Type: text/html;" & return & return after tMsg
else
put "Content-Type: text/plain;" & return & return after tMsg
end if
put pMsg & return after tMsg
#qui mettiamo gli allegati
if pAtts is an array then
put "--" & tBoundary & return after tMsg
repeat for each element tAtt in pAtts
if there is a file tAtt["path"] then
if tAtt["type"] is empty then
get "application/octet-stream"
else
get tAtt["type"]
end if
put "Content-Type:" && it & "; name=" & wrapQ(tAtt["name"]) & ";" & return & "Content-Transfer-Encoding: base64;" & return & return & base64Encode(URL ("binfile:" & tAtt["path"])) & return & "--" & tBoundary & return after tMsg
end if
end repeat
end if
#spediamo l'email con sendmail. Lo chiamiamo da shell e poi mandiamo la stessa email agli indirizzi in BCC.
get shell("echo" && wrapQ(shellEscape(tMsg)) && "| /usr/sbin/sendmail" && wrapQ(shellEscape(pTo)) && "-f" && wrapQ(shellEscape(pFrom)))
if pBcc is not empty then
get shell("echo" && wrapQ(shellEscape(tMsg)) && "| /usr/sbin/sendmail" && wrapQ(shellEscape(pBcc)) && "-f" && wrapQ(shellEscape(pFrom)))
end if
#FINE
end mail
function shellEscape pText
repeat for each char tChar in "\`!$" & quote
replace tChar with "\" & tChar in pText
end repeat
return pText
end shellEscape
-- wrap quotes around text
function wrapQ pText
return quote & pText & quote
end wrapQ
Come vedete è quasi più grande il commento per spiegare come funziona che il codice del messaggio.
In fondo ci sono due funzioni piccolissime: una per mettere il carattere di escape per i caratteri riservati della shell (shellEscape()), l'altra funzione (wrapQ()) serve solo a mettere il virgolette all'inizio e alla fine di una stringa.
Interessante è la stringa utilizzata per separare gli allegati è creata unendo il la parola "boudary" con il numero che esce fuori con la funzione seconds(). Per chi non lo sapesse la funzione seconds indica il numero di secondi tra l'istante corrente è il 1/1/1970. In questo modo non ci dovrebbero essere problemi a separare gli allegati tra loro.
Dove vedete due e commerciali ("&&"), non è un errore, bensì è un sistema più veloce equivalente a scrivere "& space &".
Il resto del codice è tutto commentato, ma se avete domande, fatele pure nei commenti e proverò a rispondervi.
venerdì 13 novembre 2015
Creare un app da zero in 3 ore e 16 minuti
Il video seguente di appena 3 minuti vi mostra tutto il procedimento per creare un app videogioco per iPhone, dalla grafica, fino all'installazione utilizzando livecode.
E' stato chiesto ad un programmatore che non conosce l'ojective-c e che non ha mai sviluppato per cellulari di fare tutto con livecode.
Partendo dall'idea, ai disegni e allo sviluppo, le righe di codice, non ci sono volete che poche ore.
Ecco come ha distribuito il tempo:
E' stato chiesto ad un programmatore che non conosce l'ojective-c e che non ha mai sviluppato per cellulari di fare tutto con livecode.
Partendo dall'idea, ai disegni e allo sviluppo, le righe di codice, non ci sono volete che poche ore.
Ecco come ha distribuito il tempo:
- l'idea: 8 minuti
- creare la grafica da zero: 39 minuti
- scrivere il codice e testare il programma sul simulatore: 2 ore e 29
mercoledì 11 novembre 2015
Widget Browser
Come sapete la versione 8 di livecode non è per gli utenti normali, è solo di prova e la stanno implementando lentamente. Se volete programmare, utilizzate la versione 7.
Nonostante ciò, un'altra novità della versione 8, inserita dalla versione 8 dp8, è il controllo browser.
Ora è possibile direttamente trascinare un browser web dentro ai nostri programmi, semplicemente utilizzando l'icona col mondo presente nella finestra degli strumenti.
Anche nelle versioni precedenti di livecode era possibile inserire un browser, ma era tutto da codice. Ora, grazie alla nuova architettura a widget, inserire nuovi controlli come questo in livecode è molto più semplice.
Le sue due proprietà fondamentali sono:
Nonostante ciò, un'altra novità della versione 8, inserita dalla versione 8 dp8, è il controllo browser.
Ora è possibile direttamente trascinare un browser web dentro ai nostri programmi, semplicemente utilizzando l'icona col mondo presente nella finestra degli strumenti.
Browser in modalità edit |
Anche nelle versioni precedenti di livecode era possibile inserire un browser, ma era tutto da codice. Ora, grazie alla nuova architettura a widget, inserire nuovi controlli come questo in livecode è molto più semplice.
Widget in modalità utilizzo (browse tool) |
- URL
- htmltext
Impostando la proprietà URL, carica la pagina web indicata e imposta la proprietà htmlText mettendoci dentro quello che riceve dalla pagina.
Viceversa, impostando la proprietà htmlText, comparirà nel browser ciò che scrivete in HTML e la proprietà URL diviene un indirizzo fittizio (http://libbrowser_dummy_url/).
Qui sotto un esempio mettendo come htmlText la stringa "<b>Ciao livecode!</b>".
htmlText="<b>Ciao livecode!</b>" |
martedì 10 novembre 2015
any
Ho appena scoperto una parola comodissima da usare in livecode e voglio condividere questa nozione con voi lettori del blog.
La parola è any, e serve ad estrarre un valore casuale da un qualsiasi tipo di lista o oggetto.
Ad esempio:
ma la anche questo è valido:
oppure questo:
Non solo potete estrarre elementi a caso senza impazzirvi con la funzione random(), ma potete utilizzarla anche in altri modi nei vostri programmi:
La parola è any, e serve ad estrarre un valore casuale da un qualsiasi tipo di lista o oggetto.
Ad esempio:
put "1,3,6,5,12,58,87" into temp
put any item of temp
ma la anche questo è valido:
put any key of mioArray
oppure questo:
put any line of miaLista
Non solo potete estrarre elementi a caso senza impazzirvi con la funzione random(), ma potete utilizzarla anche in altri modi nei vostri programmi:
go to any card
select any button
lunedì 9 novembre 2015
Livecode 7 compatibile raspberryPi 2
Livecode 7 è compatibile con raspberry Pi 2.
Se avete questo nuovo modello, potete programmarci con livecode senza problemi.
Raspberry Pi 2 |
Se avete questo nuovo modello, potete programmarci con livecode senza problemi.
venerdì 6 novembre 2015
Licenze e sconti
In questi giorni c'è uno sconto del 30% sul prezzo delle licenze commerciali di livecode.
Livecode è gratuito e open source, ma per fare applicazioni chiuse (closed source) bisogna usare la versione a pagamento. Sul sito di livecode c'è il seguente semplice specchietto per capire cosa si può fare e cosa no con la versione open source. Sono le stesse restrizione di qualunque software open source:
Questo specchietto è molto utile anche per chi lavora nell'open source.
Livecode è gratuito e open source, ma per fare applicazioni chiuse (closed source) bisogna usare la versione a pagamento. Sul sito di livecode c'è il seguente semplice specchietto per capire cosa si può fare e cosa no con la versione open source. Sono le stesse restrizione di qualunque software open source:
Si può usare la versione gratuita Open Source | Si deve usare la versione Commerciale |
---|---|
Il dipendente Mario vuole fare un software da usare dentro la sua azienda per gestire le fatture. | Il dipendente Mario vuole fare un software per gestire le fatture ad altri senza mostrare il codice. |
La società Rossi vuole distribuire un programma e il codice sorgente. | La società Rossi vuole distribuire una App su iOS, su iTune o su Mac app Store. |
L'insegnante Luigi vuole insegnare a programmare ai suoi studenti | Luigi vuole vendere il suo programma senza distribuire il codice sorgente. |
Lo studente Marco vuole creare una app Android open source | La società Sara crea una app chiusa per un cliente. Senza fornirgli i sorgenti |
La società Franchi vuole fare una app open source e guadagnare con servizi e supporto | La società Franchi vuole incorporare nel suo programma chiuso qualcosa fatto con livecode. (servirebbe la licenza tipo enterprise) |
Stefano vuole creare una app open source e ricevere soldi come donazioni | La società Luca ha bisogno di supporto tecnico a una correzione urgente di alcuni bug. (servirebbe la licenza tipo enterprise) |
Roberto vuole creare un'applicazione server per la sua società che comunica con i cellulari dei dipendenti | Roberto vuole creare un'applicazione server che comunica con i cellulari dei dipendenti e venderla |
Carlo vuole creare un programma da condividere con gli altri programmatori di livecode | Carlo vuole fare un programma con un canone. La licenza commerciale serve anche anche se è incorporato in un programma con un canone. |
Questo specchietto è molto utile anche per chi lavora nell'open source.
giovedì 5 novembre 2015
json
Le Json sono un metodo per inviare più informazioni, tipo XML, trovate una spiegazione dettaglita qui: http://www.json.org/json-it.html
Sono molto usate in Java e ad esempio è il seguente testo:
{"impiegati":[
{"Nome":"John", "cognome":"Doe"},
{"Nome":"Anna", "cognome":"Smith"},
{"Nome":"Peter", "cognome":"Jones"}
]}
Se dovete ricevere o inviare dati nel formato Json, esiste una libreria che trasforma un array livecode in Json e vicevera. Si può scaricare da qui: https://github.com/bhall2001/fastjson basta scaricare solo il file fastjson.lc.
Incorporandolo nei vostri programmi (start using stack "fastJson") avrete accesso alle seguenti funzioni:
Sono molto usate in Java e ad esempio è il seguente testo:
{"impiegati":[
{"Nome":"John", "cognome":"Doe"},
{"Nome":"Anna", "cognome":"Smith"},
{"Nome":"Peter", "cognome":"Jones"}
]}
Se dovete ricevere o inviare dati nel formato Json, esiste una libreria che trasforma un array livecode in Json e vicevera. Si può scaricare da qui: https://github.com/bhall2001/fastjson basta scaricare solo il file fastjson.lc.
Incorporandolo nei vostri programmi (start using stack "fastJson") avrete accesso alle seguenti funzioni:
- arrayToJson(), per trasformare un array livecode in un testo Json
- jsonToArray(), per trasformate un file Json in un array livecode
- isJson(), per verificare che sia un testo Json
Personalmente non trovo nulla di speciale in Json, per mandare un array potete usare CSV, XML e le funzioni arryencode / arraydecode, comunque è utile conoscerlo.
mercoledì 4 novembre 2015
Esempio HTML5
Una delle novità di livecode 8 è l'esportazione in HTML5, cioè il vostro programma può essere eseguito anche dentro un browser. Ad esempio il seguente programma di disegno:
lo potete provare a questo link: http://hyperhh.org/html5/krikelKrakel-8.0.0-dp-7X.html
Sempre dello stesso autore potete provare altri esperimenti a questa pagina: http://hyperhh.org/html5/
lo potete provare a questo link: http://hyperhh.org/html5/krikelKrakel-8.0.0-dp-7X.html
Sempre dello stesso autore potete provare altri esperimenti a questa pagina: http://hyperhh.org/html5/
Iscriviti a:
Post (Atom)