Chi ha iniziato a sviluppare codice con linguaggi di scripting come Javascript o lo stesso Actionscript, potrebbe non conoscere affatto il concetto di tipo dato. Con alcuni linguaggi ad alto livello, infatti, si è abituati – nella migliore delle ipotesi – a dichiarare le variabili senza assegnargli un tipo dato specifico, senza contare quei linguaggi che non richiedono nessuna dichiarazione (come ad esempio il PHP – non nella versione strict 5).
Categoria ‘Sviluppo’
Actionscript 3.0 for beginners: lesson #5
La matematica nella programmazione
Quanto matematica utilizza uno sviluppatore? E quanta matematica bisogna conoscere per saper e poter sviluppare bene?
Se si ha la passione per la programmazione molto probabilmente si riescono a superare tutti gli ostacoli dovuti a qualche mancanza matematica. Ciononostante se oltre alla passione si possiede una decorosa conoscenza matematica, nonché della logica, la nostra “vita” da sviluppatore ne guadagnerà sicuramente. Risulta comunque evidente che non tutti i programmatori hanno necessità di scontrarsi con problemi “matematici”. Molto, anzi tutto, dipende dal tipo di programma che si sta sviluppando. Una rubrica telefonica ha sicuramente molta meno matematica di un giochino come PacMan! Anche se non è sempre detto. In definitiva tutto dipende dalla “parte” di codice che stiamo sviluppando.
Centrare un elemento
Chi ad esempio sviluppa user interface (UI), ha certamente dovuto affrontare almeno una volta situazioni che richiedevano moltiplicazioni e divisioni aggrovigliate assieme. Una volta mi è capitato di imbattermi in un codice che doveva centrare orizzontalmente una window rispetto allo schermo. La funzione (non riporto il codice originale in C per semplificare la lettura a tutti) era scritta in questo modo:
1 | window.x = ( screen.width / 2 ) – ( window.width / 2 ) |
Probabilmente il programmatore quando l’ha scritta ha – correttamente – ragionato in questo modo:
- Trovo il centro dello schermo
( screen.width / 2 ) - Posiziono la finestra nel mezzo dello schermo
( window.x = screen.width ) - Dato che in questo modo sarebbe centrato solo l’angolo superiore sinistro della finestra, sottraggo anche la metà della larghezza della finestra
( window.width / 2)per “centrare” il tutto window.x = ( screen.width / 2 ) – ( window.width / 2 )
Fino qui la logica e la passione hanno sicuramente aiutato il nostro sviluppatore. Tuttavia un ulteriore miglioramento poteva esser fatto giusto per evitare le due divisioni, ovvero:
1 | window.x = ( screen.width – window.x ) / 2 |
La conoscenza delle frazioni, e quindi un po’ di matematica elementare, avrebbero risparmiato alla CPU un divisione di troppo: una delle operazioni più pesanti tra l’altro!
Se poi vogliamo essere “maniaci” o perfezionisti, potremmo, in base al linguaggio di programmazione che usiamo, migliorare ulteriormente l’operazione scrivendo:
1 | window.x = ( screen.width – window.x ) >> 1 |
Dove è >> indica l’operazione logica di “spostamento” a destra di un bit – notoriamente operazione molto rapida. Spostare a destra di un bit un valore equivale a dividerlo per 2!
WordPress: functions.php, qualche funzione utile
Riprendendo l’ottimo post di Francesco Gavello WordPress Little Trick – functions.php e commenti nidificati sull’utilità del file functions.php presente nei temi WordPress, ecco altre funzioni utili da utilizzare per tutti i vostri temi:
WordPress: gestione delle revisioni e dell’autosave
La nuova features delle revisioni di WordPress può essere controllata ed impostata tramite la define globale WP_POST_REVISION. La sua definizione può essere inserita nel file wp-config.php:
How I did it: il logo di Saidmade
Quando mi è stato chiesto di disegnare ed ideare il logo per Saidmade, come spesso accade per le proprie creature, ero abbastanza agitato. Tuttavia non era possibile affidarsi all’inventiva di altri, bisognava esprimere ciò che stava per nascere in modo autonomo e personale. Alla fine sono molto soddisfatto del risultato finale. Il simbolo che ne è uscito è esattamente ciò che cercavamo!
Very short trick: ADDED_TO_STAGE
Come abbiamo visto più volte, nel costruttore di una classe che estende un MovieClip può essere necessario aggiungere l’evento ADDED_TO_STAGE per capire quando il nostro MovieClip è disegnato effettivamente sulla stage:
Very short trick: duplicare o clonare una o più righe in MySQL
Per duplicare totalmente il contenuto di una tabella su se stessa basta usare:
1 | INSERT INTO MYTABLE SELECT * FROM MYTABLE |
È possibile anche utilizzare la clausa di WHERE se necessario:
1 | INSERT INTO MYTABLE SELECT * FROM MYTABLE WHERE a=b |
Nel caso la tabella possiede qualche indice o chiave univoca, che provocherebbe un errore, è possibile filtrare i campi da duplicare:
1 | INSERT INTO MYTABLE (field1, field2, ...) SELECT field1, field2, ... FROM MYTABLE |
Addirittura è possibile duplicare un record e modificare un valore, ad esempio duplico un campo e gli aggiungo 1:
1 | INSERT INTO MYTABLE (field1, field2, ...) SELECT (field1+1), field2, ... FROM MYTABLE |
Very short trick: addEventListener() AS3, un handler più eventi
In Actionscript 3.0 è necessario utilizzare addEventListener() per intercettare un qualsiasi evento:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** * Dato un MovieClip mc, si impostano eventi e handler */ mc.addEventListener( MouseEvent.CLICK, on_click ); mc.addEventListener( MouseEvent.ROLL_OVER, on_roll_over ); mc.addEventListener( MouseEvent.ROLL_OUT, on_roll_out ); /** * Funzioni di hander per gli eventi sopra indicati */ function on_click( e:MouseEvent ):void { // click } function on_roll_over( e:MouseEvent ):void { // roll over } function on_roll_out( e:MouseEvent ):void { // roll out } |
WordPress: wp_parse_args()
La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:
1 | var1=value1&var2=value2...varn=valuen |
WordPress Plugin: Flash Feed Scroll Reader
Prendendo spunto dal post Creare un semplice Feed Reader con SimplePie e jQuery ho creato il primo Plugin WordPress targato Saidmade. Flash Feed Scroll Reader utilizza SimplePie per creare un proxy PHP per accedere ai diversi indirizzi feed.






Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...