Posts elencati sotto la Categoria Tecnologia

Rss feeds di questa categoria



Facevo una passeggiatina sulla Luna…

Alle 22:17 – ora italiana – del 20 luglio del 1969, un veicolo poco più grande di un’utilitaria e con un computer di bordo infinitamente meno potente di un qualsiasi moderno cellulare, toccava il suolo lunare.
Un folto gruppo di persone ritiene che questa informazione sia un falso e, da diverso tempo, alimenta le diatribe e le polemiche introducendo le più svariate ragioni, corroborate da corrispondenti prove.

Supponendo di considerare l’intera questione senza avere alcun pregiudizio né idea “a priori” di quale sia la verità, diventa molto complicato capire chi, tra i sostenitori e i critici dell’allunaggio, abbia realmente ragione.
C’è chi dice che le foto scattate sono false perché senza stelle; chi ribatte che sono autentiche perché il riverbero della luce lunare le sovrasta; chi risponde trovando foto che sarebbero false perché in esse le stelle si vedono; chi afferma che le ombre non sarebbero realistiche; chi risponde che questi difetti sono dovuti al riverbero etc. Un continuo ripetersi di ipotesi, obiezioni, obiezioni alle obiezioni, prove, controprove e interpretazioni. Ambo le parti del dibattito partono da un’idea di come si siano svolti i fatti e usano tutto ciò che puossono usare, con ingegno e caparbietà, cercando di distruggere l’idea dell’avversario ed ottenere l’ambita incontestabile ragione. Più che un impegno in nome della verità sembra il compiacimento del proprio orgoglio: “Io devo avere ragione”.
Allo stato attuale della discussione neanche un documento autentico della NASA ha più un valore, poiché prova fornita dall’accusato. Ma a quali conclusioni possiamo mai arrivare se rigettiamo i fatti con criteri di questo tenore?

Ripartiamo dalla realtà. Magari la risposta definitiva non si trova in complesse argomentazioni scientifiche, ma nella gioia di quelle persone che ebbero il privilegio di calpestare quel suolo lontano. Anche io al loro posto avrei cantato. Sì: avrei riso e cantato sulla Luna; sarebbe stata la mia autentica risposta a quella circostanza, come ritengo che sia stata autentica anche la loro.


I was strolling on the Moon one day, adattamento di questa canzone

Share

La furbizia dell’hacker

Possiamo assimilare la rete informatica mondiale ad una società nella quale ogni individuo è costituito da un “corpo” fisico – l’hardware – e da un software. C’è chi spende tempo, energie e creatività nel creare applicativi, siti come questo o altri ben più complessi, ogni tipo di manifestazione della creatività di uno o più programmatori. C’è anche chi assembla computers ed esprime il proprio ingegno nella realizzazione di sistemi stabili e performanti. Un software ben scritto installato su una macchina ben assemblata è forse paragonabile, quanto ad ingegno e creatività, ad un’opera d’arte “tecnica” ed esprime perciò una sua bellezza che può essere apprezzata. Le cose apprezzate, poi, si diffondono fra gli utenti.

L’hacker – o meglio – quella categoria di hacker che ha intenzioni cattive è un individuo della stessa “pasta” del programmatore. Anch’egli si ingegna e conosce i segreti della programmazione e delle reti ma il suo obiettivo è quello di estendere il suo potere su più macchine possibile. Nessun hacker che si ritenga abbastanza furbo ha come obiettivo la formattazione o la distruzione di un pc. Al personaggio in questione, un computer “serve più da vivo che da morto”: può essere utilizzato come copertura per altri atti punibili dalla legge. I pc della rete sono cose da “usare”, da infettare con un programma occulto che consenta al malintenzionato di accedere come e quando vuole per poi attaccare altri pc ed estendere le proprie potenzialità. Un computer conquistato diventa a sua volta conquistatore e veicolo di infezione.

Potrebbe essere interessante seguire il percorso inverso. Come nella grande rete, Qualcuno ci plasma, produce bellezza, assembla pezzetto per pezzetto, prevede per ciascuno delle attività proficue. Ci sono però gli hacker, che non sono d’accordo: inquinano le coscienze con ideologie, ipotesi non ragionevoli, idee e pensieri falsi che bucano le difese della coscienza facendo leva sui piaceri, sulla comodità di certo pensiero. Accade così che persone capaci di cose meravigliose si riducono all’attacco e distruzione delle altre persone che ancora si sforzano di costruire qualcosa in linea con la natura umana.
Che peccato…
Quando un server è conquistato ed usato per un attacco, non resta che disconnetterlo dalla linea e, nei casi più disperati, formattarlo per ripristinare la programmazione originaria. Come realizzare questo nel mondo non virtuale? Si può? Si deve? Quali speranze ci sono?

Hacker

Share

Il tramonto dei sognatori

Ieri a cena il discorso è caduto su alcune attività commerciali della mia città. Un grande rivenditore di elettrodomestici ha chiuso i battenti. Ci avevo comprato un glorioso videoregistratore Minerva a sei testine, la macchina del gelato tuttora utilizzata – slurp! – ed un piccolo registratore per le conferenze. Ora quello stabile è triste: luci spente, ambienti vuoti, saracinesche abbassate.
Qualche anno fa anche la cartoleria che avevo sotto casa ha chiuso. Era una risorsa per tutto il quartiere, ed anche oltre – data la sua vicinanza al complesso che ospita asilo, elementari e medie della zona – considerando che l’equivalente più vicino dista quasi un chilometro. Ora non saprei dire bene cosa ci sia o ci sarà in quegli stessi locali: mesi fa era un negozio di moda, fallito anch’esso – al quartiere serve la cartoleria, è difficile da capire? – e sostituito da un fruttivendolo che vedo sempre a corto di clienti.

La stessa brutta sensazione degli esempi precedenti la provo anche quando ripenso allo Space Shuttle, la gloriosa navicella riutilizzabile della NASA che è andata in pensione senza lasciare eredi. Il cosmo, l’esplorazione, la tipica voglia umana di andare dove nessun uomo è mai giunto prima, sono inflazionati e pertanto chiudono i battenti. Non interessa più.
Secondo me questo la dice lunga su un’umanità che perde pian piano la sua essenza confondendosi nel mare di distrazioni e svaghi che una certa mondanità offre. A che serve sognare di esplorare Marte se puoi sollazzarti con i giochini dell’Iphone? A che giova immaginare missioni verso l’ignoto quando puoi trascorrere il pomeriggio guardando i messaggi di stato dei tuoi contatti su Facebook? Perché sfidare sé stessi nell’escogitare il modo di realizzare grandi sogni quando la sera si ha il divertimento dei giochi erotici?

Dov’è finito l’uomo esploratore che sfidava la morte per raggiungere il polo? Dove sono i John Glenn, gli Auguste Piccard, i Cristoforo Colombo? Siamo sicuri che sia più bello e più degno per noi esseri umani appiattirci in una dimensione di pigrizie soddisfatte dalla tecnologia e di orizzonti limitati a poche avventure casalinghe?
No; mi spiace. Io non riesco a rinnegare la mia natura di sognatore, esploratore, avventuriero. Apparirò come uno che butta il suo tempo in fantasticherie, come un giovanotto avventato, come uno che non ha la testa sulle spalle, ma ritengo che serva anche questo a rendere doverosa giustizia all’umanità che c’è in me, colmando il desiderio di infinito che ho nel cuore.

Esplorazione

Share

Misterioso Bernoulli

Domani salirò su un comune turbojet (ciò significa che sono fuori città nella prossima settimana e potrei essere assente anche dal blog) ma approfitto dell’occasione per fare qualche riflessione sulla portanza.

Come sappiamo, un aereo vola perché è dotato di ali, ma affinché esista una spinta verso l’alto capace di sollevare il velivolo è necessario che la sezione trasversale dell’ala sia di forma particolare. L’aria che si muove al di sopra dell’ala deve infatti fluire più velocemente di quella che invece passa sotto. Il motivo di questa condizione è il principio scoperto da Daniel Bernoulli che lega la pressione di un fluido alla sua velocità. Nel caso dell’ala la differenza di velocità tra l’aria che scorre sopra e quella che scorre sotto è responsabile di una depressione nella parte superiore capace di sollevare l’aereo.

Pensandoci bene, questo comportamento non è intuitivo: è facile immaginarsi come funzioni un’elica o un ventaglio ma non come funzioni un’ala. Eppure gli uccelli, che non conoscono né Bernoulli, né il suo principio, possiedono ali che soddisfano perfettamente un principio fisico così poco intuitivo. Sono ali fatte apposta.
Noi abbiamo potuto conoscere la misteriosa forza che sostiene gli uccelli nell’aria soltanto attraverso degli esperimenti sui fluidi, affinando la nostra percezione verso qualcosa che ci capitava praticamente sotto al naso ma che non potevamo capire né percepire pienamente. Significa che per vedere qualcosa di non palese è necessario avere innanzitutto l’apertura mentale nel riconoscerne l’esistenza e la volontà di cercare al di là dei limiti imposti dalle impressioni superficiali.

 Portanza

Share

Ikaros

Uno dei sogni più sognati è quello dell’era spaziale, l’esplorazione di mondi distanti anni luce da noi con astronavi in grado di oltrepassare i limiti imposti dalla relatività.
Nessuno sa ancora bene come ciò potrebbe essere possibile ma una sola cosa è certa: l’energia necessaria sarà davvero enorme. Questo problema energetico si scontra ferocemente con il tema delle energie rinnovabili. Sarebbe infatti impensabile alimentare un’astronave del genere con pale eoliche o pannelli solari.

C’è però chi ci ha voluto provare. Una sonda giapponese di nome Ikaros è un esperimento di propulsione attraverso il vento solare. Si tratta di una sonda dal peso di 315Kg munita di una “vela” quadrata di diagonale pari a 20 metri e sulla quale collide il vento solare, un flusso di particelle alfa e protoni che si muovono alla velocità media di circa 400Km al secondo. Le particelle del vento solare trasferiscono la loro energia alla sonda e la accelerano. Ricorda molto una puntata di deep space nine dove il capitano Sisko costruiva ed utilizzava un veicolo molto simile.
L’esperimento scientifico voleva solo verificare la fattibilità dell’apparato ma c’è chi invece strumentalizza questo tentativo come soluzione ambientalista ai viaggi spaziali e motivo per dichiarare che le altre risorse energetiche, ben più potenti, sarebbero inutili.

Purtroppo le cose non stanno così. Mi sono divertito nel fare qualche conto con excel ed ho scoperto che la sonda, partendo dalla Terra, impiegherebbe cento anni solo per percorrere ottomila chilometri! (circa la distanza tra Washington e Tokyo – 7700Km) Figuriamoci quanto tempo servirebbe per percorrere quel paio di anni luce che ci separano da Alfa Centauri (senza considerare che anche Alfa Centauri ha il suo vento solare in direzione opposta).
La scienza può essere usata male come qualsiasi altra cosa e non solo nella forma di armi o sperimentazioni immorali ma anche, e soprattutto, per disinformare e illudere le persone su certe ideologie. Verifichiamo sempre quel che ci viene detto da chi fa tanto rumore sugli esperimenti altrui.

Ikaros

Share

Commenti avanzati in WordPress

Molte piattaforme di blogging permettono agli utenti di inserire immagini nei propri commenti. WordPress sembra invece non permetterlo – immagino per evitare messaggi pubblicitari. E se volessimo dare ai nostri lettori la possibilità di inserire delle immagini o semplicemente qualche opzione di formattazione un po’ più avanzata?

Questo “trucco” è per chi ha installato su un proprio sito una versione di WordPress. La procedura non è difficile: bisogna aprire l’editor del tema e modificare il file delle funzioni “functions.php”. Alla fine del file ci dovrebbe essere il simbolo “?>” che indica la fine del codice php. Distanziamo con qualche ritorno a capo ed incolliamo il codice:

add_action(‘init’, ‘my_html_tags_code’, 10);
function my_html_tags_code() {
  define(‘CUSTOM_TAGS’, true);
  global $allowedtags, $allowedposttags, $allowedentitynames;

        $allowedposttags = array(
            ’address’ => array(),
            ’a’ => array(
                  ’class’ => array (),
                  ’href’ => array (),
                  ’id’ => array (),
                  ’title’ => array (),
                  ’rel’ => array (),
                  ’rev’ => array (),
                  ’name’ => array (),
                  ’target’ => array()),
            ’abbr’ => array(
                  ’class’ => array (),
                  ’title’ => array ()),
            ’acronym’ => array(
                  ’title’ => array ()),
            ’article’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’aside’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’b’ => array(),
            ’big’ => array(),
            ’blockquote’ => array(
                  ’id’ => array (),
                  ’cite’ => array (),
                  ’class’ => array(),
                  ’lang’ => array(),
                  ’xml:lang’ => array()),
            ’br’ => array (
                  ’class’ => array ()),
            ’button’ => array(
                  ’disabled’ => array (),
                  ’name’ => array (),
                  ’type’ => array (),
                  ’value’ => array ()),
            ’caption’ => array(
                  ’align’ => array (),
                  ’class’ => array ()),
            ’cite’ => array (
                  ’class’ => array(),
                  ’dir’ => array(),
                  ’lang’ => array(),
                  ’title’ => array ()),
            ’code’ => array (
                  ’style’ => array()),
            ’col’ => array(
                  ’align’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’span’ => array (),
                  ’dir’ => array(),
                  ’style’ => array (),
                  ’valign’ => array (),
                  ’width’ => array ()),
            ’del’ => array(
                  ’datetime’ => array ()),
            ’dd’ => array(),
            ’details’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’open’ => array (),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’div’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array()),
            ’dl’ => array(),
            ’dt’ => array(),
            ’em’ => array(),
            ’fieldset’ => array(),
            ’figure’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’figcaption’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’font’ => array(
                  ’color’ => array (),
                  ’face’ => array (),
                  ’size’ => array ()),
            ’footer’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’form’ => array(
                  ’action’ => array (),
                  ’accept’ => array (),
                  ’accept-charset’ => array (),
                  ’enctype’ => array (),
                  ’method’ => array (),
                  ’name’ => array (),
                  ’target’ => array ()),
            ’h1′ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’h2′ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’h3′ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’h4′ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’h5′ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’h6′ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’id’    => array (),
                  ’style’ => array ()),
            ’header’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’hgroup’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’hr’ => array (
                  ’align’ => array (),
                  ’class’ => array (),
                  ’noshade’ => array (),
                  ’size’ => array (),
                  ’width’ => array ()),
            ’i’ => array(),
            ’img’ => array(
                  ’alt’ => array (),
                  ’align’ => array (),
                  ’border’ => array (),
                  ’class’ => array (),
                  ’height’ => array (),
                  ’hspace’ => array (),
                  ’longdesc’ => array (),
                  ’vspace’ => array (),
                  ’src’ => array (),
                  ’style’ => array (),
                  ’width’ => array ()),
            ’ins’ => array(
                  ’datetime’ => array (),
                  ’cite’ => array ()),
            ’kbd’ => array(),
            ’label’ => array(
                  ’for’ => array ()),
            ’legend’ => array(
                  ’align’ => array ()),
            ’li’ => array (
                  ’align’ => array (),
                  ’class’ => array ()),
            ’menu’ => array (
                  ’class’ => array (),
                  ’style’ => array (),
                  ’type’ => array ()),
            ’nav’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’p’ => array(
                  ’class’ => array (),
                  ’align’ => array (),
                  ’dir’ => array(),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array()),
            ’pre’ => array(
                  ’style’ => array(),
                  ’width’ => array ()),
            ’q’ => array(
                  ’cite’ => array ()),
            ’s’ => array(),
            ’span’ => array (
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’align’ => array (),
                  ’lang’ => array (),
                  ’style’ => array (),
                  ’title’ => array (),
                  ’xml:lang’ => array()),
            ’section’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’strike’ => array(),
            ’strong’ => array(),
            ’sub’ => array(),
            ’summary’ => array(
                  ’align’ => array (),
                  ’class’ => array (),
                  ’dir’ => array (),
                  ’lang’ => array(),
                  ’style’ => array (),
                  ’xml:lang’ => array(),
            ),
            ’sup’ => array(),
            ’table’ => array(
                  ’align’ => array (),
                  ’bgcolor’ => array (),
                  ’border’ => array (),
                  ’cellpadding’ => array (),
                  ’cellspacing’ => array (),
                  ’class’ => array (),
                  ’dir’ => array(),
                  ’id’ => array(),
                  ’rules’ => array (),
                  ’style’ => array (),
                  ’summary’ => array (),
                  ’width’ => array ()),
            ’tbody’ => array(
                  ’align’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’valign’ => array ()),
            ’td’ => array(
                  ’abbr’ => array (),
                  ’align’ => array (),
                  ’axis’ => array (),
                  ’bgcolor’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’class’ => array (),
                  ’colspan’ => array (),
                  ’dir’ => array(),
                  ’headers’ => array (),
                  ’height’ => array (),
                  ’nowrap’ => array (),
                  ’rowspan’ => array (),
                  ’scope’ => array (),
                  ’style’ => array (),
                  ’valign’ => array (),
                  ’width’ => array ()),
            ’textarea’ => array(
                  ’cols’ => array (),
                  ’rows’ => array (),
                  ’disabled’ => array (),
                  ’name’ => array (),
                  ’readonly’ => array ()),
            ’tfoot’ => array(
                  ’align’ => array (),
                  ’char’ => array (),
                  ’class’ => array (),
                  ’charoff’ => array (),
                  ’valign’ => array ()),
            ’th’ => array(
                  ’abbr’ => array (),
                  ’align’ => array (),
                  ’axis’ => array (),
                  ’bgcolor’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’class’ => array (),
                  ’colspan’ => array (),
                  ’headers’ => array (),
                  ’height’ => array (),
                  ’nowrap’ => array (),
                  ’rowspan’ => array (),
                  ’scope’ => array (),
                  ’valign’ => array (),
                  ’width’ => array ()),
            ’thead’ => array(
                  ’align’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’class’ => array (),
                  ’valign’ => array ()),
            ’title’ => array(),
            ’tr’ => array(
                  ’align’ => array (),
                  ’bgcolor’ => array (),
                  ’char’ => array (),
                  ’charoff’ => array (),
                  ’class’ => array (),
                  ’style’ => array (),
                  ’valign’ => array ()),
            ’tt’ => array(),
            ’u’ => array(),
            ’ul’ => array (
                  ’class’ => array (),
                  ’style’ => array (),
                  ’type’ => array ()),
            ’ol’ => array (
                  ’class’ => array (),
                  ’start’ => array (),
                  ’style’ => array (),
                  ’type’ => array ()),
            ’var’ => array ());

      /**
       * Kses allowed HTML elements.
       *
       * @global array $allowedtags
       * @since 1.0.0
       */
      $allowedtags = array(
            ’a’ => array(
                  ’href’ => array (),
                  ’title’ => array ()),
            ’abbr’ => array(
                  ’title’ => array ()),
            ’acronym’ => array(
                  ’title’ => array ()),
            ’b’ => array(),
            ’blockquote’ => array(
                  ’cite’ => array ()),
            //      ’br’ => array(),
            ’cite’ => array (),
            ’code’ => array(),
            ’del’ => array(
                  ’datetime’ => array ()),
            //      ’dd’ => array(),
            //      ’dl’ => array(),
            //      ’dt’ => array(),
            ’em’ => array (), ‘i’ => array (),
            //      ’ins’ => array(‘datetime’ => array(), ‘cite’ => array()),
            //      ’li’ => array(),
            //      ’ol’ => array(),
            //      ’p’ => array(),
            ’q’ => array(
                  ’cite’ => array ()),
            ’strike’ => array(),
            ’strong’ => array(),
            ’sub’ => array(),
            ’sup’ => array(),
            ’img’ => array(
                  ’alt’ => array (),
                  ’align’ => array (),
                  ’border’ => array (),
                  ’class’ => array (),
                  ’height’ => array (),
                  ’hspace’ => array (),
                  ’longdesc’ => array (),
                  ’vspace’ => array (),
                  ’src’ => array (),
                  ’style’ => array (),
                  ’width’ => array ()),
            ’span’ => array(
                  ’style’ => array ()),
            //      ’u’ => array(),
            //      ’ul’ => array(),
      );

      $allowedentitynames = array(
            ’nbsp’,    ’iexcl’,  ’cent’,    ’pound’,  ’curren’, ‘yen’,
            ’brvbar’,  ’sect’,   ‘uml’,     ‘copy’,   ‘ordf’,   ‘laquo’,
            ’not’,     ‘shy’,    ’reg’,     ‘macr’,   ‘deg’,    ’plusmn’,
            ’acute’,   ‘micro’,  ’para’,    ’middot’, ‘cedil’,  ’ordm’,
            ’raquo’,   ‘iquest’, ‘Agrave’,  ’Aacute’, ‘Acirc’,  ’Atilde’,
            ’Auml’,    ’Aring’,  ’AElig’,   ‘Ccedil’, ‘Egrave’, ‘Eacute’,
            ’Ecirc’,   ‘Euml’,   ‘Igrave’,  ’Iacute’, ‘Icirc’,  ’Iuml’,
            ’ETH’,     ‘Ntilde’, ‘Ograve’,  ’Oacute’, ‘Ocirc’,  ’Otilde’,
            ’Ouml’,    ’times’,  ’Oslash’,  ’Ugrave’, ‘Uacute’, ‘Ucirc’,
            ’Uuml’,    ’Yacute’, ‘THORN’,   ‘szlig’,  ’agrave’, ‘aacute’,
            ’acirc’,   ‘atilde’, ‘auml’,    ’aring’,  ’aelig’,  ’ccedil’,
            ’egrave’,  ’eacute’, ‘ecirc’,   ‘euml’,   ‘igrave’, ‘iacute’,
            ’icirc’,   ‘iuml’,   ‘eth’,     ‘ntilde’, ‘ograve’, ‘oacute’,
            ’ocirc’,   ‘otilde’, ‘ouml’,    ’divide’, ‘oslash’, ‘ugrave’,
            ’uacute’,  ’ucirc’,  ’uuml’,    ’yacute’, ‘thorn’,  ’yuml’,
            ’quot’,    ’amp’,    ’lt’,      ’gt’,     ‘apos’,   ‘OElig’,
            ’oelig’,   ‘Scaron’, ‘scaron’,  ’Yuml’,   ‘circ’,   ’tilde’,
            ’ensp’,    ’emsp’,   ‘thinsp’,  ’zwnj’,   ‘zwj’,    ’lrm’,
            ’rlm’,     ‘ndash’,  ’mdash’,   ‘lsquo’,  ’rsquo’,  ’sbquo’,
            ’ldquo’,   ‘rdquo’,  ’bdquo’,   ‘dagger’, ‘Dagger’, ‘permil’,
            ’lsaquo’,  ’rsaquo’, ‘euro’,    ’fnof’,   ‘Alpha’,  ’Beta’,
            ’Gamma’,   ‘Delta’,  ’Epsilon’, ‘Zeta’,   ‘Eta’,    ’Theta’,
            ’Iota’,    ’Kappa’,  ’Lambda’,  ’Mu’,     ‘Nu’,     ‘Xi’,
            ’Omicron’, ‘Pi’,     ‘Rho’,     ‘Sigma’,  ’Tau’,    ’Upsilon’,
            ’Phi’,     ‘Chi’,    ’Psi’,     ‘Omega’,  ’alpha’,  ’beta’,
            ’gamma’,   ‘delta’,  ’epsilon’, ‘zeta’,   ‘eta’,    ’theta’,
            ’iota’,    ’kappa’,  ’lambda’,  ’mu’,     ‘nu’,     ‘xi’,
            ’omicron’, ‘pi’,     ‘rho’,     ‘sigmaf’, ‘sigma’,  ’tau’,
            ’upsilon’, ‘phi’,    ’chi’,     ‘psi’,    ’omega’,  ’thetasym’,
            ’upsih’,   ‘piv’,    ’bull’,    ’hellip’, ‘prime’,  ’Prime’,
            ’oline’,   ‘frasl’,  ’weierp’,  ’image’,  ’real’,   ‘trade’,
            ’alefsym’, ‘larr’,   ‘uarr’,    ’rarr’,   ‘darr’,   ‘harr’,
            ’crarr’,   ‘lArr’,   ‘uArr’,    ’rArr’,   ‘dArr’,   ‘hArr’,
            ’forall’,  ’part’,   ‘exist’,   ‘empty’,  ’nabla’,  ’isin’,
            ’notin’,   ‘ni’,     ‘prod’,    ’sum’,    ’minus’,  ’lowast’,
            ’radic’,   ‘prop’,   ‘infin’,   ‘ang’,    ’and’,    ’or’,
            ’cap’,     ‘cup’,    ’int’,     ‘sim’,    ’cong’,   ‘asymp’,
            ’ne’,      ’equiv’,  ’le’,      ’ge’,     ‘sub’,    ’sup’,
            ’nsub’,    ’sube’,   ‘supe’,    ’oplus’,  ’otimes’, ‘perp’,
            ’sdot’,    ’lceil’,  ’rceil’,   ‘lfloor’, ‘rfloor’, ‘lang’,
            ’rang’,    ’loz’,    ’spades’,  ’clubs’,  ’hearts’, ‘diams’,
      );
}

Una volta salvata la modifica non facciamo altro che bypassare il controllo che wordpress fa automaticamente sul contenuto dei commenti e dei post aggiungendo, oltre ai tag già permessi, qualche altro tag in più. Ad esempio, io ho aggiunto le immagini ( <img> ), il testo in apice ( <sup> ) ed il testo in pedice ( <inf> ). Provare per credere.

Per aggiungere altri tag basta modificare la stringa chiamata “$allowedtags” sulla falsa riga dei tag già esistenti. Se, ad esempio, voglio aggiungere la possibilità di inserire dei ( <div> ) mi basterà aggiungere:

            ’div’ => array(
                  ’style’ => array ()),

Attenzione però a non esagerare perché un utente malintenzionato potrebbe approfittare della vostra generosità verso i vostri lettori ed inserire codice malevolo.
Buon divertimento.

Share

Regolatore

Ci si ritrova spesso a dover alimentare qualche dispositivo con una differenza di potenziale stabile, indipendentemente dalle pretese del dispositivo stesso. Ad esempio potremmo voler alimentare una vecchia pennetta MP3 utilizzando la presa dell’accendisigari invece della pila a stilo da 1.5V; oppure la nostra sveglia (3 Volts) ci ha dato buca per l’ennesima volta perché le batterie si sono scaricate e vorremmo collegarla ad un alimentatore esterno (12 Volts) etc.

Per risolvere il problema spesso non basta fare un partitore di tensione – cioè collegare delle resistenze insieme al nostro dispositivo affinché ai suoi capi ci sia la differenza di potenziale desiderata – perché, soprattutto nel caso del lettore MP3, la resistenza del dispositivo cambia a seconda che sia stato appena attivato o che sia suonando o che sia in attesa di comandi. Poiché con il metodo del partitore di tensione la differenza di potenziale ai capi del dispositivo dipende dalla sua resistenza interna, rischieremmo di distruggerlo o di non farlo funzionare affatto.
Dobbiamo allora complicare un po’ le cose costruendo un regolatore di tensione rudimentale:

Regolatore

L’amplificatore operazionale, che possiamo scegliere in base alla tensione massima di alimentazione (ad esempio un TL081 regge fino a 36V o ±18V), è il cuore del sistema. Se la tensione sull’ingresso (-) è maggiore rispetto a quella sull’ingresso (+) l’operazionale provvede a ridurre la sua uscita; viceversa, l’operazionale aumenta il potenziale d’uscita. La resistenza R1 (240 Ω) è una protezione che può essere omessa. I due transistor mettono in pratica la regolazione: il BC337 (Q1) serve solo a pilotare il BD139 (Q2) che può gestire correnti più alte. La scelta dei transistor non è vincolante: l’unica precauzione è che Q2 possa gestire correnti più sostenute. R2 è un trimmer (100 KΩ) che consente di alzare la tensione di uscita fino (o quasi) al valore massimo mentre il minimo della tensione di uscita è il riferimento (REF). Se si vuole che l’uscita sia sempre uguale al riferimento si può eliminare R2 e collegare l’ingresso (-) direttamente all’uscita.

Riferimento 1.5VLa cosa fondamentale del circuito è che per funzionare ha bisogno sempre di una tensione di riferimento da collegare a REF. Senza scomodare i diodi zener (noti riferimenti di tensione) si può costruire un riferimento da poco più di un volt usando un led rosso, alimentato attraverso una resistenza opportuna (1 KΩ a 12 V) e ulteriormente stabilizzato con un condensatore (100 nF).
Il riferimento fisso è sempre necessario, anche quando vogliamo essere indipendenti dal carico. Un po’ come nella vita bisogna sempre avere dei valori, dei riferimenti immutabili e innegabili dai quali far dipendere poi tutto il resto. Senza un riferimento esterno a noi, possiamo fare ben poco: possiamo solo illuderci di poter distinguere un potenziale più alto da uno più basso pretendendo di essere al centro. C’è bisogno di qualcosa o qualcuno che apporti un valore fisso di riferimento per le nostre azioni affinché il nostro giudizio sia valido.

Share

Mars Climate Orbiter

Le unità di misura sono importanti, non tanto per avere un modo semplice di immagazzinare i dati ma, soprattutto, per capirsi. Esse sono infatti dei riferimenti, degli enti fissati e determinati che permettono di tradurre in numero e comunicare le caratteristiche di un oggetto o di un fenomeno anche a persone che non sono mai entrate in contatto né con l’oggetto, né con il fenomeno.

Possiamo capire l’importanza delle unità di misura con la storia del “Mars Climate Orbiter”: la sonda, lanciata nel 1998, venne distrutta quando, invece di posizionarsi ad una altezza di 140—150 km dalla superficie di Marte, si inserì nell’atmosfera marziana ad una altezza di soli 57 km dove fu disintegrata dall’attrito con l’atmosfera presente a quella quota. Si scoprì successivamente che alcuni dati erano stati calcolati a Terra in base all’unità di misura del sistema imperiale (libbra-forza/secondi), e riferiti al team di navigazione che invece si aspettava i dati espressi in unità di misura del Sistema metrico decimale (newton/secondi).
La missione era costata 328 milioni di dollari.

Anche le parole sono come le unità di misura: dovrebbero avere un significato univoco e determinato, non alterabile a proprio piacimento. Succede invece che le parole cambiano il loro significato fino a quasi invertirlo del tutto. Ci sono, certo, quelle parole che vanno in pensione, neologismi che nascono, nomi di oggetti che nel tempo si sono modificati, ma non sono queste le parole delle quali sto parlando.
Scambiamo stravaganza e trasgressione per creatività, ma non sono la stessa cosa; fraintendiamo l’irriverenza e la sfacciataggine con il coraggio, anche se il vero coraggio è ben altra cosa; equivochiamo la giustizia con la punizione del colpevole e la vendetta; confondiamo il diritto di esprimere la propria opinione con la libertà di offendere e canzonare; ed anche la “libertà” stessa è intesa come mera negazione di vincoli, a prescindere dalla ragionevolezza e bontà dei vincoli stessi.

C’è chi cambia i significati intenzionalmente, chi invece si adegua alla moda; una cosa però è certa: prima di iniziare a conversare conviene accertarsi che si parli la stessa lingua. Rischiamo altrimenti di fare pasticci sprecando tempo e denaro.

Mars Climate Orbiter

Share

Stazione meteorologica

Ieri mi è stata regalata una schedina Arduino, un dispositivo davvero interessante per la sua versatilità ed il numero, praticamente illimitato, di progetti che possono essere realizzati secondo la propria creatività. Basta scrivere poche righe di codice informatico e collegare qualche sensore per avere già delle interessanti applicazioni.

Un primo progetto che mi viene in mente può essere la costruzione di una piccola stazione meteorologica casalinga. Potrei collegare un trasduttore di rotazione ad una pala per determinare la direzione del vento; potrei fare un rudimentale anemometro con dei bicchieri di plastica fissati con un paio di bastoncini all’alberino di un motore elettrico per risalire alla velocità del vento dalla differenza di potenziale prodotta; potrei misurare la pressione collegando un vecchio trasduttore che ho estratto da un frigorifero; potrei determinare l’umidità dell’aria misurando la capacità di un condensatore che usi proprio l’aria come dielettrico etc.

Pensando a tutti questi dati e come elaborarli ho però realizzato che tutte le mie misure sarebbero state locali. Avrei certo conosciuto la situazione meteorologica fino all’ultimo dettaglio e con la precisione che desideravo, ma tutto quel che avrei potuto dire sarebbe stata solo la situazione nei miei dintorni. Anche se misuro un abbassamento di pressione o un cambiamento del vento, non posso prevedere se pioverà o se ci sarà il sole domani finché mi limito ai miei soli dati. Ho bisogno di sapere com’è la situazione anche in altri luoghi per ricostruire l’aspetto globale della situazione e avere la speranza di capire realmente come sta cambiando il tempo.

Quando la gente giudica si comporta, certe volte, come una stazione meteorologica isolata: basa il suo giudizio su un singolo aspetto, su un’informazione che riguarda un punto, e non estende la sua analisi a tutto il resto. Alcuni si concentrano su un picco di pressione in un punto pensando che la situazione sia la stessa ovunque, senza notare che magari tutto intorno al loro ristretto puntolino la pressione è molto più bassa. Evitiamo le generalizzazioni ed evitiamo soprattutto di giudicare qualcosa basandoci solo sul caso particolare o sull’eccezione che ce lo mostra per ciò che non è.

Barometro

Share

Formati personalizzati in Scientific Linux

Sotto Windows è possibile personalizzare i formati numerici, monetari e temporali a proprio piacimento, scegliendo il simbolo utilizzato per separare le cifre decimali e le centinaia dalle migliaia. Su sistemi Unix-like si può, di solito, scegliere soltanto la “localizzazione” cioè impostare in blocco i formati standardizzati di una determinata nazione (la propria).

Un modo per modificare o aggiungere la localizzazione è quello di editare un file che, una volta compilato, funzioni esattamente come le altre localizzazioni. In particolare, in Scientific Linux – che è il sistema operativo che uso per lavorare – le localizzazioni in “formato sorgente” si trovano nella directory “/usr/share/i18n/locales/” e per modificarli bisogna avere i privilegi di amministratore.

Apriamo il terminale e digitiamo “su“, viene richiesta la password di amministratore. Una volta immessa, si dispone dei privilegi adeguati per editare il file. A questo punto diamo i seguenti comandi:

cd /usr/share/i18n/locales/
gedit it_IT &

La “e commerciale” (&) serve ad aprire l’editor di testo continuando a disporre della finestra del terminale con i privilegi di amministrazione. A questo punto possiamo scegliere se salvare un nuovo file o se modificare la localizzazione italiana “it_IT“. Le chiavi che ci interessano sono “LC_NUMERIC”, “LC_MONETARY” e “LC_TIME”. Una guida dettagliata (in inglese) su come modificare queste impostazioni la fornisce la IBM a questo link.
Notiamo che i vari simboli sono inseriti con il codice “unicode” (UTF-16). A questo proposito ho trovato utile questo convertitore che consente di convertire qualsiasi testo in “UTF16″

Per quanto riguarda la separazione dei decimali, se si vuole passare dalla virgola al punto bisogna sostituire

decimal_point             "<U002C>"

con

decimal_point             "<U002E>"

A questo punto resta solo da salvare il file e compilare il codice che abbiamo scritto. Supponendo di voler aggiornare la localizzazione italiana, basterà digitare

localedef -c -f UTF-8 -i it_IT it_IT.utf8

oppure sostiture il nome it_IT con quello che si desidera.
Dopo il riavvio del sistema le applicazioni come la calcolatrice mostreranno il formato desiderato.

Unicode

Share
Pagina 1 di 212