Edit binary files in Linux

In this post I’ll mention how to edit binary files using vi and the utility xxd that is a part of vi.

vi in hex mode

Use the xxd command by typing

:%!xxd

Edit hex data. Quit hex mode with

:%!xxd -r

Using xxd command

You can use the xxd command outside vi. If you have an existing binary file, you can convert it to hex

xxd -g 1 file.bin > file.hex

You can then edit the hex and convert it back to binary

xxd -r file.hex > file.bin

One nice little thing that xxd does is to produce a C static array definition, very convenient for embedding resource files

xxd -i file.bin

Hacked auxiliary port for a car stereo

We’re not sure if [Apachem25] is just lucky, or if installing Auxiliary ports on most car stereos is this easy. The dealership wanted $95 to put one in, but he managed to add a 3.5″ audio-in port to his car stereo for just a couple of bucks.

http://imgur.com/a/qyRSX/layout/blog

The connector on the back of his head unit is a 2×4 set of pins recessed in a protective plastic ring. It turns out that the audio connector cable for a PC CD-ROM drive has a 1×4 socket that is perfect for this. [Apachem25] simply clipped one of those cables in half and used both ends to interface with the Aux port. He found the pin-out for his particular model on the Internet. He needed a specific resistance value between two of the pins to get the deck to let him use the input. All that he needed was a quick bit of soldering. The left, right, and ground are brought around the side and soldered to an audio jack he added in the face plate of the unit.

If you’re still rockin’ the cassette deck our favorite automotive Bluetooth solution is still this one for a classic Beatle.

fonte: hackaday.com

SoShare: condividi fino a 1 TB, gratis

I creatori di BitTorrent, il protocollo di file sharing più diffuso al mondo, lanciano SoShare, servizio gratuito che permette di condividere file fino a 1 TB.

Lo storage e il trasferimento di file via cloud inizia finalmente a prendere piede, anche da noi. Ma restano dei limiti: intanto ci sono i limiti di banda in upload, tipici delle connessioni ADSL, e in più la capacità di storage gratuito offerta dai vari operatori è, per forza di cose, limitata. Al fine di risolvere questo secondo inconveniente, BitTorrent presenta SoShare, un servizio gratuito di sharing di file di grandi dimensioni (fino a 1 TB), finalizzato a permettere alle piccole e medie aziende il trasferimento di contenuti del tutto gratuito.

Come funziona il servizio? Non sono trapelati molti dettagli in merito, ma parrebbe che i file da condividere, una volta caricati nel cloud, impieghino il protocollo BitTorrent per lo sharing con i destinatari, che non devono essere iscritti al servizio per usufruirne (ricevono semplicemente un’email con le istruzioni per il download): trattandosi di un servizio rivolto principalmente alle aziende, si suppone che la banda in upload non sia un problema. Non resta che provarlo: l’indirizzo di registrazione (e scaricamento del plug-in relativo) è https://soshareit.com/signup

Fonte: dday.it

Save MySQL query results into a text or CSV file | a Tech-Recipes Tutorial

MySQL provides an easy mechanism for writing the results of a select statement into a text file on the server. Using extended options of the INTO OUTFILE nomenclature, it is possible to create a comma separated value (CSV) which can be imported into a spreadsheet application such as OpenOffice or Excel or any other applciation which accepts data in CSV format.


Given a query such as

SELECT order_id,product_name,qty FROM orders

which returns three columns of data, the results can be placed into the file /tmo/orders.txt using the query:

SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.txt'

This will create a tab-separated file, each row on its own line. To alter this behavior, it is possible to add modifiers to the query:

SELECT order_id,product_name,qty FROM orders
INTO OUTFILE '/tmp/orders.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY 'n'

In this example, each field will be enclosed in “double quotes,” the fields will be separated by commas, and each row will be output on a new line separated by a newline (n). Sample output of this command would look like:

"1","Tech-Recipes sock puppet","14.95" "2","Tech-Recipes chef's hat","18.95"
...

Keep in mind that the output file must not already exist and that the user MySQL is running as has write permissions to the directory MySQL is attempting to write the file to.

Fonte: tech-recipes.com

Posted by Quinn McHenry

Ottimizzare MySQL: come rendere più veloci le query SQL

  Un tutorial per ottimizzare le query SQL su MySQL Un tutorial per ottimizzare le query SQL su MySQL

L’obiettivo minimo che gli sviluppatori che utilizzano MySQL per le proprie applicazioni raggiungono con una certa dimestichezza è quello di saper scrivere query SQL per ottenere i risultati desiderati. In molti, però, si fermano a questo livello, rinunciando a sondare gli strani misteri che sono patrimonio di un buon database administrator: capita quindi che, al crescere della dimensione dei dati e della complessità delle interrogazioni da implementare, ci si trovi di fronte a problemi apparentemente irrisolvibili o ad applicazioni con tempi di risposta inaccettabili.
Non sempre la determinazione del collo di bottiglia è cosa immediata: spesso è decisamente più facile pensare all’acquisto di hardware più potente, o alla ricerca del parametro di configurazione che, se ben impostato, potrebbe consentire la risoluzione di ogni problema.
Il più delle volte le soluzioni da mettere in pratica non sono queste, o meglio, non lo sono in prima istanza: quello che va fatto è una analisi dello schema del database e delle query eseguite dal server.
Riscrivere qualche interrogazione, ottimizzandola, e sistemare qualche tabella è spesso – non sempre – il solo intervento necessario, e in pochi minuti si può addirittura sbloccare una situazione che sembrava ormai cronica.
MySQL è notoriamente un DBMS molto performante, ma non ci si può fidare alla cieca di questa (pur vera) certezza: una progettazione errata e, soprattutto, query scritte male (spesso conseguenza di un database non normalizzato), sono in grado di affossare le performance di qualsiasi server, è solo questione di tempo, dati e memoria.
MySQL mette a disposizione uno strumento prezioso di analisi, poco conosciuto dai non addetti ai lavori, la funzione EXPLAIN, che sarà l’argomento di questo articolo: ne analizzeremo il funzionamento e, con qualche esempio, vedremo quale sia la metodologia di analisi per ottimizzare il funzionamento delle query.
Questa conoscenza consentirà di restituire un po’ di cicli macchina al vostro server “impallato” e, molto probabilmente, di scongiurare nell’immediato l’acquisto di nuovo hardware, cosa che il vostro capo o il vostro cliente apprezzerà più di ogni altro aspetto della questione.

Ripassiamo gli indici

Gli indici saranno i principali protagonisti della nostra trattazione.
Un indice associato ad una tabella non è troppo diverso da quello che trovate all’inizio di un libro: senza di esso, rintracciare un paragrafo o un capitolo diventa assai difficile e c’è da scorrere tutte le pagine presenti. Se poi c’è da trovare tutte le occorrenze di una certa parola, la situazione diventa ancora più tragica in assenza di un indice analitico.
MySQL utilizza la stessa tecnica vista per il libro: se una tabella non ha indici associati, l’unico modo per ritrovare i record di interesse è eseguire l’operazione che prende il nome di “full table scan”, una lettura riga per riga di tutte le informazioni presenti.
Pensate cosa significhi in termine di I/O effettuare una lettura completa di svariati gigabyte solo per trovare qualche riga che soddisfi una ricerca.
Gli indici sono strutture che “puntano” alle informazioni presenti nella tabella, come una sorta di segnalibri: sono composti da una sequenza di nodi contenenti i riferimenti ai record e vengono utilizzati per velocizzare le ricerche all’interno della tabella stessa, laddove questo sia possibile; sono costruiti sui valori di una o più colonne, e creano corrispondenze tra certi valori delle colonne e le righe dove tali valori si trovano.
Nella metafora vista in precedenza, un nodo dell’indice conterrà il titolo di un capitolo o del paragrafo, e verrà tenuto il riferimento del numero di pagina ove tale informazione si trova.
In MySQL è possibile creare diversi tipi di indice:

  • PRIMARY KEY: è l’indice associato alla chiave primaria, non può contenere valori NULL né valori duplicati. Usato spesso in associazione con la direttiva auto_increment in caso di valori numerici unici.
  • UNIQUE: non ci possono essere valori duplicati, sono consentiti i valori NULL.
  • INDEX: ci possono essere valori duplicati e valori NULL.
  • FULLTEXT: indice specializzato per la ricerca di parole nei testi.

Oltre ad essere strutture generalmente molto più piccole rispetto alla tabella cui fanno riferimento, gli indici hanno un trattamento di riguardo da parte di MySQL: i nodi, comprensivi di valore e puntatore, vengono conservati in un buffer di memoria denominato key_buffer (qua e nel seguito si fa riferimento all’engine MyISAM), che contiene i nodi utilizzati più di recente e, compatibilmente con la memoria disponibile, può anche contenere tutti gli indici del database.
La sua dimensione è data dalla variabile key_buffer_size, impostabile a piacere nella sezione [mysqld] del file my.cnf, il file di configurazione di MySQL che si trova in /etc (o in /etc/mysql a seconda della distribuzione).
Il key_buffer è preferibile che abbia il valore più elevato possibile, più è grande maggiore è la probabilità che il nodo dell’indice richiesto sia già in memoria, compatibilmente però con la RAM a disposizione, cercando di evitare il pericolo di swap del sistema operativo che farebbe degradare le performance.
Le query SQL con condizioni di ricerca espresse su campi indicizzati possono trarre grandi vantaggi in termini di tempo di esecuzione: ci sarebbe ancora da dire molto sulla gestione degli indici da parte del database, ma per i nostri scopi può bastare.
Identificare le query da ottimizzare
Prima di usare EXPLAIN dobbiamo selezionare le query che devono essere oggetto della nostra analisi ma, fortunatamente, non tutte avranno bisogno di essere ottimizzate e potranno tranquillamente essere considerate trascurabili.
Per questo scopo ci serve il contenuto dello slow-log, un file di testo nel quale MySQL scrive tutte le query che vengono eseguite in un tempo superiore al valore impostato nel parametro long_query_time (che di default vale 10 secondi).
Associate ad ogni query vengono inoltre riportate informazioni di fondamentale importanza: data e ora, tempo di esecuzione espresso in secondi, numero di righe, tempo di lock, utente richiedente.
Non essendo lo slow-log attivo per default, dobbiamo abilitarlo inserendo il parametro log-slow-queries[=file_name] nella sezione [mysqld] del file my.cnf: in assenza della parte file_name, che ne può specificare un path e un nome alternativo, il file verrà creato nella directory dei dati e si chiamerà host_name-slow.log. Se non sappiamo quale sia la directory dei dati possiamo scoprirlo con il comando:


mysql> SHOW VARIABLES LIKE 'datadir';

Impostati i parametri in my.cnf sarà necessario il riavvio del server. Il database dovrà lavorare per un po’ di tempo affinché il file di log venga popolato. Per disporre di un contenuto significativo che dia una visione realistica del funzionamento del server occorre che lo slow-log copra diverse ore o, meglio ancora, diversi giorni: per una corretta selezione delle query candidate all’ottimizzazione è bene valutare il funzionamento del database su un arco temporale che copra tutte le variazioni possibili di carico e annoveri il funzionamento di tutte le applicazioni che ne fanno uso, in quanto uno slow-log parziale può portare ad analisi non complete e fuorvianti.
Dall’analisi delle query presente possiamo costruire una lista di interrogazioni da analizzare partendo dalle più lente e più frequenti, facendo molta attenzione però agli eventuali falsi positivi, le query cioè che sono presenti nel log pur non essendo scritte male o lente per loro natura.
Attenzione anche a tutti gli elementi esterni al database possono influenzare le perfomance e che possono rendere “lente” query che, in situazioni normali, non lo sarebbero state: un caso tipico è quello di un applicativo esterno che ha fatto un uso anomalo delle risorse di sistema (tempo macchina o disco) sottraendole agli altri processi, tra cui anche MySQL.
Altro caso assai frequente riguarda le query eseguite durante il backup del database: nel tempo necessario ad eseguire la copia dei dati è probabile che si generino delle slow query conseguente all’intenso I/O.
Altre query da escludere sono quelle poco frequenti, quelle eseguite per errore e quelle eseguite da un amministratore per onerose operazioni di modifica alle tabelle o complesse ricerche. E’ comunque necessario fare uso di un po’ di buon senso: se è vero che in termini generali tali query possono essere trascurate, è altrettanto vero che se una certa query eseguita una volta ogni giorno impiega un’ora non può essere tralasciata, soprattutto se in tale lasso di tempo tiene bloccate risorse (tabelle) per i thread concorrenti.
Se sul server è attiva l’opzione log_queries_not_using_indexes lo slow-log conterrà anche tutte le query che non hanno fatto uso di alcun indice, indipendentemente dalla velocità di esecuzione: questo può essere utile per individuare molte query eseguite in un tempo relativamente basso ma che comunque sarebbero migliorabili.
Se lo slow-log è di piccole dimensioni può essere controllato manualmente, ma nella maggior parte dei casi è sicuramente più comodo l’utilizzo di un programma presente in tutte le installazioni di MySQL, mysqldumpslow, che esegue l’analisi dello slow-log, producendo in output un documento di sintesi in cui le query simili sono raggruppate in base al tempo medio di esecuzione e la frequenza, ordinate a partire dalla più lenta. I parametri numerici e testuali presenti nelle query sono rispettivamente sostituiti con i simboli generici N ed S.
I file di log non sono consultabili da tutti gli utenti e, a seconda delle distribuzioni e della tipologia di installazione, è probabile che ad essi abbia accesso solo l’utente di root oppure l’utente con cui MySQL è in esecuzione (e il gruppo relativo), e questo comporta l’impossibilità dell’analisi in diverse situazioni: il caso più tipico è chi utilizza un database su una piattaforma in hosting, senza avere accesso fisicamente alla shell e alle impostazioni del server.
In tali circostanze o si riesce a replicare localmente l’intera installazione effettuando una analisi in ambiente di pre-produzione (che dovrebbe essere sempre presente, non solo per i test prestazionali), o si è costretti ad eseguire sull’applicazione la misura delle performance, magari scrivendo il tempo impiegato in un file di log che può essere consultato offline.

La funzione EXPLAIN

EXPLAIN viene utilizzata per consultare il “query optimizer”, la sezione del server che effettua le valutazioni su come rendere più veloce l’interrogazione che viene richiesta al database: è questa sezione che decide se un indice dovrà essere utilizzato, l’ordine di verifica delle condizioni ecc.
In pratica, interrogando il query optimizer si chiede a MySQL come intende sviluppare la query.
Le informazioni che fornisce EXPLAIN sono utili per molti aspetti:

  • forniscono indizi circa l’opportunità di aggiunta di alcuni indici alle tabelle;
  • se una tabella ha già degli indici utilizzati, l’output del comando aiuta a capire come vengono utilizzati dal motore;
  • se gli indici esistono ma non vengono utilizzati dal query optimizer, aiuta a scrivere meglio il codice SQL affinché la query venga eseguita beneficiando della presenza dell’indice.

L’uso di EXPLAIN è di estrema importanza per studiare i join che, se male utilizzati, hanno lo svantaggio di poter incrementare a dismisura il carico di lavoro richiesto al server: infatti, se una query che interroga una tabella di 1000 righe è scritta male, nel caso peggiore il server dovrà leggere al massimo 1000 righe; se invece viene effettuato un join di due tabelle di 1000 righe ciascuna, il caso peggiore comporta l’esame di tutte le possibili combinazioni del prodotto cartesiano tra le due tabelle, ossia 1.000.000 di righe!
EXPLAIN può aiutare a riscrivere meglio le query o modificare le tabelle in modo tale che il server risolva il join nel modo meno oneroso possibile, riducendo il numero di combinazioni da esaminare.
EXPLAIN produce una riga di output per ogni tabella referenziata dalla query. L’ordine di visualizzazione delle righe è importante: indica la sequenza che MySQL utilizzerà per considerare le tabelle nella risoluzione dei vincoli di join, indipendentemente da come sono scritte nella parte FROM.
EXPLAIN consente di analizzare qualsiasi query SELECT, ma può essere utilizzato indirettamente anche per UPDATE e DELETE scrivendo una generica SELECT * con le stesse condizioni di FROM e WHERE: solitamente le condizioni usate nelle query di modifica dei dati sono meno complesse di quelle usate in quelle di selezione, il che rende questa operazione non molto frequente.
Primo esempio: utilizzo corretto degli indici
Per il nostro primo esempio utilizziamo il database Sakila di una ipotetica videoteca, liberamente scaricabile da
http://downloads.mysql.com/docs/sakila-db.tar.gz
Delle 22 tabelle presenti ne useremo per i nostri esempi solo 3.

  • film: elenco dei film a catalogo comprensivi di titolo, genere, durata a altre informazioni
  • actor: elenco di attori (nomi di fantasia)
  • film_actor: tabella che di collegamento tra gli attori e i film in cui hanno recitato

Le tabelle sono già ottimizzate a dovere, ma per capire il funzionamento è necessario crearne di nuove non ottimizzate, senza indici:


mysql> CREATE TABLE lista_attori SELECT * FROM actor;
mysql> CREATE TABLE lista_film SELECT * FROM film;
mysql> CREATE TABLE lista_film_attori
SELECT * FROM film_actor;

L’esecuzione di CREATE TABLE … SELECT … consente infatti di copiare tutti i dati di una tabella in una nuova ricreando gli stessi campi ma senza indici.
Eseguiamo una query per trovare i nomi degli attori e i titoli dei film in cui hanno recitato la cui durata è maggiore di tre ore.


mysql> SELECT first_name, last_name, title
-> FROM lista_film, lista_attori, lista_film_attori
-> WHERE lista_film.film_id=lista_film_attori.film_id
-> AND lista_attori.actor_id=lista_film_attori.actor_id
-> AND length > 180;

La stessa query si può scrivere con la sintassi JOIN estesa, in maniera del tutto equivalente anche in termini di performance:


SELECT first_name, last_name, title
FROM
lista_film
INNER JOIN lista_film_attori ON
lista_film.film_id=lista_film_attori.film_id
INNER JOIN lista_attori ON
lista_attori.actor_id=lista_film_attori.actor_id
WHERE
length > 180;

Osserviamo il risultato che restituisce:


| first_name | last_name | title |
| PENELOPE | GUINESS | KING EVOLUTION |
| ED | CHASE | YOUNG LANGUAGE |
...
| MATTHEW | CARREY | WORST BANGER |
200 rows in set (29.02 sec)

lc59_ottimizzazione1

Notate come il tempo di esecuzione sia particolarmente alto. La velocità di esecuzione dipende anche dalla potenza di calcolo del computer, quindi potreste ottenere un risultato un po’ diverso, ma probabilmente dello stesso ordine di grandezza. Vediamo allora come migliorare la situazione.
Proviamo a fare un EXPLAIN della query appena eseguita, il cui output è presente in figura 2 nel primo passaggio:


mysql> EXPLAIN SELECT first_name, last_name, title
-> FROM lista_film, lista_attori, lista_film_attori
-> WERE lista_film.film_id=lista_film_attori.film_id
-> AND lista_attori.actor_id=lista_film_attori.actor_id
-> AND length > 180;

Notiamo anzitutto che i campi type hanno il valore ALL per tutte le tabelle. Ciò significa che per ognuna viene fatto un full scan per ogni combinazione di righe dalle tabelle precedenti. Per conoscere il numero di combinazioni totali è sufficiente moltiplicare tra loro i valori riportati in rows.


mysql> select 200*1000*5462 as prodotto_cartesiano;
| prodotto_cartesiano |
| 1092400000 |

MySQL deve costruirsi oltre 1 miliardo di possibili combinazioni, controllarle una per una per individuare alla fine le 200 righe del risultato che cerchiamo: ecco spiegata la ragione della estrema lentezza della query.
Effettuiamo una prima ottimizzazione creando due indici per consentire di risolvere più facilmente la prima condizioni di join presente nella query (notate come la forma estesa semplifichi la lettura alla ricerca delle necessità di ottimizzazione):


mysql> ALTER TABLE lista_film ADD INDEX(film_id);
Query OK, 1000 rows affected (0.07 sec)
Records: 1000 Duplicates: 0 Warnings: 0


mysql> ALTER TABLE lista_film_attori ADD INDEX(film_id);
Query OK, 5462 rows affected (0.01 sec)
Records: 5462 Duplicates: 0 Warnings: 0

Eseguiamo nuovamente EXPLAIN, il cui output è presente sempre in figura 2 ma nel secondo passaggio.
Notiamo che la situazione è considerevolmente migliorata per la tabella lista_film_attori per la quale è possibile utilizzare l’indice costruito su film_id come ci dice il campo key. Per ogni combinazione di righe dalle tabelle precedenti la tabella in questione mette in gioco 5 righe (rows) e risolve il join con lista_film usando la colonna film_id (ref).


mysql> select 200*1000*5 as prodotto_cartesiano;
| prodotto_cartesiano |
| 1000000 |

Abbiamo ridotto il numero delle combinazioni di tre ordini di grandezza, da oltre un miliardo a un milione. La query eseguita dopo questa prima ottimizzazione impiega oltre un decimo del tempo. Proseguiamo con l’ottimizzazione creando gli indici per agevolare l’altra condizione di join.


mysql> ALTER TABLE lista_attori ADD INDEX(actor_id);
Query OK, 200 rows affected (0.00 sec)
Records: 200 Duplicates: 0 Warnings: 0


mysql> ALTER TABLE lista_film_attori ADD INDEX(actor_id);
Query OK, 5462 rows affected (0.02 sec)
Records: 5462 Duplicates: 0 Warnings: 0

Nel terzo passaggio vediamo come è ulteriormente variato l’output di EXPLAIN.
Siamo ora in una situazione già accettabile: le combinazioni sono scese a 5000 (1000*5*1) con due tabelle su tre in grado di sfruttare un indice.
Notiamo anche che l’ordine delle tabelle è variato e quanto mostrato da EXPLAIN è l’esatta sequenza con cui “query optimizer” aprirà le tabelle e risolverà i join. L’ordine scritto nel FROM non ha alcuna rilevanza: la scelta della sequenza più opportuna è operata in base a quella che è in grado di fornire il risultato migliore.
In questo caso vi è la necessità di effettuare il full scan di lista_film, e viene eseguito come prima operazione per evitare di doverlo ripetere più volte se fosse posticipato nella esecuzione della query, ragion per cui lista_film è la prima tabella considerata.
La necessità di effettuare il full scan è data dalla presenza della condizione sul campo length (length > 180) che non è un campo indicizzato. Proviamo allora a definire un indice anche per esso e vediamo cosa succede.


mysql> ALTER TABLE lista_film ADD INDEX(length);
Query OK, 1000 rows affected (0.02 sec)
Records: 1000 Duplicates: 0 Warnings: 0

L’output della nuova EXPLAIN è indicato come quarto passaggio. Ora anche la prima tabella può sfruttare l’indice e il valore range del campo ref indica che solo un certo intervallo dell’indice viene letto, non tutto.
Calcoliamo la complessità finale della query:


mysql> select 46*5*1 as prodotto_cartesiano;
| prodotto_cartesiano |
| 230 |

Ora eseguiamola nuovamente dopo le ottimizzazioni:


mysql> SELECT first_name, last_name, title
-> FROM lista_film, lista_attori, lista_film_attori
-> WHERE lista_film.film_id=lista_film_attori.film_id
-> AND lista_attori.actor_id=lista_film_attori.actor_id
-> AND length > 180;
| first_name | last_name | title |
| PENELOPE | GUINESS | KING EVOLUTION |
| ED | CHASE | YOUNG LANGUAGE |
...
| MATTHEW | CARREY | WORST BANGER |
200 rows in set (00.01 sec)

Il tempo di esecuzione si è decisamente ridotto!

Un nuovo esempio: riscrivere una query

Supponiamo che siano state inserite delle durate errate nel campo length della tabella film, e il valore corretto sarebbe il 10% in più rispetto ai valori presenti nel database.
Prima di modificare il campo, però, cerchiamo quali sarebbero i film la cui durata sarà superiore alle 3 ore (180 minuti).
Creiamo un indice sul campo length e analizziamo una semplice query:


mysql> ALTER TABLE film ADD INDEX(length);
Query OK, 1000 rows affected (0.14 sec)
Records: 1000 Duplicates: 0 Warnings: 0


mysql> EXPLAIN SELECT title FROM film
WHERE 1.1*length > 180G
********************* 1. row *********************
id: 1
select_type: SIMPLE
table: film
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 927
Extra: Using where

C’è da chiedersi perché non venga utilizzato l’indice definito sulla colonna length. La spiegazione è oltremodo semplice: quando una condizione è espressa in termini di una funzione o di una operazione algebrica applicata ad un campo indicizzato, MySQL non può sfruttare l’indice in quanto non conosce a priori il valore assunto dall’espressione o dalla funzione. Il valore deve quindi essere calcolato riga per riga, obbligando un full scan della tabella, come EXPLAIN correttamente indica.


mysql> EXPLAIN SELECT title FROM film
WHERE length > 180/1.1G
********************* 1. row *********************
id: 1
select_type: SIMPLE
table: film
type: range
possible_keys: length,length_2
key: length
key_len: 3
ref: NULL
rows: 155
Extra: Using where

Provando a scrivere la query con una condizione espressa in un modo diverso ma equivalente, si verifica come l’indice venga correttamente utilizzato.
Forzare l’ordine delle tabelle
Nella maggior parte dei casi le scelte effettuare dal query optimizer per quanto riguarda l’ordine di lettura delle tabelle sono quelle ottimali, ma può però capitare che non lo siano e si voglia costringere MySQL ad operare una scelta diversa: è quindi sufficiente aggiungere alla prima SELECT il modificatore STRAIGHT_JOIN, che farà in modo che l’ordine considerato sarà quello specificato in FROM.
Fortunatamente non capiterà spesso di andare contro le scelte di MySQL, ma come esercizio si può provare a forzare l’ordine delle tabelle per verificare come cambino le performance di una query.

Aggiornare le statistiche

Abbiamo citato il fatto che il valore di rows sia una stima calcolata in base alle statistiche sulla distribuzione degli indici e non il numero reale delle righe selezionate. Non è scopo di questo articolo spiegare gli internal di questa valutazione, ma ciò chi ci preme sottolineare è che i valori utilizzati per le ottimizzazioni devono essere il più aggiornati possibile: è quindi consigliabile eseguire di tanto in tanto il comando


mysql> ANALYZE TABLE nome_tabella;

che ha il compito specifico di effettuare un refresh delle informazioni necessarie.
Non esiste una regola per decidere la frequenza dell’esecuzione, molto dipende dalla quantità di modifiche dei campi indicizzati. Per sicurezza è utile eseguirlo su tutte le tabelle con cadenza giornaliera o settimanale a seconda dei casi (basta affidarsi a cron) e comunque eseguirlo sistematicamente tutte le volte che si fanno modifiche di massa di valori associati ad indice, o dopo aver cancellato grosse parti di una tabella. Anche il comando che segue può servire allo scopo:


mysql> OPTIMIZE TABLE nome_tabella;

Anche OPTIMIZE TABLE aggiorna le statistiche di distribuzione degli indici, ma in più esegue altre operazioni (ad esempio compattare le tabelle per recuperare lo spazio vuoto) e potrebbe risultare più lento.

Conclusioni

Vi abbiamo mostrato come identificare le query più lente sfruttando lo slow-log: in seguito l’uso di EXPLAIN ha mostrato come si possano analizzare tali query al fine di creare gli indici necessari per ridurre il numero di combinazioni di righe e, nel caso in cui tali indici non venissero utilizzati, modificare la struttura della query per permettere a MySQL una migliore ottimizzazione della interrogazione.
Tutto ciò a vantaggio dei tempi di risposta e del fatto che avrete un DBMS in grado di poter assolvere a nuovi compiti.
A volte purtroppo capita anche il caso in cui, nonostante tutte le possibili ottimizzazioni, il sistema risulti ancora troppo lento. Solo in tal caso non resta altro da fare che potenziare l’hardware o pensare a soluzioni basate sulla replicazione o MySQL Cluster a seconda dei casi, ma qua il discorso diventa sicuramente più complesso e sarà oggetto di ulteriori articoli nei prossimi numeri.

Riquadro 1: I campi di una EXPLAIN SELECT

id: valore numerico progressivo che indica la SELECT a cui si fa riferimento; se non sono presenti query annidate o UNION varrà sempre 1.
select_type: categorizza il tipo di SELECT; se non si hanno query annidate o UNION varrà sempre SIMPLE.
table: è il nome della tabella cui le informazioni della riga fanno riferimento.
type: indica il tipo di join. Il suo valore è una misura dell’efficienza con cui MySQL risolve una condizione di join (vedi riquadro 2 per tutti i possibili valori).
possible_keys: indica quali sono gli indici della tabella che MySQL può considerare per identificare la righe che soddisfano la query. Può essere una lista di uno o più valori, o può valere NULL se non ci sono indici o se nessuno degli indici può essere usato.
key: indica il nome dell’indice che “query optimizer” ha deciso di utilizzare. Se il valore è NULL vuol dire che nessun indice è stato usato; questo capita ovviamente se non vi sono indici oppure se optimizer ritiene che uno scan della tabella sia più veloce (tipico di quando il numero delle righe selezionate è relativamente grande rispetto al numero totale di righe della tabella)
key_len: indica quanti byte dell’indice sono usati. E’ un’informazione utile solo nei casi in cui vi sia un indice multiplo, costruito cioè con l’unione di più colonne. Per gli scopi dell’articolo non ci interessa approfondirlo ulteriormente.
ref: indica quali colonne della tabella precedente sono usate per risolvere la condizione di join con la tabella attuale. Vale NULL nel caso della prima tabella.
rows: è un valore numerico che rappresenta il numero di righe messe in gioco dalla tabella. Attenzione però, si tratta solo di una stima calcolata da optimizer in base alle statistiche interne sugli indici, non è il numero delle righe realmente selezionate. Per fortuna ciò che conta non è il valore puntuale ma l’ordine di grandezza di tale numero, che nella quasi totalità dei casi è attendibile. Il valore “vero” lo si può ottenere solo eseguendo la query, cosa che EXPLAIN non fa.
Extra: fornisce informazioni addizionali sul join (vedi riquadro 3 per tutti i possibili valori).

Riquadro 2: I valori del campo Type presente nella EXPLAIN

system: la tabella ha esattamente una riga.
const: la tabella ha una sola riga che soddisfa alle condizioni di join. E’ simile a system ma con la differenza che la tabella può avere molte altre righe.
eq_ref: è letta una sola riga dalla tabella corrente per ogni combinazione di righe dalle tabelle precedenti. Tipico dei join in cui MySQL può utilizzare una primary key per identificare le righe di una tabella.
ref: sono lette diverse righe per ogni combinazione di righe dalle tabelle precedenti. Simile a eq_ref, ma può capitare quando viene usato un indice multiplo o quando non viene utilizzato un indice per intero (solo la parte sinistra).
ref_or_null: simile a ref, ma in più MySQL deve cercare righe contenenti NULL.
range: l’indice è usato per selezionare le righe che cadono in un certo intervallo di valori. Tipico di quando vengono usate condizioni di disuguaglianza, ad esempio id<10.
index: MySQL esegue un full scan dell’indice. Non è un caso piacevole ma sempre meglio di un full scan della tabella. Un indice è più veloce da leggere dei dati reali in quanto è ordinato, solitamente più piccolo dei dati e spesso si trova per buona parte in memoria.
ALL: MySQL esegue un full scan della tabella da disco. E’ la situazione peggiore, soprattutto se si riferisce ad una tabella che non sia la prima: deve essere eseguito il full scan per ogni combinazione di righe dalle tabelle precedenti e le performance peggiorano esponenzialmente. Assolutamente da evitare, specialmente quando la dimensione delle tabelle non è trascurabile.

Riquadro 3: I valori del campo Extra presente nella EXPLAIN

Ecco i valori possibili del campo Extra: quelli con un + identificano valori “buoni”, quelli con – valori “cattivi”.

  • +Using index: MySQL può ottimizzare la query leggendo i valori dall’indice senza dover leggere i corrispondenti dati dalla tabella fisica. Questa ottimizzazione è possibile quando ad esempio vengono selezionate solo colonne che sono indicizzate.
  • +Where used: MySQL usa le condizioni espresse in WHERE per identificare le righe che soddisfano la query. Senza tali condizioni si sarebbero ottenute tutte le righe della tabella.
  • +Distinct: MySQL legge una singola riga dalla tabella per ogni combinazione di righe dalle tabelle precedenti.
  • +Not exists: MySQL riesce ad ottimizzare una condizione di LEFT JOIN non considerando alcune righe.
  • -Using filesort: Le righe che soddisfano la query devono essere ordinate. E’ un passo ulteriore di computazione.
  • -Using temporary: Deve essere creata una tabella temporanea per poter processare la query.
  • -Range checked for each record: MySQL non può determinare in anticipo quale indice utilizzare. Per ogni combinazione di righe dalle tabelle precedenti controlla gli indici della tabella corrente per cercare il migliore da utilizzare. Non è una buona situazione, ma meglio che non usare gli indici del tutto.

Di Corrado Pandiani, pubblicato su Linux&C. n° 59.

Wireless 4 Innovation – eMart

“Sunny Sale” di eMart: successo per l’iniziativa che offre sconti speciali tramite QRCode solo all’ora di pranzogiugno 2012Inquadrando un QR-code con la fotocamera integrata del proprio smartphone è possibile ordinare della merce a casa con sconti speciali, ma c’è una particolarità: i codici disseminati per la città di Seul in Corea del Sud sono utilizzabili solo ad orario di pranzo. È solo tra le 12 e le 13, infatti, che grazie al sole le ombre degli elementi tridimensionali posti su un pannello compongono il codice, rendendolo utilizzabile. Questa l’originale campagna di marketing lanciata a gennaio da eMart – importante catena di supermercati in Corea del Sud che conta 141 punti vendita sul territorio nazionale – per promuovere gli acquisti in una fascia oraria in cui normalmente le vendite subiscono una drastica flessione. Le installazioni sono oggi presenti in 36 diverse località dell’area metropolitana di Seul e hanno da subito ottenuto grande successo. Gli utenti si sono mostrati entusiasti e i risultati non hanno tardato ad arrivare: ad un mese dal lancio del progetto sono infatti 12.000 i coupon utilizzati dagli utenti, le iscrizioni al programma di fidelizzazione della catena sono aumentate del 58% e le vendite nella fascia oraria 12-13 hanno registrato un +25%. A questi risultati si aggiunge la non meno importante pubblicità derivante dalla risonanza ottenuta dall’insolita iniziativa pubblicitaria sui principali mezzi di informazione nazionali e internazionali.

viaWireless 4 Innovation – eMart.

I social network dei professionisti, fra cautela e curiosità

Le reti sociali sono potenzialmente un nuovo strumento di comunicazione e contatto con colleghi e clienti, ma tutti concordano di non poter affidare al caso la partecipazione. Le opinioni di avvocati, commercialisti, notai e architetti.

Esperienze

Curiosità, interesse. Ma anche cautela. È con un misto di sentimenti che molti professionisti stanno guardando ai social network, in questo periodo.

O, almeno, questo è vero per i più attenti alle novità che vengono dai nuovi media, a quanto risulta da una ricognizione compiuta su cinque di loro (due avvocati, un commercialista, un notaio e un architetto).

Sono professionisti noti per avere una certa familiarità con le nuove tecnologie. Si rendono conto che i social network sono potenzialmente un nuovo strumento di comunicazione e contatto con colleghi, studenti . E anche un modo per farsi conoscere professionalmente.

Tuttavia, qualunque sia il loro livello di utilizzo dei social network, tutti concordano di non poter affidare al caso la propria partecipazione. C’è una bella differenza, insomma, tra l’uso personale e quello professionale.

Se si aderisce a un network, a scopi professionali, bisogna per prima cosa seguirlo con attenzione, partecipare con costanza e contribuire con contenuti rilevanti (non scritti di getto). Infine- concordano-, bisogna avere cautela su quello che si scrive: il rischio di diffondere informazioni riservate è sempre in agguato.
Le esperienze
La selezione è importante, non solo dei contenuti ma anche dei posti da presenziare. «Quando sono sbarcato sui social non c’erano molti colleghi e mi sono messo ad osservare: volevo capire come un avvocato potesse utilizzare questo nuovo strumento per fini professionali. Li ho provati tutti, ma ho conservato i profili solo su alcuni, quelli più utili per un avvocato (Linkedin, Twitter, Facebook e Google+)», dice Ernesto Belisario, avvocato pioniere di questi temi.

«Dopo tanta osservazione ho iniziato a condividere: notizie, approfondimenti, eventi. È grazie ai social che mi informo, che dialogo con amici e clienti. Ma senza l’ossessione del numero di follower: dopotutto, non sono “Lady Gaga”», aggiunge. A conferma che per un professionista sui social vale più la selezione (la “qualità”), che la quantità. In generale quindi contano criteri diversi rispetto a quelli di una partecipazione personale.

Concorda Guido Scorza, avvocato specializzato in nuove tecnologie: «sui social ho condiviso e continuo a condividere informazioni e questioni delle quali mi occupo professionalmente. O di cui ci si occupa nel mio studio. È un modo per fare informazione giuridica e confrontarsi con colleghi e società».

Molto intensa è l’attività social professionale di Arrigo Panato, commercialista: «il mio studio è presente su tutti i principali social network con una propria pagina alimentata automaticamente dagli aggiornamenti dei nostri blog o riportando gli articoli apparsi su riviste professionali», dice. È un approccio cattedratico, perché «il dialogo con la rete preferisco gestirlo in prima persona con il mio account personale».

«Una pagina Facebook deve essere molto focalizzata. noi gestiamo sia una pagina di studio sia una pagina di supporto al manuale sulle perizie di stima. Questa ci sta dando molte soddisfazioni e ha superato i 300 fan. Per essere un argomento così specifico anche per i commercialisti non è poco», continua.

«Alcuni studenti hanno usato il libro e la pagina Facebook per preparare la tesi, scambiarsi consigli e chiedermi suggerimenti. in poco tempo si è creata quasi una comunità di pratica».

Diversa è l’esperienza di Fabio Fornasari, architetto: «ogni mio progetto si misura a diversi gradi in generale con la rete. Per esempio http://laboratoriomuseodiffuso.wordpress.com. In ambiente fisico raccolgo i commenti giacché la gente è restia a parlarne. Ma su alcune pagine Facebook si trovano scambi che fanno riferimento al progetto». «Non uso troppo Twitter, per mancanza di tempo. Facebook  sì perché qui i contributi giocano non sul secondo ma sulle ore: riesco meglio. Ma potessi avere qualcuno che lavora per me lo userei di più. LinkedIn lo aggiorno non troppo spesso, ma penso sia utile», aggiunge.

Il notaio Giampaolo Doria invece sta ancora valutando il da farsi. «Il nostro studio non si è ancora dotato di una pagina su nessun social network, pur essendo presente su internet con un proprio sito», spiega. Tuttavia, «stiamo lavorando ad un sito di nuova generazione che ci consenta di pubblicare immediatamente anche su Facebook alcune notizie mano a mano che le pubblichiamo sul nostro sito».

Perché questa scelta? «Fino ad oggi siamo stati molto prudenti con questo tipo di apertura perché per il tipo di attività professionale svolta abbiamo sempre ritenuto preferibile mantenere un atteggiamento piuttosto sobrio».
«Nondimeno, i recenti sviluppi normativi, in materia di deregolamentazione delle libere professioni,  stanno spingendo sempre di più i liberi professionisti a dover essere maggiormente incisivi nel mercato e, quindi, a dover impiegare sempre di più ogni tecnica per farsi conoscere da un pubblico più o meno ampio».
L’utilità dei social
Prima di vedere come usare i social con efficacia, chiediamoci a che cosa possano servirci. Belisario ritiene che ci siano tanti motivi per cui un professionista dovrebbe utilizzare i social media.

«Il primo: nella società dell’informazione, non è più possibile aspettare di ricevere la rivista cartacea per approfondire e studiare. Nel 2012, la tempestività nell’accesso alla conoscenza diventa un importante fattore competitivo e può essere assicurata solo attraverso i social; il primo passo per un professionista dovrà essere quello di selezionare attentamente i contatti tra le fonti più autorevoli nelle materie di attività».

Il secondo motivo: «grazie ai social possiamo conoscere in modo puntuale i trend del mercato, in modo da poter intercettare al meglio le esigenze dei clienti (acquisiti e potenziali)».

«Infine, certo c’è un’utilità promozionale e di marketing; ma attenzione a non enfatizzare: i clienti non arriveranno solo perché siamo sui social, ma se dimostreremo di essere seri e competenti».

Sulla stessa linea Scorza: «la presenza di uno studio sui social ha un duplice valore: è un’importante vetrina per presentarsi ad un pubblico ormai amplissimo di potenziali clienti in modo, peraltro, colloquiale e non “aggressivo” e, soprattutto, consente di intercettare esigenze e problemi della società, dei cittadini e delle imprese con straordinaria rapidità. Si può rispondere così a un’esigenza di costante aggiornamento. Fondamentale per uno studio professionale moderno».

Panato insiste sull’aspetto di arricchimento e conoscenza: «è incredibile la ricchezza di suggerimenti e proposte che possono arrivare dalla rete per ridisegnare lo studio professionale, per ridefinire la nostra strategia, per restare aggiornati ed approfondire argomenti specifici anche professionali».
I consigli
Ma come usare i social network?  C’è una regola d’oro, concordano i professionisti: bisogna partecipare attivamente ai social dove si è presenti. «Se si sceglie di esserci, occorre investirci tempo e risorse. Frequentare la pagina, coltivarne gli utenti e tenerla aggiornata, verificando, costantemente, i feedback che si ricevano», spiega Scorza. «Niente di peggio di invitare qualcuno a casa propria per un confronto, dichiararsi disponibili al dialogo e poi non dedicargli tempo e attenzioni».

«Ma bisogna evitare di essere autoreferenziali», precisa Belisario. «Le persone non hanno tempo da perdere e non sono interessate a chi si imbroda, bisogna accettare le dinamiche del Web 2.0.

Bisogna anche mettersi dalla parte dell’utente: cercando di capire qual è il valore aggiunto che un utente ha se ci segue. E quindi lavorare sui contenuti di qualità», aggiunge.

Concorda Panato: «Il rischio su Facebook è confondere il lato personale con quello professionale e perdere di costanza e profondità negli aggiornamenti. Per essere credibili bisogna essere costanti e pubblicare approfondimenti attendibili nonostante lo strumento spesso porti a privilegiare l’immediatezza ed una certa superficialità».

Infine, una cautela: «attenzione alla riservatezza: non divulgare informazioni che devono rimanere segrete», dice Belisario. «Non bisogna mai dimenticare i poteri e doveri di sorveglianza dei rispettivi organi o ordini di appartenenza, i quali continuano a vigilare sui contenuti social. Con risvolti certamente ancora da scoprire», dice Doria.

di Alessandro Longo

fonte: ict4executive.it

PHP – Retrieving XML With Curl and SimpleXML – PHP Tutorials

Retrieving XML With Curl and SimpleXMLIntroductionPHP 5 introduces SimpleXML and its a perfect name as parsing XML data is truly simple. In this tutorial we&apos;ll be using curl to retrieve the XML data from a remote web server. We&apos;re going to create a class to connect to the remote web server and pass POST data to the server and based on the POST data the remote server will return valid XML. The class will parse the XML response and return an array containing the data. For the sake of simplicity in this tutorial we&apos;re not going into detail on the workings of the remote server generating the XML responses.

The first thing we&apos;re going to cover is the simple script used to call the class.

<?
$URL = ‘http://www.example.com/XML’;
$request = ‘getInventory’;
$parameters = array(“param1” => “value1”, “param2” => “value2″);

$XMLClass = new getXML;
$response = $XMLClass->pullXML($URL,$request,$parameters);
?>

This simple script is all that is needed to use the class. We need to set the URL, request, and attributes being passed for the request. The $XMLClass = new getXML initializes the getXML class discussed later on in the tutorial. The response data of the request is stored in $response. For this example we’re going to use the following XML.

<?
<xml>
<data>
<row attribA=”valueA” attribB=”valueB”/>
<row attribA=”valueC” attribB=”valueD”/>
</data>
</xml>
?>

var_dump($response)  would be
array2 { [0]=> array2 { [“attribA”]=> string6 “valueA” [“attribB”]=> string6 “valueB” } [1]=> array2 { [“attribA”]=> string6 “valueC” [“attribB”]=> string6 “valueD” } }

Come tenere sotto controllo i costi del Cloud Computing

Come tenere sotto controllo i costi del Cloud Computing

I servizi sulla “nuvola” promettono efficienza e risparmio, ma spesso è difficile valutare e monitorare correttamente costi e benefici ad essi collegati. Esistono però strumenti ad-hoc creati per tenerne traccia ed identificare sprechi e possibili aree di risparmio. Ecco i principali

di Andrea Ferretti

analisi

06 Novembre 2012

Le aziende abbracciano il paradigma del Cloud Computing attratte da risparmi e maggiore efficienza, ma spesso non è semplice monitorare i costi dei diversi servizi che si utilizzano, e il rischio che questi lievitino sforando il budget preventivato è considerevole.

In questo contesto si inseriscono una serie di strumenti progettati ad hoc per tenere sotto controllo i servizi in Cloud Computing di diversi provider utilizzati in azienda, identificando sprechi e possibili aree di risparmio.

I principali sono Cloudability (https://cloudability.com) e Right Scale Cloud Management (http://www.rightscale.com), che supportano un ampio ventaglio di fornitori di servizi Cloud SaaS, PaaS e IaaS, come Salesforce, Amazon, Google, Microsoft e molti altri. A questi si aggiungono uptimeCloud (www.uptimecloud.com) e Cloudyn (http://cloudyn.com), progettati per funzionare con Amazon.

Nella maggior parte dei casi utilizzarli è gratuito per un account con funzionalità base, mentre la versione avanzata prevede il pagamento di un canone mensile.

Tra le opzioni, notifiche personalizzabili che possono essere impostate per inviare un report giornaliero via mail che riporta i costi sostenuti con i diversi fornitori per i servizi usati nella giornata, oppure per avvisare di uno sforamento del budget preventivato a livello giornaliero, settimanale o mensile.

Dai dati diffusi da Cloudability (il servizio più noto e quello che supporta il maggior numero di provider) emerge che i clienti dell’azienda spendono in media 20.000 dollari al mese nel Cloud attraverso 4 account sottoscritti con diversi provider.

Ogni fornitore utilizza metodi di fatturazione diversi, alcuni prevedono il versamento di una quota mensile per dipendente, altri si basano su un modello a consumo effettivo. Tenere traccia dei costi sostenuti si complica quindi ulteriormente, in particolare per realtà aziendali molto complesse.

Questi servizi di gestione e monitoraggio offrono una dashboard grafica che riunisce tutte le informazioni necessarie a decifrare l’andamento di costi e consumi a colpo d’occhio, con strumenti di analisi che permettono di scendere nel dettaglio di applicazioni, fornitori, utilizzatori e molte altre dimensioni.

Menzione a parte merita invece PlanForCloud di Right Scale (http://www.planforcloud.com), strumento che permette di creare una simulazione dettagliata ed un piano a 3 anni di implementazione di servizi Saas, PaaS e IaaS in Cloud Computing, analizzando nel dettaglio costi e benefici di varie configurazioni con fornitori differenti e permettendo così un approccio ragionato e consapevole al mondo della “nuvola”.

fonte: ict4executive.it

Come salvaguardare il business e la reputazione in Rete

Come salvaguardare il business e la reputazione in Rete

Dalla definizione delle priorità al monitoraggio dei social media, ecco il decalogo di MarkMonitor per una efficace protezione del brand

di Luigi Ferro

Brand protection

09 Gennaio 2013

Aiutare le aziende a salvaguardare la reputazione e il business in Rete. E’ questo l’obiettivo del decalogo stilato da MarkMonitor, società specializzata nella protezione dei marchi. Vediamo le regole più importanti da seguire.

Definire le priorità

La questione è capire il “chi, cosa, dove e quando” dell’abuso del marchio. Un buon punto di partenza è quello di rivedere l&apos;intelligence fornita dal programma di protezione del marchio. Cercare risposte a domande come: chi sono i maggiori responsabili? Quali sono le tattiche comuni utilizzate dai cybercriminali? Dove avvengono gli abusi e quali siti Web violati ricevono la maggior parte del traffico? Quando si verifica l’effetto maggiore delle violazione?

Agire tempestivamente

A queste domande bisogna poi dare delle risposte agendo con tempestività. Diagnosi e azione anticipata aumentano infatti il successo degli sforzi di tutela del marchio. Se si riesce a intercettare per tempo i siti che operano in modo illegale è facile che i cybercriminali decidano di non investire tempo e denaro per un sito già monitorato.

Focus sulle reti, non sui singoli

La soluzione migliore rimane però quella di concentrarsi sulle reti criminali, non sui singoli operatori. Individuare i truffatori online uno per uno può richiedere molto tempo e non è particolarmente efficace. E’ meglio tentare di identificare le reti di siti non autorizzati, a volte migliaia, gestiti da un singolo individuo o da un gruppo. Si inizia dalla verifica dei registri Whois e dall’esame di indirizzi IP seguendo le analogie che collegano i siti tra loro. In questo caso è necessaria però una soluzione tecnologica che permetta di risparmiare tempo e risorse, automatizzando il processo.

Monitorare i social media

Il monitoraggio dei social media è fondamentale. Occorre tenere sotto controllo i siti che imitano il vostro marchio e tutte quelle pagine che potrebbero ingannare i vostri fan e follower. E quando si rilevano casi di contraffazione del marchio e frodi, assicurarsi di utilizzare gli strumenti di controllo forniti da questi siti.

Controllare i canali di vendita

Nei canali digitali, rivenditori e affiliati fanno da moltiplicatore, portando nuovi clienti e traffico sul vostro sito. Deve essere però un lavoro di squadra, con una policy condivisa che regoli eventuali offerte fatte con determinate parole chiave. Se gli affiliati fanno offerte su parole chiave del brand, stanno essenzialmente intercettando del traffico destinato al vostro sito. Bisogna quindi sviluppare una politica chiara per l&apos;uso delle parole chiave ed essere sicuri che rivenditori e affiliati abbiano capito i termini e le condizioni della partnership.

Stabilire chiare metriche ROI

Anche per la protezione online è necessario stabilire metriche per calcolare il ritorno sull’investimento come si fa per altre iniziative di marketing digitale. in analogia a quanto si fa per altre iniziative di marketing digitale. Si inizia con la definizione di obiettivi concreti per il programma di protezione del marchi, individuando le metriche che verranno utilizzate per misurare le performance e il ROI. Se la paid search è una parte importante del vostro programma di protezione del marchio, misurate i miglioramenti in termini di CPC (Cost per Click) e/o altri indicatori quali il traffico web, i tassi di conversione (le visite e gli acquisti realmente effettuati) e i ricavi.

Attenzione ai nuovi domini

Con il lancio di nuovi domini di primo livello generici (gTLD), le pratiche di registrazione “difensive” del passato dovranno essere rivedute. Tentare di registrare ogni variazione, errore di ortografia e typosquatting in ogni dominio di primo livello nuovo diventerà presto un costo proibitivo. Cercate di avere un occhio critico sul vostro portafoglio di domini, abbandonando quelli che non servono più (domini associati a promozioni scadute, prodotti obsoleti e via dicendo).

Mettere in sicurezza i domini più importanti

Gli attacchi di social engineering e altri tipi di violazione della sicurezza dei nomi a dominio sono in netto aumento. Ecco perché l&apos;azienda deve individuare i suoi nomi a dominio più preziosi e, se possibile, bloccarli a livello di sistema di registro, in modo da evitare azioni fraudolente.

La brand protection inizia prima del lancio del prodotto

Le attività di protezione del marchio iniziano ben prima che il prodotto venga lanciato. In realtà, la protezione del marchio riguarda tutto il ciclo di vita del prodotto ed è consigliato coordinare le attività di registrazione dei marchi con quelle di registrazione del nome a dominio per moltiplicare le difese del brand.

Sincronizzare strategia di protezione del marchio ed espansione internazionale

Man mano che i consumatori utilizzano i canali digitali, i cybercriminali prendono atto di nuovi comportamenti e reagiscono di conseguenza. Per questo è necessario espandere le attività di tutela del marchio. Identificate i principali mercati geografici specifici, siti di aste, motori di ricerca e siti di social media. Definite una strategia di protezione del marchio scalabile in modo che la vostra azienda possa facilmente adattarsi e rispondere agli specifici canali per paese.

fonte:
Come salvaguardare il business e la reputazione in Rete.

Comprimere e decomprimere files: uso di tar.gz

Per estrarre i file .tar.gz
tar -xpvzf nomefile

Si ricordi i seguenti parametri per il comando
tar

  • c: crea archivi
  • x: li decomprime
  • v: scorre la lista dei file, generalmente evitato nella (de)compressione in quanto potrebbe produrre un lungo output inutile
  • z: comprime/decomprime in formato gzip
  • j: comprime/decomprime in formato bzip2
  • f: obligatorio per comprimere
  • p: preserva i permessi

Specifichiamo quindi l’uso di tar per creare un archivio:
tar -cvzpf nome_archivio.tar.gz /percorso_directory_da_archiviare

Escludere file:

IMPORTANTE:
Nel caso in cui si aggiungano le cartelle da escludere, il percorso deve essere completo del ./ iniziale, NON deve essere presente il / finale.
Se non funziona, verificare di inserire la cartella da escludere SENZA ./ iniziale ne finale.

tar --exclude ./percorso/del/file_da_escludere -cvzpf nome_archivio.tar.gz ./percorso_directory_da_archiviare

Escludere determinate estensioni:
tar --exclude ‘*.estensione_da_escludere’ -cvzpf nome_archivio.tar.gz /percorso_directory_da_archiviare

Escludere determinate directory:
tar --exclude ./percorso/della/directory_da_escludere -cvzpf nome_archivio.tar.gz /percorso_directory_da_archiviare

P.S. ovviamente se i file e/o determinate estensioni e/o determinate directory dovessero essere molteplici, potrete utilizzare tutti gli --exclude che desiderate!

Per esempio:
tar --exclude ./_backup_db --exclude ./_backup_site --exclude ./civicrm_custom --exclude ./wp-admin --exclude ./wp-includes --exclude ./.git --exclude wp-content -cvzpf my-file-backup.tar.gz ./

Oppure possiamo racchiuderli tutti tra parentesi:
tar -cvzpf my-file-backup.tar.gz ./ --exclude={./_backup_db,./_backup_site,./.git,./wp-admin,./wp-content,./wp-includes}

Oltre la Customer satisfaction

Oggi ciò che influisce di più sull’inclinazione dei clienti a spendere per un brand è da un lato il miglioramento della Customer experience e dall’altro la possibilità di accedere rapidamente alle informazioni e di rivolgere domande all&apos;azienda. Uno studio europeo commissionato da Oracle, che coinvolge chi acquista online, spiega perché il servizio al cliente deve fare ancora dei passi avanti

La Customer satisfaction non basta più, ora è il momento della Customer experience. Lo afferma Oracle che ha presentato i risultati di studio nel quale sostiene come la Customer experience svolga un ruolo chiave ai fini della crescita del fatturato delle imprese europee e rappresenti un canale privilegiato per la differenziazione del marchio, in un’economia nella quale prodotti e servizi diventano sempre più una commodity.

Il diverso rapporto con i clienti e la loro esperienza d’acquisto fanno la differenza al punto che lo studio, titolato “Perché la Customer Satisfaction non basta più!” spiega che nell’81% dei casi i consumatori/acquirenti sarebbero disposti anche a pagare di più pur di vivere un’esperienza di acquisto qualitativamente migliore (89% in Italia). E circa la metà (44%) si è detta pronta a pagare un sovrapprezzo di oltre il 5% (il 32% in Italia).

Ciò che influisce di più sull’inclinazione dei clienti a spendere di più per un brand sono da un lato il miglioramento della Customer Experience in generale (40% della totalità del campione, 30% dei rispondenti italiani) e dall’altro la possibilità di accedere rapidamente alle informazioni e di rivolgere domande all&apos;azienda (35% della totalità del campione, 44% italiani).

I clienti soddisfatti sono pochi

Realizzato a livello europeo nel giugno 2012 dalla società di ricerca Loudhouse che ha coinvolto 1.400 consumatori che hanno fatto acquisti online (50% donne, 50% uomini) e che sono entrati in contatto con un dipartimento di customer service nei 12 mesi precedenti, il report spiega che il 70% degli intervistati ha smesso di acquistare un determinato brand dopo un&apos;esperienza insoddisfacente (62% in Italia) rivolgendosi nel 92%dei casi a una marca concorrente (94% in Italia).

Dall’indagine i customer service non ne escono molto bene. I clienti soddisfatti sono il 22% in totale e il 20% in Italia. Esistono ampi margini di crescita anche perché fra i cinque elementi che motiverebbero i consumatori a spendere di più ci sono il miglioramento della Customer experience in generale (40% – 30% in Italia), la garanzia di poter rivolgere agevolmente domande e di poter avere informazioni con facilità prima di effettuare un acquisto (35% – 44% in Italia) e l’adozione per il 32% (29% in Italia) di policy che facilitino la restituzione dei prodotti.

Online contano usabilità e personalizzazione

Visto che il campione è fatto di acquirenti online, gli ultimi due motivi per consumare di più riguardano il miglioramento dell’usabilità e delle funzioni di ricerca del sito web (26% -13% in Italia) e una maggiore personalizzazione dell’esperienza d’acquisto dei clienti (20% in totale e in Italia).

Una forte richiesta di semplificazione arriva dall’82% degli utenti (85%) che descrive le proprie esperienze come eccessivamente complesse, suggerendo che la fedeltà a un marchio sia strettamente legata alla semplicità di comunicazione. I clienti hanno confermato di aver dovuto utilizzare modalità di contatto diverse in caso di problemi (26%, in Italia 27%) e di averle dovute utilizzare più volte (24%, in Italia 25%). Dialogare con il customer service non è sempre facile.

Visto che si parla di online c’è spazio anche per i social media. Molte imprese non li starebbero sfruttando al meglio. Solo il 46% dei clienti ha ricevuto un feedback dopo aver postato un commento. Una piccola attenzione che ha gratificato il 27% dei consumatori. Il 9% ha reagito postando un commento positivo sull’organizzazione, il 6% è divenuto un cliente fedele, acquistando più prodotti o servizi e il 6% di intervistati ha cancellato il post negativo originario. Attenzione però al tipo di risposta. il 29% dei clienti si è arrabbiato nel momento in cui la risposta ricevuta non ha portato alla risoluzione del problema.

Un dato importante perché può tradursi in immagine negativa per il brand. Tra i fattori che sembrano maggiormente influenzare le decisioni d&apos;acquisto, oltre al prezzo (56%, 52% in Italia), ci sono infatti proprio le review dei consumatori (47%, 52% in Italia) che frequentano soprattutto Facebook (26%), forum (16%), blog (9%) e Twitter (6%).

Fonte: ict4executive.it di Luigi Ferro

Modificare le immagini con ImageMagick

Informazioni sull’ immagine

Per ottenere le informazioni relative alle dimensioni dell’immagine

identify [nome del file]

Si sa che dall’avvento delle fotocamere digitali tutti noi siamo diventati dei provetti fotografi e per dimostrare ciò non manca mai l’occasione per scattare decine e decine di fotografie “Tanto poi se non mi piacciono le cancello!”. Ci si ritrova così con il computer pieno zeppo di fotografie, magari ad alta risoluzione, che occupano molto spazio.

Grazie alla crescente popolarità dei Social Network tipo Facebook o MySpace è prassi condividere le proprie fotografie con parenti e amici. Per agevolare il caricamento delle fotografie sul web è opportuno ridimensionarle in modo da renderle più leggere e facilmente gestibili.

Prassi normale

Ok, ma come faccio per modificare le immagini?
Normalmente apro un programma di fotoritocco tipo PhotoShop o l’ottimo GIMP e ridimensiono le immagini una alla volta. Questo metodo va benissimo, ma cosa succede se ho 50, 100 o anche più fotografie? Sicuramente impiegherei non meno di qualche ora per terminare il compito.

Un metodo più veloce

Siccome di natura sono un po’ pigro, la soluzione che adotto normalmente è l’utilizzo della suite ImageMagick che è una serie di tool a riga di comando, disponibile per tutte le distribuzioni GNU/Linux, Windows e Mac OS X. Per l’installazione su GNU/Linux utilizzate il vostro gestore di pacchetti preferito (apt-get, Synaptic, YaST…) mentre per installarlo su Windows o Mac OS X il sito da cui scaricarlo è http://www.imagemagick.org.

Vediamo ora due dei comandi maggiormente utilizzati, ovvero convert e mogrify.

Convert

Questo comando “converte” l’immagine di partenza e salva le modifiche in un nuovo file; l’immagine originale non viene alterata.

Ad esempio, per ridimensionare l’immagine originale.jpg da 2560×1920 pixel a 1000 pixel di larghezza mantenendo le proporzioni e salvarla nel nuovo file modificata.jpg digitate nel terminale:

convert -geometry 1000x originale.jpg modificata.jpg

nel giro di uno o due secondi l’immagine è modificata e salvata. Semplice vero?

Per ridimensionare 100 immagini a 1000 pixel di larghezza presenti nella cartella di lavoro basta digitare nel terminale (tutto in una sola riga, mi raccomando):

for i in *.jpg; do convert -geometry 1000x $i thumb-$i; done

ovviamente questo comando funziona anche con le percentuali, ma in questo caso bisogna usare l’opzione -scale al posto di -geometry:

for i in *.jpg; do convert -scale 50% $i thumb-$i; done

Il comando convert permette di convertire immagini in diversi formati, ad esempio per convertire originale.jpg in orginale.png:

convert originale.jpg originale.png

Mogrify

Il comando mogrify agisce sostanzialmente come convert con l’importante differenza che sovrascrive l’immagine originale. Se si desidera mantenere una copia dell’immagine originale è opportuno effettuare un backup.

I comandi precedenti possono essere riscritti nel seguente modo:

mogrify -geometry 1000x originale.jpg

Il comando seguente ridimensiona tutte le immagini con estensione .jpg presenti nella cartella:

mogrify -geometry 1000x *.jpg

oppure

mogrify -scale 50% *.jpg

Comodo vero?
Bene, per questa volta abbiamo terminato ma torneremo presto sull’argomento ImageMagick perchè utilizzato in uno script Bash ci permette di ottenere dei risultati interessanti.

How to migrate wordpress blog

This weekend I migrated my blog to a new vps, the article describes how to configure and install a blog based on wordpress with lighttpd and mysql. The reference platform is Debian Squeeze.

1. Backup your blog

From old vps,  stop Service

/etc/init.d/lighttpd stop
/etc/init.d/mysqld stop

Backup database

cd /root
mysql -u wp_admin -p wordpress > ./wordpress_db_backup.sql
tar -pczf wordpress_db_backup.sql.tar.gz ./wordpress_db_backup.sql

Backup content

tar -pczf sitebackup.tar.gz /var/www/yourwordpressblog/

2. Copy data from old vps

From new vps, transfer site backup

scp root@oldvps:/root/sitebackup.tar.gz ./

Transfer database backup

scp root@oldvps:/root/databasebackup.tar.gz ./

3. Install and Configure Mysql

Install MYSQL

apt-get install mysql-server mysql-client

Create Password for the Mysql user root

mysqladmin -u root password yourrootsqlpassword

Create database

mysqladmin -u root -p create wordpress

Set permission to user wp_admin on database with name “wordpress”

mysql -u root -p
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_admin'@'localhost' IDENTIFIED BY 'wp_admin_password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_admin'@'localhost.localdomain' IDENTIFIED BY 'wp_admin_password';
FLUSH PRIVILEGES;
quit;

Extract dabase backup

tar xvfz wordpress_db_backup.sql.tar.gz

Restore database

mysql -u wp_admin -p wordpress < wordpress_db_backup.sql

4. Install and configure Lighttpd with php

Install lighttp

apt-get install lighttpd

Install php

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Configure Lighttpd

ln -s /etc/lighttpd/conf-available/05-auth.conf /etc/lighttpd/conf-enabled/05-auth.conf
ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf
ln -s /etc/lighttpd/conf-available/10-simple-vhost.conf /etc/lighttpd/conf-enabled/10-simple-vhost.conf
ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

Edit /etc/lighttpd/lighttpd.conf and enable “mod_rewrite”

From this:

#	"mod_rewrite";

to this:

	"mod_rewrite"

Save and close.

Configure wordpress site on lighttpd
Edit /etc/lighttpd/conf-available/10-simple-vhost.conf

Insert:

## Your wordpress blog
$HTTP["host"] == "www.yourwordpressblog.com" {

        server.document-root = "/var/www/yourwordpressblog/"
        server.errorlog = "/var/log/lighttpd/yourwordpressblog/error.log"
        #accesslog.filename = "/var/log/lighttpd/yourwordpressblog/access.log"
        url.rewrite = (
                "^/(wp-admin|wp-includes|wp-content|download)/(.*)" => "$0",
                "^/(sitemap.xml|sitemap.xml.gz|robots.txt)" => "$0",
                "^/(.*.php)" => "$0",
                "^/(.*)$" => "/index.php/$1"
        )
        url.access-deny = ("wp-config.php")
}

#OPTIONAL: Secure rules to protect /wp-admin/
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.passwd"
#auth.debug = 2

auth.require = ( "/wp-admin/" =>
(
"method" => "digest",
"realm" => "Authorized users only",
"require" => "valid-user"
)
)

#OPTIONAL: Redirect rule in case of multiple domain
$HTTP["host"] =~ "www.yourwordpressblog.it|yourwordpressblog.it|www.yourwordpressblog.net|yourwordpressblog.net|www.yourwordpressblog.org|yourwordpressblog.org" {
  url.redirect = ( "^/(.*)" => "http://www.yourwordpressblog.com/$1" )
}

Save and close.

Create Log directory

mkdir /var/log/lighttpd/yourwordpressblog

Set Permission

chown www-data:www-data /var/log/lighttpd/yourwordpressblog

Optional step, to protect /wp-admin/ folder create “.passwd” file:
Install htdigest

apt-get install apache2-utils

Create “.passwd” file

htdigest -c /etc/lighttpd/.passwd ‘Authorized users only’ administrator

Exctract sitebackup.tar.gz

tar xvfz sitebackup.tar.gz

Move the content of the blog in /var/www/yourwordpressblog

mv ./sitebackup /var/www

Set permission:

chow -R www-data:www-data /var/www/yourwordpressblog

Restart lighttpd

/etc/init.d/lighttpd restart

Now the blog has been migrated to the new vps, comments are available to you if you have any suggestions.

NOTE:
If  permalink don’t work, and return error 404, check if rows below are there :

# BEGIN WordPress

<IfModule mod_rewrite.c>
ErrorDocument 404 /index.php?error=404
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Thanks,

Crescono i servizi di hosting e cloud e i datacenter si rimpiccioliscono

Crescono i servizi di hosting e cloud e i datacenter si rimpiccioliscono.

Nell’era del cloud computing e dell’outsourcing dei datacenter, un numero sempre più ampio di aziende inizia a credere che forse la scelta di creare un proprio centro dati non è la scelta migliore, considerate le spese. “Bisogna considerare la corrente elettrica, i generatori, gli UPS, i rack e il sistema di raffreddamento ancor prima di aver installato il primo server – dice Tim Antonowicz, senior architect di Mosaic Technology -. Con la virtualizzazione, le risorse computazionali sono delle commodity, così sarà qualcun altro a doversi occupare di comprare i server”. Questo, in realtà, non vuol dire che i datacenter privati scompariranno. Tuttavia, saranno destinati, a quanto pare, a rimpicciolirsi, in virtù del fatto che un numero sempre più alto di organizzazioni decide di sperimentare, almeno parzialmente, il consolidamento oppure l’outsourcing. Ad ogni modo, nell’arco dei prossimi 10 anni, lo spazio occupato dalle infrastrutture sarà drasticamente ridotto e anche il loro costo dovrebbe ridursi in maniera considerevole.

Hosting vs cloud
Aziende come IBM e VMware incoraggiano i clienti con propri datacenter privati a passare al cloud. Nel frattempo, i fornitori di servizi gestiti per i CED sostengono che la costruzione di un datacenter privato, in questo momento, non è una scelta sostenibile.
Il “cloud computing” si riferisce a servizi erogati in rete. Le aziende possono creare cloud privati, ma l’ultimo decennio ha visto anche l’aumento dei fornitori di servizi cloud pubblici, che offrono un insieme di risorse di calcolo piuttosto ampio ma flessibile ed erogabile su richiesta degli utenti.
L’hosting di un datacenter si riferisce all’housing degli apparati normalmente utilizzati nei CED, off premise, presso il centro dati di un fornitore di servizi gestiti, il quale potrà acquistare e gestire direttamente le attrezzature e affittarle all’utente.
Ci sono pareri contrastanti, tra professionisti IT, sulle diverse opzioni possibili.
Dall’indagine “State of the Data Center” condotta da SearchDataCenter.com emerge che il 24% degli intervistati prevede di utilizzare formule di Infrastructure as a Service (IAAS) o servizi di hosting nel corso dei prossimi 12 mesi, contro il 19% che riferisce di aver utilizzato tali servizi nei 12 mesi precedenti.

Outsourcing del datacenter, i benefici
Per molte organizzazioni, la crisi economica ha stimolato l’interesse nelle opzioni di outsourcing del datacenter, con lo scopo di ridurre i costi. Secondo Julius Neudorfer, CTO di North American Access Technologies, i centri dati nella gamma compresa tra i 5.000 e i 10.000 piedi quadrati (da 500 a 1.000 metri quadrati) si stanno “ritirando”, perché le organizzazioni di medie dimensioni guardano sempre più spesso ai service provider per ridurre i costi. “Le aziende, di fronte al fatto che i loro datacenter sono obsoleto o difficili da ingrandire – sostiene – valutano il costo di costruzione di un nuovo CED e, tutto a un tratto, l’outsourcing sembra la scelta migliore. Alcune organizzazioni vogliono andare oltre la co-location delle facility e optano per l’hosting del datacenter per riuscire a fronteggiare la domanda di risorse computazionali a disponibilità continua, 7 giorni su 7, 24 ore al giorno”.

Outsourcing del datacenter, le preoccupazioni
Alcune organizzazioni, in particolare nei settori finanziari e di assistenza sanitaria, sono restii a demandare all’esterno il controllo sul luogo in cui fisicamente risiedono i dati e i loro specialisti IT sono preoccupati anche per la larghezza di banda e l’affidabilità della rete. “Abbiamo esaminato alcune delle nostre applicazioni e il costo della banda che avremmo dovuto comprare per arrivare al cloud supera il costo di costruzione di un intero data center”, sostiene Robert Rosen, CIO di un’agenzia governativa americana. La via di mezzo In molti casi, le aziende stanno adattando i loro centri dati privati per mantenere il controllo e ridurre i costi, optando per il solo outsourcing di alcune funzionalità.
Kent Altena, ingegnere tecnico di una compagnia assicurativa americana, si aspetta che una quota compresa tra il 5 e il 10% della superficie complessiva del suo CED finirà letteralmente “nella nuvola” nei prossimi due anni. Una quota che salirà al 30- 50% nei prossimi cinque anni. “Le imprese devono consolidare ora i propri CED – consiglia – prima il costo di aggiornamento di un datacenter diventi superiore a quello del passaggio al cloud”.
fonte:searchcio.techtarget.it

Il downtime di un datacenter costa 3.500 euro al minuto

La stima di uno studio del Ponemon Institute che ha analizzato 41 datacenter con dimensione minima di 232 metri quadri. Per i service provider o le società di e-commerce si arriva a 8.000 euro al minuto

I guasti dei datacenter possono costare alle organizzazioni più di 3.500 euro al minuto. Il dato emerge da una ricerca effettuata dal Ponemon Institute e sostenuta da Emerson Network Power.

La ricerca ha analizzato il funzionamento e la gestione di 41 datacenter di diversi settori industriali con una dimensione minima di 232 metri quadri ed è stata realizzata intervistando oltre 450 professionisti per calcolare costi diretti e indiretti delle interruzioni del servizio.

Lo studio sottolinea come le inadeguatezze dei segmenti power, cooling, monitoring e service possono contribuire ai guasti.

Oltre 2 ore il tempo di ripristino medio
Ne emerge che, in caso di downtime di un data center, il tempo medio di ripristino delle operazioni è di 134 minuti e il costo per l’azienda di queste oltre due ore di black-out è di oltre 475.000 euro (ovvero circa 680.000 dollari).

La situazione peggiora se si considerano le aziende con modelli di guadagno che dipendono dalla capacità dei data center di fornire servizi IT e di networking, come appunto i service provider e le società di e-commerce, per le quali un singolo donwtime può arrivare a costare anche fino ad 700.000 euro (1 milione di dollari), ossia quasi 8.000 euro al minuto.

Per calcolare il costo complessivo, i ricercatori del Ponemon Institute hanno utilizzato un sistema di Activity Based Costing, prendendo in considerazione i costi diretti, indiretti e il costo opportunità (cioè il valore a cui si rinuncia nel caso non si sfrutti un’opportunità). I dettagli nella figura in basso.

Mancano risorse
I dati indicano che i professionisti che gestiscono i data center lamentano la carenza di risorse per una gestione ottimale delle infrastrutture: quasi il 60% sostiene che sarebbe stato possibile prevenire i guasti mentre solo il 37% ritiene di avere a disposizione tutte le risorse necessarie per ripristinare il corretto funzionamento del data center in caso di problemi.

Perché si guasta un datacenter?
In base ai dati forniti dai rispondenti, nel 29% dei casi l’indiziato numero uno è l’UPS. Al secondo posto l’errore umano (citato nel 24% dei casi) e a seguire problemi energetici e nel condizionamento. In figura le primarie cause di guasto.

fonte: searchCIO.it

I datacenter? Sicuri solo sulla carta

Secondo uno studio di Gabriel Consulting Group su 147 responsabili di datacenter, c’è un divario fra percezione e realtà. Perché la sicurezza virtuale non è uguale a quella fisica.

McAfee ha rilasciato i risultati di un’indagine condotta da Gabriel Consulting Group che riporta un divario tra la percezione della sicurezza e la realtà tra i responsabili della sicurezza It aziendale.

Lo studio Datacenter Security Survey 2011 si è focalizzato sulle problematiche e sulle soluzioni di sicurezza e ha coinvolto 147 responsabili di data center aziendali.

La maggior parte degli intervistati (60%) dichiara che la direzione ritiene che la sicurezza sia più solida di quanto non lo sia effettivamente, mentre solo il 22% riporta che la direzione è a conoscenza della reale situazione della sicurezza della propria azienda.

Lo studio ha rilevato che, sebbene quasi la metà degli intervistati ritenga che la virtualizzazione e i cloud privati rappresentino una sfida di sicurezza, la maggior parte degli intervistati utilizza gli stessi strumenti per proteggere i sistemi fisici e quelli virtualizzati.
In sostanza, mentre le aziende continuano ad adottare virtualizzazione e cloud, la tecnologia di sicurezza utilizzata spesso è una replica della sicurezza delle risorse fisiche, e questo si traduce in ostacoli, come policy di rete incoerenti e falle nella sicurezza.

Difatti, quasi la metà degli intervistati ha riferito di essere costantemente alla ricerca di nuove falle di sicurezza, più del 40% ritiene che lo stato della sicurezza della propria azienda non sia al passo con le minacce, circa il 70% ha mostrato scetticismo sulla sicurezza del cloud pubblico e il 40% ha rivelato che la sicurezza nel quotidiano non è conforme agli standard richiesti dalle loro policy ufficiali.

da: searchcio.it