Archive for the ‘Software’ Category.

Sviluppare una APP Android con Eclipse Juno è davvero divertente

Devo ricredermi: programmare ANDROID con Eclipse non è mai stato così facile e piacevole.

A patto però di avere a disposizione un terminale fisico su cui fare il debug della propria APP. Questo è sicuro ( l'emulatore infatti risulta davvero ancora troppo lento per consentire un debug agevole ).

Nel mio caso ho utilizzato il mio Samsung Galaxy S2 e devo dire che il risultato è stato davvero piacevole: tempi di upload e debug brevissimi.

E' stato sufficiente installare i driver del telefono ( nel mio caso ho installato direttamente KIES ), mettere il cellulare in modalità DEBUG ( menù sviluppo -> Modalità DEBUG ) e subito è stato riconosciuto da ECLIPSE come dispositivo disponibile.

Come non parlare della nuova versione di Eclipse ( JUNO )?

La stessa è scaricabile qui: http://www.eclipse.org/downloads/

Davvero fenomenale. Tutti gli aspetti più noiosi sono ora programmabili in maniera visuale e con la massima comodità ( ovvio che per fare qualcosa di una seppur minima complessità serve avere una buona infarinatura dell'ANDROID SDK, ma ciò è normalissimo ).





Ritengo che gli appassionati di JAVA possano davvero divertirsi con strumenti tanto potenti quanto versatili.

Nel mio caso mi sono dilettato a creare il gioco seguente (se vi capita dategli un'occhiata e magari dategli un voto):



Considerando che per lo sviluppo dello stesso ho impiegato qualche ora, devo dire che i risultati sono davvero entusiasmanti.   

Gli enigmi del Dr Magnus e del suo gatto Ciccio

Oggi vorrei pubblicizzare un gioco per Android di mia creazione.

Il gioco è nato per scherzo ma presenta davvero parecchi punti di interesse. E poi credo sia molto simpatico.

Riporto la descrizione da Google Play :)


Una pietra miliare nella storia dei quiz presentati da gatti. Ciccio è una star.


Il DrMagnus ( ed il suo gatto Ciccio ) ti hanno appena sfidato. Riuscirai ad arrivare alla fine di questo esilarante QUIZ gattoassistito? Ciccio è poliedrico, divertente, agguerrito.

Lasciati cullare da un accompagnamento d'autore basato su pezzi di musica classica suonati allegramente dal vivo ( da mia moglie ) e goditi i curati effetti sonori felini degni di un film di Spielberg.

Tutti ne parlano:

"Da un senso compiuto a ciò che ho creato"
Dio su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Ciccio è un ANIMALE da palcoscenico"
Il commissario Rex su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Amo Ciccio"
Charlize Theron ( o qualcuna che le assomigliava ) su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Uno dei migliori giochi a QUIZ che abbia mai giocato da quando sono nato"
Mio figlio di 2 anni e mezzo su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Avrei voluto presentarli io ma fortunatamente sono morto prima"
Mike Bongiorno su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Adesso sarai costretto ad ucciderlo"
Gli (a)Mici del mio gatto dopo aver provato una beta versione de "Gli enigmi del DrMagnus e del suo gatto Ciccio"

"Chiamate il mio avvocato"
Il mio gatto su "Gli enigmi del DrMagnus e del suo gatto Ciccio"

Link Google Play: Qui

Un’app per il sogno perfetto

COSTUME E SOCIETÀ – Cambiare il mondo? Si può fare. O, almeno, se ne possono cambiare i sogni. È quello che promette lo psicologo e performer britannico Richard Wiseman, che ha appena lanciato dal suo blog uno studio di massa per scoprire se si possono davvero pilotare i sogni. Il fatto è che Wiseman nei mesi scorsi ha partecipato allo sviluppo di Dream:ON, un’app per iPhone che, secondo le intenzioni, dovrebbe monitorare il sonno notturno e, soprattutto, indirizzare l’attività onirica .

Funziona così: prima di andare a dormire si “programma” l’app, scegliendo l’ora a cui si desidera essere svegliati e il “paesaggio sonoro” che più si avvicina al sogno desiderato (uccellini che cinguettano in campagna, sciabordio delle onde sulle spiaggia e così via). Poi si appoggia l’iPhone sul letto e lo si lascia lavorare. Durante la notte, l’app registra i movimenti del dormiente e, a partire da 20 minuti prima della sveglia, approfitta del primo momento di quiete per far partire il suono scelto.

«La teoria è che il suono può influenzare il subconscio e venire incorporato nel sogno», spiega lo psicologo. Al risveglio, l’app “chiede” di scrivere un breve resoconto del sogno, che può anche essere condiviso sui social network, al posto della classica fotografia, e che servirà a Wiseman per valutare se l’esperimento funziona davvero.

Chiunque – o meglio, chiunque possieda un iPhone – può partecipare, basta scaricare gratuitamente l’app. Attenzione però: solo un paio di paesaggi sonori sono gratis, gli altri vanno acquistati. Wiseman comunque mette subito in guardia: anche se Dream:ON dovesse funzionare, non è detto che basti una notte. Probabilmente ci vorrà qualche giorno perché il cellulare riesca a “introfularsi” nei nostri sogni. A proposito, potendo scegliere, voi che cosa desiderereste sognare? Wiseman mesi fa aveva lanciato un piccolo sondaggio tra i suoi lettori e queste sono le wordcloud che ha ottenuto, per donne e uomini.

Notate la differenza?

http://oggiscienza.wordpress.com/2012/04/11/unapp-per-il-sogno-perfetto/#more-29104

Samsung Galaxy S II: oggi l’aggiornamento a Ice Cream Sandwich

A differenza di altri paesi, i possessori italiani del Samsung Galaxy S2 sono stati destinati ad aspettare più tempo per poter vedere l’aggiornamento del sistema operativo made in Google. L’attesa, però, è finalmente finita! Durante la giornata di oggi la società sudcoreana rilascerà ufficialmente l’aggiornamento Ice Cream Sandwich.

La notizia è stata divulgata da Samsung Italia attraverso Twitter. Ancora non è chiaro precisamente quali saranno i dispositivi a cui l’aggiornamento è rivolto. Ma, quasi sicuramente, sarà possibile effettuare l’upgrade esclusivamente su Samsung Galaxy S2 no-brand italiani. Non si hanno informazioni circa la validità dello stesso anche per le versioni brandizzate dai vari operatori. Tra qualche ora ne sapremo di più.

Fonte:http://www.chimerarevo.com/2012/04/23/samsung-galaxy-s-ii-laggiornamento-ice-cream-sandwich-sara-disponibile-entro-oggi-in-italia/

Spring e l’inversione di controllo

Spring è un framework creato per costruire applicazioni J2EE robuste, basato su una  architettura a strati  composta da sette differenti moduli. 

  • lo strato Core è la sua parte più importante e contiene le funzioni essenziali del framework. In questo layer vengono esposte la implementazione di Spring del principio della inversione del controllo.
  • lo strato DAO è  un layer di persistenza.    
  • lo strato AOP integra all’interno del framework le funzionalità tipiche della programmazione orientata agli aspetti.
  • lo strato ORM consente di integrare all’interno delle applicazioni alcuni tra i più popolari tool per l’accesso ai database relazionali, come ad esempio Hibernate, iBatis ed altri ancora.
  • lo strato WEB fornisce una implementazione del paradigma Model – View – Controller per le applicazioni web.

Ci si potrebbe chiedere  cosa si intende in concreto quando si parla di inversion of control e qual'è la differenza tra IoC e Dependency Injection ?  

Spesso infatti questi due termini sono usati indifferentemente, come se fossero sinonimi, in realtà indicano  concetti sottilmente distinti. 


Per Inversion of Control (IOC - inversione di controllo) si intende un pattern di programmazione, secondo il quale si tende a tener disaccoppiati i singoli componenti di un sistema, in cui le eventuali dipendenze non vengono scritte all'interno del componente stesso, ma gli vengono iniettate dall'esterno: non si segue il normale flusso di controllo dei linguaggi imperativi, in cui, nel momento del bisogno, si richiamano funzioni di classi o librerie esterne, gli oggetti quindi non istanziano e richiamano gli oggetti dal quale il loro lavoro dipende, ma queste funzionalità vengono fornite da un ambiente esterno tramite dei contratti definiti da entrambe le entità.

La Dependency injection è una delle tecniche con le quali si può attuare l'IOC. Essa prende il controllo su tutti gli aspetti di creazione degli oggetti e delle loro dipendenze. Spring usa molto diffusamente la Dependency Injection con il risultato, tra le altre cose, di eliminare dal codice applicativo ogni logica di inizializzazione. Normalmente, senza l'utilizzo di questa tecnica, se un oggetto necessita di accedere ad un particolare servizio, l'oggetto stesso si prende la responsabilità di gestirlo, o avendo un diretto riferimento al servizio, o individuandolo con un "Service Locator" che gli restituisce un riferimento ad una specifica implementazione del servizio. Con l'utilizzo della dependency injection, l'oggetto ha in sé solamente una proprietà che può ospitare un riferimento a quel servizio, e quando l'oggetto viene istanziato, un riferimento ad una implementazione di questo servizio gli viene iniettata dal framework esterno, senza che il programmatore che crea l'oggetto sappia nulla sul suo posizionamento del servizio o altri dettagli sullo stesso.

Ubuntu Builder: creare la propria versione di Ubuntu in modo facilissimo

Ubuntu Builder è una comoda applicazione che permette di creare una propria versione personalizzata di Ubuntu. In particolare essa permette di scaricare, estrarre, personalizzare in molti modi e ricostruire le immagini di Ubuntu. Naturalmente è possibile personalizzare le immagini i386 e amd64. Per i neofiti è disponibile anche un forum di aggiornamento e di aiuto, raggiungibile tramitequesto indirizzo, oppure potete consultare una discussione completamente in Italiano tramite il forum di Ubuntu-it.



Ecco alcune caratteristiche di Ubuntu Builder:

  • Supporta entrambe le immagini, 32bit e 64bit
  • è possibile scegliere il proprio ambiente desktop e window manager
  • possibilità di modificare slideshow Ubiquity
  • aggiungere/rimuovere pacchetti
  • modificare il sources list
  • elencare i pacchetti installati
  • specificare note di rilascio
  • utilizzare il Gestore pacchetti Synaptic

Ovviamente lo strumento è in continua evoluzione e, man mano che vengono rilasciate nuove versioni, tutti i bug noti sono di volta in volta risolti. L’ultima versione di Ubuntu Builder può essere scaricata daquesta pagina.

Fonte:http://www.chimerarevo.com/2012/03/22/ubuntu-builder-creare-la-propria-versione-di-ubuntu-in-modo-facilissimo/

Samsung Galaxy S II: a quando Android 4?

Il problema con gli aggiornamenti Android è che questi vengono scaglionati nel tempo in modo così lento che spesso gli utenti diventano estremamente impazienti e passano settimane prima di poter aggiornare il proprio telefono.

Dopo che Google rilascia il codice sorgente ai vari produttori, tocca a questi ultimi realizzare l’aggiornamento definitivo del sistema, personalizzandolo sul proprio hardware, e questa non sempre è una cosa semplice, soprattutto se bisogna riprogettare un’interfaccia grafica diversa rispetto a quella di Android, proprio come accade, ad esempio, nel caso del Galaxy S II.
Anche quando un aggiornamento viene ultimato dal produttore, il suo iter non termina: deve essere sottoposto ai test dei vari operatori telefonici per verificare che non vi siano problemi tra il nuovo firmware e le loro reti. Ma, a questo punto, viene proprio da chiedersi quando quest’atteso aggiornamento sarà disponibile per gli utenti finali.

Telefoni SIM free
Samsung ha confermato che il Galaxy S II riceverà l’aggiornamento ad Android 4.0 Ice Cream Sandwich a partire da questa settimana (presumibilmente a partire dal 19 marzo). L’aggiornamento, secondo quanto dichiarato dalla stessa Samsung, sarà reso disponibile inizialmente in Europa, inclusa Polonia, Ungheria, Svezia e Corea, per poi essere gradualmente estesa agli altri mercati.

Telefoni distribuiti dagli operatori
Tutti gli operatori telefonici hanno ricevuto l’aggiornamento da Samsung e sono al lavoro per testare il nuovo firmware sulle proprie reti. Al momento nessuno ha saputo (o voluto) dire quando verrà rilasciato l’aggiornamento ai propri clienti. Quasi tutti si sono limitati a dichiarare che stanno lavorando sull’aggiornamento e che questo sarà rilasciato al più presto possibile.

Fonte: http://www.mobilejournal.net/android/samsung-galaxy-s-ii-a-quando-android-4-9984

Linux 3.3: presto Android anche su desktop e notebook

A quanto pare, Android e Linux sono destinati a riunirsi in fraterno abbraccio con il rilascio dei prossimi kernel 3.3 e 3.4, con i quali sarà possibile eseguire senza problemi Android sui comuni notebook o desktop. Parola di Greg-KH!


Greg-KH, una delle personalità di spicco del mondo Linux ha affermato, in una recente intervista, che “Il kernel 3.3 permetterà di avviare Android senza modifiche, ma non avrà una gestione del risparmio energetico ottimale. Il kernel 3.4 invece avrà la gestione dell’alimentazione che Android merita e verranno anche aggiunte alcuni pezzi dell’infrastruttura che non saranno invece disponibili nella release 3.3 del kernel”.

Di recente Torvalds aveva avuto occasione di dire che ogni volta che c’è un nuovo ramo di sviluppo in Linux, è una cosa positiva, perché c’è qualcuno che vede un motivo tecnico per fare qualcosa di diverso rispetto al kernel Linux standard. Molti di questi esperimenti finiscono per rivelarsi dei fallimenti e quindi l’alternativa finisce per auto-estinguersi. Altre volte, invece, queste alternative hanno successo, e Google può ben dire di aver costruito una storia di successo con Android. Adesso, però, è il momento di riunire Android al kernel “padre”, prendendo le cose buone di entrambi i progetti e fondendole assieme.

La fusione non sarà immediata, ma già con la versione 3.3 del kernel saremo in grado di eseguire Android su una serie di hardware supportati, e questo vuol dire che presto avremo anche notebook e desktop in grado di eseguire il sistema operativo “inventato” da Google. Vista la crescita dell’ecosistema mobile Android, è lecito supporre che anche le settore desktop questo possa avere un suo importante seguito, anche se il mercato desktop è più complicato di quello mobile. Sul computer le persone fanno molte più cose di quante non se ne facciano sullo smartphone o sul tablet, e questo potrebbe complicare le cose per Android.

Fonte: http://www.hwjournal.net/articoli/linux-3-3-presto-android-anche-su-desktop-e-notebook-9580

Tutte le informazioni presenti su questo articolo sono protette dalla licenza CC Attribution-ShareAlike. 

Come creare una nuova entità base – Detail Form e Detail List su NotaSoftware

Il tutorial è applicabile alle versioni di NotaSoftware maggiori o uguali alla 0.3

Di seguito è indicata la configurazione delle nuove funzionalità di dettaglio del Form e del List.

La modalità di realizzazione di tali funzionalità su Nota si basa sul popolamento delle seguenti tabelle "di sistema":

_forms_details
_form_columns_details

_lists_details
_list_columns_details
 
Gli step da seguire sono quelli a seguire ( tutte le operazioni possono essere eseguite in maniera visuale mediante un qualsiasi tool per mysql ).
 
Per la creazione di un DETAIL FORM con funzioni di visualizzazione/inserimento/modifica:
 
1) Realizzazione della tabella fisica "dettaglio_documenti" nel proprio db ( è la tabella dove risiederanno i dati )
 
Allego script sql per la creazione di una semplice tabella:
 
CREATE TABLE `dettaglio_documenti` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `id_documento` INT(11) NOT NULL DEFAULT '0',
    `qta` INT(11) NOT NULL DEFAULT '0',
    `prezzo_unitario` FLOAT(10,2) NOT NULL DEFAULT '0.00',
    `id_articolo` INT(11) UNSIGNED NULL DEFAULT '0',
    `totale` FLOAT(10,2) NULL DEFAULT NULL,
    `totale_iva` FLOAT(10,2) NULL DEFAULT NULL,
    `totale_iva_esclusa` FLOAT(10,2) NULL DEFAULT NULL,
    `id_codice_iva` INT(11) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
 
2) Configurazione di un record nella tabella _forms_details del proprio db:
 
La tabella _forms_details è composta dai seguenti campi:
 
id_form ( rappresenta l'id del form padre – tabella _forms )
name ( rappresenta il nome del detail form da creare. Il nome deve avere lo stesso nome indicato nel file jsp )
table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form )
foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia la form padre)
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia la form padre )
foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail form )
auto_format_string ( è un flag Y/N che indica se le label del detail form devono essere formattate automaticamente )
detail_label ( rappresenta il nome della label del pulsante che porta alla form di dettaglio )
detail_form_pre_save ( rappresenta il metodo javascript da invocare prima del salvataggio )
detail_form_post_save ( rappresenta il metodo javascript da invocare dopo del salvataggio )
 
Allego script sql:
 
INSERT INTO `_forms_details` (`id`, `id_form`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `auto_format_string`, `detail_label`, `detail_form_pre_save`, `detail_form_post_save`) VALUES (1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 'Y', 'Visualizza Dettaglio', NULL, 'viewForm()')
 
3) Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _form_columns_details del proprio db:
 
id_form_detail ( id della form detail a cui il record fa riferimento )
name ( nome descrittivo del campo che stiamo inserendo )
id_field_type ( il tipo che si vuole associare al campo )
field ( nome del campo fisico )
foreign_table ( nome tabella fisica esterna se il campo è in join )
foreign_key ( chiave delle tabella fisica in join se il campo è in join )
foreign_description ( valore da recuperare dalla tabella in join per il campo in join )
label ( valore a video per il campo )
read_only ( flag Y/N che identifica se il campo è di sola lettura )
sequence ( numero di sequenza a video per il campo )
foreign_long_description ( valore da recuperare dalla tabella in join per il campo in join )
foreign_sub_table ( nome tabella fisica esterna se il campo è un sub value)
foreign_sub_key ( chiave delle tabella fisica se il campo è un sub value )
sub_more_info ( info aggiungive per un campo di tipo sub value )
foreign_long_key ( chiave verso il valore di default dei campi di tipo long combo box )
foreign_long_default ( valore di default dei campi di tipo long combo box )
 
Allego script sql:
 
INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES
(1, 1, 'id_articolo', 3, 'id_articolo', 'articoli', 'id', 'descrizione', NULL, 'ARTICOLO', '', 1, 'descrizione', 'articoli', 'id', '', '2', '- Nessun Articolo -')
INSERT INTO `_form_columns_details` (`id`, `id_form_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `foreign_code`, `label`, `read_only`, `sequence`, `foreign_long_description`, `foreign_sub_table`, `foreign_sub_key`, `sub_more_info`, `foreign_long_key`, `foreign_long_default`) VALUES
(2, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, NULL, NULL, '', 2, NULL, NULL, NULL, NULL, NULL, NULL);
 
 
Per la creazione di un DETAIL LIST con funzioni di visualizzazione/ricerca:
 
1) Configurazione di un record nella tabella _lists_details del proprio db:
 
La tabella _lists_details è composta dai seguenti campi:
 
id_list ( rappresenta l'id del list padre – tabella _lists )
name ( rappresenta il nome del list detail da creare. Il nome deve avere lo stesso nome indicato nel file jsp )
table ( rappresenta il nome della tabella fisica su cui si appoggia il detail form)
foreign_table ( rappresenta il nome della tabella fisica su cui si appoggia il list padre)
primary_key ( rappresenta la chiave della tabella fisica su cui si appoggia il list padre )
foreign_key ( rappresenta la chiave della tabella fisica su cui si appoggia il detail list )
auto_format_string ( è un flag Y/N che indica se le label del detail list devono essere formattate automaticamente )
paginate ( rappresenta il numero di record visualizzati per pagina )
options ( rappresenta le opzioni attive per la lista: e = edit; d = delete; s = search )
 
Allego script sql:
 
INSERT INTO `_lists_details` (`id`, `id_list`, `name`, `table`, `foreign_table`, `primary_key`, `foreign_key`, `paginate`, `options`, `auto_format_string`) VALUES
(1, 1, 'documenti/dettaglio_documenti', 'dettaglio_documenti', 'documenti', 'id', 'id_documento', 30, 'e/d/s', 'Y')

 
2)  Configurazione di un record per ogni campo ( ad eccezione della primary_key ) da mappare nella tabella _list_columns_details del proprio db:
 
La tabella _list_columns_details è composta dai seguenti campi:
 
id_list_detail  ( id del list detail a cui il record fa riferimento )
name ( nome descrittivo del campo che stiamo inserendo )
id_field_type ( il tipo che si vuole associare al campo )
field ( nome del campo fisico )
foreign_table ( nome tabella fisica esterna se il campo è in join )
foreign_key ( chiave delle tabella fisica in join se il campo è in join )
foreign_description ( valore da recuperare dalla tabella in join per il campo in join )
label ( valore a video per il campo )
search ( flag Y/N che indica se sul campo è possibile eseguire ricerche )
sequence ( numero di sequenza a video per il campo )
 
Allego script sql:
 
INSERT INTO `_list_columns_details` (`id`, `id_list_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `search`, `sequence`) VALUES
(1, 1, 'descrizione_articolo', 1, 'descrizione_articolo', '', NULL, NULL, 'Articolo', '', '', 1)

INSERT INTO `_list_columns_details` (`id`, `id_list_detail`, `name`, `id_field_type`, `field`, `foreign_table`, `foreign_key`, `foreign_description`, `label`, `read_only`, `search`, `sequence`) VALUES
(2, 1, 'prezzo_unitario', 1, 'prezzo_unitario', '', NULL, NULL, 'Prezo Unitario', '', '', 2)
 
In uno dei seguenti tutorial affronteremo nel dettaglio la creazione di dettagli multipli.

Java verrà rimosso dai repository Ubuntu entro il 16 febbraio

A causa delle nuove policy di distribuzione che Oracle ha stabilito per Java, dal 24 agosto del 2011 non è più possibile distribuire nuove versioni Java su macchine Ubuntu.

Per questo motivo il 16 febbraio di quest’anno verranno rimosse dal repository “partner” tutte le versioni di Java JDK.

Su Ubuntu 10.04, 10.10 e 11.04  il pacchetto Sun Java JDK (sun-java6) non sarà più disponibile e successivamente rimosso del tutto al fine di evitare problemi.

A quanto pare sui sistemi Ubuntu già in uso non verranno neanche più resi disponibili aggiornamenti di sicurezza sui pacchetti Java già installati, mentre su questa pagina del Wiki Ubuntu è spiegato come migrare a soluzioni alternative per continuare ad usare piattaforme simili a quella Java. Maggiori informazioni sul messaggio mandato da Marc Deslauriers sulla mailing list “ubuntu-security”.

Tutte le informazioni presenti su questo articolo sono protette dalla licenza CC Attribution-ShareAlike . 

Fonte: TuxJournal.net