[:it]Python: operatori di relazione e logici[:]

[:it]Gli operatori di confronto  sono

== confronto se a è uguale a 5 allora …
> maggiore se 3 è maggiore di 7 allora…
< minore se 3 è minore di 7 allora…
<= minore uguale se 3 è minore o uguale a 7 allora…
>= maggiore uguale se 3 è maggiore o uguale a 7 allora…
!= diverso se 3 è diverso da 7 allora…

I connettivi logici sono

and and se a è uguale a 3 e b uguale a 7 allora…
or or se b è uguale 3 oppure è uguale a 7
! not se b non è 3

Gli operatori logici sono fondamentali ad esempio negli IF

se devo ad esempio implementare una condizione solo se entrambe sono soddisfatte allora uso l’and.

Se x<10 e x>6 allora sei sufficiente si deve scrivere in questa maniera:

 

n=16
if (n<10) or (n>6):
print(“Sei sufficiente”)

IMPORTANTE

Si è usato l’OR in quanto un valore non può essere entrambi ma può essere o minore di 10 o maggiore di sei![:]

Pubblicato in Senza categoria | Lascia un commento

[:it]C++: operatori di relazione e logici[:]

[:it]Gli operatori di confronto  sono

== confronto se a è uguale a 5 allora …
> maggiore se 3 è maggiore di 7 allora…
< minore se 3 è minore di 7 allora…
<= minore uguale se 3 è minore o uguale a 7 allora…
>= maggiore uguale se 3 è maggiore o uguale a 7 allora…
!= diverso se 3 è diverso da 7 allora…

I connettivi logici sono

&& and se a è uguale a 3 e b uguale a 7 allora…
|| or se b è uguale 3 oppure è uguale a 7
! not se b non è 3

Gli operatori logici sono fondamentali ad esempio negli IF

se devo ad esempio implementare una condizione solo se entrambe sono soddisfatte allora uso l’and.

Se x<10 e x>6 allora sei sufficiente si deve scrivere in questa maniera:

#include<iostream>
using namespace std;

int main()
{
int n;
n=7;
if ((n<10) || (n>6))
   cout<<“Sei sufficiente”;

return 0;
}

 

IMPORTANTE

Si è usato l’OR in quanto un valore non può essere entrambi ma può essere o minore di 10 o maggiore di sei![:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Operatori logici, AND, OR, XOR[:]

[:it]

Stefan Ambs

Nella logica si introducono degli operatori che sono utilizzati sia in analisi matematica che nella programmazione.

Operatore AND può essere assimilato ad una moltiplicazione mentre l’OR ad una somma.

AND

La tabella della verità dell’AND è la seguente:

A B A \wedge B
V V V
V F F
F V F
F F F

oppure anche in questa maniera:

A B A \wedge B
1 1 1
1 0 0
0 1 0
0 0 0

Come si legge?

Se A è vero ed anche B allora A and B è vero

Se A è falso e B è vero allora A and B è falso

Se A è vero e B è falso allora A and B è falso

Se entrambi sono falsi allora A and B è falso.

Se lo si pensa nei termini di una moltiplicazione si ha:

1 * 1 =1

1*0=0

0*1=0

0*0=0

OR

La tabella della verità dell’OR è la seguente:

A B A \vee B
V V V
V F V
F V V
F F F

oppure anche in questa maniera:

A B A \vee B
1 1 1
1 0 1
0 1 1
0 0 0

Come si legge?

Se A è vero ed anche B allora A or B è vero

Se A è falso e B è vero allora A or B è vero

Se A è vero e B è falso allora A or B è vero

Se entrambi sono falsi allora A or B è falso.

Se lo si pensa nei termini di una somma si ha:

1 + 1 =1 (lo si pensi in binario)

1+0=0

0+1=0

0+0=0

La differenza tra OR e AND?

Vado al cinema solo se vengono Paolo e Mario (AND)

Vado al cinema se viene Paolo o Mario (OR)

XOR

Un altro operatore che si usa è l’operatore XOR nell’ambito dell’elettronica ma anche nell’ambito della crittografia.

Si utilizza la seguente tabella della verità:

A B A\oplus B
1 0 1
0 1 1
0 0 0
1 1 0

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java: conversione dati immessi da tastiera[:]

[:it]

Nawroski

Java ha una gestione più complessa rispetto al C++ nella gestione dell’immissione dei dati da tastiera.

Inoltre tutti i dati vengono sempre gestiti inizialmente come stringhe e quindi successivamente convertiti nel dato più opportuno del programma.

import java.io.InputStreamReader;
import java.io.BufferedReader ;
import java.io.IOException;

 

public class rettangolo {
public static void main(String[] args) {

double base, altezza,area;
/*
* legge da tastiera la lunghezza del vettore
*/
System.out.println(“inseirsci il valore della base del rettangolo”);
base =0;
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try {
base = Double.parseDouble(input.readLine());
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println(“inseirsci il valore dell’altezza del rettangolo”);
altezza=0;
BufferedReader input1 = new BufferedReader(new InputStreamReader(System.in));
try {
altezza = Integer.parseInt(input1.readLine());
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println(“Area risulta”);
area=base*altezza;
System.out.println(area);
}
}

 

Questo programma ha numerosi punti di approfondimento:

altezza = Integer.parseInt(input1.readLine());

Esso converte una stringa in un intero.

base = Double.parseDouble(input.readLine());

converte una stringa in double

Altri tipi di casting sono:

lungo l = Long.parseLong ( Stringname )

short s = Short.parseShort ( Stringname )

byte b = Byte.parseByte ( Stringname )

float f = Float.parseFloat ( Stringname ) 

se un utente immette un tipo di dato sbagliato si usa il codice:

catch (Exception e) {
e.printStackTrace();

come da esempio precedente.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Java[:]

[:it]Java è un linguaggio di programmazione orientata agli oggetti sviluppato sotto la guida di James Gosling in Sun Microsystem (in seguito acquisita da Oracle Corporation).

La sintassi di base del linguaggio (strutture di controllo, espressioni, …) è volutamente simile a quella del linguaggio C/C++ allo scopo di favorire il passaggio a Java dei programmatori che lo utilizzavano in precedenza.

E’ un acronimo il suo nome?

JAVA = Just Another Vacuum Acronym

oppure perché i creatori si trovavano in un caffè dove discutevano del progetto e la qualità del caffè che bevevano era Java omonimo dell’isola? Poco male.

La sua diffusione nasce nel 1995 grazie all’espansione su scala mondiale della rete internet e della necessità di programmare in ambiente web.

I punti di forza sono:

  • orientato agli oggetti: Java è un linguaggio object oriented e in quanto tale permette di sviluppare software che modella la realtà mediante entità (oggetti) dotate di specifiche d’uso e di funzionamento definite (classi); in ogni caso Java non è un linguaggio object-oriented “puro”; per esempio i valori dei dati primitivi, come i numeri interi, non sono oggetti.
  • portabilità: il motto dei progettisti Java è stato “Write once, run everywhere”: l’idea di questo approccio è legata alla tecnologia JVM (Java Virtual Machine) o JRE (Java Runtime Enviroment). Il compilatore Java, infatti, non produce codice eseguibile per una specifica piattaforma hardware/software, ma il cosiddetto bytecode, che viene interpretato dalla JVM. Ogn piattaforma hardware/software ha una propria JVM specific, per cui il bytecode può essere indifferentemente eseguito su ciascuna piattaforma perché per ognuna di esse è la macchina virtuale a farsi carico della su esecuzione.
  • disponibilità di strumenti e librerie per la programmazione
  • sicurezza nell’esecuzione del codice: la JVM è limita l’esecuzione del sorgente all’interno del suo ambiente.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]DVB-T2 con codec HEVC[:]

[:it]

Kandindky

Il DVB-T2 è acronimo di Digital Video Broadcasting – Terrestrial.
Il sistema prevede la trasmissione di un flusso audio/video digitale della famiglia MPEG-2, che é un metodo di compressione dei dati video.

MPEG-2  (Moving Pictures Experts Group) è un sistema di codifica di sorgente che permette delle immagini televisive ad alta qualità con un bitrate tra i 4 e i 9 Mbps.

Lo standard MPEG-2 utilizza tecniche di compressione basate sulla riduzione della ridondanza spaziale e temporale della sequenza video.

La ridondanza spaziale è ridotta tramite tecniche come la Trasformata discreta del coseno (Discrete Cosine Transform, DCT), quella temporale è ridotta tramite motocompensazione: tale metodologia prende il nome di tecnica ibrida a trasformata.

Il Codec HEVC (High Efficiency Video Coding) è una codifica di compressione del canale.

Il DVB-T2 é un miglioramento di questa tecnologia e sarà destinata a fornire la miglior ricezione possibile a ricevitori stazionari (fissi) e portatili (cioè unità trasportabili, ma non completamente mobili) usando gli apparati d’antenna attuali.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Subnettizazzione di un indirizzo IP[:]

[:it]L’indirizzo IP viene diviso in:
– Indirizzo rete Internet (IP);
– Indirizzo rete fisica;
– Indirizzo host.

• L’ampiezza dei campi di netid e hostid può essere divisa in modo dinamico mediante la procedura di
netmask.
• La netmask è composta :
– bit uguale a 1 : in corrispondenza dei campi di netid e subnet;
– bit uguale a 0 : in corrispondenza dei campi di hostid.
• La netmask è rappresentata in binario o in decimale.
– Esempio : la netmask 11111111 11111111 11111111 00000000 corrisponde all’indirizzo 255.255.255.0 ed indica che il campo dell’host coincide con l’ultimo byte

Le subnet mask servono per comunicare tra gli host della stessa rete senza l’utilizzo di un router

In pratica un host per comunicare con un atro host della stessa rete effettua l’operazione di messa in AND o anding processing con la sua subnet mask.

• Dato un un indirizzo IP , per estrarre l’indirizzo della rete e del subnet si effettua un’operazione AND bit a bit tra l’indirizzo IP e la netmask.

• Esempio:

Consideriamo l’indirizzo IP 128.10.2.2

  • lo si converte in binario: 100000000 00001010 00000010 00000010
  • utilizza la netmask 255.255.250.0 e la si converte in 11111111 11111111 1111101000000000
  • si effettua l’operazione AND tra le due sequenze ottenendo la sequenza binaria 10000000 00001010 00000010 00000000 e quindi l’indirizzo 128.10.2.0.

Per cui l’indirizzo IP 128.10.2.2 appartiene alla rete 128.10.2.0 e può comunicare con tutti gli host di tale rete.

Esistono due principali notazioni attraverso le quali è possibile indicare un indirizzo IP:

– Indicando espressamente la subnet mask:
49.22.5.3 con subnet 255.0.0.0 – Classe A;
172.16.20.5 con subnet 255.255.0.0 – Classe B;
192.168.15.4 cin subnet 255.255.255.0 – Classe C;
– Indicando i bit a 1 che compongono la subnet mask:
49.22.5.3/8 – Classe A; ossia 255.0.0.0 in quanto 255 in binario è 11111111.0.0.0 cioè 8 bit ad uno
172.16.20.5/16 – Classe B;   ossia 255.255.0.0 in quanto ho 11111111 11111111 0 0 ossia 16 bit a 1 nella subnet
192.168.15.4/24 – Classe C; ossia 255.255.255.0 ossia 1111111 1111111 1111111 ossia 24 bit posti ad uno.

 

Se effettuando un ping ho come risultato 172.16.5.76/12 significa che nella subnet ho 12 bit ad uno ossia

11111111 11110000 ossia in decimale 255.240.0.0.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Indirizzi privati e sottoreti IP[:]

[:it]• Gli indirizzi IP privati devono essere scelti in modo da non creare
confusione con gli indirizzi IP pubblici, per questo essi sono stati
standardizzati ( RFC 1597 e RFC 1918).
• Si possono utilizzare le seguenti classi di indirizzi privati:

Classe A (una sola rete) : rete 10.x.x.x
Classe B (16 reti adiacenti): reti 172.16.x.x … 172.31.x.x
Classe C (256 reti adiacenti) : reti 192.168.0.x … 192.168.255.x

SOTTORETI ip

• Per ridurre il numero degli indirizzi di rete necessari per il funzionamento di Internet, si può utilizzare la tecnica di subnet addressing o subnetting, che consente di condividere lo stesso indirizzo di rete IP a più reti fisiche.

Esempio:
• Il router R utilizza la stessa rete in classe B 128.10.0.0 per le due reti fisiche.
• Tutti i router vedono un’unica rete 128.10.0.0
• Il terzo byte dell’indirizzo ( generalmente riservato a hostid) viene utilizzato da R per distinguere le
due reti.
• Per instradare il pacchetto R esamina i primi tre byte dell’indirizzo.

 

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Struttura del modello TCP/IP – Classi di indirizzi[:]

[:it]I dati sono divisi in:
– pacchetti : il protocollo TCP numera i pacchetti e provvede ad inserire in ogni pacchetto un header, che contiene le informazioni necessarie per realizzare il servizio.
– datagram:il protocollo IP trasforma il pacchetto TCP in un datagram e inserisce un header, che contiene le informazioni necessarie ( quale ad esempio l’indirizzo del computer di destinazione) per trasferire l’informazione attraverso la rete.

Il modello TCP/IP può essere pensato suddiviso in tre livelli
• servizio di consegna dei datagram: viene svolto dal protocollo IP
• servizio di trasporto dei pacchetti: viene svolto dal protocollo TCP o UDP
• servizi applicativi: contiene i diversi programmi applicativi utili per l’utente ( FTP, telnet,..)

IP

Funzioni svolte dal protocollo IP
• definisce il formato dei dati che vengono trasmessi all’interno della rete.
• realizza la funzione di routing, ovvero il meccanismo con cui si sceglie il percorso per la trasmissione dei dati.
• prevede una serie di regole che determinano come devono essere processati i pacchetti, come e quando devono essere generati i messaggi di errore e le condizioni per le quali un pacchetto deve essere scartato.

Chi fornisce gli indirizzi IP?

IANA–> Internet Assigned Numbers Authority

Formato Indirizzo IP
• L’indirizzo IP può essere suddiviso in due campi :
– indirizzo della rete ( netid): che identifica l’indirizzo su cui si trova l’utente;
– indirizzo del computer ( hostid) : che identifica un computer all’interno della rete.

Classi di indirizzi IP

Gli indirizzi IP possono essere divisi in 5 classi:

Classe A

  • il primo bit è sempre 0
  • utilizza 7 bit per netid e 24 per hostid.
  • possono esistere un numero massimo di 2^{7}=128 reti, ciascuna delle quali può contenere al massimo 2^{24}= 15.777.216 host.
  • Riservati a grandi organizzazioni
  • Sono quelli che hanno il primo numero compreso tra 0 e 127

Classe B

  • i primi due bit sempre 10
  • utilizza 14 per bit per netid e 16 per hostid.
  • possono esistere 2^{14}=16384 reti, ciascuna delle quali può contenere al massimo 2^{16}=65536 host
  • Riservati a medio-grandi organizzazioni
  • Indirizzi di classe B con rappresentazione decimale: sono quello che hanno il
    primo numero compreso tra 128 e 191

Classe C

  • i primi tre bit sempre 110
  • utilizza 21 bit per netid e 8 bit per hostid.
  • possono esistere 2^{21}=2097152 reti, ciascuna delle quali può contenere al massimo 2^{8}=256 host.
  • Riservati a piccole organizzazioni
  • Indirizzi di classe C con rappresentazione decimale: sono quello che hanno il
    primo numero compreso tra 192 e 223

Classe D

è riservata ad applicazioni di multicast. Non hanno maschere di rete.

Classe E

definita per usi futuri. Sono facilmente riconoscibili in quanto il primo campo
dell’indirizzo è compreso tra 240 e 255. Non hanno maschere di rete.

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]ARP:Address Resolution Protocol[:]

[:it]

Kandiskij

E’ un protocollo di rete all’interno dell’IP v4, il suo compito è quello di mappare (far corrispondere) l’indirizzo IP di 4 Byte, con l’indirizzo MAC di 6byte.

Nell’IP v6 si utilizzerà NDP Neighbor Discovery Protocol.

Il protocollo inverso che mappa da indirizzo MAC a Indirizzo IP all’atto della configurazione del PC in Rete è detto RARP.

Per inviare un pacchetto IP ad un calcolatore della stessa sottorete, è necessario incapsularlo in un pacchetto di livello datalink, che dovrà avere come indirizzo destinazione il MAC Address del calcolatore a cui lo si vuole inviare. ARP viene utilizzato per ottenere questo indirizzo.

Se il pacchetto deve essere inviato ad un calcolatore di un’altra sottorete, ARP viene utilizzato per scoprire il MAC Address del gateway o del router.

Ma come funziona?

L’host o terminale di rete che vuole conoscere il MAC address di un altro host, di cui conosce l’indirizzo IP, invia in broadcast una richiesta ARP (pacchetto di ARP Request) contenente il proprio indirizzo MAC e l’indirizzo IP del destinatario di cui si vuole conoscere il MAC Address.

Tutti i calcolatori della sottorete ricevono la richiesta: in ciascuno di essi il protocollo ARP verifica, confrontando l’IP proprio con quello inviato, se viene richiesto il proprio indirizzo MAC.

L’host di destinazione che riconoscerà il proprio indirizzo IP nel pacchetto di ARP-request, provvederà ad inviare una risposta (ARP Reply) contenente il proprio MAC direttamente all’host mittente(quindi in unicast).

NOTA PRATICA:

Il comando per visualizzare la tabella arp immagazzinata nella cache locale nei sistemi Windows, Mac e GNU/Linux è arp -a.

È anche possibile impostare manualmente degli indirizzi IP definiti statici nella tabella ARP, tramite il comando arp -s [IP address] [indirizzo fisico]

Bisogna osservare che il protocollo ARP viene usato tutte le volte che un host collegato ad una LAN deve inviare un messaggio ad un host sulla stessa LAN di cui conosce unicamente l’indirizzo di livello rete (IP), quindi lavora solo in subnet locali (non può oltrepassare router e raggiungere così una sottorete differente da quella dove si è originata la richiesta).

ARP Spoofing

La costruzione ad arte di un pacchetto ARP ingannevole è semplice sia su Linux che su Windows, e infatti questa è una tra le maggiori vulnerabilità delle reti locali. Inviando ad un host un ARP REPLY opportunamente contraffatto possiamo modificare la sua cache ARP, ottenendo ad esempio la possibilità di intercettare dati destinati ad altri host. Questa tecnica è detta ARP Spoofing o ARP cache Poisoning (in inglese, avvelenamento della cache ARP).[:]

Pubblicato in Senza categoria | Lascia un commento