giovedì 26 luglio 2012

Come chiamare i telefoni fissi da smartphone a 0,02 €/min

Recentemente tutti abbiamo sentito parlare di Voip, ma pochissimi utilizzano al momento questa tecnologia per risparmiare effettivamente! Vediamo come effettuare e ricevere chiamate voip dal proprio smartphone o dal proprio computer in pochi semplici passi.

Innanzitutto scegliete un providere voip : per questo esempio utilizzeremo Messagenet, che ci permetterà di chiamare i telefoni fissi a solo 1,6 centesimi/min, senza scatto alla risposta e pagando solo i secondi effettivamente utilizzati (ovvero per una chiamata di 30 secondi vi verranno addebitate 0,8 centesimi ).

Le tariffe di messagenet sono disponibili qui. Solitamente chiamare da cellulare a cellulare è più vantaggioso, ma chiamare da cellulare a fisso costa anche venti volte tanto... vediamo ora come avere un numero sempre disponibile a cui ricevere telefonate e da cui effettuare chiamate via internet!

Innanzitutto è necessario iscriversi a Messagenet per ottenere un numero voip Free. Ovviamente con un numero free è possibile soltanto ricevere chiamate.. per effettuarle è necessario comprare del credito prepagato (come una normale ricarica telefonica del cellulare) con tagli da 6 e da 20 euro (o superiori).


Come seconda cosa è necessario un client voip, un piccolo programmino. Il più semplice e completo che ho trovato gratuitamente è 3CXPhone disponibile per windows, android e iphone.

Una volta installato è possibile configurare il software con i paramentri forniti dal provider voip (per Messagenet li trovate qui ) ... et voilà... ora il vostro numero voip è sempre con voi... potete essere raggiunti ovunque dalle telefonate sul numero voip fisso, sia quando siete in ufficio, sia quando siete dall'altra parte del mondo...

E' senza dubbio la soluzione più pratica per risparmiare, soprattutto per chi si sposta continuamente come agenti e piccoli professionisti...

mercoledì 13 giugno 2012

Progettare correttamente un database relazionale (RDBMS) : Seconda Forma Normale

Una tabella si definisce in seconda forma normale se, oltre a essere già in prima forma normale, contiene solo campi (colonne) che dipendono dall'intera chiave della tabella e non da parte di essa.

Solitamente la seconda forma normale viene trascurata da programmatori inesperti, in quanto complica notevolmente la struttura delle tabelle, ma a fronte di una notevole complicazione per il programmatore il risultato è un'ottimizzazione delle ricerche da parte del database e quindi un carico minore sul computer che esegue il database, oltre a un risultato decisamente più prestante in termini di tempo durante le interrogazioni.

mercoledì 18 aprile 2012

Progettare correttamente un database relazionale (RDBMS) : Prima Forma Normale

Tutti i più comuni database che si possono incontrare sono detti RDBMS, ovvero database relazionali.
Il motivo è semplice... nei database moderni i dati non sono inseriti tutti in un'unica tabella, come avviene per i fogli di excel, ma le righe che compongono le informazioni vengono divise su più tabelle. 


Facciamo un esempio semplice, così risulterà più comprensibile.

martedì 17 aprile 2012

Introduzione Ai DataBase: scegliere il database più adatto alle nostre esigenze

Un database è un programma appositamente progettato per gestire, organizzare e interrogare delle basi di informazioni ordinate. La maggior parte delle persone che lavorano in ufficio, ritengono erroneamente che il software corretto per la gestione di dati sia il foglio di calcolo, nella versione Excel o OpenOffice. E' un errore molto diffuso pensare che i pochi filtri e strumenti di ricerca di Excel siano progettati a questo scopo. Vedremo invece in questo minicorso quanti e quali sono i vantaggi che offre un software appositamente progettato per la gestione di basi di dati.

Innanzitutto facciamo una breve panoramica sui principali database e sui loro punti di forza:

Microsoft Access
Access è un database molto semplice da utilizzare, che può essere gestito anche da un utente meno esperto. L'intero database è contenuto in unico file (.mdb o .accdb a seconda della versione di access), il che rende molto semplice la sua gestione, il suo backup e la sua migrazione da un pc ad un altro. Inoltre Access stesso è un software completo, che fornisce sia la base di dati con il relativo motore che l'interfaccia utente per l'interrogazione dei dati. I tools contenuti all'interno dell'interfaccia sono molto comodi e permettono la scrittura di query anche agli utenti meno esperti e la creazione di maschere e report con pochissime righe di codice.
Sfortunatamente il limite di access è quello di essere fondamentalmente monoutente. Non è per nulla semplice condividere lo stesso database tra più utenti, se non tramite complesse tecniche, e spesso la base di dati viene corrotta e persa quando si cercano di effettuare troppi accessi ai dati contemporaneamente.

Microsoft SQL Server
Fondamentalmente SQL Server ( o MSSqlServer) è la versione completa e professionale di access. E' necessario installarlo su un pc che funga da server, ed è possibile consentire l'accesso ai dati dai vari computer presenti in rete, anche simultaneamente. Ogni singola modifica da parte dei vari utenti viene gestita dal server in maniera sequenziale, permettendo a più utenti di modificare la base di dati.
L'interfaccia standard di SQL Server viene fornita da microsoft ed è discretamente completa. Inoltre Sql server ha l'enorme vantaggio di fornire l'autenticazione integrata con i domini active directory windows, quindi in una rete aziendale sarà possibile identificare l'utente che accede al database direttamente tramite le sue credenziali di accesso alla rete aziendale, e limitarne le autorizzazioni correttamente.
Gli svantaggi di Sql Server sono sicuramente il costo della licenza (varia in base al tipo di motore e alle funzionalità che si richiedono, come la replica ad esempio) ed una discreta pesantezza, dovuta alla forte integrazione con i server windows di cui sopra. Inoltre come access funziona su ambiente Windows.

MySql Server
Come MSSqlserver è un database Server, che permette quindi a diversi utenti di accedere in simultanea ai dati. Inoltre Mysql è installabile anche in ambiente linux, e risulta indubbiamente più leggero di sql server, non avendo a che fare con active directory, ma gestendo solamente l'autenticazione al suo interno. Se da un lato può sembrare uno svantaggio è proprio la sua possibilità di inserirsi in ambienti linux con prestazioni elevate che ha permesso al mysql di ottenere una larghissima fetta di mercato web. Molti siti web infatti hanno necessità di gestire svariati utenti, con una sempre maggior attenzione alle prestazioni della macchina che ospita il sito internet. Combinato con linux e php, mysql permette dunque di ottenere prestazioni invidiabili a costi di licenza estremamente più bassi di un server windows+sqlserver.

Volendo tirare le somme possiamo indicare access come database più consigliato per progetti di piccole dimensioni, per basi di date gestite solitamente da un singolo operatore, non molto esperto di informatica.
Sql Server risulta più adatto invece quando si deve utilizzare un'applicazione all'interno di un'azienda con un infrastruttura informatica ben organizzata e un domino ( si pensi ad esempio che i vincoli di cambio password mensile che si impongono solitamente in un dominio si riflettono sulle password di accesso ai dati), mentre mysql è più adatto per applicazioni web, dove un utente generico e solitamente sconosciuto deve accedere ai dati cercando di liberare il server nel minor tempo possibile.

Fortunatamente per l'autore, nel corso non saranno trattati nello specifico i tre database, in quanto al di là delle interfacce differenti tra i vari programmi, le regole di base per la strutturazione e l'interrogazione dei database sono uguali per tutti.

Nella prossima Lezione vedremo come progettare correttamente un database relazionale

lunedì 2 aprile 2012

Crittografia Sincrona e Asincrona

Un sistema di crittografia può essere di due tipi fondamentali: sincrono o asincrono.

La crittografia sincrona è un sistema di crittografia a chiave unica, e si applica solo per algoritmi in grado di crittografare e decrittografare un dato attraverso la stessa identica chiave.





Pensando ad esempio al cifrario di cesare, già citato nell'articolo precedente, potremmo scrivere un algoritmo di crittografia sincrono con le funzionalità di crittografia e decrittografia seguenti:
preso un numero intero "N" e abbinato a ogni lettera in chiaro "X" un codice numerico , il testo crittografato "Y" sarà dato da :
y= x+n;  (salvo poi ricominciare dall'inizio una volta che ho superato la z).

mentre la funzione di decrittografia sarà data da
x= y - n;

In questo modo la chiave N è valida sia per crittografare che per decrittografare il testo, e entrambe le parti in causa in questo dialogo segreto dovranno essere in possesso della medesima chiave "N" per potersi comprendere.



Per spiegare come funziona in maniera molto approsimativa un algoritmo di crittografia asincrono possiamo pensare a una versione diversa sempre dell'ormai noto cifrario...
Preso un numero intero "N" e abbinato a ogni lettera in chiaro "X" un codice numerico , il testo crittografato "Y" sarà dato da :

y= x+n;  (salvo poi ricominciare dall'inizio una volta che ho superato la z).

Perchè l'algoritmo funzioni in modalità asincrona dobbiamo pensare l'algoritmo in modo da decrittografare non con una funzione diversa, ma con una chiave diversa


Calcoliamo quindi la chiave N2 come N2 = - N.
In questo modo, lo stesso algoritmo con una chiave diversa ci restituirà il testo originale
x= y + n2;


Negli algoritmi recenti è fondamentale ovviamente che la chiave N2 non sia ricavabile semplicemente a partire dalla chiave N, ma sia propriamente una chiave indipendente, mentre qui per chiarezza espositiva ci limitiamo a prendere l'inverso della chiave originale. Non si vuole assolutamente trattare il dettaglio del funzionamento dei vari algoritmi di crittografia, che funzionano tramite complessi calcoli matematici, funzioni e trasformate, nonchè calcoli sulle matrici.



Lo scopo della crittografia in informatica è quello di garantire due cose principalmente:
1) La non manipolazione del dato che include quindi  la segretezza dell'informazione inviata.
2) L'autenticità del mittente del messaggio.

Per garantire queste due qualità durante l'invio di informazioni su una rete insicura come internet, non è affatto sufficiente crittografare i dati in maniera sincrona, nè asincrona. Lo scambio dei dati sicuro avviene tramite un meccanismo complesso, che descriveremo nel prossimo articolo, che coinvolge i certificati, la crittografia asincrona e l'hashing dei dati.

Differenze tra crittografia e hashing

Perchè la password del mio sito non può essere recuperata? Quante volte su un portale via hanno detto che la password del vostro sito non può essere recuperata ed è necessario generarne una nuova? Ti dicono che la password è criptata e non si può recuperare, ma è veramente così?

Vediamo brevemente come funzionano crittografia e hashing, quale dei due è più sicuro e quale dei due non può essere decodificato...

La Crittografia è un sistema di codifica dei dati che prevedere un algoritmo, un dato in chiaro, una chiave di codifica e come risultato un testo crittografato. La crittografia di solito viene utilizzata per evitare che dati sensibili siano spediti online in forma leggibile.

E' arcinoto il primo esempio di crittografia della storia, che risale addirittura a Giulio Cesare, e al suo famoso "cifrario di Cesare". L'algoritmo è molto semplice, rispetto ai nostri moderni ovviamente, e consisteva nel scegliere una chiave numerica e sostituire le lettere in chiaro con le relative lettere n posizioni più avanti nell'alfabeto..

ad esempio scegliendo come chiave il numero 1 la parola

"Ciao" diviene "Dlbp" ( C->D    i->l    a->b  o->p).
I due cerchi concentrici nell'immagine qui sopra, erano infatti in grado di ruotare in maniera indipendente l'uno dall'altro, generando quindi un accoppiamente tra le lettere interne e quelle esterne, e fornendo un comodo "traduttore" del testo crittografato.
Posta la assoluta segretezza della chiave, questo algoritmo era molto semplice da decriptare, in quando bastano al massimo 26 (come le lettere dell'alfabeto) tentativi per risalire al testo senza possedere la chiave numerica.

Gli algoritmi moderni sono assolutamente impossibili da violare con un attacco basato sulle possibili chiavi (attacco di forza bruta), persino con un computer moderno.
Tra gli algoritmi più noti citiamo DES, 3DES e AES.
Il punto di forza della crittografia non è la segrettezza del tipo di algoritmo, ma la "forza" dell'algoritmo scelto, unito ovviamente alla segretezza della chiave.
Ne conviene che nella crittografia è praticamente sempre possibile ritornare al dato originale, con un apposito algoritmo che effettua i passaggi inversi, posto di essere a conoscenza della chiave.
E' ovvio che un sistema di crittografia che non possa essere decrittografato correttamente dal destinatario è assolutamente inutile. Se salvo in un database la password di un utente crittografandola, e poi non sono in grado di decrittografarla, come potrò controllare quando l'utente effettua il login se la password che inserisce è quella corretta? Cosa me ne faccio di una crittografia che impedirà al vero destinatario in possesso della chiave di leggere il messaggio?


L'hashing di un testo invece è un meccanismo in grado di generare una sorta di "riassunto", come se zippassimo il dato. Quando viene effettuato l'hash di un testo in chiaro il risultato è sicuramente un testo impossibile da comprendere, ma che nulla ha a che fare con la crittografia. L'hash spesso viene usato come "firma" del dato, per verificare se il dato viene compromesso durante l'invio. Se infatti un hacker attaccasse e modificasse un dato durante il viaggio sulla rete, il suo hash non corrisponderebbe più e l'utente di destinazione in possesso dell'hash corretto avrebbe modo di accorgersi della manomissione del dato.

L'hash, al contrario della crittografia, è un sistema di codifica insicuro e irreversibile. E' stato da anni dimostrato infatti, che a dati diversi possono corrispondere hash uguali (questo perchè i sistemi di hash si limitano a generare un miniriassunto del dato). Questo fenomeno è noto anche come collisione degli hash. Sebbene il senso compiuto della frase ne risenta, è possibile scambiare alcuni dati in una comunicazione senza che l'hash ne risenta... ad esempio un utente che intercetta la comunicazione potrebbe cambiare la frase "ciao mamma" con un ipotetico "Giraffa elefante", che però potrebbe avere lo stesso identico hash. Sebbene un destinatario Umano se ne accorgerebbe immediatamente, il sistema di hash risulta evidentemente insufficiente a garantire che il dato in viaggio sulla rete non sia manomesso da nessuno, ovvero non garantisce l'integrità del messaggio.


Pertanto possiamo affermare che un sito che non è in grado di recuperare la vostra password ( salvo casi in cui si tratti di impossibilità legata a leggi sulla privacy molto restrittive) è un sito che non sta effettivamente crittografando i vostri dati, ma si limita a farne un hashing.

A breve le differenze tra crittografia sincrona e asincrona e una breve spiegazione di come funzionano la firma digitale, i certificati digitali, e la posta certificata :-D

Stay tuned!

martedì 13 marzo 2012

Applicazioni Facebook

Il mercato delle applicazioni facebook è sicuramente tra i più promettenti per le aziende che vogliono emergere nei prossimi anni.
Un'applicazione facebook è fondamentalmente una pagina web che offre all'utente la possibilità di essere riconosciuto nell' applicazione tramite il proprio account facebook.

Il potenziale di queste applicazioni Social è la loro capacità virale di diffondersi e diffondere contenuti, brand, loghi e marchi, così come si diffonderebbe qualsiasi notizia interessante su facebook.

Le aziende che acquistano applicazioni facebook colpiscono una fascia di utenti larghissima, acquisendo un parco clienti vastissimo, e fidelizzando fortemente il cliente. E' possibile infatti offrire ad ogni cliente un contenuto personalizzato, basandosi sui dati e sulle prefenze dell'utente contenute nel suo profilo facebook.

Tramite una applicazione facebook è possibile conoscere ad esempio, previa autorizzazione esplicita e non fraudolenta dell'utente, la sua posizione geografica, la sua età e tutti i suoi dati anagrafici, ma non solo... è possibile conoscere i "like" dell'utente, i suoi interessi, e perfino la sua email...

Ma, assolutamente più importante, è possibile conoscere i suoi amici e  postare messaggi sulla sua bacheca di facebook, venendo quindi visualizzati da migliaia di persone tramite il classico meccanismo delle condivisioni.

Un esempio molto semplice:
Io utilizzo una applicazione che mi permette di organizzare una partita di calcetto con i miei amici di facebook senza dover telefonare a tutti e dieci (se non di più) i potenziali player... l'applicazione crea un evento facebook, e invita i miei amici dietro mia scelta.

Automaticamente sulla mia bacheca comparirà un messaggio che avvisa tutti i miei amici che "ho creato una partita di calcetto tramite la suddetta applicazione facebook". Su qualche centinaio di amici, possiamo presupporre che ce ne saranno almeno una decina che penseranno " to va... comoda questa applicazione", e loro volta decideranno dei utilizzarla almeno una volta... A questo punto si innesca un meccanismo per il quale da dieci si passa a cento utenti, mille e così via...

Inoltre posso pensare di lasciare un messaggio in bacheca anche agli invitati, segnalandogli la partita creata tramite l'applicazione, e espandendo sempre di più la viralità della mia applicazione...

Ecco un esempio di applicazione, sviluppata grossolanamente ad hoc per questo post.. Clicca qui per organizzare la tua partita di calcetto 

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Eagle Belt Buckles