[:it]Approfondimenti comandi Linux[:]

[:it]

Claude Monet

SISTEMA OPERATIVO LINUX

In Linux oltre all’ interfaccia grafica (shell grafica) con cui

abitualmente lavoriamo, è possibile utilizzare la riga di comando

(shell a riga di comando), usando una finestra di TERMINALE (da

accessori).

Il terminale visualizza il nome del login, il nome host del computer ed il percorso corrente.

Ad esempio antonietta@antonietta-vrtuafffl-mahine:~ dollaro  oppure~]  

NOTA: Il prompt per l’utente root è #. Il prompt della shell è dollaro.

La SHELL è un programma interprete che legge in input i comandi dell’utente, richiede l’esecuzione al Kernel e produce l’output.

Il Kernel o nucleo del sistema operativo gestisce l’esecuzione dei processi.

La shell si trova nella directory /BIN.

Esistono più Shell:

  • shell Bourne

  • shell C

  • shell Korn

  • shell Bash

La shell di default per le distribuzioni GNU/LINUX è la shell BASH.

Attraverso la shell possiamo eseguire i comandi, creare, modificare, eliminare i files, esplorare il sistema.

Per terminare la sessione da terminale si digita exit oppure CTRL+d

NOTA: Se il comando è su più righe, digitare \ prima di dare l’invio

COMANDI FONDAMENTALI DI LINUX

PARAMETRI (sono prefissati da un trattino e separati dal comando, da uno spazio)

————————————————————————————————————–

  • ls elenca i files della directory corrente (list segment)

-l visualizza l’elenco in modo esteso (oltre al nome, diritti,proprietario,gruppo, lunghezza, data)

LE DIRECTORY SONO EVIDENZIATE IN BLU,

I FILES BIANCHI SU SFONDO NERO O NERO SU SFONDO BIANCO

NOTA: su ogni file di linux i permessi possono essere di tre tipi LETTURA/SCRITTURA/ESECUZIONE

e vanno definiti per UTENTE, GRUPPO, ALTRI.

Esempio di riga presente in una lista

drwxrw-r– 1 nobody nogroup 625 jan 16 2015 source

d rwx rw- r- –

d indica che si tratta di una directory (- invece per il file)

rwx indica i diritti del proprietario

rw- indica i diritti del gruppo del file

r– indica i diritti del resto del mondo

nota: r sta per lettura, w per scrittura e x sta per diritti di esecuzione

nobody nome proprietario del file

nogroup nome gruppo

625 dimensione del file in byte

Poi data e ora ultima modifica

  • pwd (present working directory) stampa la directory di lavoro (ossia il percorso assoluto della directory corrente), comincia con uno / e parte dalla root ed arriva al rispettivo file

NOTA (percorso relativo:percorso che parte alla directory corrente)

  • man consente la consultazione in linea del manuale

man seguito dal comando su cui si vuole un help

Per uscire dal manuale digitare q.

  • touch crea un file vuoto

touch seguito dal nome del file o dal percorso assoluto

  • cd cambia la directory corrente (change directory)

il comando è seguito dal nome della directory o da un percorso assoluto

cd da solo porta alla home

cd .. porta alla directory superiore

  • mkdir consente di creare una nuova directory (make directory)

mkdir seguito dal nome della directory che si vuole creare (se la si vuole creare nella cartella corrente) oppure

mkdir seguito dal percorso assoluto, se la cartella la si vuole creare in un’altra destinazione

  • rmdir per cancellare una directory vuota oppure files (remove directory)

-r consente di cancellare le sottodirectory ed il loro contenuto

  • rm nome file per eliminare invece il file
  • cp (copy) copia ossia duplica un file in un percorso diverso

cp nome sorgente nome destinazione

cp –r nome directorysorgente nome directory destinazione (per duplicarlo)

  • cal mostra il calendario del mese corrente

cal 2017 visualizza il calendario dell’anno specificato

cal 11 2017 visualizza il mese richiesto

  • mv serve per spostare un file o una directory (move) oppure per rinominare nome

mv nome file attuale nuovo nome file

mv nome directory percorso

  • date visualizza la data del sistema
  • passwd per cambiare la propria password
  • bc attiva la calcolatrice e possiamo digitare un’espressione con le seguenti operazioni

+ – * /

% per il resto della divisione

^ per elevare a potenza

NOTA: per uscire dalla calcolatrice digitare su nuova riga, quit oppure CTRL+d

              • tput per pulire il video
              • cat nome file per vedere il contenuto del file
              • who elenco nome utenti collegati
              • write nome utente

per inviare messaggio sul terminale di un utente. Una volta eseguito il write, ogni messaggio verrà visualizzato su entrambi i terminali collegati.

(tty01 esempio di linea cui il mittente è collegato).

mesg n (per non ricevere messaggi da terminale)

mesg y (per ripristinare blocco invio messaggi)

CTRL+d (per interrompere dal mittente)

Il destinatario deve attivare anche lui (tramite write nome utente del suo mittente)

@Antonietta.Gemmiti[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: Test sulla teoria dell’informazione e codici[:]

[:it]

hermin abramovitch

[WpProQuiz 51][:]

Pubblicato in Senza categoria | 5 commenti

[:it]TPSIT: Aspetti evolutivi delle reti[:]

[:it]

jacek yerka

La telematica è la fusione di TELEcomunicazione e inforMATICA; essa, per poter funzionare ha la necessità che esista una rete, cioè un insieme di sistemi per l’elaborazione messi in comunicazione fra loro.

STORIA

Inizialmente esisteva il mainframe e dei semplici terminali che si connettevano con il mainframe con dei semplici cavi coassiali, nel momento in cui uno di essi veniva staccato dalla rete, solo il terminale in questione non poteva più comunicare senza inficiare il funzionamento del resto della rete.

Il disco fisso era presente solo sul calcolatore centrale.

Con l’abbassamento del costo dell’hardware si è passati al concetto moderno di rete in cui ogni PC è:

  • autonomo: se disconnesso dalla rete esso può funzionare egregiamente
  • interconnesso: scambia informazione con altri PC della rete

Una rete è un insieme di sistemi per l’elaborazione messi in comunicazione tra loro.

Si è passati quindi da sistemi di elaborazione delle informazioni aventi la caratteristica di essere concentrati, cioè strutture hardware composte da una singola CPU alla quale venivano connessi più terminali, alle stazioni di lavoro connesse tra loro e dotate di capacità elaborativa propria, cioè a sistemi distribuiti.

Nello stesso periodo la rete telefonica, in continuo sviluppo da quasi un secolo, ha subito una drastica ristrutturazione, concretizzandosi nella conversione delle centrali di commutazione da elettromeccaniche ad elettroniche e soprattutto nel passaggio, nei collegamenti fra le centrali di commutazione, da metodi di trasmissione analogica a metodi di trasmissione numerica.

Quindi si è passati dal MODEM all’ADSL di casa.

I MODEM modulano e demodulano il segnale ossia convertono il flusso di dati in un segnale analogico, con al conversione inversa in ricezione.

ADSL è acronimo di Asymmetric Digital Subscriber Line che consente la trasmissione, sempre su doppino telefonico di segnali solo digitali.

Il doppino telefonico in rame era stato progettato, e viene tuttora usato, per la comunicazione in voce, che utilizza frequenze tra 300 e 3.400 hertz.

Nel 1960 comincia a diffondersi la tecnica di trasmissione numerica, nota come PCM (Pulse Code Modulation), in cui la trasmissione di un segnale vocale è affidata ad un flusso di informazione di 64kbit/s. Più conversioni telefoniche sono poi affasciate mediante multiplazione a divisione di tempo  (TDM Time Division Multiplexing) e trasmette su canali numerici con capacità dell’ordine dei Mbit/s.

Il grande boom delle reti è avvenuto grazie al Dipartimento della Difesa degli Stati Uniti, che ha svilupato ARPANET (Advanced Resercg Project Agency Net-work) che è riuscito a collegare macchine diverse con i più diversi sistemi operativi e potenze di calcolo diverse.

Per quest’ultimo problema è stata fondamentale l’attività degli organismi di standardizzazione che ha permesso di creare regole di comunicazione.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Python esercizi[:]

[:it]

  1. Roger de la Fresnaye

    Dati in input 7 numeri con due cifre decimale, calcolane la media

  2. Calcolare l’area di un triangolo data la sua base e l’altezza
  3. Sapendo che un gestore telefonico fa pagare 0,20 centesimi al minuto, per una telefonata di 3m e 30 secondi quando si dovrà pagare?
  4. dati i coefficienti numerici di un’equazione di primo grado fornire la relativa soluzione
  5. Dati tre numeri provare ad ordinarli dal più piccolo al più grande.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: esercizi sul casting e sulle istruzioni di input ed output[:]

[:it]

  1. David Hettinger

    Scrivere un programma che chieda in input due valori interi e che mostri a video la loro divisione:

    1. senza fare il casting
    2. facendo il casting (ossia mostrare i numeri decimali)
  2. un gruppo di ragazzi vince un certo numero di gettoni in una sala giochi e decide di dividersi i gettoni in parti uguali, lasciando il resto della divisione come riserva per l’intero gruppo. (Usare l’operatore % per calcolare il resto)
  3. Mostrare a video il seguente testo andando a capo opportunamente con il corretto comando:

” Cercare di arrivare ad una laurea senza studiare

è come andare in bicicletta senza le ruote”.

4. Scrivere il programma che, letto un numero intero, calcoli e scriva la sua metà;

5. Dato il raggio del cerchio di base di un cilindro e la sua altezza, calcolare il peso del cilindro sapendo che la sostanza di cui è composto ha peso specifico =3.4 g/cm3

6. Data una parabola, scrivere le sue coordinate del vertice.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: istruzioni di ingresso ed uscita[:]

[:it]

David Hettinger

La lettura di dati (input) è rappresentata dall’operatore >>.

La scrittura dei dati (output) è rappresentata dall’operatore >>.

La sintassi di un’istruzione di input è:

unità_input>>variabile;

La sintassi di un’istruzione di output è:

unità_putput<<variabile;

L’unità di input standard è la tastiera e si indica con la parola cin (console input):

cin>>raggio;

L’unità di output standard è il video e si indica con la parola cout (console output):

cout<<area;

Le definizioni della tastiera (cin) e del video (cout) sono memorizzate nel file iostream delle librerie di I/O del linguaggio. Questo significa che per poter utilizzare gli operatori di I/O sulle periferiche standard è necessario includere tale file all’inizio del programma:

#include <iostream>

Se si vogliono mostrare a video delle stringhe si usa il comando:

cout<<“Sono una stringa”;

se voglio andare a capo dopo aver mostrato una stringa si possono usare indifferentemente questi due comandi:

cout<<“Vado a capo”<<endl;

oppure

cout<<“Vado a capo \n”;

endl sta per end line

mentre \c viene detta sequenza di escape.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: il casting[:]

[:it]

David Hettinger

Per casting si intende un’operazione volta a trasformare un valore di un certo tipo in un valore di un altro tipo.

Ad esempio il seguente programma fa sì che una variabile di tipo float venga salvata in una variabile di tipo int.

#include<iostream>
using namespace std;
int main()
{
int a=5;
float b=3.56;
a=b;
cout<<a;
return 0;
}

Il casting è l’azione che consente di trasformare la rappresentazione di un dato dal suo tipo originale a un altro.

La sintassi per il cambio di tipo è la seguente:

(tipo) espressione;

ad esempio

b = (int) a;

oppure in alcune versioni più recenti:

b= static_cast <int> (a);

eccone l’applicazione:

#include<iostream>
using namespace std;
int main()
{
/*****************************************/
/* conversione implicita */
/*****************************************/
int a=5;
int d,e;
float b=3.56;
a=b;
cout<<a<<endl;
/******************************************/
/* primo esempio di conversione esplicita */
/******************************************/
cout<<“Altro esempio”<<endl;
d=(int)b;
cout<<d<<endl;
/*******************************************/
/* secondo esempio di conversione esplicita */
/******************************************/
cout<<“altro esempio con la funzione static_cast”<<endl;
e=static_cast<int>(b);
cout<<e;
return 0;
}

Tale conversione comincia a diventare molto importante quando si eseguono delle divisioni tra interi e bisogna tener conto se la divisione fornisce ancora un intero o un numero decimale di cui poi tenere conto nel proseguo del programma stesso.

Ad esempio in questo programma che differenza intercorre tra la prima parte del programma e la seconda?

 

#include<iostream>
using namespace std;
int main()
{
int a,b;
float c;
cout<<“Inserisci il primo numero intero\n”;
cin>>a;
cout<<“Inserisci il secondo numero intero\n”;
cin>>b;
cout<<“Nessun casting: “<<a/b<<endl;
c=(float)a/b;
cout<<“Casting: “<<c;
return 0;
}[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Codice a controllo d’errore: codice di Hamming(7,4)[:]

[:it] 

David Hettinger

Il codice di Hamming permette di correggere gli errori nella trasmissione inserendo della ridondanza nel codice trasmesso.

Nel caso specifico il codice di Hamming(7,4) inserisce in un codice di 4 bit, 3 bit in più appunto di ridondanza necessari per verificare e correggere il codice trasmesso.

In questo codice l’errore che si corregge è 1 di un bit e si parla quindi di distanza di Hamming di valore 1.

Al codice trasmesso si aggiungono dei bit di parità alla posizione 1, 2, 4, ricapitolando alla posizione:

Il bit 1 controlla la parità dei bit 1, 3, 5, 7

Il bit 2 controlla la parità dei bit 2, 3, 6, 7

Il bit 4 controlla la parità dei bit 4, 5,6, 7

Schematicamente ho quindi:

Si nota che:

  • il bit di parità 1 (p1) copre i bit 1 – 3- 5- 7
  • il bit di parità 2 (p2) copre i bit 2 – 3- 6- 7
  • il bit di parità 3 (p3) copre i bit 4 – 5 – 6- 7

Per leggere la tabella si deve andare a vedere la riga del Bit#

Il Bit 1 è controllato da p1

Il Bit 2 è controllato da p2

Il Bit 3 è controllato da p1 e p2

Il Bit 4 è controllato da p3

Il Bit 5 è controllato da p1 e p3

Il Bit 6 da p2 e p3

il Bit 7 da p1, p2 e p3.

In termini operativi si controllano p1, p2 e p3

p1 p2 p3
ok ok ok

messaggio corretto

p1 p2 p3
no ok ok

vedo che solo p1 è errato allora correggo il bit1

p1 p2 p3
no ok no

 

p1 e p3 sono sbagliati.

ALGORITMO

Cerco la colonna con il segno di spunta verde su p1 e p3–> colonna 5 ossia relativa al Bit 4

Ossia partendo dalla riga con la spunta in verde si vede il relativo bit errato

Esempio:

Devo trasmetter 0101

il messaggio trasmesso sarà:

P1 P2 M1 P3 M2 M3 M4
0 1 0 0 1 0 1
1 2 3 4 5 6 7

in quanto il P1 controlla la posizione 1357

P2 controlla la posizione 2367

P3controlla la posizione 4567

Mi arriva il seguente messaggio

P1 P2 M1 P3 M2 M3 M4
0 1 1 0 1 0 1
1 2 3 4 5 6 7

P1 è errato!

P1 P2 M1 P3 M2 M3 M4
0 1 1 0 1 0 1
1 2 3 4 5 6 7

P2 è errato!

P1 P2 M1 P3 M2 M3 M4
0 1 1 0 1 0 1
1 2 3 4 5 6 7

P3 è corretto.

Siccome P1 e P2 sono errati dalla tabella vedo che è errato il bit 3 e lo correggo da 1 a 0! Ed ho il messaggio di partenza corretto senza richiedere la ritrasmissione.

Il codice di Hamming(7,4) corregge solo 1 bit e si chiama appunto distanza 1. Non corregge gli errori doppi.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]GPOI: Test sulla pianificazione e sviluppo dei processi e previsioni dei costi[:]

[:it]

Lars Meyer

[WpProQuiz 50][:]

Pubblicato in Senza categoria | 2 commenti

[:it]C++: compilare senza Geany[:]

[:it]

Claude Monet

Per compilare un programma non è obbligatorio avere un IDE particolare come Geany o BlueFish o chi più ne ha ne metta ma è sufficiente avere un editor standard come può essere notepad su windows.

Ad esempio su Linux si usa gedit

Esso si può usare o cercando dal Dash o aperto il terminale digitando gedid.

A questo punto si può digitare il programma e salvarlo con un opportuno nome.

Attenzione che il concetto di estensione, tanto caro al mondo windows, non è necessario nel mondo Unix che, purtroppo, alla fine lo sta copiando perdendo in parte la sua grande flessibilità ma forse anche complessità.

L’estensione di un file è quella parte del nome a destra del punto ad esempio:

pippo.cpp è un file con estensione cpp

pippo.phy è un file con estensione phy

Al termine si salva il file.

Per compilarlo si deve aprire un terminale e posizionarsi all’interno della directory in cui ho salvato il file.

Per fare questo si può seguire il post ABC di unix

Adesso per compilare il file si deve usare il seguente comando:

g++ -Wall -o nomeinuscita -g nomecpp

nomeuscita è il nome del file in output

nomecpp è il nome del file che ho salvato con il sorgente

se la compilazione è terminata correttamente lo si deve eseguire con il comando:

./nomeinuscita

 

FONDAMENTALE

Sotto Unix la lettera maiuscola e minuscola sono differenti per cui bisogna stare attenti a come si scrive.[:]

Pubblicato in Senza categoria | Lascia un commento