18 Gen 2013

Nei passati mesi ho collocato in alcuni momenti liberi l’approfondimento sul motion tracking in 3d per l’affascinante flessibilità offerta da questa tecnica: poter inserire in riprese dal vivo elementi creati in computer grafica solleticava le mie più sfrenate fantasie creative… Quindi dall’approfondimento alla pratica il passo è stato breve.

Ho utilizzato alcune riprese effetuati nei dintorni come base per apprendere le tecniche di motion tracking e il percorso non è stato affatto facile. Ottenere una scala realistica, lottare contro framerate un po’ pazzi, risolvere i capricci relativi a frame con meno contrasto di altri mi hanno occupato a lungo. Per mesi i miei test sono rimasti confinati sul mio computer e mi è servito parecchio lavoro per ottenere un risultato presentabile e contenere le mie ambizioni che avrebbero condannato il tutto ad ingrossare le fila dei progetti incompiuti.

Ed ecco il risultato dei miei sforzi (ho curato anche la colonna sonora, usando uno dei miei ultimi brani prodotti).

Presenze from Simone Sorio on Vimeo.

 

27 Nov 2012

Quando il lavoro di sviluppo si sviluppa a lungo nel tempo è normale iniziare ad avere una struttura dei propri file sorgenti piuttosto articolata in parentesi annidate tra loro.

Una comoda scorciatoia da tastiera da usare con Visual Studio ci permette di muoverci rapidamente nel codice tra una parentesi e la sua corrispondente. La scorciatoià é CTRL + ].

Tutto bene se utilizzate un layout di tastiera americano, ma con il layout italiano potreste rimanere delusi: con quella scorciatoia non succederà nulla!

La soluzione è cambiare leggermente i tasti da premere, premendo CTRL + ì e otterrete lo stesso risultato: vi muovere agilmente tra una parentesi e la sua gemella. E in entrambi i sensi, perchè premere nuovamente questa combinazione di tasti vi farà saltare da una parentesi all’altra, avanti e indietro! Molto utile.

Inoltre, se premete anche SHIFT (quindi CTRL + SHIFT + ì) selezionerete tutto ciò che è compreso tra le due parentesi!

12 Nov 2012

I campi di testo di Flash possono essere popolati con testi dotati di tag HTML per un formattazione sofisticata in maniera dinamica. Tuttavia un errore comune può essere quello di utilizzare lo stesso approccio per i campi di testo da popolare con testo non-HTML quando invece esiste un comando specifico per ottenere questo risultato.
Normalmente per inserire un testo in un TextField procederemmo così:

MioTextField.text = "Ciao sono un testo comune."

Se usassimo questo approccio anche per un testo html scriveremmo:

MioTextField.text = "Ciao sono un testo <strong>html</strong> e posso visualizzare <em>Tag HTML</em>"

E vedremmo però popolare il nostro TextField con questo tipo di output:

Ciao sono un testo <strong>html</strong> e posso visualizzare <em>Tag HTML</em>

Per evitare questo tipo di inconvenienti va utilizzato lo specifico comando htmltext della classe TextField

MioTextField.htmltext = "Ciao sono un testo <strong>html</strong> e posso visualizzare <em>Tag HTML</em>"

E il risultato sarà:
Ciao sono un testo html e posso visualizzare Tag HTML
Tra i tag che è possibile utilizzare ci sono:

  • <a> ( con gli attributo href e target)
  • <b> o <strong> per il grassetto
  • <i> o <em> per il testo italic
  • <u> per il testo sottolineato
  • <br> per gli a capo
  • <font> (con gli attributi font-face, color e size)
  • <img> (con attributi src, width, height, align, hspace, vspace, id)
  • <ul> e <li> per gli elenchi
  • <p> per i paragrafi (con attributi class e align)
  • <span>
09 Nov 2012

In AS3 può capitare di dover rimuovere tutti i clip figli da un MovieClip. Sono possibili diversi approcci, per esempio iterare tra i children e uno alla volta eliminarli.
Ecco il codice più veloce che mi è riuscito trovare per eseguire questa operazione:

while(mc.numChildren != 0) mc.removeChildAt(0);

Spero possa essere utile a qualcuno.

18 Ott 2012

Le Master Pages sono una soluzione molto utile offerta dell’ambiente di sviluppo web .NET della Microsoft. Il modo in cui semplificano la vita, accentrando le principali questioni relative al design di più pagine di un sito web in un unico documento, mi ha conquistato da subito e l’ho utilizzato con soddisfazione a lungo.

Recentemente mi è capitato di dover modificare un attributo HTML comune a tutte le pagine del sito al quale sto lavorando: mi riferisco la tag BODY delle mie pagine.
Il mio primo approccio è stato lato cliente, cercando di sviluppare una funzione JQuery che permettesse la sostituzione della proprietà ID del tab BODY in ognina delle pagine, adattandola al contesto del contenuto presente.

Ho dovuto abbandonare questa strada perchè tutto diventava troppo complicato dovendo personalizzare lo script eseguito nell’HEAD delle mie pagine, mi sembrava una soluzione eccessivamente verbosa e difficile da mantenere.

Ho quindi effettuato dei testo per riuscire a modificare una singola variabile inserita appositamente nella mia Master Page di riferimento: la mia variabile era la seguente:

<body id="<%= this.body_id %>" >

E fin qui è stato facile. I guai sono arrivato dopo… non riuscivo ad accedere con successo alla variabile dagli script delle mie pagine, essa rimaneva sempre non definita e quindi vuota.
La soluzione è stata quella di ricorrere alla seguente notazione, che indica con chiarezza l’appartenenza della variabile ad una Master Page, permettendo così agli script delle pagine che la implementano di modificarla direttamente:

((SiteMaster)this.Master).body_id = "home";

dove “SiteMaster” è il nome della vostra Master Page (controllate bene il nome che la definisce nel file .AS ad essa abbinata, non al nome che ha il documento: io lo vedevo infatti diviso da un punto, “Site.Master”, ma nel codice la classe era chiamata “SiteMaster” ed è quello il nome da prendere in considerazione.
Questa soluzione mi è stata molto utile, spero possa tornare utile anche a voi.

15 Ott 2012

Lo Zend Framework è un potente set di classi e funzionalità che può risultare minaccioso per la sua complessità e per il rigore che può richiedere una sua implementazione nei vostri script.
Molti componenti di Zend invece si prestano ad essere utilizzati senza alterare eccessivamente il vostro modo di programmare.
Personalmente ho goduto di un sollievo incommensurabile utilizzando le funzioni che Zend offre per dialogare con i database. Dopo una corretta configurazione di Zend e avergli permesso di accedere al vostro DB, effettuare query può essere estremamente semplice.
Il primo passo è quello di creare una classe che incapsuli una delle vostre tabelle instanziando una classe apposita di Zend:

class Zend_Tabella extends Zend_Db_Table_Abstract
{
protected $_name = 'nome_mia_tabella';//Questa stringa deve corrispondere al nome esatto della vostra tabella
protected $_primary = 'id_tabella';//dichiarazione chiave primaria necessaria

}

Disponiamo ora di una classe che Zend potrà utilizzare per interrogare il database. Vediamo come utilizzarla.

$table = new Zend_Tabella(); // Instanziamo la tabella e assegnamola ad una variabile
$table_name = "nome_mia_tabella"; // Dichiariamo il nome della tabella
$order_by = "id_tabella"; // Passiamo il nome del parametro da utilizzare per la nostra query

// Definizamo ora una procedura select di base popolandola con le variabili dichiarate in precedenza
$select_base = $table ->select()
->from($table_name)
->order($order_by)
->setIntegrityCheck(false);

// Eseguiamo la query e conserviamola in una variabile
$rows = $table->fetchAll($select_base);

$array_rows = $rows->toArray();

Fatto! Ora la nostra variabile $rows conserva un oggetto zend_db_table_rowset contenente le righe recuperate… se ce ne sono! Vediamo ora come effettuare un semplice controllo per capire cosa abbiamo recuperato.

if ($rows)
{
$numero_elementi_totali = $rows->count(); // Conserviamo il numero totale delle righe recuperate
if ($numero_elementi_totali // Non è stato recuperato nulla
} else {
$array_rows = $rows->toArray(); // Per poterle utilizzare più facilmente, convertiamo le righe recuperate in un array standard
}
} else {
// c'è stato un errore
}

Questo è solo un punto di partenza ma può rendere l’idea di come Zend possa semplificare processi tediosi dal codice non riutilizzabile in blocchi più concisi, leggibili e che possono essere riutilizzati con facilità.
Per approfondire: