<?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/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"><channel><title>Disruptive Library Technology Jester &#187; WordPress</title> <atom:link href="http://dltj.org/tag/wordpress/feed/" rel="self" type="application/rss+xml" /><link>http://dltj.org</link> <description>We&#039;re Disrupted, We&#039;re Librarians, and We&#039;re Not Going to Take It Anymore</description> <lastBuildDate>Fri, 18 May 2012 15:43:10 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <cloud domain='dltj.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/us/</creativeCommons:license> <item><title>Slight Tweak to WordPress Broken Link Checker Plugin</title><link>http://dltj.org/article/slight-tweak-to-wordpress-broken-link-checker-plugin/</link> <comments>http://dltj.org/article/slight-tweak-to-wordpress-broken-link-checker-plugin/#comments</comments> <pubDate>Thu, 28 Oct 2010 02:34:38 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/?p=1805</guid> <description><![CDATA[In a futile effort to fight link rot on DLTJ, I installed the Broken Link Checker plugin by &#8220;White Shadow&#8221;. I like the way it scans the entire content of this blog &#8212; posts, pages, comments, etc. &#8212; looking for &#8230; <a href="http://dltj.org/article/slight-tweak-to-wordpress-broken-link-checker-plugin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/?p=1805"></abbr><p>In a futile effort to fight link rot on <i><acronym title="Disruptive Library Technology Jester">DLTJ</acronym></i>, I installed the <a href="http://wordpress.org/extend/plugins/broken-link-checker" title="Broken Link Checker plugin">Broken Link Checker</a> plugin by <a href="http://w-shadow.com/blog/2007/08/05/broken-link-checker-for-wordpress/" title="Broken Link Checker for WordPress | W-Shadow.com">&#8220;White Shadow&#8221;</a>.  I like the way it scans the entire content of this blog &#8212; posts, pages, comments, etc. &#8212; looking for pages linked from here that don&#8217;t respond with an <a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success" title="List of HTTP status codes - Wikipedia">HTTP 200 &#8220;Ok&#8221;</a> status code.  The dashboard of problem links has a nice interface for updating or deleting these links, including the ability to add a CSS style deleted links to note that they were formerly there.  One of the things I wished it did, though, was to add a message to posts/pages that noted a link was changed or deleted.  You know &#8212; just to document that something changed since the page was first published.  Tonight I hacked into the code to add this function.  And with apologies to the original author of this beautifully structured object-oriented PHP code, it is a gruesome hack.<br /><span id="more-1805"></span><br /><h2>The Patch</h2><br />From the root level of the current version of the broken-link-checker plugin directory, one can apply this patch to <code>modules/parsers/html_link.php</code>.  There are just two added lines &#8212; one in each of <code>edit()</code> and <code>unlink()</code> &#8212; that simply appends a paragraph to the end of the content.  In my quick hack, there is no internationalization of strings and the CSS styling is inline.  See&#8230;I told you it was ugly.  Still, it meets my needs and it might meet yours too.</p><div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;">Index: modules/parsers/html_link.php
===================================================================
<span style="color: #888822;">--- modules/parsers/html_link.php       <span style="">&#40;</span>revision 304787<span style="">&#41;</span></span>
<span style="color: #888822;">+++ modules/parsers/html_link.php       <span style="">&#40;</span>working copy<span style="">&#41;</span></span>
<span style="color: #440088;">@@ -127,6 +127,9 @@</span>
                //Find all links and replace those that match $old_url.
                $content = $this-&gt;multi_edit<span style="">&#40;</span>$content, array<span style="">&#40;</span>&amp;$this, 'edit_callback'<span style="">&#41;</span>, $args<span style="">&#41;</span>;  
&nbsp;
<span style="color: #00b000;">+               // Append a notation to the end of the HTML that a link was changed</span>
<span style="color: #00b000;">+               $content .= '&lt;p style=&quot;padding:<span style="">0</span>;margin:<span style="">0</span>;font-style:italic;&quot;&gt;The text was modified to update a link from '.$args<span style="">&#91;</span>'old_url'<span style="">&#93;</span>.' to '.$args<span style="">&#91;</span>'new_url'<span style="">&#93;</span>.'.&lt;/p&gt;';</span>
<span style="color: #00b000;">+</span>
                return array<span style="">&#40;</span>
                        'content' =&gt; $content,
                        'raw_url' =&gt; $new_url,
<span style="color: #440088;">@@ -163,6 +166,9 @@</span>
                //Find all links and remove those that match $raw_url.                
                $content = $this-&gt;multi_edit<span style="">&#40;</span>$content, array<span style="">&#40;</span>&amp;$this, 'unlink_callback'<span style="">&#41;</span>, $args<span style="">&#41;</span>;
<span style="color: #00b000;">+               // Append a notation to the end of the HTML that a link was deleted</span>
<span style="color: #00b000;">+               $content .= '&lt;p style=&quot;padding:<span style="">0</span>;margin:<span style="">0</span>;font-style:italic;&quot; class=&quot;removed_link&quot;&gt;The text was modified to remove a link to '.$args<span style="">&#91;</span>'old_url'<span style="">&#93;</span>.'.&lt;/p&gt;';</span>
<span style="color: #00b000;">+</span>
                return $content;
        <span style="">&#125;</span>
&nbsp;
<span style="color: #440088;">@@ -342,4 +348,4 @@</span>
        <span style="">&#125;</span>
 <span style="">&#125;</span>-?&gt;
<span style="color: #aaaaaa; font-style: italic;">\ No newline at end of file</span>
<span style="color: #00b000;">+?&gt;</span></pre></div></div><p>You can see how this appears to the end-user by looking at the notes added to the bottom of <a href="http://dltj.org/article/fedora-plus-sakai-3/">this post</a>.</p><p><h2>Initial Results</h2><br />I&#8217;ve been blogging for about five years, and in that span of time there have been 4,722 URLs used here.  Of those, 748 are now &#8220;broken&#8221; (return some kind of non-success status code or the server itself is not responding).  So far I&#8217;ve fixed or unlinked 50 of them.  Whether stay excited about this project to work through the remaining 700 or so remains to be seen.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/slight-tweak-to-wordpress-broken-link-checker-plugin/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>DLTJ Updated to WordPress 2.5</title><link>http://dltj.org/article/dltj-updated-to-wordpress-25/</link> <comments>http://dltj.org/article/dltj-updated-to-wordpress-25/#comments</comments> <pubDate>Fri, 04 Apr 2008 21:07:20 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/article/dltj-updated-to-wordpress-25/</guid> <description><![CDATA[Your Name(required) Email(valid email required) Receive an e-mail copy of your comment? Website Message &#160; cforms contact form by delicious:days]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/article/dltj-updated-to-wordpress-25/"></abbr><div id="usermessagea" class="cf_info "></div><form enctype="multipart/form-data" action="/tag/wordpress/feed/#usermessagea" method="post" class="cform" id="cformsform"><ol class="cf-ol"><li id="li--1" class=""><label for="cf_field_1"><span>Your Name</span></label><input type="text" name="cf_field_1" id="cf_field_1" class="single fldrequired" value="Your Name" onfocus="clearField(this)" onblur="setField(this)"/><span class="reqtxt">(required)</span></li><li id="li--2" class=""><label for="cf_field_2"><span>Email</span></label><input type="text" name="cf_field_2" id="cf_field_2" class="single fldemail fldrequired" value=""/><span class="emailreqtxt">(valid email required)</span></li><li id="li--3" class=""><label for="cf_field_3" class="cf-before"><span>Receive an e-mail copy of your comment?</span></label><input type="checkbox" name="cf_field_3" id="cf_field_3" class="cf-box-b"/></li><li id="li--4" class=""><label for="cf_field_4"><span>Website</span></label><input type="text" name="cf_field_4" id="cf_field_4" class="single" value="http://"/></li><li id="li--5" class=""><label for="cf_field_5"><span>Message</span></label><textarea cols="30" rows="8" name="cf_field_5" id="cf_field_5" class="area"></textarea></li></ol><fieldset class="cf_hidden"><legend>&nbsp;</legend> <input type="hidden" name="cf_working" id="cf_working" value="One%20moment%20please..."/> <input type="hidden" name="cf_failure" id="cf_failure" value="Please%20fill%20in%20all%20the%20required%20fields."/> <input type="hidden" name="cf_codeerr" id="cf_codeerr" value="Please%20double-check%20your%20verification%20code."/> <input type="hidden" name="cf_customerr" id="cf_customerr" value="yyy"/> <input type="hidden" name="cf_popup" id="cf_popup" value="nn"/></fieldset><p class="cf-sb"><input type="submit" name="sendbutton" id="sendbutton" class="sendbutton" value="Submit"/></p></form><p class="linklove" id="ll"><a href="http://www.deliciousdays.com/cforms-plugin"><em>cforms</em> contact form by delicious:days</a></p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/dltj-updated-to-wordpress-25/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>SSL for WordPress Admin and the Problem with  XMLHttpRequest</title><link>http://dltj.org/article/wordpress-ssl-xmlhttprequest/</link> <comments>http://dltj.org/article/wordpress-ssl-xmlhttprequest/#comments</comments> <pubDate>Thu, 20 Mar 2008 15:38:34 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[ajax]]></category> <category><![CDATA[fix_admin_ssl]]></category> <category><![CDATA[ssl]]></category> <category><![CDATA[WordPress]]></category> <category><![CDATA[XMLHttpRequest]]></category><guid isPermaLink="false">https://dltj.org/article/wordpress-ssl-xmlhttprequest/</guid> <description><![CDATA[Note! The updates to SSL handling in WordPress version 2.6 handle the problem of SSL-encrypted admin sessions in a much less hackish sort of way. It doesn&#8217;t make any sense to use this plugin with WordPress version 2.6 when you &#8230; <a href="http://dltj.org/article/wordpress-ssl-xmlhttprequest/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="https://dltj.org/article/wordpress-ssl-xmlhttprequest/"></abbr><div style="border: 2px solid grey; padding: 1.5em;">Note!  The updates to <a href="http://boren.nu/archives/2008/07/14/ssl-and-cookies-in-wordpress-26/" title="&amp;raquo; SSL and Cookies in WordPress 2.6 Ryan Boren">SSL handling in WordPress version 2.6</a> handle the problem of SSL-encrypted admin sessions in a <em>much</em> less hackish sort of way.  It doesn&#8217;t make any sense to use this plugin with <a href="http://wordpress.org/development/2008/07/wordpress-26-tyner/" title="http://wordpress.org/development/2008/07/wordpress-26-tyner/">WordPress version 2.6</a> when you can simply add <code>define(’FORCE_SSL_ADMIN’, true);</code> to your wp-config.php file.</div><p>The WordPress Codex has documentation for <a href="http://codex.wordpress.org/Administration_Over_SSL" title="Administration Over SSL &amp;laquo; WordPress Codex">running the login, registration, and administration interfaces on an SSL server</a>.  There is even a <a href="http://wordpress.org/extend/plugins/admin-ssl-secure-admin/" title="WordPress &#8250; Admin-SSL &laquo; WordPress Plugins">plug-in</a> that will do much of the heavy lifting for you.  I have found both of these methods, by themselves, to be rather unsatisfactory, though, in that admin services that rely on AJAX calls back to WordPress break (such as the periodic saving of drafts).  What happens is this:</p><ol type="1" start="1"><li>Plugins will use the &#8216;siteurl&#8217; and/or &#8216;home&#8217; values in the <a href="http://codex.wordpress.org/General_Options_SubPanel" title="General Options SubPanel &laquo; WordPress Codex">Options &rarr; General</a> admin page, and that value is typically set to the &#8220;http://&#8221; rather than &#8220;https://&#8221; address of the blog.</li><li>The URL that plugins construct to talk back to the WordPress installation will go to an &#8220;http&#8221; address instead of the SSL-encrypted &#8220;https&#8221; address.</li><li>The admin page, loaded in the browser from the &#8220;https&#8221; address, attempts to talk back to the WordPress installation on a &#8220;http&#8221; address and triggers a exception.  In Firefox, the error looks like this: <tt>Error: [Exception... "'Permission denied to call method XMLHttpRequest.open' when calling method: [nsIDOMEventListener::handleEvent]"...]</tt></li></ol><p>The security model in the browser prevents scripts on a page from using XMLHttpRequest<sup><a href="http://dltj.org/article/wordpress-ssl-xmlhttprequest/#footnote_0_344" id="identifier_0_344" class="footnote-link footnote-identifier-link" title="See http://en.wikipedia.org/wiki/XMLHttpRequest for more information on XMLHttpRequest.">1</a></sup> back to any host on the internet <em>except</em> for the host where the script came from.  In this case, the difference between &#8220;http://&#8230;&#8221; and &#8220;https://&#8230;&#8221; is enough to trigger the problem.</p><p>So I fixed it with plug-in that uses an undocumented hook in WordPress 2.3.  If a plugin requests the value of &#8216;siteurl&#8217; or &#8216;home&#8217;, a filter is called to check if the requested page is on the SSL server.  If it is, the filter changes the URL from &#8216;http&#8217; to &#8216;https&#8217;.  In that way, plug-ins will use the proper form of the URL.</p><div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">/*
Plugin Name: Fix Admin SSL
Plugin Script: fix_admin_ssl.php
Plugin URI: http://dltj.org/tag/fix_admin_ssl
Description: Fix the 'siteurl' and 'home' option values to make the protocol 'https' rather than 'http' when the page was requested with SSL.
Version: 1.0
License: GPL
Author: Peter Murray
Author URI: http://dltj.org/about
&nbsp;
=== RELEASE NOTES ===
2008-02-18 - v1.0 - first version
*/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> fix_admin_ssl<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</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: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTPS'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'on'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$url</span><span style="color: #339933;">=</span><span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^http:\/\//'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'https://'</span><span style="color: #339933;">,</span><span style="color: #000088;">$url</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: #000088;">$url</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
add_action <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'option_siteurl'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fix_admin_ssl'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
add_action <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'option_home'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'fix_admin_ssl'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div><p>One downside to this plug-in, though, is that it will appear to change the values of &#8216;siteurl&#8217; and &#8216;home&#8217; on the <a href="http://codex.wordpress.org/General_Options_SubPanel" title="General Options SubPanel &laquo; WordPress Codex">Options &rarr; General</a> admin page.  The values in the database are still the &#8216;http&#8217; ones, but since the Options page is an admin page the filter will run when it pre-loads those form fields.</p><p>If there is interest, I can package up the above code into a legitimate plugin and submit it to the <a href="http://wordpress.org/extend/plugins/" title="WordPress &#8250; WordPress Plugins">WordPress plugins list</a>.</p><h2>Footnotes</h2><ol class="footnotes"><li id="footnote_0_344" class="footnote">See <a href="http://en.wikipedia.org/wiki/XMLHttpRequest" title="XMLHttpRequest - Wikipedia">http://en.wikipedia.org/wiki/XMLHttpRequest</a> for more information on XMLHttpRequest.</li></ol>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/wordpress-ssl-xmlhttprequest/feed/</wfw:commentRss> <slash:comments>7</slash:comments> </item> <item><title>DLTJ Updated, Readers Yawn</title><link>http://dltj.org/article/dltj-updated-readers-yawn/</link> <comments>http://dltj.org/article/dltj-updated-readers-yawn/#comments</comments> <pubDate>Mon, 28 Jan 2008 03:44:34 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[system administration]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/article/dltj-updated-readers-yawn/</guid> <description><![CDATA[At least I hope that is the correct headline. I&#8217;ve been having some problems with this installation of WordPress lately &#8212; in particular, I could no longer activate or deactivate plugins &#8212; and the only solution offered in the WordPress &#8230; <a href="http://dltj.org/article/dltj-updated-readers-yawn/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/article/dltj-updated-readers-yawn/"></abbr><p>At least I hope that is the correct headline.  I&#8217;ve been having some problems with this installation of WordPress lately &#8212; in particular, I could no longer activate or deactivate plugins &#8212; and the only solution offered in the WordPress codex was to start with a fresh installation of WordPress.  Now you know how I spent my free time this weekend.  While doing so, I updated the <a href="http://www.plaintxt.org/themes/barthelme/">Barthelme</a> theme and along the way gained some really need Semantic Web coolness to the underlying XHTML of the blog pages.  The version of Barthelme is still a heavily, heavily hacked one, but hopefully the clean up this weekend will make it possible to keep up with new versions of the underlying theme files without major headaches.  I also updated all of the plugins and cleaned out lots of old cruft in the plugins directory and in the theme files.  As a result, the pages seem to load faster.  Maybe that is just my wishful thinking.</p><div id="usermessagea" class="cf_info "></div><form enctype="multipart/form-data" action="/tag/wordpress/feed/#usermessagea" method="post" class="cform" id="cformsform"><ol class="cf-ol"><li id="li--1" class=""><label for="cf_field_1"><span>Your Name</span></label><input type="text" name="cf_field_1" id="cf_field_1" class="single fldrequired" value="Your Name" onfocus="clearField(this)" onblur="setField(this)"/><span class="reqtxt">(required)</span></li><li id="li--2" class=""><label for="cf_field_2"><span>Email</span></label><input type="text" name="cf_field_2" id="cf_field_2" class="single fldemail fldrequired" value=""/><span class="emailreqtxt">(valid email required)</span></li><li id="li--3" class=""><label for="cf_field_3" class="cf-before"><span>Receive an e-mail copy of your comment?</span></label><input type="checkbox" name="cf_field_3" id="cf_field_3" class="cf-box-b"/></li><li id="li--4" class=""><label for="cf_field_4"><span>Website</span></label><input type="text" name="cf_field_4" id="cf_field_4" class="single" value="http://"/></li><li id="li--5" class=""><label for="cf_field_5"><span>Message</span></label><textarea cols="30" rows="8" name="cf_field_5" id="cf_field_5" class="area"></textarea></li></ol><fieldset class="cf_hidden"><legend>&nbsp;</legend> <input type="hidden" name="cf_working" id="cf_working" value="One%20moment%20please..."/> <input type="hidden" name="cf_failure" id="cf_failure" value="Please%20fill%20in%20all%20the%20required%20fields."/> <input type="hidden" name="cf_codeerr" id="cf_codeerr" value="Please%20double-check%20your%20verification%20code."/> <input type="hidden" name="cf_customerr" id="cf_customerr" value="yyy"/> <input type="hidden" name="cf_popup" id="cf_popup" value="nn"/></fieldset><p class="cf-sb"><input type="submit" name="sendbutton" id="sendbutton" class="sendbutton" value="Submit"/></p></form><p class="linklove" id="ll"><a href="http://www.deliciousdays.com/cforms-plugin"><em>cforms</em> contact form by delicious:days</a></p><p>Also, a word of warning for those that try to fix their own WordPress blog, the process of getting your posts, content, and taxonomy terms from your old instance to your new instance is really, really broken.  The suggested way to move content is by Exporting to a WordPress-specific XML format on your old blog, then importing it into your new blog.  This caused many problems.  First, if you are using a 2.3.x version of WordPress, you&#8217;ll run into <a href="http://trac.wordpress.org/ticket/5330">a bug where tags are given numbers rather than the names</a>.  The patch &#8212; a one line change to the import PHP script &#8212; works as advertised.  But then you&#8217;ll find that, if you have ever deleted a post or term, the act of importing the content will reassign new, sequential IDs &#8212; skipping over the deleted IDs in the old database as if they were never there.  That&#8217;s okay, except many <em>other</em> plugins (most notably in my case, <a href="http://wordpress.org/extend/plugins/in-series/">In-Series</a>) rely on the IDs remaining constant because the ID number is stored in other tables.  So save yourself a lot of trouble and just copy over the required tables in your underlying database.  I used PhpMyAdmin to copy the wp_comments, wp_posts, wp_terms, wp_term_relationships, and wp_term_taxonomy tables from the old database to the new.  And everything just worked right after that.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/dltj-updated-readers-yawn/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>DLTJ now Running on WordPress 2.3</title><link>http://dltj.org/article/wordpress-2-3/</link> <comments>http://dltj.org/article/wordpress-2-3/#comments</comments> <pubDate>Wed, 17 Oct 2007 13:27:38 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[Extended Live Archive]]></category> <category><![CDATA[tagging]]></category> <category><![CDATA[ultimatetagwarrior]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/2007/10/wordpress-2-3/</guid> <description><![CDATA[Last night DLTJ was upgraded to WordPress 2.3. As far as I can tell, everything is working okay, but please let me know in the comments or the comment form if something doesn&#8217;t seem right. There were two tricky parts &#8230; <a href="http://dltj.org/article/wordpress-2-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/10/wordpress-2-3/"></abbr><p>Last night <acronym title="Disruptive Library Technology Jester"><i>DLTJ</i></acronym> was upgraded to <a href="http://wordpress.org/development/2007/09/wordpress-23/" title="WordPress 2.3 release announcement">WordPress 2.3</a>.  As far as I can tell, everything is working okay, but please let me know in the comments or the <a href="http://dltj.org/contact">comment form</a> if something doesn&#8217;t seem right.  There were two tricky parts to the upgrade.  (Well, three really, if you count the tasks necessary to extract the reminants of the Ultimate Tag Warrior (UTW) from the theme.)  Fortunately, one of them was not the upgrade itself; after <a href="http://dltj.org/2007/08/gentoo-abandons-wordpress-in-portage/">abandoning the Gentoo portage ebuild for WordPress</a>, I switched to the <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion" title="Installing/Updating WordPress with Subversion">Subversion update method</a>.  This was the first time I did an &#8216;<a href="http://svnbook.red-bean.com/en/1.4/svn.ref.svn.c.switch.html" title="&#039;svn switch&#039; description in Subversion online book">svn switch</a>&#8216; to get the new version, and it worked great.</p><p>The first is dealing with the new tag infrastructure in Worpress 2.3.  For those that read <acronym title="Disruptive Library Technology Jester"><i>DLTJ</i></acronym> via the website (as opposed to reading it through the RSS feed exclusively), you know that at the bottom of each posting is a table of tags with links to postings in <acronym title="Disruptive Library Technology Jester"><i>DLTJ</i></acronym> as well as links to items with similar tags in Technorati, del.icio.us, and a search for the tag in the english Wikipedia.  Previously I had hacked UTW to provide that format, but without UTW available I bit the bullet and created a simple plug-in to create the table.  It was my first plug-in for WordPress and I was quite proud of myself right up to the point where I couldn&#8217;t figure out why the table wasn&#8217;t appearing when the plug-in was enabled.  So I went into a recent post to verify the tags and saw that the problem wasn&#8217;t with my plug-in &#8212; the problem was that there were no tags in the posting!  It seems that I had missed the step of <em>importing</em> the UTW tags into the new WordPress 2.3 tag structure.  I finally found out about it via the WordPress support forums, so here is a clue for those attempting the same thing &#8212; you&#8217;ll find utilities for importing tags in the&#8230;wait for it&#8230;<strong>import</strong> admin page.  It would have been nice if the &#8220;/wp-admin/upgrade.php&#8221; utility saw that I was using a previous tagging system and pointed me in the direction of the import utility.</p><p>The second problem was easier to solve, and that was the missing functionality of <a href="http://www.sonsofskadi.net/extended-live-archive/" title="http://www.sonsofskadi.net/extended-live-archive/">Extended Live Archive</a> on the <a href="http://dltj.org/"><i>DLTJ</i></a> homepage.  Fortunately, someone went through the effort of <a href="http://blog.tinyau.net/archives/2007/07/07/extended-live-archives-for-wordpress-23/" title="Extended Live Archives for WordPress 2.3">figuring out what needed to be changed in Extended Live Archive to accomodate the tag structure and published the results</a>.  I don&#8217;t like how the tag page doesn&#8217;t follow the common practice of font sizes based on popularity of the use of the tag, but I can get along without it.  The built-in &#8220;tag cloud&#8221; functionality does <a href="http://dltj.org/tag/">a nice job of doing that</a>.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/wordpress-2-3/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Schemes to Add Functionality to the Web OPAC</title><link>http://dltj.org/article/web-opac-schemes/</link> <comments>http://dltj.org/article/web-opac-schemes/#comments</comments> <pubDate>Mon, 15 Oct 2007 15:55:46 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[Drupal]]></category> <category><![CDATA[Koha]]></category> <category><![CDATA[libraries]]></category> <category><![CDATA[ngc4lib]]></category> <category><![CDATA[opac]]></category> <category><![CDATA[openils]]></category> <category><![CDATA[tagging]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/2007/10/web-opac-schemes/</guid> <description><![CDATA[Schemes to add functionality to the web OPAC fall into four categories: web OPAC enhancements, web OPAC wrappers, web OPAC replacements, and integrated library system replacements. I&#8217;m outlining these four techniques in a report I&#8217;m editing for an OhioLINK strategic &#8230; <a href="http://dltj.org/article/web-opac-schemes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/10/web-opac-schemes/"></abbr><p>Schemes to add functionality to the web OPAC fall into four categories:  web OPAC enhancements, web OPAC wrappers, web OPAC replacements, and integrated library system replacements.  I&#8217;m outlining these four techniques in a report I&#8217;m editing for an OhioLINK strategic task force and a bit of a reality check on this categorization is desired, so if I&#8217;m missing anything big (conceptually or announcements of projects/products that fall into these categories), please let me know in the comments.  Generally speaking, this list is ordered by cost/complexity to implement &#8212; from lowest to highest &#8212; as well as the ability to offer the described enhanced services from least likely to most likely.</p><p><strong>Web OPAC enhancements</strong> are functions that are added to the existing web OPAC system. This most often entails additional product purchases from the automation vendor, such as the optional enhancements in <a href="http://web.archive.org/web/20071015145500/http://iii.com/mill/webopac.shtml" title="WebPAC Pro product description">WebPAC Pro</a> for Millennium OPACs or <a href="http://web.archive.org/web/20071109170053/http://www.sirsidynix.com/Solutions/Products/portalsearch.php#content" title="SirsiDynix : Solutions : Portal &amp; Search Solutions">content solutions</a> in SirsiDynix.  Enhancement can also be added through creative use of an existing web OPAC&#8217;s template functions, such as the method by which <a href="http://www.librarything.com/forlibraries/" title="Library Think for Libraries homepage">LibraryThing for Libraries</a> can be added to OPAC displays.</p><p><strong>Web OPAC wrappers</strong> use the existing web OPAC provided by the integrated library system as a source of information, but hide that information behind a completely new interface.  The intervening system get that information from the integrated library system through a variety of mechanism.  In some cases, it may be possible to use established protocols (such as Z39.50) or programming interfaces (such as an XML content server).  In cases where such functionality is not available from the underlying integrated library system, a &#8220;<a href="http://www.google.com/search?q=screen-scraping+HTML" title="Google search results for &#039;screen scraping HTML&#039;">screen-scraping HTML</a>&#8221; technique may be required. <sup><a href="http://dltj.org/article/web-opac-schemes/#footnote_0_284" id="identifier_0_284" class="footnote-link footnote-identifier-link" title="Such a technique gets the information from the ILS using the existing web OPAC.  Such schemes are generally fragile because changes to the underlying web OPAC can have detrimental affects on the content scraping process.">1</a></sup></p><p>One example of such a wrapper is the work at Ann Arbor Public Library on SOPAC.  Short for &#8220;Social OPAC,&#8221; SOPAC is &#8220;a set of social networking tools integrated into the AADL catalog [that] gives users the ability to rate, review, comment-on, and tag items.&#8221;<sup><a href="http://dltj.org/article/web-opac-schemes/#footnote_1_284" id="identifier_1_284" class="footnote-link footnote-identifier-link" title="Blyberg, J. (2007). AADL.org Goes Social. blyberg.net. Retrieved October 12, 2007, from http://www.blyberg.net/2007/01/21/aadlorg-goes-social/">2</a></sup> It uses an open source content management system called Drupal as a structure through which the added functionality is provided.  For example, when a user seeks the bibliographic information page for a catalog record, that request is made from the user&#8217;s browser to the Drupal software.  The Drupal software in turn makes a request to the integrated library system for the bibliographic information it holds.  The response from the ILS is parsed by the Drupal software for key information such as title, author, subjects, holdings, etc.  This information is mixed with information stored in the Drupal database (ratings, tags, reviews, cover images, etc.) and a new web page is created and returned to the user&#8217;s browser.</p><p>Another example of a web OPAC wrapper is <a href="http://about.scriblio.net/" title="Scriblio about page" class="broken_link" rel="nofollow">Scriblio</a> (formerly called WPopac).  Using the underlying framework of WordPress, Scriblio offers faceted browsing, tagging, and syndication feeds for the underlying Millennium WebOPAC.  Scriblio is a project of Plymouth State University, supported in part by the Andrew W. Mellon Foundation.  Both SOPAC and Scriblio are available under open source licenses.</p><p><strong>Web OPAC replacements</strong> are new systems that completely replace the existing web OPAC.  Unlike wrappers (which get their bibliographic data in real-time from the underlying web OPAC), these replacements operate on sets of records that are extracted from the ILS or come from another source.  (In some cases, these replacements still rely on the underlying web OPAC as a source of item status information such as checked out status and due date.) The first notable OPAC replacement was at <a href="http://www.lib.ncsu.edu/endeca/" title="About Endeca at NCSU Libraries">North Carolina State University when its library installed and configured</a> the <a href="http://endeca.com/" title="Endeca corporate homepage">Endeca software</a> to provide <a href="http://www.lib.ncsu.edu/catalog/" title="NCSU Libraries Online Catalog">a faceted browse to the library catalog</a>.  By itself, an Endeca OPAC display does not enable tagging, annotation, or user aggregation services such as recommendation engines.&#160; Other similar web OPAC replacements are <a href="http://web.archive.org/web/20080328163000/http://www.iii.com/encore/main_index2.html" title="Encore product information page">Encore from Innovative Interfaces</a><sup><a href="http://dltj.org/article/web-opac-schemes/#footnote_2_284" id="identifier_2_284" class="footnote-link footnote-identifier-link" title="As Betsy Graham, Vice President of Product Management at Innovative Interfaces, notes in the comments, the Encore will perform real-time queries to a Millennium ILS for bibliographic data, and in such cases the data extract is not needed.">3</a></sup>, <a href="http://www.exlibrisgroup.com/primo.htm" title="Primo product information page">Primo from Ex Libris</a> and <a href="http://www.medialab.nl/" title="Aquabrowser product information page">Aquabrowser from Medialab Solutions</a>.  Miami University&#8217;s experiments with the open source Apache SOLR and the exported records from their Millennium system also fall into this category.  Worldcat Local is also a form of web OPAC replacement noting that the source of bibliographic records is the OCLC Worldcat database rather than the local ILS.</p><p><strong>ILS replacements</strong> offer the biggest opportunity for enhanced user services, particularly by adopting one of the open source solutions now available. At this time, neither of the open source solutions (<a href="http://open-ils.org/" title="Evergreen homepage">Evergreen</a> and <a href="http://www.koha.org/" title="Koha homepage">Koha</a>) offers more than faceted search and browsing. Unlike the commercial systems, however, the source code of the system can be modified to add these functions, and the modifications shared with other users of the same system.</p><p>[Update 20071015T1624 : Corrections made -- and the text improved! -- based on Betsy Graham's comment.  Thanks, Betsy!]<p style="padding:0;margin:0;font-style:italic;">The text was modified to update a link from http://www.iii.com/mill/webopac.shtml to http://web.archive.org/web/20071015145500/http://iii.com/mill/webopac.shtml on January 20th, 2011.</p><p style="padding:0;margin:0;font-style:italic;">The text was modified to update a link from http://www.iii.com/encore/main_index2.html to http://web.archive.org/web/20080328163000/http://www.iii.com/encore/main_index2.html on January 20th, 2011.</p><p style="padding:0;margin:0;font-style:italic;">The text was modified to update a link from http://www.sirsidynix.com/Solutions/Products/portalsearch.php#content to http://web.archive.org/web/20071109170053/http://www.sirsidynix.com/Solutions/Products/portalsearch.php#content on January 28th, 2011.</p><h2>Footnotes</h2><ol class="footnotes"><li id="footnote_0_284" class="footnote">Such a technique gets the information from the ILS using the existing web OPAC.  Such schemes are generally fragile because changes to the underlying web OPAC can have detrimental affects on the content scraping process.</li><li id="footnote_1_284" class="footnote">Blyberg, J. (2007). AADL.org Goes Social. blyberg.net. Retrieved October 12, 2007, from <a href="http://www.blyberg.net/2007/01/21/aadlorg-goes-social/" title="Blog posting announcing SOPAC">http://www.blyberg.net/2007/01/21/aadlorg-goes-social/</a></li><li id="footnote_2_284" class="footnote">As Betsy Graham, Vice President of Product Management at Innovative Interfaces, notes in the comments, the Encore will perform real-time queries to a Millennium ILS for bibliographic data, and in such cases the data extract is not needed.</li></ol>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/web-opac-schemes/feed/</wfw:commentRss> <slash:comments>26</slash:comments> </item> <item><title>Gentoo Abandons WordPress in Portage</title><link>http://dltj.org/article/gentoo-abandons-wordpress-in-portage/</link> <comments>http://dltj.org/article/gentoo-abandons-wordpress-in-portage/#comments</comments> <pubDate>Tue, 07 Aug 2007 14:43:05 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[Gentoo]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/2007/08/gentoo-abandons-wordpress-in-portage/</guid> <description><![CDATA[I don&#8217;t think this has been widely announced, but while waiting for an update to Gentoo&#8216;s portage entry for WordPress to cover the latest security and bug fixes, I discovered in the comments of a bug in Gentoo&#8217;s bugzilla database &#8230; <a href="http://dltj.org/article/gentoo-abandons-wordpress-in-portage/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/08/gentoo-abandons-wordpress-in-portage/"></abbr><p>I don&#8217;t think this has been widely announced, but while waiting for an update to <a href="http://www.gentoo.org/" title="Gentoo Linux homepage">Gentoo</a>&#8216;s portage entry for <a href="http://wordpress.org/" title="WordPress homepage">WordPress</a> to cover <a href="http://wordpress.org/development/2007/08/wordpress-222-and-2011/" title="WordPress 2.2.2 and 2.0.11 announcement">the latest security and bug fixes</a>, I discovered in the comments of <a href="http://bugs.gentoo.org/show_bug.cgi?id=168529" title="Gentoo Bug 168529 - www-apps/wordpress" &amp;lt;="2.1.1 AdminPanel CSRF/XSS">a bug in Gentoo&#8217;s bugzilla database</a> that they are making no effort to support WordPress on Gentoo.  I think this is really a poor move on Gentoo&#8217;s part.  As one of the bug commenters noted, &#8220;WordPress is, in general, a good product with an extremely active user community and good upstream maintenance.&#8221; <sup><a href="http://dltj.org/article/gentoo-abandons-wordpress-in-portage/#footnote_0_269" id="identifier_0_269" class="footnote-link footnote-identifier-link" title="Comment  #16 on bug #168529 from Stephen Ulmer dated 2007-03-17 16:09:26 0000 ">1</a></sup></p><p>A <a href="http://www.gentoo.org/security/en/glsa/glsa-200703-23.xml" title="Gentoo Linux Security Advisory -- WordPress: Multiple vulnerabilities"><abbr title="Gentoo Linux Security Advisory">GLSA</abbr> was issued for WordPress vulnerabilities in March</a> &#8212; problems that have since been fixed &#8212; with this &#8216;resolution&#8217;:</p><blockquote><p>Due to the numerous recently discovered vulnerabilities in WordPress, this package has been masked in the portage tree. All WordPress users are advised to unmerge it.</p></blockquote><p>Now I&#8217;ll admit that I should not be expecting updates to packages that have been hard masked, but really &#8212; is this any way to treat the world&#8217;s most popular blogging software?  In any case, I&#8217;ve abandoned Gentoo&#8217;s ebuild for WordPress and have reverted to the <a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion" title="Installing/Updating WordPress with Subversion">Subversion method for updating a WordPress installation</a>.  So here is a heads-up to do something similar should you find yourself in the same situation.</p><p>[20070812T2046 update:  The portage keepers <a href="http://bugs.gentoo.org/show_bug.cgi?id=168529#c31" title="Gentoo Bug 168529 - www-apps/wordpress" &lt;="2.1.1 AdminPanel CSRF/XSS">bumped the version of WordPress to 2.2.2</a> in Portage yesterday.]</p><h2>Footnotes</h2><ol class="footnotes"><li id="footnote_0_269" class="footnote"><a href="http://bugs.gentoo.org/show_bug.cgi?id=168529#c16" title="Gentoo Bug 168529 - www-apps/wordpress" &lt;="2.1.1 AdminPanel CSRF/XSS">Comment  #16</a> on bug #168529 from Stephen Ulmer dated 2007-03-17 16:09:26 0000</li></ol>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/gentoo-abandons-wordpress-in-portage/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Links of Interest</title><link>http://dltj.org/links/</link> <comments>http://dltj.org/links/#comments</comments> <pubDate>Fri, 30 Mar 2007 15:37:16 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/links/</guid> <description><![CDATA[This is a list of links to other sites from within the postings of DLTJ:###linkharvest###]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/links/"></abbr><p>This is a list of links to other sites from within the postings of <i>DLTJ</i>:</p><p>###linkharvest###</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/links/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DLTJ Now Running on WordPress 2.1</title><link>http://dltj.org/article/wordpress-upgrade/</link> <comments>http://dltj.org/article/wordpress-upgrade/#comments</comments> <pubDate>Fri, 30 Mar 2007 03:03:50 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/2007/03/wordpress-upgrade/</guid> <description><![CDATA[DLTJ was upgraded to WordPress 2.1 tonight. Everything looks good so far; please let me know if you disagree&#8230;]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/03/wordpress-upgrade/"></abbr><p><i>DLTJ</i> was upgraded to WordPress 2.1 tonight.  Everything looks good so far; please let me know if you disagree&#8230;</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/wordpress-upgrade/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Killing Off Runaway Apache Processes</title><link>http://dltj.org/article/die-apache-die/</link> <comments>http://dltj.org/article/die-apache-die/#comments</comments> <pubDate>Mon, 26 Feb 2007 22:03:10 +0000</pubDate> <dc:creator>Peter Murray</dc:creator> <category><![CDATA[Meta Category]]></category> <category><![CDATA[Raw Technology]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[Gentoo]]></category> <category><![CDATA[system administration]]></category> <category><![CDATA[WordPress]]></category><guid isPermaLink="false">http://dltj.org/2007/02/die-apache-die/</guid> <description><![CDATA[Well, something is still going wrong on dltj.org &#8212; despite previous performance tuning efforts, I&#8217;m still running into cases where machine performance grinds to a halt. In debugging it a bit further, I&#8217;ve found that the root cause is an &#8230; <a href="http://dltj.org/article/die-apache-die/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<abbr class="unapi-id ignore noPrint" title="http://dltj.org/2007/02/die-apache-die/"></abbr><p>Well, something is still going wrong on <i>dltj.org</i> &mdash; despite <a href="http://dltj.org/2007/02/wordpress-mysql-tuning/">previous performance tuning efforts</a>, I&#8217;m still running into cases where machine performance grinds to a halt.  In debugging it a bit further, I&#8217;ve found that the root cause is an apache httpd process which wants to consume nearly all of real memory which then causes the rest of the machine to <a href="http://en.wikipedia.org/wiki/Thrash_%28computer_science%29" title="Wikipedia: Thrash">thrash</a> horribly.  The problem is that I haven&#8217;t figured out what is causing that one thread to want to consume so much RAM &mdash; nothing unusual appears in either the access or the error logs and I haven&#8217;t figured out a way to debug a running apache thread.  (Suggestions anyone?)</p><div style="border: 1px solid black; color black; background: #EEE"><strong>Found it!</strong> It was a WordPress plug-in plus a change to the PHP configuration that was causing the problem.  The fix for the fundamental cause of the problem came from a comment timestamped February 8th, 2007 at 3:55 pm on the <a href="http://www.elvery.net/drzax/2006/02/10/footnotes-0-9-plugin-for-wordpress-2-0-x/" title="http://www.elvery.net/drzax/2006/02/10/footnotes-0-9-plugin-for-wordpress-2-0-x/">Footnotes 0.9 Plugin for WordPress 2.0.x</a> page.  An infinite loop was consuming both CPU cycles and RAM, and this was exacerbated by a change I made to the maximum CPU execution time for PHP scripts that was required in order to play with the <a href="http://blog.vimagic.de/ip-city-cluster-wordpress-plugin/" title="WordPress &amp;rsaquo; Error">IP City Cluster plug-in</a>.  With the patch to the Footnotes plug-in, <i>dltj.org</i> has gone 12 hours without a run-away apache process.</div><p>In any case, I whipped up this little ditty that is running every five minutes in cron as a way to gloss over the problem for the moment.  Running as root, it looks into all of the processes in the <a href="http://en.wikipedia.org/wiki/Procfs" title="Wikipedia: procfs">virtual /proc file system</a>, specifically in the &#8216;stat&#8217; file, and using <a href="http://en.wikipedia.org/wiki/AWK_%28programming_language%29" title="Wikipedia: AWK">awk</a> looks to see if the second space-delimited value is the name of the httpd process (this is the <a href="http://www.gentoo.org/" title="Gentoo Linux -- Gentoo Linux News">Gentoo Linux</a> distribution, so the name of the process is <tt>apache2</tt>) and the 23rd space-delimited value (the virtual size of the process) is bigger than 800MB.  If so, it prints out the PID of the process (the first value in the <tt>stat</tt> file) at which the bash script unceremoniously sends it a <tt>kill</tt> (&#8216;-9&#8242;) signal.  The script looks like this:</p><div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">/</span>proc<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span>-<span style="color: #000000;">9</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">*`</span>; <span style="color: #000000; font-weight: bold;">do</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$i</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">stat</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #007800;">pid</span>=<span style="color: #000000; font-weight: bold;">`/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{ if ($2 == &quot;(apache2)&quot; &amp;amp;&amp;amp; $23 &amp;gt; 800000000) print $1}'</span> <span style="color: #007800;">$i</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">stat</span><span style="color: #000000; font-weight: bold;">`</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pid</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
                        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Killing <span style="color: #007800;">$pid</span> because of load average: <span style="color: #780078;">`awk '{print $1}' /proc/loadavg`</span>&quot;</span>
                        <span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-9</span> <span style="color: #007800;">$pid</span>
                <span style="color: #000000; font-weight: bold;">fi</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div><p>If anyone has any suggestions as to how to narrow down what the problem might be, I&#8217;d appreciate hearing from you.  I&#8217;ve tried eliminating WordPress plugins, recompiling WordPress and Apache, and attempted to catch the behavior with a network traffic sniffer, but have come up empty so far.</p>]]></content:encoded> <wfw:commentRss>http://dltj.org/article/die-apache-die/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> </channel> </rss>
<!-- Served from: dltj.org @ 2012-05-24 17:38:34 by W3 Total Cache -->
