venerdì 30 giugno 2017

Aggiungere o levare minuti

In livecode esistono molti modi per lavorare con ore e minuti, ma a me serviva qualcosa di molto specifico e ho scritto la funzione qui di seguito, ve la riporto perchè potrebbe servirvi. In pratica mettete l'orario e i minuti da aggiungere o togliere, per l'orario potete usare il formato "19:12" o quello con anche i secondi "19:12:59", i minuti posso essere positivi o negativi :

function libdate_addMinutes pTime, pMinutes
   #Usage: libdate_addminutes("18:35",37) = "19:12"
   #pTime format = "13:15" or 13:15:59"
   #pminutes is a integer positive or negative
   set itemdel to ":"
   put item 1 of ptime into tOre
   put item 2 of ptime into tMinuti
   put item 3 of ptime into tSecondi
   put tMinuti + pMinutes into tMinuti
   if pMinutes > 0 then
      put tOre + floor(tMinuti / 60) into tOre
   else
      put tOre - floor(tMinuti / 60) into tOre
   end if
   put   tMinuti mod 60 into tMinuti
   put tOre mod 24 into tOre
   if the number of chars of tMinuti is 1 then put 0 before tMinuti
   if the number of chars of tOre is 1 then put 0 before tOre
   if tSecondi is empty then
      return (tOre & ":" & tMinuti )
   else
      return (tOre & ":" & tMinuti & ":" & tSecondi )
   end if
end libdate_addminutes

giovedì 29 giugno 2017

Screenshot con livecode server

Volete vedere  un sito che usa livecode server e che è a livello professionale? Andate su https://scrshot.io/
troverete un sito che vi permette di fare foto delle schermate in maniera rapida, funziona con windows, linux e Mac.
Si scarica il programma e potete condividere le immagini facilmente.

mercoledì 28 giugno 2017

Datagrid 2

E' partita la raccolta fondi per un nuovo datagrid, che sia più avanzato completo e più adatto anche per i dispositivi mobili.
Se vi piace l'idea, potete leggere e finanziarla qui: https://livecode.com/project/datagrid2/

martedì 27 giugno 2017

Ridimensionare

Modificato
Quando una finestra si ridimensiona, se abbiamo impostato il geometry manager, tutti gli elementi scalano e si riposizionano automaticamente.
Se passate da una card ad un'altra, la nuova card non recepisce automaticamente la nuova impostazione delle dimensioni quando avete ridimensionato. Per aggirare questo fenomeno potete utlizzare questo trucco:


on OpenCard
   revUpdateGeometry
end OpenCard


Ne conoscete altri?

lunedì 26 giugno 2017

Ricerca binaria

La ricerca binaria o logaritmica è un modo di trovare un elemento in una lista molto velocemente, a patto che la lista sia ordinata.
Ecco un raffronto tra la velocità di ricerca normale e quella binaria:
Come potete vedere la velocità della ricerca binaria rimane stabile con il numero di elementi di una lista, mentre una ricerca eseguita in senso classico ha un tempo di ricerca che cresce linearmente col crescere della lista.
Il problema della ricerca di tipo binario è che ha bisogno di una lista ordinata (per valore, alfabeticamente, o qualsiasi altro ordinamento).
Per questo la ricerca di tipo binario porta grandi benefici quando la lista viene modificata raramente, mentre la ricerche sono molto più frequenti; altrimenti il tempo necessario ogni volta a riordinare la lista vanifica ogni vantaggio.
Se per esempio la lista è un array di livecode, per ordinarla è necessaria questa funzione:

function sortedArray @pArray   
   # fetch the keys and sort them using the array entry values   
   get the keys of pArray   
   sort lines of it by pArray[each]   
   split it by return   
   # create a new sorted array using the mapped keys   
   put 1 into tNextIndex
   repeat for each element tIndex in it      
      put pArray[tIndex] into tSortedArray[tNextIndex]      
      add 1 to tNextIndex      
   end repeat   
   return tSortedArray   
end sortedArray

Una volta ordinata la ricerca binaria può avvenire con questa funzione:

function logarithmicSearch @pArray, pItem, pLeft, pRight
   local tIndex
   local tResult
   # create a new range pointer that points to the item that lies
   # right between the left and right range pointers
   put round ((pLeft + pRight) / 2) into tIndex
   # if we have found the matching item then stop processing and return it
   if pArray[tIndex] = pItem then
      put tIndex into tResult
      # if any of the range pointers have the same value
      # then the item we are looking for does not exist in the array and we return 0
   else if (pLeft = pRight or pLeft = tIndex or pRight = tIndex) then
      put 0 into tResult
      # if we have not yet found a match and none of the range pointers have the same
      # value then call logarithmicSearch again with a smaller search range
      # we are effectively halving the search area, each time we call logarithmicSearch
   else if pArray[tIndex] > pItem then
      put logarithmicSearch (pArray, pItem, pLeft, tIndex) into tResult
   else
      put logarithmicSearch (pArray, pItem, tIndex, pRight) into tResult
   end if
   return tResult
end logarithmicSearch

Per chiamare la funzione bisogna indicare l'array, il valore cercato, zero e il numero di elementi dell'array, ad esempio:

put sortedArray(tArr) into tArr
put the number of lines of the keys of tArr into tnkeys
put logarithmicSearch (tArr, "testo da cercare", 0, tnkeys )


In alternativa a tutto ciò, vi ricordo che SQLite è integrato in livecode e permette delle ricerche molto veloci.

venerdì 16 giugno 2017

Proposta di lavoro

Keith J. Duggan è alla ricerca di un programmatore livecode per la seguente richiesta:

We are looking for a Rasperry PI specialist to develop firmware on a per project basis. The requirements of the firmware we need are basic power management and visual display. Since we are a funded start up, we will require an NDA for further information.
We are looking for a smart, go-getter type that is willing to grow with the company. This is a paid position, contract basis, based in Los Angeles.

Se siete interessati, potete scrivergli a: keithjduggan@mac.com

giovedì 15 giugno 2017

Lavorare con le matrici

La società EkkoTek ha sviluppato delle librerie aggiuntive per lavorare con le matrici, le potete rrovare qui: http://www.ekkotek.com/index.php?option=com_content&view=article&id=132&Itemid=1360

Questa libreria vi permette di:
  • creare matrici identità (tutti 1 sulla diagonale principale)
  • creare matrici Zero (tutti zero)
  • creare matrici casuali
  • creare matrici binarie casuali
  • fare la trasposta
  • aggiungere righe o colonne
  • rimuovere righe o colonne
  • add edge
  • addizione e sottrazione tra matrici
  • moltiplicazione e divisione per un scalare
  • divisione fra matrici
  • moltiplicazione  fra matrici
  • divisioni fra matrici sia da destra che da sinistra
  • addizione binarie
  • traslare
  • scalare
  • ruotare
Inoltre è disponibile anche un mini dizionario di riferimento.

La libreria è disponibile a pagamento solo per chi possiede un licenza commerciale di livecode.

martedì 13 giugno 2017

Clarify

Oggi vediamo il programma Clarify, serve per creare della documentazione in pochi minuti.
Il programma è stato scritto in livecode, ed è disponibile per Widnows e Mac.
In pratica potete creare delle pagine con testi, immagini, evidenziazioni e numeri in maniera molto veloce e intuitiva:
Potete scaricare Clarify per provarlo da qui: http://www.clarify-it.com

mercoledì 7 giugno 2017

Power tools

Oggi vi presento il PowerTool, si tratta di un pannello alternativo per livecode, più colorato e compatto, ma al tempo stesso semplice da usare, ecco alcune immagini:




Se volete lo potete scaricare da qui: http://www.ahsoftware.net/PowerTools/PowerTools.lc