Apple

fonte: dal web

Più di 1,5 milioni di download: basterebbe questa come notizia per rendere Bubble Ball il fenomeno del momento. Ma c’è di più: sì, perchè l’autore di questa app è Robert Nay, un ragazzino di 14 anni nato a Spanish Fork, nello Utah.

Il gioco, basato sui principi della fisica, consiste nel far compiere un percorso ad una pallina fino al raggiungimento del traguardo. Il gioco è davvero divertente e coinvolgente: funziona davvero molto bene, considerando diverse casistiche e problematiche (posizionamento degli oggetti, simulazione della gravità, e molto altro ancora).

Robert ha distribuito la app gratuitamente, sia per iPhone che per Android, ed ha già fondato un’azienda, la Nav Games, con la quale intende sviluppare molti altri giochi e apps.

Potrebbe sembrare la solita caccia al fenomeno, ma vi consiglio di provare l’app: dopo vi verrà solo da dire…..”Complimenti”!



Cr-48 Google

fonte: dal web

Schermo da 12”, peso di circa un chilo, nero, compatto, Chrome OS, senza disco e soprattutto….praticamente nessun programma installato. Sì, perchè il portatile presentato il 7 dicembre da Google, Cr-48, è il primo ad essere interamente stato concepito per cavalcare le tecnologie del cloud computing.

Il sistema operativo, Chrome OS, è installato in una ROM non modificabile dall’utente, e possiede tutto il necessario per gestire il portatile: i programmi utilizzati per compiere praticamente qualsiasi azione (dalla visualizzazione di foto al word precessing alla lettura della posta) risiedono sul web e sono targati chiaramente Mountain View.
(continua…)



Se come me disponete di una biblioteca “virtuale” sul vostro PC allora non potete non visitare torrentmybooks.com.

Questo nuovo motore di ricerca per torrent è dedicato esclusivamente ai libri: nell’archivio principale è possibile visionare l’elenco delle categorie disponibili con il numero di volumi attualmente scaricabili.

La sezione dedicata all’informatica e alla programmazione conta già un numero interessante di volumi, suddivisa per linguaggio di programmazione e tecnologia (PHP, Java, C/C++, ecc. ).

(continua…)



Con il bollettino sulla sicurezza rilasciato 4 giorni fa, Adobe fa sapere che due tra i suoi prodotti più diffusi, Adobe Reader e Adobe Acrobat, sono sensibili a una falla nella sicurezza di livello critico: il nuovo bug infatti non solo può causare un crash improvviso ma addirittura potrebbe permettere ai malintenzionati di prendere il controllo del sistema su cui gli applicativi in questione sono installati.
(continua…)



GoogleAmmetto che potrebbe essere una sensazione condivisibile solo per chi come me lavora con il software, in particola sul web, ma quando questa mattina mi sono svegliato, lavato e fatto la mia prima ricerca su Google (non per forza in quest’ordine)…ragazzi che sballo!

Google ci mette a disposizione una nuova feature: Google Instant. (continua…)



VirtualBox è uno dei prodotti più interessanti nell’ambito della virtualizzazione: perchè è open source, perchè è potente, facile da usare e fornito di un numero enorme di funzionalità avanzate e di personalizzazioni. Purtroppo però tra queste non vi è (speriamo ancora per poco) la possibilità di estendere una partizione virtuale.

virtualbox
VirtualBox

Se quindi si esaurisce lo spazio su disco, come possiamo risolvere?

(continua…)

Più Smilies per tutti!

agosto 5th, 2010 - (1 Comments)


Smilies.it è un servizio che mette a disposizione un vasto repository di simpatiche smilies che possiamo usare nel codice HMTL o negli interventi dei forum ai quali siamo iscritti. Le smilies sono divise per categorie, ed è sufficiente cliccare sulla smiley che abbiamo scelto per visualizzare nello spazio adibito (le due caselle di testo in alto) il codice HTML/UBB corrispondente (seguendo il link potete leggere una spiegazione molto chiara su cosa sono e da dove vengono i codici UBB ).

Questo ci permette di utilizzare le emoticons praticamente ovunque, ed essendo un vasto archivio gratuito (più di 3000 elementi!) è sicuramente una risorsa da tenere tra i preferiti.



A cosa dobbiamo rinunciare per avere servizi sempre più tecnologicamente avanzati che ci semplificano (e in alcuni casi) allietano la quotidianità? Non è semplice rispondere a questa domanda, soprattutto perchè, per chi vive nel nostro tempo, la tecnologia è ormai necessario quanto l’ossigeno.

Qualche giorno fa ho letto un articolo in cui si racconta l’ultimo attacco portato a Google da alcune società di consumatori che vogliono vederci chiaro sulle attività e soprattutto sulla quantità, qualità  e tipologia di dati che vengono raccolti dal gigante di Mountain View. E se ci fermiamo un secondo a riflettere, in effetti è qualcosa che fa pensare…

Non è la prima volta che Google si trova a fronteggiare le associazioni di consumatori che l’accusano apertamente di abusi della privacy e di non rispettare le basilari regole nello sviluppo del software. Del resto Google non ha mai nascosto di aver catturato “per errore” tutta una serie di dati che sicuramente rientrano nella categoria di “abuso”.

In rete ci sono diversi articoli che trattano dell’argomento, ma il vero quesito che dobbiamo porci è se, per rispettare la nostra privacy, saremmo disposti a rinunciare a quelli che sono tra i principali servizi forniti da Google (e non solo chiaramente) e che ormai utilizziamo praticamente ogni giorno.

Saremmo pronti  a dire “addio” a Google Maps per  esempio?

E se pensiamo al mondo mobile la riflessione diventa ancora più complessa: il cellulare è uno strumento che possiamo considerare un pò come  un secondo portafoglio, uno strumento in cui sono contenute informazioni sensibili sui nostri contatti, i nostri messaggi, le nostre fotografie…insomma di tutto un pò. Con la connessione internet mobile 24 ore su 24 in sostanza questa raccolta indiscriminata di dati potrebbe essere inarrestabile.

Ma possiamo rinunciare ad utilizzare questi strumenti con queste caratteristiche e funzionalità che ci permettono di comunicare con il mondo ovunque ci troviamo?



Qualche tempo fa scrissi un post a proposito della condivisione di cartelle tra sistemi host e guest in VirtualBox. La comodità di poter scambiare dati tra le virtual machine e le macchine host è davvero troppo interessante per farne a meno.

Visto che il precedente post riguardava la condivisione di cartelle tra un sistema Linux host (fedora) e un sistema Windows guest, ho pensato che potesse essere utile anche la situazione in cui abbiamo un sistema Windows host che deve comunicare con un sistema Linux guest.

Il primo passo da fare è scegliere la cartella del sistema host (Windows in questo caso) che verrà condivisa con il sistema Linux (Ubuntu in questo caso).

Una volta scelta la directory del sistema host che verrà condivisa, possiamo proseguire entrando nel sistema Linux, e nella console digitiamo il seguente comando:

sudo mkdir /media/windows-folder

che ci permette di creare un “punto di mount” in Ubuntu per la cartella in questione. Creato il “punto di mount” possiamo procedere al passo (quasi) finale con il comando:

sudo mount -t vboxsf nome_cartella /media/windows-folder

Questo comando non fa altro che legare al “punto di mount” precendentemente istanziato la cartella Windows con il nome “nome_cartella”.  L’ultimissima cosa da fare per rendere la modifica permanente è inserire questo comando all’interno del file

/etc/rc.local

poi spegnere la macchina virtuale, andare nelle impostazione ed aggiungere tra le cartelle condivise quella che abbiamo creato. Il gioco è fatto: ora abbiamo due sistemi in perfetta comunicazione! ;)



Gli strumenti forniti da Google sono sempre più utilizzati per integrare i portali web con servizi sempre più interessanti.
Tra i più utilizzati e apprezzati dagli utenti, vi sono sicuramente le google map, ovvero le mappe che indicano l’esatta posizione di un indirizzo o di una locazione geografica.
Oramai su quasi tutte le pagine “Contatti” sparse per il mondo è presente tale servizio: l’utilizzo  è molto semplice, e la documentazione ricca, anche se per specifiche personalizzazioni bisogna impegnarsi un poco ( giustamente ;) ).

Ad esempio, potremmo avere la necessità di inserire nelle nostre pagine una mappa di google che, a
seconda dell’indirizzo passato (e quindi dinamicamente), visualizzi la posizione desiderata con un “marker” e le informazioni relative.
Lo script per implementare tale meccanismo è il seguente:

<script type=“text/javascript”>
var map = null;
var geocoder = null;

function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById(“map”));
var latitude = 45.05872;
var longitude = 7.723114;
var zoom = 13;
var location = new GLatLng(latitude, longitude);
// var marker = new GMarker(location);
// map.addOverlay(marker);
map.setCenter(location, zoom);
geocoder = new GClientGeocoder();
showAddress(address);
}
}

function showAddress(address) {
if (geocoder) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
$(“#nomap”).text(‘indirizzo non disponibile’);
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
// marker.openInfoWindowHtml(address);
}
}
);
}
}

window.onload = load;
window.onunload = GUnload;
</script>

<div id=“nomap” style=“color: red;”></div>
<div id=“map” style=“width: 300px; height: 200px;”></div>

Il codice HTML delle ultime due righe crea due div: il primo serve per visualizzare un messaggio di
warining nel caso in cui l’indirizzo passato non sia stato trovato dal motore di ricerca, il secondo serve per la visualizzazione della mappa.

Lo script è composto da due funzioni: load() e showAddress(address). La funzione load viene richiamata al caricamento della pagina, ed è ovviamente il cuore di questo script: si occupa di settare tutti i paramentri necessari, tra cui il settaggio dell’id del div che conterrà la mappa (map).
Eseguite tutte le assegnazioni del caso, viene infine richiamata la seconda funzione importante,
showAddress(address).
Questa ha un parametro, address, che potremmo ad esempio generare e passare con computazioni proveniente da pagine php, che è proprio l’indirizzo che verrà visualizzato sulla mappa attraverso l’uso dei marker settati nella prima funzione.
L’indirizzo è un parametro, ed è quindi dinamico: ogni qualvolta la pagina verrà ricaricata, leggerà l’indirizzo attualmente impostato e lo passerà allo script, che si occuperà di visualizzarlo sulla mappa.



Con l’ultima versione di VirtualBox, il prodotto di virtualizzazione ha raggiunto davvero ottimi livelli, anche su piattaforma Linux. Nelle nostre prove, abbiamo riscontrato i soliti problemi con il supporto USB: putroppo ancora non è stata prevista una configurazione totalmente automatica, almeno nelle release di Fedora, e allora….ecco come procedere!

Il problema è ovviamente dato dalla configurazione dei permessi: per prima cosa, dobbiamo aggiungere la nostra utenza al gruppo vboxusers (possiamo controllare che non sia già stato fatto in automatico lanciando il comando groups), con il seguente comando

sudo gpasswd -a $(logname) vboxusers

Ora dobbiamo garantire i permessi di scrittura e lettura su  “usbfs” per gli utenti che appartengono al gruppo “vboxusers”.

Su Fedora 10, “usbfs” è accessibile da /proc/bus/usb che per configurazione di defualt appartiene all’utente root e al gruppo root. Potremmo anche modificare i permessi con il comando chmod, ma ogni qualvolta riavviamo il sistema, dovremmo rifare la medesima procedura. Inoltre non possiamo eseguire a piacimento le operazioni di mount, perchè il sistema comunica constantemente con “usbfs”, e finchè esiste tale comunicazione ( cioè esattamente per tutto il tempo in cui il sistema è running ) il filesystem risulta “busy”. Il “trucco” sta nel “montare” una copia di “usbfs” da qualche parte nel sistema, passando gli effetti delle configurazioni anche su /proc/bus/usb. Per fare questo, ci serve l’id del gruppo “vboxusers”, che troviamo con il seguente comando:

cat /etc/group | grep vboxusers

L’output sarà qualcosa di simile a:

vboxusers:x:501:nomeutente

che specifica appunto che sul proprio sistema l’id del gruppo (gid) “vboxusers” è 501. Ora mpossiamo procedere nella creazione di un altro punto di mount per “usbfs”. Decidiamo di crearlo in /root/usbfs:

sudo mkdir /root/usbfs

Il prossimo passo è la modifica del file /etc/fstab per “montare” una copia di “usbfs” in /root/usbfs. Editiamo quindi il file, ad esempio con vi, e alla fine di questo aggiungiamo le seguenti righe:

none /root/usbfs usbfs rw,devgid=501,devmode=664 0 0

Ovviamente, se nel vostro sistema il gid del gruppo “vboxusers” è differente da 501, dovete sostituirlo con quello appropriato. Per applicare i cambiamenti, lanciamo il comando di “mount”:

sudo mount -a

Dopo questa procedera, finalmente i vostri sistemi virtuali leggerando qualsiasi collegamento USB, esattamente come il vostro sistema operativo. Chiaramente è necessario settare, per ogni macchina virtuale, i controller USB che volete rendere attivi.



Qualche tempo fa abbiamo recensito in questo articolo gli applicativi più conosciuti per la virtualizzazione in ambiente Windows e Linux : Vmware e in VirtualBox . In quell’articolo avevamo analizzato le principali funzionalità di uno e dell’altro, arrivando alla conclusione che in effetti Vmware aveva un qualcosa in più….aveva! Con la nuova versione di VirtualBox , la 2.0.4, sono stati fatti grandi passi in avanti: sono stati risolti i problemi della gestione delle porte USB, e, con l’installazione degli addons scaricabili al seguente indirizzo, VirtualBox ottiene una serie di funzionalità aggiuntive che lo rendono davvero un ottimo prodotto, assolutamente paragonabile alla versione liberamente scaricabile di Vmware.

Con questa premessa, ecco una “chicca” per utilizzare le comodissime cartelle condivise tra sistema HOST Linux e sistema GUEST Windows. La procedura è molto semplice e veloce:

  1. Si crea la cartella sul sistema HOST (Linux in questo caso)
  2. Si accede alla configurazione della macchina virtuale attraverso il menu “Settings”
  3. Qui, nella scheda “Shared Folder” andiamo ad aggiungere la cartella creata al punto 1, come cartella permanente se vogliamo che sia disponibile ad ogni avvio della macchina virtuale
  4. Accediamo alla macchina virtuale
  5. Dal menu Start di Windows andiamo nel campo “cerca”, digitiamo “esegui”, e premiamo invio
  6. Nella finestra che si apre, dicitiamo il seguente comando

    net use x: \\vboxsvr\nome_cartella_condivisa

    e premiamo invio

Nel caso in cui capitasse che dopo un’avvio della macchina virtuale non sia possibile accedere alla cartella condivisa, sarà sufficiente ripetere i passi 5-6 per rendere nuovamente la cartella disponibile.



La virtualizzazione è uno strumento davvero notevole. Per chi sviluppa applicativi che richiedono il testing in diversi ambienti, è sicuramente un importatissimo ed efficientissimo strumento di lavoro.

Per chi non lo sapesse, attraverso la virtualizzazione è possibile utilizzare simultaneamente più sistemi operativi. La macchina Host (quella reale, la macchina fisica) condivide le risorse con una o più macchine Guest (quelle virtuali) : questo è possibile grazie ad applicativi come VirtualBox o Vmware, applicativi che sostanzialmente creano veri e propri sistemi virtuali, con le loro memorie, i loro hard-disk, le loro periferiche, ecc.

Attraverso i programmi di virtualizzazione, dunque, è possibile  condividere le risorse di una macchina fisica per creare tante macchine virtuali diverse, ognuna con il proprio sistema operativo installato e con le proprie caratteristiche.

La comodità per gli sviluppatori multipiattaforma è davvero immensa: non è più necessario avere una partizione per ogni sistema operativo installato, con  i conseguenti riavvii e le perdite di tempo. Con questo meccanismo, possiamo ottimizzare i tempi e la qualità del nostro lavoro.

In rete sono disponibili diversi programmi per la virtualizzazione, gratuiti o meno, con ovviamente caratteristiche molto diverse. Dopo diversi test, abbiamo tuttavia soffermato la nostra attenzione principalmente su due applicativi:  VirtualBox o Vmware .

Le ragioni sono molteplici: sono entrambi gratuiti, hanno una notevole community alle spalle, sono multipiattaforma, relaltivamente semplici da installare e molto ben strutturati.

Seppur entrambi molto interessanti, il primo posto in assoluto come miglior applicativo di virtualizzazione, a nostro avviso, spetta senza alcun dubbio a  Vmware .

Abbiamo testato Vmware su una macchina Host decisamente performante con sistema operativo Fedora 9 , creando e installando una macchina Guest Windows Vista.

Il risultato: eccezionale. Semplice e veloce l’installazione di Vmware ; intuitiva e molto ben organizzata l’interfaccia di gestione; facile da utilizzare anche per i “novizi”; ma sopra ogni cosa, ciò che rende davvero meritevole di tanto riguardo questo applicativo è la possibilità di utilizzare i Vmware Tools. Questi fanno davvero la differenza.

Mentre in VirtualBox abbiamo trovato molto rudimentale la gestione delle perifiche e soprattutto la condivisione del mouse, in Vmware, attraverso i Vmware Tools, tutto è assolutamente naturale: le gestione delle perifiche è semplice e veloce, la modalità a schermo intero è molto più comoda rispetto a tutti i concorrenti e, dulcis in fundo, la condivisione del mouse è del tutto naturale. Non vi sono noiose combinazioni di tasti da premere per catturare-rilasciare tale periferica: tutto funziona a “focus”. Quando il mouse entra nella finestra della macchina virtuale, essa ne prende il controllo, quando ne esce lo rilascia senza noie di alcun tipo.

Per chi volesse testare  Vmware in ambiente fedora, può seguire la guida raggiungibile qui .



Quante volte abbiamo bisogno di inserire codice nei commenti o negli articoli del nostro blog ma non vi riusciamo? Il motivo è semplice: gli editor utilizzati dalle nostre piattaforme convertono in automatico tutto il codice che gli viene passato, dunque ogni entità HTML, per esempio, viene automaticamente convertita nel carattere corrispondente.
Come possiamo risolvere tale problema?

Il metodo più veloce è senz’altro quello di utilizzare l’utilissimo parser disponibile qui . E’ sufficiente inserire nella textarea a disposizione il codice HTML che vogliamo non venga interpretato, e cliccare sul tasto “Parser” .

Il Parser convertirà automaticamente tutti i caratteri nella corrispondente entità HMTL: in questo modo, quando postiamo il codice, gli editor lo interpreteranno come fanno con il resto del testo, e quindi le entità HTML verranno convertite nei rispettivi caratteri, che saranno leggibili e quindi condivisibili. Questo Parser è ovviamente molto comodo soprattutto quando vogliamo postare il codice nei commenti dei blog. Quando invece vogliamo permettere la visualizzazione del codice nel testo di articoli che scriviamo nei nostri blog, allora la strada più comoda è l’utilizzo del pluging WP-Syntax.

Questo plugin permette di inserire nei nostri articoli codice in diversi linguaggi di programmazione, quelli supportati da GeShi . Dopo l’installazione e l’attivazione del plugin sul nostro blog wordpress, è sufficiente scrivere il codice all’interno dei tag

<pre lang=”LANGUAGE” line=”1″> codice </pre>

dove il valore dell’attributo lang è il linguaggio in cui è scritto il sorgente e che è correttamente supportato da GeShi . Ad esempio, se volessimo inserire del codice in PHP, dovremmo procedere in questo modo:

<pre lang="php">
 <div id="foo">
 <?php
 function foo() {
 echo "Hello World!\\n";
 }
 ?>
 </div>
 </pre>

se invece volessimo inserire codice Java, procederemmo in questo modo:

<pre lang="java" line="1">
 public class Hello {
 public static void main(String[] args) {
 System.out.println("Hello World!");
 }
 }
 </pre>

Semplice e veloce. In questo modo, rendiamo condivisibile il codice, perchè è sufficiente procedere con il copia ed incolla per usufruire del sorgente postato.



Il redirect permette di reindirizzare la pagine verso un’altra, senza interazione da parte dell’utente e inoltrando perciò le visite verso la nuova destinazione. Vi sono molti modi diversi di fare un redirect, noi vedremo i metodi per i principali linguaggi Web.

Metodo HTML

E’ sufficiente creare una pagina con il seguente codice:

<HTML>
<HEAD>
<TITLE>Html Redirect…</TITLE>
<META HTTP-EQUIV=”REFRESH” CONTENT=”4; URL=http://www.google.it”>
</HEAD>
<BODY>
Stiamo effettuando un redirect..
</BODY>
</HTML>

La riga più importante di questo codice è la seguente:

<META HTTP-EQUIV=”REFRESH” CONTENT=”4; URL=http://www.google.it”>

con la quale sostanzialmente indichiamo che la pagina è appunto un redirect, che il redirect verrà effettuando entro 4 secondi e che la destinazione del redirect è la pagina http://www.google.it . Ovviamente se vogliamo che il redirect sia immediato è sufficiente inserire il valore 0 al posto del 4 . Fate attenzione a questo punto: i valori dallo 0 all’1 sono considerati dalla maggior parte dei motori di ricerca come permanent redirect ( codice html 301 ), mentre i valori maggiori di 2 sono considerati temporary redirect.

Metodo Javascript

Creiamo una pagina .html nella quale inseriamo il seguente codice:

<HTML>
<HEAD>
<TITLE>Redirect…</TITLE>
<script language=”javascript”>
<!–
location.replace(“http://www.google.it”);
–>
</script>
</HEAD>
<BODY>
Redirect in corso…
</BODY>
</HTML>

In questo caso c’è poco da aggiungere: si crea un piccoloscript javascript nel quale appunto utilizziamo la direttiva location.replace per indicare la presenza di un redirect e dunque la nuova destinazione.

Metodo Php

Nella pagina php in cui vogliamo fare il redirect inseriamo il seguente codice:

<?php
header(“Location: http://www.google.it”);

/* se vogliamo usare il refresh… */

header(“Refresh: 0; URL=http://www.google.it”);
?>

Metodo Asp

In asp sostanzialmente il procedimento è molto simile al metodo php; ecco il codice da inserire nel nostro file asp su cui vogliamo effettuare il redirect:

<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, “http://www.google.com”
%>

<!– oppure //–>

<%
Response.Buffer = true
%>
<html>
<%
Response.Redirect(“http://www.google.com”)
%>
<HEAD>
<TITLE>Redirect…</TITLE>
</HEAD>
<BODY>
Redirect in corso…
</BODY>
</HTML>

Metodo JSP

Per la Java Server Page, il codice da utilizzare è il seguente:

<%
String redirectURL = “http://www.google.it/”;
response.sendRedirect(redirectURL);
%>

Metodo Coldfusion

In Coldfusion è sufficiente utilizzare la seguente riga:

<cflocation url=”http://www.google.it”>

Anche se non è fondamentale, è comunque molto importante conoscere i principali codici di stato HTML : bisogna fare molta attenzione se non si vuole perdere traffico o posizioni sui motori di ricerca. Ecco i principali:

      300 Multiple Choices
   
      301 Moved Permanently
   
      302 Found
   
      303 See Other
   
      304 Not Modified
   
      305 Use Proxy
   
      306 (Unused)
   
      307 Temporary Redirect


Una spiegazione più approfondita su tali codici è possibile trovarla in questa pagina , ovvero nelle pagine del World Wide web Consortium.