Amministra sito

Nuovo blog Nireblog


Categoria: Software Libero

Introduzione all'uso dell'elaboratore

softwarehouse 16/04/2008 @ 14:14

150x150_sottoscrivi.png

Questo capitolo introduttivo potrebbe fare sorridere e sembrare fuori posto in un documento come questo che di certo non è ancora adatto a un principiante.

Tuttavia, dato il titolo, si tratta di un contenitore di appunti, e questi potrebbero essere utili a qualcuno, magari per togliere qualche preconcetto sbagliato.

Struttura

Per comprendere la struttura di un elaboratore si può immaginare il comportamento di un cuoco nella sua cucina. Il cuoco prepara delle pietanze, o piatti, che gli sono stati ordinati, basandosi sulle indicazioni delle ricette corrispondenti. Le ordinazioni vengono effettuate dai clienti che si rivolgono al cuoco perché hanno appetito.

  • L'elaboratore è la cucina;

  • il cuoco è il microprocessore o CPU;

  • l'appetito è il bisogno da soddisfare ovvero il problema da risolvere;

  • la ricetta è il programma che il microprocessore deve eseguire;

  • gli ingredienti sono l'input del programma;

  • le pietanze o i piatti sono l'output del programma.

Il cuoco, per poter lavorare, appoggia tutto quanto, ingredienti e ricetta, sul tavolo di lavoro. Su una parte del tavolo sono incise alcune istruzioni che al cuoco servono sempre, e in particolare quelle che il cuoco deve eseguire ogni volta che la cucina viene aperta (pulire il tavolo, controllare tutti gli strumenti: pentole, tegami, coltelli, cucchiai ecc., e ricevere le ordinazioni assieme alle ricette); senza queste istruzioni di inizio, il cuoco non saprebbe nemmeno che deve accingersi a ricevere delle ordinazioni.

Come detto, il cuoco corrisponde alla CPU; il tavolo di lavoro del cuoco è la memoria centrale (o core) che si suddivide in ROM e RAM. La ROM è quella parte di memoria che non può essere alterata (nell'esempio del cuoco, si tratta delle istruzioni incise sul tavolo); la RAM è il resto della memoria che può essere alterata a piacimento dalla CPU (il resto del tavolo).

L'elaboratore è pertanto una macchina composta da una o più CPU che si avvalgono di una memoria centrale per trasformare l'input (i dati in ingresso) in output (i dati in uscita).

L'elaboratore, per poter ricevere l'input e per poter produrre all'esterno l'output, ha bisogno di dispositivi: la tastiera e il mouse sono dispositivi di solo input, lo schermo e la stampante sono in grado soltanto di emettere output. I dischi sono dispositivi che possono operare sia in input che in output.

Il cuoco si avvale di dispense per conservare derrate alimentari (pietanze completate, ingredienti, prodotti intermedi) e anche ricette. Ciò perché il tavolo di lavoro ha una dimensione limitata e non si può lasciare nulla sul tavolo quando la cucina viene chiusa, altrimenti si perde tutto quello che c'è sopra (a eccezione di ciò che vi è stato inciso).

I dischi sono le dispense del nostro cuoco e servono per immagazzinare dati elaborati completamente, dati da elaborare, dati già elaborati parzialmente e i programmi.

Diverse cucine possono essere collegate tra loro in modo da poter condividere o trasmettere ricette, ingredienti,...

Le interfacce di rete e i cavi che le collegano sono il mezzo fisico per collegare insieme diversi elaboratori, allo scopo di poter condividere dati e servizi collegati a essi, e anche per permettere la comunicazione tra gli utenti dei vari elaboratori connessi.

Sistema operativo

Il sistema operativo di un elaboratore è il programma più importante. È quello che viene attivato al momento dell'accensione dell'elaboratore; esso esegue gli altri programmi. Sarebbe come se il cuoco eseguisse una ricetta (il sistema operativo) che gli dà le istruzioni per poter eseguire le altre ricette.

Il sistema operativo determina quindi il comportamento dell'elaboratore. Cambiare sistema operativo in un elaboratore è come cambiare il direttore di un ufficio: a seconda della sua professionalità e delle sue doti personali, l'ufficio funzionerà in modo più o meno efficiente rispetto a prima, e pur se non cambia niente altro, per gli impiegati potrebbe tradursi in un modo di lavorare completamente nuovo.

Ci sono sicuramente affinità tra un sistema operativo e l'altro, ma questo vuol sempre dire una marea di dettagli differenti e soprattutto l'impossibilità di fare funzionare lo stesso programma su due sistemi operativi differenti, a meno che ciò sia stato previsto e voluto da chi costruisce i sistemi operativi.

Dispositivi

Come già accennato, i dispositivi sono qualcosa che è separato dall'elaboratore inteso come l'insieme di CPU e memoria centrale. A seconda del tipo e della loro collocazione, questi possono essere interni o periferici, ma tale tipo di distinzione è quasi scomparso nel linguaggio normale, tanto che molti chiamano ancora periferiche tutti i dispositivi. Vale la pena di distinguere fra tre tipi di dispositivi fondamentali:

  • dispositivi di memorizzazione;

  • dispositivi per l'interazione tra l'utente e l'elaboratore;

  • interfacce di rete.

I dispositivi di memorizzazione sono qualunque cosa che sia in grado di conservare dati anche dopo lo spegnimento della macchina. Il supporto di memorizzazione vero e proprio potrebbe essere parte integrante del dispositivo stesso oppure essere rimovibile.

I supporti di memorizzazione possono essere di qualunque tipo, anche se attualmente si è abituati ad avere a che fare prevalentemente con dischi (magnetici, ottici o magneto-ottici). In passato si è usato di tutto, e il primo tipo di supporto di memorizzazione sono state le schede di cartoncino perforate.

Anche i dispositivi per l'interazione con l'utente possono avere qualunque forma possibile e immaginabile. Non è il caso di limitarsi all'idea che possa trattarsi solo di tastiera, schermo e mouse. Soprattutto non è il caso di supporre che un elaboratore possa avere solo uno schermo, oppure che possa avere una sola stazione di lavoro.

Le interfacce di rete sono i dispositivi che permettono la connessione tra diversi elaboratori in modo da permettere la condivisione di risorse e la comunicazione in generale. Anche in questo caso, non si può semplificare e pensare che possa trattarsi esclusivamente di schede di rete: qualunque «porta» verso l'esterno può diventare un'interfaccia di rete.

3.2 Dispositivi per l'interazione tra l'utente e la macchina

Se si lascia da parte il periodo delle schede perforate, si può dire che il primo tipo di strumento per l'interazione tra utente e macchina sia stato la telescrivente: una sorta di macchina da scrivere in grado di ricevere input dalla tastiera e di emettere output attraverso la stampante. In questo modo, l'input umano (da tastiera) era fatto di righe di testo terminate da un codice per il ritorno a capo (interruzione di riga, o newline), e nello stesso modo era composto l'output che appariva su carta.

La telescrivente era (ed è) un terminale dell'elaboratore. Ormai, la stampante della telescrivente è stata sostituita da uno schermo, che però spesso si comporta nello stesso modo: emette un flusso di testo dal basso verso l'alto, così come scorre la carta a modulo continuo attraverso una stampante. In questa situazione, la stampante ha preso un suo ruolo indipendente dal terminale originale e serve come mezzo di emissione di output finale, piuttosto che come mezzo per l'interazione.

Il terminale, composto da tastiera e schermo, o comunque da un'unità per ricevere l'input e un'altra per emettere l'output, viene visto normalmente come una cosa sola. Quando si tratta di quello principale, si parla in particolare di console.

Tastiera

La tastiera è una tavoletta composta da un insieme di tasti, ognuno dei quali genera un impulso particolare. È l'elaboratore che si occupa di interpretare e tradurre gli impulsi della tastiera. Questo sistema permette poi di attribuire ai tasti la funzione che si vuole.

Questo significa anche che non esiste uno standard generale di quello che una tastiera deve avere. Di solito si hanno a disposizione tasti che permettono di scrivere le lettere dell'alfabeto inglese, i simboli di punteggiatura consueti e i numeri; tutto il resto è opzionale. Tanto più opzionali sono i tasti a cui si attribuiscono solitamente funzioni particolari. Questa considerazione è importante soprattutto per chi non vuole rimanere relegato a una particolare architettura dell'elaboratore.

Schermo

Il terminale più semplice è composto da una tastiera e uno schermo, ma questa non è l'unica possibilità. Infatti, ci possono essere terminali con più schermi, ognuno per un diverso tipo di output.

Nel tempo, l'uso dello schermo si è evoluto, dalla semplice emissione sequenziale di output come emulazione di una stampante, a una sorta di guida di inserimento di dati attraverso modelli-tipo. Le maschere video sono questi modelli-tipo attraverso cui l'input della tastiera viene guidato da un campo all'altro. L'ultima fase dell'evoluzione degli schermi è quella grafica, nella quale si inserisce anche l'uso di un dispositivo di puntamento, solitamente il mouse, come un'estensione della tastiera.

Stampante

Le stampanti tradizionali sono solo in grado di emettere un flusso di testo, come avveniva con le telescriventi. Più di recente, con l'introduzione delle stampanti ad aghi, si è aggiunta la possibilità di comandare direttamente gli aghi in modo da ottenere una stampa grafica.

Ma quando la stampa diventa grafica, entrano in gioco le caratteristiche particolari della stampante. Per questo, l'ultima fase evolutiva della stampa è stata l'introduzione dei linguaggi di stampa, tra cui il più importante è stato ed è PostScript, come mezzo di definizione della stampa in modo indipendente dalle caratteristiche della stampante stessa. Così, l'output ricevuto dalle stampanti può essere costruito sempre nello stesso modo, lasciando alle stampanti l'onere di trasformarlo in base alle loro caratteristiche e capacità.

Dispositivi di memorizzazione

I dispositivi di memorizzazione sono fondamentalmente di due tipi: ad accesso sequenziale e ad accesso diretto. Nel primo caso, i dati possono essere memorizzati e riletti solo in modo sequenziale, senza la possibilità di accedere rapidamente a un punto desiderato, come con i nastri magnetici usati ancora oggi in qualità di mezzo economico per archiviare dati. Nel secondo caso, i dati vengono registrati e riletti accedendovi direttamente, come avviene con i dischi.

I dispositivi di memorizzazione ad accesso diretto, per poter gestire effettivamente questa loro caratteristica, richiedono la presenza di un sistema che organizzi lo spazio disponibile al loro interno. Questa organizzazione si chiama filesystem.

File

In prima approssimazione, il file è un'unità di informazioni che si compone in pratica di una sequenza di codici. I dispositivi di memorizzazione ad accesso diretto, muniti di filesystem, consentono la gestione di diversi file, mentre quelli ad accesso sequenziale permettono la gestione di un solo file su tutta la loro dimensione.

Quando il file viene visto come una semplice sequenza di codici corrispondenti a testo normale, lo si può immaginare come un testo dattiloscritto: la sequenza di caratteri viene interrotta alla fine di ogni riga da un codice invisibile che fa riprendere il testo all'inizio di una riga successiva. Questo codice di interruzione di riga, spesso identificato con il termine newline, cambia a seconda della piattaforma utilizzata.

Filesystem

Il filesystem è il sistema che organizza i file all'interno dei dispositivi di memorizzazione ad accesso diretto. Ciò significa, che tutto ciò che è contenuto in un filesystem è in forma di file.

Il modo più semplice per immaginare un filesystem è quello di un elenco di nomi di file abbinati all'indicazione della posizione in cui questi possono essere trovati. Questo sistema elementare può forse essere utile in presenza di dispositivi di memorizzazione particolarmente piccoli dal punto di vista della loro capacità.

Generalmente, si utilizzano elenchi strutturati, per cui da un elenco si viene rimandati a un altro elenco più dettagliato che può contenere l'indicazione di ciò che si cerca o il rinvio a un altro elenco ancora. Questi elenchi sono chiamati directory (o cartelle in alcuni sistemi) e sono file con questa funzione speciale.

Per questo motivo, la struttura di un filesystem assume quasi sempre una forma a stella (o ad albero), nella quale c'è un'origine a partire da cui si diramano tutti i file. Le diramazioni possono svilupparsi in modo più o meno esteso, a seconda delle esigenze.

Data l'esistenza di questo tipo di organizzazione, si utilizza una notazione particolare per indicare un file all'interno di un filesystem. Precisamente si rappresenta il percorso necessario a raggiungerlo:

  • una barra obliqua rappresenta la directory principale, altrimenti chiamata anche radice, o root;

  • un nome può rappresentare indifferentemente una directory o un file;

  • un file o una directory che discendono da una directory precedente, si indicano facendo precedere una barra obliqua.

Per esempio, `/uno/due/tre' rappresenta il file (o la directory) `tre' che discende da `due', che discende da `uno', che a sua volta discende dall'origine. *1*

Il tipo di filesystem determina le regole a cui devono sottostare i nomi dei file. Per esempio, ci possono essere situazioni in cui sono consentiti simboli speciali, come il carattere spazio, e altre in cui questo non è possibile. Nello stesso modo, la lunghezza massima dei nomi è sottoposta a un limite.

Oltre a questo, il filesystem permette di annotare delle informazioni accessorie che servono a qualificare i file, per esempio per poter distinguere tra directory e file contenenti dati normali.

Tradizionalmente si utilizzano due nomi convenzionali per poter fare riferimento alla directory in cui ci si trova e a quella precedente:

  • `.'  un punto singolo rappresenta la directory in cui ci si trova;

  • `..' due punti in sequenza rappresentano la directory di provenienza.

Sistema operativo

Il sistema operativo è ciò che regola il funzionamento di tutto l'insieme di queste cose. Volendo schematizzare, si possono distinguere tre aspetti di questo:

  • il kernel;

  • la shell;

  • i programmi di utilità.

Kernel

Il kernel è il nocciolo del sistema. Idealmente, è una sorta di astrazione nei confronti delle caratteristiche fisiche della macchina ed è il livello a cui i programmi si rivolgono per qualunque operazione. Ciò significa, per esempio, che i programmi non devono (non dovrebbero) accedere direttamente ai dispositivi fisici, ma possono utilizzare dispositivi logici definiti dal kernel. Questa è la base su cui si fonda la portabilità di un sistema operativo su piattaforme fisiche differenti.

3.jpg

Figura 3.1: Il kernel avvolge idealmente l'elaboratore e i suoi dispositivi fisici, ovvero tutto l'hardware, e si occupa di interagire con i programmi che ignorano l'elaboratore fisico.

La portabilità è quindi la possibilità di trasferire dei programmi su piattaforme differenti, e ciò si attua normalmente in presenza di kernel che forniscono funzionalità compatibili.

Naturalmente esistono sistemi operativi che non forniscono kernel tanto sofisticati e lasciano ai programmi l'onere di accedere direttamente alle unità fisiche dell'elaboratore. Si tratta però di sistemi di serie «B», anche se la loro nascita è derivata da necessità evidenti causate dalle limitazioni di risorse degli elaboratori per i quali venivano progettati.

Shell

Il kernel offre i suoi servizi e l'accesso ai dispositivi attraverso chiamate di funzione. Però, mentre i programmi accedono direttamente a questi, perché l'utente possa accedere ai servizi del sistema occorre un programma particolare che si ponga come intermediario tra l'utente (attraverso il terminale) e il kernel. Questo tipo di programma è detto shell. Come suggerisce il nome (conchiglia), si tratta di qualcosa che avvolge il kernel, come se quest'ultimo fosse una perla.

4.jpg

Figura 3.2: La shell è il programma che consente all'utente di accedere al sistema. I terminali attraverso cui si interagisce con la shell sono comunque parte dell'hardware controllato dal kernel.

Un programma shell può essere qualunque cosa, purché in grado di permettere all'utente di avviare, e possibilmente di controllare i programmi. La forma più semplice, e anche la più vecchia, è la riga di comando presentata da un invito, o prompt. Questo sistema ha il vantaggio di poter essere utilizzato in qualunque tipo di terminale, compresa la telescrivente. Nella sua forma più evoluta, può arrivare a un sistema grafico di icone o di oggetti grafici simili, oppure ancora a un sistema di riconoscimento di comandi in forma vocale. Si tratta sempre di shell.

Programmi di utilità

I programmi di utilità sono un insieme di piccole applicazioni utili per la gestione del sistema. Teoricamente, tutte le funzionalità amministrative per la gestione del sistema potrebbero essere incorporate in una shell; in pratica, di solito questo non si fa. Dal momento che le shell tradizionali incorporano alcuni comandi di uso frequente, spesso si perde la cognizione della differenza che c'è tra le funzionalità fornite dalla shell e i programmi di utilità.

Programmi applicativi

L'elaboratore non può essere una macchina fine a se stessa. Deve servire a qualcosa, al limite a giocare. È importante ricordare che tutto nasce da un bisogno da soddisfare. I programmi applicativi sono quelli che (finalmente) servono a soddisfare i bisogni, e quindi, rappresentano l'unica motivazione per l'esistenza degli elaboratori.

Riferimenti

  • Eric S. Raymond, The Unix and Internet Fundamentals HOWTO

RSTP ("Raccomandati Se Ti Piacciono")

Mondo Open Source

Sun sempre più Open Source

softwarehouse 27/03/2008 @ 16:24

150x150_sottoscrivi.png

L'azienda si Santa Clara, dopo MySQLAB, ha acquisito anche VirtualBox

Sun ha deciso: "questo Open Source s'ha da fare". Contrariamente a quanto accaduto, qualche secolo fa, agli italianissimi Promessi Sposi, Sun ha deciso que questo matrimonio con l'Open Source si deve assolutamente fare. Anzi, bisogna essere tra i protagonisti dell'intero movimento.

E così, dopo l'acquisizione lo scorso mese per un miliardo di dollari della società MySQLAB, sviluppatrice dell'omonimo database server, è stata la volta di Innotek, azienda tedesca che produce il software di virtualizzazione VirtualBox.

sun_java.jpg


Questa potente suite rappresenta il perfetto complemento per la sua giovane soluzione denominata xVM. Tuttavia mentre xVM è stata pensata per il settore enterprise, VirtualBox potrebbe potenziare l'offerta di virtualizzazione dell'azienda nel settore del desktop, notebook e piccoli server.

L'obiettivo è dare filo da torcere a concorrenti aguerriti come VMware Workstation e Virtual PC.

RSTP ("Raccomandati Se Ti Piacciono")

27/03 – LiMo lancia la sfida ad Android

25/03 – Molte novità per Compiz Fusion

15/03 – Come scaricare la posta delle più famose webmail

08/03 - Google Web Accelerator

29/02 - Assembly, tra i linguaggi di programmazione più vicini al linguaggio macchina proprio e vero

24/02 - BitNami. per installare pacchetti Open Source con facilità

19/02 - Il Bloggatore, nuovo aggregatore di feeds on line

13/02 - PHP_Speedy utility per velocizzare il tuo sito

13/02 - Synback, utility per pianificare i backups automatici

05/02 - Nireblog e Nirudia

04/02 - Slony, per il backup dei nostri databases in Ubuntu

27/01 - Page Defrag, per chi non si accontenta del semplice defrag di Windows

23/01 - VirtualDub, ottimo tool open source per il video editing

Mondo Open Source

27/03 – La rivista Forbes premia Red Hat

26/03 – Picasa: software per visualizzare, organizare, modificare e condividere le foto digitali presenti sul PC

26/03 – Distribuzione Linux basata su GNU/Linux

25/03 – KolourPaint: More than a Microsoft Paint clone

22/03 – Masterizzare con Linux

22/03 – Zenwalk Linux 5.0, distro semplice, stabile e sicura

22/03 – Burncenter, frontend per console a mkisofs, cdrecord, cdda2wav e mpg123

20/03 – Arriva la versione definitiva di Zend Framework 1.5, frame open source per lo sviluppo di applicazioni web

17/03 – Software: concetti elementari e tipologie in base alla licenza

10/03 - Pacchetti di applicazioni per GNU/Linux

10/03 - Gestione dei pacchetti RPM

09/03 - Aggiungere i giusti plugin a Mozilla Thunderbird

07/03 - Mozilla New Mail Icon

07/03 - Come trasformare il proprio PC in Linux Media Center

06/03 - Amazon Mp3 downloader per Ubuntu, Fedora, Debian e OpenSUSE

06/03 - Evolution, eMail, Calendar and Collaboration

05/03 - Masterizzare da linea di comando

05/03 - Free software and the GNU operating system

04/03 - Masterizzare da linea di comando

 

150x150_sottoscrivi.png


BitNami, per installare pacchetti open source con semplicità

softwarehouse 24/02/2008 @ 11:26

150x150_sottoscrivi.png

BitNami, è un sito che offre “pacchetti chiavi-in-mano” dei più popolari CMS aperti / liberi. Gli “stack” di BitNami comprendono il CMS, il webserver e l’eventuale server SQL ( generalmente rappresentato da MySQL ): basta decomprimere l’archivio e lanciare lo script di avvio incluso per poter iniziare a giocare con il software. BitNami offre stack di WordPress, Drupal, Joomla! e MediaWiki ( giusto per citarne alcuni ).

Oltre a questi pacchetti, BitNami rilascia anche alcuni stack sprovvisti del CMS, utili per testare o dispiegare le proprie applicazioni web: RubyStack ( Ruby, Rails, MySQL, Subversion ) per Linux / Windows e LAMP, WAMP e MAMP (Apache, MySQL, PHP, phpMyAdmin), rispettivamente per Linux, Windows e Mac.

bitnami.png

BitNami rende più semplice scaricare e installare i pacchetti software Open Source (Wordpress, SugarCRM, Drupal, phpBB…),con dei semplici pacchetti preconfigurati installabili con un semplice click.

Nessuna necessità di trattare con le impostazioni di configurazione o di dipendenze.

Basta scaricare un pacchetto , eseguire la procedura guidata di installazione, e il gioco è fatto. Una volta fatto, avrete un programma configurato sul vostro sistema.

bitnami2.jpg

"BitNami  è stato creato per contribuire a diffondere l'adozione di programmi Open Source di alta qualità ".


Easy to install
In just a few clicks, you can have your favorite open source applications up and running.


Multiplatform
Bitnami Stacks are available for Linux, Windows, and Mac OS X.


Integrated
By the time you click 'finish', the software will be integrated, configured and ready to go.


Independent
Bitnami Stacks won't interfere with any software already installed on your system.


Run Natively
The stacks install directly on your system - no virtual machine required.


Open Source
All Bitnami Stacks are free to download and use under the terms of the Apache License 2.0

Recently Released

 

WordPress 2.3.3-1
Released on 2008-02-15

 

Trac 0.10.4-3
Released on 2008-02-15

 

RubyStack 1.1-0
Released on 2008-02-15

 

phpBB 2.0.22-6
Released on 2008-02-15

 

Moodle 1.8.4-1
Released on 2008-02-15

 

MediaWiki 1.11.0-9
Released on 2008-02-15

 

Mantis 1.1.1-1
Released on 2008-02-15
RSTP ("Raccomandati Se Ti Piacciono")

19/02 - Il Bloggatore, nuovo aggregatore di feeds on line

13/02 - PHP_Speedy utility per velocizzare il tuo sito

13/02 - Synback, utility per pianificare i backups automatici

05/02 - Nireblog e Nirudia

04/02 - Slony, per il backup dei nostri databases in Ubuntu

27/01 - Page Defrag, per chi non si accontenta del semplice defrag di Windows

23/01 - VirtualDub, ottimo tool open source per il video editing

14/01 - I 10 trucchi di Google

12/01 - Le 10 piccole Webapps

11/01 - Creare un feed RSS da qualsiasi pagina web con l'HTML Scraping

03/01 - FeedCreator, una delle migliori classi PHP gratuite per scrivere feeds RSS e Atom

 

Altri links del "Mondo Open Source"

24/02 - Epiphany, browser appositamente fatto per Ubuntu/Gnome

21/02 - Comandi per la gestione di file e directory in Linux

18/02 - XFile files tree syncronizaion and cross validation

14/02 - Compiz, rilasciata la nuova versione 0.70

13/02 - Tape, Backup Software per Linux

12/02 - How do I Backup Thunderbird mail and profile under Linux

11/02 - BioBrew, Linux Distribution for the Life Scientists

1/02 - Blag, Distro basata su Fedora Core

10/02 - Virtualizzazione, una rassegna di quattro opzioni

09/02 - Wine 0.9.5.5. released

05/02 - Nuova release per Bacula backup

04/02 - Gentoo Linux,Based on the Portage Management System

02/02 - Ubuntu 8.04 Hardy Heron releases: alpha 1, alpha 2, alpha 3 and alpha 4

02/02 - Simplebackup, cross-platform backup program

01/02 - Backup e Restore in Ubuntu, ecco come fare!

01/02 - Ecco, finalmente Firefox Mobile

150x150_sottoscrivi.png

Le 10 piccole Webapps

softwarehouse 12/01/2008 @ 09:25
Anche in questa epoca d'oro del Big Internet Imprese, ci sono ancora un paio di realtà indipendenti, piccole webapps che non ottengono l'attenzione che meriterebbero per la loro funzionalità.
Qui ci sono i nostri top 10. Magari prestare un po' più di attenzione di quanto lo facciamo non sarebbe male.
10. Qipit

Cameraphone image scan to PDF via email
Snap a photo of a whiteboard or document with your cameraphone and email it to Qipit.com, a webapp that scans your photo to a PDF document and stores it online automatically. Qipit ain't the prettiest webapp you'll ever see, but it does a great job of capturing meaning from low-res images of text. You can also fax images of documents from Qipit, too.

9. Ning

Social network creator
Build your own social networking community site with Ning, a WYSIWYG web site creator that offers user registration and profiles, polls, blogs, photo albums, and boards at your own URL for free. While at least one LH reader complained about Ning being slow to load for highly-customized communities, it's still mind-blowing that Ning's made creating a dynamic, user-driven web application as easy as snapping together (virtual) Lego pieces.

8. Jott

Voice to text reminders, blog posts, and calendar events
instead, and get it transcribed and sent to your email address. You can also call Jott and send your voice message to your If you ever call your answering machine to leave yourself a reminder message, Jott's for you. Call Jott to leave your messageblog, Twitter account, or add events to your Google Calendar via Jott as well as other services.

7. Anywhere.FM

Music library hosting and web playback
anywherefm-logo.png Stop toting your iPod or entire iTunes library around on your local hard drive: instead, upload unlimited MP3's to Anywhere.FM and listen from your web browser from anywhere. At some point Anywhere.FM may start charging for storage and playback, but while it's free, it's a convenient way to get your tunes on the go.

6. Doodle

Group polling for scheduling large events
When organizing a recent reunion event that involved upwards of 80 people trying to figure out what the best date was for everyone, Doodle's group polling app saved the day. Set up a Doodle poll with possible dates and times for any kind of gathering with lots of attendees, and email out the Doodle URL, where each person can enter what times they can make it, and see who else is available when.

5. Netvibes

Browser start page
netvibes-logo.png When Lifehacker alum Rick Broida ran his start page showdown, Netvibes was the clear winner. Set up your web dashboard at Netvibes, a sleek, drag and drop, customizable start page that gets all your crucial information in one place the moment you launch your browser. Here are a few ways to trick out your Netvibes.

4. Zoho Suite

Web-based office suite
While Google Docs seems to be the first product people think of when online office suites come up, the lesser-known Zoho Suite offers more apps and features. See how Zoho stacks up against Google Docs.

3. Meebo

Web-based instant messenger
Chat with your buddies across multiple IM servicesIT lockdown, Meebo lets you log in and chat with buddies on AIM, MSN, Yahoo! Messenger, ICQ, and Jabber/GTalk.
without installing a thing using the Meebo web-based chat client. Great for folks in

2. TiddlyWiki

Personal, one-page wiki
Even though it's been around for years, we still have a huge crush on the thumb-drive friendly, magical Javascript personal wiki TiddlyWiki. While TW isn't a hosted webapp like the others, it uses a web page to store your information locally. TiddlyWiki has to be seen to be believed, and it's also spawned many offshoots like GTDTiddlyWiki. See how to get organized with GTD TiddlyWiki.

1. Remember the Milk

Task manager, reminder system, personal organizer
rtm-logo.pngAmong the slew of web-based task managers that have flooded the internet in the past couple of years, Remember the Milk stands head and shoulders above the rest: its modern interface and deep feature set make organizing your to-do's actually fun. Here's how to organize your life with Remember the Milk.

Le 9 caratteristiche di un utente di software free

softwarehouse 10/01/2008 @ 13:40

http://www.comunecampagnano.it/free_CD/freeduc.jpg

Cos'è il Software Libero?

Sosteniamo questa definizione di software libero per indicare chiaramente ciò che deve essere vero di un particolare programma software perché sia considerato software libero.

Il Software libero è una questione di libertà, non di prezzo. Per capire il concetto, bisognerebbe pensare alla libertà di parola e non alla birra gratis [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste].

L'espressione "software libero" si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Più precisamente, esso si riferisce a quattro tipi di libertà per gli utenti del software:

  • Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
  • Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito.
  • Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
  • Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito.


Che caratteristiche deve avere un utente di software libero?

Vi rimando a questo eccellente articolo dove spiega le 9 caratteristiche che dovrebbe avere l'utente ideale di software free.

Software libero e software open source

softwarehouse 09/11/2007 @ 08:50

Tutto il software recensito in questo blog è ovviamente free (Libero & Open Source).

A questo punto è importante spiegare la differenza tra uno e l'altro.

Un software libero è un software rilasciato con una licenza che permette a chiunque di utilizzarlo e che ne incoraggia lo studio, le modifiche e la redistribuzione; per le sue caratteristiche, si contrappone al software proprietario.

Caratteristiche

La parola libero non implica la possibilità di utilizzare il software libero in maniera indiscriminata: un software libero è comunque soggetto ad una licenza d'uso, a differenza ad esempio del software di pubblico dominio.

Rispetto al software proprietario, la licenza d'uso del software libero permette di:

  • eseguire il programma per qualsiasi scopo;
  • accedere alla struttura interna del programma (codice sorgente), studiarla ed eventualmente modificarla;
  • ridistribuirlo in un numero di copie illimitato.

La licenza d'uso pone in genere i seguenti vincoli, di cui i principali sono:

  • gli autori precedenti del software devono essere menzionati anche nelle versioni modificate, lasciando intatto il loro copyright;
  • non è possibile applicare una licenza d'uso incompatibile con la licenza originaria o che vada contro le norme della licenza stessa. Per esempio chiunque può riemettere un software rilasciato sotto LGPL usando la licenza GPL (tale operazione è anche chiamata upgrade della licenza), mentre non è possibile fare il contrario (naturalmente se non si è il detentore unico del copyright);
  • normalmente, nella licenza, vi è una clausola che sancisce la non usabilità del software se non si rispetta la licenza d'uso o se una o più norme della stessa licenza non sono valide per termini di legge;
  • quando si distribuisce un binario occorre o distribuire insieme anche i sorgenti o garantire per iscritto la possibilità a tutti gli utenti di venirne in possesso dietro richiesta ed al solo costo del supporto

Le "quattro libertà"

Secondo Richard Stallman e la Free Software Foundation da lui fondata, un software per poter essere definito libero deve garantire quattro "libertà fondamentali":

  • Libertà di eseguire il programma per qualsiasi scopo (chiamata "libertà 0")
  • Libertà di studiare il programma e modificarlo ("libertà 1")
  • Libertà di copiare il programma in modo da aiutare il prossimo ("libertà 2")
  • Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio ("libertà 3")

Licenze d'uso libere

Per approfondire, vedi la voce Licenza libera.

Buona parte del software libero viene distribuito con la licenza GNU GPL (GNU General Public License), scritta da Richard Stallman e Eben Moglen per garantire legalmente a tutti gli utenti le quattro libertà fondamentali. Dal punto di vista dello sviluppo software, la licenza GPL viene considerata una delle più restrittive, poiché impone che necessariamente ogni prodotto software derivato - ovvero, che modifica o usa codice sotto GPL - venga a sua volta distribuito con la stessa licenza. Anche MediaWiki, il software usato per Wikipedia, è distribuito con licenza GPL.

Una licenza simile, ma meno restrittiva, è la GNU LGPL (GNU Lesser General Public License), che permette di utilizzare il codice anche in software proprietari e sotto altre licenze opensource, purché le parti coperte da LGPL - anche se modificate - vengano comunque distribuite sotto la medesima licenza. In genere è utilizzata per librerie software.

Non tutte le licenze ritenute libere sono compatibili tra di loro, cioè in alcuni casi non è possibile prendere due sorgenti con due licenze libere ed unirli per ottenere un prodotto unico. Questo avviene quando non esista e non sia possibile creare una licenza che possa soddisfare i requisiti delle licenze originali. Ad esempio la licenza BSD originale, pur essendo considerata licenza di software libero, è incompatibile con la GPL (per ulteriori dettagli vedere qui); per ovviare al problema è stato necessario creare una "licenza BSD modificata" compatibile con la GPL.

Un'altra licenza degna di nota è l'Apache License, prodotta dalla Apache Software Foundation, la cui compatibilità con la GPL è attualmente in fase di analisi (per maggiori dettagli [1]). L'Apache License considera un prodotto derivato alla stregua della LGPL, ma è più liberale nella concessione delle proprietà intellettuali.

Le varie licenze libero possono contenere ulteriori limitazioni per alcune situazioni particolari; per esempio la GPL prevede che si possa esplicitamente vietare l'uso del software nelle nazioni dove tale licenza non è valida o dove dei brevetti software impediscono la distribuzione di tale software.

Le licenze d'uso non vietano in genere di vendere software libero e di solito non stabiliscono minimamente il possibile prezzo di vendita.

Differenze rispetto all'open source

Essendo uno dei requisiti fondamentali la disponibilità del codice sorgente, comunemente si ritiene che il software open source sia sinonimo di software libero, ma in realtà questa affermazione non è vera.

Il software open source è un software che rispetta alcune convenzioni di distribuzione (per esempio il codice sorgente potrebbe essere disponibile, ma potrebbe esserne vietata la redistribuzione o la modifica e quindi un software distribuito sotto tale licenza non può essere software libero) e una licenza è "ufficialmente" open source a discrezione dell'Open Source Initiative (OSI): se una licenza segue le linee guida dell'OSI, allora tale licenza può essere dichiarata licenza open source, ma le direttive potrebbero cambiare nel tempo (nessuno garantisce che questo non possa accadere) e quindi è possibile che una licenza attualmente open source non lo sia nel futuro o viceversa; recentemente l'OSI ha posto un freno al proliferare delle licenze dichiarando che cercherà di limitare il numero di licenze che nel futuro saranno ritenute licenze open source, questo potrebbe, in linea teorica, far si che una licenza ritenuta libera non venga ritenuta open source.

Una licenza invece è libera (o meglio, una versione di una licenza è libera) se e solo se rispetta le quattro libertà fondamentali. Pertanto se una versione di una licenza è libera, allora lo sarà per sempre. Naturalmente è sempre complesso, almeno per un cittadino "normale" (non esperto di leggi), stabilire se una licenza è libera o meno perché entrano in gioco i termini legali utilizzati nella stessa. Il progetto GNU si occupa tra l'altro anche di indicare se una licenza è libera o meno e se è compatibile con le licenze GNU o meno (per maggiori dettagli: Elenco licenze).

Inoltre il software libero non deve essere confuso con il software freeware, che è distribuibile gratuitamente ma che non è né software libero né open source, e con il software di pubblico dominio, che non è soggetto a nessuna licenza d'uso e quindi può essere riemesso da chiunque sotto qualsiasi altra licenza.

Storia

L'idea di software libero nasce agli inizi degli anni '80, quando lo sviluppo del software cominciò a passare di mano dalle università alle aziende (software proprietario), ponendo un pesante freno alla collaborazione che caratterizzava il lavoro di gran parte dei programmatori e dei sistemisti dell'epoca, soprattutto con i patti di non divulgazione che le aziende facevano firmare ai programmatori che assumevano.

In realtà il software "commerciale" esisteva da sempre, ma i costi elevati dell'hardware facevano sì che il business delle aziende non fosse concentrato sul software, che era considerato una parte naturale del prodotto, ed i cui sorgenti erano in genere pubblici. Con il passare del tempo il software diventò sempre più complesso e difficile da realizzare e le aziende iniziarono a non distribuire i sorgenti e obbligare i propri dipendenti a non rivelare nulla per non avvantaggiare la concorrenza; inoltre con il crollo dei costi dell'hardware, lo sviluppo commerciale del software divenne un business notevole, ed il codice sorgente era divenuto un investimento prezioso che poteva da un lato far acquisire una fetta di tale mercato in rapida crescita e dall'altro legare i propri utenti al proprio software mantenendo il segreto sui metodi utilizzati per lo sviluppo di sistemi e applicazioni.

In questo modo le aziende cominciavano ad utilizzare la legge sul diritto d'autore per impedire ai concorrenti di leggere e modificare i loro prodotti, assicurandosi il controllo dei propri clienti che, senza più poter vedere e modificare il codice sorgente del software, non potevano più adattarlo alle loro esigenze ma dovevano chiedere alle aziende di farlo per loro.

Nel 1983 Stallman fondò il Progetto GNU con l'intenzione di creare un sistema operativo completamente libero. Grazie alla collaborazione di molti sviluppatori volontari, all'uso di Internet per la coordinazione del progetto e al kernel Linux di Linus Torvalds, nel 1991 nacque GNU/Linux, un clone di UNIX liberamente distribuibile e modificabile.

In Italia si riscontra una sempre maggiore attenzione per il software libero, vi sono associazioni che giornalmente dedicano molte attenzioni ed energie nella tutela e nel rispetto delle norme che regolano (o dovrebbero regolare) l'utilizzo dei software liberi nelle varie strutture pubbliche, come anche la Pubblica Amministrazione. Una delle più importanti sentenze registrate negli ultimi giorni riguarda l'Associazione per il Software Libero (Assoli (Software Libero)): con una sentenza a lungo attesa il Tribunale Amministrativo Regionale del Lazio riconosce ad Assoli il diritto di perseguire i suoi scopi statutari agendo anche in giudizio ove fosse necessario (il testo integrale della Sentenza 428/07 può essere visionato qui).

Aspetti filosofici e sociali

Nel software libero il significato della parola libero ha un'accezione particolare. Si è già sottolineato che la libertà del software libero non è incondizionata, perché è soggetta ai precisi vincoli della licenza d'uso, come qualsiasi altra licenza d'uso, solo che in questo caso l'autore si "espropria" di alcuni diritti per cederli agli utenti. Questi vincoli sono studiati in maniera tale da favorire il tipo di libertà cosiddetta copyleft, ovvero che ha come obiettivo la condivisione del sapere. Pertanto il software libero parte da considerazione sociali e per molti aspetti è una forma di filosofia.

Le implicazioni sociali del software libero sono notevoli. La condivisione del sapere non permette a un gruppo ristretto di persone di sfruttare la conoscenza (in questo caso tecnologica) per acquisire una posizione di potere. Inoltre, è promossa la cooperazione delle persone, che tendono naturalmente ad organizzarsi in comunità, cioè in gruppi animati da un interesse comune.

Il modello del software libero si è naturalmente esteso ad altri campi del sapere. Chi crede nel modello copyleft pensa che questo possa essere applicato ad esempio alla musica o alla divulgazione. L'esempio più riuscito di applicazione di questo modello ad un campo differente dal software è oggi Wikipedia, che promuove la condivisione del sapere e la formazione di una comunità.

Differenti correnti di pensiero

Tra i sostenitori del software libero, e più in generale del copyleft, vi sono diverse correnti di pensiero, che spaziano da una visione radicale ad una più moderata.

La visione più radicale tende ad un modello che si spinge molto oltre a quello del software libero, arrivando in alcuni casi ad auspicare una completa abolizione del software proprietario, considerato una limitazione inaccettabile della libertà e dei diritti dell'uomo. Questa ideologia è stata, erroneamente o almeno impropriamente, paragonata a correnti politiche quali il comunismo, sebbene solitamente i sostenitori del software libero non entrino in questioni politiche.

Chi è su posizioni più moderate considera il software libero un ideale a cui tendere, non negando la possibilità di esistere al software proprietario e più in generale allo sfruttamento commerciale del diritto d'autore, sfruttamento che può essere fatto anche usando software libero, come dimostrano vari casi di successo (es: MySQL).

La licenza LGPL è stata concepita per permettere una certa integrazione tra software libero e software non libero. C'è chi ritiene inopportuno un suo utilizzo perché permette l'integrazione, sotto determinate condizioni, di software libero da parte di software non libero (su questo argomento è possibile leggere questo articolo (EN) ); tuttavia ogni autore di software può decidere liberamente che licenza scegliere e quindi sotto quali condizioni permettere l'uso del proprio lavoro.

Vantaggi del software libero

A prescindere dalle implicazioni sociali, secondo i suoi sostenitori il software libero presenta numerosi vantaggi rispetto al software proprietario:

  • essendo possibile modificare liberamente il software, è possibile personalizzarlo ed adattarlo alla proprie esigenze
  • il codice sorgente è sottoposto ad una revisione da parte di moltissime persone, pertanto è più difficile che contenga bachi e malfunzionamenti. In ogni caso, è sempre possibile per chiunque tenere un indice pubblico dei problemi, in modo che gli utenti li conoscano
  • se viene scoperto un baco o una falla di sicurezza, la sua correzione di solito è molto rapida[2]
  • essendo il sorgente liberamente consultabile, è molto difficile inserire intenzionalmente nel software backdoor, cavalli di Troia o spyware senza che questi vengano prontamente scoperti ed eliminati, come invece è accaduto per alcuni software commerciali (ad esempio il caso del database Firebird della Borland che conteneva una backdoor scoperta quando di tale software sono stati rilasciati i sorgenti)
  • non esistendo standard proprietari, le cui specifiche sono normalmente segrete, è molto più facile costruire software interoperabile
  • permettere a chiunque di modificare i sorgenti garantisce che ogni nuova funzionalità o copertura di un baco possa essere proposta da chiunque e immediatamente applicata dagli sviluppatori. Questo permette di avere rapidamente a disposizione un software che rispetta le esigenze di chi ha richiesto le modifiche in caso di necessità[3]
  • la complessità e le dimensioni di alcuni software liberi (ad esempio, dei sistemi operativi) è tale che è necessario il supporto commerciale di un'azienda ; il software libero si presta a creare nuove opportunità di business nel campo della formazione e del supporto, oltre che della eventuale personalizzazione del software.
  • collaborando con sviluppatori volontari e utilizzando il lavoro della comunità, anche le piccole e medie imprese sono in grado di sviluppare e vendere prodotti di alta qualità, senza dover ampliare il loro organico.

Critiche al software libero

Secondo alcuni il software libero avrebbe delle limitazioni e degli svantaggi rispetto al software proprietario:

  • essendo un lavoro volontario, lo sviluppo del software libero sarebbe più lento rispetto al software proprietario; Tesi espressa da Bill Gates nella sua lettera aperta ai programmatori dilettanti [4] . Bill Gates ha inoltre particolarmente criticato la GPL in quanto licenza virale e non economicamente sostenibile [5]
  • alcune tipologie di software, soprattutto di nicchia, non sarebbero disponibili come software libero; infatti i software di nicchia non avrebbero abbastanza utenti per la creazione di una comunità che supporti lo sviluppo del software .
  • lo sviluppo del software libero avrebbe una struttura anarchica, che porta a risultati incoerenti e ad una mancanza di uniformità e consistenza [6];
  • nonostante il codice sorgente sia liberamente disponibile, non tutti sono in grado di apportarvi modifiche, inoltre l'usabilità spesso non è ottimale per un utente inesperto;[7]
  • anche se spesso è disponibile molta documentazione, è sovente incompleta o non aggiornata.

Alcune di queste critiche sono talvolta frutto di un'errata comprensione del software libero. Molte persone tendono infatti a considerare il software libero come prodotto esclusivamente da volontari, mentre sono molti i casi in cui è semplicemente un modello di sviluppo adottato a livello aziendale.

Applicazioni commerciali del software libero

Un software libero non deve necessariamente essere sviluppato a titolo gratuito o a fondo perduto. Purché si rispettino i vincoli della licenza d'uso, è possibile vendere un software libero; all'interno dei documenti del progetto GNU, Stallman incoraggia la vendita di software libero.

Vi sono inoltre alcune aziende che adottano il modello di sviluppo del software libero per i propri prodotti commerciali. Il ritorno economico in questo caso può derivare dalla fornitura di assistenza e di know-how.

Un caso diverso è quello di alcuni software che vengono rilasciati con un sistema di "licenze multiple". In pratica lo stesso software viene licenziato sia come proprietario, sia come software libero. La versione libera talvolta dispone di meno funzionalità, o è limitata ad un numero ristretto di piattaforme. Esempi celebri di software a doppia licenza sono il database MySQL, di cui esiste una versione "Pro Certified Server" a pagamento e una versione "Community Edition" rilasciata con licenza GPL, e la libreria Qt (vedi questa pagina).

Vi sono poi aziende che sono strutturate integralmente per la vendita e l'assistenza di un determinato software libero: esempi classici sono alcune distribuzioni di Linux, come Red Hat o SUSE. Queste aziende utilizzano come base il software sviluppato dalla comunità, aggiungendo una serie di tool di configurazione o sviluppo, curando gli aspetti più tecnici e dando agli utenti finali un'assistenza mirata.

Sfruttando le caratteristiche della licenza BSD, alcune aziende preferiscono invece partire da un software libero per sviluppare un prodotto non libero. Per esempio il sistema operativo proprietario Microsoft Windows implementava, fino alla versione NT 4.0, lo stack di rete utilizzando codice sotto licenza BSD

Voci correlate

Altri progetti

Collegamenti esterni

fonte Wikipedia

Sottoscrivi il feed http://softwarehouse.nireblog.com/rss2/35682/index.xml

Create Social Bookmark Links

Add to Technorati Favorites

feedNuts Feed Profile

tutto blog

BlogItalia.it - La directory italiana dei blog

Feed XML offerto da BlogItalia.it

Sito preferito

Il Bloggatore

Italian Bloggers


Programming Blogs - Blog Catalog Blog Directory

web stats

AddThis Social Bookmark Button

free hit counter

Argentina in immagini


Social Bookmarking