mercoledì 6 luglio 2011

appunti android - usiamo html css e js per creare la nostra app

Invece di scrivere il codice alla vecchia.. vediamo se è possibile scrivere una app che usa le funzioni di basso liverllo del nostro android, senza dover scrivere il codice java necessario..
Ebbene si! Si puo fare:


un bel progetto..scaricata la mini libreria.. provata su due android, con differenti risultati:

android 1.6 (non funziona bene..continui popup di errore..anche se qualche funzione la esegue lo stesso.. LASCIARE PERDERE)
android 2.2/2.3 funziona alla grande...

e parte la soffisfazione nel vedere che da una paginetta web, si riesce a scattare una foto e la si rivede nel dom della pagina html...
aggancia i contatti...aggancia le connessioni wifi/umts... si localizza...

insomma funziona!!

(chiaramente per ora mi interessa solo android..ma pare si possa usare anche su iphone/backberry/etc.. proveremo...)

links utili (progetti riusabili..idee preziose)

un po di documentazione...

i mitici plugins...


bella app da vedere e leggere per imparare uso avanzato..

e qui la possiamo vedere:

plugins...

come gestire l'update della app sviluppata con phonegap (in realtà sono opzioni generali android)..

come scalare la app in base alla grandezza del dispositivo dispositivo..


ottimo esempio..

come lanciare un browser in una nuova finestra..

come inviare sms da phonegap html pages...


appunti android - ubuntu non vede il samsung galaxy

Mentre attaccando il mio glorioso nexus one, eclipse lo riconosce al volo..
Attaccando il samsung galaxy..niente da fare:


adb devices

List of devices attached
???????????? no permissions

Google è sempre nostro amico....


http://www.mjonik.pl/blog/2010/01/samsung-galaxy-with-android-sdk-on-ubuntu/

creiamo il file per udev..etc etc...

non serve usare adb modificato..basta fare un bel sudo..


sabato 18 settembre 2010

prima dell'abbandono di jsf 1.2

Sarebbe bello poter creare jsf managed beans senza dichiararli nel faces-config.xml

chiaramente ci vorrebbe qualcosa che allo startup legge le classi nel war annotate in un certo modo...

http://stackoverflow.com/questions/2050309/jsf-managed-bean-auto-create

http://stackoverflow.com/questions/315073/jsf-initialize-application-scope-bean-when-context-initialized

evitando di creare un configuratore in cui dichiarare le classi...stile guice..

blog da seguire

http://www.germanescobar.net/2010/04/4-areas-of-possible-confusion-in-jee6.html


http://smokeandice.blogspot.com/2009/12/cdi-and-declarative-transactions.html

approfondire:

http://seamframework.org/Community/SingletonEJBs

domenica 12 settembre 2010

jsf: come bypassare la fase di validazione senza perdere i dati

Interessante diatriba: immaginate un utente che compila dei dati su un form. A metà dell'opera si accorge che prima di completare il form ha bisogno di inserire dei dati collegati, in un altra sezione (banalmente per emettere una fattura va prima inserito il cliente).

A meno che l'interfaccia non glielo permetta in modo contestuale (senza quindi abbandonare i dati inseriti - ad esempio mediante un popup modale), spesso è necessario chiudere la pagina in cui si sta lavorando, per poi tornarci una volta inseriti i dati utili, riscrivendo quanto già inserito.

Un po di links...utili...

http://www.ibm.com/developerworks/web/library/wa-aj-jsf1.html
http://www.ibm.com/developerworks/web/library/wa-aj-jsf2/index.html
http://wiki.apache.org/myfaces/How_The_Immediate_Attribute_Works
http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html
http://radio.javaranch.com/gthought/2005/01/04/1104874993000.html
http://wiki.apache.org/myfaces/OptionalValidationFramework
http://www.jsfcentral.com/articles/myfaces_extval_2.html

domenica 20 settembre 2009

un cms semplice semplice con jsf-facelets

Dopo anni di sviluppo in PHP, è arrivato il momento di fare siti web in giava.
Molto leggeri, senza usare tutto j2ee, limitandosi a JPA+JSF+GUICE.
Scelta obbligata dai pochi mezzi a disposizione, usare tomcat invece del caro jboss.
L'idea è questa:
  1. si crea una applicazione di management (che gestisce css, templates e pagine) che verrà clonata ogni volta con tutte le funzioni di gestione.
  2. ed una applicazione web che verrà popolata da quella di management, ed inzialmente conterrà soltanto i files base:
    cartella WEB-INF con files di configurazione generici,
    prettyfaces per rewrite-url nativo
    librerie guice-jsf -primefaces/richfaces
Problematiche da gestire:
  1. creazione al volo pagine xhtml partendo dai templates e gestire i contenuti in esse tramite textarea avanzate (stile tinymce)
  2. aggiungere moduli standard per i comuni siti web: news/gallerie di foto/google maps nella pagina contatti/forum
  3. creazione al volo di componenti facelets (come tag per lista news o tag per singola news) da riutilizzare tra i contenuti html inseriti mediante tinymce
Progetti di partenza:
  1. per la gestione templates: http://code.google.com/p/prime-flowers/source/browse/#svn/trunk/simpleCMSgenerator
  2. per i contentuti del sito web in jsf_facelets_jpa: http://code.google.com/p/prime-flowers/source/browse/#svn/trunk/ZetaWeb
Tecnologie da approfondire:
  1. prettyfaces per rewrite_uri: l'uso minimale in ZetaWeb, mostra com'è possibile automatizzare la navigazione tra pagine
    - il cui path reale è in una cartella fissa (es: pages),
    - il cui url completo è www.appname.com/pages/nomePagina.xhtml
    - il cui jsf url è www.appname.com/pages/nomePagina.jsf
    - l'alias www.appname.com/nomePagina

  2. uso di Dynamic Finders (interfacce che contengono query jpa-senza scrivere implementazione): http://www.wideplay.com/dynamicfinders
  3. uso di Custom Units of Work (http://www.wideplay.com/transactionsemantics ) per il caricamento delle lazy collection in jpa in contesti transazionali + lunghi della semplice request.
Accetasi aiuti + o - volontari....

se proprio java non vede la data giusta...

Se proprio le hai tentate tutte ed il tempo stringe..e la tua macchina linux ha una certa ora mentre la tu applicazione giava non la vuole leggere correttamente...

Naturalmente hai già fatto:

  1. run.conf di jboss con opzione-Duser.language=it -Duser.region =IT -Duser.timezone=Europe/Rome

  2. in faces-config.xml hai aggiunto:

    java.util.Date

..........CustomDateTimeConverter



che chiama:

public class CustomDateTimeConverter extends DateTimeConverter {
Logger log = Logger.getLogger(getClass().getName());

public CustomDateTimeConverter() {
super();
TimeZone tz = TimeZone.getTimeZone("Europe/Rome");
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
setTimeZone(tz);
setLocale(new Locale("it/IT"));
setPattern("d/M/yyyy");
}
}


Alla fine incazzato come una iena:

public static Date getDateLinux() {
try {
String data = CommandLauncher.executeCmd(new String[] { "date",
"+%m/%d/%Y %H:%M:%S" });
log.info("DATA LINUX: " + data);
SimpleDateFormat formatLINUX = new SimpleDateFormat(
"MM/dd/yyyy HH:mm:ss");
Date parsed1 = formatLINUX.parse(data);
log.info("DATA LINUX FROM JAVA: " + parsed1);
return parsed1;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}