<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>www.jugpadova.it: Tag search</title>
    <link>http://www.jugpadova.it/articles/tag/search</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Java User Group [Padova]</description>
    <item>
      <title>Bug storico...</title>
      <description>&lt;p&gt;...presente nel &lt;span class="caps"&gt;JDK&lt;/span&gt;, e probabilmente nella maggior parte delle implementazioni di algoritmi con approccio &amp;#8220;divide et impera&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Quanti di noi non hanno mai scritto questa semplice e innocente riga di codice (con &lt;code&gt;low&lt;/code&gt; e &lt;code&gt;high&lt;/code&gt; di tipo &lt;code&gt;int&lt;/code&gt;)?&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;int mid = (low+high)/2;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Il problema è che la somma dei due interi può risultare in un overflow&amp;#8230;gosh&amp;#8230;&lt;/p&gt;


	&lt;p&gt;L&amp;#8217;implementazione corretta sarebbe qualcosa di simile a:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;int mid = low + ((high-low)/2);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Provate a cercare in qualunque libro di algoritmi e vedrete che anche i grandi sbagliano. Io ho guardato in &lt;a href="http://www.awprofessional.com/title/0201896850" title="Volume 3"&gt;&amp;#8216;The Art of Computer Programming&amp;#8217;&lt;/a&gt;), e anche l&amp;#8217;implementazione dell&amp;#8217;algoritmo di ricerca binaria di &lt;a href="http://www-cs-faculty.stanford.edu/~knuth/"&gt;Donald E. Knuth&lt;/a&gt; soffre dello stesso bug.&lt;/p&gt;


	&lt;p&gt;Per quanto riguarda il &lt;span class="caps"&gt;JDK&lt;/span&gt;, il bug si trova (almeno) nel metodo &lt;code&gt;binarySearch&lt;/code&gt; della classe &lt;code&gt;java.utils.Arrays&lt;/code&gt;. A me non è mai capitato, ma ve l&amp;#8217;immaginate la sorpresa (per non dire altro) di vedervi sollevare un ArrayIndexOutOfBoundsException da un metodo di quella classe?&lt;/p&gt;


	&lt;p&gt;L&amp;#8217;annuncio e la discussione del bug li fa lo stesso autore della classe, Josh Bloch, in questo &lt;a href="http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html"&gt;blog&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Fri, 16 Jun 2006 07:03:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7f51b64c-cec4-4722-a2f4-027b31a9f1fd</guid>
      <author>Lucio Benfante</author>
      <link>http://www.jugpadova.it/articles/2006/06/16/bug-storico</link>
      <category>Programmazione</category>
      <category>bug</category>
      <category>binary</category>
      <category>search</category>
      <category>overflow</category>
      <trackback:ping>http://www.jugpadova.it/articles/trackback/923</trackback:ping>
    </item>
    <item>
      <title>JUGMeeting #25 - &amp;quot;Aop e Motori di Ricerca&amp;quot;</title>
      <description>&lt;p&gt;&lt;strong&gt;Quando:&lt;/strong&gt; Sabato 18 Febbraio 2006 dalle 09:00 alle 12:30&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Dove:&lt;/strong&gt; aula De &amp;#8211; piano terra al &lt;span class="caps"&gt;DEI&lt;/span&gt;,
via Gradenigo 6/B (ingresso studenti)
Padova&lt;/p&gt;


	&lt;table style="border:1px dashed black;"&gt;
		&lt;tr style="background:#D1CFCF;"&gt;
			&lt;td colspan="2"&gt;&lt;strong&gt;Programma:&lt;/strong&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#ddd;"&gt;
			&lt;td&gt;09:00&lt;/td&gt;
			&lt;td&gt;Accoglienza&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;09:15&lt;/td&gt;
			&lt;td&gt; &lt;em&gt;&amp;#8220;Algoritmi di analisi dei link per motori di ricerca&amp;#8221;&lt;/em&gt;  a cura del prof. Luca Pretto (&lt;a href="/files/JUG2006Website-Pretto.pdf"&gt;slides&lt;/a&gt;)&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#ddd;"&gt;
			&lt;td&gt;10:15&lt;/td&gt;
			&lt;td&gt;D&amp;#38;R &amp;#8211; Domande e Risposte&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;10:30&lt;/td&gt;
			&lt;td&gt;Pausa caffe&amp;#8217; &amp;#8211; Java Break&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#ddd;"&gt;
			&lt;td&gt;10:45&lt;/td&gt;
			&lt;td&gt; &lt;em&gt;&amp;#8220;Programmazione Orientata agli Aspetti e AspectJ&amp;#8221;&lt;/em&gt; a cura di Mariano Ceccato (&lt;a href="/files/ceccato_AOP.pdf"&gt;slides&lt;/a&gt;)&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;11:45&lt;/td&gt;
			&lt;td&gt;D&amp;#38;R &amp;#8211; Domande e Risposte&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#ddd;"&gt;
			&lt;td&gt;12:00&lt;/td&gt;
			&lt;td&gt; &lt;em&gt;&amp;#8220;Eventi e Proposte&amp;#8221;&lt;/em&gt; a cura di tutto il JUGPadova&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#DAD6D6;"&gt;
			&lt;td&gt;12:30&lt;/td&gt;
			&lt;td&gt;Fine meeting 25&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background:#ddd;"&gt;
			&lt;td&gt;13:00&lt;/td&gt;
			&lt;td&gt;Pizza con chi vuole fermarsi con noi ;-)&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;




	&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Ingresso sempre libero!&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Il &lt;span class="caps"&gt;PDF&lt;/span&gt; della locandina lo trovate a &lt;a href="http://www.dei.unipd.it/~ieeesb/JUG_Vol/JUGmeeting25.pdf"&gt;questo indirizzo&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Vi aspettiamo!!!&lt;/strong&gt;&lt;/p&gt;
</description>
      <pubDate>Sat, 18 Feb 2006 15:44:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:9f89ce9f-191a-45c1-86b3-c2c22cbb316a</guid>
      <author>Andrea Nasato</author>
      <link>http://www.jugpadova.it/articles/2006/02/18/meeting-25</link>
      <category>Meeting</category>
      <category>AOP</category>
      <category>google</category>
      <category>search</category>
    </item>
  </channel>
</rss>
