<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Simone Tellini &#187; Software Development</title>
	<atom:link href="http://tellini.info/category/9-Software-Development/feed/" rel="self" type="application/rss+xml" />
	<link>http://tellini.info</link>
	<description>To strive, to seek, to find, and not to yield</description>
	<lastBuildDate>Mon, 06 Feb 2012 10:42:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Effortless, template-based dynamic tables</title>
		<link>http://tellini.info/2012/01/effortless-template-based-dynamic-tables/</link>
		<comments>http://tellini.info/2012/01/effortless-template-based-dynamic-tables/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 19:23:21 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">http://tellini.info/?p=150</guid>
		<description><![CDATA[When you develop web applications for a living, sooner or later you&#8217;ll need to allow the user to edit collections of data. For instance: Some option&#8230; Field 1 Options To create something like this, I&#8217;ve been using a very rough &#8230; <a href="http://tellini.info/2012/01/effortless-template-based-dynamic-tables/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" language="javascript" src="http://files.tellini.info/dynamicTable.js"></script>When you develop web applications for a living, sooner or later you&#8217;ll need to allow the user to edit collections of data. For instance: </p>
<table id="example1" class="dynamicTable">
<tbody>
<tr class="template">
<td>
<input type="text" name="test[#{rowId}]" /></td>
<td>
<input id="test#{rowId}" type="checkbox" name="cbTest[#{rowId}]" />
            <label for="test#{rowId}">Some option&#8230;</label>
        </td>
<td>
<input class="deleteRow" type="button" value="Del" /></td>
</tr>
<tr>
<th>Field 1</th>
<th>Options</th>
<th></th>
</tr>
</tbody>
</table>
<input class="example1 addRow" type="button" value="Add" />
<p>To create something like this, I&#8217;ve been using a very rough script that simply replicated a hidden template row when required for several years. Eventually, I couldn&#8217;t stand its uglyness anymore and I decided to polish it a bit <img src='http://tellini.info/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I&#8217;ve based my new script on <a href="http://prototypejs.org" target="_blank">prototype</a>, thus keeping it short and elegant.</p>
<p>Let&#8217;s see the full code required to create the table above:</p>
<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">&lt;!-- Ideally, this should go in &lt;head&gt; --&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">language</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://files.tellini.info/dynamicTable.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/table.html"><span style="color: #000000; font-weight: bold;">table</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;example1&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;dynamicTable&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;template&quot;</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;test[#{rowId}]&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;test#{rowId}&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;checkbox&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;cbTest[#{rowId}]&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">label</span></a> <span style="color: #000066;">for</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;test#{rowId}&quot;</span>&gt;</span>Some option...<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/label.html"><span style="color: #000000; font-weight: bold;">label</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;deleteRow&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Del&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/td.html"><span style="color: #000000; font-weight: bold;">td</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span>Field 1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span>Options<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/th.html"><span style="color: #000000; font-weight: bold;">th</span></a>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/tr.html"><span style="color: #000000; font-weight: bold;">tr</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/table.html"><span style="color: #000000; font-weight: bold;">table</span></a>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">input</span></a> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;example1 addRow&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Add&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Simple, isn&#8217;t it?</p>
<p>Here&#8217;s what you need to know:</p>
<ol>
<li>the script automatically sets up all the tables with a <strong>dynamicTable</strong> class</li>
<li>the <strong>template</strong> row is automatically hidden</li>
<li>the ID of the table can be repeated as a class together with the <strong>addRow</strong> class to link the button to the table. If the button is already inside the table, you might just use the addRow class.</li>
<li>the <strong>deleteRow</strong> class marks the button used to remove its containing row</li>
<li><strong>#{rowId}</strong> in the template will be replaced with an unique ID for every row that gets added. You&#8217;ll have to use sequential IDs starting from 0 for rows you add before serving the page to the client.</li>
</ol>
<p>Exploiting prototype <strong>Class</strong>es, you can subclass <strong>DynamicTable</strong> and override <strong>addRow()</strong> or <strong>deleteRow()</strong> to perform whatever action you need on freshly created rows or when the user removes one.</p>
<p>By the way, you can <a href="http://files.tellini.info/dynamicTable.js">find the code here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2012/01/effortless-template-based-dynamic-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Sprites: CSS sprites, the easy way</title>
		<link>http://tellini.info/2011/08/quick-sprites-css-sprites-the-easy-way/</link>
		<comments>http://tellini.info/2011/08/quick-sprites-css-sprites-the-easy-way/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 17:02:52 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[sprites]]></category>
		<guid isPermaLink="false">http://tellini.info/?p=144</guid>
		<description><![CDATA[The use of CSS sprites is a valuable techique for any web developer who wishes to optimize his web site, making it both faster for users and better ranked by search engines. However, it usually involves more work to pack &#8230; <a href="http://tellini.info/2011/08/quick-sprites-css-sprites-the-easy-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The use of CSS sprites is a valuable techique for any web developer who wishes to optimize his web site, making it both faster for users and better ranked by search engines.</p>
<p>However, it usually involves more work to pack the images in a single sprite sheet and to update them when the site evolves.</p>
<p>If you never used this technique for this reason, now you won&#8217;t have any excuse left: <a href="http://www.tellini.org/mac/quicksprites/" target="_blank">Quick Sprites</a> makes creating and maintaining sprite sheets a breeze <img src='http://tellini.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>You can see how easy is to work with Quick Sprites in this short video:</p>
<div align="center" style="margin-top: 1em">
<iframe width="480" height="390" src="http://www.youtube-nocookie.com/embed/7oLIOjMwbxI?rel=0" frameborder="0" allowfullscreen></iframe>
</div>
<p>Currently available in the <a href="http://itunes.apple.com/app/quick-sprites/id457516296" title="Quick Sprites on the Mac App Store">Mac App Store</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2011/08/quick-sprites-css-sprites-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Lion, the Witch and the Xcode</title>
		<link>http://tellini.info/2011/07/the-lion-the-witch-and-the-xcode/</link>
		<comments>http://tellini.info/2011/07/the-lion-the-witch-and-the-xcode/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 20:03:40 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tips'n'Tricks]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[xcode]]></category>
		<guid isPermaLink="false">http://tellini.info/?p=141</guid>
		<description><![CDATA[&#8230;or maybe it was &#8220;The Lion, the Bug and the Xcode&#8220;? Anyway, if you just upgraded your system to Lion, then downloaded the new Xcode from the App Store, tried to run it just to get welcomed by a sparkling &#8230; <a href="http://tellini.info/2011/07/the-lion-the-witch-and-the-xcode/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8230;or maybe it was &#8220;<em>The Lion, the Bug and the Xcode</em>&#8220;?</p>
<p>Anyway, if you just upgraded your system to <a href="http://www.apple.com/macosx/" target="_blank">Lion</a>, then downloaded the new <a href="http://itunes.apple.com/us/app/xcode/id448457090?mt=12" target="_blank">Xcode</a> from the App Store, tried to run it just to get welcomed by a sparkling crash along the lines of</p>
<blockquote><p>UNCAUGHT EXCEPTION (NSInternalInconsistencyException): Couldn&#8217;t load plug-in &#8216;com.apple.dt.IDE.IDEiPhoneSupport&#8217; while firing fault for extension &#8216;Xcode.Device.iPhoneSimulator&#8217;</p></blockquote>
<p>Don&#8217;t panic!</p>
<p>Simply go to your Applications folder and re-run the Xcode installer. The second time it&#8217;ll get it right, or at least it did for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2011/07/the-lion-the-witch-and-the-xcode/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Using SQLi Import with Oracle</title>
		<link>http://tellini.info/2010/12/using-sqli-import-with-oracle/</link>
		<comments>http://tellini.info/2010/12/using-sqli-import-with-oracle/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 11:33:38 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[eZ Publish]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">http://tellini.info/?p=134</guid>
		<description><![CDATA[SQLi Import is a nice eZ Publish extension that allows you to develop data importers in a quick and elegant way. Sadly, it comes only with MySQL support, but it takes only a minute to make it work with Oracle &#8230; <a href="http://tellini.info/2010/12/using-sqli-import-with-oracle/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://projects.ez.no/sqliimport">SQLi Import</a> is a nice <a href="http://ez.no/">eZ Publish</a> extension that allows you to develop data importers in a quick and elegant way.</p>
<p>Sadly, it comes only with MySQL support, but it takes only a minute to make it work with Oracle too. So here&#8217;s the SQL code I&#8217;ve used to make it happy <img src='http://tellini.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>(tested with SQLi Import 1.2.0 and eZ Publish 4.4)</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br /></div></td><td><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> sqliimport_scheduled <span style="color: #66cc66;">&#40;</span><br />
&nbsp; id <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; handler <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
&nbsp; label <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">255</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
&nbsp; options_serialized <span style="color: #993333; font-weight: bold;">CLOB</span><span style="color: #66cc66;">,</span><br />
&nbsp; frequency <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">30</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">NEXT</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; user_id <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">,</span><br />
&nbsp; requested_time <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">,</span><br />
&nbsp; is_active <span style="color: #993333; font-weight: bold;">SMALLINT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; manual_frequency <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> sqliimport_item <span style="color: #66cc66;">&#40;</span><br />
&nbsp; id <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; handler <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><br />
&nbsp; options_serialized <span style="color: #993333; font-weight: bold;">CLOB</span><span style="color: #66cc66;">,</span><br />
&nbsp; user_id <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">,</span><br />
&nbsp; requested_time <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">STATUS</span> <span style="color: #993333; font-weight: bold;">SMALLINT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; percentage_int <span style="color: #993333; font-weight: bold;">SMALLINT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">TYPE</span> <span style="color: #993333; font-weight: bold;">SMALLINT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><br />
&nbsp; progression_notes <span style="color: #993333; font-weight: bold;">CLOB</span><span style="color: #66cc66;">,</span><br />
&nbsp; process_time <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">,</span><br />
&nbsp; scheduled_id <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span>;<br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">SEQUENCE</span> se_sqliimport_item;<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">SEQUENCE</span> se_sqliimport_scheduled;<br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> <span style="color: #993333; font-weight: bold;">TRIGGER</span> tr_sqliimport_scheduled_id<br />
<span style="color: #993333; font-weight: bold;">BEFORE</span> <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">ON</span> sqliimport_scheduled<br />
<span style="color: #993333; font-weight: bold;">FOR</span> EACH <span style="color: #993333; font-weight: bold;">ROW</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #993333; font-weight: bold;">NEW</span><span style="color: #66cc66;">.</span>ID <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> se_sqliimport_scheduled<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">NEXTVAL</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">INTO</span> :<span style="color: #993333; font-weight: bold;">NEW</span><span style="color: #66cc66;">.</span>ID<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">FROM</span> dual;<br />
<span style="color: #993333; font-weight: bold;">END</span>;<br />
<span style="color: #66cc66;">/</span><br />
<br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> <span style="color: #993333; font-weight: bold;">TRIGGER</span> tr_sqliimport_item_id<br />
<span style="color: #993333; font-weight: bold;">BEFORE</span> <span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">ON</span> sqliimport_item<br />
<span style="color: #993333; font-weight: bold;">FOR</span> EACH <span style="color: #993333; font-weight: bold;">ROW</span><br />
<span style="color: #993333; font-weight: bold;">WHEN</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #993333; font-weight: bold;">NEW</span><span style="color: #66cc66;">.</span>ID <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SELECT</span> se_sqliimport_item<span style="color: #66cc66;">.</span><span style="color: #993333; font-weight: bold;">NEXTVAL</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">INTO</span> :<span style="color: #993333; font-weight: bold;">NEW</span><span style="color: #66cc66;">.</span>ID<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">FROM</span> dual;<br />
<span style="color: #993333; font-weight: bold;">END</span>;<br />
<span style="color: #66cc66;">/</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2010/12/using-sqli-import-with-oracle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I do hate MySQL</title>
		<link>http://tellini.info/2009/06/i-do-hate-mysql/</link>
		<comments>http://tellini.info/2009/06/i-do-hate-mysql/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 08:25:43 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[software development]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=90</guid>
		<description><![CDATA[I can&#8217;t stand it, really. I&#8217;m using it at the moment only because I&#8217;m forced to. I can&#8217;t help considering it as a toy DB, especially comparing it to PostgreSQL or SQL Server or any other serious RDBMS. The last &#8230; <a href="http://tellini.info/2009/06/i-do-hate-mysql/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t stand it, really.</p>
<p>I&#8217;m using it at the moment only because I&#8217;m forced to. I can&#8217;t help considering it as a toy DB, especially comparing it to PostgreSQL or SQL Server or any other <em>serious</em> RDBMS.</p>
<p>The last thing that hit my nerve is <a href="http://bugs.mysql.com/bug.php?id=7831">this bug</a>. Come on&#8230; can&#8217;t it even handle foreign keys in a decent way?</p>
<p>And I&#8217;m trying not to think that it allows you to define a table with foreign keys and <a href="http://bugs.mysql.com/bug.php?id=17943">silently ignore them</a>.</p>
<p>&lt;/rant&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2009/06/i-do-hate-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FeedbackReporter and Mantis integration</title>
		<link>http://tellini.info/2009/05/feedbackreporter-and-mantis-integration/</link>
		<comments>http://tellini.info/2009/05/feedbackreporter-and-mantis-integration/#comments</comments>
		<pubDate>Sat, 02 May 2009 12:23:30 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[mantis]]></category>
		<category><![CDATA[software development]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=86</guid>
		<description><![CDATA[I&#8217;ve just written a small script to store reports generated by FeedbackReporter on a Mantis system. It should come handy to keep track of your application crashes (crash? uh? My apps never crash! ) You can download it here. Simply &#8230; <a href="http://tellini.info/2009/05/feedbackreporter-and-mantis-integration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just written a small script to store reports generated by <a href="http://vafer.org/projects/feedbackreporter/" title="FeedbackReporter">FeedbackReporter</a> on a <a href="http://www.mantisbt.org/" title="Mantis Bug Tracker">Mantis</a> system.</p>
<p>It should come handy to keep track of your application crashes (crash? uh? My apps never crash! <img src='http://tellini.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>
<p>You can download it <a href="http://files.tellini.info/FRToMantis.zip" title="FeedbackReporter to Mantis">here</a>.</p>
<p>Simply extract it on your webserver and edit <strong>config.php</strong> to adjust your settings.</p>
<p>It can work in two ways: if you&#8217;re installing it on the same server running mantis, set <strong>MANTIS_LOCAL</strong> to true and <strong>MANTIS_PATH</strong> to the root of your mantis installation.</p>
<p>Otherwise, you can even install it on a different server and let it communicate with your mantis via SOAP. In order to do this, set <strong>MANTIS_LOCAL</strong> to false and edit <strong>MANTIS_URL</strong>. This setup needs the SOAP extension of PHP5, so make sure it&#8217;s available.</p>
<p>Feedback is welcome, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2009/05/feedbackreporter-and-mantis-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connection without a listening socket?</title>
		<link>http://tellini.info/2009/02/connection-without-a-listening-socket/</link>
		<comments>http://tellini.info/2009/02/connection-without-a-listening-socket/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 11:25:00 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=83</guid>
		<description><![CDATA[I&#8217;ve encountered a network problem that left me a bit puzzled. Usually, when you want to setup a TCP connection between two sockets (let&#8217;s called them S1 and S2), you need to perform these steps on the server: create S1 &#8230; <a href="http://tellini.info/2009/02/connection-without-a-listening-socket/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve encountered a network problem that left me a bit puzzled.</p>
<p>Usually, when you want to setup a TCP connection between two sockets (let&#8217;s called them S1 and S2), you need to perform these steps on the server:</p>
<ul>
<li> create S1</li>
<li> bind S1 to a port (or to a port/address, if you need to)</li>
<li> set S1 to listen for connections</li>
</ul>
<p>on the client:</p>
<ul>
<li> create S2</li>
<li> tell S2 to connect to S1 </li>
</ul>
<p>and finally, the server receives the connection attempt and accepts it to remove it from the backlog of the listening socket.</p>
<p>Well, apparently there&#8217;s another way, which I suspect few know about.</p>
<p>Check out this simple application:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br /></div></td><td><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Net</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Net.Sockets</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System.Threading</span><span style="color: #008000;">;</span><br />
<br />
<span style="color: #0600FF; font-weight: bold;">namespace</span> SocketTest<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #6666cc; font-weight: bold;">class</span> Program<br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> IPEndPoint &nbsp; a <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> IPEndPoint<span style="color: #008000;">&#40;</span> IPAddress<span style="color: #008000;">.</span><span style="color: #0000FF;">Loopback</span>, <span style="color: #FF0000;">18000</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #0600FF; font-weight: bold;">static</span> IPEndPoint &nbsp; b <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> IPEndPoint<span style="color: #008000;">&#40;</span> IPAddress<span style="color: #008000;">.</span><span style="color: #0000FF;">Loopback</span>, <span style="color: #FF0000;">18001</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> Main<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> args<span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread&nbsp; threadA <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Thread<span style="color: #008000;">&#40;</span> ThreadA <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread&nbsp; threadB <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Thread<span style="color: #008000;">&#40;</span> ThreadB <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; threadB<span style="color: #008000;">.</span><span style="color: #0000FF;">Start</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; threadA<span style="color: #008000;">.</span><span style="color: #0000FF;">Start</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> ThreadA<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">for</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">;;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Socket sock <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Socket<span style="color: #008000;">&#40;</span> a<span style="color: #008000;">.</span><span style="color: #0000FF;">AddressFamily</span>, SocketType<span style="color: #008000;">.</span><span style="color: #0000FF;">Stream</span>, ProtocolType<span style="color: #008000;">.</span><span style="color: #0000FF;">Tcp</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sock<span style="color: #008000;">.</span><span style="color: #0000FF;">Bind</span><span style="color: #008000;">&#40;</span> b <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sock<span style="color: #008000;">.</span><span style="color: #0000FF;">Connect</span><span style="color: #008000;">&#40;</span> a <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span> <span style="color: #666666;">&quot;Connected from &quot;</span> <span style="color: #008000;">+</span> b <span style="color: #008000;">+</span> <span style="color: #666666;">&quot; to &quot;</span> <span style="color: #008000;">+</span> a <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span> Timeout<span style="color: #008000;">.</span><span style="color: #0000FF;">Infinite</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#123;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> ThreadB<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">for</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">;;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">try</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Socket sock <span style="color: #008000;">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Socket<span style="color: #008000;">&#40;</span> b<span style="color: #008000;">.</span><span style="color: #0000FF;">AddressFamily</span>, SocketType<span style="color: #008000;">.</span><span style="color: #0000FF;">Stream</span>, ProtocolType<span style="color: #008000;">.</span><span style="color: #0000FF;">Tcp</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sock<span style="color: #008000;">.</span><span style="color: #0000FF;">Bind</span><span style="color: #008000;">&#40;</span> a <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sock<span style="color: #008000;">.</span><span style="color: #0000FF;">Connect</span><span style="color: #008000;">&#40;</span> b <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console<span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span><span style="color: #008000;">&#40;</span> <span style="color: #666666;">&quot;Connected from &quot;</span> <span style="color: #008000;">+</span> a <span style="color: #008000;">+</span> <span style="color: #666666;">&quot; to &quot;</span> <span style="color: #008000;">+</span> b <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread<span style="color: #008000;">.</span><span style="color: #0000FF;">Sleep</span><span style="color: #008000;">&#40;</span> Timeout<span style="color: #008000;">.</span><span style="color: #0000FF;">Infinite</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">catch</span> <span style="color: #008000;">&#123;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>Let&#8217;s see what happens compiling and running it:</p>
<p><!-- s9ymdb:11 --><img class="serendipity_image_center" width="552" height="68" style="border: 0px; padding-left: 5px; padding-right: 5px;" src="/blog/uploads/Screenshots/ConnectionWithoutListening.png" alt="" /></p>
<p>Yes, you get a connection between the two sockets. It&#8217;s something I was never told about and I would have never expected to see. But it&#8217;s correct as per <a href="http://www.ibiblio.org/pub/docs/rfc/rfc793.txt">RFC 793</a>.</p>
<p>I&#8217;ve found out about it when a couple of clients on a test system started connecting between themselves, while they were supposed to connect to 2 different servers on localhost. Both clients were periodically trying to connect to their server, which was down. They were creating a new socket for every attempt, without binding it, thus Windows&#8217; TCP/IP stack assigned a sequential port number to them. Eventually, the two processes reached the configuration required for the &#8220;Simultaneous Connection Synchronization&#8221; as described in the RFC.</p>
<p>Interesting. I guess you live and you learn.</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2009/02/connection-without-a-listening-socket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quote of the Day</title>
		<link>http://tellini.info/2008/08/quote-of-the-day-8/</link>
		<comments>http://tellini.info/2008/08/quote-of-the-day-8/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 20:53:09 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Quotes]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[laziness]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[software development]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=76</guid>
		<description><![CDATA[[...] a good programmer cultivates the virtue of laziness. (But not just any laziness: you must be aggressively, proactively lazy!) &#8211; Chris Pine, dealing with the DRY rule]]></description>
			<content:encoded><![CDATA[<blockquote><p>[...] a good programmer cultivates the virtue of laziness. (But not just any laziness: you must be aggressively, proactively lazy!)</p></blockquote>
<p><em>&#8211; Chris Pine</em>, dealing with the <a href="http://blogs.msdn.com/steverowe/archive/2008/05/15/design-principle-don-t-repeat-yourself.aspx">DRY rule</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2008/08/quote-of-the-day-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quote of the Day</title>
		<link>http://tellini.info/2008/07/quote-of-the-day-7/</link>
		<comments>http://tellini.info/2008/07/quote-of-the-day-7/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 10:15:14 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Quotes]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[idiots]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[universe]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=73</guid>
		<description><![CDATA[Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. &#8211; Richard Cook, read on FSM]]></description>
			<content:encoded><![CDATA[<blockquote><p>Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.</p></blockquote>
<p><em>&#8211; Richard Cook, read on <a href="http://www.freesoftwaremagazine.com/columns/dont_compare_gnu_linux_windows_or_macos_they_are_not_same_game">FSM</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2008/07/quote-of-the-day-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quote of the Day</title>
		<link>http://tellini.info/2008/07/quote-of-the-day-6/</link>
		<comments>http://tellini.info/2008/07/quote-of-the-day-6/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 19:21:04 +0000</pubDate>
		<dc:creator>Simone</dc:creator>
				<category><![CDATA[Quotes]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[software development]]></category>
		<guid isPermaLink="false">http://wp.cr.tellini.org/?p=72</guid>
		<description><![CDATA[[...] as we all know, premature optimization is the root of all evil. &#8211; from a cocoa-dev email amen!]]></description>
			<content:encoded><![CDATA[<blockquote><p>[...] as we all know, premature optimization is the root of all evil.</p></blockquote>
<p><em>&#8211; from a <a href="http://lists.apple.com/mailman/listinfo/cocoa-dev/">cocoa-dev</a> email</em></p>
<p>amen!</p>
]]></content:encoded>
			<wfw:commentRss>http://tellini.info/2008/07/quote-of-the-day-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

