domenica 1 marzo 2015

Auguri, ringraziamenti e qualche pensiero sparso.

Buongiorno!

Voi non potete immaginare quanto sia piccolo il mondo. E con internet ancora di più. Tu esprimi un parere attraverso un commento ad un post mentre stai al calduccio della tua stanza, ad esempio, in Brasile, ed io lo leggo quasi in tempo reale al calduccio della mia di stanza. Vabbe', tanto caldo, in effetti, nella mia stanza non fa, per la mia abitudine di tenere la finestra aperta anche d'inverno, di notte e di giorno. In realtà, la ragione di questo mio post è che voglio ringraziare tutti coloro hanno voluto recensire Lubit Linux 5. Sono del parere che chiunque faccia qualcosa per Lubit gli vada riconosciuto.

Ecco, passiamo alle recensioni di lubit 5. Che dire, un grazie di cuore a tutti coloro che l'hanno recensita, alcuni miei amici, altri del tutto sconosciuti. Un grazie va anche a chi l'ha semplicemente presentata, a chi ha espresso soddisfazione, alla comunità che si è venuta a creare intorno alla distro, ma anche a chi ha manifestato delle critiche costruttive, mentre rimando al mittente le critiche cattive (pochissime, a dire il vero), quelle che derivano da persone che non hanno mai fatto niente per il software libero e che tuttavia si arrogano il diritto di sputare sentenze.

Un grazie va al mio socio e amico Massimo Testa, cofondatore del Lubit Project. E un grazie va all'associazione Gli Amici di Lubit.

Un grazie al mio amico Juhan

Lubit 5, Jean

Un grazie allo staff di LFFL

Lubit 5, disponibile per il download

Un grazie all'amico Marco Giannini

Rilasciata Lubit Linux 5, ora anche per sistemi a 64-bit!

Un grazie all'amico Salvatore :)

Lubit 5 , nome in codice JEAN

Un grazie ad Edivaldo

Lubit 5 já está disponível para download

Un grazie al gestore del blog blogredire

Expò Vicenza

Un grazie al professore Cantaro.

Lubit 5 Linux

Un grazie all'amico Gianluigi

Lubit 5

Un grazie all'amico Giuseppe.

Lubit 5 è già operativo!

Un grazie a softpedia.com

Lubit 5

Un grazie ad anarchia.com

Lubit linux elegante e leggero 

Un grazie all'amico Salvatore Cottone

Lubit 5 GNU/Linux

Un grazie a Linuxiarze.pl

Lubit Linux

Un grazie al blog Rubrica informatica

Lubit 5- La distro italiana: ora anche 64bit!

Un grazie a Newsletter di Ubuntu.it

NewsletterItaliana

Un'altra nota di rilievo, Lubit 5, nei suoi primi 12 giorni di vita, è stata scaricata 4839 volte. Grazie a tutti!!


Chi scarica Lubit (statistica generale)


Ah, dimenticavo... Oggi ricorre anche il compleanno del blog!!!

Auguri al blog Lubit Linux, auguri a tutti gli autori, auguri a tutti i lettori!!! ;)


Alla prossima!

sabato 28 febbraio 2015

Modern C++ - Le funzioni

Salve a tutti e ben ritornati su queste pagine del corso di Modern C++, dopo una pausa dovuta ad impegni personali.

Le ultime puntate abbiamo parlato di puntatori e allocazione statica e dinamica: abbiamo visto anche come funzionano gli operatori * e & che permettono di accedere al valore contenuto nelle variabili mediante il loro indirizzo di memoria.

Oggi parliamo delle funzioni e del passaggio dei parametri per valore o per indirizzo.
Innanzitutto, una funzione si dichiara nel seguente modo:

[tipo di dato] nomeFunzione([lista di parametri])
{
    //corpo della funzione
}

dove il tipo di dato puo' essere built-in (char, int, float, double, bool), un vettore o stringa di caratteri (quindi std::string, std::vector<>, ecc.) oppure di tipo void, ovvero non ritorna alcun valore.
Il nome della funzione puo' esser definita in qualsiasi modo, secondo linee di stile personale o convenzionali, come ad esempio:
  • nome_funzione
  • NomeFunzione
  • nomeFunzione
  • _nomeFunzione
In genere, in C++ si preferisce utilizzare la prima lettera maiuscola solo per Strutture e Classi, mentre per le funzioni, si preferisce utilizzare il carattere minore e, preferibilimente, un nome esplicativo di cosa viene eseguito all'interno di una funzione, del tipo aggiungi_numero, salva_file, ecc., in modo da non dover scrivere commenti aggiuntivi in cui si descrive cosa viene eseguito all'interno della funzione.

Una funzione, al fine di operare, necessita (ma non sempre) di dati di input sui quali operare: una funzione che esegue la somma di due numeri interi e che restituisce il risultato, ha bisogno di esser definita nel seguente modo:

int somma(int a, int b)
{
    return a+b;
}

Come si vede dall'esempio, nella lista dei parametri, ne ho specificati 2, di tipo int e che si chiamano a e b. In uscita da questa funzione, si ottiene la somma dei due parametri, espressa dalla parola chiave return. Solo le funzioni di tipo void non necessitano della parola chiave return in modo esplicito, ma solo se si vuole uscire dalla funzione stessa in modo forzato (si pensi ad un ciclo infinito in cui si verifica una condizione per cui si debba interromperlo).

Ma come viene chiamata questa funzione? Si pensi al seguente esempio:

#include <iostream>
using namespace std;

int somma(int a, int b)
{   
   a = a+1;
   return a+b;
}

int main()
{
   int risultato = somma(2,3);  //a = 2, b = 3
   cout << "Il risultato di 2+3 e': " << risultato << endl; //6!
   return 0;
}
In questo modo, il valore 2 viene copiato nella variabile a e il valore 3 viene copiato nella variabile b. Tale tipo di chiamata viene detto passaggio per valore, ovvero i parametri specificati, al termine dell'esecuzione della funzione, tornano al loro valore originale, precedente alla chiamata della funzione stessa. Nell'esempio, a = 2 quando la funzione somma() termina.

Se volessimo mantenere il valore nuovo di a anche dopo l'esecuzione della funzione somma()? Dovremmo ricorrere al passaggio per riferimento, ovvero passare il riferimento della variabile, in modo da modificarla senza eseguirne una copia temporanea:

#include <iostream>
using namespace std;

int somma(int &a, int b)
{   
   a = a+1;
   return a+b;
}

int main()
{
   int x = 2;
   int y = 3; 
   int risultato = somma(x, y);  //a = x, b = y
   //adesso x = 3
   cout << "Il risultato di x+y e': " << risultato << endl; //6!
   return 0;
}
 
Occorre quindi modificare la lista dei parametri, facendo precedere l'operatore & al nome della variabile.

Una alternativa al passaggio di parametri per riferimento e' il passaggio di parametri per indirizzo, ovvero mediante l'operatore *:

#include <iostream>
using namespace std;

int somma(int *a, int *b)
{   
   a = a+1;
   return a+b;
}

int main()
{
   int x = 2;
   int y = 3;
   int risultato = somma(&x,&x);  //a = x, b = y
   //adesso x = 3
   cout << "Il risultato di x+y e': " << risultato << endl; //6!
   return 0;
}
 
Sia per il passaggio per riferimento o per indirizzo, occorre dichiarare delle variabili, in modo da poter poi salvarne il risultato dopo l'esecuzione della funzione.
Per quanto riguarda tipi di dato semplici (int, double, float), le prestazioni dei tre metodi si equivalgono, mentre per quanto riguarda strutture di dati grandi o complesse, e' preferibile utilizzare il passaggio per riferimento o indirizzo, mai quello per valore. Nel caso in cui non si voglia modificare il valore delle variabili all'interno del corpo di una funzione, occorre far precedere la parola chiave const:

int somma(const int &a, const int &b)
{
   return a+b;
}

in tal modo, si garantisce che a e b non possono esser modificate.

Alla prossima puntata :-)

lunedì 16 febbraio 2015

Lubit 5 Jean, le ragioni di un nome in codice e di un progetto.

Salve a tutti!

Il team Lubit Project è lieto di annunciarvi l'uscita di Lubit 5, a 32 e a 64 bit!

Lubit 5, nome in codice, Jean!

Giusto due parole per spiegarvi chi era Jean. Bisogna partire dal Telaio Jacquard, il cui inventore pare sia stato Joseph Marie Jacquard. Questo telaio è la prima applicazione pratica delle schede perforate. Siamo agli inizi dell'800. Il telaio ebbe così tanto successo che Napoleone I conferì a Jacquard una pensione onoraria per aver brevettato la macchina. In realtà, però, il prototipo del telaio Jacquard è stato realizzato quasi tre secoli prima, nella seconda metà del secolo XV, da un tessitore catanzarese, conosciuto a Lione come Jean le Calabrais...

A Lione, nel '500, i maestri setaioli catanzaresi vi andarono per insegnare, non per apprendere, e non a caso uno dei più antichi telai, a schede perforate, prototipo del computer, oggi esposti proprio a Lione nel Museo della Seta, porta ancora inciso il nome del maestro “Jean le calabrais”. E con Lubit 5 vogliamo rendere omaggio proprio a lui, a Jean.


Lubit 5 è leggera, poco avida di risorse, fluida, estremamente elegante e raffinata nelle scelte grafiche. Pensata per ridare vita a pc obsoleti o per rendere ancora più performanti i computer di ultima generazione.

Molte sono le novità rispetto alle versioni precedenti e molti sono i tools propri di Lubit, cioè creati ex novo per Lubit.










.



Tra i programmi installati trovate anche Firefox 35, abiword, pidgin, pcmanfm in lubit 32 bit, thunar in lubit 64 bit, Synaptic, lxterminal, liferea, istantanea, gparted, bleachbit, GDEbi, Evince, Tint2, DeaDBeeF, Xfburn, Guvcview, Gnome-MPlayer, Nitrogen in Lubit 64 bit, LXAppearance, Volumeicon-alsa, gsimplecal, svariati codec audio e video che ci consetiranno di eseguire qualsiasi file multimediale già da Live, etc.

Lubit è stata rivisitata ex novo anche graficamente, ad iniziare dal tema del plymouth, dallo sfondo della scrivana, dallo sfondo di lightdm, per finire ai tasti dello spegnimento.


Perchè Lubit?

Perchè il mondo GNU/Linux ti dà le risorse, ti mette in condizione di acquisire le compentenze giuste e ti permette anche di creare tutto ciò che ritieni opportuno vada bene per te stesso e per la comunità. In definitiva, le quattro libertà, di cui tanto si parla, tengono a ribadire proprio questo concetto. Lubit nasce con l'intento di operare una inversione ad U. Non un ritorno al passato, ma una valorizzazione, alla luce dei progressi fatti, di ciò che GNU/Linux è stato. Il nostro scopo è quello di far sentire l'utente parte di un progetto, nel senso che l'utente viene messo nelle condizioni di operare e modificare ogni cosa, per questo amiamo definire Lubit un cantiere aperto. Lubit viene creata a casa, con le poche risorse che si hanno a disposizione, proprio perchè è un progetto artigianale. Ed è questa la ragione per cui ad ogni rilascio bisogna installarla, cioè non si può aggiornare la versione precedente. Con Lubit "sforniamo" informatica artigianale, cerchiamo di dare adito alla nostra creatività, creiamo applicazioni prevalentemente in Bash o in Python. Con Lubit, in qualche modo, bisogna sporcarsi le mani. Per alcuni versi si diventa protagonisti e non semplici utilizzatori cui viene chiesto di cliccare asetticamente i tasti del mouse.

Per la presentazione ufficiale vi rimandiamo al sito del progetto.

Per scaricare Lubit 5, sia la versione a 32 che a 64 bit, si vada a questa pagina: qui


Alla prossima ;)

lunedì 9 febbraio 2015

Anteprima Lubit 5

Salve!

Tra qualche giorno uscirà Lubit 5, nelle versioni 32 e 64 bit. Tanto lavoro fatto e tanto ancora da farne.

Intanto le applicazioni proprie di Lubit aumentano da rilascio in rilascio. Questa è la volta del pannello di controllo, del software center e di almeno altre 30 scripts, molti dei quali lavorano dietro le quinte per rendere più prestante il sistema. 

Si sta lavorando su Lubit 5 da fine settembre. Inizialmente pensavamo di far uscire solo la 64 bit, ma poi è successo che le novità sono diventate talmente tante  che non avrebbe avuto senso far uscire una Lubit 4 a 64 bit così diversa dalla versione a 32 bit, che è uscita a novembre.

Diciamo che quando siamo partiti con questo progetto, ormai due anni fa, non potevamo pensare affatto che ci saremmo dovuti cimentare anche con  questa architettura. Anzi, lo abbiamo sempre escluso. Poi è successo che... è successo che ci siamo decisi date le tantissime richieste in tal senso.

Il code name di Lubit 5 è Jean. Giusto due parole per spiegarvi chi era Jean.
Bisogna partire dal Telaio Jacquard, il cui inventore pare sia stato Joseph Marie Jacquard. Questo telaio è la prima applicazione pratica delle schede perforate. Siamo agli inizi dell'800. Il telaio ebbe così tanto successo che Napoleone I conferì a Jacquard una pensione onoraria per aver brevettato la macchina. In realtà, però, il prototipo del telaio Jacquard è stato realizzato quasi tre secoli prima, nella seconda metà del secolo XV, da un tessitore catanzarese, conosciuto a Lione come Jean le Calabrais...


Vabbè, vi lascio con due video di anteprima.






Alla prossima!