<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for Geoff on...</title>
	<atom:link href="http://www.geoffon.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geoffon.com</link>
	<description>technology</description>
	<pubDate>Sat, 05 Jul 2008 12:35:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Comment on Is SQLAlchemy Ready For Production? by Laurentiu Badea</title>
		<link>http://www.geoffon.com/2008/05/28/is-sqlalchemy-ready-for-production/#comment-78</link>
		<dc:creator>Laurentiu Badea</dc:creator>
		<pubDate>Fri, 06 Jun 2008 17:29:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/?p=23#comment-78</guid>
		<description>Re: non-unique IDs with sharding

When the shards are hosted on different server instances, you can use the "auto-increment-increment" and "auto-increment-offset" MySQL settings (from the replication options group) to get them to generate unique IDs across shards. All instances should use the same increment value (larger than the number of servers) but a different offset.</description>
		<content:encoded><![CDATA[<p>Re: non-unique IDs with sharding</p>
<p>When the shards are hosted on different server instances, you can use the &#8220;auto-increment-increment&#8221; and &#8220;auto-increment-offset&#8221; MySQL settings (from the replication options group) to get them to generate unique IDs across shards. All instances should use the same increment value (larger than the number of servers) but a different offset.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Is SQLAlchemy Ready For Production? by mike bayer</title>
		<link>http://www.geoffon.com/2008/05/28/is-sqlalchemy-ready-for-production/#comment-36</link>
		<dc:creator>mike bayer</dc:creator>
		<pubDate>Thu, 29 May 2008 03:04:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/?p=23#comment-36</guid>
		<description>A few points:

"Forcing Indices" - MySQL's emphasis on "FORCE" and other indexing hints is largely a MySQL-specific practice to make up for their extremely crappy optimizer.  Using an industrial-strength database like Postgres or Oracle removes most of the need for "hints" (as an example, I used Oracle at many gigs for years in fairly high-volume situations and never had to use an Oracle-specific optimizing hint).

"Commit ORM Objects" - Patently false.  The "dirty" list is a list of objects with *potential* changes in them, those which have had some action that marked them as "modified".  The docstring for the descriptor states this, that it's an "optimistic" check only.  You'll notice that objects/columns that don't have *actual* changes do not get flushed, even if they had this marking.  To detect a net change in an instance before a flush, use the session.is_modified() method (also mentioned in that same docstring).  The "dirty" list generally relies upon a fast "modified" flag without digging in to the more expensive comparison which is_modified() performs.   But overall, no unnecessary UPDATE statements are issued.    

Note that if you are dealing with "pickled" data via PickleType, the comparison is done by default using the result of pickle.dumps(), which can produce different results for essentially the same datastructure, such as a dict, which may be the source of your observation.  The comparison method for PickleType can be customized using the "comparator" argument to PickleType() - if you're pickling dicts and lists, operator.eq is a good choice for this argument.

"Sharding" - the sharding API is mimiced from Hibernate.  Sharding assumes you are going to immediately lose most relational advantages if data spans more than one database, and is usually implemented using distinct sessions (i.e., using the shard API creates a false sense of abstraction that's really not there).  We do have one user who has been working on some of the "aggregating" concepts but I think its never going to be possible for this feature to work "transparently"....hence the sharding module is probably going to remain an outlier unless contributors really want to make something huge out of it. 

"Server Side Cursors" - for Postgres we support a "server side cursors" mode, but this is used for performance reasons; psycopg2 by default buffers everything on the client side and using this option forces it to use named cursors (and also jumps through many hoops to make the experience transparent).   For actual server-side cursor operations, you can get at raw cursors with any database by just calling connection.connection.cursor().</description>
		<content:encoded><![CDATA[<p>A few points:</p>
<p>&#8220;Forcing Indices&#8221; - MySQL&#8217;s emphasis on &#8220;FORCE&#8221; and other indexing hints is largely a MySQL-specific practice to make up for their extremely crappy optimizer.  Using an industrial-strength database like Postgres or Oracle removes most of the need for &#8220;hints&#8221; (as an example, I used Oracle at many gigs for years in fairly high-volume situations and never had to use an Oracle-specific optimizing hint).</p>
<p>&#8220;Commit ORM Objects&#8221; - Patently false.  The &#8220;dirty&#8221; list is a list of objects with *potential* changes in them, those which have had some action that marked them as &#8220;modified&#8221;.  The docstring for the descriptor states this, that it&#8217;s an &#8220;optimistic&#8221; check only.  You&#8217;ll notice that objects/columns that don&#8217;t have *actual* changes do not get flushed, even if they had this marking.  To detect a net change in an instance before a flush, use the session.is_modified() method (also mentioned in that same docstring).  The &#8220;dirty&#8221; list generally relies upon a fast &#8220;modified&#8221; flag without digging in to the more expensive comparison which is_modified() performs.   But overall, no unnecessary UPDATE statements are issued.    </p>
<p>Note that if you are dealing with &#8220;pickled&#8221; data via PickleType, the comparison is done by default using the result of pickle.dumps(), which can produce different results for essentially the same datastructure, such as a dict, which may be the source of your observation.  The comparison method for PickleType can be customized using the &#8220;comparator&#8221; argument to PickleType() - if you&#8217;re pickling dicts and lists, operator.eq is a good choice for this argument.</p>
<p>&#8220;Sharding&#8221; - the sharding API is mimiced from Hibernate.  Sharding assumes you are going to immediately lose most relational advantages if data spans more than one database, and is usually implemented using distinct sessions (i.e., using the shard API creates a false sense of abstraction that&#8217;s really not there).  We do have one user who has been working on some of the &#8220;aggregating&#8221; concepts but I think its never going to be possible for this feature to work &#8220;transparently&#8221;&#8230;.hence the sharding module is probably going to remain an outlier unless contributors really want to make something huge out of it. </p>
<p>&#8220;Server Side Cursors&#8221; - for Postgres we support a &#8220;server side cursors&#8221; mode, but this is used for performance reasons; psycopg2 by default buffers everything on the client side and using this option forces it to use named cursors (and also jumps through many hoops to make the experience transparent).   For actual server-side cursor operations, you can get at raw cursors with any database by just calling connection.connection.cursor().</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C# Browser Helper Object Event Handling by C# BHO Tutorial &#124; Geoff on...</title>
		<link>http://www.geoffon.com/2007/12/21/c-browser-helper-object-event-handling/#comment-33</link>
		<dc:creator>C# BHO Tutorial &#124; Geoff on...</dc:creator>
		<pubDate>Tue, 27 May 2008 23:12:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/?p=3#comment-33</guid>
		<description>[...] get a fair bit of traffic from people looking for help with C# and BHOs (my event handling post). There isn&#8217;t much information about and the only beginners tutorial went missing a few [...]</description>
		<content:encoded><![CDATA[<p>[...] get a fair bit of traffic from people looking for help with C# and BHOs (my event handling post). There isn&#8217;t much information about and the only beginners tutorial went missing a few [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Facebook Chat Firefox Plugin by Geoff</title>
		<link>http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-26</link>
		<dc:creator>Geoff</dc:creator>
		<pubDate>Wed, 21 May 2008 22:11:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-26</guid>
		<description>@eric: Don't worry. Facebook have announced that they will be releasing a Jabber version. 

@Valery: Thanks for that, I'll update it soon!</description>
		<content:encoded><![CDATA[<p>@eric: Don&#8217;t worry. Facebook have announced that they will be releasing a Jabber version. </p>
<p>@Valery: Thanks for that, I&#8217;ll update it soon!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Facebook Chat Firefox Plugin by Valery Dachev</title>
		<link>http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-21</link>
		<dc:creator>Valery Dachev</dc:creator>
		<pubDate>Sun, 18 May 2008 10:21:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-21</guid>
		<description>Geoff, I just wanted to let you know your add-on is marked as incompatible with the just-released Firefox 3 rc 1 although there seem not to be any significant changes in it.</description>
		<content:encoded><![CDATA[<p>Geoff, I just wanted to let you know your add-on is marked as incompatible with the just-released Firefox 3 rc 1 although there seem not to be any significant changes in it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Facebook Chat Firefox Plugin by eric</title>
		<link>http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-20</link>
		<dc:creator>eric</dc:creator>
		<pubDate>Sun, 18 May 2008 08:14:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-20</guid>
		<description>it's great, but please do the fix so i don't have to keep firefox open!</description>
		<content:encoded><![CDATA[<p>it&#8217;s great, but please do the fix so i don&#8217;t have to keep firefox open!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Facebook Chat Firefox Plugin by Rachel</title>
		<link>http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-17</link>
		<dc:creator>Rachel</dc:creator>
		<pubDate>Sat, 03 May 2008 20:42:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/2008/04/23/facebook-chat-firefox-plugin/#comment-17</guid>
		<description>Works for me!  That's brilliant, thanks :)</description>
		<content:encoded><![CDATA[<p>Works for me!  That&#8217;s brilliant, thanks <img src='http://www.geoffon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C# Browser Helper Object Event Handling by Geoff</title>
		<link>http://www.geoffon.com/2007/12/21/c-browser-helper-object-event-handling/#comment-7</link>
		<dc:creator>Geoff</dc:creator>
		<pubDate>Thu, 10 Apr 2008 23:24:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/?p=3#comment-7</guid>
		<description>That's right, SubmitHandler is what gets called when onclick fires. It will take (in this case) a form as a parameter. Handler(this.Form) on line 14 is SubmitHandler(this.Form) as we have set it with FormHandler.Handler  = new DHTMLFormEvent(SubmitHandler).</description>
		<content:encoded><![CDATA[<p>That&#8217;s right, SubmitHandler is what gets called when onclick fires. It will take (in this case) a form as a parameter. Handler(this.Form) on line 14 is SubmitHandler(this.Form) as we have set it with FormHandler.Handler  = new DHTMLFormEvent(SubmitHandler).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C# Browser Helper Object Event Handling by roy</title>
		<link>http://www.geoffon.com/2007/12/21/c-browser-helper-object-event-handling/#comment-5</link>
		<dc:creator>roy</dc:creator>
		<pubDate>Sat, 05 Apr 2008 23:40:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/?p=3#comment-5</guid>
		<description>Hi, im having a bit of a hard time getting this to work, and id love some help.
first of all what is the 'SubmitHandler'? is this the function i want to be called when the event fires? 
i have a feeling that the answer is no.

thanks,
Roy.</description>
		<content:encoded><![CDATA[<p>Hi, im having a bit of a hard time getting this to work, and id love some help.<br />
first of all what is the &#8216;SubmitHandler&#8217;? is this the function i want to be called when the event fires?<br />
i have a feeling that the answer is no.</p>
<p>thanks,<br />
Roy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Handling International Dialling Codes (in Python) by Tony Morgan</title>
		<link>http://www.geoffon.com/2008/04/01/handling-international-dialling-codes-in-python/#comment-3</link>
		<dc:creator>Tony Morgan</dc:creator>
		<pubDate>Wed, 02 Apr 2008 00:45:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.geoffon.com/2008/04/01/handling-international-dialling-codes-in-python/#comment-3</guid>
		<description>idcII = dict(map(lambda (_, iCode, ndd) : (iCode, ndd), internationalDiallingCodes))
def getNDD(ic): idcII.get(ic)

Can't sleep ;) See you in the morning, T</description>
		<content:encoded><![CDATA[<p>idcII = dict(map(lambda (_, iCode, ndd) : (iCode, ndd), internationalDiallingCodes))<br />
def getNDD(ic): idcII.get(ic)</p>
<p>Can&#8217;t sleep <img src='http://www.geoffon.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> See you in the morning, T</p>
]]></content:encoded>
	</item>
</channel>
</rss>
