<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1183964736443383907</id><updated>2011-11-28T00:20:38.339+01:00</updated><category term='mobile'/><category term='linux'/><category term='php linux pdf'/><category term='libri'/><category term='web app'/><category term='javascript'/><category term='italia'/><category term='web'/><category term='php'/><category term='programming'/><category term='openmoko'/><category term='politica'/><category term='php csv'/><category term='jedit'/><category term='linux ubuntu chromium webkit mozilla v8'/><category term='free services'/><category term='nokia'/><category term='python'/><category term='grillo'/><category term='Delphi'/><category term='Linux Pascal'/><category term='web2'/><category term='macro'/><category term='canvas'/><category term='Pascal'/><category term='google'/><title type='text'>devsmt extends THuman{</title><subtitle type='html'>}</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-7293359753094615323</id><published>2010-04-06T23:23:00.002+02:00</published><updated>2010-04-06T23:26:33.060+02:00</updated><title type='text'>The clever programmer</title><content type='html'>&lt;div&gt;"Consider two programs. One was written by a clever programmer&lt;/div&gt;&lt;div&gt;using all the tricks. The program contains no comments, but it works.&lt;/div&gt;&lt;div&gt;The other program is well commented and nicely structured, but it&lt;/div&gt;&lt;div&gt;doesn't work. Which program is more useful? In the long run, the&lt;/div&gt;&lt;div&gt;broken one. It can be fixed. Although the clever program works now,&lt;/div&gt;&lt;div&gt;sooner or later all programs have to be modified. The worst thing that&lt;/div&gt;&lt;div&gt;you will ever have to do is to modify a cleverly written program." &lt;/div&gt;&lt;div&gt;-- "Practical C Programming"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-7293359753094615323?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/7293359753094615323/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=7293359753094615323' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7293359753094615323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7293359753094615323'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2010/04/clever-programmer.html' title='The clever programmer'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-1948012786417352903</id><published>2009-09-29T21:57:00.002+02:00</published><updated>2009-09-29T22:05:25.918+02:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Puoi indovinare cosa faccia questo ciclo?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;basta copiarlo in uno script di shell e guardare cosa salta fuori.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;interessante promemoria perché contiene numerosi costrutti di base, che non usando spesso bash, si dimenticano alla svelta.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;echo -e "\e[32m"; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;while :; do &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    for i in {1..16}; do &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        r="$(($RANDOM % 2))"; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        if [[ $(($RANDOM % 5)) == 1 ]]; then &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            if [[ $(($RANDOM % 4)) == 1 ]]; then &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                v+="\e[1m $r   ";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            else &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                v+="\e[2m $r   ";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            fi;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        else &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;            v+="     "; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        fi; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    done; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    echo -e "$v"; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    v=""; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-1948012786417352903?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/1948012786417352903/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=1948012786417352903' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1948012786417352903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1948012786417352903'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/09/puoi-indovinare-cosa-faccia-questo.html' title=''/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-6863567413376472329</id><published>2009-09-15T22:23:00.013+02:00</published><updated>2009-09-16T11:14:21.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libri'/><title type='text'>Libri autunno-inverno</title><content type='html'>&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6CQNHhRI/AAAAAAAAALc/XtL3z4RyYw8/s1600-h/testderive_development.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 113px;" src="http://2.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6CQNHhRI/AAAAAAAAALc/XtL3z4RyYw8/s320/testderive_development.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794996347700498" /&gt;&lt;/a&gt;&lt;b&gt;Test Driven Development by example&lt;/b&gt;&lt;div&gt;il libro più citato ed autorevole sulle pratiche di testing, metodologia di cui voglio appropriarmi il prima possibile&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6ByUMfCI/AAAAAAAAALU/KJDNntJdV-8/s1600-h/symfony_reference_mini.jpg"&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6ByUMfCI/AAAAAAAAALU/KJDNntJdV-8/s1600-h/symfony_reference_mini.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 113px;" src="http://1.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6ByUMfCI/AAAAAAAAALU/KJDNntJdV-8/s320/symfony_reference_mini.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794988324322338" /&gt;&lt;/a&gt;&lt;b&gt;The Symfony 1.2 reference guide&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Symfony è oggi, molto importante nel mio lavoro quotidiano, cercherò di approfondirlo negli aspetti che più spesso mi fanno perdere tempo e pazienza: la ricerca dei settings giusti.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_58Ogyg-I/AAAAAAAAALM/6hH6fMQ8d3M/s1600-h/programming_collective_intelligence"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 63px; height: 80px;" src="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_58Ogyg-I/AAAAAAAAALM/6hH6fMQ8d3M/s320/programming_collective_intelligence" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794892814124002" /&gt;&lt;/a&gt;&lt;b&gt;Programming Collective Intelligence&lt;/b&gt;&lt;/div&gt;&lt;div&gt;questo libro è abbastanza particolare per i temi trattati e mi porta ben lontano dalla mia area di comfort abituale: spiega come utilizzare tecniche statististiche per realizzare servizi intelligenti come "suggerimenti" alla Amazon, graduatorie, filtri, ricerche automatiche.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_s1VzAi7qw6Y/Sq_57v_yH2I/AAAAAAAAALE/NjINdxig4I0/s1600-h/legacy_code.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 90px;" src="http://2.bp.blogspot.com/_s1VzAi7qw6Y/Sq_57v_yH2I/AAAAAAAAALE/NjINdxig4I0/s320/legacy_code.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794884622622562" /&gt;&lt;/a&gt;&lt;b&gt;Working Effectively with legacy code&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Un'altro testo famoso sul Testing e la sua aplicazione pratica, già la premessa iniziale, &lt;i&gt;è legacy software tutto il software senza test automatici, &lt;/i&gt;è forte e accattivante.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_51uLoHjI/AAAAAAAAAK8/k3_kXP4MYWc/s1600-h/code_complete_2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 110px;" src="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_51uLoHjI/AAAAAAAAAK8/k3_kXP4MYWc/s320/code_complete_2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794781056212530" /&gt;&lt;/a&gt;&lt;b&gt;Code Complete 2&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Un testo citatissimo sullo &lt;i&gt;stile di programmazione, &lt;/i&gt;che consiste principalmente nel porre attenzione a particolari non evidenti o apparentemente secondari di codifica ma dal peso sorprendente sul lungo periodo, un tema non &lt;i&gt;di moda&lt;/i&gt;, ma che ritengo valga la pena approfondire.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_51OlqUYI/AAAAAAAAAK0/5ZHeG-7Auf0/s1600-h/dont_make_me_think.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 90px; height: 90px;" src="http://4.bp.blogspot.com/_s1VzAi7qw6Y/Sq_51OlqUYI/AAAAAAAAAK0/5ZHeG-7Auf0/s320/dont_make_me_think.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5381794772575474050" /&gt;&lt;/a&gt;&lt;b&gt;Don't make me think&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Ancora un testo sulla prevalenza della chiarezza del contenuto sul decoro fine a se stesso? speriamo mi illumini di Spirito Santo e mi dia argomenti convincenti sui colleghi, clienti e utenti in genere. Forse, questa lettura farà cambiare la mia idea in merito. staremo a vedere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-6863567413376472329?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/6863567413376472329/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=6863567413376472329' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6863567413376472329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6863567413376472329'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/09/libri-autunno-inverno-test-driven.html' title='Libri autunno-inverno'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_s1VzAi7qw6Y/Sq_6CQNHhRI/AAAAAAAAALc/XtL3z4RyYw8/s72-c/testderive_development.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-8409374724836905369</id><published>2009-09-02T22:12:00.005+02:00</published><updated>2009-09-02T22:25:46.102+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux ubuntu chromium webkit mozilla v8'/><title type='text'>Chromium finalmente su linux</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;finalmente una soluzione dignitosa ci rende disponibile Chromium, la varsione opensourse di google chrome, su Linux (xubuntu per quanto mi riguarda ), che da mesi è stabilmente il mio sistema operativo di casa.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;come al solito occorre editare /etc/apt/sources.list e aggiungere&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu intrepid main&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu intrepid mai&lt;/span&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;che indica il repository aggiornato automaticamente su base quotidiana dei pacchetti necessari a far girare l'applicativo.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;non dispongo di misurazioni scientifiche ma l'impressione è che webkit+v8 sia molto più leggero e veloce di tutte le alternative disponibili, anche aggiornatissime:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;deb http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;deb-src http://ppa.launchpad.net/webkit-team/ppa/ubuntu jaunty main&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;similmente, questi sono i repository dev di webkit e mozilla.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;il browser non è totalmente funzionante, l'interfaccia è meno curata dell'equivalente windows(usa gtk2 e i temi sembrano Alieni) e alcune funzioni sono disabilittate, non è ad esempio possibile creare shortcut dell'applicazione web come è possibile sugli altri sistemi operativi, a mio parere si tratta di limitazioni di poco conto rispetto alla performance entusiasmante di cui è capace questo browser, uno dei pochi programmi che invidiavo all'altro OS.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-8409374724836905369?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/8409374724836905369/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=8409374724836905369' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8409374724836905369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8409374724836905369'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/09/cromium-finalmente-su-linux.html' title='Chromium finalmente su linux'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-1226579024872325173</id><published>2009-07-20T22:18:00.010+02:00</published><updated>2009-07-20T23:54:29.356+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux Pascal'/><title type='text'>Linux ha il suo RAD</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_s1VzAi7qw6Y/SmTgfNO0UtI/AAAAAAAAAJE/gx7HSlTQGCE/s1600-h/lazarus_800x400.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_s1VzAi7qw6Y/SmTgfNO0UtI/AAAAAAAAAJE/gx7HSlTQGCE/s320/lazarus_800x400.png" alt="" id="BLOGGER_PHOTO_ID_5360656283210109650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_s1VzAi7qw6Y/SmTbHZfE2uI/AAAAAAAAAI8/X0jeDffHFvk/s1600-h/laz_db.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_s1VzAi7qw6Y/SmTbHZfE2uI/AAAAAAAAAI8/X0jeDffHFvk/s320/laz_db.png" alt="" id="BLOGGER_PHOTO_ID_5360650376624528098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Tengo d'occhio per voi il progetto &lt;a href="http://www.freepascal.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Freepascal&lt;/span&gt;&lt;/a&gt;, un progetto che porta avanti l'&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;implementazione&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;opensource&lt;/span&gt; del linguaggio &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ObjectPascal&lt;/span&gt;, seguendo con buon senso l'&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;impostazione&lt;/span&gt; di &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Delphi&lt;/span&gt;, ma integrando e ripulendo con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;intelligenza&lt;/span&gt; un linguaggio che si è evoluto &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;tumultuosamente&lt;/span&gt;, prima con grande slancio in ogni direzione, poi con grossi errori e ora con poco entusiasmo, questa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;implementazione&lt;/span&gt; spartana ma efficace, mi piace sempre di più.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Delphi&lt;/span&gt; è ancora un ottimo linguaggio se paragonato ai sui coetanei c++ e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Visualbasic&lt;/span&gt; e in un certo ambito, è ancora competitivo se paragonato con i linguaggi più moderni.&lt;br /&gt;Questo ambito è l'&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;applicazione&lt;/span&gt; nativa con accesso al database, quello per cui è stato &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;originariamente&lt;/span&gt; progettato.&lt;br /&gt;Certo le &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;webApp&lt;/span&gt; sono molto convenienti oggi per inserire e leggere dati, pascal non ha ancora &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;tool&lt;/span&gt; di generazione automatica del livello di &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Rails&lt;/span&gt;(e a dirla tutta, non credo ne abbia bisogno, lasciamo il &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;CRUD&lt;/span&gt; alle &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;webApp&lt;/span&gt;), ma può assemblare eseguibili veloci e di dimensioni &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;estremamente&lt;/span&gt; contenute adatti ad &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;architetture&lt;/span&gt; particolari come &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;ARM&lt;/span&gt;, può giovarsi del &lt;span style="font-weight: bold;"&gt;controllo completo del hardware,&lt;/span&gt; è &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;multipiattaforma&lt;/span&gt;&lt;/span&gt;, non richiede alcun &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;runtime&lt;/span&gt;, è molto semplice se paragonato a c++.&lt;br /&gt;Do per scontato che &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Windows&lt;/span&gt; avrà meno mercato in futuro, anche se nessuno sa con quale velocità continuerà il declino.&lt;br /&gt;Do per scontato che dispositivi come &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;palmofoni&lt;/span&gt; e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;netbooks&lt;/span&gt; saranno i &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;protagonisti&lt;/span&gt; del prossimo medio periodo, Nokia, &lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html"&gt;google scommette che avranno &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;OS&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;linux&lt;/span&gt;&lt;/a&gt; e che saranno soprattutto web &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;App&lt;/span&gt; ad &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;accalappiare&lt;/span&gt; utenti, il mio modesto parere è che l'approccio &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;webapp&lt;/span&gt;, l'approccio nativo e lo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;scripting&lt;/span&gt; abbiano &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;rispettivamente&lt;/span&gt; un caso d'uso in cui risultano convenienti e vanno usati &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;contemporaneamente&lt;/span&gt; senza pregiudizi ma anche senza che uno prevalga del tutto sull'altro, per fornire all'utente finale il prodotto migliore possibile.&lt;br /&gt;D'altra parte Google stessa usa molte &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;webapp&lt;/span&gt; come interfaccia al suo cavallo di battaglia, il motore di ricerca, che è sviluppato in C, tecnologia nativa &lt;span style="font-style: italic;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;old&lt;/span&gt; fashion&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-1226579024872325173?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/1226579024872325173/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=1226579024872325173' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1226579024872325173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1226579024872325173'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/07/linux-ha-il-suo-rad.html' title='Linux ha il suo RAD'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s1VzAi7qw6Y/SmTgfNO0UtI/AAAAAAAAAJE/gx7HSlTQGCE/s72-c/lazarus_800x400.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-8193177392627567974</id><published>2009-07-16T10:14:00.004+02:00</published><updated>2009-07-16T13:06:31.165+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Riprodurre mp3 da linea di comando</title><content type='html'>Linux dispone di un interessante programma a linea di comando che permette di riprodurre files musicali sulla macchina corrente.&lt;br /&gt;la playlist è testuale e si può creare ad esempio in questo modo:&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;find ~/Music/* -type f -name '*.mp3' &gt; ~/Music/Playlist.m3u&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;e ascoltare con questo comando&lt;br /&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;mpg123 -@ ~/Playlist.m3u&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;la cosa è molto interessante perché la generazione della &lt;b&gt;playlist &lt;/b&gt;poterbbe essere automatizzata ad esempio con una &lt;b&gt;interfaccia web&lt;/b&gt;, utile in un ufficio in cui più persone vorrebbero accedere ad una &lt;b&gt;condivisione di molti&lt;/b&gt; files musicali e &lt;b&gt;collaborare alla decisione della playlist&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-8193177392627567974?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/8193177392627567974/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=8193177392627567974' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8193177392627567974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8193177392627567974'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/07/linux-dispone-di-un-interessante.html' title='Riprodurre mp3 da linea di comando'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-3326463468729367626</id><published>2009-06-18T14:38:00.002+02:00</published><updated>2009-06-18T14:46:43.865+02:00</updated><title type='text'>I designer devono essere anche programmatori?</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Essere grafico puro ottimizza la creatività, essere competente su più aspetti ottimizza i tempi di consegna.&lt;br /&gt;&lt;br /&gt;Si potrebbe anche dire lo stesso dei programmatori, se conoscono molto bene css, js e un programma di fotoritocco possono portare molta + estetica nel progetto senza bisogno della costante supervisione di un grafico.&lt;br /&gt;&lt;br /&gt;Da una parte il cervello umano è limitato, le ore di una giornata sono limitate, le energie sono limitate e infine, il talento è limitato.&lt;br /&gt;Se si chiede a una persona di apprendere su fronti troppo dispersivi, otterrà risultati modesti su tutti i fronti perché oltre il livello base o intermedio, cioè al livello "master", si arriva soltanto con un abnegazione, sacrifici sforzi duro lavoro di una vita. E talento.&lt;br /&gt;&lt;br /&gt;Dall'altra è dimostrato che le persone provenienti da campi diversi, con formazioni non convenzionali e variegate, possono apportare dosi di creatività addirittura tali da rivoluzionare un settore, una volta però che siano giunte ad un grado di padronanza della materia, tale da tenerle lontane dagli errori grossolani.&lt;br /&gt;&lt;br /&gt;E' una equazione difficile, la mia interpretazione è che per la legge di Pareto(80% del beneficio dal 20% dello sforzo) sia conveniente masticare di un po' di tutto, al contempo occorre per forza essere al livello master in almeno una specialità, cioè il programmatore deve avere capacità logiche ferree, il grafico deve avere un senso estetico granitico, per una questione diciamo di &lt;i&gt;Marketing, &lt;/i&gt;per ottenere la necessaria credibilità da parte degli altri membri del team occorre avere una identità professionale, essere un sicuro punto di riferimento per almeno un tipo di problema.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-3326463468729367626?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/3326463468729367626/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=3326463468729367626' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3326463468729367626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3326463468729367626'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/06/i-designer-devono-essere-anche.html' title='I designer devono essere anche programmatori?'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-1551098373586405599</id><published>2009-04-28T18:40:00.001+02:00</published><updated>2009-04-28T18:40:34.097+02:00</updated><title type='text'>I bambini imparano ciò che vivono.</title><content type='html'>Se un bambino vive nella critica impara a condannare.&lt;br /&gt;Se un bambino vive nell'ostilità impara ad aggredire.&lt;br /&gt;Se un bambino vive nell'ironia impara ad essere timido.&lt;br /&gt;Se un bambino vive nella vergogna impara a sentirsi colpevole.&lt;br /&gt;Se un bambino vive nella tolleranza impara ad essere paziente.&lt;br /&gt;Se un bambino vive nell'incoraggiamento impara ad avere fiducia.&lt;br /&gt;Se un bambino vive nella lealtà impara la giustizia.&lt;br /&gt;Se un bambino vive nella disponibilità impara ad avere una fede.&lt;br /&gt;Se un bambino vive nell'approvazione impara ad accettarsi.&lt;br /&gt;Se un bambino vive nell'accettazione e nell'amicizia impara a trovare l'amore nel mondo.&lt;br /&gt;&lt;br /&gt;Doret's Law Nolte&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-1551098373586405599?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/1551098373586405599/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=1551098373586405599' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1551098373586405599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1551098373586405599'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/04/i-bambini-imparano-cio-che-vivono.html' title='I bambini imparano ciò che vivono.'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-128864726103223161</id><published>2009-04-21T10:42:00.002+02:00</published><updated>2009-04-21T10:48:18.591+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php linux pdf'/><title type='text'></title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;Ottenere l'icona della prima pagina di un pdf&lt;br /&gt;&lt;br /&gt;la stada più documentata è l'uso di imagemagick.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sudo apt-get install imagemagick&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style=";font-family:courier new;font-size:85%;"  &gt;convert -thumbnail 300x300 test.pdf test.png &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;convert -thumbnail 300x300 test.pdf[0] test.png&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;massimo santi nel suo &lt;a href="http://www.msanti.net/2008/11/21/pdf-e-imagemagick-creare-miniature/"&gt;blog&lt;/a&gt;&lt;br /&gt;propone il comando per estrarre la thubnail di una intera cartella di pdf&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FOR %i IN (*.pdf) DO convert -thumbnail 30000@ "%i"[0] -strip  -quality 95  PNG8:"%i".png &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;purtroppo la versione 6.3.7 che viene installata attualmente non funziona correttamente, provabilmente un bug.&lt;br /&gt;&lt;br /&gt;la seconda possibilità prevede l'uso del programma GhostScript.&lt;br /&gt;&lt;br /&gt;l'ottimo Jed’s fridge nel suo &lt;a href="http://jedrm.wordpress.com/2007/05/09/convert-pdf-to-jpg/"&gt;blog&lt;/a&gt; condivide uno script che fa uso di gs&lt;br /&gt;&lt;br /&gt;allo stesso scopo.&lt;br /&gt;&lt;br /&gt;aggiunto il parameto necessario per convertire solo la prima pagina lo script fa esattamente quello che cercavo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; if [ $# -ne 2 ];then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; echo “Usage: $0 target.pdf outfile”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; TARGET=$1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; # -dFirstPage=1 -dLastPage=1 =&gt; serve a convertire solo la prima pagina!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; #-sDEVICE=png16m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; OUTFILE=$2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; gs \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dSAFER \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dBATCH \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dNOPAUSE \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -sDEVICE=jpeg \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -r150 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dTextAlphaBits=4 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dGraphicsAlphaBits=4 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dMaxStripSize=8192 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dFirstPage=1 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -dLastPage=1 \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; -sOutputFile=${OUTFILE}_%d.jpg \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; ${TARGET}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;il passo successivo è scrivere il codice php necessario a sfruttare questa potente applicazione nel vostro progetto:&lt;br /&gt;&lt;br /&gt;la mia prima proposta è molto semplice&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    function pdf_get_thumbnail($pdf){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        $pdf = escapeshellarg($pdf);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        $OUTFILE = $pdf.'.jpg';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        $cmd = "gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r150 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dMaxStripSize=8192 -dFirstPage=1 -dLastPage=1 -sOutputFile=$OUTFILE $pdf";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        exec($cmd, $output, $return_var );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return ( $return_var == 0 ? true : false)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    $output = pdf_get_thumbnail($TARGET);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    echo "&lt;pre&gt;$output&lt;/pre&gt;";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;a seconda delle esigenze applicative è possibile gestire ulteriori parametri, come il percorso&lt;br /&gt;e il nome e il formato del file in output, le dimensioni dell'anteprima e molto altro.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;man gs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;per ulteriori ispirazioni.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-128864726103223161?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/128864726103223161/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=128864726103223161' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/128864726103223161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/128864726103223161'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/04/ottenere-licona-della-prima-pagina-di.html' title=''/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-328125131375176072</id><published>2009-04-14T14:41:00.002+02:00</published><updated>2009-04-14T14:45:15.059+02:00</updated><title type='text'>Growl: Notifiche the Unix way</title><content type='html'>Condivido con voi questo software interessante:&lt;br /&gt;&lt;br /&gt;è un servizio di rete nativo da installare sui computer client, che ha la funzione di mostrare dei popup di notifica in stile outlook,&lt;br /&gt;&lt;br /&gt;ariginariamente sviluppato per mac esiste un porting per windows,&lt;br /&gt;&lt;br /&gt;la cosa è particolarmente interessante nel caso dei software web che normalmente per ragioni di sicurezza sono isolati da funzionalità di questo tipo&lt;br /&gt;&lt;br /&gt;client win: http://www.growlforwindows.com/gfw/examples/js/&lt;br /&gt;&lt;br /&gt;client mac: http://growl.info/about.php&lt;br /&gt;&lt;br /&gt;implementazione delphi: http://growl.matf.de/&lt;br /&gt;&lt;br /&gt;implementazione php: http://clickontyler.com/php-growl/&lt;br /&gt;&lt;br /&gt;esiste poi un componente javascript simile negli intenti: http://ajaxian.com/archives/notimoo-brings-growl-to-mootools&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-328125131375176072?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/328125131375176072/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=328125131375176072' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/328125131375176072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/328125131375176072'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2009/04/growl-notifiche-unix-way.html' title='Growl: Notifiche the Unix way'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-5454645384902376846</id><published>2008-11-06T10:41:00.002+01:00</published><updated>2008-11-06T10:48:00.391+01:00</updated><title type='text'>ottenere il numero  di versione dell'applicazione con svn e php</title><content type='html'>E' piuttosto semplice anche se utilizza una funzionalità poco conosciuta di svn.&lt;br /&gt;&lt;br /&gt;inserendo la seguente linea di codice nel vostro file di configurazione generale es. config.php&lt;br /&gt;&lt;br /&gt;define('APP_VERSION', substr(substr('$Rev: 146 $' , 6) , 0, -2) );&lt;br /&gt;&lt;br /&gt;basta portarsi nella directory del file a dare il seguente comando svn&lt;br /&gt;&lt;br /&gt;$svn propset svn:keywords Revision config.php&lt;br /&gt;&lt;br /&gt;et voilà, ogni volta che si committa il file viene automaticamente aggiornato con il numero di versione corrente.&lt;br /&gt;&lt;br /&gt;La cosa risulta particolarmente utile per sincronizzare l'applicazione su più server e con più sviluppatori contemporaneamente o per scrivere aggiornamenti automatici.&lt;br /&gt;&lt;br /&gt;Potete sugerire qualche uso creativo di questa possibilità?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-5454645384902376846?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/5454645384902376846/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=5454645384902376846' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5454645384902376846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5454645384902376846'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/11/ottenere-il-numero-di-versione.html' title='ottenere il numero  di versione dell&apos;applicazione con svn e php'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-1025470662060774826</id><published>2008-10-27T23:49:00.003+01:00</published><updated>2008-10-28T00:12:01.990+01:00</updated><title type='text'>classi css dinamiche vs. hacks</title><content type='html'>Tradizionalmente, abbiamo combattuto contro le incongruenze dei vari browser, aggiungendo codice css specifico per fissare il comportamento non standard.&lt;br /&gt;il problema fino ad ora è stato individuare questi browser e porvi rimedio.&lt;br /&gt;alla prima parte del problema, si può ovviare con i così detti hacks, cioè istruzioni mal formate che vengono interpretate solo in certe circostanze. nelle situazioni più favorevoli l'unico browser di cui occorrerà curarsi sarà IE, per il quale esiste una tecnica specifica, detta commento condizionale, con cui generalmente si include un css apposito.&lt;br /&gt;questo css separato è sempre meglio degli hacks, che sono francamente inleggibili e impossibili da mantenere, ma ancora scomodo perché divide su più files le regole necessarie alla resa corretta della pagina.&lt;br /&gt;una prima evoluzione del problema consiste nel usare i commenti condizionali per taggare il documento, in questo modo possiamo organizzare efficacemente il css.&lt;br /&gt;questa tecnica è efficace, veloce e pulita ma funziona esclusivamente su IE, non funziona per safari ed opera e non distingue le diverse versioni dei navigatori ne il sistema operativo.&lt;br /&gt;La naturale evoluzione di questo sistema permette di rivelare ogni dettaglio del navigatore in modo da scrivere codice preciso e pulito, &lt;a href="http://blog.html.it/27/10/2008/regole-ad-hoc-con-css-browser-selector/"&gt;prendendo spunto da questo articolo&lt;/a&gt;, ho ricavato la seguente funzione:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;(function(){&lt;br /&gt;  var u=navigator.userAgent.toLowerCase(),&lt;br /&gt;  i=function(t){return u.indexOf(t)&gt;-1;},&lt;br /&gt;  g='gecko',w='webkit',&lt;br /&gt;  c=[(!(/opera|webtv/i.test(u))&amp;&amp;/msie\s(\d)/.test(u)) ? ('ie ie'+RegExp.$1):&lt;br /&gt;    i('firefox/2')?g+'ff2':&lt;br /&gt;    i('firefox/3')?g+'ff3':&lt;br /&gt;    i(g+'/')?g:&lt;br /&gt;    /opera\s(\d)/.test(u)?'opera opera'+RegExp.$1:&lt;br /&gt;    i('konqueror')?w+'konqueror':&lt;br /&gt;    i('chrome')?w+'chrome':&lt;br /&gt;    i('applewebkit/')?w+'safari':&lt;br /&gt;    i('mozilla/')?g:'',&lt;br /&gt;    ,i('mac')?'mac':i('win')?'win':''&lt;br /&gt;    ,'js'];&lt;br /&gt;    alert(u);&lt;br /&gt;  document.getElementsByTagName('html')[0].className += c.join(' ');&lt;br /&gt;})();&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;questa funzione è leggerissima ed esegue istantaneamente, regala a css l'elasticità che dovrebbe avere di default.&lt;br /&gt;&lt;br /&gt;A mio parere una ulteriore evoluzione di questo metodo dovrebbe avvenire con un calcolo effettuto sul server, il browser deve infatti conoscere in anticipo come applicare i selettori e se il dom viene modificato da uno script, la renderizazione si ferma fintanto che non avviene la modifica e poi la cascata css deve essere ricalcolata, per cui o la si carica prima di ogni file css, oppure alla fine del caricamento del documento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-1025470662060774826?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/1025470662060774826/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=1025470662060774826' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1025470662060774826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1025470662060774826'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/10/classi-css-dinamiche-vs-hacks.html' title='classi css dinamiche vs. hacks'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-2532328471096505174</id><published>2008-09-09T22:28:00.001+02:00</published><updated>2008-09-09T22:30:16.723+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Recipe to learn a programming language</title><content type='html'>1) find motivation, money is good motivation but love is better&lt;br /&gt;2) study the theory, from books is better, from 3 to 10 books per subject seems to be the more efficient trade off&lt;br /&gt;3) apply what you learn on real problems&lt;br /&gt;4) test it with real people and real data&lt;br /&gt;5) read the solution of others, look for them in the internet &lt;br /&gt;6) refactor what you did with what you have recently learned&lt;br /&gt;7) setup a more productive environment&lt;br /&gt;8) pack your libs and utils and share them with others so that masters can review your code&lt;br /&gt;9) repeat until you learned enough to be considered master &lt;br /&gt;10) teach someone else, review the code of someone else&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-2532328471096505174?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/2532328471096505174/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=2532328471096505174' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2532328471096505174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2532328471096505174'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/09/recipe-to-learn-programming-language.html' title='Recipe to learn a programming language'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-877060838005981603</id><published>2008-05-31T17:37:00.003+02:00</published><updated>2008-05-31T18:00:39.806+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python entra nella mia vita</title><content type='html'>E' ufficiale, python entra nella mia esistenza e in questo blog.&lt;br /&gt;Da circa 2 mesi leggo &lt;a href="http://reddit.com/r/programming/"&gt;http://reddit.com/r/programming/&lt;/a&gt; ed è evidente dal numero dei post che la comunità mondiale tiene in grande stima python, mentre è piuttosto critica nei confronti di PHP.&lt;br /&gt;&lt;br /&gt;il modo più semplice per scrivere una applicazione web in python è usare un .htaccess&lt;br /&gt;&lt;br /&gt;  AddHandler mod_python .py&lt;br /&gt;  PythonHandler mod_python.publisher&lt;br /&gt;  PythonDebug On&lt;br /&gt;&lt;br /&gt;quindi in index.py&lt;br /&gt;&lt;br /&gt;def index():&lt;br /&gt;     return "Hello, World!"&lt;br /&gt;def test():&lt;br /&gt;    return "test"&lt;br /&gt;&lt;br /&gt;ogni funzione in index.py corrisponde ad una azione, per cui ad&lt;br /&gt;  http://localhost/py/index.php/index&lt;br /&gt;risponderà la funzione index, ad&lt;br /&gt;  http://localhost/py/index.php/test&lt;br /&gt;risponderà la funzione test.&lt;br /&gt;&lt;br /&gt;fin qui neinte di eccitante ma è significativo che questo sia il modo più semplice che io abbia trovato per far funzionare un handler, se mi posso permettere la "convention over configuration" dell'architettura di php, una pagina una richiesta, mi sembra di gran lunga più semplice e chiara di questa configurazione.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-877060838005981603?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/877060838005981603/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=877060838005981603' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/877060838005981603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/877060838005981603'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/05/python-entra-nella-mia-vita.html' title='python entra nella mia vita'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-6458432273819537804</id><published>2008-03-31T14:46:00.001+02:00</published><updated>2008-03-31T14:47:38.858+02:00</updated><title type='text'></title><content type='html'>Mi son imbattuto in un post Illuminante, che voglio condividere con voi:&lt;br /&gt;http://www.valuedlessons.com/2008/01/garlic-programmers-for-silver-code.html&lt;br /&gt;&lt;br /&gt;buona lettura&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-6458432273819537804?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/6458432273819537804/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=6458432273819537804' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6458432273819537804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6458432273819537804'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/03/mi-son-imbattuto-in-un-post-illuminante.html' title=''/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-2887083394337412661</id><published>2008-03-06T15:12:00.003+01:00</published><updated>2008-03-06T15:16:51.146+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php csv'/><title type='text'>Maneggiare dati in formato CSV</title><content type='html'>Maneggiare il formato csv è piuttosto comune, perché un gran numero si applicazioni permette di esportare i dati in questo formato molto semplice.&lt;br /&gt;Per importare dal formato CSV può essere necessario un formato differente, come qualche formato basato su XML.&lt;br /&gt;PHP è molto dotato per questo genere di compiti e pernette di risolvere il problema in poche linne di codice&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;if ( $handle = @fopen("../data/RA.csv","r") ) {&lt;br /&gt;    while (!feof($handle)) {&lt;br /&gt;        $buffer = fgets($handle, 1024);&lt;br /&gt;        $row = explode("|",$buffer);&lt;br /&gt;        echo "USI#: ".$row[4]."&lt;br /&gt;\n";&lt;br /&gt;    }&lt;br /&gt;    fclose($handle);&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;questo script risolve il problema ma non è una soluzione riutilizzabile, non funzionerà con formati leggermente diversi, che utilizzono un separatore differente ad esempio, o che quotino i dati nei campi e non permette di gestire l'output in una maniera differente da quella prevista.&lt;br /&gt;&lt;br /&gt;Una soluzione più generale è possibile utilizzando una funzione come parametro, che permetta di controllare il formato di output&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;function file_csv_format($file, $separator, $format_funct){&lt;br /&gt;    $handle = @fopen($file, "r");&lt;br /&gt;    if ($handle) {&lt;br /&gt;        while (!feof($handle)) {&lt;br /&gt;            $buffer = fgets($handle, 1024);&lt;br /&gt;            $row = explode( $separator, $buffer);&lt;br /&gt;            $format_funct($row);           &lt;br /&gt;        }&lt;br /&gt;        fclose($handle);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;function simple_format($row){ echo "USI#: ".$row[4]."&lt;br /&gt;\n"; }&lt;br /&gt;file_csv_format("../data/RA.dat", '|', 'simple_format');&lt;br /&gt;&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;br /&gt;se non abbiamo intenzione di riutilizzare la funzione di formattazione PHP permette di dichiarare una funzione anonima in line, secondo un paradigma detto "Programmazione Funzionale"&lt;br /&gt;&lt;pre&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;file_csv_format("../data/RA.dat", '|', create_function('$row','echo "USI#: ".$row[4]."&lt;br /&gt;\n";'));&lt;br /&gt;?&gt;&lt;/pre&gt;&lt;br /&gt;in pratica permette di risolvere ilproblema precedente in maniera riutilizzabile, in una unica linea di codice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-2887083394337412661?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/2887083394337412661/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=2887083394337412661' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2887083394337412661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2887083394337412661'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/03/maneggiare-il-formato-csv-piuttosto.html' title='Maneggiare dati in formato CSV'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-6353899849190803276</id><published>2008-01-29T14:22:00.000+01:00</published><updated>2008-01-29T14:27:59.230+01:00</updated><title type='text'>Fare Le Cose(Get Things Done)</title><content type='html'>ispirato da questo &lt;a href="http://www.pickthebrain.com/blog/10-secrets-to-success"&gt;post&lt;/a&gt;, condivido con voi la mia lista:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Mai dire "Non Ci Riesco"&lt;/li&gt;&lt;li&gt;Obbiettivi chiari&lt;/li&gt;&lt;li&gt;adesso, fallo!&lt;/li&gt;&lt;li&gt;impara, ogni giorno, in modo efficiente&lt;/li&gt;&lt;li&gt;Non Mollare MAI&lt;/li&gt;&lt;li&gt;analizza la situazione e impara dagli errori&lt;/li&gt;&lt;li&gt;concentrati&lt;/li&gt;&lt;li&gt;Non Cercare Di Fare Impressione&lt;/li&gt;&lt;li&gt;sii gentile&lt;/li&gt;&lt;li&gt;sii affidabile&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-6353899849190803276?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/6353899849190803276/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=6353899849190803276' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6353899849190803276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/6353899849190803276'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/01/fare-le-coseget-things-done.html' title='Fare Le Cose(Get Things Done)'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-8812894217026855867</id><published>2008-01-29T14:18:00.000+01:00</published><updated>2008-01-29T14:20:24.996+01:00</updated><title type='text'>Questo vorrei farlo anch'io!</title><content type='html'>&lt;object width="425" height="373"&gt;&lt;param name="movie" value="http://www.youtube.com/v/C7fhiq994GE&amp;rel=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/C7fhiq994GE&amp;rel=1&amp;border=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="373"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-8812894217026855867?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/8812894217026855867/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=8812894217026855867' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8812894217026855867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8812894217026855867'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2008/01/vorrei-farlo-anche-io.html' title='Questo vorrei farlo anch&apos;io!'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-5232917263325829693</id><published>2007-12-08T19:22:00.000+01:00</published><updated>2007-12-08T19:23:31.566+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='jedit'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><title type='text'>macro per riformattare js compresso</title><content type='html'>&lt;span style="font-family: courier new;"&gt;// This is a recorded macro. First, check over the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// commands to make sure this is what you intended. Then,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// save this buffer, and the macro should appear in the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;// Macros menu.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchString("{");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setReplaceString("{ \n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setBeanShellReplace(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setIgnoreCase(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setRegexp(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchFileSet(new CurrentBufferSet());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.replaceAll(view);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchString("}");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setReplaceString("} \n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setBeanShellReplace(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setIgnoreCase(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setRegexp(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchFileSet(new CurrentBufferSet());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.replaceAll(view);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchString(";");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setReplaceString(";\n");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setBeanShellReplace(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setIgnoreCase(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setRegexp(false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.setSearchFileSet(new CurrentBufferSet());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SearchAndReplace.replaceAll(view);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Macros.getMacro("Delete_Blank_Lines").invoke(view);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-5232917263325829693?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/5232917263325829693/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=5232917263325829693' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5232917263325829693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5232917263325829693'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/12/macro-per-riformattare-js-compresso.html' title='macro per riformattare js compresso'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-7733301306866102067</id><published>2007-12-08T19:15:00.000+01:00</published><updated>2007-12-08T19:17:28.552+01:00</updated><title type='text'>Revolution OS</title><content type='html'>La mitica storia del movimento GNU e Linux, in video dalla viva voce degli autori, ben realizzato, putroppo totalmente in inglese:&lt;br /&gt;&lt;br /&gt;http://italyanker.wordpress.com/2007/12/08/revolution-os/#more-420&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-7733301306866102067?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/7733301306866102067/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=7733301306866102067' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7733301306866102067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7733301306866102067'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/12/revolution-os.html' title='Revolution OS'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-2588450651435845165</id><published>2007-12-05T14:26:00.000+01:00</published><updated>2007-12-05T14:31:05.235+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libri'/><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>libri che non leggerò nemmeno nel 2008</title><content type='html'>&lt;div  style="font-family:verdana;"&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="font-size:85%;"&gt;o spunto per questo post nasce da una domanda di sebastiano&lt;br /&gt;"quali sono i libri che ti attirano di più in questo periodo"&lt;br /&gt;ce ne sonoin giro diversi:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span class="297215109-05122007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="font-size:85%;"&gt;Sicuramente javascript sarà molto hot nel 2008,   dall'autore di JQuery&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://books.google.com/books?id=GgJN2CC_2s4C&amp;amp;pg=PA163&amp;amp;dq=jquery&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=sC6R_Tv5xzcmJBY4ZyoVIw-C4uM#PPP1,M1"&gt;http://books.google.com/books?id=GgJN2CC_2s4C&amp;amp;pg=PA163&amp;amp;dq=jquery&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=sC6R_Tv5xzcmJBY4ZyoVIw-C4uM#PPP1,M1&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt; &lt;/div&gt; &lt;div  style="font-family:verdana;"&gt; &lt;div&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="font-size:85%;"&gt;Mash up, in primis mappe google, con  esempi in php&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://books.google.com/books?id=GNMCdlkKU3sC&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=RBjGWj3bzuvx3CY7YYW8f920nlI"&gt;http://books.google.com/books?id=GNMCdlkKU3sC&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=RBjGWj3bzuvx3CY7YYW8f920nlI&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;argomenti che  spopolano da tempo, RSS e webservice&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;a href="http://books.google.com/books?id=Z3LK71chYioC&amp;amp;pg=PA23&amp;amp;dq=%2Bservice+google&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=NeqSAH_VKNOHsXYWWesRa7soaT0#PPP1,M1"&gt;http://books.google.com/books?id=Z3LK71chYioC&amp;amp;pg=PA23&amp;amp;dq=%2Bservice+google&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=NeqSAH_VKNOHsXYWWesRa7soaT0#PPP1,M1&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;a href="http://books.google.com/books?id=Ox37YWzik3oC&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=quI75gc8RkNX0zWM-hZ4j_deaP4#PPP1,M1"&gt;http://books.google.com/books?id=Ox37YWzik3oC&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=quI75gc8RkNX0zWM-hZ4j_deaP4#PPP1,M1&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;a href="http://books.google.com/books?id=GLQt0PZCv94C&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=IwzacQ4VJN4z4yEZLQ0D8oUVQ08"&gt;http://books.google.com/books?id=GLQt0PZCv94C&amp;amp;printsec=frontcover&amp;amp;dq=php&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=IwzacQ4VJN4z4yEZLQ0D8oUVQ08&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;inoltre un libro  sulla promozione web in generale, di cui il posizionamento sui motori è solo un  aspetto,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;gli spazi di  business nel settore si fanno interessanti:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;a href="http://books.google.com/books?id=L6VbgsiVZP4C&amp;amp;pg=PA115&amp;amp;dq=%2Bservice+google&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=AbWKHyIEbj7l3N2D19i0c2a8uYQ"&gt;http://books.google.com/books?id=L6VbgsiVZP4C&amp;amp;pg=PA115&amp;amp;dq=%2Bservice+google&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=AbWKHyIEbj7l3N2D19i0c2a8uYQ&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;.Net per chi conosce  delphi&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;span style="line-height: 1.2em;"&gt;&lt;span class="ln2"&gt;&lt;a href="http://books.google.com/books?id=cFMMtG3rD-IC&amp;amp;printsec=frontcover&amp;amp;dq=delphi+-oracle&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=oFMHuWL_GM6FVTmsGHlYCgfFDfU#PPR12,M1"&gt;http://books.google.com/books?id=cFMMtG3rD-IC&amp;amp;printsec=frontcover&amp;amp;dq=delphi+-oracle&amp;amp;num=100&amp;amp;as_brr=0&amp;amp;hl=it&amp;amp;sig=oFMHuWL_GM6FVTmsGHlYCgfFDfU#PPR12,M1&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div  style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/div&gt; &lt;div face="verdana"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;ultimamente Apress si distingue per gli argomenti all'avanguardia,  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="297215109-05122007"&gt;O'Reilly è ancora la  mia preferita per la chiarezza e la profondità delle pubblicazioni su argomenti  generali.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-2588450651435845165?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/2588450651435845165/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=2588450651435845165' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2588450651435845165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2588450651435845165'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/12/libri-che-non-legger-nemmeno-nel-2008.html' title='libri che non leggerò nemmeno nel 2008'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-5869576620865569046</id><published>2007-11-11T03:38:00.000+01:00</published><updated>2007-11-11T03:45:26.007+01:00</updated><title type='text'>64 ragioni</title><content type='html'>&lt;span style="color: rgb(96, 96, 96);"&gt;Segnalo questo articolo,&lt;a href="http://www.codinghorror.com/blog/archives/000994.html"&gt;http://www.codinghorror.com/blog/archives/000994.html&lt;/a&gt;:  spiega perché su macchine nuove vista 64bit con 4GB di ram ha un vantaggio  prestazionale su xp 32bit,ma afferma anche che non ci sono vantaggi pratici dei  sistemi 64bit con ram &lt;2GB, interessante.&lt;br /&gt;La mia conclusione è che aspeterò ad  acquistare un portatile nuovo fino a quando vi non verranno  vendute configurazioni con 4GB di ram.&lt;br /&gt;Ho apena reinstallato xp sul portatile causa sostituzione harddisk ed è danatamente veloce, mi riprometto di potare il registro regolarmente e cercare di non installare cazzate, per sopravvivere con il vecchio hardware fino alla prima buona occasione.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-5869576620865569046?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/5869576620865569046/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=5869576620865569046' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5869576620865569046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5869576620865569046'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/11/64-ragioni.html' title='64 ragioni'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-2914399331352140002</id><published>2007-10-22T21:39:00.000+02:00</published><updated>2007-10-22T22:17:23.939+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='canvas'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>ti presento Canvas</title><content type='html'>http://www.liquidx.net/plotkit/&lt;br /&gt;un'ulteriore approccio al problema della genrazione di grafici, clientside.&lt;br /&gt;&lt;br /&gt;PlotKit è una libreria che permette di fatre il plotting di dati espressi come array&lt;br /&gt;in puro javascript: supporta una funzionalità poco conosciuta: Canvas.&lt;br /&gt;Canvas è disponibile sui browser moderni: Safari 2+, Opera 9+, Firefox 1.5+, IE 6.&lt;br /&gt;Dove questa funzionalità che permette di generare grafica vettoriale direttamente sul browser non fosse disponibile PlotKit è in grado di lavorare con SVG(compatibile Opera 9+,&lt;br /&gt;Firefox 1.5+, IE6).&lt;br /&gt;Si tratta di una alternativa che promette lo stesso grado di interattività di un&lt;br /&gt;grafico flash, ma basato su un api standard.&lt;br /&gt;Tutto ciò che fa di buono flash, cioè grafica vettoriale, xhr, suono e video deve essere in prima battuta coperto dalle&lt;br /&gt;api standard del browser: ogni valida ragione per usare flash è causata da una grave&lt;br /&gt;mancanza degli standard.&lt;br /&gt;Mi auguro una rete del tutto priva di player proprietari.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-2914399331352140002?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/2914399331352140002/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=2914399331352140002' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2914399331352140002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/2914399331352140002'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/ti-presento-canvas.html' title='ti presento Canvas'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-805921117275045072</id><published>2007-10-22T20:43:00.000+02:00</published><updated>2007-10-22T20:52:05.433+02:00</updated><title type='text'>c'azzecca eccome</title><content type='html'>http://it.youtube.com/watch?v=x7TYSIJoIBs&lt;br /&gt;in questo video il ministro diPietro, che ha firmato il disegno di legge che ci vuole tappare la bocca, si vergogna di essere stato a suo dire truffato dal governo, costretto a truffare persino i suoi componenti oltre agli ingenui elettori di sinistra, se fosse vero.&lt;br /&gt;se fosse vero, si tratta di affermazioni di inaudita gravità... a casa!&lt;br /&gt;se non fosse vero, Antonio di pietro dà in questo video un saggio di bravura teatrale da oscar, porgiamogli tuttavia il nostro avviso: tonino, attento, il fuoco scotta.&lt;br /&gt;non prendeci per il culo. minaccia la crisi finchè non sarà tolto quel provvedimento fraudolento. SUBITO!&lt;br /&gt;se sei semplicemente  stupido, renditene conto e vai a lavorare.&lt;br /&gt;da vedere, in ogni caso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-805921117275045072?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/805921117275045072/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=805921117275045072' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/805921117275045072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/805921117275045072'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/cazzecca-eccome.html' title='c&apos;azzecca eccome'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-3024851133544598687</id><published>2007-10-21T23:05:00.000+02:00</published><updated>2007-10-21T23:25:53.490+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='italia'/><category scheme='http://www.blogger.com/atom/ns#' term='politica'/><category scheme='http://www.blogger.com/atom/ns#' term='grillo'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>why not?</title><content type='html'>tolta l'inchiesta al &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pm&lt;/span&gt; De &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Magistris&lt;/span&gt;, La Procura generale di Catanzaro ha avocato l'inchiesta "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Why&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Not&lt;/span&gt;" sul presunto uso illecito di finanziamenti pubblici di cui era titolare il &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;pm&lt;/span&gt; Luigi De &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Magistris&lt;/span&gt;. Nell'inchiesta sono coinvolti tra gli altri il presidente del consiglio Romano Prodi e il ministro della Giustizia Clemente Mastella, che ha chiesto il trasferimento di De &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Magistris&lt;/span&gt;. Una notizia che ha preso in contropiede il magistrato che ha appreso la novità dalla stampa. Ancora una volta vengono rese pubbliche a mezzo stampa notizie riservate che riguardano il mio ufficio, le mie indagini, e la mia persona. Ci avviamo al crollo dello stato di diritto, registrandosi la fine dell'indipendenza e dell'autonomia dei magistrati quale potere diffuso". --repubblica.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;è di questi giorni la notizia che  è stato approvato in consiglio dei ministri(all'unanimità!) un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DDL&lt;/span&gt;  che limita la possibilità per un cittadino italiano di tenere un blog: per farlo deve essere iscritto al albo dei giornalisti.&lt;br /&gt;Non  mi soffermerò ad evidenziare che una legge simile non ha altro scopo che limitare la libertà di espressione dei cittadini italiani, non mi farò prendere dal qualunquismo osando pensare che questa classe dirigente prenda decisioni fasciste nonostante sia &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;cattocomunista&lt;/span&gt;, mi limito a constatare che l'industria &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;IT&lt;/span&gt; italiana subirà le conseguenze di tale provvedimento: saremo costretti a far pagare server stranieri per essere in regola.&lt;br /&gt;questa legge non era nel programma elettorale  del governo: chi ha votato questa gente, per cortesia, si svegli dall'incantesimo, si dia al qualunquismo se questo significa libertà di pensiero e scetticismo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-3024851133544598687?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/3024851133544598687/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=3024851133544598687' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3024851133544598687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3024851133544598687'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/why-not.html' title='why not?'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-336190187135000517</id><published>2007-10-18T14:27:00.000+02:00</published><updated>2007-10-18T22:38:45.955+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>iPhone sdk</title><content type='html'>&lt;a href="http://www.appleinsider.com/article.php?id=3317" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Steve &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Jobs&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;confirms&lt;/span&gt;&lt;/span&gt; native iPhone &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SDK&lt;/span&gt;&lt;/span&gt; by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;February&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;: "In a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;new&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;posting&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;to&lt;/span&gt;&lt;/span&gt; &lt;a href="http://apple.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;Apple.com&lt;/a&gt;'s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Hot&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;News&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;webpage&lt;/span&gt;&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;chief&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;executive&lt;/span&gt;&lt;/span&gt; Steve &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Jobs&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;has&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;confirmed&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;plans&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;to&lt;/span&gt;&lt;/span&gt; release &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;an&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;SDK&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;for&lt;/span&gt;&lt;/span&gt; iPhone by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;February&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;that&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;will&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;allow&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;developers&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;to&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;write&lt;/span&gt;&lt;/span&gt; native &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;applications&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;for&lt;/span&gt;&lt;/span&gt; the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;touch&lt;/span&gt;&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;screen&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;handset&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;as&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;well&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;as&lt;/span&gt;&lt;/span&gt; the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;iPod&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;touch&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;..."&lt;br /&gt;&lt;br /&gt;possibilità di business?&lt;br /&gt;&lt;br /&gt;una piattaforma proprietaria (che hanno in 2) e che costa 600 euro? se fosse l'unica e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;purtroppo&lt;/span&gt; non lo è, non vedrei comunque grossi margini, penso rimarrà a lungo uno status &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;symbol&lt;/span&gt;&lt;/span&gt;, ma di poco interesse per chi programma.&lt;br /&gt;Chi smanetta vuole: hardware economico, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;standards&lt;/span&gt;&lt;/span&gt; e software libero; cioè non vuole una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;apple&lt;/span&gt;&lt;/span&gt; o una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;microsoft&lt;/span&gt;&lt;/span&gt; in mezzo ai coglioni, vuole sbattersi sui manuali e imparare qualcosa che sarà ancora valido tra 5 anni, questa è la ragione per cui la gente studia ancora c++.&lt;br /&gt;&lt;a href="http://www.oneopensource.it/18/10/2007/sdk-nativo-per-i-telefoni-motorola-basati-su-linux/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Motorola&lt;/span&gt; sembra d'accordo con me, ma non so con che risultati.&lt;/a&gt;&lt;br /&gt;Smanettare, ma per farci cosa? per &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;piratare&lt;/span&gt;&lt;/span&gt;... ma anche per produrre soluzioni davvero originali, non previste dagli &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;sdk&lt;/span&gt;&lt;/span&gt;, ad esempio collegare applicazioni e servizi e altro hardware in modo del tutto non prevedibile.&lt;br /&gt;Apple e Microsoft vogliono vendere il loro dispositivo e i contenuti multimediali(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;iTunes&lt;/span&gt;&lt;/span&gt;...) e fare in modo che nessuno copi la loro tecnologia e nemmeno i contenuti, pensano ai &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;DRM&lt;/span&gt;&lt;/span&gt;...&lt;br /&gt;Ciò che davvero serve per aprire un business sulla telefonia mobile è una piattaforma hardware standard, come abbiamo sui &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;pc&lt;/span&gt;&lt;/span&gt;, che permetta di scrivere applicazioni &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;interoperabili&lt;/span&gt;&lt;/span&gt; in modo semplice, come abbiamo ora sui server &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;linux&lt;/span&gt;&lt;/span&gt;, con strumenti di sviluppo semplici: penso ai linguaggi di &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;scripting&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;Insomma sui cellulari e sui palmari oggi l'unica scelta plausibile è &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;java&lt;/span&gt;&lt;/span&gt;, altrimenti l'applicazione è dalla nascita relegata ud un singolo cellulare, cosa non sostenibile per una piccola azienda.&lt;br /&gt;Questi &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;sdk&lt;/span&gt;&lt;/span&gt; sono generalmente per c++ e &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;java&lt;/span&gt;&lt;/span&gt;, si appoggiano a qualche IDE, tipicamente &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;visual&lt;/span&gt;&lt;/span&gt; studio o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;eclipse&lt;/span&gt;&lt;/span&gt;: questa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;toolchain&lt;/span&gt;&lt;/span&gt; è costosa quando non inefficiente.&lt;br /&gt;L'unica mia speranza è &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/ee447e84-2851-471a-8387-3434345f2eb0/Python_for_S60.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;python&lt;/span&gt;&lt;/span&gt; &lt;/a&gt;come su &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;symbian&lt;/span&gt;&lt;/span&gt;, prodotto da &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;nokia&lt;/span&gt;&lt;/span&gt;, e &lt;a href="http://www.openmoko.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;openmoko&lt;/span&gt;&lt;/span&gt;.&lt;/a&gt;&lt;br /&gt;Con qualcosa del genere si potrà sviluppare sui &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;palmofoni&lt;/span&gt;&lt;/span&gt; allo stesso ritmo di produttività e innovazione con cui sviluppiamo sul web e sperare di imparare qualcosa che possa restare valido per 36 mesi.&lt;br /&gt;iPhone promette di usare il web dal telefonino: cosa buona e giusta sviluppare non con il maledetto &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;sdk&lt;/span&gt; ma direttamente con le tecnologie web.&lt;br /&gt;Per quanto &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;riesco&lt;/span&gt; a trovare in rete pare si potrà programmare solo sul browser, tutto da vedere se si &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;potrà&lt;/span&gt; leggere e scrivere direttamente sul telefonino o far partire programmi.&lt;br /&gt;Faccio notare che, se il web oggi ha un valore, questo è dovuto al fatto che sia standard e libero perciò fruibile e scrivibile da tutti, non è merito delle grandi aziende produttrici di sistemi operativi, che vorrebbero un web &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;readonly&lt;/span&gt;, come il mondo del cinema e della musica contemporaneo.&lt;br /&gt;Un'altro argomento è la &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;committenza&lt;/span&gt;. Senza clienti non c'è business e non c'è un tubo da sviluppare.&lt;br /&gt;Ma questi apparecchi oggi non hanno una base di utenti numerosa e non è chiaro a nessuno(nemmeno a me, che non posso comprarmi un gingillo simile ne tutti gli altri che escono o usciranno) quale sia il loro reale potenziale, se non sono solo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;amennicoli&lt;/span&gt; ovviamente.&lt;br /&gt;Una cosa la sanno tutti: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;iphone&lt;/span&gt;&lt;/span&gt; fa &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;figo&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;Questa è l'unica ragione oggi per comprare &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;apple&lt;/span&gt;&lt;/span&gt; anziché &lt;a href="http://www.htctouch.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;htc&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, almeno questo pare guardando questi &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;giocattolini&lt;/span&gt;&lt;/span&gt; di lusso dalle vetrine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-336190187135000517?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/336190187135000517/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=336190187135000517' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/336190187135000517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/336190187135000517'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/iphone-sdk.html' title='iPhone sdk'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-3808397572007992875</id><published>2007-10-17T14:33:00.000+02:00</published><updated>2007-10-17T14:36:17.268+02:00</updated><title type='text'>usa il cervello</title><content type='html'>LEFT BRAIN FUNCTIONS&lt;br /&gt;uses logic&lt;br /&gt;detail oriented&lt;br /&gt;facts rule&lt;br /&gt;words and language&lt;br /&gt;present and past&lt;br /&gt;math and science&lt;br /&gt;can comprehend&lt;br /&gt;knowing&lt;br /&gt;acknowledges&lt;br /&gt;order/pattern perception&lt;br /&gt;knows object name&lt;br /&gt;reality based&lt;br /&gt;forms strategies&lt;br /&gt;practical&lt;br /&gt;safe    &lt;br /&gt;&lt;br /&gt;RIGHT BRAIN FUNCTIONS&lt;br /&gt;uses feeling&lt;br /&gt;"big picture" oriented&lt;br /&gt;imagination rules&lt;br /&gt;symbols and images&lt;br /&gt;present and future&lt;br /&gt;philosophy &amp;amp; religion&lt;br /&gt;can "get it" (i.e. meaning)&lt;br /&gt;believes&lt;br /&gt;appreciates&lt;br /&gt;spatial perception&lt;br /&gt;knows object function&lt;br /&gt;fantasy based&lt;br /&gt;presents possibilities&lt;br /&gt;impetuous&lt;br /&gt;risk taking&lt;br /&gt;&lt;br /&gt;Potresti essere tentato di pensare che programmare o più in generale avere a che fare con una macchina sia sostanzialmente un affare per la parte sinistra del tuo cervello.&lt;br /&gt;Ripensaci.&lt;br /&gt;Ripensaci con la parte destra del tuo cervello, se ancora non ci sei arrivato.&lt;br /&gt;Programmare è simile a scrivere poesie o letteratura e i programmi parlano di oggetti concreti e di persone, la matematica, almeno per quanto riguarda al mia esperienza, è uno strumento al servizio della "big picture", decidere cosa fare e programmare è esattamenet questo: un continuo prendere decisioni, decisioni rischiose.&lt;br /&gt;perché un programma funzionerà in una condizione soltanto: se il programmatore ha preso tutte le decisioni correttamente.&lt;br /&gt;&lt;br /&gt;se stai scrivendo il gestionale di una azienda e un errore comporta una perdita economica, capisci perché sono convinto che programmare richiede coraggio in prima istanza, entusiasmo in seconda.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-3808397572007992875?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/3808397572007992875/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=3808397572007992875' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3808397572007992875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3808397572007992875'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/usa-il-cervello.html' title='usa il cervello'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-5623145574798863509</id><published>2007-10-12T14:44:00.000+02:00</published><updated>2007-10-12T14:58:47.893+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2'/><category scheme='http://www.blogger.com/atom/ns#' term='web app'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Grafici sul server e sul client</title><content type='html'>prendo spunto da &lt;a href="http://applestooranges.com/blog/post/css-for-bar-graphs/?id=55"&gt;questi &lt;/a&gt;&lt;a href="http://applestooranges.com/goodies/css-for-bar-graphs/"&gt;graziosi&lt;/a&gt; grafici realizzati in css&lt;br /&gt;per fare qualche riflessione:&lt;br /&gt;per fare un grafico a barre con $linguaggio occorre&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sapere $linguaggio&lt;/li&gt;&lt;li&gt;un server che supporti $linguaggio (mod_$linguaggio)&lt;/li&gt;&lt;li&gt;recuperare i dati&lt;/li&gt;&lt;li&gt;creare una immagine e mostrarla&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;se la libreria di base è molto complessa ed hanno fatto un editor, occorre imparare ad usare l'editor ed essere praticamente nell'impossibilità di fare modifiche senza lo strumento o operazioni non previste dallo strumento, più lo strumento ha opzioni e copre situazioni differenti, più ci si impiega ad imparare lo strumento anche per le operazioni banali.&lt;br /&gt;&lt;br /&gt;$linguaggio può assumere i valori java, delphi, c#, python, perl, erlang, ruby, php e altri, molti altri, ma non cambia assolutamente una fava: alla fine avremo una immagine con delle barre da mandare sul client.&lt;br /&gt;&lt;br /&gt;Siccome ho esperienza con php(che è più semplice di altri) questa soluzione mi da più confidenza della altre ma è sostanzialmente identica a tutte le altre lato server, la differenza la fanno le librerie, non l'architettura o il linguaggio.&lt;br /&gt;&lt;br /&gt;per fare un grafico con css occorre&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sapere css&lt;/li&gt;&lt;li&gt;recuperare i dati(lato server) e aggiustare le dimensioni dei box a seconda dei dati&lt;/li&gt;&lt;/ul&gt;questo sposta il problema dal server al client, siccome css è di molto più semplice di un linguaggio di programmazione, lo si usa nel caso solo per definire colori e dimensioni che è più semplice che usare l'api di generazione delle immagini di $linguaggio.&lt;br /&gt;Di contro, css permette solo forme rettangolari, non si possono fare grafici a torta.&lt;br /&gt;la cosa cambia se vogliamo ancora lavorare sul client con ajax(javascript+css) o flash, ma torniamo ad avere un linguaggio di programmazione e quindi caos, ma sul client possiamo generare interazione con l'utente(il grafico si anima, si muove, mostra messaggi dinamicamente).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-5623145574798863509?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/5623145574798863509/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=5623145574798863509' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5623145574798863509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/5623145574798863509'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/grafici-sul-server-e-sul-client.html' title='Grafici sul server e sul client'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-1918107335885460301</id><published>2007-10-09T12:05:00.000+02:00</published><updated>2007-10-09T12:07:50.892+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='Pascal'/><title type='text'>Evitare  l'errore di compilazione "Circular Reference"</title><content type='html'>&lt;span style="font-family: courier new;"&gt;  unit clsProcedure;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  uses clsEntity, clsItem;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  type TProcedure(TEntity)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      Items: TItems;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  unit clsItem;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  uses clsEntity, clsProcedure;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  type TItem = class(TEntity)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      Proc: TProcedure;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  end;&lt;/span&gt;&lt;br /&gt;   &lt;br /&gt;questo non compila, genera un errore di "circular reference", cioè non è permesso&lt;br /&gt;dichiarare nella head della unit entrambe le classi in modo reciproco, questo impedisce al compilatore di determinare&lt;br /&gt;quale delle due cassi sia da compilare per prima.&lt;br /&gt;&lt;br /&gt;il problema si risolve dichiarando la unit nelle uses della implementation, dove non è necessario&lt;br /&gt;per il compilatore determinare una precedenza e facendo un cast interno alle funzioni,&lt;br /&gt;nella header è necessario indicare un antenato comune delle classi che interferiscono.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  unit clsProcedure;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  uses clsEntity;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  type TProcedure(TEntity)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      Items: TEntity; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      procedure SetItems(Items: TEntity);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  implementation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  uses clsItems;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  [...]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  TProcedure.SetItems(Items: TEntity);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    TItem(Items).doItemJob();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  unit clsItem;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  uses clsEntity;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  type TItem = class(TEntity)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    public&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      Proc: TEntity;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  end;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-1918107335885460301?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/1918107335885460301/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=1918107335885460301' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1918107335885460301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/1918107335885460301'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/evitare-lerrore-di-compilazione.html' title='Evitare  l&apos;errore di compilazione &quot;Circular Reference&quot;'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-4249111619754882358</id><published>2007-10-08T12:06:00.000+02:00</published><updated>2007-10-08T18:04:00.665+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>qualcuno usa Linux</title><content type='html'>SlashDot oggi mi attrae con questo articolo http://linux.slashdot.org/linux/07/10/07/1215245.shtml, linux ha raddoppiato in un anno la propria presenza,&lt;br /&gt;anche se non mi è chiaro come sia stato effettuato il conteggio, qualcuno contesta i dati asserendo che la quota di mercato deve essere molto più alta.&lt;br /&gt;Analizzando gli accessi di alcuni siti che ha realizzato l'azienda per cui lavoro, il cui acceso è quasi totalmente di utenti italiani, vediamo percentuali nella&lt;br /&gt;peggiore delle ipotesi simili a quelle riportate nell'articolo e in alcuni casi ben superiori in proporzione, ma in valore assoluto comunque largamente minoritari.&lt;br /&gt;personalmente mi considero un feroce utente linux, ma genero la maggior parte del traffico internet da un pc windows da cui lavoro, lo stesso pc è in dual&lt;br /&gt;boot per eventuale compatibilà(in realtà XP non bootta sulla mia macchina da 10 mesi, circa), come sarei conteggiato da queste statistiche?&lt;br /&gt;temo che le statistiche individuino solo pc aziendali, mentre la cosa importante da sondare è la propensione volontaria degli utenti.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;how long are we going to have to wait for the big breakthrough?&lt;br /&gt;&lt;/span&gt;è la domanda che si pongono gli autori. un utente calcola che a questo ritmo di crescita in 7 anni linux avrebbe il 100% del mercato.&lt;br /&gt;è ovviamente impossibile che mantenga un ritmo di crescita simile, e onestamente il 100% di penetrazione non serve a nessuno, ma arrivare al 5% è alla portata nel prossimo lustro  e cambierebbe la faccia del IT:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;hardware di ultima generazione compatibile&lt;/li&gt;&lt;li&gt;programmi commerciali di uso professionale, compatibili&lt;/li&gt;&lt;li&gt;richiesta di esperti linux sul mercato del lavoro&lt;/li&gt;&lt;/ul&gt;tuttavia, finché linux competerà con MS sul suo terreno, il desktop tradizionalmente inteso, potrà anche crescere, ma rimarrà minoritario.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-4249111619754882358?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/4249111619754882358/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=4249111619754882358' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/4249111619754882358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/4249111619754882358'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/slashdot-invece-oggi-mi-attrae-con.html' title='qualcuno usa Linux'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-7485229531341175696</id><published>2007-10-08T11:54:00.000+02:00</published><updated>2007-10-08T12:08:45.723+02:00</updated><title type='text'>L'IT di domani</title><content type='html'>&lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;.net è l'ultima  grande visione di MS, l'unica che si poteva permettere visioni e  rivoluzioni.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;il prossimo round di  innovazione tecnologica &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a href="http://online-desktop.org/wiki/Online_Desktop"&gt;http://online-desktop.org/wiki/Online_Desktop&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;occhio alle slides  &lt;a href="http://ometer.com/presentations/OnlineDesktop072007v6.pdf"&gt;http://ometer.com/presentations/OnlineDesktop072007v6.pdf&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;l'idea di fondo è  che un sistema operativo, servirà sempre meno a far girare applicazioni,  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;perchè l'unica  applicazione che serve davvero è il browser, le altre eventuali aplicazioni  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;gireranno  all'interno di questa virtual machine e i dati(e le applicazioni?) saranno sui  server delle aziende.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;e notizia di oggi  ASUS propone una scheda madre che permette l'avvio di un sistema Linux in meno  di 5 secondi &lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;da un disco flash,  che gira totalmente in ram e ha installate pochissime applicazioni tra cui  FireFox&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="021062208-08102007"&gt;&lt;/span&gt;&lt;span class="021062208-08102007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a href="http://punto-informatico.it/p.aspx?i=2083074"&gt;http://punto-informatico.it/p.aspx?i=2083074&lt;/a&gt;,  chi volesse, potrebbe fare a meno di un disco rigido.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-7485229531341175696?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/7485229531341175696/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=7485229531341175696' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7485229531341175696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7485229531341175696'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/blog-post.html' title='L&apos;IT di domani'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-8433257061713276150</id><published>2007-10-03T14:30:00.000+02:00</published><updated>2007-10-03T14:37:37.511+02:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;http://horde.org/papers/bostonphp2007-06/&lt;/span&gt;&lt;br /&gt;ho rinvenuto un interessante ORM, scritto dagli autori di HORDE, uno dei framework php più antichi, che nonostante conti ben 50 applicazioni open basate sul suo codice non ha mai riscosso la mia simpatia perché troppo pesante e overdesigned, difficile da installare e caratterizzato da codice praticamente incomprensibile data la mole.&lt;br /&gt;stavolta hanno invece realizzato un componente così delicato con una semplicità e una pulizia davvero notevoli se confrontato con i progetti concorrenti, basandosi sui meccanismi di iterazione standard del linguaggio e la libreria PDO, astrazione da database nativa della versione 5 del linguaggio.&lt;br /&gt;davvero un ottimo lavoro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-8433257061713276150?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/8433257061713276150/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=8433257061713276150' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8433257061713276150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/8433257061713276150'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/10/httphorde.html' title=''/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-7605007999201679125</id><published>2007-09-28T18:41:00.000+02:00</published><updated>2007-09-28T18:42:25.610+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='italia'/><title type='text'>Se so' magnati pure er CAP</title><content type='html'>Mi vergogno di essere italiano.&lt;br /&gt;le poste italiane, ente che funziona male, proprio come tutti gli altri e ci costa euro delle nostre tasse,&lt;br /&gt;non da a noi contribuenti un elenco dei cap.&lt;br /&gt;per averlo, occorre comprare un apposito programma&lt;br /&gt;http://www.poste.it/postali/cap/index.shtml&lt;br /&gt;del costo di 5000 euro.&lt;br /&gt;è possibile consultare la lista online&lt;br /&gt;http://www.poste.it/online/cercacap/controller?action=startup&amp;amp;source=index&lt;br /&gt;, ma niente di più, o paghi o ti arrangi:&lt;br /&gt;ma i cap sono NOSTRI! le poste sono nostre! le hanno pagate generazioni di italiani.&lt;br /&gt;i nostri dipendenti ladri le svendono agli amici come hanno fatto con tutte le altre&lt;br /&gt;aziende pubbliche. basta!&lt;br /&gt;firma la petizione online&lt;br /&gt;http://www.petitiononline.com/freecap/petition.html&lt;br /&gt;per chiedere che questo servizio, che è nostro, che paghiamo,&lt;br /&gt;che generazioni di italiani hanno costruito con le loro tasse, non ci venga portato via dai furbi amici degli amici.&lt;br /&gt;NON SIETE AMICI NOSTRI! giù le mani dalla nostra roba!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-7605007999201679125?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/7605007999201679125/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=7605007999201679125' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7605007999201679125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7605007999201679125'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/se-so-magnati-pure-er-cap.html' title='Se so&apos; magnati pure er CAP'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-35305839317795194</id><published>2007-09-27T21:04:00.000+02:00</published><updated>2007-09-27T22:55:17.887+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web2'/><category scheme='http://www.blogger.com/atom/ns#' term='web app'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>il futuro e il passato</title><content type='html'>Da mozilla una variante dell loro Firefox customizzata per farci girare applicazioni web, il concetto è in pratica simile a quello incarnato da adobe AIR.&lt;br /&gt;&lt;a href="http://wiki.mozilla.org/WebRunner#Installs"&gt;http://wiki.mozilla.org/WebRunner#Installs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spiegato in soldoni, una applicazione web tradizionale come gmail gira in un browser in cui sono stati tolti i menù e in pratica è deltutto simile ad una applicazione descktop tradizionale, con il bonus di essere multipiattaforma.&lt;br /&gt;Questo tipo di applicazione sta diventando particolarmente appetibile perchè ha costi di manutenzione oltre che di sviluppo inferiori rispetto ad una app tradizionale e in alcuni casi gli svantaggi sonoche ora esamineremo sono  poco sentiti.&lt;br /&gt;Ci sono stati enormi miglioramenti tecnologici nelle possibilità delle applicazioni web,ed è sbagliato limitare il tutto alla sola massificazione di ajax:&lt;br /&gt;Con firefox abbiamo avuto una forte spinta all'adeguamento agli standard, questo ha permesso lo studio serio da parte degli sviluppatori di CSS e js, queste tecnologie lato client crossplatform cominciano a gareggiare con le interfaccie disponibili nei toolkit&lt;br /&gt;grafici 2D come QT,GTK e MFC.&lt;br /&gt;Ma è riduttivo pensare che i passi siano stati fatti solo sul client, anche sul server si è sviluppata una ottima toolchain con framework&lt;br /&gt;web che copiano le migliori pratiche della programmazione tradizionale e mettono in competizione le comunity di diversi linguaggi opensource&lt;br /&gt;da php a ruby python perl e altri ancora, con una escalation tecnologica a colpi di paterns e best practices.&lt;br /&gt;Google ha un enorme inpatto in questo settore, con Gmail che è statala prima applicazione di livello ad usare ajax, i suoi servizi sono in corsa verso&lt;br /&gt;il totale rimpiazzo dei concorrenti desktop, il progetto GDocs è il più ambizioso a mio parere.&lt;br /&gt;Questi software innovativi ci mostrano che è perfettamente fattibile produrre con software web e che vantaggi come la sicurezza(backup, virus), obiquità e condivisione dei dati sono killer feature che fanno dimenticare l'inperfetta integrazione con l'os sottostante.&lt;br /&gt;ovviamente esistono ancora aree applicative in cui la tecnologia web non è ben armata e provabilmente non lo ssarà nemmeno mai,&lt;br /&gt;penso alla grafica 2D e 3D.&lt;br /&gt;Per quanto riguarda i gestionali classici, quelli sviluppati con visualbasic6 per intenderci o peggio con interfaccia a caratteri ncourses, la loro ora è arrivata: non c'è più nessuna ragione tecnologica per preferire una soluzione client a una totalmente web, anzi la soluzione web risulterà più semplice da sviluppare, mantenere e aggiornare, in una parola più economica.&lt;br /&gt;La sicurezza di basarsi su standard mondiali e non sul capriccio di un monopolista assicurano l'affidabilità dell'investimento nel lungo termine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-35305839317795194?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/35305839317795194/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=35305839317795194' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/35305839317795194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/35305839317795194'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/il-futuro-e-il-passato.html' title='il futuro e il passato'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-3781009382022404501</id><published>2007-09-24T15:31:00.000+02:00</published><updated>2007-09-24T15:37:54.937+02:00</updated><title type='text'>new (old) javascript</title><content type='html'>&lt;a href="http://www.whitebeam.org/"&gt;http://www.whitebeam.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;un progetto che sembra sulla carta, una buona idea: usare sul server javascript al posto di php o altro attraverso qualcosa che averei preferito chiamassero mod_javascript.&lt;br /&gt;sulla carta.&lt;br /&gt;in realtà js è probabilmente poco dotato per risolvere i problemi tipici di gestione del server e il suo modello a oggetti mi lascia un po' perplesso.&lt;br /&gt;dipende dall'implementazione: se si rivela abbastanza facile da integrare, può avere successo, altrimenti diverrà presto un'altro progetto fallito.&lt;br /&gt;staremo a vedere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-3781009382022404501?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/3781009382022404501/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=3781009382022404501' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3781009382022404501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/3781009382022404501'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/new-old-javascript.html' title='new (old) javascript'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-7470724868655497869</id><published>2007-09-22T19:46:00.000+02:00</published><updated>2007-09-22T19:50:26.985+02:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;librerie javascript a confronto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dojo&lt;/span&gt;&lt;br /&gt;una libreria vetusta, la più  anziana del lotto, enciclopedica, sconfinata e lenta.&lt;br /&gt;lenta da morire. contiene di tutto, ma i widget essenziali sono di qualità non eccezionale, lenti e pesanti.&lt;br /&gt;il motivo è un over-design e il voler inserire in libreria base un sacco di roba che non serve ne per costruire applicazioni ne tanto meno siti web, cito le strutture come dictionary, supporto charset non latini, algoritmi di crittazione.&lt;br /&gt;molto valido il sistema di package e inserimento dinamico delle dipendenze, un'idea ispirata da java di cui si trovano altre tracce nel suo design generale.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MochiKit&lt;/span&gt;&lt;br /&gt;lib interessante, lo scopo principale è immettere in js i costrutti tipici di python.&lt;br /&gt;Ma le manca qualcosa. al momento dell'esplosione della moda ajax era già pronta ed aveva sostanzialmente le stesse funzionalità che ha ora, ma non ha saputo attrarre sviluppatori, è rimasta la lib di turbogears ed è rimasta confinata al bacino d'utenza dei programmatori python, qualificati ma pochi.&lt;br /&gt;se pensiamo che manca completamente di widget, mi chiedo se non serva soltanto a dare confidenza con js a chi conosce meglio python. itertools ad esempio: che me ne faccio?&lt;br /&gt;per i miei scopi javascript ha già strumenti più che accettabili, pazzienza se python ne ha di migliori, emularli in js non ha senso per me.&lt;br /&gt;da tenere d'occhio comunque perchè contiene numerose idee apprezzabili, tra cui cito la gestione degli eventi.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;prototype/scriptaculous et al.&lt;/span&gt;&lt;br /&gt;sicuramente uno strumento valido, ha alcune lacune.&lt;br /&gt;al contrario di MK pur volendo somigliare a ruby si è imposta anche in altri ambiti, viene usata da molti altri framework a cominciare da symphony, ha una comunità numerosa attiva e preparata.&lt;br /&gt;come MK manca di componenti, quelli sviluppati dalla comunità sono molto frammentati, poco documentati e non seguono uno standard preciso, tuttavia esistono soluzioni molto buone basate su questa lib, eccezionale ad esempio la lib di effetti grafici mootools.&lt;br /&gt;discutibilissima la scelta progettuale di estedere degli oggetti nativi del linguaggio, a causa di questo altre librerie potrebbero non funzionare correttamente nello stesso progetto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;YUI&lt;/span&gt;&lt;br /&gt;la mia preferita, lib di base ampia ma senza inutili vezzi, non cerca di assomigliare a nessun altro linguaggio ma sfrutta al meglio ciò che di buono js sa offrire, perfettamente documentata, grande comunità, ottimi componenti, ha un difetto: manca la possibilità di interagire direttamente con il team di sviluppo, non c'è una sezione dei plugin contribuiti dalla comunità e non c'è accesso pubblico al repository svn;&lt;br /&gt;questo produce una comunità di sviluppo oligarchica e si riflette sul progetto abbassando la capacità della libreria di essere davvero innovativa.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EXT&lt;/span&gt;&lt;br /&gt;inizialmente nata come una collezione privata di widget per YUI, si è trasformata in una libreria di componenti esteticamente bellissimi, basati sia su yui che su prototype e jquery.&lt;br /&gt;il suo sviluppatore è ovviamente un programmatore eccezionale, ma sulla capacità della comunità aggregatasi attorno al suo carisma di essere innovativa sul lungo periodo non sono in grado di giurare.&lt;br /&gt;a mio modo di vedere è la libreria più stupefacente in circolazione per applicazioni web che rivaleggino con app descktop, non è adatta a causa delle dimensioni notevoli a siti e piccoli progetti.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JQuery&lt;/span&gt;&lt;br /&gt;è la più giovane, ha il design che mi più mi convince ma anche una certa immaturità.&lt;br /&gt;si basa sulla catenazione, una tecnica che sfrutta js all'estreremo delle sue capacità sisntattiche.&lt;br /&gt;jq è ben documentata e supportata da una comunità attiva e positiva, resa stabile la libreria di base, ultraleggera rispetto alle concorrenti, gli sviluppatori guidati da john resing si stanno concentrndo sul fronte dei componenti e della divulgazione.&lt;br /&gt;date le dimensioni e le dimensioni del codice che produce e alla qualità degli effetti grafici(porting da mootools) è molto adatta a siti web di qualsiasi dimensione.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-7470724868655497869?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/7470724868655497869/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=7470724868655497869' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7470724868655497869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/7470724868655497869'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/librerie-javascript-confronto-dojo-una.html' title=''/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-4995679182958924130</id><published>2007-09-21T14:57:00.000+02:00</published><updated>2007-09-28T00:01:31.348+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web app'/><category scheme='http://www.blogger.com/atom/ns#' term='free services'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Google, miniera di servizi</title><content type='html'>&lt;span style="font-family:arial;"&gt;google mette a disposizione una serie di servizi gratuiti, che fanno molto comodo e costerebbero molto se si volesse fare da sè, mantenendo su un proprio server software equivalenti.&lt;br /&gt;ovviamente tutto ha un prezzo: usando google si subisce parecchia pubblicità.&lt;br /&gt;questi i servizi che utilizzo:&lt;br /&gt;&lt;br /&gt;ovviamente il motore di ricerca&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::https://www.google.com/accounts/ManageAccount" href="https://www.google.com/accounts/ManageAccount"&gt;https://www.google.com&lt;/a&gt;&lt;br /&gt;gmail, molto comodo avere la mail sempre a portata di mano&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://mail.google.com/mail/" href="http://mail.google.com/mail/"&gt;http://mail.google.com/mail/&lt;/a&gt;&lt;br /&gt;il calendario, io che non mi ricordo mai un tubo... peccato non averlo sul telefono&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://www.google.com/calendar/render?pli=1" href="http://www.google.com/calendar/render?pli=1"&gt;http://www.google.com/calendar/render?pli=1&lt;/a&gt;&lt;br /&gt;questo blog, vediamo se qualcuno è d'accordo con le cazzate che dico&lt;br /&gt;&lt;a href="http://devsmt.blogspot.com/"&gt;http://devsmt.blogspot.com/&lt;/a&gt;&lt;br /&gt;introduzione alle mie librerie pubbliche&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://devsmt.googlepages.com/" href="http://devsmt.googlepages.com/"&gt;http://devsmt.googlepages.com/&lt;/a&gt;&lt;br /&gt;qualche documento fa comodo averlo sul web&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://docs.google.com/" href="http://docs.google.com/"&gt;http://docs.google.com/&lt;/a&gt;&lt;br /&gt;sto provando il blocco note&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://www.google.com/notebook/#b=BDSCAQgoQpYqdvNIi" href="http://www.google.com/notebook/#b=BDSCAQgoQpYqdvNIi"&gt;http://www.google.com/notebook&lt;/a&gt;&lt;br /&gt;le news sono da testare&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://www.google.com/nwshp?hl=it" href="http://www.google.com/nwshp?hl=it"&gt;http://www.google.com/nwshp?hl=it&lt;/a&gt;&lt;br /&gt;le mie librerie opensource, poca roba per il momento&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://code.google.com/p/phpweasel/" href="http://code.google.com/p/phpweasel/"&gt;http://code.google.com/p/phpweasel/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;a title="blocked::http://code.google.com/p/js4php/" href="http://code.google.com/p/js4php/"&gt;http://code.google.com/p/js4php/&lt;/a&gt;&lt;br /&gt;analytics, potente strumento per verificare l'uso di informazioni sul web&lt;br /&gt;&lt;a href="https://www.google.com/analytics/"&gt;https://www.google.com/analytics/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-4995679182958924130?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/4995679182958924130/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=4995679182958924130' title='3 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/4995679182958924130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/4995679182958924130'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/google-miniera-di-servizi.html' title='Google, miniera di servizi'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1183964736443383907.post-910697696561625893</id><published>2007-09-21T11:16:00.001+02:00</published><updated>2007-09-24T15:52:13.540+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='italia'/><category scheme='http://www.blogger.com/atom/ns#' term='politica'/><category scheme='http://www.blogger.com/atom/ns#' term='grillo'/><title type='text'>Cosa ho voglia di dire al Ministro Mastella</title><content type='html'>"Lei è la massima carica della giustizia italiana, ha la responsabilità massima e il potere più ampio che sia concesso ad un cittadino: lei decide.&lt;br /&gt;lei ha dei precisi doveri nei nostri confronti, se lei non è in grado, molta gente muore o viene derubata, ed è sua precisa responsabilità, di chi se no? se non ci difende lei, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;sig&lt;/span&gt;. ministro, chi lo può fare?&lt;br /&gt;I cittadini per la maggior parte non si fidano di lei, non esiste una ragione per liberare assassini e ladri, se mancano le carceri, costruitele, se ci sono degli innocenti, fate funzionare i tribunali.&lt;br /&gt;se non è capace di fare questo difficile lavoro, si tolga di mezzo, dimostrando coraggio almeno per una volta.&lt;br /&gt;Le auguro che uno dei suoi &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;indultati&lt;/span&gt; le venga a rubare in casa o le stupri un famigliare: le insegnerebbe la nostra paura e che non ci può essere un incapace a fare il ministro.&lt;br /&gt;buona giornata, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;sig&lt;/span&gt;. ministro"&lt;br /&gt;il sig. ministro non pubblicherà mai il mio commento al suo blog, e nemmeno quello di altri pare 40.000 al giorno che vanno ad insultarlo. a questo scopo un utente ha clonato il suddetto e pubblica tutti i commenti negativi all'operato del nostro dipendente, onorevole ministro clemente mastella, i commenti sono tantissimi e di una violenza inaudita, segno che l'italia la ama, sig. ministro.&lt;br /&gt;dateci un occhiata, una risata, li seppellirà.&lt;br /&gt;&lt;a href="http://dementemastella.blogspot.com/"&gt;http://dementemastella.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1183964736443383907-910697696561625893?l=devsmt.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devsmt.blogspot.com/feeds/910697696561625893/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1183964736443383907&amp;postID=910697696561625893' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/910697696561625893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1183964736443383907/posts/default/910697696561625893'/><link rel='alternate' type='text/html' href='http://devsmt.blogspot.com/2007/09/coso-ho-voglia-di-dire-al-ministro.html' title='Cosa ho voglia di dire al Ministro Mastella'/><author><name>devsmt</name><uri>http://www.blogger.com/profile/00307516763260873196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
