<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Project 2061 Techlog</title>
	<atom:link href="http://techlog.p2061.org/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://techlog.p2061.org</link>
	<description>Blogging from Project 2061 technology group</description>
	<lastBuildDate>Mon, 06 Jul 2009 14:57:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on The Mechanical Turk Knows All by BrianS</title>
		<link>http://techlog.p2061.org/2008/11/21/the-mechanical-turk-knows-all/comment-page-1/#comment-102</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Mon, 06 Jul 2009 14:57:58 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/?p=91#comment-102</guid>
		<description>One other thing to keep in mind is that paying well attracts a lot of workers. We try to pay what would equate to a decent hourly wage. A good summary of how to get decent results from Mechanical Turk can be found here: http://www.smartsheet.com/blog/brent-frei/getting-good-smartsourcing-results-amazon-mechanical-turk-best-practices</description>
		<content:encoded><![CDATA[<p>One other thing to keep in mind is that paying well attracts a lot of workers. We try to pay what would equate to a decent hourly wage. A good summary of how to get decent results from Mechanical Turk can be found here: <a href="http://www.smartsheet.com/blog/brent-frei/getting-good-smartsourcing-results-amazon-mechanical-turk-best-practices" rel="nofollow">http://www.smartsheet.com/blog/brent-frei/getting-good-smartsourcing-results-amazon-mechanical-turk-best-practices</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Authentication &amp; Authorization with Scaffolding by BrianS</title>
		<link>http://techlog.p2061.org/2009/04/17/authentication-authorization-with-scaffolding/comment-page-1/#comment-101</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Fri, 17 Apr 2009 18:47:22 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/?p=220#comment-101</guid>
		<description>If you&#039;re using a version of CakePHP prior to &lt;a href=&quot;https://trac.cakephp.org/ticket/6062&quot; rel=&quot;nofollow&quot;&gt;1.2.1.8004&lt;/a&gt; you&#039;ll also need to follow the following instructions:

Set up your users controller so that it will hash passwords (this will not be done automatically like it would if you were not using scaffolding). Add the following callback method to your users controller:
&lt;pre lang=&quot;PHP&quot;&gt;function _beforeScaffold($action) {
  if (($action == &#039;edit&#039; &#124;&#124; $action == &#039;add&#039;) &amp;&amp; isset($this-&gt;data)) {
    $this-&gt;data[&#039;User&#039;][&#039;password&#039;] = AuthComponent::password($this-&gt;data[&#039;User&#039;][&#039;password&#039;]);
  }
  return TRUE;
}&lt;/pre&gt;
The above function is called every time a scaffolded action is executed. The password hashing will only be performed if the add or edit actions are &lt;code&gt;POST&lt;/code&gt;ed.</description>
		<content:encoded><![CDATA[<p>If you&#8217;re using a version of CakePHP prior to <a href="https://trac.cakephp.org/ticket/6062" rel="nofollow">1.2.1.8004</a> you&#8217;ll also need to follow the following instructions:</p>
<p>Set up your users controller so that it will hash passwords (this will not be done automatically like it would if you were not using scaffolding). Add the following callback method to your users controller:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> _beforeScaffold<span style="color: #009900;">&#40;</span><span style="color: #000088;">$action</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$action</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'edit'</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$action</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'add'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> AuthComponent<span style="color: #339933;">::</span><span style="color: #004000;">password</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The above function is called every time a scaffolded action is executed. The password hashing will only be performed if the add or edit actions are <code>POST</code>ed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Best Practices for Setting MySQL Server Runtime Parameters by BrianS</title>
		<link>http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/comment-page-1/#comment-100</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Mon, 23 Feb 2009 18:03:23 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/#comment-100</guid>
		<description>Update after 164 days uptime:

After today&#039;s update I won&#039;t be providing further review. I think, for the most part, the decisions I made regarding the server settings have worked out well. There are a few settings that can still be tweaked, but I don&#039;t think any further discussion is necessary at this point. I will, however, make any notes on any extraordinary changes in server performance. I will also report on the effects of any query optimizations.

The thread cache is still at a good level. Current stats say 20 maximum concurrent connections with 18 cached and 100% hit rate.

I think the table cache may actually be at an acceptable level. The number of opened tables is still rising (currently at 870), but not as quickly as it appeared in the last review. It may still be worthwhile to increase the cache slightly, but I&#039;m not as concerned as I was initially.

Temporary tables still appears to be problematic. The percentage of temporary tables written to disk continues to rise (now at around 17.5%). Some of this is likely due to lack of query optimization, meaning a code review needs to be performed. That will have to wait until I have a chance to outline best practices for code development. In the meantime I&#039;m going to raise the values of tmp_table_size/max_heap_table_size from 32M to 48M.

The query cache performance is doing a little better than in the previous update with a 7:1 hit-to-insert ratio. We&#039;re still seeing a large number of prunes (35K) and free blocks (908). Still, these numbers aren&#039;t increasing horribly. This is still likely a problem of leaving out some queries, plus we should set up a cron job to flush the cache on a regular basis in order to keep the number of free blocks low.

The key buffer is fully used, but the key_reads/key_read_requests is still at an acceptable level (.001). It might be prudent to increase the buffer size, but I&#039;ll wait until next review to see how the buffer is holding up.

The read handlers are still alarmingly high. But again, until we spend some time optimizing queries I don&#039;t expect</description>
		<content:encoded><![CDATA[<p>Update after 164 days uptime:</p>
<p>After today&#8217;s update I won&#8217;t be providing further review. I think, for the most part, the decisions I made regarding the server settings have worked out well. There are a few settings that can still be tweaked, but I don&#8217;t think any further discussion is necessary at this point. I will, however, make any notes on any extraordinary changes in server performance. I will also report on the effects of any query optimizations.</p>
<p>The thread cache is still at a good level. Current stats say 20 maximum concurrent connections with 18 cached and 100% hit rate.</p>
<p>I think the table cache may actually be at an acceptable level. The number of opened tables is still rising (currently at 870), but not as quickly as it appeared in the last review. It may still be worthwhile to increase the cache slightly, but I&#8217;m not as concerned as I was initially.</p>
<p>Temporary tables still appears to be problematic. The percentage of temporary tables written to disk continues to rise (now at around 17.5%). Some of this is likely due to lack of query optimization, meaning a code review needs to be performed. That will have to wait until I have a chance to outline best practices for code development. In the meantime I&#8217;m going to raise the values of tmp_table_size/max_heap_table_size from 32M to 48M.</p>
<p>The query cache performance is doing a little better than in the previous update with a 7:1 hit-to-insert ratio. We&#8217;re still seeing a large number of prunes (35K) and free blocks (908). Still, these numbers aren&#8217;t increasing horribly. This is still likely a problem of leaving out some queries, plus we should set up a cron job to flush the cache on a regular basis in order to keep the number of free blocks low.</p>
<p>The key buffer is fully used, but the key_reads/key_read_requests is still at an acceptable level (.001). It might be prudent to increase the buffer size, but I&#8217;ll wait until next review to see how the buffer is holding up.</p>
<p>The read handlers are still alarmingly high. But again, until we spend some time optimizing queries I don&#8217;t expect</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Best Practices for Setting MySQL Server Runtime Parameters by BrianS</title>
		<link>http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/comment-page-1/#comment-15</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Tue, 14 Oct 2008 19:19:19 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/#comment-15</guid>
		<description>32-day report:
A lot of the numbers appear to be worse than I was expecting given the early update. However, I won&#039;t be making any changes until the three-month update; mainly because the import of the pilot test data may be having a detrimental affect on the number reported.

Cached threads is still pushing upward (currently at 20 created; 17 cached, 3 in use), but I&#039;m going to leave this at 25 for now. This is something that won&#039;t really hurt us if we go over, so I&#039;ll wait until we get closer to the setting.

Opened tables is still rising, despite a table cache of 256. Right now it&#039;s at 556. I think it may be worthwhile to increase the table cache, but we&#039;ll see how things look at the next review.

The number of temporary tables being written to disk is a little over 10% of the total number of temporary tables. This isn&#039;t as good as the numbers seen in the previous update so it&#039;s worth watching. If the numbers don&#039;t improve the value of tmp_table_size/max_head_table_size should be increased.

The query cache is not performing quite as well as in the previous update. It&#039;s at roughly a 4:1 hit-to-insert ratio (1,652k/427k). Plus, the value in lowmem_prunes is high (19K) and the number of free blocks is also high (368). I&#039;m going to flush the cache and see if the numbers improve. There&#039;s no need to increase the size of the cache, though, since it&#039;s not being fully used. These numbers may have more to do with caching of queries that would best be left out, which is something that can be controlled when issuing a query.

The key buffer still appears to be at an appropriate value. However, the number of blocks used is starting to push against the size of the buffer. This should probably be increased on the next update.

The sort buffer appears to be acceptable.

The read handlers are still fairly high, but queries have not yet been optimized so this is something that may see improvement without further changes to the server settings.</description>
		<content:encoded><![CDATA[<p>32-day report:<br />
A lot of the numbers appear to be worse than I was expecting given the early update. However, I won&#8217;t be making any changes until the three-month update; mainly because the import of the pilot test data may be having a detrimental affect on the number reported.</p>
<p>Cached threads is still pushing upward (currently at 20 created; 17 cached, 3 in use), but I&#8217;m going to leave this at 25 for now. This is something that won&#8217;t really hurt us if we go over, so I&#8217;ll wait until we get closer to the setting.</p>
<p>Opened tables is still rising, despite a table cache of 256. Right now it&#8217;s at 556. I think it may be worthwhile to increase the table cache, but we&#8217;ll see how things look at the next review.</p>
<p>The number of temporary tables being written to disk is a little over 10% of the total number of temporary tables. This isn&#8217;t as good as the numbers seen in the previous update so it&#8217;s worth watching. If the numbers don&#8217;t improve the value of tmp_table_size/max_head_table_size should be increased.</p>
<p>The query cache is not performing quite as well as in the previous update. It&#8217;s at roughly a 4:1 hit-to-insert ratio (1,652k/427k). Plus, the value in lowmem_prunes is high (19K) and the number of free blocks is also high (368). I&#8217;m going to flush the cache and see if the numbers improve. There&#8217;s no need to increase the size of the cache, though, since it&#8217;s not being fully used. These numbers may have more to do with caching of queries that would best be left out, which is something that can be controlled when issuing a query.</p>
<p>The key buffer still appears to be at an appropriate value. However, the number of blocks used is starting to push against the size of the buffer. This should probably be increased on the next update.</p>
<p>The sort buffer appears to be acceptable.</p>
<p>The read handlers are still fairly high, but queries have not yet been optimized so this is something that may see improvement without further changes to the server settings.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Using Subversion for Application Development and Deployment by BrianS</title>
		<link>http://techlog.p2061.org/2008/05/21/using-svn-for-application-deployment/comment-page-1/#comment-14</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Fri, 10 Oct 2008 20:52:05 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/?p=65#comment-14</guid>
		<description>I forgot to mention that since we&#039;re using Dreamweaver there&#039;s a lot of files in the development directory that we don&#039;t really want in the repository. Luckily subversion includes a configuration option that specifies files that should be ignored when performing operations.

The following entry in /etc/subversion/config will configure the files/directories that subversion should ignore:

[miscellany]
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store _baks* _mm* _notes* *.lck *.LCK *.bak *.BAK dwsync.xml</description>
		<content:encoded><![CDATA[<p>I forgot to mention that since we&#8217;re using Dreamweaver there&#8217;s a lot of files in the development directory that we don&#8217;t really want in the repository. Luckily subversion includes a configuration option that specifies files that should be ignored when performing operations.</p>
<p>The following entry in /etc/subversion/config will configure the files/directories that subversion should ignore:</p>
<p>[miscellany]<br />
global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store _baks* _mm* _notes* *.lck *.LCK *.bak *.BAK dwsync.xml</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Items Utility: Piloting Data Entry Updates by BrianS</title>
		<link>http://techlog.p2061.org/2008/06/18/items-utility-piloting-data-entry-updates/comment-page-1/#comment-10</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Thu, 19 Jun 2008 19:03:58 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/?p=67#comment-10</guid>
		<description>A quick look at the database after a few days of data entry and I was beginning to think may have to reconsider the table structure. Data for 1,030 test items had been entered (packet+student+item). That results in 19,570 rows in the table weighing in at 61.2MB.

For comparison, the previous table structure contains 60,864 rows and weighs in at 13.8 MB. Since a row in the old table correlates with all the data for a test item it was significantly more efficient in terms of storage. The new table, in order to accommodate the same number of items and growing at the current rate, would take up 60 times as much space.

After some research I found that that the trouble has to do with the format of the row. The current format is static (fixed) length, but for variable-length data a dynamic row is better suited for space considerations. Most of our tables use the dynamic format. Updating this table to dynamic cuts the size of the table down by a factor of 100.

There are some drawbacks to dynamic rows, however. I&#039;ll be adding some documentation regarding this setting to the upcoming post &quot;Optimizing MySQL Table Structure and Queries.&quot; In the meantime you can find out more information about this setting from the MySQL Reference Manual. See &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/myisam-table-formats.html.&quot; rel=&quot;nofollow&quot;&gt;13.1.3. MyISAM Table Storage Formats&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>A quick look at the database after a few days of data entry and I was beginning to think may have to reconsider the table structure. Data for 1,030 test items had been entered (packet+student+item). That results in 19,570 rows in the table weighing in at 61.2MB.</p>
<p>For comparison, the previous table structure contains 60,864 rows and weighs in at 13.8 MB. Since a row in the old table correlates with all the data for a test item it was significantly more efficient in terms of storage. The new table, in order to accommodate the same number of items and growing at the current rate, would take up 60 times as much space.</p>
<p>After some research I found that that the trouble has to do with the format of the row. The current format is static (fixed) length, but for variable-length data a dynamic row is better suited for space considerations. Most of our tables use the dynamic format. Updating this table to dynamic cuts the size of the table down by a factor of 100.</p>
<p>There are some drawbacks to dynamic rows, however. I&#8217;ll be adding some documentation regarding this setting to the upcoming post &#8220;Optimizing MySQL Table Structure and Queries.&#8221; In the meantime you can find out more information about this setting from the MySQL Reference Manual. See <a href="http://dev.mysql.com/doc/refman/5.0/en/myisam-table-formats.html." rel="nofollow">13.1.3. MyISAM Table Storage Formats</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Best Practices for Setting MySQL Server Runtime Parameters by BrianS</title>
		<link>http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/comment-page-1/#comment-9</link>
		<dc:creator>BrianS</dc:creator>
		<pubDate>Tue, 27 May 2008 21:06:39 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2008/05/07/optimizing-mysql-server-runtime-parameters/#comment-9</guid>
		<description>11-day report:
The settings I&#039;ve implemented definitely seem to be helping with database performance.

My assumption of the max number of concurrent connections appears to be fairly close. So far we&#039;ve hit a concurrent connection max of 16. I&#039;m not sure how MySQL determines when to cache a thread, but our thread cache is only at 8. Probably related to thread age, but something that should be researched.

I&#039;m going to lower the maximum connections to 50 (from the default of 100). We&#039;re not coming anywhere near 100 and since the purpose of this setting is to prevent resource depletion it&#039;s better to play safe than sorry. At some point in the future we should calculate the maximum per-connection resource usage and adjust this setting based on that information.

The query cache seems to be performing well with what appears to be a high hit/insert ratio (1,179K/31K). It has plenty of free memory after 11 days of usage and no low memory prunes. It does show some modest fragmentation as indicated by qcache_free_blocks having a value of 47.

The key buffer setting also appears to be acceptable. Our key_reads/key_read_requests is still significantly below the .01 ceiling recommended by MySQL.

For the number of temporary tables created (148K) we&#039;re not looking too bad on the number that had to be written to disk (1,840).

The table cache appears to be doing well, though still not being used fully. Again something that might relate to pruning by MySQL based on age, but I&#039;ll need to research this more as well.

The one number that is disconcerting in the stats is handler_read_rnd_next with a value of 538M. The documentation states that a high value here probably indicates that tables indexes are not optimal for the queries being run. This is also bourne out by the values of select_full_join and select_scan. We should spend some time analyzing our queries to determine where optimizations can be made.

Next update at around one month.</description>
		<content:encoded><![CDATA[<p>11-day report:<br />
The settings I&#8217;ve implemented definitely seem to be helping with database performance.</p>
<p>My assumption of the max number of concurrent connections appears to be fairly close. So far we&#8217;ve hit a concurrent connection max of 16. I&#8217;m not sure how MySQL determines when to cache a thread, but our thread cache is only at 8. Probably related to thread age, but something that should be researched.</p>
<p>I&#8217;m going to lower the maximum connections to 50 (from the default of 100). We&#8217;re not coming anywhere near 100 and since the purpose of this setting is to prevent resource depletion it&#8217;s better to play safe than sorry. At some point in the future we should calculate the maximum per-connection resource usage and adjust this setting based on that information.</p>
<p>The query cache seems to be performing well with what appears to be a high hit/insert ratio (1,179K/31K). It has plenty of free memory after 11 days of usage and no low memory prunes. It does show some modest fragmentation as indicated by qcache_free_blocks having a value of 47.</p>
<p>The key buffer setting also appears to be acceptable. Our key_reads/key_read_requests is still significantly below the .01 ceiling recommended by MySQL.</p>
<p>For the number of temporary tables created (148K) we&#8217;re not looking too bad on the number that had to be written to disk (1,840).</p>
<p>The table cache appears to be doing well, though still not being used fully. Again something that might relate to pruning by MySQL based on age, but I&#8217;ll need to research this more as well.</p>
<p>The one number that is disconcerting in the stats is handler_read_rnd_next with a value of 538M. The documentation states that a high value here probably indicates that tables indexes are not optimal for the queries being run. This is also bourne out by the values of select_full_join and select_scan. We should spend some time analyzing our queries to determine where optimizations can be made.</p>
<p>Next update at around one month.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Optimizing MySQL by Project 2061 Techlog &#187; Optimizing MySQL Server Runtime Parameters</title>
		<link>http://techlog.p2061.org/2007/07/13/optimizing-mysql/comment-page-1/#comment-8</link>
		<dc:creator>Project 2061 Techlog &#187; Optimizing MySQL Server Runtime Parameters</dc:creator>
		<pubDate>Wed, 07 May 2008 18:56:36 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2007/07/13/optimizing-mysql/#comment-8</guid>
		<description>[...] Also, see my earlier post on optimization. [...]</description>
		<content:encoded><![CDATA[<p>[...] Also, see my earlier post on optimization. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on BOL Text utility updates by bwalker</title>
		<link>http://techlog.p2061.org/2008/03/26/bol-text-utility-updates/comment-page-1/#comment-7</link>
		<dc:creator>bwalker</dc:creator>
		<pubDate>Thu, 27 Mar 2008 15:34:55 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2008/03/26/bol-text-utility-updates/#comment-7</guid>
		<description>After releasing yesterday&#039;s update I realized the utility did not support content changes for Chapters 13-16 although this content is stored in the same table. I have remedied this by making all of the menus dynamic and asynchronously updated.  In the process I have added 2 new tables bol_chapters and bol_sections whose purpose is self-explanatory.  The band menu options are collected from the bol_text table based on selected chapter and section.</description>
		<content:encoded><![CDATA[<p>After releasing yesterday&#8217;s update I realized the utility did not support content changes for Chapters 13-16 although this content is stored in the same table. I have remedied this by making all of the menus dynamic and asynchronously updated.  In the process I have added 2 new tables bol_chapters and bol_sections whose purpose is self-explanatory.  The band menu options are collected from the bol_text table based on selected chapter and section.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Windows Media Player Plugin for Mozilla by bwalker</title>
		<link>http://techlog.p2061.org/2008/03/18/windows-media-player-plugin-for-mozilla/comment-page-1/#comment-6</link>
		<dc:creator>bwalker</dc:creator>
		<pubDate>Fri, 21 Mar 2008 14:21:29 +0000</pubDate>
		<guid isPermaLink="false">http://techlog.p2061.org/2008/03/18/windows-media-player-plugin-for-mozilla/#comment-6</guid>
		<description>While it seemed this plug-in resolved the error mentioned above, the error reappeared yesterday.  I tried reinstalling the plug-in, but it did not have any effect.  Additional testing determined the error occurred whenever I tried to over-write the player object html.  It&#039;s possible whatever mechanism the player uses to close/unload the object has a bug or is conflicting with something.  I still don&#039;t know the root cause of the problem, but a work-around is to clear the contents of the parent container using innerHTML or equivalent loading any new scripts.</description>
		<content:encoded><![CDATA[<p>While it seemed this plug-in resolved the error mentioned above, the error reappeared yesterday.  I tried reinstalling the plug-in, but it did not have any effect.  Additional testing determined the error occurred whenever I tried to over-write the player object html.  It&#8217;s possible whatever mechanism the player uses to close/unload the object has a bug or is conflicting with something.  I still don&#8217;t know the root cause of the problem, but a work-around is to clear the contents of the parent container using innerHTML or equivalent loading any new scripts.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
