

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Loryx&#039;s Blog</title>
	<atom:link href="http://lnx.tramuto.it/lorenzo/feed/" rel="self" type="application/rss+xml" />
	<link>http://lnx.tramuto.it/lorenzo</link>
	<description>appunti per i miei lavori e studi</description>
	<lastBuildDate>Wed, 11 Jan 2012 09:49:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JSF &amp; Icefaces: ByteArrayResource not found</title>
		<link>http://lnx.tramuto.it/lorenzo/2012/01/11/jsf-icefaces-bytearrayresource-not-found/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2012/01/11/jsf-icefaces-bytearrayresource-not-found/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 09:49:56 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java for Web]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[byteArrayResources]]></category>
		<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[outputResource]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[web.xml]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=114</guid>
		<description><![CDATA[Con le Icefaces 2.0, il download di un file creato a runtime attraverso la risorsa di tipo ByteArrayResource è possibile renderlo disponibile correttamente soltanto aggiungendo la seguente entry nel file web.xml: &#60;servlet-mapping&#62; &#60;servlet-name&#62;Faces Servlet&#60;/servlet-name&#62; &#60;url-pattern&#62;/icefaces/*&#60;/url-pattern&#62; &#60;/servlet-mapping&#62; in caso contrario il server restituirebbe errore 404 di risorsa non trovata. L&#8217;oggetto Resource va collegato ad un tag [...]]]></description>
			<content:encoded><![CDATA[<p>Con le Icefaces 2.0, il download di un file creato a runtime attraverso la risorsa di tipo ByteArrayResource è possibile renderlo disponibile correttamente soltanto aggiungendo la seguente entry nel file web.xml:</p>
<p><code>&lt;servlet-mapping&gt;<br />
       &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;<br />
       &lt;url-pattern&gt;/icefaces/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</code></p>
<!-- Adsense Immediately! V1.0 -->
<!-- Post[count: 3] -->
<div class="adsense adsense-midtext" style="text-align:center;margin: 12px;"><script type="text/javascript"><!--
google_ad_client = "pub-5029725762237746";
/* adsense infra post */
google_ad_slot = "6410824148";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div><p>in caso contrario il server restituirebbe errore 404 di risorsa non trovata.</p>
<p>L&#8217;oggetto Resource va collegato ad un tag icefaces della pagina web di tipo <code>&lt;ice:outputResource .../&gt; </code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2012/01/11/jsf-icefaces-bytearrayresource-not-found/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java: Inserire il contenuto di un file in un oggetto String</title>
		<link>http://lnx.tramuto.it/lorenzo/2010/10/06/java-inserire-il-contenuto-di-un-file-in-un-oggetto-string/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2010/10/06/java-inserire-il-contenuto-di-un-file-in-un-oggetto-string/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 22:13:39 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[String]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=105</guid>
		<description><![CDATA[Spesso mi è capitato di dover creare una stringa con il contenuto di un file, magari anche un documento XML. Il metodo che uso è il seguente: protected static String fileToString(String filePath) { BufferedReader reader = null; StringBuffer fileData = null; try { fileData = new StringBuffer(1000); reader = new BufferedReader(new FileReader(filePath)); char[] buf = [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso mi è capitato di dover creare una stringa con il contenuto di un file, magari anche un documento XML. Il metodo che uso è il seguente:<span id="more-105"></span></p>
<pre class="brush:java">protected static String fileToString(String filePath) {
        BufferedReader reader = null;
        StringBuffer fileData = null;
        try {
            fileData = new StringBuffer(1000);
            reader = new BufferedReader(new FileReader(filePath));
            char[] buf = new char[1024];
            int numRead = 0;
            while ((numRead = reader.read(buf)) != -1) {
                String readData = String.valueOf(buf, 0, numRead);
                fileData.append(readData);
                buf = new char[1024];
            }
            return fileData.toString();
        } catch (IOException ex) {
            System.out.println("Eccezione in readFileAsString: " + ex.toString());
            return null;
        }
    }</pre>
<p>Il parametro prevede il passaggio del nome del file comprensivo del suo percorso.</p>
<p>Le classi da importare sono:</p>
<pre class="brush:java">import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;</pre>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2010/10/06/java-inserire-il-contenuto-di-un-file-in-un-oggetto-string/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSF: Usare un Bean anche da altre classi Java</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/12/09/jsf-usare-un-bean-anche-da-altre-classi-java/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/12/09/jsf-usare-un-bean-anche-da-altre-classi-java/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 22:06:19 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java for Web]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[bean]]></category>
		<category><![CDATA[classi]]></category>
		<category><![CDATA[faces-config.xml]]></category>
		<category><![CDATA[facesContext]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaServer Faces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[static]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=78</guid>
		<description><![CDATA[Attraverso la dichiarazione di un bean (di livello application, session o request) nel file faces-config.xml, è possibile, tramite le Language Expression (LE), usare gli oggetti ed i attributi nelle pagine web, jsp o xhtml che siano. Ma spesso mi è stato chiesto come è possibile accedere a queste stesse istanze di bean direttamente da codice [...]]]></description>
			<content:encoded><![CDATA[<p>Attraverso la dichiarazione di un bean (di livello application, session o request) nel file faces-config.xml, è possibile, tramite le Language Expression (LE), usare gli oggetti ed i attributi nelle pagine web, jsp o xhtml che siano. Ma spesso mi è stato chiesto come è possibile accedere a queste stesse istanze di bean direttamente da codice java di altri bean o classi dell&#8217;applicazione JSF<span id="more-78"></span>.</p>
<p>Io sono solito crearmi un file di utilità, dove tra i vari metodi inserisco dei metodi statici che mi permettono di prendere i bean nel loro preciso posizionamento (application, session o request), e, se ancora non lo  sono, di instanziarli. Un esempio di questo genere di metodo per un bean a livello sessione può essere:</p>
<pre class="brush:java">public static SessionBean getSessionBean() {
SessionBean ilBean = ((SessionBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SessionBean"));
if (ilBean == null) {//il bean non esiste a livello sessione
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("SessionBean", new SessionBean());
}
return ((SessionBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("SessionBean"));
}</pre>
<p>Ovviamente nel file faces-config.xml deve essere dichiarato il bean di scope session e nome SessionBean.</p>
<p>Per gli altri due tipi di scope, è possibile usare i metodi che ritornano una Collection getApplicationMap() e getRequestMap(), rispettivamente per gli oggetti che si hanno a livello applicazione e livello richiesta.</p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/12/09/jsf-usare-un-bean-anche-da-altre-classi-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Riga di una tabella iceFaces</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/11/19/riga-di-una-tabella-icefaces/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/11/19/riga-di-una-tabella-icefaces/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 15:46:15 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java for Web]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[ArrayList]]></category>
		<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Tables]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=75</guid>
		<description><![CDATA[Spesso mi è stato chiesto come lanciare delle azioni specifiche per una riga di una tabella creata in JSF e IceFaces. Sa soluzione che io preferisco è l&#8217;uso dell&#8217;oggetto &#8220;com.icesoft.faces.component.ext.HtmlDataTable&#8221;. In questo piccolo esempio ho una lista di stringhe riempita da diversi oggetti, che viene visualizzata sottoforma di tabella, ed in corrispondenza di ogni riga [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso mi è stato chiesto come lanciare delle azioni specifiche per una riga di una tabella creata in JSF e IceFaces. Sa soluzione che io preferisco è l&#8217;uso dell&#8217;oggetto &#8220;com.icesoft.faces.component.ext.HtmlDataTable&#8221;.</p>
<p>In questo piccolo esempio ho una lista di stringhe riempita da diversi oggetti, che viene visualizzata sottoforma di tabella, ed in corrispondenza di ogni riga ho la possibilità di eliminare quel preciso oggetto dalla lista<span id="more-75"></span>.</p>
<p>Codice del javaBean:</p>
<pre class="brush:java">
import com.icesoft.faces.component.ext.HtmlDataTable;
import java.util.ArrayList;
import javax.faces.event.ActionEvent;

public class NoteBean {

 private HtmlDataTable dataTableNoteBinding;
 private ArrayList&lt;String&gt; listaNote = null;

 public NoteBean(){
 listaNote = new ArrayList&lt;String&gt;();
 }

 public HtmlDataTable getDataTableNoteBinding() {
        return dataTableNoteBinding;
 }

 public void setDataTableNoteBinding(HtmlDataTable dataTableNoteBinding) {
        this.dataTableNoteBinding = dataTableNoteBinding;
 }

 public ArrayList&lt;String&gt; getListaNote() {
        //riempo la lista con qualche stringa di esempio
        if(listaNote==null){
           listaNote=new ArrayList&lt;String&gt;();
           listaNote.add("stringa 1");
           listaNote.add("stringa 2");
           listaNote.add("stringa 3");
        }
        return listaNote;
 }

 public void setListaNote(ArrayList&lt;String&gt; listaNote) {
        this.listaNote = listaNote;
 }

 public void rimuoviNotaInLista(ActionEvent ae) {
        int rigaNoteSelezionata = getDataTableNoteBinding().getRowIndex();
        //il metodo getRowData() invece restituisce l'oggetto della riga,
        //e non solo il suo indice di posizionamento nella collezione
        listaNote.remove(rigaNoteSelezionata);
 }

}</pre>
<p>Codice della tabella nella pagina JSF:</p>
<pre class="brush:html">&lt;ice:dataTable id="tabellaNote" binding="#{NoteBean.dataTableNoteBinding}" value="#{NoteBean.listaNote}" var="nota"&gt;
 &lt;f:facet name="header"&gt;
   &lt;ice:columnGroup&gt;
     &lt;ice:headerRow&gt;
       &lt;ice:column colspan="2"&gt;
         &lt;ice:outputText value="Tabella"/&gt;
       &lt;/ice:column&gt;
     &lt;/ice:headerRow&gt;
     &lt;ice:headerRow&gt;
       &lt;ice:column&gt;
         &lt;ice:outputText value="Stringa"/&gt;
       &lt;/ice:column&gt;
       &lt;ice:column&gt;
          &lt;ice:outputText value="Cancella"/&gt;
       &lt;/ice:column&gt;
     &lt;/ice:headerRow&gt;
   &lt;/ice:columnGroup&gt;
 &lt;/f:facet&gt;
 &lt;ice:column&gt;
    &lt;ice:outputText value="#{nota}"/&gt;
 &lt;/ice:column&gt;
 &lt;ice:column&gt;
    &lt;ice:commandLink actionListener="#{NoteBean.rimuoviNotaInLista}" title="elimina"&gt;&lt;ice:graphicImage url="/images/icone/elimina.png" style="border: none;" alt="elimina"/&gt;&lt;/ice:commandLink&gt;
 &lt;/ice:column&gt;
&lt;/ice:dataTable&gt;</pre>
<p>Naturalmente, se la necessità invece è quella di selezionare più di una riga, conviene usare i metodi di IceFaces &#8220;RowSelector&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/11/19/riga-di-una-tabella-icefaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion (SVN) Server sotto Linux</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/10/21/subversion-svn-server-sotto-linux/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/10/21/subversion-svn-server-sotto-linux/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 09:11:55 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Mondo Linux]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[collaborazione]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[progetti]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=70</guid>
		<description><![CDATA[Per i miei progetti software uso per lo più l&#8217;ambiente di sviluppo NetBeans IDE, che prevede come strumento di revisione e collaborazione anche SVN. Per installare ed usare un semplice server per linux bisogna inanzitutto installare subversion (http://subversion.tigris.org/), e su Debian o Ubuntu ad esempio, è possibile usare APT; lanciamo quindi il comando: apt-get install [...]]]></description>
			<content:encoded><![CDATA[<p>Per i miei progetti software uso per lo più l&#8217;ambiente di sviluppo NetBeans IDE, che prevede come strumento di revisione e collaborazione anche SVN.</p>
<p>Per installare ed usare un semplice server per linux bisogna inanzitutto installare <strong>subversion</strong> (<a title="Home Page Subversion" href="http://subversion.tigris.org/" target="_blank">http://subversion.tigris.org/</a>), e su Debian o Ubuntu ad esempio, è possibile usare APT; lanciamo quindi<span id="more-70"></span> il comando:</p>
<pre class="brush:shell">apt-get install subversion</pre>
<p>per configurare una directory di repository, basta lanciare il comando:</p>
<pre class="brush:shell">svnadmin create /repository/newRep/</pre>
<p>dove &#8216;<em>/repository/newRep/</em>&#8216; è il percorso che scegli a tuo piacimento, nonchè la directory che sarà creata dal software svn server. Sarà presente una sottoDirectory &#8216;<em><strong>conf/</strong></em>&#8216; contentente i fles di configurazione del server svn e degli utenti e password.</p>
<p>il file &#8216;<em><strong>svnserve.conf</strong></em>&#8216; deve contenere una struttura simile a questa:</p>
<pre class="brush:shell">[general]
#accesso anonimo disabilitato
anon-access = none
#autorizzazione in scrittura per gli utenti abilitati
auth-access = write
#utenti e password presi dal file passwd sotto la cartella conf
password-db = passwd
#nome del repository
realm = AssifinRep</pre>
<p>il file &#8216;<em><strong>passwd</strong></em>&#8216; ha una struttura del tipo:</p>
<pre class="brush:shell">[users]
utente = passwordUtente
utente2 = pwduser2</pre>
<p>a questo punto rimane da far partire il server con il comando:</p>
<pre>/usr/bin/svnserve -d</pre>
<p>ed essere sicuri che il firewall lascia passare le richieste sulla porta <strong>TCP 3690</strong></p>
<p>per l&#8217;uso del client di netBeans, rimando ad un prossimo tutorial <img src='http://lnx.tramuto.it/lorenzo/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  .</p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/10/21/subversion-svn-server-sotto-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB Boot anche se non supportato dal Bios</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/10/08/usb-boot-anche-se-non-supportato-dal-bios/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/10/08/usb-boot-anche-se-non-supportato-dal-bios/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 20:44:28 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Mondo Linux]]></category>
		<category><![CDATA[Mondo Windows]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[mbr]]></category>
		<category><![CDATA[plop]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=65</guid>
		<description><![CDATA[Il mio portatile, pur con bios aggiornato, non supporta l&#8217;avvio da periferiche di archiviazione usb; ma per fortuna ho scoperto un magnifico software, PLoP Bootmanager, un boot manager molto bellino ed utile, ed anche facile da installare con windows xp. scarichiamo il file: plpgenbtldr-0.7.zip scompattiamo l&#8217;archivio in una directory, ad esempio c:\plop, rinominiamo il file [...]]]></description>
			<content:encoded><![CDATA[<p>Il mio portatile, pur con bios aggiornato, non supporta l&#8217;avvio da periferiche di archiviazione usb; ma per fortuna ho scoperto un magnifico software, PLoP Bootmanager, un boot manager molto bellino ed utile, ed anche facile da installare con windows <span id="more-65"></span>xp.</p>
<p>scarichiamo il file:  <a href="http://download.plop.at/files/bootmngr/plpgenbtldr-0.7.zip">plpgenbtldr-0.7.zip</a></p>
<p>scompattiamo l&#8217;archivio in una directory, ad esempio c:\plop, rinominiamo il file <span>plpinstc.com</span> in <span>plpbt.bin, e </span> lanciamo l&#8217;eseguibile plpgenbtldr.exe, che crea il file plpbtldr.bin nella stessa directory.</p>
<p>A questo punto editiamo il file c:\boot.ini aggiungendo la seguente riga:</p>
<blockquote><p>c:\plop\plpbtldr.bin=&#8221;Installa PLoP Boot Manager&#8221;</p></blockquote>
<p>Adesso dobbiamo abilitare su windows la visualizzazione della scelta delle opzioni di boot, e per fare questo clicchiamo con il tasto destro sopra &#8216;Risorse del Computer&#8217;, quindi proprietà, avanzate, tasto impostazioni di avvio e ripristino, e mettere la spunta su &#8216;visualizza elenco sistemi operativi per&#8217;.</p>
<p>Ora possiamo riavviare il PC, e quando ci verrà chiesto di scegliere tra avviare &#8216;Windows e  &#8216;Installa PLoP Boot Manager&#8217;, scegliamo la seconda opzione.</p>
<p>Nel menu che ci comparirà scegliamo con il tasto &#8217;1&#8242; la prima opzione e poi di nuovo tasto &#8217;1&#8242; per installare il boot manager nell&#8217;MBR dell&#8217;hard disk. Completata la veloce fase di installazione, possiamo far ripartire il pc, ed ecco che saremo in grado di far partire o il sistema operativo originale, ed in più ora abbiamo anche l&#8217;opzione per far avviare un sistema operativo direttamente da pendrive USB.</p>
<p>Naturalmente dopo aver fatto ripartire Windows XP, possiamo andare a levare la spunta delle opzioni del sistema operativo di Microsoft  selezionata nei passi precedenti.</p>
<p>Io fino ad ora ho sfruttato il 2% delle potenzialità di PLoP, e questi sono i passi che sono serviti a me per la mia configurazione, quindi vi riporto  il link ufficiale di PLoP Bootmanager per trovare informazioni su tante altre potenzialità e features di questo software:</p>
<p><a href="http://www.plop.at/en/bootmanager.html">PLoP Bootmanager Home Page</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/10/08/usb-boot-anche-se-non-supportato-dal-bios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La magia di ice:outputStyle</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/09/24/la-magia-di-iceoutputstyle/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/09/24/la-magia-di-iceoutputstyle/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 22:35:39 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java for Web]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[foglio di stile]]></category>
		<category><![CDATA[IceFaces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=57</guid>
		<description><![CDATA[Mi sono sempre chiesto perchè fare un tag icefaces apposito solo per inserire il link ad un foglio di stile. Bene, oggi pomeriggio non riuscivo a venire a capo di un problema, ho letto la documentazione del componente in questione, ed ecco svanite tutte le perplessità (il consiglio leggere sempre le istruzioni prima dell&#8217; uso [...]]]></description>
			<content:encoded><![CDATA[<p>Mi sono sempre chiesto perchè fare un tag icefaces apposito solo per inserire il link ad un foglio di stile. Bene, oggi pomeriggio non riuscivo a venire a capo di un problema, ho letto la documentazione del componente in questione, ed ecco svanite tutte le perplessità (il consiglio<span id="more-57"></span> leggere sempre le istruzioni prima dell&#8217; uso è sempre valido).</p>
<p>Con le facelets, di default è abilitato che non vengono considerati i commenti html, in modo da mandare meno roba ad i clients, ma questo comporta che anche i commenti condizionali per i css mirati ad i browsers (maledetto IE) vanno a finire nel garbage.</p>
<p>Il caro metodo:</p>
<blockquote><p>&lt;!&#8211;[if IE]&gt;&#8230;.&lt;![endif]&#8211;&gt;</p></blockquote>
<p>non viene più mandato nella response. Ed ora come faccio ad inserire un foglio di stile che aggiusta qualcosa solo quando apro l&#8217;applicazione web con Internet Explorer?</p>
<p>Niente di più semplice: se il mio voglio di stile si chiama ad esempio /css/styleRed.css, creo nella stessa directory il file css dedicato al browser internet explorer 7 chiamandolo con lo stesso pathname, ma preponendo all&#8217;estensione .css la stringa &#8220;_ie7&#8243;; ecco quindi che il secondo foglio di stile sarà /css/styleRed_ie7.css.</p>
<p>A questo punto basta che nella nostra pagina web o nel template usiamo il comando:</p>
<blockquote><p>&lt;ice:outputStyle href=&#8221;/css/styleRed.css&#8221;/&gt;</p></blockquote>
<p>ed icefaces fa tutto il lavoro per noi: apri con mozilla e viene caricato solo styleRed.css, apri con IE7 e trovi nel sorgente pagina caricato styleRed.css e subito dopo styleRed_ie7.css</p>
<p>Bellissimo e facilissimo, no?</p>
<p>Le stringhe da usare per creare i fogli di stile adattati per i browser sono:</p>
<ul>
<li>Internet Explorer &lt; 7 = _ie.css</li>
</ul>
<ul>
<li> Internet Explorer 7 = _ie7.css</li>
</ul>
<ul>
<li> Safari = _safari.css</li>
</ul>
<ul>
<li> Sun Studio Creator = _dt.css</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/09/24/la-magia-di-iceoutputstyle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Glassfish su Windows XP o 2003 Server</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/07/08/server-glassfish-su-windows-xp-o-2003-server/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/07/08/server-glassfish-su-windows-xp-o-2003-server/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 08:53:04 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Mondo Windows]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[domain.xml]]></category>
		<category><![CDATA[GlassFish]]></category>
		<category><![CDATA[glassfishSvc]]></category>
		<category><![CDATA[java_home]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jre]]></category>
		<category><![CDATA[servizio]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=54</guid>
		<description><![CDATA[Ho avuto la necessità di installare un server Glassfish v2.1 su una macchina Windows 2003 server, messo su come servizio di sistema e quindi avviato in automatico all&#8217;avvio del computer. Per installare Glassfish prima di tutto è necessario avere installato una recente versione di JRE o JDK nel sistema, e settare correttamente la variabile di [...]]]></description>
			<content:encoded><![CDATA[<p>Ho avuto la necessità di installare un server Glassfish v2.1 su una macchina Windows 2003 server, messo su come servizio di sistema e quindi avviato in automatico all&#8217;avvio del computer.</p>
<p>Per installare Glassfish prima di tutto è necessario avere installato una recente versione di JRE o JDK nel sistema, e settare correttamente la variabile di ambiente</p>
<pre>JAVA_HOME</pre>
<p>tra le variabili di sistema;<span id="more-54"></span> il percorso specificato per questa variabile deve essere la directory principale dell&#8217;installazione dell&#8217;ambiente java, per intenderci sotto di essa è possibile trovare le cartelle &#8216;lib&#8217; e &#8216;bin&#8217;.</p>
<p>Fatto ciò, avendo scaricato il file di Glassfish (è un file con estensione .jar) dal sito <a title="Glassfish download" href="https://glassfish.dev.java.net/" target="_blank">https://glassfish.dev.java.net/</a>, apriamo un prompt dei comandi, portiamoci nella directory dove è presente il file appena scaricato, e lanciamo il comando:</p>
<pre class="brush:shell">java -Xmx256m -jar glassfish.jar</pre>
<p>(al posto di glassfish.jar inserire il nome preciso del file)</p>
<p>verrà creata una directory con i file del server scompattati. Se vogliamo possiamo rinominare questa cartella e spostarla nel path che sarà definitivo, ad esempio potrebbe essere &#8216;<em>c:\programmi\glassfish</em>&#8216;.</p>
<p>Sempre dal prompt dei comandi, portiamoci sulla directory definitiva (<em>cd c:\programmi\glassfish</em>) e lanciamo il comando:</p>
<pre class="brush:shell">lib\ant\bin\ant -f setup.xml</pre>
<p>Questo comporterà la creazione dell&#8217;ambiente di default del server Glassfish, quindi il dominio di default sarà <em>domain1</em>, le porte utilizzate per i servizi saranno la <em>8080</em> e la <em>8081</em> per il browsing delle applicazioni installate e la <em>4848</em> per l&#8217;amministrazione via web, che di default usa le credenziali :</p>
<p>username: <em>admin</em></p>
<p>password: <em>adminadmin</em></p>
<p>Consiglio di cambiare la password di admin al primo accesso all&#8217;amministrazione del server.</p>
<p>Per installare il Server come servizio di Windows, bisogna prima di tutto scaricare il file:</p>
<pre><a title="GlassfishSVC" href="http://wiki.glassfish.java.net/attach/FaqRunAsWindowsService/GlassfishSvc.jar" target="_blank">GlassfishSvc.jar</a></pre>
<p>copiarlo nella home directory del server (<em>c:\programmi\glassfish</em>) e lanciare sempre da prompt il comando:</p>
<pre class="brush:shell">java -jar GlassfishSvc.jar -i</pre>
<p>tra i servizi di Windows ora è possibile trovare la riga del server, e dalla sue impostazioni è possibile settare l&#8217;avvio automatico allo startup del pc o gli altri parametri caratteristici di un servizio windows.</p>
<p>Inoltre l&#8217;installazione di questo servizio  prevede, oltre al parametro<em> -i</em> che sta per install, altri parametri che possono risultare utili in base ad una installazione non di default del server; questi sono (preso dall&#8217;help del file):</p>
<pre class="brush:shell">-i        Installs a Windows service for Glassfish.
-u        Uninstalls a Windows service for Glassfish.
-n name   Name for the Windows service. Use double quotes around names that contain spaces.  Defaults to GlassfishAppServer.
-d path   Directory where Glassfish is installed. Use double quotes around paths with spaces, and escape back slashes.
          Defaults to current directory.
-m domain Name of the Glassfish domain to start and stop. Defaults to domain1.
-a user   Glassfish admin user name.  Defaults to admin.
-p pwd    Glassfish admin password.
          A password.txt file will be created in the Glassfish install directory containing
          the password in  plain text, and the Windows service will be configured to read
          from it. This is usually not necessary. If no password is passed
          in, the password.txt file will not be created.</pre>
<p>Non è finita qui però: per evitare di far chiudere  Glassfish quando si disconnette l&#8217;utente di sistema, è necessario aggiungere la seguente riga al file <em>c:\programmi\glassfish\domains\domain1\config\domain.xml</em>:</p>
<pre class="brush:shell">&lt;jvm-options&gt;-Xrs&lt;/jvm-options&gt;</pre>
<p>Va inserita insieme alle già presenti righe che hanno una struttura del tipo <em>&lt;jvm-options&gt;qualcosa&lt;/jvm-options&gt;</em></p>
<p>Salvare il file <em>domain.xml</em>, e se Glassfish era già stato fatto partire, fare un riavvio del servizio.</p>
<p>Inoltre, se l&#8217;installazione avviene in un Windows 2003 Server, è necessario anche aggiungere la seguente riga nel file <em>c:\programmi\glassfish\lib\processLauncher.xml</em>:</p>
<pre class="brush:shell">&lt;sysproperty key="-Xrs"/&gt;</pre>
<p>Questa riga va inserita all&#8217;interno della struttura del tag <em>&lt;process name=&#8221;as9-server&#8221;&gt;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/07/08/server-glassfish-su-windows-xp-o-2003-server/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>JSF &#8211; Eseguire codice in ogni fase</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/06/02/jsf-eseguire-codice-in-ogni-fase/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/06/02/jsf-eseguire-codice-in-ogni-fase/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 23:52:26 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Java for Web]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[faces-config.xml]]></category>
		<category><![CDATA[fase]]></category>
		<category><![CDATA[JavaServer Faces]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[phaselistener]]></category>
		<category><![CDATA[phases]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=46</guid>
		<description><![CDATA[Spesso si ha l&#8217;esigenza di compiere delle istruzioni ogni volta che viene richiamata una pagina jsf, prima o dopo della fase di request, o di response etc.. Bene, tramite l&#8217;implementazione della classe PhaseListener abbiamo una ampia possibilità di fare ttuto questo in pochissimi passi. Ad esempio l&#8217;esigenza del codice di esempio proposto è controllare l&#8217;accesso [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso si ha l&#8217;esigenza di compiere delle istruzioni ogni volta che viene richiamata una pagina jsf, prima o dopo della fase di request, o di response etc.. Bene, tramite l&#8217;implementazione della classe PhaseListener abbiamo una ampia possibilità di fare ttuto questo in pochissimi passi<span id="more-46"></span>.</p>
<p>Ad esempio l&#8217;esigenza del codice di esempio proposto è controllare l&#8217;accesso alle pagine web prima di aver fatto effettuare il login ad un utente dell&#8217;applicazione. Il login lo rendo disponibile tramite campi di inputtext nella pagina &#8220;login.jsf&#8221; o altra estensione (dipende dalle configurazioni nel web.xml), e questa sarà l&#8217;unica pagina senza controllo. Se qualcuno cerca di raggiungere altre pagine senza essere stato autenticato, riporto l&#8217;utente alla pagina di login.</p>
<p>La prima cosa da fare quindi è creare una classe simile a questa:</p>
<pre class="brush:java">package lorenzo.phases;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

/**
 *
 * @author Lorenzo
 */
public class CheckPermsPhaseListener implements PhaseListener {

    public void afterPhase(PhaseEvent event) {
        FacesContext fc = event.getFacesContext();
        //controllo se sono nella pagina di login
        boolean loginpage = fc.getViewRoot().getViewId().lastIndexOf("login") &gt; -1 ? true : false;
        //se non sono nella pagina di login e se non sono loggato
        if (!loginpage &amp;&amp; !utility.getUserSessionBean().getLoggato()) {
            NavigationHandler nh = fc.getApplication().getNavigationHandler();
            nh.handleNavigation(fc, null, "logout");
        }
    }

    public void beforePhase(PhaseEvent event) {
    }

    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
}</pre>
<p>In questo esempio eseguo il codice di controllo subito dopo (metodo afterPhase) la fase di Restore View. Per far eseguire il codice in un altra fase, basta far ritornare al metodo getPhaseId un valore del tipo:</p>
<p>PhaseId.ANY_PHASE, PhaseId.APPLY_REQUEST_VALUES, PhaseId.INVOKE_APPLICATION, PhaseId.PROCESS_VALITATIONS, PhaseId.RENDER_RESPONSE, PhaseId.RESTORE_VIEW, PhaseId.UPDATE_MODEL_VALUES.</p>
<p>Creata la classe, bisogna registrarla nel file faces-config.xml, attraverso queste linee:</p>
<pre class="brush:xml">&lt;lifecycle&gt;
        &lt;phase-listener&gt;lorenzo.phases.CheckPermsPhaseListener&lt;/phase-listener&gt;
&lt;/lifecycle&gt;</pre>
<p>Ecco la sequenza delle fasi eseguite dal framework JSF:</p>
<pre>

<div class="wp-caption aligncenter" style="width: 521px"><img title="Fasi del ciclo JSF" src="http://www.ibm.com/developerworks/java/library/j-jsf2/figure2.gif" alt="Fasi Java ServerFaces" width="511" height="214" /><p class="wp-caption-text">Fasi Java ServerFaces</p></div></pre>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/06/02/jsf-eseguire-codice-in-ogni-fase/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Fastidioso Beep di Ubuntu</title>
		<link>http://lnx.tramuto.it/lorenzo/2009/04/28/fastidioso-beep-di-ubuntu/</link>
		<comments>http://lnx.tramuto.it/lorenzo/2009/04/28/fastidioso-beep-di-ubuntu/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 11:25:52 +0000</pubDate>
		<dc:creator>LoryX</dc:creator>
				<category><![CDATA[Mondo Linux]]></category>
		<category><![CDATA[beep]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[modprobe]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[pcspkr]]></category>
		<category><![CDATA[speaker]]></category>

		<guid isPermaLink="false">http://lnx.tramuto.it/lorenzo/?p=43</guid>
		<description><![CDATA[Piccolo aiuto per chi odia come me il beep dello speaker del computer quando uso il &#8220;tab&#8221; nella console di comando di Ubuntu; per eliminarlo basta lanciare il comando: sudo modprobe -r pcspkr che elimina il modulo kernel che usa appunto lo speaker. Se non vogliamo caricare questo modulo ogni volta che parte il sistema, [...]]]></description>
			<content:encoded><![CDATA[<p>Piccolo aiuto per chi odia come me il beep dello speaker del computer quando uso il &#8220;tab&#8221; nella console di comando di Ubuntu; per eliminarlo basta lanciare il comando:</p>
<pre class="brush:shell"><code>sudo modprobe -r pcspkr</code></pre>
<p>che elimina il modulo kernel che usa appunto lo speaker.</p>
<p>Se non vogliamo caricare questo modulo ogni volta che parte il sistema,<span id="more-43"></span> possiamo metterlo nella lista nera dei moduli caricati. Per far ciò inseriamo una nuova riga nel file di blacklist con questo comando:</p>
<pre class="brush:shell"><code>echo "blacklist pcspkr" | sudo tee -a /etc/modprobe.d/blacklist</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://lnx.tramuto.it/lorenzo/2009/04/28/fastidioso-beep-di-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

