<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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" version="2.0">

<channel>
	<title>Blogrammazione</title>
	
	<link>http://www.marcolecce.com/blog</link>
	<description>Il primo Blog sulla Programmazione, sull'Ingegneria del Software e sull'Informatica in generale</description>
	<pubDate>Thu, 02 Jul 2009 12:50:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Blogrammazione" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Blogrammazione</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>MySQL - Formattare efficientemente le date in formato datetime</title>
		<link>http://www.marcolecce.com/blog/2009/07/02/mysql-formattare-efficientemente-le-date-in-formato-datetime/</link>
		<comments>http://www.marcolecce.com/blog/2009/07/02/mysql-formattare-efficientemente-le-date-in-formato-datetime/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 12:45:45 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[MySql]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=164</guid>
		<description><![CDATA[I programmatori si trovano molto spesso a lavorare con le date: in applicativi di gestione del contenuto ad esempio, sono praticamente un elemento obbligatorio senza il quale molte operazioni basilari, come gli ordinamenti cronologici, non sarebbero possibili.
Ecco perchè diventa molto importante saper gestire questo tipo di dato. Vi sono molti modi differenti di manipolare le [...]]]></description>
			<content:encoded><![CDATA[<p>I programmatori si trovano molto spesso a lavorare con le date: in applicativi di gestione del contenuto ad esempio, sono praticamente un elemento obbligatorio senza il quale molte operazioni basilari, come gli ordinamenti cronologici, non sarebbero possibili.</p>
<p>Ecco perchè diventa molto importante saper gestire questo tipo di dato. Vi sono molti modi differenti di manipolare le date, ma quello che vogliamo presentare oggi è una soluzione che riguarda il salvataggio di date in una base di dati e il conseguente recupero.</p>
<p>Molti programmatori utilizzano le funzioni di manipolazione delle stringhe per formattare le date, ignorando che tale soluzione è poco performante ed ancora meno efficiente. Quando si lavora ad un progetto con un database alle spalle, bisogna sempre tenere presente che far eseguire alcuni tipi di operazioni al <a href="http://it.wikipedia.org/wiki/Database_management_system" target="_blank">DBMS</a> piuttosto che all&#8217;interpreste del linguaggio di programmazione (nel caso del PHP, ad esempio) è sicuramente molto più performante oltre che leggibile.</p>
<p>Bisogna a questo scopo conoscere alcune funzionalità che i database, o meglio, i <a href="http://it.wikipedia.org/wiki/Database_management_system" target="_blank">DBMS</a>, mettono a disposizione. Una di queste è proprio <a href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format" target="_blank"><strong>DATE_format</strong></a> , che appunto durante una interrogazione permette di inserire nel result set le date già formattate e pronte per l&#8217;utilizzo.</p>
<p>Vediamo un esempio:</p>
<p><em>SELECT title, created DATE_format(created, &#8216; %e/%m/%Y, %l:%i%p&#8217;) as created<br />
FROM table<br />
WHERE category=1<br />
ORDER BY created DESC</em></p>
<p>Supponiamo di avere una tabella per le notizie, da cui vogliamo recuperare il titolo e appunto la data di crezione di ogni item.</p>
<p>Attraverso l&#8217;utilizzo della funzione <a href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format" target="_blank"><strong>DATE_format</strong></a> messa a disposizione dal motore di MySQL, riceviamo una data già formatta è pronta per l&#8217;uso, senza dover richiamare ulteriori funzioni di formattazione o di manipolazione di stringhe, con un conseguente aumento delle prestazioni (seppure di pochi microsecondi nella maggior parte dei casi) e della leggibilità del codice.</p>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format" target="_blank"><strong>DATE_format</strong></a><strong> </strong>accetta due parametri: il primo è la data da formattare, il secondo è una stringa di formattazione, che segue delle regole simili a quelle utilizzate per questo tipo di stringhe dalla maggior parte dei linguaggi di programmazione, e che trovate <a href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format" target="_blank">qui</a>.</p>
<p>A questo punto, quando si utilizzerà il relativo result set, si potranno usare direttamente sia il campo <em>title </em>che il campo <em>created</em> senza ulteriosi interventi da parte del programmatore.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/07/02/mysql-formattare-efficientemente-le-date-in-formato-datetime/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Joomla - Gestione delle sessioni</title>
		<link>http://www.marcolecce.com/blog/2009/06/09/joomla-gestione-delle-sessioni/</link>
		<comments>http://www.marcolecce.com/blog/2009/06/09/joomla-gestione-delle-sessioni/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 14:37:25 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<category><![CDATA[Joomla]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=157</guid>
		<description><![CDATA[Joomla ha la caratteristica di essere estremamente versatile, e permette di installare i proprio moduli e componenti in maniera semplice e pulita, promuovendo sì l&#8217;utilizzo del CMS &#8220;a scatola chiusa&#8221;, ma anche lo sviluppo di elementi ad hoc per estenderne le funzionalità.
In questo ambito può essere davvero utile conoscere il meccanismo di funzionamento delle sessioni [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joomla.org/" target="_blank">Joomla</a> ha la caratteristica di essere estremamente versatile, e permette di installare i proprio moduli e componenti in maniera semplice e pulita, promuovendo sì l&#8217;utilizzo del CMS &#8220;a scatola chiusa&#8221;, ma anche lo sviluppo di elementi <em>ad hoc</em> per estenderne le funzionalità.</p>
<p>In questo ambito può essere davvero utile conoscere il meccanismo di funzionamento delle sessioni in <a href="http://www.joomla.org/" target="_blank">Joomla</a>. A differenza di quanto si crede, <a href="http://www.joomla.org/" target="_blank">Joomla</a> può essere considerato un vero e proprio framework, con le sue <a href="http://api.joomla.org/" target="_blank">API</a> e tutto ciò che serve per sviluppare componenti realmente e completamente integrati con il sistema.</p>
<p>Uno di questi oggetti, sicuramente tra i principali, è il JFactory: mediante questo oggetto infatti è possibile tra le altre cose gestire ad esempio le connessioni con il database, e, per l&#8217;appunto, le sessioni. Vediamo il procedimento esatto.</p>
<p>Il primo passo è recuperare la sessione e salvarla in una variabile che ne permetta l&#8217;utilizzo:</p>
<p style="text-align: center;"><em>$session =&amp;JFactory::getSession();</em></p>
<p style="text-align: left;">Notiamo che utilizziamo l&#8217;oggetto JFactory per salvare all&#8217;interno della variabile $session un riferimento alla sessione, che possiamo utilizzare per settare un valore:</p>
<p style="text-align: center;"><em>$my_value = &#8220;variabile di sessione&#8221;</em>;</p>
<p style="text-align: center;"><em>$session-&gt;set(&#8217;my_value&#8217;, $my_value);</em></p>
<p style="text-align: left;">In questo modo utilizziamo l&#8217;istanza della sessione precedentemente recuperata per memorizzare la variabile <em>$my_value</em> all&#8217;interno della sessione stessa. Il nome del parametro <em>&#8216;my_value&#8217;</em> non deve ovviamente essere per forza uguale a quello della variabile <em>($my_value)</em>, anche se è buona norma utilizzare lo stesso nome per il parametro e per la variabile, in modo da facilitare la programmazione.</p>
<p style="text-align: left;">Il valore precedente salvato in sessione è facilmente recuperabile attraverso il seguente comando:</p>
<pre class="php" style="text-align: center;"><em>$my_value = $session-&gt;get('my_value');</em></pre>
<p>Come possiamo vedere, quindi, il framework <a href="http://www.joomla.org/" target="_blank">Joomla</a> mette a disposizione tutta una serie di strumenti che facilitano il compito dello sviluppatore: è importante conoscere tali strumenti, perchè sono stati concepiti proprio per facilitare l&#8217;integrazione del nostro codice con quello del CMS, integrazioni da implementare nel modo corretto, se vogliamo che il nostro sistema rimanga stabile e sicuro.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/06/09/joomla-gestione-delle-sessioni/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP - Configurare un ambiente per il team development</title>
		<link>http://www.marcolecce.com/blog/2009/06/04/php-configurare-un-ambiente-per-il-team-development/</link>
		<comments>http://www.marcolecce.com/blog/2009/06/04/php-configurare-un-ambiente-per-il-team-development/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 07:16:42 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[Apache]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Server]]></category>

		<category><![CDATA[Sistemi Operativi]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=148</guid>
		<description><![CDATA[Il team development e la gestione del lavoro di gruppo è molto importante ed è spesso un aspetto trascurato: più un gruppo di lavoro è affiatato e coordinato, e più il lavoro sarà puntuale, preciso e professionale.
Il lavoro di squadra richiede da parte delle figure coinvolte pazienza e dedizione, e la strada da scegliere deve [...]]]></description>
			<content:encoded><![CDATA[<p>Il team development e la gestione del lavoro di gruppo è molto importante ed è spesso un aspetto trascurato: più un gruppo di lavoro è affiatato e coordinato, e più il lavoro sarà puntuale, preciso e professionale.</p>
<p>Il lavoro di squadra richiede da parte delle figure coinvolte pazienza e dedizione, e la strada da scegliere deve essere quelle del dialogo costruttivo e del rispetto delle idee di ognuno dei partecipanti.</p>
<p>Vi sono strumenti che è molto importante conoscere, perchè permettono di sincronizzare il lavoro del team e di gestire in modo professionale e ordinato progetti di dimensioni importanti. In questo articolo vedremo come configurare un ambiente di sviluppo professionale per il team development, ma non bisogna mai dimenticare un elemento importante: gli strumenti che vedremo sono molto potenti ed utili, ma non sono adatti a tutte le situazioni e a tutte le tipologie di progetto.</p>
<p>Uno strumento potente, ma inadatto alle caratteristiche dei progetti o dei movimenti produttivi interni dell&#8217;azienda, può provocare danni non indifferenti.</p>
<p>L&#8217;ambiente che andremo a configurare ha i seguenti requisiti:</p>
<ol>
<li>un server linux (fedora 10)</li>
<li>Apache, PHP, MySql installati nel server e nella propria macchina</li>
<li>IDE Zend Studio for Eclipse (o anche solo Eclipse) installato nella propria macchina</li>
</ol>
<p>Il sistema che andremo a configurare  è dunque composto da un server Linux su cui installaremo l&#8217;svn (subversion), e da una o più workstation su cui sarà configurato un ambiente di sviluppo in locale e l&#8217;IDE che ci permette di gestire i collegamenti con subversion e dunque di lavorare in team con i nostri colleghi.</p>
<p><strong>Configurazione del SERVER</strong></p>
<p>Avendo scelto come sistema operativo Fedora 10, possiamo utilizzare il tool yum per installare <a href="http://subversion.tigris.org/" target="_blank">subversion</a> su linux:</p>
<p style="text-align: center;"><em><code>yum install subversion</code></em></p>
<p>Per renderlo avviabile in Apache, installiamo il modulo mod_dav_svn:</p>
<p style="text-align: center;"><em><code>yum install mod_dav_svn</code></em></p>
<p>Nella directory root del server, creiamo le seguenti cartelle per il repository svn:</p>
<p style="text-align: center;"><em><code>mkdir /svn/repos<br />
svnadmin create /svn/repos/projects</code></em></p>
<p>Per questioni di permessi, è necessario cambiare il proprietario della cartella in &#8220;apache&#8221; :
</p>
<p style="text-align: center;"><em><code>chown -R apache.apache /svn</code></em></p>
<p>A questo punto, dobbiamo creare il file in cui verranno scritte le policy di sicurezza che controllano la metodologia di accesso ai progetti. Creiamo il file svnauth nella directory /svn/repos/projects/svnauth e inseriamo le utenze come da esempio seguente:<br />
<code><br />
[/]<br />
user1 = rw<br />
user2 = r</code></p>
<p><em>user1</em> in questo caso avrà accesso in lettura-scrittura, mentre <em>user2</em> avrà l&#8217;accesso in modalità in sola lettura in tutto il repository.</p>
<p>Il passo successivo è creare il file (/svn/repos/projects/svnpass) che conterrà le password degli utenti di cui sopra:</p>
<p style="text-align: center;"><em><code>htpasswd -bcm </code>/svn/repos/projects/svnpass<code> user1 passwordUser1<br />
htpasswd -bm </code>/svn/repos/projects/svnpass<code> user2 passwordUser2</code></em>
</p>
<p style="text-align: left;">Lanciando i comandi precedenti, creiamo un&#8217;associazione tra utente e password, e tale associazione verrà appunto scritta nel file <em>svnpass</em>. Importante: notate che i parametri del primo comando (<em>-bcm</em>) sono diversi dal secondo (<em>-bm</em>); questo perchè nel secondo caso andiamo solo ad aggiungere una riga al file <em>svnpass</em>, mentre nel primo caso è impostata anche la creazione opzionale del file nel caso in cui questo non esistesse. I parametri associati al comando htpassw hanno il seguento significato:</p>
<p style="text-align: left;">-c    creazione nuovo file</p>
<p style="text-align: left;">-m   forzare la crittografia MD5 della password</p>
<p style="text-align: left;">-b    usare la password inserita da linea di comando</p>
<p>Per ulteriori chiarimenti sul comando <em>htpasswd</em> consigliamo di leggerne la documentazione, anche perchè ci sono alcune differenza in base al sistema operativo in uso.</p>
<p>Ora è arrivato il momendo di configura <a href="http://www.apache.org/" target="_blank">Apache</a>; aggiungiamo allora le seguenti righe al file di configurazione del server web:</p>
<p><em><code>&lt;Location /svn/sandbox&gt;<br />
DAV svn<br />
SVNPath /svn/repos/sandbox<br />
AuthType Basic<br />
AuthName "Subversion Repository"<br />
AuthUserFile /svn/repos/sandbox/svnpass<br />
Require valid-user<br />
AuthzSVNAccessFile /svn/repos/sandbox/svnauth<br />
&lt;/Location&gt;</code></em></p>
<p><code>Riavviamo </code><a href="http://www.apache.org/" target="_blank">Apache</a><code>, e l'ambiente server è pronto per essere utilizzato. Se tutto funziona regolarmente, il repository dovrà essere accessibile da browser al seguente indirizzo</code> <em>http://www.yourserver.com/svn/projects</em>.</p>
<p>Sarà richiesta una login e una password, che ovviamente dovranno corrispondere a quelle che abbiamo procedentemente inserito.</p>
<p>Ora manca il passo finale, quello della configurazione del nostro IDE. Consideriamo a questo punto che su ogni macchina prediposta per il team development vi siamo già configurato un ambiente di sviluppo classico per lo sviluppo locale in PHP (<a href="http://www.apache.org/" target="_blank">Apache</a>-PHP-<a href="http://www.mysql.it/" target="_blank">MySql</a>).</p>
<p>In questa sede sarebbe troppo dispersivo e lungo descrivere il procedimento passo per passo: vi sono diversi pacchetti com xxamp o wamp che si possono usare per configurare in pochi minuti un ambiente di sviluppo in PHP perfettamente funzionante in ambiente Windows (nelle release Linux più diffuse, è già tutto prediposto per una installazione di tale ambiente), anche se il nostro consiglio è di procedere con installazioni manuali di cui si ha il completo controllo. L&#8217;unico appunto è di far puntare la directory root di apache nel workspace che abbiamo scelto durante la configurazione della IDE: in questo modo rendiamo visibili i nostri progetti <a href="http://www.zend.com/it/" target="_blank">ZEND</a> o <a href="http://www.eclipse.org/">ECLIPSE</a> nel nostro localhost.</p>
<p>La configurazione che vedremo è esattamente la stessa sia che si utilizzi Zend Studio for Eclipse che Eclispe con il plugin Php. Quest&#8217;ultima, come la maggior parte degli utenti sapranno, è completamente gratuita, e fornisce gli stessi strumenti di Zend Studio per quando riguarda il team development. Chiaramente Zend Studio è la piattaforma specifica per lo sviluppo in PHP, e sicuramente per un web developper professionista è il top in quanto a strumenti forniti e comodità di sviluppo. Tuttavia, per chi sviluppa in più di un linguaggio di programmazione a livelli professionali, Eclipse, a nostro avviso, risulta essere la scelta più versatile e comoda.</p>
<p>Procediamo alla configurazione della nostra IDE:</p>
<p>1) Apriamo la prospettiva SVN Repositories</p>
<p>2) Nella colonna di destra, andiamo ad aggiungere il nostro repository (tasto destro + new)</p>
<p>2.1) Inserire l&#8217;URL  del repository <em>http://www.tuoserver.com/svn/projects</em>.</p>
<p>2.2) Inserire l&#8217;user e la pass dell&#8217;utente che utilizzerà tale ambiente e che rientrano in quelle precedentemente configurate</p>
<p>2.3) Clicchiamo su &#8220;Finish&#8221;</p>
<p>A questo punto il repository verrà importato nel nostro ambiente: concluso tale processo, apriamo la prospettiva &#8220;PHP Explorer&#8221; (o Resource), che sarà la prospettiva vera e propria che useremo per lo sviluppo. Creiamo un nuovo progetto:</p>
<p>1) New Project</p>
<p>2) Svn &#8211;&gt; Project from SVN</p>
<p>3) Selezionare l&#8217;uso di un repository esistente</p>
<p>4) Scegliere il/i progetto/i, la data attuale e procedere cliccando su &#8220;Finish&#8221;</p>
<p>A questo punto verrà eseguito il checkout del progetto: questo procedimento impiegherà qualche minuti prima di concludere.</p>
<p>Siamo pronti per testare il meccanismo, tornando ad analizzare la sezione &#8220;PHP Explorer&#8221; della nostra IDE.</p>
<p>La prima cosa che notiamo sono dei &#8220;numeri&#8221; presenti su ogni risorsa all&#8217;interno del progetto: questo &#8220;numero&#8221; identifica la versione della risorsa: subversion, infatti, gestisce un potente e importante strumento di versioning, che facilita nelle operazioni di update o di recupero.</p>
<p>Cliccando con il tasto destro del mouse sul nome del progetto, e scegliendo &#8220;Team&#8221;, si apre un menu contestuale che ci mette a disposizione tutti gli strumenti potenti di gestione del team development e di subversion.</p>
<p>La operazioni principali sono <strong>UPDATE</strong> e <strong>COMMIT</strong> : la prima permette di ricevere le modifiche che gli altri membri del team hanno portato al progetto eseguendo un commit. Il COMMIT, appunto, è l&#8217;operazione più importante, perchè permette di scrivere sul progetto finale, direttamente sull&#8217;snv: bisogna per questo fare molto attenzione durante questa operazione, essere sicuri che ciò che si sta &#8220;commitando&#8221; sia perfettamente funzionante e ricordarsi sempre di commentare il proprio COMMIT per permettere una facile gestione del versioning.</p>
<p>Vi sono tantissime altre funzionalità molto importanti e potenti che possiamo sfruttatare per lavorare al meglio con questi strumenti, ma per ora riteniamo siamo meglio fermarci qui&#8230;.abbiamo già abbastanza elementi da testare! Chiaramente, nel caso ci fossero domande o questione di qualsiasi tipo, siamo a  vostra disposizione!! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/06/04/php-configurare-un-ambiente-per-il-team-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>EzPublish - Configurare il sistema per l’invio delle mail</title>
		<link>http://www.marcolecce.com/blog/2009/05/15/ezpublish-configurare-il-sistema-per-linvio-delle-mail/</link>
		<comments>http://www.marcolecce.com/blog/2009/05/15/ezpublish-configurare-il-sistema-per-linvio-delle-mail/#comments</comments>
		<pubDate>Fri, 15 May 2009 07:16:51 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<category><![CDATA[EzPublish]]></category>

		<category><![CDATA[Opensource]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=142</guid>
		<description><![CDATA[Quando si utilizza il settaggio di default di EzPublish, l&#8217;inoltro delle mail (ad esempio quelle per gestire la modifica della password) potrebbe non funzionare correttamente. La ragione è semplice: qmail, per funzionare regolarmente, necessita di configurazioni mail differenti da quelle che EzPublish ha per default.
Per permettere il corretto inoltro delle mail, dobbiamo settare alcuni parametri [...]]]></description>
			<content:encoded><![CDATA[<p>Quando si utilizza il settaggio di default di <a href="http://ez.no/" target="_blank">EzPublish</a>, l&#8217;inoltro delle mail (ad esempio quelle per gestire la modifica della password) potrebbe non funzionare correttamente. La ragione è semplice: qmail, per funzionare regolarmente, necessita di configurazioni mail differenti da quelle che <a href="http://ez.no/" target="_blank">EzPublish</a> ha per default.</p>
<p>Per permettere il corretto inoltro delle mail, dobbiamo settare alcuni parametri di configurazione del file</p>
<p style="text-align: center;">settings/override/site.ini.append.php</p>
<p>Nel caso in cui si utilizzi il protocollo <a href="http://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol" target="_blank">SMTP</a> per l&#8217;invio della posta, è necessario utilizzare una configurazione molto simile alla seguente:</p>
<pre>[MailSettings]
Transport=SMTP
AdminEmail=tuamail@mail.com
EmailSender=tuamail@mail.com
#Beware about white space at end of each line
TransportServer=localhost
HeaderLineEnding=%0D%0A
TransportPort=25
TransportUser=
TransportPassword=</pre>
<p>Nel caso invece si utilizzi sendmail, la configurazione deve essere simile alla seguente:</p>
<pre>[MailSettings]
Transport=sendmail
AdminEmail=tuamail@tuamail.com
EmailSender=tuamail@tuamail.com
#Beware about white space at end of each line
HeaderLineEnding=auto</pre>
<pre>Dopo queste modifiche è necessario svuotare la cache delle impostazioni INI. Se l'invio delle mail
non dovesse ancora funzionare, allora potremmo essere di fronte a uno dei seguenti casi:</pre>
<ol>
<li> Problema: Le mail arrivano con una Header scorretta utilizzando sendmail<br />
Soluzione: E&#8217; nececssario cambiare il valore della direttiva HeaderLineEnding in &#8220;auto&#8221;</li>
<li> Problema: Utilizzando il protocollo <a href="http://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol" target="_blank">SMTP</a> le mail non arrivano a destinazione</li>
<li> Soluzione Qualche impostazione potrebbe non essere corretta. Ricontrollare il blocco di codice relativo</li>
<li>Problema: La mail non arrivano quando la piattaforma <a href="http://ez.no/" target="_blank">EzPublish</a> e il server mail girano su macchine diversa.<br />
Soluzione:L&#8217;inoltro locale delle mail potrebbe essere ancora attivo. Disabilitarlo dal proprio pannello di hosting ( nel caso di Plesk: Domain-&gt;Mail-&gt;Disable/Enable Switch )</li>
<li> Problema: Il protocollo <a href="http://it.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol" target="_blank">SMTP</a> non funziona con <a href="http://ez.no/" target="_blank">EzPublish</a> 4.0.0<br />
Soluzione: Questo è un bug. Eseguiamo l&#8217;upgrade a <a href="http://ez.no/" target="_blank">EzPublish</a> 4.0.1 o eseguiamo il path del file ezsmtp.php</li>
<li> Problema: Le configurazione di cui sopra non funzionano<br />
Soluzione: Ci potrebbe essere uno spazio bianco alla fine del codice. Rimuovetelo.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/05/15/ezpublish-configurare-il-sistema-per-linvio-delle-mail/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Maps - Come inserire sul proprio sito le google maps con indirizzi dinamici</title>
		<link>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/</link>
		<comments>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 10:55:14 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[ASP]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=132</guid>
		<description><![CDATA[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&#8217;esatta posizione di un indirizzo o di una locazione geografica.
Oramai su quasi tutte le pagine &#8220;Contatti&#8221; sparse per [...]]]></description>
			<content:encoded><![CDATA[<p id="line120">Gli strumenti forniti da <a href="http://www.google.it/" target="_blank">Google</a> sono sempre più utilizzati per integrare i portali web con servizi sempre più interessanti.<br />
Tra i più utilizzati e apprezzati dagli utenti, vi sono sicuramente le <a href="http://code.google.com/apis/maps/" target="_blank">google map</a>, ovvero le mappe che indicano l&#8217;esatta posizione di un indirizzo o di una locazione geografica.<br />
Oramai su quasi tutte le pagine &#8220;Contatti&#8221; sparse per il mondo è presente tale servizio: l&#8217;utilizzo  è molto semplice, e la documentazione ricca, anche se per specifiche personalizzazioni bisogna impegnarsi un poco ( giustamente <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Ad esempio, potremmo avere la necessità di inserire nelle nostre pagine una mappa di google che, a<br />
seconda dell&#8217;indirizzo passato (e quindi dinamicamente), visualizzi la posizione desiderata con un &#8220;marker&#8221; e le informazioni relative.<br />
Lo script per implementare tale meccanismo è il seguente:</p>
<p><em>&lt;<span class="start-tag">script</span><span class="attribute-name"> type</span>=<span class="attribute-value">&#8220;text/javascript&#8221;</span>&gt;<br />
var map = null;<br />
var geocoder = null;</p>
<p>function load() {<br />
if (GBrowserIsCompatible()) {<br />
map = new GMap2(document.getElementById(&#8221;map&#8221;));<br />
var latitude = 45.05872;<br />
var longitude = 7.723114;<br />
var zoom = 13;<br />
var location = new GLatLng(latitude, longitude);<br />
//    var marker = new GMarker(location);<br />
//    map.addOverlay(marker);<br />
map.setCenter(location, zoom);<br />
geocoder = new GClientGeocoder();<br />
showAddress(address);<br />
}<br />
}</p>
<p>function showAddress(address) {<br />
if (geocoder) {<br />
geocoder.getLatLng(<br />
address,<br />
function(point) {<br />
if (!point) {<br />
$(&#8221;#nomap&#8221;).text(&#8217;indirizzo non disponibile&#8217;);<br />
} else {<br />
map.setCenter(point, 13);<br />
var marker = new GMarker(point);<br />
map.addOverlay(marker);<br />
//				              marker.openInfoWindowHtml(address);<br />
}<br />
}<br />
);<br />
}<br />
}</p>
<p>window.onload = load;<br />
window.onunload = GUnload;<br />
&lt;/<span class="end-tag">script</span>&gt;</p>
<p>&lt;<span class="start-tag">div</span><span class="attribute-name"> id</span>=<span class="attribute-value">&#8220;nomap&#8221; </span><span class="attribute-name">style</span>=<span class="attribute-value">&#8220;color: red;&#8221;</span>&gt;&lt;/<span class="end-tag">div</span>&gt;<br />
&lt;<span class="start-tag">div</span><span class="attribute-name"> id</span>=<span class="attribute-value">&#8220;map&#8221; </span><span class="attribute-name">style</span>=<span class="attribute-value">&#8220;width: 300px; height: 200px;&#8221;</span>&gt;&lt;/<span class="end-tag">div</span>&gt;</em></p>
<p>Il codice HTML delle ultime due righe crea due div: il primo serve per visualizzare un messaggio di<br />
warining nel caso in cui l&#8217;indirizzo passato non sia stato trovato dal motore di ricerca, il secondo serve per la visualizzazione della mappa.</p>
<p>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&#8217;id del div che conterrà la mappa (map).<br />
Eseguite tutte le assegnazioni del caso, viene infine richiamata la seconda funzione importante,<br />
showAddress(address).<br />
Questa ha un parametro, <em>address</em>, che potremmo ad esempio generare e passare con computazioni proveniente da pagine php, che è proprio l&#8217;indirizzo che verrà visualizzato sulla mappa attraverso l&#8217;uso dei marker settati nella prima funzione.<br />
L&#8217;indirizzo è un parametro, ed è quindi dinamico: ogni qualvolta la pagina verrà ricaricata, leggerà l&#8217;indirizzo attualmente impostato e lo passerà allo script, che si occuperà di visualizzarlo sulla mappa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Virtualizzazione - Configurare il supporto USB di VirtualBox su Fedora 10</title>
		<link>http://www.marcolecce.com/blog/2009/04/09/virtualizzazione-configurare-il-supporto-usb-di-virtualbox-su-fedora-10/</link>
		<comments>http://www.marcolecce.com/blog/2009/04/09/virtualizzazione-configurare-il-supporto-usb-di-virtualbox-su-fedora-10/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 07:29:22 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Sistemi Operativi]]></category>

		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=129</guid>
		<description><![CDATA[Con l&#8217;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&#8230;.ecco come procedere!
Il problema è ovviamente dato dalla configurazione [...]]]></description>
			<content:encoded><![CDATA[<p>Con l&#8217;ultima versione di <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a>, 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&#8230;.ecco come procedere!</p>
<p>Il problema è ovviamente dato dalla configurazione dei permessi: per prima cosa, dobbiamo aggiungere la nostra utenza al gruppo <strong>vboxusers</strong> (possiamo controllare che non sia già stato fatto in automatico lanciando il comando <em>groups</em>), con il seguente comando</p>
<p style="text-align: center;"><em>sudo gpasswd -a $(logname) vboxusers</em></p>
<p>Ora dobbiamo garantire i permessi di scrittura e lettura su  &#8220;usbfs&#8221; per gli utenti che appartengono al gruppo &#8220;vboxusers&#8221;.</p>
<p>Su Fedora 10, &#8220;usbfs&#8221; è accessibile da <em>/proc/bus/usb</em> che per configurazione di defualt appartiene all&#8217;utente root e al gruppo root. Potremmo anche modificare i permessi con il comando <em>chmod</em>, 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 &#8220;usbfs&#8221;, e finchè esiste tale comunicazione ( cioè esattamente per tutto il tempo in cui il sistema è <em>running</em> ) il filesystem risulta &#8220;busy&#8221;. Il &#8220;trucco&#8221; sta nel &#8220;montare&#8221; una copia di &#8220;usbfs&#8221; da qualche parte nel sistema, passando gli effetti delle configurazioni anche su<em> /proc/bus/usb</em>. Per fare questo, ci serve l&#8217;id del gruppo &#8220;vboxusers&#8221;, che troviamo con il seguente comando:</p>
<p style="text-align: center;"><em>cat /etc/group | grep vboxusers</em></p>
<p>L&#8217;output sarà qualcosa di simile a:</p>
<p style="text-align: center;"><em>vboxusers:x:501:nomeutente</em></p>
<p>che specifica appunto che sul proprio sistema l&#8217;id del gruppo (gid) &#8220;vboxusers&#8221; è 501. Ora mpossiamo procedere nella creazione di un altro punto di mount per &#8220;usbfs&#8221;. Decidiamo di crearlo in /root/usbfs:</p>
<p style="text-align: center;"><em>sudo mkdir /root/usbfs</em></p>
<p>Il prossimo passo è la modifica del file /etc/fstab per &#8220;montare&#8221; una copia di &#8220;usbfs&#8221; in /root/usbfs. Editiamo quindi il file, ad esempio con vi, e alla fine di questo aggiungiamo le seguenti righe:</p>
<p style="text-align: center;"><em>none /root/usbfs usbfs rw,devgid=501,devmode=664 0 0</em></p>
<p>Ovviamente, se nel vostro sistema il gid del gruppo &#8220;vboxusers&#8221; è differente da 501, dovete sostituirlo con quello appropriato. Per applicare i cambiamenti, lanciamo il comando di &#8220;mount&#8221;:</p>
<p style="text-align: center;"><em>sudo mount -a</em></p>
<p style="text-align: left;">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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/04/09/virtualizzazione-configurare-il-supporto-usb-di-virtualbox-su-fedora-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>EzPublish - Disabilitare le cache durante lo sviluppo</title>
		<link>http://www.marcolecce.com/blog/2009/03/03/ezpublish-disabilitare-le-cache-durante-lo-sviluppo-del-portale/</link>
		<comments>http://www.marcolecce.com/blog/2009/03/03/ezpublish-disabilitare-le-cache-durante-lo-sviluppo-del-portale/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 11:20:06 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[CMS]]></category>

		<category><![CDATA[EzPublish]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=120</guid>
		<description><![CDATA[EzPublish è un prodotto davvero interessante. Proprio per questo motivo, abbiamo deciso di creare una sezione dedicata a questo framework.
E&#8217; un prodotto per certi versi molto complesso, per il quale la curva di apprendimento è sicuramente elevata, ma una volta che si prende possesso delle sue funzionalità, si ha a disposizione un vero e proprio [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ez.no/" target="_blank">EzPublish</a> è un prodotto davvero interessante. Proprio per questo motivo, abbiamo deciso di creare una sezione dedicata a questo framework.</p>
<p>E&#8217; un prodotto per certi versi molto complesso, per il quale la curva di apprendimento è sicuramente elevata, ma una volta che si prende possesso delle sue funzionalità, si ha a disposizione un vero e proprio ambiente di sviluppo per portali web.</p>
<p>Prima di iniziare lo sviluppo, è buona norma disabilitare la cache del template di <a href="http://ez.no/" target="_blank">EzPublish</a>. <a href="http://ez.no/" target="_blank">EzPublish</a> infatti usa la cache per velocizzare il caricamento delle pagine, ed incrementare le perfomance del portale in ambiente di produzione.</p>
<p>In ambiente di sviluppo, però, questo meccanismo rallenta di molto il lavoro, perchè con la cache attiva, è necessario ad ogni modifica eseguire il &#8220;flush&#8221; (ovvero lo svuotamento) della cache per vedere le modifiche al portale.</p>
<p>Per eseguire il &#8220;flush&#8221; è necessario effettuare l&#8217;accesso all&#8217;interfaccia di amministrazione e:</p>
<div class="attribute-long">
<ol>
<li>Cliccare sul tab <strong>Impostazioni</strong>.</li>
<li>Cliccare sul bottone <strong>Svuota tutte la cache</strong>.</li>
</ol>
<p class="ez-text-body-western">In aggiunta, dobbiamo disabilitare il caching del template in fase di compilazione. Per fare questo  e permettere quindi di visualizzare &#8220;al primo colpo&#8221; le modifiche effettuate dobbiamo disalibitare le seguenti cache:</p>
<ul>
<li>compilazione del template</li>
<li>cache della vista</li>
<li>cache di override</li>
</ul>
<p class="ez-text-body-western">Le configurazioni per disabilitare queste sono contenuto all&#8217;interno del file di configurazione</p>
<p class="ez-text-body-western">/settings/site.ini</p>
<p class="ez-text-body-western">Le configurazioni da sdisabilitare sono le seguenti:</p>
<pre class="wordwrap"><span class="line">[TemplateSettings]</span>

<span class="line">TemplateCompile=disabled</span><span class="line"> </span>

<span class="line">[ContentSettings]</span>

<span class="line">ViewCaching=disabled</span><span class="line"> </span>

<span class="line">[OverrideSettings]</span>

<span class="line">Cache=disabled</span>

<span class="line">Custom Frontpage Template</span></pre>
<p>Le performance del nostro portale <a href="http://ez.no/" target="_blank">EzPublish</a> saranno notevolmente ribassate, durante la fase di sviluppo, avendo appunto disabilitato le cache. Ovviamente le cache dovranno essere riabilitate prima che il sito passi all&#8217;ambiente di produzione.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/03/03/ezpublish-disabilitare-le-cache-durante-lo-sviluppo-del-portale/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP - Sviluppare comodamente con file .tpl</title>
		<link>http://www.marcolecce.com/blog/2009/02/17/php-sviluppare-comodamente-con-file-tpl/</link>
		<comments>http://www.marcolecce.com/blog/2009/02/17/php-sviluppare-comodamente-con-file-tpl/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 11:22:31 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=117</guid>
		<description><![CDATA[Quando capita di dover lavorare con strutture che utilizzano per il desgin HTML file con l&#8217;estensione .tpl, siamo di fronte ad un bivio: correre veloce veloce verso la colonna portante del nostro ufficio con la testa in avanti finchè non sentiamo un tonfo, oppure impazzire perchè siamo obbligati a lavorare sostanzialmente con file di testo, quindi [...]]]></description>
			<content:encoded><![CDATA[<p>Quando capita di dover lavorare con strutture che utilizzano per il desgin <a href="http://it.wikipedia.org/wiki/HTML" target="_blank">HTML</a> file con l&#8217;estensione .tpl, siamo di fronte ad un bivio: correre veloce veloce verso la colonna portante del nostro ufficio con la testa in avanti finchè non sentiamo un tonfo, oppure impazzire perchè siamo obbligati a lavorare sostanzialmente con file di testo, quindi senza la possibilità di avere i tag di codice colorati per facilitarne il riconoscimento.</p>
<p>In realtà siamo stati un pò troppo precipitosi <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> : c&#8217;è un&#8217;altra soluzione, ed ha fornirla è chiaramente la <a href="http://it.wikipedia.org/wiki/Integrated_development_environment" target="_blank">IDE </a>professionale e meravigliosa per lo sviluppo <a href="http://it.wikipedia.org/wiki/PHP" target="_blank">PHP</a>, ovvero <a href="www.zend.com/en/products/studio/" target="_blank">Zend Studio for Eclipse</a>.</p>
<p>Questo ambiente di sviluppo, oltre a fornire infinite utilissime ed efficentissime funzionalità per il professionista, permette la personalizzazione e la gestione dell&#8217;editor: lo sviluppatore può quindi decidere come visualizzare alcuni tipi di file, permettendogli di lavorare più agevolmente anche nelle situazioni più critiche.</p>
<p>Se vogliamo salvare la nostra testolina, ma soprattutto la colonna portante del nostro ufficio, tutto ciò che dobbiamo fare per lavorare tranquillamente con file aventi estensione .tpl è seguire questi semplici e veloci passi:</p>
<p><span class="MsgBodyText">1) nel menu, andare in Window-&gt;Preferences</span></p>
<p>2) nell Preferences, andare in General-&gt;Content Types</p>
<p>3) nella sezione Content Types, scegliere Text-&gt;PHP</p>
<p>4) Cliccare sul pulsante &#8220;Add&#8221;, ed inserire la stringa *.tpl</p>
<p>5) Cliccare sul pulsante &#8220;OK&#8221;</p>
<p>A questo punto, una volta riavviato il nostro ambiente di sviluppo, i file con estensione .tpl verranno visualizzati come normali file <a href="http://it.wikipedia.org/wiki/PHP" target="_blank">PHP</a>: in questo modo sarà più semplice riconoscere i tag <a href="http://it.wikipedia.org/wiki/HTML" target="_blank">HTML</a> dal codice <a href="http://it.wikipedia.org/wiki/PHP" target="_blank">PHP</a>, rendendo il nostro lavoro più efficiente e comodo. Ovviamente non è obbligatorio scegliere la visualizzazione in <a href="http://it.wikipedia.org/wiki/PHP" target="_blank">PHP</a> al passo 3) : ad esempio, chi preferisce, può associare i file .tpl alla visualizzazione <a href="http://it.wikipedia.org/wiki/HTML" target="_blank">HTML</a>, a seconda delle proprie necessità.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/02/17/php-sviluppare-comodamente-con-file-tpl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP - Ecco uno script per inserire immagini nel corpo delle mail</title>
		<link>http://www.marcolecce.com/blog/2009/02/05/php-ecco-uno-script-per-inserire-immagini-nel-corpo-delle-mail/</link>
		<comments>http://www.marcolecce.com/blog/2009/02/05/php-ecco-uno-script-per-inserire-immagini-nel-corpo-delle-mail/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 10:31:40 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=111</guid>
		<description><![CDATA[Torniamo ad occuparci di PHP, con un script davvero interressante. Attraverso il codice che vedremo, infatti, sarà possibile scrivere delle classi che potranno mandare mail in formato HTML, con all&#8217;interno del corpo del messaggio immagini, o immagini e testo.
Quello che vedremo è il cuore del codice che si occupa di configurare la mai e di [...]]]></description>
			<content:encoded><![CDATA[<p>Torniamo ad occuparci di PHP, con un script davvero interressante. Attraverso il codice che vedremo, infatti, sarà possibile scrivere delle classi che potranno mandare mail in formato HTML, con all&#8217;interno del corpo del messaggio immagini, o immagini e testo.</p>
<p>Quello che vedremo è il cuore del codice che si occupa di configurare la mai e di procedere successivamente all&#8217;invio. Il codice è il seguente:</p>
<p><em>$header = &#8220;From: Mittente &lt;mittente@mittente.com&gt;\n&#8221;;<br />
$header .= &#8220;X-Mailer: il nostro script\n&#8221;;</em></p>
<p><em>$boundary = &#8220;==String_Boundary_x&#8221; .md5(time()). &#8220;x&#8221;;<br />
$boundary2 = &#8220;==String_Boundary2_y&#8221; .md5(time()). &#8220;y&#8221;;</em></p>
<p><em>$header .= &#8220;MIME-Version: 1.0\n&#8221;;<br />
$header .= &#8220;Content-Type: multipart/related;\n&#8221;;<br />
$header .= &#8221; type=\&#8221;multipart/alternative\&#8221;;\n&#8221;;<br />
$header .= &#8221; boundary=\&#8221;$boundary\&#8221;;\n\n&#8221;;</em></p>
<p><em>$messaggio = &#8220;Se visualizzi il seguente messaggio il tuo programma non supporta i MIME\n\n&#8221;;</em></p>
<p><em>$messaggio .= &#8220;&#8211;$boundary\n&#8221;;<br />
$messaggio .= &#8220;Content-Type: multipart/alternative;\n&#8221;;<br />
$messaggio .= &#8221; boundary=\&#8221;$boundary2\&#8221;;\n\n&#8221;;</em></p>
<p><em>$messaggio .= &#8220;&#8211;$boundary2\n&#8221;;<br />
$messaggio .= &#8220;Content-Type: text/plain; charset=\&#8221;iso-8859-1\&#8221;\n&#8221;;<br />
$messaggio .= &#8220;Content-Transfer-Encoding: 7bit\n\n&#8221;;<br />
$messaggio .= &#8220;Messaggio alternativo in formato testo.\n\n&#8221;;</em></p>
<p><em>$messaggio .= &#8220;&#8211;$boundary2\n&#8221;;<br />
$messaggio .= &#8220;Content-Type: text/html; charset=\&#8221;iso-8859-1\&#8221;\n&#8221;;<br />
$messaggio .= &#8220;Content-Transfer-Encoding: 7bit\n\n&#8221;;<br />
$messaggio .= &#8220;&lt;html&gt;&lt;body&gt;&lt;p&gt;Questo messaggio è in formato &lt;strong&gt;html&lt;/strong&gt; ma ha una parte testuale insieme ad una immagine.&lt;/p&gt;&lt;p&gt;Sito &lt;a href=\&#8221;http://www.blogrammazione.it\&#8221;&gt;www.blogrammazione.it&lt;/a&gt;&lt;img src=\&#8221;cid:MiaImmagine123\&#8221;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;\n&#8221;;</em></p>
<p><em>$messaggio .= &#8220;&#8211;$boundary2&#8211;\n&#8221;;</em></p>
<p><em>$messaggio .= &#8220;&#8211;$boundary\n&#8221;;<br />
$messaggio .= &#8220;Content-ID: &lt;MiaImmagine123&gt;\n&#8221;;<br />
$messaggio .= &#8220;Content-Type: image/jpeg\n&#8221;;<br />
$messaggio .= &#8220;Content-Transfer-Encoding: base64\n\n&#8221;;</em></p>
<p><em>$allegato = &#8220;immagine.jpg&#8221;;<br />
$file = fopen($allegato,&#8217;rb&#8217;);<br />
$data = fread($file,filesize($allegato));<br />
fclose($file);</em></p>
<p><em>$data = chunk_split(base64_encode($data));<br />
$messaggio .= &#8220;$data\n\n&#8221;;</em></p>
<p><em>// chiusura della sezione multipart/related<br />
$messaggio .= &#8220;&#8211;$boundary&#8211;\n&#8221;;</em></p>
<p><em>$subject = &#8220;oggetto del messaggio alternativo con immagini inline&#8221;;</em></p>
<p><em>if( @mail(&#8221;ricevente@ricevente.it&#8221;, $subject, $messaggio, $header) ) echo &#8220;e-mail inviata con successo!&#8221;;<br />
else echo &#8220;errore nell&#8217;invio dell&#8217;e-mail!&#8221;;<br />
</em></p>
<p>Per comodità, il codice sopra scritto è scaricabile come file .txt al seguente <a href="http://www.marcolecce.com/blog/Esempi/esempio9/image.txt" target="_blank">indirizzo</a>. Procediamo con l&#8217;analisi dello script: dopo aver settato il mittente, creiamo due &#8220;boundary&#8221;. Queste &#8220;etichette&#8221; vengono utilizzate nell&#8217;intestazione del messaggio per separare le sezioni <a href="http://en.wikipedia.org/wiki/MIME" target="_blank">MIME</a> che compongono il corpo della mail: nel nostro esempio, avremo una sezione di testo visibile solo nel caso in cui il proprio client di posta non supporta il formato <a href="http://en.wikipedia.org/wiki/MIME" target="_blank">MIME</a>, un&#8217;altra sezione per il testo della mail e una&#8217;altra ancora per l&#8217;immagine nel caso in cui il client invece supporti correttamente i formati <a href="http://en.wikipedia.org/wiki/MIME" target="_blank">MIME</a>.</p>
<p>La gestione dell&#8217;mmagine avviene nelle seguenti righe di codice:</p>
<p><em>$messaggio .= &#8220;Content-ID: &lt;MiaImmagine123&gt;\n&#8221;;<br />
$messaggio .= &#8220;Content-Type: image/jpeg\n&#8221;;<br />
$messaggio .= &#8220;Content-Transfer-Encoding: base64\n\n&#8221;;</em></p>
<p><em>$allegato = &#8220;immagine.jpg&#8221;;<br />
$file = fopen($allegato,&#8217;rb&#8217;);<br />
$data = fread($file,filesize($allegato));<br />
fclose($file);</em></p>
<p><em>$data = chunk_split(base64_encode($data));<br />
$messaggio .= &#8220;$data\n\n&#8221;;</em></p>
<p>Nella prima riga dichiariamo l&#8217;id, il nome dell&#8217;etichetta che identifica la nostra immagine. La seconda e la tersa riga invece servono per specificare rispettivamente il formato dell&#8217;immagine e la codifica. Infatti per inserire l&#8217;immagine all&#8217;interno del corpo del messaggio, effettueremo una conversione base64, in questo modo evitiamo che venga inserita come semplice allegato e permettiamo al client di posta di visualizzare come parte del corpo della mail.</p>
<p>Le istruzioni successive non fanno altro che permettere la lettura dell&#8217;immagine come file ed effettuare la codifica vera e propria. L&#8217;ultima istruzione di questo segmento concatena la codifica base64 dell&#8217;immagine al corpo del messaggio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/02/05/php-ecco-uno-script-per-inserire-immagini-nel-corpo-delle-mail/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linux - Gestire il proprio lettore MP3 con Linux</title>
		<link>http://www.marcolecce.com/blog/2009/01/15/linux-gestire-il-proprio-lettore-mp3-con-linux/</link>
		<comments>http://www.marcolecce.com/blog/2009/01/15/linux-gestire-il-proprio-lettore-mp3-con-linux/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 08:52:48 +0000</pubDate>
		<dc:creator>maje</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Sistemi Operativi]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=103</guid>
		<description><![CDATA[Ecco un piccolo applicativo (e piccolo non per modo di dire, pesa poco più di 60 k) davvero molto interessante: si chiama Gnomad2, una meraviglia per gli ambienti gnome Linux.
Questo applicativo permette di gestire la musica sul proprio lettore MP3, senza doversi preoccupare di installare i soliti driver &#38; co per l&#8217;amministrazione di tali strumenti, [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco un piccolo applicativo (e piccolo non per modo di dire, pesa poco più di 60 k) davvero molto interessante: si chiama <a href="http://gnomad2.sourceforge.net/" target="_blank">Gnomad2</a>, una meraviglia per gli ambienti gnome Linux.</p>
<p>Questo applicativo permette di gestire la musica sul proprio lettore <a href="http://it.wikipedia.org/wiki/MP3" target="_blank">MP3</a>, senza doversi preoccupare di installare i soliti driver &amp; co per l&#8217;amministrazione di tali strumenti, driver che normalmente pesano molto sul sistema operativo e che installano applicativi aggiuntivi che probabimente non userete mai. E&#8217; un grosso passo avanti vista la situazione di qualche tempo fa, in cui sostanzialmente si era obbligati ad avere Windows per gestire i propri audio player.</p>
<p>L&#8217;installazione su un sistema Fedora è molto semplice, è sufficiente utilizzare yum con il seguente comando:</p>
<p style="text-align: center;"><em>yum install gnomad2</em></p>
<p>e l&#8217;utilizzo è altrettanto banale: è sufficiente collegare al proprio pc il lettore <a href="http://it.wikipedia.org/wiki/MP3" target="_blank">MP3</a>, e nel terminale digitare il comando:</p>
<p style="text-align: center;"><em>gnomad2 </em></p>
<p>e premere invio. Si aprirà una finestra dall&#8217;interfaccia molto intuitiva, divisa in tre colonne: una per i file da caricare, una per decidere l&#8217;azione da compiere e la terza che visualizza il contenuto musicale del lettore.  E&#8217; sufficente scegliere la cartella dalla quale caricare i file musicali, e utilizzare le freccettine nella colonna centrale per gestire l&#8217;inserimento o la rimozione di un <a href="http://it.wikipedia.org/wiki/MP3" target="_blank">MP3</a> dal lettore.</p>
<p>Il limite è che attualmente la gestione del contenuto non audio (immagini, video, ecc.) non è molto stabile, ma la forza di questo prodotto è che la versione attuale ufficialmente supporta parecchi device, tra i quali:</p>
<p><strong>Device riconosciuti:</strong><br />
Creative NOMAD Jukebox 1 (aka D.A.P.)<br />
Creative NOMAD Jukebox 2<br />
Creative NOMAD Jukebox 3<br />
Creative NOMAD Jukebox Zen<br />
Creative NOMAD Jukebox Zen USB 2.0<br />
Creative NOMAD Jukebox Zen NX<br />
Creative NOMAD Jukebox Zen Xtra<br />
Creative Zen Touch<br />
Creative Zen Micro<br />
Creative Zen Sleek<br />
Creative Zen<br />
Dell Digital Jukebox (&#8221;Dell DJ&#8221;)<br />
Second Generation Dell DJ<br />
Dell Pocket DJ</p>
<p><strong>Device MTP:</strong><br />
Creative Zen Portable Media Center<br />
Creative Zen MicroPhoto<br />
Creative Zen Vision<br />
Creative Zen Vision:M<br />
Creative Zen Sleek Photo<br />
Creative Zen Xtra (MTP mode)<br />
Creative Zen Micro (MTP mode)<br />
Creative Zen Touch (MTP mode)<br />
Creative Zen Sleek (MTP mode)<br />
Creative Zen V<br />
Creative Zen V Plus<br />
Second Generation Dell DJ (MTP mode)<br />
Dell Pocket DJ (MTP mode)</p>
<p>ma in realtà legge praticamente quasi tutti i lettori in commercio. Per l&#8217;installazione su altri sistemi Linux è sufficiente scaricare il pacchetto dalla sezione di <a href="http://sourceforge.net/project/showfiles.php?group_id=65573" target="_blank">download</a> del sito e seguire le istruzioni contenute nel file &#8220;INSTALL&#8221; contenuto nel pacchetto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/01/15/linux-gestire-il-proprio-lettore-mp3-con-linux/feed/</wfw:commentRss>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 1.391 seconds --><!-- Cached page served by WP-Cache -->
