Introduzione a Linux

Ciao!
Come puoi vedere dal messaggio di benvenuto il nostro è un gruppo di utenti Linux, ma di cosa si tratta esattamente?
Giusta domanda .
Vediamo di rispondere in maniera sintetica e chiara: quando acquistiamo un computer noi siamo abituati a vederlo già istruito a fare qualcosa, insomma dandogli da mangiare un pò di corrente a 220 volts, lui si accende e ci fa vedere qualche cosa sullo schermo quali scritte, finestre od altro.

Bene, se al suo interno non ci fosse un sistema operativo, credo che al massimo avremo una specie di lampadina con grandi capacità di calcolo ma praticamente inutilizzate; per fortuna però, normalmente chi costruisce i computer ci mette già un sistema operativo che di norma è un prodotto commerciale e si può usare solo con una licenza che viene pagata ormai compresa nel prezzo del pc.
Esistono però altri sistemi operativi e fra questi c’è “LINUX”: ehmmm ad essere onesti linux è più pecisamente il kernel del SO ossia il software che interfaccia la macchina al suo programmatore, poi di supporto ci sono tutti gli altri programmi ausiliari quali editor di testo compilatori ed altre amenità.
Ah ! Dimenticavo fra le sue caratteristiche c’è il fatto che non serve una licenza per usarlo … si è gratuito e libero!! Strano ma vero.
Normalmente comunque,e quindi non spaventatevi, l’utente finale non avrà a che fare con sto … kernel… , ma ne vedrà i risultati nei comportamenti del suo pc.
Ma avremo modo di scrivere più approfonditamente in altre pagine di Linux ed del suo fondatore Linus Torvalds.

E voi ora mi chiedereste volentieri : “Ok, ho capito che Linux è il sistema operativo, che comanda il computer, che è pure gratis, che però io non lo uso direttamente…. ehmmm ma allora io che cosa uso per scrivere i miei documenti per collegarmi ad internet, insomma per usare decentemente il mio ferro?” .
“Don’t worry, be happy!” diceva una canzone, infatti generalmente ormai non ci si riferisce direttamente al pinguino (linux lo chiamiamo anche così, visto che il suo logo è appunto un … pinguino) quanto piuttosto ad una “distribuzione linux” ossia ad un pacchetto di software che comprendono oltre al SO anche tutti gli altri programmi che vengono normalmente utilizzati su di un computer e che voi tutti conoscete: dal browser al client di posta, dal ritocco fotografico al cad e così via.

Le distribuzioni sono molte e non c’è un motivo particolare per indicare quale sia in assoluto la migliore: entrano in gioco molte cose quali le risorse hardware disponibili o i gusti personali per una grafica o le applicazioni installate ed altro ancora.
Vi invito pertanto a farvi un giro in questo sito: distrowatch.com/ qui potrete farvi un’idea di quanto è vasto il mondo delle distribuzioni linux.

Se siete alle prime armi le più consigliate sono senz’altro: Ubuntu, Mint, Fedora e Mandriva; sono sicuro che con l’andar del tempo poi troverete la soluzione per voi migliore.
Alla fine quindi vi ritrovere in un ambiente (virtuale, quello digitale) che vi sarà del tutto famigliare diverso solo graficamente da quello che probabilmente state usando ora.
“E allora perchè dovrei cambiare ? Quello che ora uso funziona o comunque fa quello che gli chiedo”
Vediamo…..  uhmmmm…..  già giusto….. perchè cambiare?

Trovato!

  • E’ gratuito
  • E’ a sorgente aperto (open source) ossia posso vedere com’è fatto modificarlo a mio piacimento e ridistribuirlo
  • E’ liberamente copiabile
  • Per i punti di cui sopra, basati su di una precisa filosofia culturale che valorizza la libera circolazione delle idee e della conoscenza in ambito informatico, educa all’abbandono della pratica della pirateria informatica
  • Il solo fatto di installarlo prevede per l’utente la possibilità di poter operare una scelta su cosa deve usare e non gestire una cosa imposta al momento dell’acquisto di un computer: insomma se devi comperare una macchina di solito la scegli giusto? O quando entri in un concessionario questo ti da un’ auto a caso tu la paghi gli dici grazie ed esci?
  • E’ meno attaccabile dai virus che circolano in rete (quasi immune direi)

Potrei trovare ancora qualche ulteriore punto, ma credo che i sei sopracitati siano già sufficienti o comunque interessanti tanto quanto basta per provare LINUX non credi?

TestDisk

Un virus vi ha cancellato la vostra partizione? La partizione non è più leggibile da Windows? Per sbaglio avete cancellato voi la partizione?

Beh allora in questo caso, di TestDisk non ne potrete fare di meno…

 Test Disk è un utility, molto utile per il recupero di partizioni cancellate, e non più accessibili dal sistema operativo. C'è da dire che è completamente Freeware, e Opensource, uttilizzabile sia in ambiente Windows, Dos, Linux che MAC.

L'unica pecca di questo straordinario programma è l'interfaccia, infatti ancora testuale, che però non vuol dir nulla in termini di potenzionalità. Infatti, grazie ad esso, sono riuscito a recuperare ben 20 Gb (Un Intero Hard Disk) pieno zeppo di tutte cose a me più care, salvandomi incredibilmente da uno strangolamento :).

Download, (ultima Relase)

Guida a TestDisk (Ben fatta, e molto utile!)

Peazip

Peazip è un gestore di archivi compressi scritto interamente in con freepascal; è molto veloce, occupa poco spazio su disco e soprattutto è open source. Supporta numerosi formati tra cui archivi ISO, ISO compresse e zip anche in ambiente linux. Usa un algoritmo molto più veloce della maggioranza dei programmi concorrenti e può essere usato su “macinini da caffè” senza nessun problema o rallentamenti. L’interfaccia grafica è molto intuitiva ed ordinata:ha poche funzioni ma utili, supporta la navigazione a schede consente di applicare filtri alle ricerche, ma soprattutto è in ITALIANO.

Formati supportati

Lettura/Scrittura

7Z, 7Z- sfx, ARC/WRC, BZip2/TBZ, Custom (definito dall’utente), GZip/TGZ, LPAQ1/5/8, PAQ8F/JD/L/O, PEA, QUAD/BALZ, split (.001), TAR, ZIP

Solo lettura

ACE, ARJ, CAB, COMPUND (MSI, DOC, PPT, XLS), CHM, CPIO, DEB, ISO CD/DVD, archivi Java (JAR, EAR, WAR), LZH, LZMA, NSIS installers, tipi file di OpenOffice, PET/PUP (installers di Puppy Linux), PAK/PK3/PK4, RAR, RPM, SMZIP, U3P, WIM, XPI, Z

Link utili

qBittorrent

qBittorrent è un client BitTorrent P2P open source multipiattaforma scritto in C++, sviluppato da Christophe Dumez della Università di tecnologia di Belfort-Montbéliard, in Francia. Si basa su libtorrent e Qt4.

L’idea di fondo di questo client è di essere leggero e pratico quanto la sua controparte in Windows.

QBitTorrent è veloce e semplice da utilizzare grazie all’ interfaccia molto intuitiva che presenta pulsanti ben dimensionati e strumenti divisi in schede.

Ci sono inoltre tre caratteristiche estremamente interessanti:

  1. Possibiltà di creare direttamente i file .torrent
  2. Possibilità di attivare un’interfaccia web potente e molto simile all’ originale! (La “figata” è che si integra perfettamente con servizi come DynDns)
  3. Funzione di ricerca integrata: forse la funzione più potente è questa; funziona egragiamente ed è molto simile a quella presente sul buon vecchio mulo. E’ anche possibile filtrare i risultati per categoria  e aggiungere plugin per supportare altri motori di ricerca torrent.

Inoltre non mancano funzioni essenziali come filtri IP, spegnimento automatico, velocità alternativa.
Inoltre offre il controllo avanzato sul peertrackers, supportando anche standard come UpnP e IPv6. E per chi non può fare a meno del torrent anche mentre lavora o gioca sono disponibili:

  • Supporto avanzato RSS con filtri download (inc. regex)
  • Pianificazione dell’uso della banda (funziona egregiamente)

Pro:

  • Versatile e leggero
  • Funzione di ricerca integrata
  • Interfaccia web
  • Non manca nulla
  • Non c’è niente di superfluo

Contro:

  • sofrre ancora qualche piccolo problema di stabilià (ma sono eventi estremamente rari)

Linki utili:

Guida al Pascal

Il Pascal è un linguaggio di programmazione molto facile da comprendere e, per certi tratti, è più semplice del BASIC. Ma ora bando alle ciance e iniziamo con la programmazione vera e propria….

Prepariamo la cassetta degli attrezzi

I compilatori che si possono uttilizzare non sono molti; eccone uno gratuito:
Freepascal disponibile sia per FINESTRE :b che per LINUX e per quasi la totalità dei processori

Una volta installato e avviato si presenterà un’ interfaccia molto comprensibile.

Compariranno vari menu, ma quelli pricipali sono tre: File, Run, Compile.

Il primo è formato da New, per crere un nuovo documento di lavoro; Load-open, per aprire lavori già salvati; Save, per salvare i nostri lavori. Spesso può risultare utile conoscere il comando Destination (nel menu Compile) per decidere se compilare il programma nella Ram oppure in un file eseguibile (nome_programma.exe).

Una volta compilato il programma, però, dobbiamo eseguirlo, e perciò è necessario selezionare dal menu Run il comando Run.

Funzioni e operatori di base

La prima cosa da scrivere in un programma in PASCAL è il nome che vogliamo dare alla nostra applicazione.

Procediamo in questo modo:


PROGRAM guida_al_pascal;

L’operatore PROGRAM va sempre seguito dal nome che abbiamo scelto per il nostro codice.

Nota bene: Teniamo a mente che dopo ogni riga di codice va immesso il Punto e virgola(;), altrimenti al momento della Compilazione del codice ci verrà restituito un errore. L’unica riga di programma in cui non va scritto il punto e virgola è quella contenente il comando BEGIN che analizzeremo adesso e in altri casi particolari.

I secondi comandi che andiamo ad analizzare sono BEGIN, che serve ad iniziare l’algoritmo o procedimento risolutivo, e END, che termina l’algoritmo.(notare che END va sempre seguito dal punto e non dal punto e virgola).

Mettiamoci al lavoro.

PROGRAM guida_al_pascal; {riga di intestazione}
BEGIN {inizio programma}
procedimento risolutivo;
END. {fine programma}

Per ora tutto dovrebbe funzionare però mancano ancora degli operatori indispensabili al funzionamento del programmma che affronteremo nella prossima sezione.

NB: In questo stralcio di programma abbiamo introdotto i commenti al codice che sono racchiusi dalle parentesi graffe (non è l’unico modo di commentare il programma ma è sicuramente il più efficace… per chi non lo sapesse in Windows le graffe si aprono con alt+123 e si chiudono con alt+125)

Riassunto
In sostanza il codice scritto in Pascal può essere suddiviso in tre parti distinte:
Il BLOCCO D’INTESTAZIONE che contiene il nome del programma
Il BLOCCO DELLE DICHIARAZIONI in cui si dichiarano le variabili e la loro tipologia con il comando VAR di cui ci occuperemo ora e le costanti con il comando CONST.
La SEZIONE ESECUTIVA in cui si scrive l’algoritmo

Risolvere un problema

Per cominciare a risolvere dei semplici problemi abbiamo bisogno di introdurre un nuovo comando: VAR. Questo comando serve per definire quali sono le variabili di programma che possono essere di tre tipi:
INTEGER (numeri interi positivi e negativi)
REAL (numeri reali positivi e negativi)
BYTE (numeri interi)
WORD (numeri interi)
STRING[x] (stringa di testo; la x indica il numero di caratteri massimi che deve essere scelto da noi)

INTEGER é una categoria di numeri che vanno da -32767 a +32768. Ciò significa che se se usiamo la classe INTEGER per sommare 1 o più a 32768 (32768+1) il risultato non sarà 32769 ma bensì -32767; questo significa che ogni numero non compreso tra i suddetti estremi produce una situazione che in termini tecnici ciene chiamata overflow (traboccamento). 32768 è una costante indicata con MAXINT (massimo degli interi).

Per il momento ci limiteremo ad adoperare la classe INTEGER, le altre le tratteremo più avanti.

Supponiamo ora di voler calcolare il perimetro e l’area di un quadrato: per prima cosa dobbiamo individuare le variabili che ci serviranno per risolvere il problema. Sicuramente la prima è il lato (di cui dovremo inserire il valore da tastiera il valore da tastiera), poi ci sono il perimetro e l’area. Per cui:

PROGRAM perminetro_e_area_quadrato;
USES CRT;
VAR lato, perimetro, area: INTEGER;
BEGIN
CLRSCR;
READLN(lato);
perimetro:=lato*4;
area:=lato*lato;
WRITELN(perimetro);
WRITELN(area);
READLN
END.


NB: il suffisso +LN ordina al cursore di prepararsi a capo (WRITE–>WRITELN…); e il comando CLRSCR pulisce lo schermo ad ogni esecuzione

Per chiarire alcuni punti del programma è necessario chiarire nuovi comandi e operatori:
USES + metodo: CRT in questo caso—>TASTIERA,MONITOR;COLORI;
READLN + (nome variabile): inizializza la variabile da immettere da tastiera;
:= simile all’operatore aritmetico “=”;
WRITELN: comando che stampa a schermo ciò che è racchiuso fra parentesi; se volessimo inserirci del testo dovremmo racchiuderlo tra apici singoli;
READLN: serve per dare il tempo all’utente di leggere i risultati restituiti che altrimenti rimarrebbero sullo schermo una frazione di secondo. NB: se non si mette il punto e virgola non viene restituito errore;

Abbiamo anche introdotto uno degli operatori interi (*—>moltiplicazione);

Gli operatori della classe INTEGER sono:

  • + {somma}
  • – {differenza}
  • *  {prodotto}
  • DIV {quoziente della divisione euclidea fra due interi}
  • MOD {resto della divisione euclidea fra due interi}

NB: se in espressione sono presenti più di un operatore vengono utilizzati secondo le priorità

Esistono anche degli operatori che confrontano due numeri e restituiscono TRUE (vero) o FALSE (falso). Essi sono:

= Uguale

<> Diverso

< minore

> Maggiore

<= Minore uguale

>= Maggiore uguale

Se volessimo colorare i risultati che compaiono nel programma dovremmo ricorrere a due nuovi comandi:

TEXTCOLOR + (numero colore da 0 a 15);
TEXTBACKGRUOND + (numero colore da 0 a 7);

Essi sono da inserire prima di agni comando WRITELN a cui vogliamo colorare i risultati. ES:

......
TEXTCOLOR(0); {oppure textbackground o entrambi}
WRITELN('ciao');
TEXTBACKGROUND(4); {oppure textcolor o entrambi}
WRITELN ('riciao');
READLN
END.


Esempio pratico di programma con operatori interi

PROGRAM operatori_interi; {blocco d'intestazione}
USES CRT; {tastiera+monitor+colori}
VAR n1,n2,somma,differenza,prodotto,quoziente,resto:INTEGER; {dichiarazione delle variabili}
BEGIN {inizio programma}
CLRSCR; {clear screen}
WRITELN ('inserire il valore dei numeri');
READLN (n1,n2); {inizializiamo le variabili}
somma:=n1+n2; {somma delle due variabili}
differenza:=n1-n2; {diffrenza delle due variabili}
prodotto:=n1*n2; {prodotto delle variabili}
quoziente:=n1 DIV n2; {divisione delle variabili}
resto:=n1 MOD n2; {resto della divisione}
WRITELN ('la somma dei numeri è:',somma); {stampiamo a schermo i risultati}
WRITELN ('la diferenza dei numeri è:',differenza);
WRITELN ('il prodotto dei numeri è:',prodotto);
WRITELN ('il quoziente dei numeri è:',quoziente);
TEXTCOLOR (3); {diamo un po' di colore al resto...}
WRITELN ('il resto della divisione è:',resto); {stampiamo a schermo il resto che sarà colorato}
READLN {diamo il tempo per la lettura dei risultati}
END. {fine programma}

NB: per stampare a schermo i risultati abbiamo diviso quello che c’era fra parentesi in due parti:
una stringa di testo racchiusa tra apici;
la variabile da stampare a schermo;

Le due parti devono sempre essere separate dalla virgola

Funzioni dei numeri interi 

Le funzioni dei numeri interi non sono molte e sono semplici; motivo percui daremo solo un’infarinatura generale… Are you ready?

  • ABS: restituisce il valore assoluto;
  • SQR: quadrarto;
  • PRED: numero precedente;
  • SUC: numero successivo;

Esempio di funzioni di numeri interi

PROGRAM funzioni_intere;
USES CRT;
VAR numero,valore_assoluto,quadrato,radice_quadrata,precedente,successivo:INTEGER;
BEGIN
CLRSCR;
WRITELN ('inserire un numero');
READLN (numero);
valore_assoluto:=ABS(numero);
quadrato:=SQR(numero);
precedente:=PRED(numero);
successivo:=SUC (numero);
WRITELN ('valore assoluto=',valore_assoluto);
WRITELN ('quadrato=',quadrato);
WRITELN ('radice quadrata=',radice_quadrata);
WRITELN ('precedente=',precedente);
WRITELN (successivo=',successivo);
READLN
END.

I numeri reali

Cosa sono i numeri reali?

I numeri reali sono sempilicemente quella categoria di numeri (con cifre decimali) con intervallo che va da 2.9×10^-35 a 1.5 x 10^35. Il loro funzionamento non si discosta molto dalla categoria degli interi; infatti le differenze principali sono:

  • l’operatore “/” al posto di “DIV” per la divisione
  • non esiste la funzione “MOD” (ovvio no?)
  • i numeri vengono visualizzati in notazione scientifica (o esponenziale)
  • un po’ di funzioni in più

Esempio di codice con numeri reali

Mettiamo il caso di voler calcolare la circonferenza di un cerchio, procediamo come segue:

PROGRAM circonferenza del cerchio;
USES CRT;
VAR raggio,circonferenza:REAL;
BEGIN
WRITELN ('inserire il valore del raggio=?');
READLN (raggio);
circonferenza:=2*PI*raggio;
WRITELN ('circonferenza=',circonferenza);
READLN
END.

Commentiamo il codice assieme:

Il blocco di intestazione è sempre lo stesso, quello che è cambiato è il blocco delle variabili. Infatti le variabili sono enytrambe entrambe di tipo REAL.
Notiamo come quando eseguiamo il programma la circonferenza viene visualizzata in notazione esponenziale; ora almeno che non siate dei geni vi risulterà difficile leggere il numero, per ovviare a questo problema modifichiamo il comando WRITELN come segue:

...
WRITELN ('circonfernza=',circonferenza:10:3); ...

Ecco cosa abbiamo fatto: abbiamo assegnato alla variabile circonferenza 10 celle di memoria e 3 cifre decimali.

Naturalmente il numero di celle e cifre decimali possiamo deciderle secondo i nostri gusti personali.

NB: PI è una parola riservata del pascal che indica il pi greco, è un comando molto utile poichè risparmia al programmatore la fatica di immettere un numero con una caterba di cifre decimali 🙂
Funzioni dei numeri reali

  • SQR(x)————-quadrato di x—————- SQR(-2.5)= 6.25
  • SQRT(x)————radice quadrata di x——— SQRT(3.1415)= 1.77
  • ABS(x)————-valore assoluto di x——— ABS(-4.45)= 4.45
  • TRUNC(x)———–troncamento di x ———— TRUNC(14.7983)= 14
  • ROUND(x)———–arrotondamento di x———- ROUND(14.7983)= 15
  • INT(x)————-parte intera di x———— INT(-24.678)= -24

Naturalmente ora che sapete come si scrive un codice (e il funzionamento è sempre lo stesso) non starò qui a scrivere il

codice di esempio… mi limito solo a rammentarvi che le funzioni dei numeri reali producono errore se usate per i numeri interi 🙂

Work in progress!!!

Dizionario del Pascal

  • ABS(n)–> valore assoluto di un numero
  • AND –> operatore logico “et”
  • ARRAY –> vettore o matrice
  • BEGIN –> inizio
  • BOOLEAN –> boleana
  • CASE –> caso
  • CHAR –> carattere (character)
  • CLRSCR –> pulisce lo schermo (clear screen)
  • CONST –> costante (constant)
  • COS –> funzione coseno (cosinus)
  • DIV –> divisione tra numeri interi (divide)
  • DO –> esegui
  • ELSE –> altrimenti
  • END –> fine
  • FALSE –> falso
  • TRUE –> vero
  • FILE –> archivio
  • IF –> se
  • FUNCTION –> funzione
  • INPUT –> ingresso
  • OUTPUT –> uscita
  • INTEGER –> numeri interi da -32767 a +32768
  • REAL –> numeri reali da 2.9×10^-36 a 1.5 x 10^35
  • BYTE –> numeri interi da 0 a 255
  • WORD –> numeri interi da 0 a 65535
  • MAXINT –> massimo valore intero
  • MOD –> resto di divisione tra interi
  • NOT –> operatore logico “non”
  • OR –> operatore logico “oppure inclusivo”
  • PRED –> precedente
  • SUCC –> successivo
  • VAR –> variabile
  • WRITE(“) –> scrivi
  • WRITELN(“) –> scrive e va a capo
  • READ(var) –> leggi
  • READLN(var) –> legge e va capo
  • READLN –> da il tempo di leggere i risultati
  • TRUNC –> tronca la parte decimale
  • THEN –> allora
  • TO –> a (valori crescenti)
  • DOWNTO –> a (valori decrescenti)
  • TYPE –> tipo
  • RANDOM(n) –> genera un numero a caso compreso tra 0 e il numero indicato in parentesi (max 255)
  • WHILE –> mentre
  • ORD –> ordine
  • PROGRAM –> programma
  • REPEAT –> ripeti
  • PROCEDURE –> procedura
  • PLOT –> disegna un punto
  • DRAW –> disegna un segmento
  • WITH –> con
  • DELAY(n) –> crea un ciclo di attesa lungo n (millisecondi)
  • STRING[n] –> tipo di dato formato da n caratteri alfanumerici (compresi gli spazi). Usato senza parametri non definisce la lunghezza della stringa o nel caso in cui si dichiari una lunghezza minore del dato inserito,il programma non considerera i cartteri in eccesso

Tavola dei colori

  • 0 nero
  • 1 blu
  • 2 verde
  • 3 turchese
  • 4 rosso
  • 5 viola
  •  6 marrone
  •  7 grigio
  • 8 Grigio scuro
  • 9 Blu chiaro
  • 10 Verde chiaro
  • 11 Turchese chiaro
  • 12 Rosso chiaro
  • 13 Viola chiaro
  • 14 Giallo
  • 15 Bianco

NB: qualsiasi numero sopra il 15 produce lampeggiamento; per colorare lo sfondo di tutto il programma anzichè solo la parola TEXTBACKGROUND va inserito prima di CLRSCR (clearscreen)