[:it]TPSIT: gli host della rete[:]

[:it]Gli host della rete sono tutti gli apparecchi che sono collegati ad una rete che presentano quindi una scheda di rete.

il file /etc/hosts contiene l’elenco degli hosts conosciuti.

Ad esempio il file hosts presente nel mio pc linux contiene:

cat /etc/hosts

Per identificare un host si può usare indifferentemente l’indirizzo ip o il nome o i nomi .

Tra tutti gli host vi è sempre il loopback che ha come indirizzo sempre 127.0.0.1.

Un host non connesso ad una rete non avrebbe nessun indirizzo IP, per cui programmi in esecuzione che utilizzano IP come protocollo non potrebbero colloquiare. Ad esempio un applicativo che utilizzza un db non potrebbe collegarsi ad esso se non avesse un localhost.

Per verificare che un host è attivo o meno nella rete ed i tempi di risposta dello stesso si usa il comando ping.

Ho modificato il file hosts in questa maniera:

cat /etc/hosts

posso adesso effettuare il ping in queste tre maniere

  • ping 127.0.0.1
  • ping localhost
  • ping topolino

il comando ping si blocca con la sequenza Ctrl + C.

nmap

Il comando nmap consente di scoprire quali host sono presenti in una rete e quali servizi sono attivi su ciascun host. Questo programma effettua richieste su tante porte in modo da trovare quali servizi sono attivi. Effettua un portscanning e tramite esso si verifica la sicurezza della rete.

Per installare il programma nmap si usa il comando

sudo apt install nmap

ad esempio il sito www.whymatematica.com è, a tutti gli effetti un host nella rete internet.

effettuo l comando

nmap www.whymatematica.com

Un altro strumento di diagnostica è:

traceroute che permette di rilevare il percorso di rete (gateway, bridge, router, ecc) compiuto dal pacchetto tra l’host di partenza e l’host di destinazione.

Ad esempio:

traceroute www.whymatematica.com

fornisce come output:

 

 

 

 

 

 

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: le porte[:]

[:it]L’elenco delle porte è contenuto nelle file presente /etc/services

per visualizzarlo uso il comando

cat /etc/services

( per visualizzare il contenuto di un file si possono usare i comandi gedit o more o less, cat nasce principalmente per concatenare infatti deriva dall’inglese to cater = fornire)

per cercare una parola specifica all’interno di un file usare l’acronimo grep (general regular expression print)

cat /ets/services |grep www

quando un programma si attiva, il sistema assegna una porta. Il sistema si mette in listen (in ascolto)

Per controllare le porte sulle quali avvengono le connessioni si utilizza il comando

netstat 

con le relative opzioni

-l porte in ascolto

-n numero di porta

-p programma che utilizza quella porta

netstat -nlp

mostra le tre opzioni

il comando

netstat -s 

mostra il numero di pacchetti inviati, ricevuti, il numero di porte aperte, il numero di connessioni aperte

IFCONFIG

Serve per monitorare le interfacce di rete, attivarle o monitorarle

lo –> interfaccia di loopback

eth –> interfacce di rete Ethernet

sln –> interfacce di rete SLIP (linee seriali)

ppp –> dispositivi point to point Protocol

plip –> Parallel Line IP

il semplice comando

ifconfig 

fornisce, ad esempio il seguente output:

Per attivare i meno un’interfaccia di rete si utilizza il comando:

ifconfig etho up

oppure

ifconfig etho down

con il seguente comando si associa un opportuno indirizzo di rete e netmask

ifconfig eth0 192.168.1.55 netmask 255.255.255.0[:]

Pubblicato in Senza categoria | 2 commenti

[:it]Linux: versione installata[:]

[:it]Per verificare la versione installata di digitare:

lsb_release -dc

si avrà questo output

oppure

lsb_release -c

e per vedere che release

cat /etc/debian_version[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Linux: Ubuntu: installazione/disinstallazione pacchetti[:en]Linu[:de]Linu[:]

[:it]

Kay Sage

INSTALLAZIONE

Tale procedura non utilizza Ubuntu software center ma solo comandi da terminale

Per installare un pacchetto, dopo averlo scaricato, bisogna prima di tutto diventare superuser o root con il seguente comando:

sudo -i

a questo punto si chiederà la password di root

poi

dpkg -i nomepacchetto.deb

inserendo il percorso corretto di dove si è scaricato il pacchetto.

DISINSTALLAZIONE

Sempre come root, prima fare una lista dei programmi inseriti mediante il comando

dpkg –list

se si ha un’idea del nome del programma da disinstallare usare il comando:

dpkg –list |grep parola_dacercare

poi digitare:

sudo apt-get –purge remove [nome del pacchetto][:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: strumenti e tecnologie per l’Ammnistrazione digitale[:]

[:it]

Dada

Banche dati, sportelli telematici, portali, siti Web

Archivi anagrafici aggiornati

Archivio del catasto

normative

Registro delle imprese

Registro dei protesti

Tutte risorse accessibili a tutti rimuovendo gli ostacoli dovuti a differenze culturali, l’età o disabilità fisiche

Riconoscimento e identificazione digitale

Carta d’Identità Elettronica: una smart card che contiene al suo interno una banda ottica
e un microprocessore. I dati del cittadino, con la fotografia, sono impressi in modo visibile sia sul supporto fisico sia sulla banda ottica e memorizzati informaticamente sul microchip e ancora sulla banda ottica

Carta Nazionale dei Servizi : tessera sanitaria

Pagamenti e transazioni commerciali

uso di carte di credito oppure bonifici e addebiti su conto correnti bancari o postali, attraverso l’home banking.

Il software Open Source

L’utilizzo di software Open Source nella Pubblica Amministrazione è un aspetto importante perché consente la riduzione dei costi delle licenze

La gestione dei documenti

L’autenticità e l’integrità dei documenti nei passaggi all’interno e all’esterno dell’Amministrazione sono garantiti dall’uso della firma digitale[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: e-government[:]

[:it]

Kay Sage, 1955

e-government si intende l’applicazione delle tecnologie informatiche messe a disposizione del cittadino. Ossia rendere il più possibile trasparenti ed accessibile al cittadino ogni procedure amministrativa.

L’e-government riguarda:
• l’erogazione di servizi efficienti;
• l’identificazione digitale del cittadino o dell’impresa da parte dello Stato;
• lo scambio di informazioni;
• il miglioramento dei rapporti normativi e fiscali;
• la semplificazione delle procedure amministrative;
• la formazione del personale;
• l’approvvigionamento di beni o servizi.

Inoltre le amministrazioni pubbliche devono essere in grado di accettare dai cittadini e dalle aziende i pagamenti elettronici per i tributi oppure per le prestazioni e i servizi.

L’e-goverment produce cambiamenti anche nell’organizzazione interna delle aziende e degli uffici e nelle loro modalità di lavoro:

  •  uso della Posta Elettronica Certificata (PEC) nelle comunicazioni tra PA e cittadino e tra PA e imprese;
  • obbligo per aziende e studi professionali di inviare denunce, pratiche o dichiarazioni dei redditi esclusivamente per via telematica, con eliminazione della carta (dematerializzazione);
  • riduzione del volume dei documenti cartacei attraverso l’archiviazione su supporti ottici, considerati validi per la conservazione di atti, scritture contabili e corrispondenza;
  • pluralità di canali di accesso ai servizi e alle informazioni: Internet, Call center, cellulare.

Il Codice dell’Amministrazione Digitale, contenuto nel Decreto Legislativo n. 82 del 2005 in vigore dal 1° gennaio 2006, stabilisce i principi e le modalità per consentire ai cittadini di usufruire di dati e servizi digitali e quindi di una Pubblica Amministrazione più efficiente e trasparente.

Per dare attuazione ai progetti dell’amministrazione digitale è stato costituito a livello governativo l’ente nazionale per la digitalizzazione della Pubblica Amministrazione, denominato Agenzia per l’Italia digitale, che ha il compito di fornire il supporto alla Pubblica Amministrazione nell’utilizzo efficace dell’informatica e delle tecnologie, per migliorare la qualità dei servizi e contenere i costi dell’amministrazione statale e locale (www.agid.gov.it).[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: Dev C++/Geany e namespace personalizzabili[:]

[:it]Affinché un programma possa usare un proprio namespace è necessario inserirlo nella libreria che deve essere vista dal programmatore.

Ecco come si fa:

A questo punto di pare la finestra:

aprendo la cartella Directories e a cartella C++ Includes.

Poi si seleziona la cartella che precedentemente di era creata e nella quale si inseriscono tutti i namespace personalizzabili e la si aggiunge alle cartelle standard.

 

Per l’IDLE Geany è sufficiente inserire  il percorso della cartella in cui si sono salvate i file *.h

Ad esempio:

#include</home/francesco/CPP/include/rettangolo.h>

oppure

#include</home/INSEGNANTI/bragadinf/rettangolo.h>[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: librerie del programmatore, namespace, information hiding [:]

[:it]

Jacek Yerka

Il linguaggio C++ permette al programmatore di definire una propria libreria nella quale inserire blocchi di programma, utilizzabili da più sorgenti.

Essi possono essere inglobati nel listato del programma mediante la parola

#include<nome_del_namespace.h>

Ad esempio si crea il seguente blocco di programma:

namespace Rettangolo{
//dati
int base, altezza;
//funzioni
int Area(int, int);
int Perimetro(int,int);
}

int Rettangolo::Area(int b,int h)
{return b*h;
}

int Rettangolo::Perimetro(int b,int h)
{
return (b+h)*2;
}

si noti la seguente struttura:

  • si ha una parte dati,
  • una parte dichiarativa delle funzioni che verranno usate
  • la definizione delle funzioni stesse che hanno però prima il nome del namespace::

Ecco poi il listato del programma che usa il namespace rettangolo:

#include<iostream>
#include<rettangolo.h>

using namespace std;

int main()
{
cout<<“Base: “;
cin>>Rettangolo::base;
cout<<“Altezza: “;
cin>>Rettangolo::altezza;
cout<<Rettangolo::Area(Rettangolo::base,Rettangolo::altezza)<<endl;
cout<<Rettangolo::Perimetro(Rettangolo::base,Rettangolo::altezza)<<endl;
}

si nota :

#include<rettangolo.h>

che include il namespace o blocco di programma definito in maniera esterna.

Ho creato una libreria in cui ho definito tutti i miei namespace.

Per evitare di dover scrivere ogni volta il riferimento al namespace rettangolo si può usare

using namespace Rettamgolo;

il codice del sorgente diventa:

#include<iostream>
#include<rettangolo.h>

using namespace std;
using namespace Rettangolo;

int main()
{
cout<<“Base: “;
cin>>base;
cout<<“Altezza: “;
cin>>altezza;
cout<<Area(base,altezza)<<endl;
cout<<Perimetro(base,altezza)<<endl;
}

Questo progetto, pur essendo molto semplice, fornisce un’idea dell’importanza del namespace e delle librerie disponibili per il programmatore, il quale può utilizzare, nei suoi programmi dati e funzioni senza conoscere l’effettiva implementazione con il codice C++. In questo modo si realizza l’information hiding (nascondere le informazioni), con i vantaggio di poter modificare, in tempi successivi le funzioni (e in generale le librerie) per renderle più efficienti, senza dover cambiare i programmi che le utilizzano.

Per esempio, il programma precedente, utilizza le variabili base, altezza e le funzioni Area e Perimetro, ma la loro implementazione non è presente nel programma perché è definita nel namespace Rettangolo. In pratica le funzioni rappresentano le interfacce che il programmatore utilizza per effettuare le elaborazioni sul rettangolo.

Il nome del namespace delle principali librerie del linguaggio C++ è std (standard)[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: esercizi sulle funzioni con prototipi[:]

[:it]

  1. jacek yerka

    Sviluppare un programma che tramite funzioni prototipo fornisca all’utente la condizione di essere pari o dispari per un numero richiesto a video.

  2. Sviluppare un programma che sempre tramite funzioni prototipo fornisca la superficie di trapezio.
  3. Sviluppare un programma che tramite la funzione prototipo conta il numero di numeri immessi dall’utente.
  4. Scrivere il programma per calcolare l’ipotenusa, il perimetro e l’area di un triangolo rettangolo, dopo aver acquisito da tastiera le misure dei due cateti. Organizzare il programma utilizzando le funzioni ed individuando quali variabili possono essere dichiarate come locali delle funzioni.
  5. Costruire la funzione che simula il controllo sull’inserimento di una nuova password da parte dell’utente. Nella funzione chiamante si acquisiscono due stringhe: la prima per la password e la seconda per la conferma. Le due stringhe vengono passate come parametri alla funzione: se la stringa inserita per seconda è diversa dalla prima, il programma manda un messaggio di errore e richiede l’inserimento delle stringhe.
  6. Da tastiera vengono introdotti i dati dei prodotti con il nome del prodotto, la quantità venduta ed il prezzo unitario. Calcolare il prezzo medio, la quantità media e il valore totale delle vendite (sommatoria di prezzo e quantità).
  7. Dopo aver acquisito da tastiera le informazioni sugli studenti iscritti in una scuola (il nome, il Comune di provenienza e la distanza in km dalla scuola), si devono comunicare: il numero degli studenti residenti in comuni diversi dal capoluogo di provincia; la percentuale di questi rispetto al totale degli studenti considerati; la distanza media in km calcolata su tutti gli studenti.
  8. Per ciascun giorno del mese si conoscono le temperature minima e massima di una città. Dopo aver inserito i dati di ciascun giorno del mese, si calcoli il valore medio delle minime e delle massime.
  9. Dati due nomi di città con il numero di abitanti di ciascuna, scrivere le città prima in ordine alfabetico e poi in ordine crescente di abitanti.
  10. Di una persona si inseriscono il cognome, il nome, e l’anno di nascita. Il programma crea automaticamente un codice identificativo della persona prendendo i primi due caratteri del cognome, i primi due del nome e le cifre dell’anno di nascita.

[:]

Pubblicato in Senza categoria | 6 commenti

[:it]C++: Visibilità delle variabili[:]

[:it]

Jacek Yerka

PREMESSA

L’idea di organizzare i programmi in moduli funzionalmente indipendenti porta con sé la necessità di definire, all’interno della funzione, tutte le variabili necessarie al suo funzionamento: in realtà spesso, in un programma, una funzione può condividere variabili con altre funzioni.

SVILUPPO

In un programma si possono distinguere:

  • variabili globali: vengono definite all’inizio del programma e che possono essere usate dal programma principale e da tutte le funzioni
  • variabili locali: vengono dichiarate all’interno della funzione che le utilizza e che non sono visibili alle altre funzioni

Anche le variabili dichiarate nel main sono di tipo locale ossia visibili dal main stesso.

#include … prototipi delle funzioni predefinite
tipo nome;

variabili globali;
tipo nome funzione(parametri); prototipi delle funzioni del programmatore;
int main()

 

funzione principale
{

tipo nome;

return 0;

}

 variabili locali
tipo nomefunzione(parametri)
{tipo nome;

return…:

}

variabili locali

CONCLUSIONE

Sulla base del ragionamento fatto in precedenza, appare chiaro che un programma ben strutturato (ossia scritto in modo chiaro, efficace ed efficiente) avrà poche variabili globali e molte variabili  locali, proprio per consentire una facile manutenzione del software nel tempo e maggiori possibilità di riutilizzare moduli software in altri programmi.

Tutto questo è molto importante perché significa che per le variabili locali vengono riservate posizioni nella memoria centrale solo al momento dell’esecuzione della funzione. Lo spazio viene creato all’inizio e rilasciato al termine della funzione, liberando quindi spazio nella memoria utente: una ragione in più per usare molte variabili locali e poche variabili globali.

Tuto ciò rende possibile l’utilizzo dello stesso nome di variabile locale in due funzioni diverse.

 

ESEMPIO1 – nomi diversi nella funzione e nel main

//
// Francesco Bragadin
// visibilità variabili
// nomi diversi della variabile nel main e nella funzione area
//

#include <iostream>
using namespace std;

// definizione della funzione
int area(int a);

int main()
{
int lato;
cout<<“lato: “<<endl;
cin>>lato;
cout<<“Area: “<<area(lato);
return 0;
}

// sviluppo della funzione
int area(int a)
{
return a*a;
}

ESEMPIO 2 – stesso nome della variabile nel main e nella funzione

//
// Francesco Bragadin
// visibilità variabili
// nomi uguali della variabile nel main e nella funzione area
//

#include <iostream>
using namespace std;

// definizione della funzione
int area(int a);

int main()
{
int a;
cout<<“lato: “<<endl;
cin>>a;
cout<<“Area: “<<area(a);
return 0;
}

// sviluppo della funzione
int area(int a)
{
return a*a;
}

ESEMPIO 3- uso della variabile globale

//
// Francesco Bragadin
// visibilità variabili
// nomi uguali della variabile nel main e nella funzione e variabile globale
//

#include <iostream>
using namespace std;

// variabile globale
double pigreco=3.14;

// definizione della funzione
double superficie(int r);
double circonferenza(int r);

int main()
{
int r;
cout<<“raggio: “<<endl;
cin>>r;
cout<<“Superficie: “<<superficie(r)<<endl;
cout<<“Circonferenza: “<<circonferenza(r)<<endl;
return 0;
}

// sviluppo della funzione
double superficie(int r)
{
return r*r*pigreco;
}

double circonferenza(int r)
{
return 2*r*pigreco;
}[:]

Pubblicato in Senza categoria | Lascia un commento