<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming on Michele Bologna</title>
    <link>https://www.michelebologna.net/tags/programming/</link>
    <description>Recent content in Programming on Michele Bologna</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 31 Jan 2017 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.michelebologna.net/tags/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Checkstyle and DetailAST</title>
      <link>https://www.michelebologna.net/2017/checkstyle-and-detailast/</link>
      <pubDate>Tue, 31 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2017/checkstyle-and-detailast/</guid>
      <description>&lt;p&gt;If you are running &lt;a href=&#34;http://checkstyle.sourceforge.net/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Checkstyle&lt;/a&gt; (for checking Java style) and you are stuck with this error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;checkstyle:&#xA;[checkstyle] Running Checkstyle 6.11.2 on 2324 files&#xA;[checkstyle] Can&amp;#39;t find/access AST Node typecom.puppycrawl.tools.checkstyle.api.DetailAST&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;which is a cryptic error with no whatsoever Google result on how to fix it, stand back: I have the solution!&lt;/p&gt;</description>
    </item>
    <item>
      <title>ZeroTurnaround&#39;s Java Tools and Technologies Landscape Report 2016</title>
      <link>https://www.michelebologna.net/2016/zeroturnarounds-java-tools-and-technologies-landscape-report-2016/</link>
      <pubDate>Sat, 16 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2016/zeroturnarounds-java-tools-and-technologies-landscape-report-2016/</guid>
      <description>&lt;p&gt;As of every year, ZeroTurnaround released the &lt;a href=&#34;http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-2016/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;yearly report of their survey about Java and Java-related technologies among professional developers&lt;/strong&gt;&lt;/a&gt;. I find this report very interesting, and I usually compare (or &lt;em&gt;discover&lt;/em&gt;) existing technology solutions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iOS Bootcamp al TAG di Bergamo</title>
      <link>https://www.michelebologna.net/2013/ios-bootcamp-al-tag-di-bergamo/</link>
      <pubDate>Thu, 28 Mar 2013 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2013/ios-bootcamp-al-tag-di-bergamo/</guid>
      <description>&lt;p&gt;Ieri sera ho partecipato all&amp;rsquo;incontro &amp;ldquo;&lt;strong&gt;iOS Bootcamp&lt;/strong&gt;&amp;rdquo; organizzato dalla community di &lt;em&gt;&lt;a href=&#34;https://pragmamark.org/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;#pragma mark&lt;/a&gt;&lt;/em&gt; presso il &lt;a href=&#34;https://talentgarden.org/en-it/campus/italy/bergamo-ubi-banca/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;TAG&lt;/em&gt; di Bergamo&lt;/a&gt;. Non era la prima volta che frequentavo il &lt;em&gt;TAG&lt;/em&gt;: un luogo dove incontrare giovani startupper e persone interessanti con cui discutere di tecnologia ed innovazione in un ambiente stimolante e creativo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linguaggio C, seconda edizione (K&amp;#038;R): la mia recensione</title>
      <link>https://www.michelebologna.net/2011/linguaggio-c-seconda-edizione-kr-la-mia-recensione/</link>
      <pubDate>Tue, 27 Dec 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/linguaggio-c-seconda-edizione-kr-la-mia-recensione/</guid>
      <description>&lt;p&gt;In pochi giorni ho letto una pietra miliare dei libri della programmazione, il famoso K&amp;amp;R (dagli autori Kernighan &amp;amp; Ritchie); si tratta del libro più famoso per quanto riguarda la programmazione C.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PHP5 e MySQL, la guida: la mia recensione</title>
      <link>https://www.michelebologna.net/2011/php5-e-mysql-la-guida-la-mia-recensione/</link>
      <pubDate>Wed, 24 Aug 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/php5-e-mysql-la-guida-la-mia-recensione/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://www.michelebologna.net/images/2011/08/php_mysql_guida.jpg&#34; alt=&#34;php_mysql_guida&#34; title=&#34;php_mysql_guida.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Per ripassare le mie nozioni di PHP5, ho deciso di leggere il libro di McGraw-Hill, &amp;ldquo;&lt;strong&gt;PHP5 e MySQL, la guida&lt;/strong&gt;&amp;rdquo;, composto da circa 1100 (!) pagine. Perché proprio PHP? Peché, PHP è un linguaggio di successo, sebbene non venga presentato nei migliori dei modi (&amp;ldquo;è un linguaggio per principianti&amp;rdquo;). Ecco almeno 4 ragioni per cui conoscere PHP è un plus:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python: scriviamo un HTTPS downloader simile a wget (con urllib2, optparse e getpass)</title>
      <link>https://www.michelebologna.net/2011/python-scriviamo-un-https-downloader-simile-a-wget-con-urllib2-optparse-e-getpass/</link>
      <pubDate>Thu, 02 Jun 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/python-scriviamo-un-https-downloader-simile-a-wget-con-urllib2-optparse-e-getpass/</guid>
      <description>&lt;p&gt;Per ragioni di semplicità di utilizzo e immediatezza (e anche per &lt;em&gt;imparare qualcosa di nuovo)&lt;/em&gt;, la settimana scorsa ho dovuto scrivere un downloader da linea di comando simile a GNU &lt;a href=&#34;https://www.gnu.org/software/wget/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;wget&lt;/a&gt;, ma con alcuni requisiti personalizzati:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Misurare la quantità di codice di un progetto</title>
      <link>https://www.michelebologna.net/2011/misurare-la-quantita-di-codice-di-un-progetto/</link>
      <pubDate>Tue, 26 Apr 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/misurare-la-quantita-di-codice-di-un-progetto/</guid>
      <description>&lt;p&gt;In questo post affronto un argomento abbastanza delicato: come si misura la &lt;em&gt;quantità di codice&lt;/em&gt; di un progetto?&lt;/p&gt;&#xA;&lt;p&gt;La soluzione più immediata è quella di contare le linee di codice (&lt;em&gt;Source Lines of Code&lt;/em&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/Source_lines_of_code&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;SLOC&lt;/strong&gt;&lt;/a&gt;). Un esempio che ho personalmente applicato per contare le righe di codice di un progetto Java a partire dalla root del progetto, usando gli strumenti che Linux ci mette a disposizione: &lt;code&gt;find . -type f -name *.java | xargs wc -l&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>QR Codes e la Google Chart API</title>
      <link>https://www.michelebologna.net/2011/qr-codes-e-la-google-chart-api/</link>
      <pubDate>Fri, 22 Apr 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/qr-codes-e-la-google-chart-api/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://www.michelebologna.net/materiale/qr/about.png&#34; alt=&#34;&#34; title=&#34;about-qr&#34;&gt;Piccola intro: i QR Codes sono analoghi ai &amp;ldquo;normali&amp;rdquo; codici a barre, ma rappresentano un&amp;rsquo;evoluzione: possono contenere più dati (a parità di dimensione) e possono essere letti da una serie più ampia di dispositivi, come gli smartphone (su iOS segnalo l&amp;rsquo;ottima e gratuita &lt;a href=&#34;https://apps.apple.com/us/app/qr-reader-for-iphone/id368494609&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;QR Reader for iPhone&lt;/a&gt;). Dopo aver scaricato un lettore di QR Codes per il vostro smartphone, fate una fotografia all&amp;rsquo;oggetto qui accanto: il browser del vostro telefonino vi porterà nella pagina più visitata di questo sito&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python e il metodo setdefault</title>
      <link>https://www.michelebologna.net/2011/python-e-il-metodo-setdefault/</link>
      <pubDate>Fri, 25 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/python-e-il-metodo-setdefault/</guid>
      <description>&lt;p&gt;Note to &lt;em&gt;self&lt;/em&gt; (pun intended): questo post rappresenta una sorta di appunto mentale per ricordarmi il funzionamento di &lt;code&gt;setdefault&lt;/code&gt; in Python, visto che puntualmente mi trovo ad utilizzarlo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;setdefault&lt;/code&gt; è utilizzato sui dizionari (&lt;code&gt;dict&lt;/code&gt;) e permette di impostare una chiave di default durante una set. Mi spiego meglio con un esempio:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eclipse: impostare un template per l&#39;inserimento di un Logger log4j</title>
      <link>https://www.michelebologna.net/2011/eclipse-impostare-un-template-per-linserimento-di-un-logger-log4j/</link>
      <pubDate>Tue, 22 Feb 2011 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2011/eclipse-impostare-un-template-per-linserimento-di-un-logger-log4j/</guid>
      <description>&lt;p&gt;Mi capita spesso, in Eclipse, di inserire il codice per abilitare il logging di una classe tramite log4j:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;private static Logger logger = Logger.getLogger(Klass.class);&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Utilizzano i templates, una funzionalità di Eclipse, possiamo evitare di riscrivere tutte le volte questa semplice istruzione. Per impostare un template, in Eclipse, è sufficiente recarsi su: Window &amp;gt; Preferences &amp;gt; Java &amp;gt; Editor &amp;gt; Templates e creiamo un nuovo template.&lt;/p&gt;</description>
    </item>
    <item>
      <title>UML Distilled, guida rapida al linguaggio di modellazione standard (terza edizione): la mia recensione</title>
      <link>https://www.michelebologna.net/2010/uml-distilled-guida-rapida-al-linguaggio-di-modellazione-standard-terza-edizione-la-mia-recensione/</link>
      <pubDate>Mon, 06 Dec 2010 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2010/uml-distilled-guida-rapida-al-linguaggio-di-modellazione-standard-terza-edizione-la-mia-recensione/</guid>
      <description>&lt;p&gt;Per rispolverare la mia preparazione in &lt;em&gt;ingegneria del software&lt;/em&gt;, ho deciso di leggere la &lt;em&gt;terza&lt;/em&gt; edizione di &lt;strong&gt;UML Disti****lled&lt;/strong&gt;, scritta dall&amp;rsquo;autorevole &lt;a href=&#34;https://en.wikipedia.org/wiki/Martin_Fowler&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Martin Fowler&lt;/a&gt;; in passato ho letto la seconda edizione, ma i libri di Fowler sono una lettura sempre piacevole e sopratutto utile. &lt;img src=&#34;https://www.michelebologna.net/images/2010/12/IMG_0015.jpg&#34; alt=&#34;&#34; title=&#34;UML_Distilled_terza_edizione&#34;&gt; Il libro è condensato (solo 155 pagine) ma pregno di argomenti e tecniche utili. Innanzitutto, specifico subito che il libro si basa sulla specifica &lt;a href=&#34;https://en.wikipedia.org/wiki/Unified_Modeling_Language#UML_2.x&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;UML2&lt;/strong&gt;&lt;/a&gt; e in particolare presenta una descrizione chiara e concisa sulle tecniche fondamentali e utili a chi si occupa di progettazione del software. Le tecniche sono presentate in modo semplice e descrittivo, corredati da un paio di esempi per ogni tecnica. Inoltre, si illustrano i punti di forza e debolezza di ogni tecnica. Oltretutto, per ogni tecnica è presente una sezione che spiega quando è utile utilizzare una determinata tecnica piuttosto che un&amp;rsquo;altra. Ad esempio, i diagrammi di package sono utili nella progettazione di sistemi di grande scala per documentare le dipendenze tra i componenti più importanti. Al termine di ogni capitolo, Fowler introduce un repertorio di esercizi corredati di soluzione. A mio avviso, le tecniche più utili tra quelle presentate sono:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tecniche di progettazione agile con Java (design pattern, refactoring, test): la recensione</title>
      <link>https://www.michelebologna.net/2009/tecniche-di-progettazione-agile-con-java-design-pattern-refactoring-test-la-recensione/</link>
      <pubDate>Fri, 17 Apr 2009 00:00:00 +0000</pubDate>
      <guid>https://www.michelebologna.net/2009/tecniche-di-progettazione-agile-con-java-design-pattern-refactoring-test-la-recensione/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.michelebologna.net/images/2009/04/progettazioneagile.jpg&#34; &gt;&lt;img src=&#34;https://www.michelebologna.net/images/2009/04/progettazioneagile-thumb.jpg&#34; alt=&#34;Tecniche di Progettazione Agile con Java&#34; title=&#34;Tecniche di Progettazione Agile con Java&#34;&gt;&lt;/a&gt;In questi giorni ho letto un libro di &lt;a href=&#34;http://www.supsi.ch/home/strumenti/rubrica/dettaglio.6051.backLink.b328b222-c480-498b-a984-68fe0271f716.html&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Sandro Pedrazzini&lt;/a&gt; intitolato “Tecniche di progettazione agile con Java: design pattern, refactoring, test” (Ed. Tecniche nuove, 2006 – 29.90 €).&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
