<?xml version="1.0" encoding="ISO-8859-1"?>
<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>Linux, PHP, MySQL, Windows, C#</title>
	<atom:link href="http://www.massimo-caselli.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.massimo-caselli.com</link>
	<description>Articoli, news e pillole sul mondo LAMP e l&#039;opensource. Pillole di C#</description>
	<lastBuildDate>Thu, 12 Apr 2012 15:32:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Asp.NET MVC 4 Tutorial</title>
		<link>http://www.massimo-caselli.com/2012/04/12/asp-net-mvc-4-tutorial/</link>
		<comments>http://www.massimo-caselli.com/2012/04/12/asp-net-mvc-4-tutorial/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 15:32:14 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=319</guid>
		<description><![CDATA[Bellissimo articolo di Microsoft su MVC 4. In particolare ho apprezzato che finalmente in un tutorial loro parlano abbastanza approfonditamente della Model Validation: http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4]]></description>
			<content:encoded><![CDATA[<p>Bellissimo articolo di Microsoft su MVC 4. In particolare ho apprezzato che finalmente in un tutorial loro parlano abbastanza approfonditamente della Model Validation:</p>
<p><a href="http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4" target="_blank">http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2012/04/12/asp-net-mvc-4-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.4, Zend Framework 2, Zend Studio 9</title>
		<link>http://www.massimo-caselli.com/2012/03/08/php-5-4-zend-framework-2-zend-studio-9/</link>
		<comments>http://www.massimo-caselli.com/2012/03/08/php-5-4-zend-framework-2-zend-studio-9/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 13:09:28 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[php 5.4]]></category>
		<category><![CDATA[zedn studio]]></category>
		<category><![CDATA[zend framenwork]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=314</guid>
		<description><![CDATA[Splendido articolo di un collega che spiega i tanti annosi problemi di php da quando la Zend sta lentamente deragliando verso soluzioni sempre più complesse per avvicinare un linguaggio NATO SEMPLICE a linguaggi più complessi come Java o C#. Il paradosso tra un po&#8217; di anni potrebbe essere&#8230; php è nato semplice e morto complesso. [...]]]></description>
			<content:encoded><![CDATA[<p>Splendido articolo di un collega che spiega i tanti annosi <strong>problemi di <a target="_blank" href="http://www.php.net">php</a> da quando la Zend sta lentamente deragliando verso soluzioni sempre più complesse</strong> per avvicinare un linguaggio NATO SEMPLICE a linguaggi più complessi come Java o C#.</p>
<p>Il paradosso tra un po&#8217; di anni potrebbe essere&#8230; <strong><a target="_blank" href="http://www.php.net">php</a> è nato semplice e morto complesso.</strong></p>
<p><strong><a href="http://fabrizioballiano.net/2012/03/08/php-5-4-zend-framework-2-zend-studio-9/" target="_blank">http://fabrizioballiano.net/2012/03/08/php-5-4-zend-framework-2-zend-studio-9/</a><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2012/03/08/php-5-4-zend-framework-2-zend-studio-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente</title>
		<link>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/</link>
		<comments>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:16:07 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[decorators]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[zend form]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=311</guid>
		<description><![CDATA[Rilancio l&#8217;articolo di Sergio che nel suo blog spiega come creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente. Tale tecnica consente di non dover creare una view-scripts per ogni form se a priori si sa già come deve essere generato il codice html dei form. http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/]]></description>
			<content:encoded><![CDATA[<p>Rilancio l&#8217;articolo di Sergio che nel suo blog spiega come <strong>creare un form con Zend Form, decorator pattern e display group con esempio completo form di registrazione utente.</strong></p>
<p>Tale tecnica consente di non dover creare una view-scripts per ogni form se a priori si sa già come deve essere generato il codice html dei form.</p>
<p><a href="http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/" target="_blank">http://razorblade.netsons.org/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2012/01/16/creare-un-form-con-zend-form-decorator-pattern-e-display-group-con-esempio-completo-form-di-registrazione-utente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH tunnelling RDP con Putty su Windows 7</title>
		<link>http://www.massimo-caselli.com/2012/01/14/ssh-tunnelling-rdp-con-putty-su-windows-7/</link>
		<comments>http://www.massimo-caselli.com/2012/01/14/ssh-tunnelling-rdp-con-putty-su-windows-7/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 14:49:33 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Mondo informatica]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[rdp]]></category>
		<category><![CDATA[ssh rdp]]></category>
		<category><![CDATA[tunnelling ssh]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=305</guid>
		<description><![CDATA[Ecco qua l&#8217;unico articolo che ho trovato in un&#8217;ora che realmente funziona: http://blog.spencerkellis.net/2010/06/tunneling-remote-desktop-over-ssh-in-windows-7/ In particolare tutti gli articoli in giro spiegano di usare la porta locale 3390 che viene bloccata da Windows sa il signore perché, basta usare la 3391 e buonanotte!]]></description>
			<content:encoded><![CDATA[<p>Ecco qua l&#8217;unico articolo che ho trovato in un&#8217;ora che realmente funziona:</p>
<p><a href="http://blog.spencerkellis.net/2010/06/tunneling-remote-desktop-over-ssh-in-windows-7/" target="_blank">http://blog.spencerkellis.net/2010/06/tunneling-remote-desktop-over-ssh-in-windows-7/</a></p>
<p>In particolare tutti gli articoli in giro spiegano di usare la porta locale 3390 che viene bloccata da Windows sa il signore perché, <strong>basta usare la 3391</strong> e buonanotte!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2012/01/14/ssh-tunnelling-rdp-con-putty-su-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benchmark MySQL Connector NET Vs DevArt DotConnect For MySQL</title>
		<link>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/</link>
		<comments>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:23:07 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[devart]]></category>
		<category><![CDATA[dotconnect]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysql connector net]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=301</guid>
		<description><![CDATA[Era da un po&#8217; di tempo che mi chiedevo se l&#8217;implementazione di Linq To SQL per mysql di DevArt fosse più efficiente o meno dell&#8217;alternativa di casa mysql. Ho quindi deciso di farmi in casa un benchmark che, sebbene effettuato in modo piuttosto grossolano e rapido ha dato dei risultati abbastanza netti. Il test è [...]]]></description>
			<content:encoded><![CDATA[<p>Era da un po&#8217; di tempo che mi chiedevo se l&#8217;implementazione di Linq To SQL per <a target="_blank" href="http://www.mysql.com">mysql</a> di <a title="http://www.devart.com/dotconnect/mysql/" href="http://www.devart.com/dotconnect/mysql/" target="_blank">DevArt</a> fosse più efficiente o meno dell&#8217;alternativa di casa <a title="http://www.mysql.com/downloads/connector/net/" href="http://www.mysql.com/downloads/connector/net/" target="_blank"><a target="_blank" href="http://www.mysql.com">mysql</a></a>.</p>
<p>Ho quindi deciso di farmi in casa un <strong>benchmark </strong>che, sebbene effettuato in modo piuttosto grossolano e rapido ha dato dei <strong>risultati abbastanza netti</strong>.<br />
Il test è stato eseguito con le seguenti condizioni (da qui capirete che è abbastanza spartano come benchmark):</p>
<ul>
<li>Windows 7 64 BIT</li>
<li><a target="_blank" href="http://www.mysql.com">mysql</a> 5.1.x 64 BIT per Windows</li>
<li>.NET Framework 4.0</li>
<li>Utilizzato Cassini al posto di IIS</li>
<li>DevArt versione 6.30.185.0</li>
<li><a target="_blank" href="http://www.mysql.com">mysql</a> Connector NET versione 6.4.4</li>
</ul>
<p>In pratica ho lanciato <strong>due procedure separate con la mia macchina nelle stesse condizioni di lavoro</strong> e a distanza di pochissimo tempo, quindi applicativi aperti, musica che suona e via discorrendo <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Il test era suddiviso in due componenti, <strong>l&#8217;esecuzione di 1.000 query su una tabella con campo indicizzato passandogli un valore randomico</strong> e <strong>l&#8217;inserimento di 1.000 record sempre con valori randomici</strong>.<br />
In particolare <strong>l&#8217;inserimento prevedeva il COMMIT ad ogni STATEMENT</strong> perché altrimenti non si notava alcuna differenza di performance tra i due drivers.</p>
<p>Di seguito i risultati nudi e crudi:</p>
<p><strong><a target="_blank" href="http://www.mysql.com">mysql</a> (utilizzo 27%/30% CPU poi sceso in insert a 13%/15%) 6.4.4</strong></p>
<ul>
<li>Data avvio select: 30/12/2011 18:12:03</li>
<li>Data fine select: 30/12/2011 18:12:31</li>
<li>Data avvio insert: 30/12/2011 18:12:31</li>
<li>Data fine insert: 30/12/2011 18:12:43</li>
</ul>
<p><strong>DevArt (utilizzo 27%/31% CPU in insert a 13%/17%) 6.30.185.0</strong></p>
<ul>
<li>Data avvio select: 30/12/2011 18:13:21</li>
<li>Data fine select: 30/12/2011 18:13:38</li>
<li>Data avvio insert: 30/12/2011 18:13:38</li>
<li>Data fine insert: 30/12/2011 18:13:44</li>
</ul>
<p>Tempo SELECT <strong><em>MySQL: 28 secondi</em></strong><br />
Tempo SELECT <strong><em>DevArt: 17 secondi</em></strong></p>
<p>Tempo INSERT <strong><em>MySQL: 12 secondi</em></strong><br />
Tempo INSERT <strong><em>DevArt: 6 secondi</em></strong></p>
<p>Direi che è abbastanza chiaro che, a parte una <strong><em>lieve differenza nell&#8217;utilizzo della CPU (in favore del driver <a target="_blank" href="http://www.mysql.com">mysql</a> Connector NET meno esoso)</em></strong>, la velocità di esecuzione sia delle SELECT che delle INSERT è <strong>nettamente in favore di DevArt</strong>.</p>
<p>Morale, bene così, almeno non ho toppato driver per un importante progetto che sto sviluppando! <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/12/30/benchmark-mysql-connector-net-vs-devart-dotconnect-for-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Attivata seconda istanza di Dogs On Web, il canile online</title>
		<link>http://www.massimo-caselli.com/2011/12/10/attivata-seconda-istanza-di-dogs-on-web-il-canile-online/</link>
		<comments>http://www.massimo-caselli.com/2011/12/10/attivata-seconda-istanza-di-dogs-on-web-il-canile-online/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 19:37:52 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[dogsonweb]]></category>
		<category><![CDATA[mvc2]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=294</guid>
		<description><![CDATA[Tempo fa mi è stato chiesto se potevo realizzare il sito web per un canile sardo, nello specifico la sezione di Carbonia della Lega Nazionale per la Difesa del Cane. All&#8217;epoca oltre ad aver accettato ho avuto un&#8217;idea semplice ma credo funzionale, ovvero realizzare una piccola applicazioncina web che consenta la messa online di potenzialmente [...]]]></description>
			<content:encoded><![CDATA[<p>Tempo fa mi è stato chiesto se potevo <strong>realizzare il sito web per un canile</strong> sardo, nello specifico la sezione di Carbonia della Lega Nazionale per la Difesa del Cane.<br />
All&#8217;epoca oltre ad aver accettato ho avuto un&#8217;idea semplice ma credo funzionale, ovvero <strong>realizzare una piccola applicazioncina web che consenta la messa online di potenzialmente infiniti siti web per canili</strong>.</p>
<p>Ne ho quindi realizzata una <strong>prima release che si trova su Source Forge completa di codici sorgenti e di accesso SVN</strong>.</p>
<p>E&#8217; ancora embrionale e sicuramente poco sviluppata, però al momento serve già con successo i seguenti due siti web:</p>
<ul>
<li><a title="www.legadelcane-carbonia.org" href="http://www.legadelcane-carbonia.org" target="_blank">www.legadelcane-carbonia.org</a></li>
<li><a title="www.legadelcane-porto-torres.org" href="http://www.legadelcane-porto-torres.org" target="_blank">www.legadelcane-porto-torres.org </a></li>
</ul>
<p>Il progetto <a title="http://sourceforge.net/projects/dogsonweb/" href="http://sourceforge.net/projects/dogsonweb/" target="_blank">DogsOnWeb</a> è in ASP.NET e si basa su MVC 2.</p>
<p>Chiunque volesse <strong>contribuire allo sviluppo del progetto sarà il benvenuto</strong>.<br />
Attualmente non c&#8217;è alcun sistema di installazione, pertanto nel caso fatemi sapere e contattatemi via mail a: <a title="info@massimo-caselli.com" href="mailto:info@massimo-caselli.com" target="_blank">info@massimo-caselli.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/12/10/attivata-seconda-istanza-di-dogs-on-web-il-canile-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vmware server 2.0 su Windows 7 64 bit, rete NAT not available</title>
		<link>http://www.massimo-caselli.com/2011/06/06/vmware-server-2-0-su-windows-7-64-bit-rete-nat-not-available/</link>
		<comments>http://www.massimo-caselli.com/2011/06/06/vmware-server-2-0-su-windows-7-64-bit-rete-nat-not-available/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 22:14:29 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Mondo informatica]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=290</guid>
		<description><![CDATA[Se vi capitasse così, da un momento all&#8217;altro che le vostre macchine virtuali su rete NAT abbiano la rete NAT not available (ovviamente così, gratis e dall&#8217;oggi al domani), non scervellatevi in ipotetiche soluzioni strane. Spegnete la macchina Eliminate l&#8217;interfaccia di rete NAT Create una nuova interfaccia legata alla VMnet8 (di solito è questa che [...]]]></description>
			<content:encoded><![CDATA[<p>Se vi capitasse così, da un momento all&#8217;altro che le vostre macchine virtuali su rete <strong>NAT abbiano la rete NAT not available</strong> (ovviamente così, gratis e dall&#8217;oggi al domani), non scervellatevi in ipotetiche soluzioni strane.</p>
<ol>
<li>Spegnete la macchina</li>
<li>Eliminate l&#8217;interfaccia di rete NAT</li>
<li><strong>Create una nuova interfaccia legata alla VMnet8</strong> (di solito è questa che viene identificata per la rete NAT)</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/06/06/vmware-server-2-0-su-windows-7-64-bit-rete-nat-not-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework e la sua (pessima) implementazione del pattern MVC</title>
		<link>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/</link>
		<comments>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/#comments</comments>
		<pubDate>Tue, 10 May 2011 15:37:30 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend framework mvc]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=288</guid>
		<description><![CDATA[Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che: Come framework in sé non sia per niente male L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona Bene, [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo aver sperimentato l&#8217;utilizzo di Zend Framework in piccoli progettini, dapprima come framework puro (tipo pear per intenderci) e in un paio di occasioni con l&#8217;utilizzo della sua gestione del pattern MVC, mi ero fatto l&#8217;idea che:</p>
<ul>
<li>Come framework in sé non sia per niente male</li>
<li>L&#8217;implementazione dell&#8217;MVC fosse buona, non eccezionale ma buona</li>
</ul>
<p>Bene, sto lavorando da un paio di settimane su un progetto complesso e sto utilizzando <strong>Zend Framework nella sua piena implementazione dell&#8217;MVC</strong>.<br />
Per cominciare (ma questo lo avevo già deciso sulla base delle precedenti esperienze), ho preferito evitare l&#8217;utilizzo di Zend_DB e della modalità che suggerisce la Zend stessa nei suoi tutorial per la gestione del model.<br />
La motivazione era dovuta al fatto che non amavo la libreria in generale, ma soprattutto mi è sempre sembrato che la <strong>definizione del model richiedesse un overhead di sviluppo eccessivo</strong>.<br />
Morale, il model l&#8217;ho gestito con classi scritte da me direttamente e utilizzando il caro, vecchio e affidabile adodb.</p>
<p>Sono però rimasto esterrefatto dalla <strong>terribile applicazione del pattern MVC</strong> per le seguenti cose, <strong>in ordine di gravità</strong>:</p>
<ol>
<li><strong><em>Mischione logico tra View e Controller/BusinessLogic nella definizione delle form (Zend_Form)</em></strong></li>
<li><strong><em>Assenza di parametri nelle action</em></strong></li>
<li><strong><em>Action i quali nomi dei metodi devono essere tutti minuscoli, tutti attaccati e con alla fine &#8220;Action&#8221;</em></strong></li>
</ol>
<p><strong>Vado a spiegarmi meglio, per il punto 1:</strong><br />
La Zend suggerisce/propina l&#8217;utilizzo di Zend Form. Le Zend form di fatto definiscono i campi del form, le validazioni e via discorrendo. Fin qui direi tutto sommato abbastanza bene, è sufficiente definire una classe ApplicationForm che estenda Zend_Form. All&#8217;interno dell&#8217;init() si aggiungono tutti i vari elementi con le loro particolarità (ovviamente alcune cose specifiche possono essere inserite sia a livello di metodi aggiuntivi della classe che direttamente da controller).<br />
Peccato però che all&#8217;interno di questa definizione di campi, oltre a cose sensate come le validazioni, il required etc&#8230; sia necessario inserire label, id, classi css, ovvero tutti aspetti sostanzialmente relativi alla parte di view.<br />
Infatti da controller si istanzia la classe, tipo $form = new ApplicationForm(); e $form si passa alla view direttamente. La view non farà altro che renderizzare la form.<br />
Questo significa che se un grafico/htmlista deve modificare qualcosa NON lo può fare dalla view, ma deve chiedere (o fare direttamente) al programmatore di agire sulla classe ApplicationForm().</p>
<p>@Zend: ma la separazione dei livelli dove la lasciamo?</p>
<p>Al di là di aspetti puristici e filosofici, questo rappresenta UN PROBLEMA CONCRETO.</p>
<p><strong>Punto 2:</strong><br />
Il minimo che potevo aspettarmi (ovviamente lo avevo già notato anche in progetti più piccoli ma davo per scontato esistesse qualche variante per gestirlo) è che i metodi delle action potessero/dovessero essere parametrici.<br />
Invece niente, il metodo detailsAction() che vorrebbe molto probabilmente l&#8217;id da cui attingere i dati, non può essere detailsAction($id), ma $id va recuperato in get/post come si fa da 100 anni.<br />
Ho trovato qualche variante in giro di terze parti per avere i parametri nelle action ma a parte che non funzionavano benissimo, mi pare paradossale che un framework di X Mbyte non supporti i parametri nelle action della sua versione dell&#8217;MVC.</p>
<p><strong>Punto 3:</strong><br />
Se richiamo ad esempio: http://www.massimo-caselli.com/Article/GetArticleDetails sono costretto a nominare la action in: public function getarticledetailsAction().<br />
E&#8217; il minore dei mali, però insomma anche la leggebilità del codice non è che sia poi una cosa troppo secondaria.</p>
<p>Per farla comunque breve devo dire che in questo caso, <strong>Microsoft batte Zend nell&#8217;implementazione dell&#8217;MVC 10 a 0. <img src='http://www.massimo-caselli.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/05/10/zend-framework-e-la-sua-pessima-implementazione-del-pattern-mvc/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Skype 5.3 crash su windows 7 64 bit SP1</title>
		<link>http://www.massimo-caselli.com/2011/05/10/skype-5-3-crash-su-windows-7-64-bit-sp1/</link>
		<comments>http://www.massimo-caselli.com/2011/05/10/skype-5-3-crash-su-windows-7-64-bit-sp1/#comments</comments>
		<pubDate>Tue, 10 May 2011 07:31:47 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Mondo informatica]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[skype windows 7 64 bit]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=286</guid>
		<description><![CDATA[Ho appena installato Skype 5.3 su windows 7 64 bit SP1. Crashava quasi subito senza colpo ferire. Se vi capitasse, il problema era collegato al fatto che lo avviavo (come da sempre il 5.1 e 5.2) in compatibility mode. Basta disattivare l&#8217;avvio in modalità compatibile e tutto funziona. Tra l&#8217;altro ora c&#8217;è anche l&#8217;opzione per [...]]]></description>
			<content:encoded><![CDATA[<p>Ho appena installato <strong>Skype 5.3 su windows 7 64 bit SP1</strong>.<br />
Crashava quasi subito senza colpo ferire.</p>
<p>Se vi capitasse, il problema era collegato al fatto che <strong>lo avviavo (come da sempre il 5.1 e 5.2) in compatibility mode</strong>.<br />
<strong>Basta disattivare l&#8217;avvio in modalità compatibile e tutto funziona</strong>.<br />
Tra l&#8217;altro ora c&#8217;è anche l&#8217;opzione per non tenerlo inutilmente nella taskbar come da standard a partire da Win 7 dello zio Bill.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/05/10/skype-5-3-crash-su-windows-7-64-bit-sp1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>L&#8217;insostenibile inadeguatezza dell&#8217;iOS</title>
		<link>http://www.massimo-caselli.com/2011/05/09/linsostenibile-inadeguatezza-dellios/</link>
		<comments>http://www.massimo-caselli.com/2011/05/09/linsostenibile-inadeguatezza-dellios/#comments</comments>
		<pubDate>Mon, 09 May 2011 07:27:27 +0000</pubDate>
		<dc:creator>NotNull</dc:creator>
				<category><![CDATA[Apple/Objective C]]></category>
		<category><![CDATA[Mondo informatica]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=284</guid>
		<description><![CDATA[Dunque alla fine ho ceduto. Ho sempre evitato come la peste bubbonica Apple e tutti i suoi prodotti. Non tanto per ragioni tecniche, quanto per una questione filosofica: sono sempre stato avverso alla rigida chiusura e smania di controllo di Appe e ai suoi utenti tipici, in genere da me associati allo stereotipo del tecno-fighetto [...]]]></description>
			<content:encoded><![CDATA[<p>Dunque alla fine ho ceduto. Ho sempre evitato come la peste bubbonica Apple e tutti i suoi prodotti. Non tanto per ragioni tecniche, quanto per una questione filosofica: sono sempre stato avverso alla rigida chiusura e smania di controllo di Appe e ai suoi utenti tipici, in genere da me associati allo stereotipo del tecno-fighetto trendy e modaiolo felicissimo di spendere valangate di euri per arricchire il proprio leader carismatico, Steve Jobs, senza porsi alcuna minima domanda su quello che sta acquistando. Tecnicamente ho sempre avuto poco da dire sui loro prodotti, anche perché non conoscevo bene il &#8220;dietro le quinte&#8221;, in ogni caso avendo usato il Mac OS/X sapevo già che non ha assolutamente niente di più di una installazione Linux (ubuntu o Fedora per esempio) con Gnome o KDE, la differenza vera la fa la reperibilità di software commerciale che sul Mac fiorisce. Anche sulla tanto vantata &#8220;facilità d&#8217;uso&#8221; ci sarebbe MOLTO da dire.. ma quello e&#8217; un altro capitolo. Purtroppo dato che sviluppo applicazioni mobile da molto tempo (prima Java ME, ora Android) sempre più clienti mi chiedono di fare il porting per iOS (iPhone e iPad). Di fronte all&#8217;elevato numero di richieste in tal senso mi son deciso &#8211; molto a malincuore &#8211; a iniziare i primi esperimenti con iPhone.</p>
<p>CHE SCHIFEZZA!!!!!!!</p>
<p>Non ho parole, davvero. Steve Jobs parlava a ruota libera contro Java (&#8220;pesante&#8221;, &#8220;datato&#8221; e che non &#8220;usa più nessuno&#8221; &#8211; a parte google ovviamente che su Java ha basato Android e sta polverizzando iPhone nelle percentuali di crescita &gt;:-) ). Di fronte a tali invettive di Steve Jobs mi aspettavo chissà quali meravigliose innovazioni nello sviluppo, un paradiso terrestre della programmazione, uno scrigno delle meraviglie che aspettava solo di riflettere su me, povero programmatore, tutte le beatitudini del software Apple. Poi ho visto l&#8217;Objective C. E sto ancora vomitando.</p>
<p>E già perché Mac OS/X e iPhone derivano da un&#8217;altra invenzione di Steve Jobs, Nextstep, un framework GUI a oggetti sviluppato ai tempi di Next, un&#8217;azienda fondata dallo stesso Jobs tra fine anni &#8217;80 e inizi anni &#8217;90 quando era fuoriuscito da Apple. Il linguaggio che stava alla base di Nextstep, e oggi di Cocoa, il toolkit grafico di Mac OS/X e iOS, era l&#8217;Objective C. l&#8217;Objective C e&#8217; una estensione a oggetti del C, sviluppato a metà anni &#8217;80, che appiccica a forza al povero linguaggio C alcuni concetti presi dal linguaggio a oggetti per eccellenza, Smalltalk. Il risultato è una porcheria senza precedenti. Se nel 2011 volete scrivere software per Mac OS/X o iOS dovete ricorrere a un linguaggio in puro stile anni &#8217;80:  niente namespace (o package), puntatori a manetta, gestione manuale della memoria (il garbage collector lo stanno ancora aspettando), e una sintassi VERAMENTE obbrobriosa!!!</p>
<p>Una chicca: per dichiarare un metodo con più parametri, bisogna mettere i nomi dei parametri MA ANCHE dei pezzi di stringa arbitrari chiamati &#8220;selettori&#8221;, servono perché dietro le quinte im &#8220;metodi&#8221; delle classi Objective C diventano funzioni C e senza questi pezzi di stringa NON POTREBBE RISOLVERE UNICAMENTE IL NOME DEL METODO quando sono presenti signature diverse (per esempio, int pippo(int a) e int pippo( int a, char*b) diverrebbero entrambi &#8220;pippo&#8221; ) !!! Quindi raffrontando con Java, il metodo</p>
<p><strong>void pippo(int a,double b,String c);</strong></p>
<p>diventa</p>
<p><strong>-(void)pippo:(int)a stringarbitraria1:(double)b stringarbitraria2:(NSString *)c ;</strong></p>
<p>E questo sarebbe un linguaggio??? Per non parlare della sintassi per chiamare un metodo, anzi per &#8220;mandare un messaggio a un metodo&#8221;, che è, se possibile, un&#8217;indecenza ancora maggiore. Supposto che il &#8220;pippo&#8221; di prima sia un metodo di &#8220;miaclasse&#8221; la sintassi sarebbe, posto che a=5, b=6.3 e c=&#8221;testo&#8221;</p>
<p><strong>[miaclasse pippo:5 stringarbitraria1:6.3 stringarbitraria2:@"testo"];</strong></p>
<p>Se questo ancora non vi sconvolge, posso anche dirvi che le proprietà di una classe (cioè le variabili di istanza) possono essere public, private o protected, ma NON I METODI!!! E come fate se volete mettere un metodo privato? NON lo dichiarate nella interface della classe ma lo scrivete nella implementazione!!! E se qualcuno però sa che quel metodo esiste può chiamarlo lo stesso&#8230; Non mi sento di sviscerare vere e proprie istigazioni a delinquere come le categories, la repulsione e&#8217; troppa.</p>
<p>Per non parlare delle limitazioni assurde rispetto ad Android. Per esempio, con quest&#8217;ultimo e&#8217; possibile intercettare i messaggi SMS in arrivo, grazie a questo ci ho scritto delle routine con autenticazione 1-time pad spettacolari, oppure e&#8217; possibile interagire con le inbox/outbox di sistema (ho scritto una applicazione SMS custom che scrive nella outbox i messaggi inviati e si integra perfettamente col sistema). Con iPhone, ciccia: gli SMS non possono essere letti , intercettati, o salvati nella outbox, psosono solo essere inviati facendo apparire la maschera di incio di sistema precompilando SOLO IL NUMERO DEL DESTINATARIO. Per non parlare delle restrizioni dentro cui gira l&#8217;applicazione, può accedere solo alla sua directory, non può comunicare con altre applicazioni, non può condividere file, il multitasking e&#8217; fortemente limitato, e via limitando.</p>
<p>Di fronte a tutto questo posso solo dire che finora avevo fatto benissimo a evitarli come la peste, tutto questo fa sembrare la programmazione in Java ME come una delizia per la mente&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2011/05/09/linsostenibile-inadeguatezza-dellios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

