Post

Javascript: Performance Cicli

Mi sono chiesto se ci sono differenze fra concatenare delle stringhe all'interno di un ciclo piuttosto che aggiungerle ad un array. Ho trovato questo interessante test: http://jsperf.com/array-push-vs-unshift/7 La domanda può sembrare banale, ma non lo e' in quanto molto spesso mi e' capitato di eseguire cicli for di un array javascript per comporre dell'html (ad esempio per generare a run-time gli item di una lista). Lavorando con phonegap mi sono chiesto quale sia il modo migliore di affrontare il problema. Ho scoperto anche che c'e' differenza fra .html() e .append() (se anche voi usate jQuery) http://jsperf.com/bulk-inserts-innerhtml-vs-appendchild/5

Phonegap: Performance Browser vs WebView

Ho preso a riferimento due benchmark javascript che ho trovato on-line con una ricerca google (sono sincero, non li conoscevo prima di ora) JavaScript benchmark: http://www.webkit.org/perf/sunspider/sunspider.html http://octane-benchmark.googlecode.com/svn/latest/index.html Li ho inseriti in un'app phonegap per testare se ci sono differenze prestazionali ad eseguirli dentro Phonegap piuttosto che nel Browser di Sistema. Questa e' l'app App Phonegap di prova che ho preparato: https://build.phonegap.com/apps/395724/builds i sorgenti: https://github.com/mattocchi/js-benchmark Ecco il Risultato del primo test effettuato per quanto riguarda il benchmark octane: https://docs.google.com/spreadsheet/pub?key=0Ahd_nR-q7xREdE44YXVibUQ3aEJINVFqdko5OHRjU0E&output=html

Phonegap: Build per iOs senza Mac (da Windows)

Nell'attesa di preparare un articolo piu dettagliato su come procedere scrivo il link che ho seguito per riuscire in questo intento: http://community.phonegap.com/nitobi/topics/detailed_guide_for_setting_up_building_ios_apps_without_a_mac

Accelerazione Hardware per Emulatore Android (Lento)

Immagine
State anche voi sviluppando (o giocherellando) con Android ADT e l'emulatore Android? Intel i5, 8GB Ram, SSD Sata3 eppure ... ammettiamolo l'emulatore di Android e' veramente lento ... lavorarci e' snervante per svilupparci app PhoneGap ... ma ... a quanto ho capito essendo immagini per ARM che io eseguo su Windows con processore x86 (x64) non esiste accelerazione hardware. A tutto questo si può ovviare. Ho seguito queste istruzioni nella risposta "HAXM Speeds Up the Slow Android Emulator" ed ho installato quanto suggerito: http://stackoverflow.com/questions/1554099/slow-android-emulator Intel Hardware Accelerated Execution Manager Driver ( che una volta scaricato va installato lanciando il setup dalla cartella ) Intel x86 Atom System Image (che si scarica come suggerito, ho dovuto scaricare la 4.1.2, non sono riuscito a far partire l'immagine 2.3.3 x86) Altre Risorse: http://developer.android.com/tools/devices/emulator.html#accel-vm Ho cr...

Debug Applicazione PhoneGap con Android Developer Tools (ADT)

Immagine
Finalmente ho scoperto come e' possibile consultare il log delle applicazioni sviluppate con PhoneGap mentre sono in esecuzione dentro l'emulatore oppure nel  dispositivo collegato via USB. E la cosa bella e' che e' possibile visualizzare quanto si logga con console.log! Si, quella che sarebbe la console del browser! I passaggi da seguire sono questi: Nella Perspective corrente aprire la View LogCat Windows - Show View - Other...  Android - LogCat  A questo punto (se avete siete già in esecuzione vedete comparire una serie di log) Io ho impostato questo filtro: Saved Filter - Add Filter By Application Name:  org.apache.cordova.example By Log Tag: Web Console

Cross-Domain Requests JSONP vs CORS

Proprio poco fa mi sono imbattuto (facendo un test) in un caso in cui non posso fare un POST JSON con jQuery a causa di una Cross-Domain Requests. Avevo gia avuto in precedenza questo problema con le richieste cross-domain JSON con jQuery ma utilizzanto JSONP avevo risolto questo tipo di problema. Apprendo solo ora che non e' possibile usare la stessa tecnica per i POST in quanto JSONP va bene solo per gli http GET, esiste invece Cross-origin resource sharing (CORS): http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing Ho trovato che Apache CXF e' possibile annotare direttamente la classe con @CrossOriginResourceSharing http://cxf.apache.org/docs/jax-rs-cors.html Al momento con JAX-RS non sono ancora riuscito a superare il problema. Per applicare gli header necessari con JAX-RS ho scritto questo filtro: https://github.com/mattocchi/WebAppCommon/blob/master/src/it/attocchi/rest/RestAccessControlFilter.java Quando l'applicazione e' dentro PhoneGap ness...

Configurare un Server FTP con Ubuntu Server 10.04

Per configurare il Server Ubuntu ho Intsallato VSFTP Un volta installato il Pacchetto ho attivato queste opzioni da /etc/vsftpd.conf sudo nano /etc/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=002 userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO per fare in modo che gli utenti via ftp vedano solo la loro home bisogna attivare anche chroot_local_user=YES Attivando chroot_local_user può succedere (per motivi di sicurezza) che il login via ftp non funzioni. Leggendo questa documentazione http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/#comment-2051 possiamo applicare sudo chmod a-w /home/downloads/ #(nel mio caso e' la home dell'utente downloads) sul file /etc/vsftpd.userlist ho specificato gli utenti di sistema che voglio siano attivati per l'accesso ftp.

Installare VirtualBox su Ubuntu via Repo

Questa guida e' perfetta http://giornaledisistema.blogspot.it/2011/12/installare-aggiornare-virtualbox-ubuntu.html

Eclipse HTTP Preview Auto Update

Immagine
This is how to configure Eclipse for a real-time update of edited resources. I'm using this to develop and test Phonegap HTML5 App.

IE9 Modalità Compatibilità in Intranet e PrimeFaces

  In Intranet IE9 di default attiva la modalità compatibilità per tutti i siti intranet. In questo modo si perdono alcuni vantaggi di utilizzare librerie Javascript "moderne”, come avviene usando PrimeFaces per JSF. Leggendo questo articolo ho scoperto che is piò istruire Internet Explorer 9 attraverso un Meta-Tag HTML per disattivare questa modalità. A tale scopo ho realizzato una classe Java da usare come Servlet Filter nella vostra Applicazione Web per istruire automaticamente IE9 per le vostre pagine JSF: https://github.com/mattocchi/WebAppCommon/blob/master/src/it/espressoft/web/filters/IEVersionFilter.java

Reflection in Oracle Java vs OpenJDK

After an update to Ubuntu Server 12.04 I saw slow performances of my web application. In particolar I use Reflection to set value of object properies inside two "for" cicles. One "for" cicle is for all properties of object and other "for" cicle is for al records retrived from a table. You can show different performance with different Java Edition - from START to START1: executing sql query - from START1 to END: [...] methods = contClass.getMethods(); for (Method method : methods) {   for (MyClass obj : queryResult) {     // use of reflection to set values       } } [...] atreeflow@atreeflow32:~$ java -version java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1) OpenJDK Client VM (build 20.0-b12, mixed mode, sharing) atreeflow@atreeflow32:~$ java -jar TestAtreeFLOW.jar 2012-09-07 15:08:35,328 INFO  TestAtreeFLOW.testSalvaContatto():267 - START 2012-09-07 15:08:35,759 INFO ...

PhoneGap HelloWord with Eclipse

Immagine
For this sample we will use: - Eclipse IDE for Java EE Developers - PhoneGap Build Service - jQueryMobile for simple Interface - GitHub for Share Project and Upload to PhoneGap Build Service First of all we assume you have Eclipse IDE for Java EE Developers “Up and Running”. Download from here: http://www.eclipse.org/downloads/ NOTE: At this time, we will not Build a Debuggable App in Android SDK or iOS SDK. This is a Pure HTML5 App, with its limitations for Platform Specific Debugging. Now we are ready to create our HelloWord App Create an Eclipse Static Web Project File > New > Static Web Project we configure web content in a www folder instead of standard WebContent. This Is not necessary but reading here you can understand https://build.phonegap.com/docs/preparing-your-app At the end you have a “ready to run” project, now put your html, js, css sources. To build UI with jQuery Mobile we need to include necessary files from jQuery and jQuery Mobile We also include cord...

Sviluppo Applicazioni Mobili Multi-Piattaforma – PhoneGap (Parte 3)

Immagine
PhoneGap e’ un framework JavaScript che ci mette a disposizione le chiamate alle API dell’OS che sta eseguendo la nostra applicazione per poter accedere a Fotocamera, Galleria, GPS, Files, Contatti, etc… ed e’ anche estendibile con dei Plugin. Il principio di PhoneGap e’ quello di “ospitare” l’applicazione HTML che sviluppiamo in una Applicazione Nativa per l’OS per cui compiliamo. L’applicazione Nativa non e’ altro che una WebView (qualcosa di meno potente, e secondo alcuni meno veloce, di un Browser Internet) che visualizza il codice HTML5, i CSS, esegue il codice JS. In questo modo la nostra Applicazione Nativa (che ospita quella HTML5) e’ pubblicabile anche sui vari Store di Applicazioni Mobili (Google Play, App Store, Marketplace). PhoneGap in ogni caso rimane un framework JS per accedere alle API di sistema e non prevede nessuna “libreria grafica” per lo sviluppo della nostra aplicazione, per questo dovremo adottare una altro framework, nel mio caso jQuery Mobile. In alcuni ca...

Sviluppo Applicazioni Mobili Multi-Piattaforma - Framework (Parte 2)

Sono passati diversi mesi dal primo articolo e l’inizio di questa attività di ricerca ai fini di realizzare il lavoro che mi e’ stato commissionato. In questi mesi ho continuato a osservare questo mondo Mobile ed alla fine ho fatto una scelta. Come sempre, anche in questo caso credo che non ci sia una scelta universalmente corretta, ma io ho scelto di investire su HTML5+CSS+JS per lo sviluppo di App per dispositivi Mobile (Smartphone, Tablet, e quello che verrà). Ho fatto questa scelta perché non posso permettermi di mantenere applicazioni diverse per dispositivi diversi (Android, iOS, e magari Windows Mobile se inizia a prendere quota), sviluppate con Linguaggi diversi ed Ambienti di Sviluppo diversi. Inoltre osservando come si stanno muovendo Google in testa, che ha tutti gli interessi per promuovere HTML, ma anche Adobe, e la stessa Microsoft (per l’interfaccia Metro) vedo che puntano molto su HTML, ho pensato che questo potrebbe essere un buon investimento anche per il futuro. Do...

Appunti Linux

Aggiungere un Utente Linux ad un Gruppo 1) Creaimo il nuovo utente (con la sua home) adduser mirco  2) Aggiungiamo l'utente appena creato ad un gruppo sudo in modo che possa essere usermod -a -G sudo mirco http://www.cyberciti.biz/faq/howto-linux-add-user-to-group/ Quale versione di Ubuntu stiamo usando cat /etc/issue lsb_release -a  http://www.ubuntuka.com/how-to-find-out-ubuntu-version/

JSF2 layout template with Blueprint CSS Framework + Liquid Plugin

A source code sample i available here https://github.com/mattocchi/JSF2Template For the template take a look at liquidgrid.xhtml This is a sample page gridlayout.xhtml but you have to change the template with ui:composition template="templates/liquidgrid.xhtml"

.Net Framework 4.0 C# Console parameters args Bug

Build a simple C# Console App: static void Main(string[] args)         {             if (args != null)             {                 foreach (string param in args)                 {                     Console.WriteLine(param);                 }             }             Console.ReadLine();         } Try running with this console parameters: test.exe –d –p “C:\” and take a look ...

C# InkPicture Control per Catturare la Firma del Cliente sul Tablet

  1) Installazione Microsoft Windows SDK for Windows 7 and .NET Framework 4 2) Aggiungete come referenza al vostro progetto la Microsoft.Ink.dll 3) Create un oggetto InkPicture sulla vostra form. Potete farlo a mano, oppure aggiungete sulla Toolbox il Componente e poi lo trascinate sulla Form. 2) Conversione dell’Ink Stroke (il percorso vettoriale disegnato sul Controllo) in Immagine // pic is your InkPicture Control if (pic.Ink.Strokes.Count > 0) {     byte[] sig; sig = pic.Ink.Save(Microsoft.Ink.PersistenceFormat.Gif, Microsoft.Ink.CompressionMode.Maximum);     System.IO.MemoryStream imgToStore = new System.IO.MemoryStream(sig);     Image img1 = Image.FromStream(imgToStore); }

Tomcat “java.lang.OutOfMemoryError: PermGen space” error

http://stackoverflow.com/questions/88235/how-to-deal-with-java-lang-outofmemoryerror-permgen-space-error http://frankkieviet.blogspot.ca/2006/10/classloader-leaks-dreaded-permgen-space.html On Ubuntu Precise Pangolin 12.04 you can edit catalina.sh @ /usr/share/tomcat6/bin CATALINA_OPTS="-Xms128m -Xmx256m -XX:MaxPermSize=128m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

Lamdaj Reverse Sort

List myList= sort( myList , on( MyClass .class).getCreationDate()); Collections.reverse( myList );