[: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

[:it]C++: definizione delle funzioni mediante prototipi[:]

[:it]

jacek Yerka

Si è visto come chiamare ed usare le funzioni.

Adesso si affrontano alcuni approfondimenti in particolare:

  • una funzione non ne può richiamare un’altra se questa non è stata ancora definita

La dichiarazione della funzione, che si intente utilizzare nel programma, di norma, va posta in testa la programma stesso, immediatamente dopo la sezione dedicata alle direttive e alla dichiarazione delle variabili globali.

Tramite la dichiarazione, il programmatore si limita a comunicare al compilatore la sua intenzione di utilizzare una funzione che restituisca un dato di un certo tipo e che utilizza determinati parametri, riservandosi di specificarne il codice in seguito, nella fase di definizione.

Questa dichiarazione si chiama prototipo.

In pratica:

all’inizio del programma le funzioni vengono soltanto dichiarate, specificandone per ciascuna il tipo restituito e il nome dei parametri richiesti.

In questo modo si ottiene una semplice elencazione dei prototipi che facilita la comprensione del programma e realizza, in pratica la metodologia top-down.

Ad esempio il seguente programma dichiara la funzione che solo successivamente viene definita nei dettagli:

//
// Autore: Francesco Bragadin
// Oggetto: uso dei prototipi come funzioni
//

#include <iostream>

using namespace std;

// semplice definizione della fuznione
int maggiore(int a, int b);

int main()
{
int c,d;
cout<<“primo numero: “<<endl;
cin>>c;
cout<<“secondo numero: “<<endl;
cin>>d;
cout<<“il numero maggiore risulta: “<<maggiore(c,d);
return 0;
}

//dettagli della funzione
int maggiore(int a, int b)
{
int c;
if (a>b)
return a;
if (a<b)
return b;
}

 

 [:]

Pubblicato in Senza categoria | Lascia un commento