<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://bryanhinton.com/news/aggregator/RSS">
  <title> News</title>
  <link>http://bryanhinton.com</link>

  <description>
    
      
    
  </description>

  

  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2008-02-24T21:56:09Z</syn:updateBase>
        

  <image rdf:resource="http://bryanhinton.com/logo.png"/>

  <items>
    <rdf:Seq>
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/objective-c-categories"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/freebsdremotekerneltesting"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/ploneapache"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/rhelphp"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/pkc"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/nsa-operating-system-guides"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/verizon-wireless-joins-linux-consortium"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/libpq-examples-for-c"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/4g-wireless"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/classic-guitars"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/libpq-vs-libpqxx"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/sarbanes-oxley-section-404-it-compliance"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/explaining-bsd"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/ruby-on-rails-installation"/>
      
      
        <rdf:li rdf:resource="http://bryanhinton.com/news/Plone-3-Buildout.cfg"/>
      
    </rdf:Seq>
  </items>

</channel>


  <item rdf:about="http://bryanhinton.com/news/objective-c-categories">
    <title>Objective-C Categories</title>
    <link>http://bryanhinton.com/news/objective-c-categories</link>
    <description>Objective-C Categories are a convenient way to extend existing classes</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Categories are a nice feature in Objective-C. Categories allow you to extend the functionality of an existing class without subclassing. &nbsp;Before I get into an example, here are a few guidelines to follow when using categorie. &nbsp; Apple recommends that you not use categories to <strong>overrid</strong><strong>e</strong> methods in other classes, inherited classes, or other categories. &nbsp;Categories are not meant to add instance variables to classes either. &nbsp;If used in such contexts, the behavior of your program is undefined. Apple recommends using categories for adding functionality to large, existing classes and then grouping that functionality accordingly. Overriding existing Cocoa methods that are inherited from within the Cocoa hierarchy is a no-no as is extending methods that are already part of a category within the Cocoa hierarchy. &nbsp;Categories allow you to add methods to existing classes while retaining the scope of class instance variables. So here's an example. Categories are quite simple to create and very powerful.</p> <p>&nbsp;</p> <p><strong>myCategory.h</strong></p><pre>
@interface UIViewController(myCategory)
- (void)messageName:(double)arga keywordA:(double)argb keywordB:(NSString *)argc;</pre> <p><strong>myCategory.m</strong></p><pre>
#import &quot;myController.h&quot;

@implementation UIViewController(myCategory)
- (void)messageName:(double)arga keywordA:(double)argb keywordB:(NSString *)argc {
// process arguments
// do something with ivar
// ...
}</pre> <p><strong>myController.h</strong></p><pre>
#import &quot;myCategory.h&quot;
@interface myController : UIViewController {

   someType ivar;
}

- (void) someMessage;
...
@end</pre> <p><strong>myController.m</strong></p><pre>
#import &quot;myController.h&quot;

@implementation

- (void)someMessage {

   [self messageName];  // send message to self - i.e. call method defined by category
}

@end</pre> <div>&nbsp;</div>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Bryan Hinton</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Objective-C</dc:subject>
    
    
      <dc:subject>iPhone Dev</dc:subject>
    
    
      <dc:subject>Apple</dc:subject>
    
    <dc:date>2010-02-01T07:10:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/freebsdremotekerneltesting">
    <title>FreeBSD remote kernel testing</title>
    <link>http://bryanhinton.com/news/freebsdremotekerneltesting</link>
    <description>FreeBSD 7 remote kernel testing</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>If your server is located at a remote location and you have just built a custom kernel, then there is a handy feature in FreeBSD that will allow you to test your new kernel without breaking the entire system.</p><p>The commands (including the make command for the kernel) are as follows:</p><pre>
# cd /boot

# cp -R kernel kernel.good

# cd /usr/src
</pre><p>This will install the kernel in /boot/kernel</p><pre>
# make KERNCONF=MYKERNELNAME buildkernel

# cd /boot

# mv kernel kernel.mykernelname

# mkdir kernel

# cp kernel.good/* kernel/

# nextboot -k kernel.mykernelname
</pre><p>&nbsp;</p><p>Upon reboot, the system will load kernel.mykernelname and then erase the part of the configuration that told it to load kernel.mykernelname</p><p>Consequently, subsequent reboots will load the kernel located in /boot/kernel which is the original kernel</p><p>Assuming that kernel.mykernelname loaded successfully, you can run the following commands to make the new kernel permanent:</p><pre>
# mv /boot/kernel /boot/kernel.previous

# mv /boot/kernel.mykernalname /boot/kernel
</pre>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Bryan Hinton</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>UNIX Notes</dc:subject>
    
    
      <dc:subject>FreeBSD</dc:subject>
    
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2009-04-04T08:45:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/ploneapache">
    <title>Plone and Apache on FreeBSD 7 behind PF</title>
    <link>http://bryanhinton.com/news/ploneapache</link>
    <description>Plone 3.2.1 and Apache 2.2 on FreeBSD 7.2 behind PF</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Several years have passed since I wrote an article on <a href="./resolveuid/6b55af2dc70d4866e07a25ad2709fd31">how to configure IP Filter</a> on OpenBSD 2.8.&nbsp; At the time, PF was not yet integrated into the OpenBSD kernel.&nbsp; OpenBSD 3.0 soon prevailed (2001) and PF was included in the kernel.&nbsp; Soon thereafter (2003), we saw the incorporation of PF into the FreeBSD 5.3 kernel.&nbsp;&nbsp; For those who are unfamiliar, PF is a system for filtering TCP/IP traffic and providing network address translation. However; PF also provides network traffic shaping capabilities - packet prioritization, bandwidth control, and TCP/IP conditioning.&nbsp;&nbsp; My original article from 2000 explained how to setup an IP-less bridge on an OpenBSD 2.8 server running IP Filter&nbsp; with dual network interface cards. The bridge filtered traffic at the data link layer and was invisible at the internet protocol level.&nbsp;&nbsp; As you will see, PF, like IP Filter, is very powerful.&nbsp; While I will not be going into how to configure an IP-less bridge, the PF configuration that follows is straightforward and easily adaptable to your configuration.</p><p>The article below shows the configuration for an Apache 2.2 server sitting in front of a Zope/Plone instance on a FreeBSD 7 server with PF enabled.</p><p><a href="./resolveuid/fcb4cb034c775247f9cda852616a8517"><span id="parent-fieldname-title" class="kssattr-atfieldname-title kssattr-templateId-widgets/string kssattr-macro-string-field-view inlineEditable">Zope/Plone behind Apache 2 on FreeBSD 7 with PF         </span></a></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Bryan Hinton</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Apache</dc:subject>
    
    
      <dc:subject>Plone</dc:subject>
    
    
      <dc:subject>FreeBSD</dc:subject>
    
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2009-04-03T23:00:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/rhelphp">
    <title>Building PHP5 on Linux</title>
    <link>http://bryanhinton.com/news/rhelphp</link>
    <description>./configure options for PHP 5.2.6 Build on Linux running 2.6.18-92 Kernel </description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><code># ./configure --disable-static --disable-debug&nbsp; --prefix=/usr/local/apache2/php --with-config-file-scan-dir=/usr/local/apache2/php --enable-libxml&nbsp; --with-libxml-dir=/usr/local/lib&nbsp; --enable-reflection --enable-spl --enable-zend-multibyte --with-regex=system&nbsp; --with-tidy&nbsp; --enable-zip --enable-bcmath --with-bz2=shared --enable-calendar --with-curl=shared --enable-dba --enable-exif --enable-ftp --with-gd --enable-gd-native-ttf --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-gettext=shared&nbsp; --with-gmp=shared --with-imap-ssl --with-imap --enable-mbstring --with-mcrypt=shared --with-mhash=shared --with-mysql --with-mysqli --with-openssl-dir --with-pdo-mysql --enable-sockets --with-xsl --with-zlib --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --enable-pcntl --enable-soap --enable-dbase --enable-sysvmsg --enable-sysvsem --enable-sysvshm&nbsp;&nbsp; --with-zlib&nbsp; --with-gdbm&nbsp; --with-curl --enable-soap --with-kerberos</code></p><p>&nbsp;</p><p><code># make &amp;&amp; make install</code></p><p><code># chown -R apache.web /usr/local/apache2/</code></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Bryan Hinton</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-12-30T00:18:56Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/pkc">
    <title>Cryptography, Cryptosystems, Cryptanalysis</title>
    <link>http://bryanhinton.com/news/pkc</link>
    <description>An Introduction to Cryptography, Cryptosystems, Cryptanalysis</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="./resolveuid/2cf1ed8691b9c14322a5dae924fd7345">Data Security and Cryptography</a></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Bryan Hinton</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2008-12-22T09:35:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/nsa-operating-system-guides">
    <title>NSA Operating System Guides</title>
    <link>http://bryanhinton.com/news/nsa-operating-system-guides</link>
    <description>NSA guides on hardening your server operating system - Red Hat Enterprise Linux 5, Solaris 10, etc...</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I recently deployed a Red Hat Enterprise 5 Linux server at Peer1.&nbsp;&nbsp; I typically follow a methodology for locking down an operating system.&nbsp; Upon booting the os install disk, I ensure that only the minimal set of services, kernel modules, and userland applications are installed. After installation was complete, I quickly logged in via SSH and began stripping down the OS.&nbsp; Following my usual methodology, I began tuning kernel parameters, nuking un-needed services, and fixing permissions.&nbsp; I then stumbled upon the National Security Agency's guide to securing operating systems.&nbsp; So I gave it a shot. The document is approximately 170 pages long.&nbsp; But if you are familiar with userland and kernel space, it only takes a few hours.&nbsp; The people who took the time to assemble this document did a great job.&nbsp; I only wish they mentioned Qmail in the MTA section...</p><p><a target="_blank" href="http://www.nsa.gov/snac/downloads_os.cfm?MenuID=scg10.3.1.1">www.nsa.gov/snac/downloads_os.cfm</a></p><p>&nbsp;</p><p>For those who are curious, here is the NSA's take on their guides:</p><p><em>NSA initiatives in enhancing software security cover both proprietary and open source software, and we have successfully used both proprietary and open source models in our research activities. NSA&rsquo;s work to enhance the security of software is motivated by one simple consideration: use our resources as efficiently as possible to give NSA&rsquo;s customers the best possible security options in the most widely employed products. The objective of the NSA research program is to develop technologic advances that can be shared with the software development community through a variety of transfer mechanisms. NSA does not favor or promote any specific software product or business model. Rather, NSA is promoting enhanced security.</em></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Security</dc:subject>
    
    
      <dc:subject>OS Hardening</dc:subject>
    
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-08-15T04:40:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/verizon-wireless-joins-linux-consortium">
    <title>Verizon Wireless Joins Linux Consortium</title>
    <link>http://bryanhinton.com/news/verizon-wireless-joins-linux-consortium</link>
    <description>Verizon Wireless begins development of a Linux based mobile operating system
and AT&amp;T backs Android, Google's Linux based mobile operating system.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p style="text-align: justify;">Verizon Wireless is beginning the transition to a completely new, mobile operating system, LiMo.&nbsp; LiMo is based on Linux.&nbsp; Google is also developing Android, a similar Linux based mobile operating system and AT&amp;T is backing Android.&nbsp; Android and LiMo will ultimately compete and all of the future cell phones will run on these operating systems. The new platform will ultimately mean that phones which are available for sale at Verizon stores, will run on the LiMo operating system.&nbsp;</p> <p style="text-align: justify;">Similarly, AT&amp;T stores will sell phones which are based on Android.&nbsp; This is an exciting event.&nbsp; For the first time, much of America will save money on replacing cell phones because of software malfunction.&nbsp;&nbsp; The Linux kernel was designed with preemptive multitasking since day one. Job control and process scheduling within the Linux kernel have been extensively worked on for several decades. Linux memory management is very efficient.&nbsp; Linux has solid, reliable, and efficient user-space and kernel-space thread implementations.&nbsp; Interestingly enough, Palm has announced that it will be moving to a Linux based operating system.&nbsp;</p> <p style="text-align: justify;">Windows was initially created as a cooperative multitasking, operating system. Microsoft finally realized that they needed to be using preemptive multitasking.&nbsp; When they realized this, SYSV and BSD development communities already had years of experience programming preemptive multitasking kernels.&nbsp; Consequently, Microsoft modified their kernel code to use preemptive multitasking.&nbsp;</p> <p style="text-align: justify;">The move to Linux based mobile operating systems could ultimately save quite a bit of money for consumers.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a href="http://uk.reuters.com/article/technologyNews/idUKWNAS409920080515" class="external-link">http://uk.reuters.com/article/technologyNews/idUKWNAS409920080515</a></p> <p>&nbsp;</p> <p><a href="http://uk.reuters.com/article/technologyNews/idUKWNAS409920080515" class="external-link">http://www.informit.com/articles/article.aspx?p=101760<br /></a></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-05-15T05:00:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/libpq-examples-for-c">
    <title>libpq Examples for C++</title>
    <link>http://bryanhinton.com/news/libpq-examples-for-c</link>
    <description>PGresult *res = PQexec(conn, "BEGIN"); /* begin transaction */
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
   fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
   PQclear(res); exit_nicely(conn);
} PQclear(res); res = PQexec(conn, insertstmt);
...</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>const char *conninfo;<br />PGconn *conn;<br /><br />conninfo = "dbname = dbname user=uname";<br />conn = PQconnectdb(conninfo);<br />if (PQstatus(conn) != CONNECTION_OK) {<br />&nbsp;&nbsp;&nbsp; fprintf(stderr, "Connection to database failed: %s",<br />&nbsp;&nbsp;&nbsp; PQerrorMessage(conn));<br />&nbsp;&nbsp;&nbsp; exit_nicely(conn);<br />}</p>
<p>PGresult *res;<br />res = PQexec(conn, somequery); /* execute query */<br />
if (PQresultStatus(res) != PGRES_TUPLES_OK) {<br />
&nbsp;&nbsp; fprintf(stderr, "Query failed: %s", PQerrorMessage(conn));<br />
&nbsp;&nbsp; PQclear(res);<br />
&nbsp;&nbsp; exit_nicely(conn);<br />
}<br />
<br />
if (j = PQntuples(res)) { /* process query */<br />
&nbsp;&nbsp; for (int i = 0; i &lt; j; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; someint = atoi(PQgetvalue(res, i, 0));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anotherint = atof(PQgetvalue(res, i, 1));<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; PQclear(res);<br />
}<br /></p>
<p>res = PQexec(conn, "BEGIN"); /* begin transaction */<br />if (PQresultStatus(res) != PGRES_COMMAND_OK) {<br />&nbsp;&nbsp; fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));<br />&nbsp;&nbsp; PQclear(res);<br />&nbsp;&nbsp; exit_nicely(conn);<br />}<br />PQclear(res);</p>
<p>res = PQexec(conn, insertstmt);</p>
<p>if (PQresultStatus(res) != PGRES_COMMAND_OK) { /* insert */</p>
<p>&nbsp;&nbsp; fprintf(stderr, "INSERT command failed: %s", PQerrorMessage(conn));</p>
<p>&nbsp;&nbsp; PQclear(res);</p>
<p>&nbsp;&nbsp; exit_nicely(conn);</p>
<p>}</p>
<p>PQclear(res);</p>
<p>&nbsp;</p>
<p>res = PQexec(conn, "END"); /* end transaction */</p>
<p>PQclear(res);</p>
<p>PQfinish(conn);</p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-04-18T16:18:41Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/4g-wireless">
    <title>4G Wireless</title>
    <link>http://bryanhinton.com/news/4g-wireless</link>
    <description>4G, the world's next generation wireless system will allow interoperability between services providers, open device connectivity, potentially fewer base stations, and up to 100                                                                                                                                                                                                                                                                                                                                                                                                     Mbps per second download speeds.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[The FCC recently auctioned off 1000 700 MHZ spectrum licenses.&nbsp; Among the top bidders were AT&amp;T, Verizon, and Google.&nbsp; AT&amp;T and Verizon were the top bidders; however, Google was there driving the bids and embracing open access principles.&nbsp; AT&amp;T reportedly aquired 227 licenses in the B block for a total price of $6.6 Billion and Verizon spend $9.4 Billion on 109 licenses.&nbsp; While Verizon purchases licenses in the A and B blocks, its big win was in the C block.&nbsp; The C block must be open to all devices and applications. Sound familiar?&nbsp; Verizon is indeed following in Google's footsteps - pursuing open interoperability and enlisting every open source developer.&nbsp; This is a stark contrast from their previous position - one in which they controlled every device on their network.&nbsp; According to Verizon wireless executives, <span id="intellitxt">"Not only will third parties be
able to connect a wide range of devices to Verizon's current CDMA and
upcoming LTE networks, they'll be able to act
as wholesalers and define their own service plans".<br />As of today, several of the major telecommunications electronics companies are working on 700 Mhz technologies; namely Ericcson.<br />Reports of network interoperability are already surfacing.&nbsp; And even more interesting, 100 Mbps speeds on the wireless network will most assuredly put the DSL and Cable model companies completely out of the market.&nbsp; 10 Years ago, many minds in academia were projecting the convergence of telecommunications and the internet.&nbsp; And here we find ourself - only a few years away.<br /><br /></span>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2008-04-07T01:18:18Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/classic-guitars">
    <title>Vintage Sound</title>
    <link>http://bryanhinton.com/news/classic-guitars</link>
    <description>Vintage sound reproduction with a classic instrument - 1965 Guild Starfire electric guitar w/ D'Addario Chrome Flatwounds</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>On my quest to reproduce that vintage electric guitar sound from the 60's, I recently discovered Pyramid and Vinci strings - alongside my father's 1965 cherry red Guild Starfire.</p>
<p>This particular guitar has a prominent history. Namely, it was played by Jerry Garcia on the first Dead album. The album was released in 1967.</p>
<p>In their later years, Weir reportedly used Pyramids and Jerry played on Vinci strings.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img class="image-inline" src="../photos/cherrystarfire.jpg" alt="" /></p>
<p>&nbsp;</p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2008-03-16T05:10:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/libpq-vs-libpqxx">
    <title>Libpq vs Libpqxx</title>
    <link>http://bryanhinton.com/news/libpq-vs-libpqxx</link>
    <description>Libpq is the C application programmer's interface to PostgreSQL and Libpqxx is the C++ application programmer's interface to PostgreSQL.
Libpqxx actually wraps the functions in Libpqxx. Libpqxx is slower than Libpq and Libpqxx 2.6.9 is not compatible with PostgreSQL 8.3 and GCC 4.1.x on Red Hat / Fedora 5.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>After using Libpqxx for the past 5 years on a PostgreSQL 7.4 database, I migrated the PostgreSQL 7.4 database to 8.3 and Libpqxx to the current stable version - 2.6.9.<br />We are running dual quad core xeon's on a 64 bit Red Hat Entrprise 5 Server with GCC 4.1.x.&nbsp; Libpqxx is just a wrapper library around Libpqx so there are performance issues because you can just call into libpq directly without incurring object / template overhead in&nbsp; your code.&nbsp; There are io errors in the libpqxx classes for insertion statements - i.e. improper object destruction and improper transaction destruction - thereby causing memory leaks. I turned on DEBUG5 in the postgreSQL 8.3 database and closely monitored the log files.&nbsp; After deciding to migrate the code to use libq, I was very pleased with the results. Error checking is simple, code execution is faster, and library / executable sizes were reduced.&nbsp; If you are not married to C++ objects, then I highly recommend replacing libpqxx with libpq in your C++ code. The conversion is simple. Please e-mail me for examples if you are interested.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2008-03-01T01:25:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/sarbanes-oxley-section-404-it-compliance">
    <title>Sarbanes-Oxley Section 404 IT Compliance</title>
    <link>http://bryanhinton.com/news/sarbanes-oxley-section-404-it-compliance</link>
    <description>Risk Management Solutions for Sarbanes-Oxley 404 IT Compliance, by John S. Quarterman</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>John S. Quarterman, has made significant contributions to software and technology over the past 40 years.&nbsp; He originally worked on ARPANET while attending Harvard in 1974. He co-authored one of the most influential computer science theory texts ever written - The Design and Implementation of the 4.4 BSD Operating System. This book helped shape the design of the TCP/IP protocol suite. He also helped start UUNET - the first internet service provider. His contributions are vast.</p>
<p>His latest book,&nbsp;<a href="http://www.quarterman.com/book/risk/">
Risk Management Solutions for Sarbanes-Oxley Section 404 IT Compliance,</a> is a required read for all professionals working in regulated environments.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-02-28T02:20:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/explaining-bsd">
    <title>Explaining BSD</title>
    <link>http://bryanhinton.com/news/explaining-bsd</link>
    <description>In the open source world, the word “Linux” is almost synonymous with “Operating System”, but it is not the only open source UNIX® operating system.
BSD stands for “Berkeley Software Distribution”. It is the name of distributions of source code from the University of California, Berkeley, which were originally extensions to AT&amp;T's Research UNIX operating system. </description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a title="Explaining BSD" class="internal-link" href="../docs/freebsd/articles/explaining-bsd">Explaining BSD</a></p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-02-28T01:00:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/ruby-on-rails-installation">
    <title>Ruby on Rails Installation</title>
    <link>http://bryanhinton.com/news/ruby-on-rails-installation</link>
    <description>Ruby on Rails configuration on Linux</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p><a title="Ruby on Rails Installation How To" class="internal-link" href="../docs/ruby-on-rails/articles/railsinstallhowto.html">Ruby on Rails Installation How To</a></p>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2008-02-26T20:42:07Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>


  <item rdf:about="http://bryanhinton.com/news/Plone-3-Buildout.cfg">
    <title>Plone 3 zc.buildout</title>
    <link>http://bryanhinton.com/news/Plone-3-Buildout.cfg</link>
    <description>Using zc.buildout to setup a Plone3/Zope2 Development Environment</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[
<p>&nbsp;</p>
How to install Zope2 and Plone3 using setuptools, zc.buildout, and paster.&nbsp;
The following assumes that you have Python2.4.x installed.
<div class="method-source-code">
<pre>$ echo $LD_LIBRARY_PATH; echo $PATH; echo $PYTHONPATH

/usr/local/pgsql/lib:/home/bhinton/python2.4/lib:/usr/local/lib:/usr/lib
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/bhinton/bin:/home/bhinton/lib/python2.4
/home/bhinton/lib/python2.4

$ wget http://peak.telecommunity.com/dist/ez_setup.py

$ python ez_setup.py --install-dir=/home/bhinton/lib/python2.4/

$ easy_install ZopeSkel --install-dir=/home/bhinton/lib/python2.4/

$ paster create -t plone3_buildout mysite.com

$ Selected and implied templates:
&nbsp; ZopeSkel#plone3_buildout&nbsp; A buildout for Plone 3 projects
&nbsp; Variables:
&nbsp;&nbsp;&nbsp; egg:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; avidcode.com
&nbsp;&nbsp;&nbsp; package:&nbsp; avidcodecom
&nbsp;&nbsp;&nbsp; project:&nbsp; avidcode.com
&nbsp; Enter zope2_install (Path to Zope 2 installation; leave blank to fetch one) ['']: BLANK
&nbsp; Enter plone_products_install (Path to directory containing Plone products; leave blank to fetch one) ['']: BLANK
&nbsp; Enter zope_user (Zope root admin user) ['admin']: YOURUSERNAME
&nbsp; Enter zope_password (Zope root admin password) ['']: YOURPASSWORD
&nbsp; Enter http_port (HTTP port) [8080]: HIGH NUMBERED PORT - i.e. 8090
&nbsp; Enter debug_mode (Should debug mode be "on" or "off"?) ['off']: LEAVE OFF FOR PRODUCTION
&nbsp; Enter verbose_security (Should verbose security be "on" or "off"?) ['off']: LEAVE OFF FOR PRODUCTION
&nbsp; Creating template plone3_buildout
&nbsp; Creating directory ./avidcode.com
&nbsp; Copying README.txt to ./avidcode.com/README.txt
&nbsp; Copying bootstrap.py to ./avidcode.com/bootstrap.py
&nbsp; Copying buildout.cfg_tmpl to ./avidcode.com/buildout.cfg
&nbsp; Recursing into products
&nbsp;&nbsp;&nbsp; Creating ./avidcode.com/products/
&nbsp;&nbsp;&nbsp; Copying README.txt to ./avidcode.com/products/README.txt
&nbsp; Recursing into src
&nbsp;&nbsp;&nbsp; Creating ./avidcode.com/src/
&nbsp;&nbsp;&nbsp; Copying README.txt to ./avidcode.com/src/README.txt
&nbsp; Recursing into var
&nbsp;&nbsp;&nbsp; Creating ./avidcode.com/var/
&nbsp;&nbsp;&nbsp; Copying README.txt to ./avidcode.com/var/README.txt



<p>-----------------------------------------------------------</p>



Generation finished
You probably want to run python bootstrap.py and then edit
buildout.cfg before running bin/buildout -v
&nbsp;
See README.txt for details



<p>-----------------------------------------------------------</p>




$ cd avidcode.com

$ python bootstrap.py
</pre>
</div>
You must now configure buildout.cfg appropriately.
<div class="visualClear">The following two configurations depict the following
<p>&nbsp;</p>
<div class="visualClear">A: Single Instance of Zope with CacheFU, DocFinder, CacheFu, and Feedmixer
<div class="visualClear">&nbsp;&nbsp;&nbsp; installed.<br /><br /></div>
<p>&nbsp;&nbsp;&nbsp; <a title="buildout.cfg" class="internal-link" href="../docs/custom/buildout.cfg">buildout.cfg</a></p>
<p>&nbsp;</p>
<div class="visualClear">B. Multiple ZEO Clients and a Single ZEO Server with CacheFu, Varnish,&nbsp; DocFinder, and Clouseau installed. The ZEO &nbsp;&nbsp;&nbsp;&nbsp;Server is responsible for managing the connection to the ZODB.</div>
<div class="visualClear">&nbsp;&nbsp;&nbsp;</div>
<div class="visualClear">&nbsp;&nbsp;&nbsp; <a title="buildout.cfg (dev client)" class="internal-link" href="../docs/custom/copy_of_buildout.cfg">buildout.cfg</a></div>
<div class="visualClear">&nbsp;&nbsp;&nbsp; <a title="deployment.cfg (production client)" class="internal-link" href="../docs/custom/copy2_of_buildout.cfg">deployment.cfg</a></div>
<div class="visualClear">&nbsp;&nbsp;&nbsp; <a title="plone.vcl" class="internal-link" href="../docs/custom/plone.vcl">plone.vcl</a></div>
<p>&nbsp;</p>
<p>Apache Rewrite Rules for Example B:</p>
<div class="visualClear">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteEngine On</div>
<div class="visualClear">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteRule ^/login_(.*) https://%{SERVER_NAME}/login_$1 [NE,L]</div>
<div class="visualClear">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RewriteRule ^/(.*)&nbsp;&nbsp;&nbsp;&nbsp;</div>
<div class="visualClear">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://localhost:8092/VirtualHostBase/http/%{SERVER_NAME}:80/content/VirtualHostRoot/$1 [P]</div>
</div>
</div>
]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>zadmin</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Computing</dc:subject>
    
    <dc:date>2008-02-26T01:15:00Z</dc:date>
    <dc:type>News Item</dc:type>
  </item>





</rdf:RDF>

