Recently in Informatica Category

The official online color is: #A4C639 . 한국어: 공...
DroidScript è un piccolo e istruttivo ambiente di sviluppo per terminali Android, ricco di esempi e tutorial che io trovo utile per scrivere applicazioni e programmi in JavaScript, soprattutto per chi vuole iniziare a imparare a programmare semplici applicazioni per Android.

Lo puoi scaricare e installare sul tuo terminale Android collegandoti al Playstore di Google dal tuo terminale.

Te lo segnalo qui, così come l'ho segnalato sul mio canale Facebook.

Un ambiente di sviluppo integrato per terminali Android.

Pubblicato da Piero Bosio su Venerdì 12 maggio 2017

Voglio IPv6

in Informatica | No Comments
A little diagram of an IP address (IPv4)

A little diagram of an IP address (IPv4) (Photo credit: Wikipedia)

L'indirizzo IP è un numero univoco che viene assegnato ad ogni dispositivo che si collega ad Internet. Gli indirizzi IP fanno parte dell'architettura di rete TCP/IP (Trasmission Control Protocol/ Internet Protocol). Si tratta di un protocollo a commutazione di pacchetto usato fin dagli anni '70 da DARPA (l' Agenzia del Dipartimento della Difesa americano per la ricerca ad uso militare) per connettere i computer in rete. L'Internet Protocol si colloca a livello di Network (ARP ICMP, routing) mentre il Transport Control Protocol insieme a UDP si colloca a livello Transport nel modello ISO/OSI.

I primi due livelli del modello ISO/OSI (Phisical e Data Link) non sono specificati per TCP/IP e si appoggiano a diversi protocolli esistenti. Ad esempio per quanto riguarda le reti locali abbiamo Ethernet/IEEE802.3, mentre per le reti globali o geografiche abbiamo ATM, PPP, HDLC, ecc.

Il protocollo IP, a differenza del protocollo TCP che è di tipo connection-oriented, è un protocollo semplice di tipo datagram, non connesso e se ne vuoi sapere di più, puoi scaricarti da Internet il file RFC 791 che nel punto 3 definisce l'Header del pacchetto IP.

Fanno parte dell'Header del pacchetto IP il Source IP Address e il Destination IP Address, cioè gli indirizzi IP sorgente e destinazione dei dispositivi che devono comunicare, indirizzi che hanno una dimensione di 32 bit equivalenti a 4 byte da 8 bit.

I 32 bit dell'indirizzo IP sono il principale limite del pacchetto IP perché, con il tempo e il crescere della rete e dei dispositivi ad essa collegati, gli indirizzi IP che vengono assegnati ai grossi operatori per poi essere ridistribuiti agli utenti finali, si sono esauriti. Per cui un nuovo operatore che chiede nuovi indirizzi IPv4 non ne trova più di disponibili  a meno che non se li faccia dare (obsoleti) da quelli che se li sono già accaparrati (pagando ovviamente).

English: IPv6 Header Français : En-tête IPv6

English: IPv6 Header Français : En-tête IPv6 (Photo credit: Wikipedia)

La soluzione all'esaurimento degli indirizzi IP è il passaggio ad un indirizzo IP di dimensioni maggiori. Per questo motivo è stato pensato e implementato il protocollo IPv6 che prevede indirizzi IP di sorgente e destinazione con dimensioni di 128 bit equivalenti a 16 byte da 8 bit raggruppati in 8 words da 16 bit in formato esadecimale.

Non sto qui a spiegarti il protocollo IPv6 sul quale mi devo ancore aggiornare bene. Ti segnalo che il Consorzio Garr, la Rete italiana dell'Università e della Ricerca, già da alcuni anni, offre un interessante ed esauriente corso in autoapprendimento su IPv6 in italiano al quale iscriversi.

Per gestire gli indirizzi IPv6 occorre aggiornare il software (in alcuni casi anche l'hardware) soprattutto occorre aggiornare il firmware dei modem e dei router più vecchi che ti collegano a Internet. Ben poche case costruttrici di modem e router domestici offrono la possibilità di aggiornare il firmware dei loro apparati più vecchi a IPv6. Il più delle volte sei costretto a continuare a usare il tuo vecchio apparato su IPv4, magari ricorrendo a stratagemmi software come il tunneling come il Tunnel software 6to4 e simili o IPv6 Tunnel Broker offerto da HE Hurricane Electric e simili oppure a cambiare modem/router con uno già aggiornato.

Occorre poi che il provider al quale ti connetti ti offra un indirizzo o una classe di indirizzi IPv6, altrimenti ciccia, resti su IPv4 con tutti i suoi limiti anche con il modem/router aggiornato.

Tuttavia, se poi gestisci un sito web e lo vuoi fare diventare visibile anche su rete  IPv6, il tuo provider deve prevedere questa possibilità sia da un punto di vista software che hardware comunicando nel DNS dei name server entrambi gli indirizzi IPv4 e IPv6 della macchina che ospita il tuo sito web, attraverso gli appositi record A e AAAA.

Oltre al corso in italiano del Garr che ti ho già segnalato, puoi trovare altri corsi su IPv6 in inglese presso il Ripe:
www.ripe.net/publications/ipv6-info-centre/training-and-materials

Lo Psion Serie 3 è un computer palmare uscito nei primi anni '90 ormai obsoleto e fuori produzione, ma che tuttavia conserva un suo fascino. Fu uno dei primi palmari ad utilizzare EPOC come sistema operativo e OPL come linguaggio di programmazione. OPL significa Organizer Programming Language oppure Open Programming Language sul quale ho lavorato per diverso tempo, divertendomi.

Psion Serie 3

Il sistema operativo è Epoc, che diventerà il futuro Symbian, un sistema che supporta il multitasking, qualcosa di veramente innovativo per quei tempi dove i PC erano quasi tutti basati su Dos , un sistema poco avvezzo al multitask.

All'epoca, il Serie 3 veniva messo in commercio ad un prezzo che non ha nulla da invidiare ai comuni palmari di oggi, con un prezzo che oscillava dalle 450.000 lire, la versione più economica con 128 K di ram, a circa 600.000 lire la versione con 256 K di ram. Come optional esisteva anche un cavo seriale per il collegamento al PC il cui costo per me era improponibile, infatti costava circa 180.000 lire e non riuscii mai ad acquistarlo per le mie tasche bucate e mi dovetti accontentare del palmare nudo e crudo. Il palmare aveva la potenza di un personal IBM compatibile, come ad esempio il glorioso M24 dell'Olivetti, tutta potenza concentrata nel palmo della mano.

Su quel palmare ci feci un sacco di cose e lo programmai per lo studio grafico delle funzioni tipo y=f(x) e per il calcolo matriciale inserendo formule per risolvere determinanti e operazioni tra matrici, tutto in OPL, linguaggio di programmazione che trovai semplice e intuitivo.

Ti propongo un video che ho fatto in casa per documentare come è possibile risolvere il cubo di Rubik utilizzando i mattoncini lego e un computer specifico orientato alla robotica. Su YouTube si trovano molti video simili, anche molto interessanti.

Dividere per zero

in Informatica | 2 Comments

In informatica la divisione per zero genera un errore, perché la divisione per zero in matematica dà un numero talmente grande che le risorse limitate di un computer non sono in grado di calcolare.

In questo periodo sto provando il sistema operativo Android. Android non è un vero e proprio sistema operativo, ma è una piattaforma software open source per device mobili come telefoni cellulari e palmari. Android è stato sviluppato da Google e si basa su un kernel Linux embedded e su una macchina virtuale chiamata "Dalvik Virtual Machine", programmata in Java e che si occupa di mettere a disposizione un ambiente per le applicazioni mobili basate su Android e programmate in Java.

Ho installato Linux Ubuntu 8.10 sul pc portatile Acer 8930G. L'installazione è andata bene, tranne per l'audio e il lettore di schede di memoria SD incorporato che non funzionano con Ubuntu.

I robots in informatica possono essere di due tipi: hardware e software.

Un computer
non è altro che un robot programmabile. Il robot viene utilizzato per eseguire compiti ripetitivi sempre uguali dotandolo di una intelligenza statica e in alcuni casi artificiale.

Succede così che in molti settori del lavoro, i robots sostituiscono gli uomini, mandandoli a casa o a spasso. L'uomo si ritrova così disoccupato, senza lavoro. Nasce quindi, per molte persone, l'esigenza di trovare qualcosa da fare per non stare lì con le mani in mano a fare niente, qualcosa che i robot non possono fare, altrimenti ritorniamo di nuovo da capo.

La cosa che i robots non sono in grado di fare è pensare. I robots non pensano. Anche quando un robot ti dà l'impressione di stare a pensare, per esempio quando è impegnato in un gioco di pensiero come Scacchi o Dama, in realtà non sta pensando, ma sta eseguendo un algoritmo, una sequenza di istruzioni macchina che il programmatore gli ha ordinato. L'attività del pensare è una attività esclusivamente umana.

Il grosso merito dei robots è quello di liberare l'uomo da attività ripetitive sempre uguali, per dargli il tempo di pensare, di ragionare e quindi di prendere coscienza della propria realtà umana. Quando l'uomo viene liberato dall'attività meccanica ripetitiva tipica del lavoro manuale, ha molto più tempo libero per dedicarsi a qualcosa d'altro.

L'attività del pensare rientra tra le tante cose fattibili e contraddistingue il pensatore, colui che pensa, colui che si è affrancato dal lavoro manuale ripetitivo tipico della catena di montaggio, per dedicarsi al ragionamento, alla creatività artistica. Ci sono tantissime cose alle quali pensare e sulle quali ragionare, tu le conosci meglio di me. Scegli a cosa vuoi pensare e ragionaci sopra. La matematica o la filosofia sono alcune discipline sulle quali focalizzare il pensiero e il ragionamento.

Ora che ci hai pensato e ragionato sopra, metti giù i risultati e condividili.

Io ho ragionato
. Mentre il mio pc calcolava la varianza della distribuzione gaussiana degli uomini sposati e di quelli non sposati, io pensavo. Ho scelto di ragionare su alcuni passi del Vangelo dove Gesù accenna agli angeli del cielo e al loro stato "civile" celeste. Ed ora metto giù i risultati del mio ragionamento per condividerli con te. Vediamo:

Marco 12,25. Quando risusciteranno dai morti, infatti, non prenderanno moglie né marito, ma saranno come angeli nei cieli.

Luca 20, 34. Gesù rispose: «I figli di questo mondo prendono moglie e prendono marito; ma quelli che sono giudicati degni dell'altro mondo e della risurrezione dai morti, non prendono moglie né marito; e nemmeno possono più morire, perché sono uguali agli angeli e, essendo figli della risurrezione, sono figli di Dio.

Matteo 6, 9. Voi dunque pregate così: Padre nostro che sei nei cieli, sia santificato il tuo nome; venga il tuo regno; sia fatta la tua volontà, come in cielo così in terra...

Gesù fa sapere che gli angeli del cielo non si sposano, poi nella preghiera del Padre Nostro invita i suoi discepoli a chiedere al Padre che sia fatta la sua volontà come in cielo così in terra. Allora, se in cielo gli angeli non si sposano, non ci si dovrebbe sposare neanche sulla terra, se si vuole fare la volontà del Padre che si fa in cielo anche in terra (non dimentichiamo che gli angeli contemplano incessantemente Dio faccia a faccia, lo glorificano, lo servono e sono suoi messaggeri nella missione di salvezza. Quindi sanno bene cosa Dio vuole. E, se non si sposano, evidentemente è perché quella è la volontà di Dio su di loro). Mi pare un ragionamento logico o no? Ma allora perché ci sposiamo? Se il cristiano chiede al Padre che si faccia sulla terra la volontà che si fa in cielo, per coerenza, come minimo dovrebbe smetterla di sposarsi e comportarsi da vero cristiano, come un angelo del cielo, il quale non si sposa. E invece no, ci si sposa in terra in barba alla volontà del cielo. Perché?

Hai visto in che loop mentale sono finito pensando troppo? Sono alla ricerca di una condizione logica vera o falsa per uscire dal loop. Ci sarà una ragione logica che spieghi perché gli angeli del cielo non si sposano, mentre gli uomini sulla terra invece sì.

Una tecnica di programmazione è la ricorsione.

La ricorsione in informatica consiste nel costruire una funzione che richiama se stessa in modo ricorsivo.

Per esempio se voglio creare una funzione che fa la somma di due numeri positivi, posso definire la funzione "somma" passandogli come parametri i valori da sommare. in questo modo:

funzione somma (x, y)
{
z=x+y
return z
}

La funzione somma() è una funzione normale molto semplice e non ricorsiva che restituisce la somma di x e di y.

Proviamo a renderla ricorsiva:
La cosa è molto semplice e banale:

funzione somma_ricorsiva (x,y)
{
if y > 0 { somma_ricorsiva (x+1,y-1) }
else return x
}

Cosa ho fatto? Anziché sommare x e y ho usato il parametro y come variabile di controllo per contare quante volte sommare 1 a x richiamando la stessa funzione all'interno di se stessa.

Collaudiamo la nostra funzione.

Proviamo ad eseguire la somma di 10 + 10. Per farlo dobbiamo scrivere la nostra funzione ricorsiva in un linguaggio appropriato e comprensibile dal browser e che sia sintatticamente corretta. Scegliamo Javascript come linguaggio di programmazione script e scriviamola come pagina html in modo che sia testabile dal browser. Il browser deve essere abilitato ad eseguire javascript altrimenti lo script non viene eseguito dal browser. Creiamo un file di testo e chiamiamolo ricorsione.html, apriamolo con notepad e al suo interno scriviamo le seguenti istruzioni:

<html><head></head>
<body>
La somma dei due numeri è uguale a :

<script language="Javascript">

function somma_ricorsiva (x,y)
{
if (y > 0) { somma_ricorsiva (x+1,y-1) }
else return document.write (x);
}

somma_ricorsiva (10,10);

</script>
</body>
</html>

Copiate le istruzione precedenti, salviamo il file ricorsione.html e carichiamolo con il browser preferito. Dovremmo vedere a video il risultato di 10+10 che è 20.

I limiti

La programmazione ricorsiva è una tecnica di programmazione molto potente, ma è pericolosa se non la si riesce a controllare bene. Infatti programmare ricorsivamente comporta forti limitazioni dovute alla quantità di memoria che abbiamo a disposizione del browser per eseguire lo script. Devi sapere che ogni volta che la funzione chiama se stessa, occorre allocare memoria per lo script e nel caso si debba richiamare molte volte in modo ricorsivo la stessa funzione, c'è il rischio di esaurire la memoria a disposizione.

Ad esempio, vedi se riesci a sommare 100000 e 100000. Probabilmente lo script va in errore e non viene eseguito.

Bisogna quindi essere consci, prima di cimentarsi con funzioni ricorsive, di avere abbastanza memoria a disposizione per le nostre necessità facendo un test di memoria in runtime prima di chiamare una funzione ricorsiva e valutare se continuare o fermarsi per evitare di andare in overflow di memoria. Il test di memoria naturalmente rallenta molto lo script ed è quindi a discrezione del programmatore valutare quando farlo in software mission critical o meno.

Ti è piaciuto questo post? Bene, io ti ho dato il la, ora fai le tue prove, modificando e aggiungendo cose nuove alla funzione ricorsiva o provando ad inventarti una tua funzione ricorsiva che faccia qualcosa di utile per l'umanità (ad esempio puoi provare a modificarla in modo che tratti anche numeri negativi), secondo la tua fantasia, documentandoti sul linguaggio Javascript (se non lo conosci) che è molto bello.
Tuttavia non mi stressare con domande sulla programmazione ricorsiva, perché non ho molta voglia e tempo per rispondere.

Vediamo come generare automaticamente con Movable Type 3.2 una sitemaps xml compatibile con il protocollo di Google:
Google Sitemaps è un esperimento nella scansione del Web. Viene utilizzato da Google e altri motori di ricerca per informare il crawler sulla collocazione delle pagine web e relativi files nel tuo sito web, fornendogli informazioni sull'ultimo aggiornamento della pagina, la frequenza di scansione, la priorità del file.

L'Università di Stanford (USA), da diversi anni, è promotrice di un ambizioso progetto di calcolo distribuito volto allo studio del comportamento delle proteine al fine di trovare terapie efficaci nei confronti di malattie quali: Alzheimer, mucca pazza (BSE), CJD, ALS, Huntington e Parkinson, per le quali oggi non esiste ancora una cura risolutiva.

Guarda che casini bisogna fare per fare funzionare la stampante e il suo spooler di stampa con un sistema operativo come Windows.
Qui c'è il link all'articolo per far funzionare lo spooler della stampante Lexmark

Non è meraviglioso?

Te lo hanno pure scritto in inglese, così lo capisci meglio.

Ma come si fa? Ma come fa un povero cristo che si compra il computer e la stampante per vederla funzionare bene e poter lavorare con tranquillità a fare i conti con un articolo del genere?

Ma io mi ci metto nei panni del povero cristo che di pc, spooler, stampanti non ne capisce niente o ne capisce poco e deve affrontare un articolo del genere.
Ma c'è da spararsi.

Sfido io che poi i giornalisti come Vattimo si inquietano quando devono accendere il computer e corrono a scrivere articoli sui giornali.

Archives

Creative Commons License
This blog is licensed under a Creative Commons License.
Powered by Movable Type 4.35-en