Archive for the ‘general’ Category

nWire – PHP source navigation made easy

Sunday, October 18th, 2009

nWire è un plugin per eclipse Galileo e per Zend Studio 7 che offre la possibilità di navigare nel codice in maniera veloce e intuitiva.
Si propone come uno strumento indispensabile per la gestione di grandi progetti con migliaia di file e centinaia di classi da gestire.
Gli IDE di ultima generazione hanno ormai tutti integrati dei sistemi di analisi del codice, che semplificano la navigazione del codice, permettendo ad esempio di saltare con un click al punto in cui una costante è stata definita; oppure di saltare alla definizione di una classe semplicemente cliccando sul nome della classe stessa.
Tutte queste semplificazioni aiutano il programmatore a muoversi con maggiore agilità all‘interno del progetto.
Purtroppo però data l‘incredibile versatilità del php l‘editor non è sempre in grado di capire di che tipo è una determinata variabile;

ZendStudio5.png

In aiuto vengono i commenti nel formato PHPDoc che forniscono preziose informazioni all‘inspector.

ZendStudio13.png

Altri, come Zend Studio ad esempio, propongono anche una sintassi di commenti comprensibile dal suo inspector, in modo da istruirlo sul tipo di variabile:

ZendStudio23.png

Ovviamente tutte queste soluzioni impongono al programmatore uno stile di codice che magari non gli appartiene, ma che è costretto a rispettare se vuole godere dei benefici dell‘inspector.

Proprio qui entra in gioco nWire, che offre molte più possibilità dell‘inspector nativo dell‘editor, ma non obbliga a mantenere uno stile di codifica differente da quello che si è abituati a usare.

Installazione
L‘installazione è semplicissima; grazie anche alle funzionalità (decisamente migliorate) di Eclipse Galileo nella gestione dei repository di plugins.
Basta infatti aggiungere un nuovo sito nella sezione dedicata alla gestione dei siti, ed ecco che le funzionalità di questo plugin sono pronte per essere installate.

ZendStudioadd3.png

Il plugin offre 2 vesti diverse, una specifica per PHP e una specifica per JAVA, ovviamente ho provato quella dedicata a PHP.
Install13.png
Primo impatto
A dire il vero sono rimasto sorpreso, immaginavo che questo plugin una volta installato mi inondasse l‘IDE con pulsanti inutili e con pannelli criptici, e invece non ho notato nessun cambiamento nel‘IDE, tanto da credere che fosse andato qualcosa storto nell‘installazione.
Dopo qualche minuto a spulciare la documentazione ho notato i due pulsanti che erano stati aggiunti nella barra in alto.

ZendStudiobar3.png

Il pulsante a sinistra una volta cliccato apre l‘overview testuale dell‘inspector, quello a destra apre invece la ricerca veloce.
Inoltre è stata aggiunta una nuova voce nel menù contestuale del progetto che permette di abilitare o disabilitare l‘inspector su quel progetto.

ZendStudio203.png

L‘overview
Qui la cosa si fa interessante. L‘overview le legata all‘editor: si aggiorna al volo mostrando il contesto in cui il cursore si trova in quel momento, se ad esempio il cursore si trova all‘interno di una classe, ma all‘esterno dei metodi, l‘overview fa partire la sua analisi dalla classe, mostrandoci l‘elenco dei metodi e delle proprietà, quante volte la classe viene istanziata, il partent. etc. Se ci spostiamo sul nome di un metodo, ecco che la visuale cambia, e il focus si concentra sul metodo, mostrandoci cose come i metodi di cui questo fa l‘override, quante volte è invocato, quali proprietà della classe intacca, etc.

currentline2.png
Una volta indicato cosa ispezionare il plugin fornisce queste informazioni:

  • la classe parent e tutte le eventuali classi che estendono questa
  • quante volte e dove è istanziata una classe
  • quante volte e dove è usata una istanza di quella classe
  • quali metodi (nell‘intero scope del progetto) restituiscono un oggetto che è una istanza di quella classe
  • quante volte e dove un metodo viene invocato
  • quali metodi e funzioni un metodo invoca
  • quante volte e dove un file è incluso
  • quali metodi modificano la proprietà di una classe

modifyed.png

Ovviamente è possibile navigare anche usando l‘overview stessa, basta cliccare l‘elemento che si vuole ispezionare e si apre un nuovo pannello sulla destra che mostra le informazioni desiderate e così via.

Prestazioni
Temevo che l‘indicizazione del progetto da parte di questo plugin inchiodasse l‘IDE, invece impiega un po‘ meno del tempo che ci mette Zend Studio a fare la build del progetto stesso. La parte scocciante è forse solo quando il plugin si accorge di modifiche strutturali al codice e lancia di nuovo l‘indicizazione, questo inchioda l‘editor per qualche secondo; ma è un settaggio che si può modificare nelle preferenze del plugin stesso.
Per completezza riporto un po‘ di dati sullo scenario in cui ho provato nWire:
Grandezza del progetto: +60MB di file sorgenti
Numero di classi: +6.000
Computer: MAC Pro dual Core con 2 GB di ram

Overview Grafica
Sinceramente non l‘ho trovata molto utile. Non è altro che la visualizzazione con blocchi e frecce dell‘overview testuale. Navigabile alla stessa maniera, ma che non offre nulla in più. A mio avviso sarebbe stato un ottimo addon anche senza questa funzionalità

ZendStudiobox.png

Ricerca rapida
L‘ho trovata davvero utile! Un aggiunta molto potente alla ricerca integrata nell‘IDE, la funzionalità che più mi ha colpito è quella che permette la ricerca in base al CameCase dei nomi: basta infatti scrivere nella ricerca “gH“ e è come aver scritto “g*H*“.

ZendStudioquicksearch.png

Conclusioni
Sono convito che se si manutiene un progetto di grosse dimensioni e si intende refattorizzare spesso l‘architettura del codice, questo sia uno strumento più che indispensabile. L‘ho usato per solo 2 ore e ho trovato decide i posti in cui non avevo aggiornato il codice per adeguarlo ad un refactoring recente (si lo so… i tests… ma non tutti i meandri del progetto sono coperti dai tests, non scordate che sono 60MB di sorgenti!).
Sul costo non mi esprimo (59$ per la versione solo PHP), visto che secondo la mia esperienza, se un tool è indispensabile al proprio lavoro.. il costo è l‘ultimo aspetto da considerare. Una nota però va fatta: i ragazzi di nWire offrono una copia gratuita del plugin se si possiede un blog e si scrive un post che lo valuti ;)

Riconoscitore facciale in puro PHP

Friday, June 26th, 2009

Ho scovato questo interessante frammento di codice a questo indirizzo.
In sostanza si tratta del porting in php di una routine scritta in javascript che identifica i volti in una foto. Mi vengono in mente decine di interessanti applicazioni (specie nei prossimi tempi) che possono avvalersi di questa interessante tecnologia.

Già google ha introdotto una funzione nella ricerca delle immagini che permette di filtrare le immagini in modo che compaiano sono quelle in cui è presente una faccia (qui un esempio); per ora google si limita a indovinare il nome il tizio nella foto dal nome del file, o dal testo che si trova nella pagina in cui la foto è pubblicata.

Non mi sorprenderei se nel prossimo futuro il Gigate se ne venisse fuori con un prodotto che permette di cercare tutte le foto presenti sulla rete in cui appare il volto di una persona (brrr!)

Utilizzo del codice

Usare questa classe è relativamente semplice, basta istanziarla, passandonle come argomento un file (detection.dat appunto) con le direttive di detecting che si può scaricare a questo indirizzo; si invoca poi la routine su una immagine caricata. Il risultato lo potete vedere imemdiatamente sotto

<?php
$detector = new Face_Detector(‘detection.dat’);
$detector->face_detect(‘maurice_svay_150.jpg’);
$detector->toJpeg();
 

Ecco l’output.

Veniamo al codice

<?php
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.    
//
// @Author Karthik Tharavaad
//         karthik_tharavaad@yahoo.com
// @Contributor Maurice Svay
//              maurice@svay.Com

class Face_Detector {
   
    protected $detection_data;
    protected $canvas;
    protected $face;
    private $reduced_canvas;
   
    public function __construct($detection_file = ‘detection.dat’) {
        if (is_file($detection_file)) {
            $this->detection_data = unserialize(file_get_contents($detection_file));
        } else {
            throw new Exception("Couldn’t load detection data");
        }
        //$this->detection_data = json_decode(file_get_contents(’data.js’));
    }
   
    public function face_detect($file) {
        if (!is_file($file)) {
            throw new Exception("Can not load $file");
        }
       
        $this->canvas = imagecreatefromjpeg($file);
        $im_width = imagesx($this->canvas);
        $im_height = imagesy($this->canvas);

        //Resample before detection?
        $ratio = 0;
        $diff_width = 320$im_width;
        $diff_height = 240$im_height;
        if ($diff_width > $diff_height) {
            $ratio = $im_width / 320;
        } else {
            $ratio = $im_height / 240;
        }

        if ($ratio != 0) {
            $this->reduced_canvas = imagecreatetruecolor($im_width / $ratio, $im_height / $ratio);
            imagecopyresampled($this->reduced_canvas, $this->canvas, 0, 0, 0, 0, $im_width / $ratio, $im_height / $ratio, $im_width, $im_height);
           
            $stats = $this->get_img_stats($this->reduced_canvas);
            $this->face = $this->do_detect_greedy_big_to_small($stats[‘ii’], $stats[‘ii2′], $stats[‘width’], $stats[‘height’]);
            $this->face[‘x’] *= $ratio;
            $this->face[‘y’] *= $ratio;
            $this->face[‘w’] *= $ratio;
        } else {
            $stats = $this->get_img_stats($this->canvas);
            $this->face = $this->do_detect_greedy_big_to_small($stats[‘ii’], $stats[‘ii2′], $stats[‘width’], $stats[‘height’]);
        }
        return ($this->face[‘w’] > 0);
    }
   
   
    public function toJpeg() {
        $color = imagecolorallocate($this->canvas, 255, 0, 0); //red
        imagerectangle($this->canvas, $this->face[‘x’], $this->face[‘y’], $this->face[‘x’]+$this->face[‘w’], $this->face[‘y’]+ $this->face[‘w’], $color);
        header(‘Content-type: image/jpeg’);
        imagejpeg($this->canvas);
    }
   
    public function toJson() {
        return "{’x':" . $this->face[‘x’] . ", ‘y’:" . $this->face[‘y’] . ", ‘w’:" . $this->face[‘w’] . "}";
    }
   
    public function getFace() {
        return $this->face;
    }
   
    protected function get_img_stats($canvas){
        $image_width = imagesx($canvas);
        $image_height = imagesy($canvas);    
        $iis =  $this->compute_ii($canvas, $image_width, $image_height);
        return array(
            ‘width’ => $image_width,
            ‘height’ => $image_height,
            ‘ii’ => $iis[‘ii’],
            ‘ii2′ => $iis[‘ii2′]
        );        
    }
   
    protected function compute_ii($canvas, $image_width, $image_height ){
        $ii_w = $image_width+1;
        $ii_h = $image_height+1;
        $ii = array();
        $ii2 = array();      
                               
        for($i=0; $i<$ii_w; $i++ ){
            $ii[$i] = 0;
            $ii2[$i] = 0;
        }                        
                                   
        for($i=1; $i<$ii_w; $i++ ){  
            $ii[$i*$ii_w] = 0;      
            $ii2[$i*$ii_w] = 0;
            $rowsum = 0;
            $rowsum2 = 0;
            for($j=1; $j<$ii_h; $j++ ){
                $rgb = ImageColorAt($canvas, $j, $i);
                $red = ($rgb >> 16) & 0xFF;
                $green = ($rgb >> 8) & 0xFF;
                $blue = $rgb & 0xFF;
                $grey = ( 0.2989*$red + 0.587*$green + 0.114*$blue )>>0;  // this is what matlab uses
                $rowsum += $grey;
                $rowsum2 += $grey*$grey;
               
                $ii_above = ($i-1)*$ii_w + $j;
                $ii_this = $i*$ii_w + $j;
               
                $ii[$ii_this] = $ii[$ii_above] + $rowsum;
                $ii2[$ii_this] = $ii2[$ii_above] + $rowsum2;
            }
        }
        return array(‘ii’=>$ii, ‘ii2′ => $ii2);
    }
   
    protected function do_detect_greedy_big_to_small( $ii, $ii2, $width, $height ){
        $s_w = $width/20.0;
        $s_h = $height/20.0;
        $start_scale = $s_h < $s_w ? $s_h : $s_w;
        $scale_update = 1 / 1.2;
        for($scale = $start_scale; $scale > 1; $scale *= $scale_update ){
            $w = (20*$scale) >> 0;
            $endx = $width$w1;
            $endy = $height$w1;
            $step = max( $scale, 2 ) >> 0;
            $inv_area = 1 / ($w*$w);
            for($y = 0; $y < $endy ; $y += $step ){
                for($x = 0; $x < $endx ; $x += $step ){
                    $passed = $this->detect_on_sub_image( $x, $y, $scale, $ii, $ii2, $w, $width+1, $inv_area);
                    if( $passed ) {
                        return array(‘x’=>$x, ‘y’=>$y, ‘w’=>$w);
                    }
                } // end x
            } // end y
        }  // end scale
        return null;
    }
   
    protected function detect_on_sub_image( $x, $y, $scale, $ii, $ii2, $w, $iiw, $inv_area){
        $mean = ( $ii[($y+$w)*$iiw + $x + $w] + $ii[$y*$iiw+$x]$ii[($y+$w)*$iiw+$x]$ii[$y*$iiw+$x+$w]  )*$inv_area;
        $vnorm =  ( $ii2[($y+$w)*$iiw + $x + $w] + $ii2[$y*$iiw+$x]$ii2[($y+$w)*$iiw+$x]$ii2[$y*$iiw+$x+$w]  )*$inv_area($mean*$mean);    
        $vnorm = $vnorm > 1 ? sqrt($vnorm) : 1;
       
        $passed = true;
        for($i_stage = 0; $i_stage < count($this->detection_data); $i_stage++ ){
            $stage = $this->detection_data[$i_stage];  
            $trees = $stage[0];  

            $stage_thresh = $stage[1];
            $stage_sum = 0;
                             
            for($i_tree = 0; $i_tree < count($trees); $i_tree++ ){
                $tree = $trees[$i_tree];
                $current_node = $tree[0];    
                $tree_sum = 0;
                while( $current_node != null ){
                    $vals = $current_node[0];
                    $node_thresh = $vals[0];
                    $leftval = $vals[1];
                    $rightval = $vals[2];
                    $leftidx = $vals[3];
                    $rightidx = $vals[4];
                    $rects = $current_node[1];
                   
                    $rect_sum = 0;
                    for( $i_rect = 0; $i_rect < count($rects); $i_rect++ ){
                        $s = $scale;
                        $rect = $rects[$i_rect];
                        $rx = ($rect[0]*$s+$x)>>0;
                        $ry = ($rect[1]*$s+$y)>>0;
                        $rw = ($rect[2]*$s)>>0;  
                        $rh = ($rect[3]*$s)>>0;
                        $wt = $rect[4];
                       
                        $r_sum = ( $ii[($ry+$rh)*$iiw + $rx + $rw] + $ii[$ry*$iiw+$rx]$ii[($ry+$rh)*$iiw+$rx]$ii[$ry*$iiw+$rx+$rw] )*$wt;
                        $rect_sum += $r_sum;
                    }
                     
                    $rect_sum *= $inv_area;
                         
                    $current_node = null;
                    if( $rect_sum >= $node_thresh*$vnorm ){
                        if( $rightidx == -1 )
                            $tree_sum = $rightval;
                        else
                            $current_node = $tree[$rightidx];
                    } else {
                        if( $leftidx == -1 )
                            $tree_sum = $leftval;
                        else
                            $current_node = $tree[$leftidx];
                    }
                }
                $stage_sum += $tree_sum;
            }
            if( $stage_sum < $stage_thresh ){
                return false;
            }
        }
        return true;
    }
}
 

dell’uguaglianza

Friday, January 2nd, 2009

uguaglianza[ragionamento_a_cervello_libero]
Sono cresciuto in una famiglia di cristiani.
Ho frequentato l’asilo presso un istituto religioso.
Ho frequentato le scuole elementari presso un istituto religioso.
Frequento, ad oggi, una associazione religiosa.

In tutti gli insegnamenti cristiani che ricevevo, vi era sempre un precetto semplice, tanto semplice da passare inosservato per quanto fosse scontato:
tutti gli uomini sono uguali.

Oggi classifico questa affermazione come una menzogna.
Gli uomini NON sono tutti uguali, certi sono migliori di altri (questo è innegabile), e non solo per fortuna, o condizioni economiche, ambientali, religiose o familiari; semplicemente certa gente è migliore di altra gente (per grazia ricevuta, per opera dello spirito santo, per quello-che-vi-pare).

Quando sulla terra non vi erano esseri umani, e Dio fece i primi due, si preoccupò di crearne uno subordinato all’altro. Niente uguaglianza. Niente “siete tutti figli miei”.
E quando un po’ di tempo più avanti, arriva Gesù a spiegarci meglio le cose, aggiunge “io sono qui per servire, non per essere servito; sono il servo, non il padrone”, a sottoscrivere l’esistenza di chi comanda e di chi viene servito.
[/ragionamento_a_cervello_libero]

Cristiano, a qualunque costo!

Tuesday, October 7th, 2008

Diversi anni fa, decisi di trasferirmi a Bologna. Durante i miei raid cittadini alla ricerca di sistemazione, trovai PRIMA la chiesa dove sarei andato a sentire messa e DOPO la casa dove sarei andato a dormire.

Ricordo che alla prima messa a cui partecipai era presente un parroco missionario, che stava ringraziando la platea per la recente raccolta di fondi a favore di una missione in Africa: i soldi raccolti non erano tanti da soddisfare le sue speranze, ma abbastanza per le sue aspettative.

Missione cattolica in Africa in un episodio di SouthPark

Il parroco ci tenne a spiegare l’importanza delle missioni in Africa: “Dovete sapere che l’Africa è piena di popolazioni che non conoscono Dio, che non sanno cosa è il divino o la religione. Questa raccolta di soldi è importante, perchè spesso i testimoni di Geova arrivano prima di noi (!!), e quando un villaggio è stato evangelizzato a Geova poi, è difficilissimo riconvertirlo al vangelo: è importante arrivare prima degli altri“.
So bene che il fine di quelle parole era un altro, ma ascoltandolo, la grottesca immagine qui al lato mi è sembrata quasi verosimile.
Il prete poi continuò: “Sapete, ci sono voluti ben 5 anni per ottenere il battesimo di un nativo“.
Ma come? Ottenere il battesimo?
E le cure? le medicine? l’AIDS? Il cibo? L’acqua? E i pozzi?
In seguito scoprii che tutte queste cose c’erano nel programma della missione, non se ne erano dimenticati, ma non ho mai potuto levarmi dalla mente l’agghiacciante idea che l’efficacia di una missione si misura con la quantità di battesimi fatti, con la quantità di Anime e non di Vite salvate. (sarà per questo che si va a costruire prima la chiesa e poi l’ospedale).

C’è bisogno di cristiani.

Quando il cristianesimo era solo una setta, i fedeli rischiavano la vita per andare a partecipare all’eucarestia, per mantenere viva la “memoria di Lui”. Allora non aveva importanza che la messa si celebrasse in un bosco o in una grotta o nella cantina di qualcuno: un posto valeva l’altro.

Oggi non più.
Mia madre è convinta che ascoltare la messa nella basilica di Pompei valga di più che nella cappelletta sotto casa, e che visitare la Chiesa di Padre Pio valga di più che assistere alla funzione nella basilica di Pompei.
Ogni tanto la prendo in giro chiedendole come sta procedendo la sua raccolta di Bollini Paradiso.

Mi domando: se Padre Pio avesse avuto a disposizione tutti i soldi che ci sono voluti per mettere in piedi la sua chiesa, avrebbe scelto di farla costruire?
Mi sono convinto che per la cristianità (e la chiesa) ha molto più valore l’Immagine di Padre Pio che non le sue idee. (Lo scontro tra l’essenza delle cose e la forma delle cose (essere e apparire) è trattato nella Bibbia, no?).

Quindi, ben vengano paramenti lucciosi e cattedrali enormi, l’aria solenne e le vesti dorate. Se anche un solo profano si lascia affascinare dal luogo e dall’oro; allora il target è raggiunto: un nuovo fedele ingrassa le fila dei cristiani.

Ancora simboli

Tuesday, October 7th, 2008

Ho aggiunto il simbolo che skarabeo mi ha segnalato.

Il numero dei simboli è salito a 12. Sulla mappa trovate i dettagli.

Segni e simboli

Tuesday, September 30th, 2008

In questo ultimo mese nel mio paese: Angri, sono comparsi degli strani segni sui muri e sui marciapiedi.
Non ci facevo caso più di tanto. Ma quando il numero è diventato considerevole mi sono preso la briga di contarli.
E sapete una cosa? Sono davvero tanti!

A prima vista potrebbe sembrare un graffio senza senso, ma in giro ce ne sono troppi (e da troppo tempo).
Non sono un esperto in materia di graffiti, ma non credo neppure che si tratti della TAG di un writer.

Linkata qui in basso trovate la mappa con le posizioni dei simboli che ho notato.

Senza sbilanciarmi più di tanto… direi che questi segni hanno a che vedere con la materia religiosa; non sono un esperto neppure in questa materia, ma ho notato una vaghissima somiglianza con li simbolo dell’Induismo (OM).

PS: Se avete notizia di qualche segno che mi è sfuggito, segnalatemelo.

Il danno, la beffa

Saturday, September 6th, 2008

Di qualche giorno fa la notizia su republica dei vergognosi atti vandalici commessi dai tifosi napoletani in trasferta. Non commento la notizia perchè non ne sono in grado, ma non ho potuto non notare la grottesca combinazione “Notizia <-> Spot” che il quotidiano ha piazzato in HomePage, tanto che ho voluto scattare una istantanea e farvela vedere.

Mi domando se questa sia solo una coincidenza oppure un abbinamento ben architettato. Già un’altra volta repubblica.it ha commesso una gaff del genere: mentre a sinistra il titolo della notizia citava: “Alitalia: in progetto tagli alle tratte italiane“, accanto un banner pubblicitario di Ryanair (o EasyJet non ricordo), annunciava l’incremento dei voli e delle tratte da Malpensa.
Insomma, una bella rappresentazione del danno e della beffa.

51 pensieri atei

Sunday, August 31st, 2008

Pare che 51 sia un numero ricorrente in questo Blog :)

  1. Io credo in Dio, solo che lo chiamo Natura. – Frank Lloyd Wright
  2. Fede vuol dire non voler conoscere la verità. – Friedrich Nietzsche
  3. Un uomo è accettato in chiesa per le cose che crede, ed è cacciato via per le cose che conosce. – Samuel Clemens (Mark Twain)
  4. La religione è considerata vera dalla maggior parte delle persone, falsa dai saggi, e utile dai potenti. – Seneca
  5. La filosofia è una domanda a cui non bisognerebbe rispondere. La religione è la risposta alle domande che non si dovrebbero porre. – Anonimo
  6. Non solo Dio non esiste, ma avete mai provato a trovare un idraulico nel fine settimana? – Woody Allen
  7. Se non fossi stato ateo, avrei creduto in un Dio che salva le persone non sulla base delle cose che dicono, ma sulla base del loro modo di vivere. Avrei creduto in un Dio che preferisce salvare un onesto e rispettoso ateo e non un predicatore televisivo le cui parole sono DIO DIO DIO ma le cui azioni sono SBAGLIO SBAGLIO SBAGLIO. – Isaac Asimov
  8. Credere nel sopranaturale è il riflesso di uno sbaglio dell’immaginazione. – Edward Abbey
  9. Con o senza religione avremmo avuto lo stesso persone buone che fanno cose buone e persone cattive che fanno cose cattive. Ma per avere persone buone che fanno cose cattive è necessaria la religione. – Steven Weinberg
  10. Al mondo ci sono due categorie di persone: persone intelligenti senza religione e persone religiose senza intelligenza. – Abu’l‐Ala al Ma’arri
  11. Dato che la chiesa e la bibbia si sono sbagliate dicendoci da dove veniamo, come possiamo credergli quando ci dicono dove stiamo andando?- Anonimo
  12. Diffido di quelle persone che sanno così bene cosa Dio vuole che loro facciano, perché noto che coincide sempre con quello che loro desiderano fare. – Susan B. Anthony
  13. Le cose che non si vedono e le cose che non esistono si assomigliano davvero tanto.- Delos B. McKown
  14. Due mani che lavorano fanno molto di più di mille religiosi in preghiera. – Anonimo
  15. Non è successo come racconta la Bibbia; non è stato Dio a creare l’uomo a sua immagine e somiglianza, ma il contrario. L’uomo ha creato Dio a sua immagine e somiglianza. – Ludwig Feuerbach
  16. La gente mi chiede cosa ne pensi dei preti donna. Cosa, un prete donna? Donne preti. Grande, magnifico. Così potrò non ascoltare preti di entrambi i sessi. – Bill Hicks
  17. Tutti i miracoli della bibbia alla fine scompariranno col progredire della scenza. – Matthew Arnold
  18. La fede cieca è un ironico regalo da restituire al creatore dell’intelligenza umana. – Anonimo
  19. Ringraziare di avere una vita è forse il vano e presuntuoso desiderio di volerne una seconda. – Richard Dawkins
  20. Ciò che si può affermare senza prove lo si può anche negare senza prove. – Christopher Hitchens
  21. Nella cristianità né la morale né la religione entrano mai in contatto con la realtà. – Friedrich Nietzsche
  22. Il vanto più grande delle donne è quello di non aver mai contribuito con una sola riga alla Bibbia. – George W. Foote
  23. Il primo giorno l’uomo creò Dio. – Anonimo
  24. Suppongo che siamo entrambi atei. Io semplicemente credo in un dio appena minore del tuo. Quando capirai perché rinneghi tutti gli altri dei possibili capirai perché io rinnego il tuo. – Stephen Roberts
  25. Non hai bisogno della bibbia per giustificare l’amore, ma non esiste strumento migliore per giustificare l’odio. – Richard A. Weatherwax
  26. Chi è Dio? Hai presente quando desideri tanto qualcosa che chiudi gli occhi e chiedi di ottenerla? Beh, Dio è il tizio che ti ignora. – Steve Buscemi (Dal film “The Island”)
  27. Dai a un uomo un pesce e lui mangerà oggi; Insegna ad un uomo a pescare e lui mangerà tutta la vita; dai a un uomo la religione e lui morirà pregando di ottenere un pesce. – Anonimo
  28. Dire che l’ateismo è una religione è come dire che la calvizie è un colore di capelli. – Don Hirschberg
  29. Dio dovrebbe essere giudicato per crimini contro l’umanità. – Bryan Emmanuel Gutierrez
  30. Non ho paura della morte. Sono stato morto per miliardi e miliardi di anni prima di nascere e non ho sofferto il minimo inconveniente. – Mark Twain
  31. Di tutte le religioni il cristianesimo è senza dubbio quella che instilla la maggiore tolleranza, ciononostante ad oggi i cristiani sono tra i meno tolleranti degli uomini. – Voltaire
  32. Se ci fosse stato davvero un Dio non credo che l’avrebbe fatta passare tanto liscia a quelli che dubitavano della sua esistenza. – Bertrand Russell
  33. Dio ha voglia di eliminare il male ma non ne è capace? Allora non è onnipotente! É capace ma non vuole? Allora è malvagio. É entrambe le cose? Allora da dove viene il male? Non è nessuna delle cose? Allora perchè lo chiamiamo Dio?- Epicuro
  34. Io sono poliateo; ci sono molti Dei in cui non credo. – Dan Fouts
  35. Una bugia è una bugia, anche se tutti ci credono. La verità è la verità anche se nessuno lo crede.. – David Stevens
  36. La religione fa tre cose efficacemente: Divide i popoli, controlla i popoli, delude i  popoli. – Carlespie Mary Alice McKinney
  37. La storia ci insegna che nessuna causa ha fatto tanti morti quanto la parola di Dio. – Giulian Buzila
  38. L’ateismo è una organizzazione non profetica. – George Carlin
  39. Se letta attentamente la Bibbia è lo strumento più efficace di evangelizzazione Atea. – Isaac Asimov
  40. Dio non uccide le persone, sono le persone di Dio che uccidono le persone. – David Viaene
  41. La religione è l’oppio delle masse. – Karl Marx
  42. La religione è come una pillola che deve essere ingoiata senza masticare – Anonymous
  43. Non è abbastanza vedere un giardino per dire che è meravliglioso? Dobbiamo per forza anche credere che si sono delle fate nascoste tra i cespugli? – Douglas Adams
  44. Per essere davvero liberi è necessaria una mente libera. – Alexander Loutsis
  45. Gli animali non hanno un Dio, loro sono più astuti. – Ronnie Snow
  46. La morte è la verità più agghiacciante che un uomo deve affrontare. La religione rappresenta la distrazione perfetta. – Anonimo
  47. L’interpretazione della bibbia dipende dall’ignoranza delle persone che la leggono. – Robert G. Ingersoll
  48. La fede non da risposte, semplicemente non fa porre la domanda. – Frater Ravus
  49. Dio è una cosa fragile, piò essere cancellato da un soffio di scienza o da un po’ di buon senso. – Chapman Cohen
  50. Se tutti i cristiani che almeno una volta hanno detto di un altro cristiano:”Quello non è un buon cristiano” scomparissero, non resterebbero più cristiani. – Anonimo
  51. Il fatto che un credente è più felice di uno scettico è tanto vero quanto il fatto che un ubriaco è più felice di uno sobrio. – George Bernard Shaw

Ecco, ora spuntate le cazzate che sono elencate qui sopra; sono curioso di confrontarla con la lista di cazzate che ho trovato io.

Pensieri a manovella

Monday, July 7th, 2008

In piena crisi di argomenti… rubo il post da un altro blog… (ho avuto il permesso… quindi tutto apposto).

In Libano gli uomini possono per legge avere rapporti sessuali con animali, purché si tratti di femmine. Avere rapporti sessuali con un animale maschio è un reato punibile con la morte.
(Ah, beh, così va bene!).

Nel Bahrein, la legge consente a un medico di sesso maschile di fare una visita ginecologica a una donna, ma non di guardare direttamente i suoi genitali. Può soltanto vederli riflessi in uno specchio.
(Ma che gente è?!!!)

Ai musulmani è proibito guardare i genitali di un cadavere, e questo vale anche per gli impresari di pompe funebri; gli organi sessuali dei defunti devono sempre restare coperti da un mattone o un pezzo di legno per tutto il tempo.
(Un mattone?)

Nell’anno 1969 è bastata la potenza di calcolo di due Commodore 64 per mandare con successo una navicella sulla Luna. Nell’anno 2008 servono 2 Quad core per far girare Windows Vista.
(Qualcosa deve essere andato storto)

In Indonesia la masturbazione viene punita col taglio della testa.
( … quale testa?…)

A Guam ci sono uomini il cui lavoro a tempo pieno consiste nel girare per le campagne e deflorare giovani vergini che pagano per il privilegio di stare con un uomo per la prima volta. Il motivo: La legge dell’isola stabilisce a chiare lettere che una donna vergine non può sposarsi.
(Pensiamoci un attimo: esiste in qualche altra parte del mondo un lavoro anche lontanamente simile a questo?)

A Hong Kong, una moglie tradita può uccidere il marito adultero, la legge glielo consente; ma può farlo solo a mani nude. Mentre può uccidere come più le aggrada l’amante del marito.
(Ah! La Giustizia!)

A Liverpool, Inghilterra, la legge ammette commesse in topless, ma solo nei negozi di pesci tropicali.
(Mi sembra ovvio!)

A Calì, in Colombia, una donna può avere rapporti sessuali soltanto col marito, e la prima volta che ciò accade, nella stanza dev’essere presente anche la madre di lei.
(che scena raccapricciante.)

Nello stato americano del Maryland, le macchinette dispensatrici di preservativi sono illegali. Cessano di esserlo solo se si trovano ‘in luoghi dove si vendono bevande alcoliche da consumare sul posto’.
(L’America è un grande paese o no? Forse, però, non grande quanto Guam.)

L’orgasmo di un maiale dura 30 minuti.
(Nella mia prossima vita voglio essere un maiale!!!)

Sbattere la testa contro il muro fa consumare 150 calorie l’ora.
(Continuo a preferire la storia del maiale.)

Alcuni leoni si accoppiano più di 50 volte al giorno.
(Nella mia prossima vita voglio sempre essere un maiale: preferisco la qualità alla quantità.)

L’occhio dello struzzo è più grande del suo cervello.
(Conosco persone con lo stesso difetto.)

Le stelle marine non hanno cervello.
(Conosco persone che hanno anche questo difetto).

5 animazioni flash originali

Thursday, June 12th, 2008

Drum Machine
se amate la musica orientale, adorerete questa animazione: sette percussionisti orientali in perfetta sincronia.

Online Shopping
Il modo più originale per creare l’intro di un sito di e-commerce. Molto divertente.

Kaleidoscope
Epilettico??? Allora lascia perdere. Puoi scegliere tra una decina di pattern per creare, muovendo il mouse) simpatici effetti di colore.

Silhouette Sounds
Adoro questo concept. Fare musica con i rumori.

Jackson Pollock
Quante volte davanti ad un quadro di Jackson Pollock avete detto “sono capace anche io di farlo”, ora ne avete l’occazione.