L’uso delle condizioni all’interno del browser viene spesso utilizzato per decidere quale foglio di stile caricare in base al tipo di browser. Ad esempio possiamo utilizzare questo codice per caricare un particolare foglio di stile quando il browser è Internet Explorer 6:
Articoli con Tag ‘algoritmo’
Very short trick: CSS condizionali e ottimizzazione
Matematica: ridimensionare in modo proporzionale
Dato un oggetto rettangolare largo w e alto h ci viene chiesto di renderlo più piccolo del 20%! Prima di tutto diminuiamo del 20% la sua larghezza:
1 | object.width = object.width – ( (object.width*20) / 100) |
da cui
1 | object.width = object.width – ( object.width * 0.2 ) |
da cui
1 | object.width = object.width * ( 1-0.2 ) |
Per l’altezza vale esattamente lo stesso.
Quando c’è di mezzo un terzo oggetto, cioè non ci è stata data la percentuale da togliere al nostro oggetto ma da un terzo, abbiamo:
1 2 3 | rate = object.width / object.height object.width = terzo.width*(1-0.2) object.height = object.width/rate |
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!
reCAPTCHA: STOP allo SPAM
C’è chi li odia e chi non ne può fare a meno! I Captcha (completely automated public Turing test to tell computers and humans apart), ovvero i sistemi di “controllo umano”, permettono nella maggior parte dei casi di eliminare molto della SPAM prodotto nella rete. reCAPTCHA è un servizio gratuito che permette di installare un proprio controllo Captcha sul proprio Web. Una volta registrati sul sito è possibile elencare i propri Web generando due chiavi (una pubblica e una privata: vedi La cifratura RSA) da usare in PHP, WordPress, e MediaWiki..
Sul sito è possibile trovare anche un servizio di protezione mail. In pratica viene rilasciato un codice da inserire nel proprio Web in modo tale da non visualizzare in chiaro un indirizzo email, tipo “i[...]@miodominio.com”. Cliccando verrà mostrato un Captcha da risolvere!
Vedi anche:
Ridimesionamento dinamico intelligente delle immagini
Due ricercatori della Adobe, Dr. Ariel Shamir e Dr. Shai Avidan, hanno sviluppato un’eccezionale algoritmo di ridimensionamento intelligente della immagini. Particolarmente impressionante (vedi video qui sotto) è la capacità di oscurare e modificare completamente un’immagine, grazie ad un “resize” estremamente evoluto e selettivo. In altre parole questa tecnica permette di ridimensionare un’immagine in modo non-lineare. Alcune zone dell’immagine, quindi, vengono mantenute in scala fornendo un’effetto davvero curioso.







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...