mercoledì 30 agosto 2017

Libreria Excel

E' disponibile gratuitamente una libreria Excel per lavorare anche con i file xlsx.
La potete scaricare da qui: http://www.aslugontheroad.com/download/category/5-open-sources
Se vi va potete anche finanziare il programmatore per migliorarla.

martedì 29 agosto 2017

Libreria CouchDB

Vi ho già parlato del database couchDB. Ora è disponibile per Livecode una serie di funzioni già pronte a l'uso, si possono scaricare, vedere e modificare da: https://github.com/madpink/couchdb4livecode

Rigraziamo il programmatore Greg (pink) Miller per aver condiviso il suo lavoro.

lunedì 28 agosto 2017

Università di Vienna

L'università di Vienna utilizza livecode per il suo funzionamento. I moduli più importanti includono
  • Programmazione degli orari dei corsi 
  • Un sistema di assegnazione delle aule
  • I dettagli di iscrizione per ogni studente
  • Il personale Payroll 

Ci sono mezzo milione di linee di LiveCode in 43.000 procedure e le funzioni del sistema. Questi sono stati costruiti da circa 1300 moduli completamente indipendenti, ognuno dei quali è memorizzato in un database Oracle.

Hartmut ci ha detto: "LiveCode è stata una scelta ideale per questo progetto per molti motivi Al cuore del sistema è una versione aumentata di SQL che lega SQL insieme al modello di linguaggio LiveCode Questo è essenzialmente un linguaggio specifico del dominio, su misura per sostenere pienamente le esigenze di questa applicazione. 
Abbiamo aggiornato alla versione più recente di LiveCode per sfruttare i miglioramenti Unicode che sono stati inseriti nel corso degli anni. La nuova legislazione significa che dobbiamo essere in grado di rappresentare il nome di uno studente all'interno del sistema in modo corretto nella loro lingua madre. Un altro vantaggio chiave è la possibilità di personalizzare completamente l'ambiente di sviluppo. Il nostro sistema utilizza il proprio set personalizzato di strumenti, tra cui un editor di codice scritto per il progetto. L'editor ha dei riferimenti incrociati per il ​​codice memorizzato nel database, rendendo più facile da navigare l'enorme base di codice contenute in tutti i moduli e di apportare modifiche. 
L'ambiente di sviluppo LiveCode è scritto se stesso in Livecode e abbiamo voluto integrare la versione più recente degli strumenti LiveCode Integrated Development Environment nel nostro sistema. 
L'Università di Vienna ha una licenza di sviluppo multi-utente per LiveCode. Il loro team interno mantiene il sistema aggiornato e si adatta alle esigenze mutevoli dell'Università. 
La progettazione del sistema rende facile per una squadra per lavorare sul progetto. Ogni modulo è completamente indipendente e memorizzati nel database Oracle. Questo rende semplice per lavorare su di esso in parallelo".

domenica 27 agosto 2017

Problemi con mysql.sock?

Se usate MySQL, può capitare che livecode non si conetta e restituisca come errore:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Che significa?
significa che il serve MySQL a cui vi collegate ha delle impostazioni diverse del solito, quindi dovete dire a livecode dove è il file mysql.sock da utilizzare.
Le impostazioni di MySQL sono in un file chiamato my.cnf, in linux si trova nella cartella:
/etc/mysql

Se lo leggete troverete una riga del tipo:

socket = /var/run/mysqld/mysqld.sock

ora sapete dove è il file per connettersi a MySQL. A questo punto invocate la connessione con i parametri giusti, cioè:

put revOpenDatabase("MySQL", DatabaseAddress, DatabaseName, DatabaseUser, DatabasePassword, false, "/var/run/mysqld/mysqld.sock") 

Problema risolto!

sabato 26 agosto 2017

Nuova funzione: MessageAuthenticationCode

E' stata aggiunta una nuova funzione dentro livecode, MessageAuthenticationCode.
Questa funzione vi permette di usare le più famose e aggiornate chiavi di hash:
  • "HMAC-SHA3-224"
  • "HMAC-SHA3-256"
  • "HMAC-SHA3-384"
  • "HMAC-SHA3-512"
  • "HMAC-SHA-224"
  • "HMAC-SHA-256"
  • "HMAC-SHA-384"
  • "HMAC-SHA-512"
  • "HMAC-SHA-1"
  • "HMAC-MD5"
Per più informazioni leggete qui: http://livecode.wikia.com/wiki/MessageAuthenticationCode


venerdì 25 agosto 2017

Diff dentro livecode

Il sistema di calcolo delle differenze fra file di testo, lo standard DIFF, adesso è incluso in livecode, avete a disposizione i seguenti comandi:
Per chi non conoscesse il DIFF qui trovate una spiegazione:  https://en.wikipedia.org/wiki/Diff_utility

giovedì 24 agosto 2017

Server http dentro livecode

Da non crederci, l'ultima versione di livecode (9-dp8) ha all'interno anche un server HTTP attivabile su una porta a piacere per trasmissioni con i socket molto più semplificate.
Ecco i comandi:

mercoledì 23 agosto 2017

Chi sovvenziona Livecode: Mike Markkula

Mike Markkula è stato il genio economico della Apple, che ha investito ed è stato un CEO di Apple fino al 1996. Questo personaggio crede fortemente in livecode ed è uno dei maggiori finanziatori.
La sua sola presenza è una garanzia della validità del linguaggio di programmazione Livecode.

martedì 22 agosto 2017

Ricreazione ricorsiva cartelle

Se volete creare una cartella c'è il comando create folder. Ma se specificate un percorso che indica delle cartelle che non esistono prima dell'ultima, giustamente la cartella non viene creata.
Se volete creare tutto un albero di cartelle in un colpo solo vi consiglio questo messaggio:
on recurFoldCreation tFolder
   set the itemDel to "/"
   repeat with i = 1 to the number of items of tFolder
      put item 1 to i of tFolder into tFolderToCreate
      create folder tFolderToCreate
   end repeat
end recurFoldCreation
semplice ed efficiente.

lunedì 21 agosto 2017

iOS app che lavora in background

Quando chiudete una app fatta con livecode, su iOS di solito si chiude, non rimane aperta perennemente in backgroud. Di solito basta salvare le impostazioni in un file e leggerlo all'apertura per ripristinare tutto.
Se invece vi serve che l'app non si chiuda in background, ecco la procedura:
  1. andate nella cartella Applicazioni
  2. cliccate col destro sulla app Livecode e selezionate "mostra il contenuto del pacchetto"
  3. andate nella cartella del pacchetto Tools/Runtime/iOS
  4. selezionate tutti i device e simulatori insieme e cliccate col destro per segliere Informazioni
  5. alla destra di sola lettura accanto al vostro nome scegliete leggere e scrivere 
  6. ripetetelo per tutte le cartelle di device e simulatori
  7.  in ogni device o simulatore modificate il file setting.plist come segue: 
    1. Cliccateci col destro scegliendo Apri con e poi Altro... e poi TextEdit.app
    2. Potreste ricevere un avvertimento che è bloccato, scegliete di sbloccarlo
    3. Cambiate nel file il valore di UIApplicationExitsOnSuspend a false
  8. Ripetete i passi precedenti per tutti i setting.plist
  9. Ora avviate livecode e create la vostra app 


venerdì 11 agosto 2017

Livreria QR code dentro livecode

A partire dalla versione 9dp8 (disponibile) la libreria per i codici QR è inclusa in livecode, anche per le versioni gratuite.
Abbiamo a disposizione :

giovedì 10 agosto 2017

Libreria Dropbox dentro livecode

Ora livecode contiene delle librerie per lavorare con Dropbox, sono state rese disponibili per tutti, anche per la versione gratuita, a partire da livecode 9 dp8.

Guardate qua quante sono (48) : http://livecode.wikia.com/wiki/Category:Dropbox

mercoledì 9 agosto 2017

I colori

I colori possono essere espressi attraverso una tripletta che indica i valori di rosso, verde e blu (RGB) tipo

set the backgroundcolor of button 1 to "160,0,255"

oppure attraverso un nome, dalla lista che trovate qui: http://livecode.wikia.com/wiki/ColorNames

set the backgroundcolor of button 1 to "MediumOrchid2"

oppure attraverso il codice HTML:

set the backgroundcolor of button 1 to "#F63526"

Qui trovate un simpatico programma di aiuto: https://mega.nz/#!1IRinbDR!k0iCy7r3VUEZw7_AUsKdVzrRuAnT2SFUZp38Jb7xO5g

lunedì 7 agosto 2017

Sockets

Ci ho messo molto per fare questo post perchè i socket in livecode non sono spiegati molto bene.
Prima di tutto cerchiamo di capire cosa siano e perchè sono così importanti.
Un socket è una via di comunicazione riservata tra due computer. Al contrario di una pagina web, che tutti possono vederla perchè è pubblica e basta sapere l'indirizzo del server per leggerla, il socket è una strada riservata tra due computer.
In linea generate il funzionamento è il seguente:
  1. il server apre una porta sul proprio indirizzo IP, questa porta sarà la comunicazione per chi vuole parlare con lui
  2. uno o più client si mettono in comunicazione col server su quella porta. Per ogni client il server genera un numero di riconoscimento univoco, così riesce a stabilire con chi parlare e cosa dirgli
Attraverso i  socket potreste crearvi il vostro servizio di messaggistica tipo whatsapp o molto altro.
Nel dettaglio lo schema di funzionamento è il seguente, per capirlo bene leggetevi il codice dopo lo schema:
Vediamo il codice.
Il server sarà fatto così:
Basterà cliccare su attivo per aprire la porta 12345, il codice del pulsante Attivo è:

on mouseUp
   if the hilite of me then
      accept connections on port 12345 with message "clientConnected"
   else
      close socket "12345"
   end if
end mouseUp

on clientConnected tSocket   
   put the seconds & " connesso col socket: " & tsocket & return after field "log"
   read from socket tSocket until "§" with message "messageReceived"
end clientConnected

on messageReceived tSocket, pMsg
   put the seconds & space & tsocket & ": " & char 1 to -2 of pMsg & return after field "log"
   write ("Ricevuto messaggio " & char 1 to -2 of pMsg & "§" ) to socket tSocket
   read from socket tSocket until "§" with message "messageReceived"
end messageReceived


Semplice, vero?
Il  codice apre la porta e mette in ascolto il messaggio ClientConnected, se qualche computer si collega il messaggio si attiva per eventuali comandi alla connessione. Il messaggio ClientConnected si attiva per ogni client che si connette.
Subito dopo ClientConnected si attiva messageReceived quando il client ci dice qualcosa. messageReceived richiama sempre se stesso per essere sempre in ascolto di nuovi messaggi.
Come separatore di nuovi messaggi ho scelto il carattere §, ma può essere qualunque altra cosa che il client trasmetta.
Per il client facciamo qualcosa di leggermente più complesso:
Ecco il codice del pulsante Attivo:

local pSocket

-- Disconnect the client from the broadcast server.
command broadcastClientStop
   close socket pSocket
end broadcastClientStop

-- Sent once the client has connected to the broadcaset server.
-- Store the socket for futurure reference and begin reading data
-- from the server.
on broadcastClientConnected tSocket
   put tSocket into pSocket
   read from socket pSocket until "§" with message "broadcaseClientMessageReceived"
end broadcastClientConnected

-- Sent when a message has been received from the server. Output the
-- message and continue reading data from the server.
on broadcaseClientMessageReceived tSocket, pMsg
   put the seconds & ": " & char 1 to -2 of pMsg & return after field "log"
   read from socket tSocket until "§" with message "broadcaseClientMessageReceived" #so we continue to listen
end broadcaseClientMessageReceived

-- Sent when there is an error opening the socket. Log the error.
-- and close the socket.
on socketError tSocket, pError
   close socket tSocket
   put pError & return after field "log"
end socketError

on sendmessage
   write (the text of field "mex") & "§" to socket pSocket
end sendmessage

on mouseUp
   if the hilite of me then
      put the text of field "IPserver" into temp      
      open socket to (temp & ":12345") with message "broadcastClientConnected"
   else
      close socket pSocket
   end if
end mouseUp


Qui abbiamo anche da memorizzare il codice del socket che utilizziamo e indicare al cliente quale è l'indirizzo del server.
Server e client si parlano, per ogni messaggio che arriva al server, il server risponde al client. In questo modo potete fare di tutto, messaggistica, controllo remoto e qualunque cosa vi venga in mente.
Come nel caso del server abbiamo un messaggio che si attiva quando si stabilisce la connessioni (broadcastClientConnected) e un messaggio in ripetizione continua per ascoltare il server (broadcatClientMessagereceived).
Per scrivere ad un socket basta usare write, ricordatevi sempre di indicare un carattere di fine messaggio o una lunghezza fissa predeterminata di caratteri da leggere con il comando read.
Potete scaricare i file da qui: https://mega.nz/#!dN5HWaoY!Wtbb7heTZVAyM3D8O9ddwOp_n7aRHgYyreQKZZTaH_g
Se avete dubbi chiedete nei commenti.