<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Pete&apos;s Place</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/" />
<modified>2007-07-03T11:03:09Z</modified>
<tagline></tagline>
<id>tag:www.peterguy.com,2007://2</id>
<generator url="http://www.movabletype.org/" version="3.15">Movable Type</generator>
<copyright>Copyright (c) 2007, Peter</copyright>
<entry>
<title>Updated PHP Install Guide</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2007/07/updated_php_ins.html" />
<modified>2007-07-03T11:03:09Z</modified>
<issued>2007-07-03T11:09:52Z</issued>
<id>tag:www.peterguy.com,2007://2.12</id>
<created>2007-07-03T11:09:52Z</created>
<summary type="text/plain">I&apos;m migrating to a new server, so I took advantage of the process to update my PHP Install Guide. It&apos;s now updated for PHP 5.2.3. I modified some things, such as the list of extensions, and another troubleshooting entry, but...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>I'm migrating to a new server, so I took advantage of the process to update my <a href="http://www.peterguy.com/php/install_IIS6.html">PHP Install Guide</a>.  It's now updated for PHP 5.2.3.  I modified some things, such as the list of extensions, and another troubleshooting entry, but most of it still applies.<br />
It has attracted enough attention to have a translation.  Matej in Slovenia translated it into his native tongue; you can find it in his blog: <a href="http://www.butara.si/matej/index.php/?p=33">http://www.butara.si/matej/index.php/?p=33</a>.  Thanks Matej!<br />
Thanks, as well, goes out to all those who have written in contributing tips and suggestions.</p>]]>

</content>
</entry>
<entry>
<title>Serializing a generic dictionary in .NET 2.0 using the BinaryFormatter</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2007/04/serializing_a_g.html" />
<modified>2007-04-30T19:53:51Z</modified>
<issued>2007-04-30T19:35:00Z</issued>
<id>tag:www.peterguy.com,2007://2.11</id>
<created>2007-04-30T19:35:00Z</created>
<summary type="text/plain"><![CDATA[When using the BinaryFormatter to serialize a strongly-typed dictionary that extends System.Collections.Generic.Dictionary&lt;>, I found out that one must add a constructor that accepts SerializationInfo and StreamingContext parameters, then just passes those on to the base class: using System; using System.Text;...]]></summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>
<dc:subject>Programming</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>When using the BinaryFormatter to serialize a strongly-typed dictionary that extends System.Collections.Generic.Dictionary<>, I found out that one must add a constructor that accepts SerializationInfo and StreamingContext parameters, then just passes those on to the base class:<br />
<pre><br />
using System;<br />
using System.Text;<br />
using System.Collections;<br />
using System.Collections.Generic;<br />
using System.Runtime.Serialization;</p>

<p>namespace MyNamespace.DataTypes {<br />
  [Serializable]<br />
  public class MyDictionary: Dictionary<int, MyCustomObject> {<br />
    public MyDictionary()<br />
      : base() {<br />
    }<br />
    public MyDictionary(SerializationInfo info, StreamingContext context)<br />
      : base(info, context) {<br />
    }<br />
  }<br />
}<br />
</pre></p>

<p>The error I was getting was, "System.Runtime.Serialization.SerializationException: The constructor to deserialize an object of type 'MyNamespace.DataTypes.MyDictionary' was not found."</p>

<p>I got the idea here: <a href="http://www.vbforums.com/showthread.php?t=314430">http://www.vbforums.com/showthread.php?t=314430</a>, which has the code example in VB.NET.</p>

<p>To serialize Dictionary objects using an XML serializer, you have to implement a custom dictionary as described here: <a href ="http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx">http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx</a>.<br />
</p>]]>

</content>
</entry>
<entry>
<title>Updated PHP guide</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2007/02/updated_php_gui.html" />
<modified>2007-02-15T05:30:14Z</modified>
<issued>2007-02-15T05:23:59Z</issued>
<id>tag:www.peterguy.com,2007://2.10</id>
<created>2007-02-15T05:23:59Z</created>
<summary type="text/plain">I have gotten a few e-mails recently about errors when using the test.php page I provide in the testing section. The errors were of the type: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by... Warning: session_start()...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>
<dc:subject>PHP</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>I have gotten a few e-mails recently about errors when using the test.php page I provide in the testing section.</p>

<p>The errors were of the type:</p>

<p>Warning: session_start() [function.session-start]: Cannot send session<br />
cookie - headers already sent by...</p>

<p>Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent...</p>

<p>One of those who reported the errors also provided a solution, which was to place the PHP session code before any of the html code.  Perhaps the newer versions of PHP (I only have 5.1.1 installed) are getting more syntactically tighter.  I know the newer versions of PHP are requiring full PHP tags now.</p>

<p>Anyway, there is a new version of the test.php code in <a href="http://www.peterguy.com/php/install_IIS6.html">my PHP install guide</a></p>]]>

</content>
</entry>
<entry>
<title>MS Word - VBA - StoryRanges - Odd-page headers</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/09/ms_word_vba_sto_1.html" />
<modified>2006-09-19T22:24:01Z</modified>
<issued>2006-09-19T22:08:51Z</issued>
<id>tag:www.peterguy.com,2006://2.9</id>
<created>2006-09-19T22:08:51Z</created>
<summary type="text/plain">Daily trivia: Document.StoryRanges does not explicitly return odd-page headers/footers. Instead, they&apos;re linked from the even-page ones. One has to use Range.NextStoryRange on the even-page headers/footers to get the odd-page ones....</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>
<dc:subject>Programming</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Daily trivia:<br />
Document.StoryRanges does not explicitly return odd-page headers/footers.  Instead, they're linked from the even-page ones.  One has to use Range.NextStoryRange on the even-page headers/footers to get the odd-page ones.<br />
</p>]]>
<![CDATA[<p>Because example code is always nice, here's my function to grab _all_ of the ranges in a document, updated with this knowledge:</p>

<p><code><br />
' Builds a collection of all the ranges in this document.<br />
' (StoryRanges, which include the headers and footers, augmented with any text box ranges)<br />
' also include linked ranges via NextStoryRange to grab the odd page header/footers<br />
Private Function AllRanges(Optional Doc As Document) As Collection<br />
  Dim Rng As Range<br />
  Dim Sh As Shape<br />
  Set AllRanges = New Collection<br />
  If Doc Is Nothing Then Set Doc = ActiveDocument<br />
  For Each Rng In Doc.StoryRanges<br />
    While Not Rng Is Nothing<br />
      AllRanges.Add Rng<br />
      Set Rng = Rng.NextStoryRange<br />
    Wend<br />
  Next Rng<br />
  ' Grab all of the text boxes in the document, too.<br />
  ' Use .ContainingRange to return the entire story that flows between linked text frames,<br />
  ' but examine .Previous to make sure I grab it only once - from the first box in the chain.<br />
  For Each Sh In Doc.Shapes<br />
    With Sh.TextFrame<br />
      If .HasText And .Previous Is Nothing Then AllRanges.Add .ContainingRange<br />
    End With<br />
  Next Sh<br />
End Function<br />
</code></p>]]>
</content>
</entry>
<entry>
<title>Oracle Forms goodness - extending the text fields</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/09/oracle_forms_go.html" />
<modified>2006-09-19T22:27:28Z</modified>
<issued>2006-09-18T18:03:23Z</issued>
<id>tag:www.peterguy.com,2006://2.8</id>
<created>2006-09-18T18:03:23Z</created>
<summary type="text/plain">I&apos;ve gotten pretty frustrated with the Forms development environment, so I never thought I&apos;d see the word &quot;goodness&quot; combined with &quot;Oracle Forms&quot;, but recently I&apos;ve made a breakthrough of sorts that has really encouraged me to pursue more elegent Forms...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>I've gotten pretty frustrated with the Forms development environment, so I never thought I'd see the word "goodness" combined with "Oracle Forms", but recently I've made a breakthrough of sorts that has really encouraged me to pursue more elegent Forms programming.</p>

<p>Every Oracle Form is composed of Java objects.  Text fields, buttons, frames, you name it, they are all some derivitive of Java awt or swing objects.  As such, they can be extended.<br />
Sounds simple, even too simple, doesn't it?  Well, it really is!<br />
If you're a Forms developer, there's a good chance that you know about embedding Java Beans (also called PJCs - Pluggable Java Components) into your Forms.  They're really cool and can be used to accomplish all kinds of things.  This takes PJCs one level further.</p>]]>
<![CDATA[<p>Let's assume that you have a text field to which you want to apply special effects.  One of the most popular effects is to make the field behave like a hyperlink: blue in color, underlined, and, most importantly, having the mouse cursor change to the historical "hand".<br />
Applying the color and underline are straightforward Forms development features, but the mouse cursor is another matter entirely.  Ever since Forms became "webified", the ability to natively capture mouse-over events has disappeared because the traffic required for the server to track mouse movement is huge.  However, PJCs run on the client, so we can employ them to implement mouse over effects.  Oracle has provided a Hyperlink Bean in its demo package, but the drawback of the Hyperlink bean is that it takes too long to load, so having a decent number of them in a Form (say, 10 - 20) causes the Form load time to go through the roof.<br />
However, if you write a class that extends the Forms text field, you can apply that class to select fields using the Implementation Class in the Properties Page, and the load time (so long as you don't do extravent things in the constructor) is the same as a regular text field.<br />
Now, take that and apply it to ANY forms object.  Write a class that extends the button object to implement "rollover" effects.  Or how about extending text fields so that they scroll their text like a ticker tape?  Or image objects that load new images every x seconds?</p>

<p>Anyway, here's one implementation I came up with.  This text field extension underlines the text and does the following on mouseover: turns the cursor into a hand, makes the font bold, changes the font color to red, changes the background color to gray.  You can easily add Property IDs to control the behavior.  This concept and most of the code was taken from the Oracle demo ModCursor:</p>

<p><code><br />
import java.awt.Graphics;<br />
import java.awt.Color;<br />
import java.awt.FontMetrics;<br />
import java.awt.Font;<br />
import oracle.forms.ui.VTextField;<br />
import oracle.forms.properties.ID;<br />
import oracle.forms.handler.IHandler;</p>

<p>import java.awt.event.MouseAdapter;<br />
import java.awt.event.MouseEvent;<br />
import java.awt.Cursor;</p>

<p>public class Hotlink<br />
       extends VTextField<br />
{</p>

<p>  private Cursor stdCursor;</p>

<p>  private Font stdFont;<br />
  private int stdStyle;<br />
  <br />
  private Color stdForeColor;<br />
  private Color stdBackColor;</p>

<p>  public Hotlink()<br />
  {<br />
    super();<br />
  }<br />
  <br />
  public void init(IHandler h)<br />
  {<br />
    super.init(h);<br />
    <br />
    stdCursor = this.getCursor();<br />
    <br />
    this.addMouseListener(new MouseAdapter()<br />
    {<br />
      public void mouseEntered(MouseEvent me)<br />
      {<br />
        if(getTextLength() > 0)<br />
        {<br />
          ((VTextField)me.getSource()).setForeground(Color.red);<br />
          ((VTextField)me.getSource()).setBackground(Color.lightGray);<br />
          setFont(stdFont.deriveFont(Font.BOLD));<br />
          setCursor(new Cursor(Cursor.HAND_CURSOR));<br />
        }<br />
      }<br />
      public void mouseExited(MouseEvent me)<br />
      {<br />
        if(getTextLength() > 0)<br />
        {<br />
          ((VTextField)me.getSource()).setForeground(stdForeColor);<br />
          ((VTextField)me.getSource()).setBackground(stdBackColor);<br />
          setFont(stdFont);<br />
          setCursor(stdCursor);<br />
        }<br />
      }<br />
    });<br />
  }<br />
  <br />
  public void paint(Graphics g)<br />
  {<br />
    super.paint(g);<br />
    if (this.getTextLength() > 0)<br />
    {<br />
      FontMetrics metrics = getFontMetrics(getFont());<br />
      int strWidth = metrics.stringWidth(getText());<br />
      int yoffset = (int)(metrics.getHeight() * 0.95);<br />
      g.drawLine(0, yoffset, strWidth, yoffset);<br />
    }<br />
  }<br />
  <br />
  public boolean setProperty(ID pid, Object value)<br />
  {<br />
    if(pid.getName().equals("FOREGROUND")) this.stdForeColor = (Color)value;<br />
    else if(pid.getName().equals("BACKGROUND")) this.stdBackColor = (Color)value;<br />
    else if(pid.getName().equals("FONT")) this.stdFont = (Font)value; <br />
    return super.setProperty(pid, value);<br />
  }<br />
}<br />
</code></p>]]>
</content>
</entry>
<entry>
<title>Spam Honey Pot</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/08/spam_honey_pot.html" />
<modified>2006-08-23T19:58:16Z</modified>
<issued>2006-08-23T19:55:04Z</issued>
<id>tag:www.peterguy.com,2006://2.7</id>
<created>2006-08-23T19:55:04Z</created>
<summary type="text/plain">I just added a spam honey pot (http://projecthoneypot.org) to my website. This entry is mainly for the purpose of including links to the honeypot page on my home page. The links should all be invisible, but a spider will follow...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>I just added a spam honey pot (http://projecthoneypot.org) to my website.<br />
This entry is mainly for the purpose of including links to the honeypot page on my home page.<br />
The links should all be invisible, but a spider will follow them...</p>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp"><!-- flippant --></a></p>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp"><img src="flippant.gif" height="1" width="1" border="0"></a></p>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp" style="display: none;">flippant</a></p>

<div style="display: none;"><a href="http://www.peterguy.com/spamhoneypot/earl.asp">flippant</a></div>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp"></a></p>

<p><!-- <a href="http://www.peterguy.com/spamhoneypot/earl.asp">flippant</a> --></p>

<div style="position: absolute; top: -250px; left: -250px;"><a href="http://www.peterguy.com/spamhoneypot/earl.asp">flippant</a></div>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp"><span style="display: none;">flippant</span></a></p>

<p><a href="http://www.peterguy.com/spamhoneypot/earl.asp"><div style="height: 0px; width: 0px;"></div></a></p>]]>

</content>
</entry>
<entry>
<title>Genyouine Potluck Casserole</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/06/genyouine_potlu.html" />
<modified>2006-06-14T05:21:15Z</modified>
<issued>2006-06-14T04:10:52Z</issued>
<id>tag:www.peterguy.com,2006://2.6</id>
<created>2006-06-14T04:10:52Z</created>
<summary type="text/plain">Tonight I made a Genyouine Potluck Casserole (tm) for dinner. I&apos;m rather proud of it. I even had to do some extra shopping (we were out of cheese). I&apos;m sure most of you know about the Potluck Casserole. Rather nondescript-tasting,...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Tonight I made a Genyouine Potluck Casserole (tm) for dinner.  I'm rather proud of it.  I even had to do some extra shopping (we were out of cheese).<br />
I'm sure most of you know about the Potluck Casserole.  Rather nondescript-tasting, mushy and lukewarm, it is invariably covered with cheese and usually contains corn of some description.  The more fashion-conscience garnish it with a dash of paprika and perhaps a sprig of parsely.  One of the hallmarks of the Potluck Casserole is that it requires a bottle of tabasco and a liberal arm for it to aquire any definite taste.<br />
I made mine out of leftover angel hair (cappellini to those who read food labels), a smallish can of beef chili - with beans - and a large-ish can of cooked tomatoes.  Oh, yes, and canned corn.  I cut up the pasta and simmered it all together in a pot while I went out to buy the cheese.<br />
Home once more, I mixed in some of the shredded cheese, poured the whole gooey mess into a 9x14, covered it with the rest of the cheese (can't have too much) and broiled it for a few minutes.<br />
Rather abashed that my cupboard rummaging did not produce any paprika, I served it to my family, being sure to include a bottle of Red Hot (Southern Tabasco) on the table.<br />
As I sunk my teeth into the first bite, I was pleased to find that it had all the characterizations of a Genyouine Potluck Casserole. :-)<br />
Now you, too, can astonish your friends at your next office party or church potluck!</p>]]>

</content>
</entry>
<entry>
<title>Oracle + Java + SOAP + PHP = headache</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/01/oracle_java_soa.html" />
<modified>2006-01-20T23:16:19Z</modified>
<issued>2006-01-20T05:21:11Z</issued>
<id>tag:www.peterguy.com,2006://2.5</id>
<created>2006-01-20T05:21:11Z</created>
<summary type="text/plain">Well, I promised some stuff about my most recent project; here&apos;s the first installment. I am just completing writing a Web Service in Java that&apos;s deployed on Oracle&apos;s Application Server. The actual Java code to implement the basic Web Service...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Well, I promised some stuff about my most recent project; here's the first installment.<br />
I am just completing writing a Web Service in Java that's deployed on Oracle's Application Server.  The actual Java code to implement the basic Web Service was very simple to write.  I use Oracle's JDeveloper (probably the nicest all-around Java IDE I've used.  Not w/out its drawbacks, but overall the best one I've tried), so I just wrote a class with some public methods, used JDeveloper's deployment tools, and I had a Web Service.  That was the easy part.</p>]]>
<![CDATA[<p>The difficulties reared their ugly heads up when I started getting grand ideas about the WSDL.  There are two ways to approach WSDL creation: Write it first, then use it to generate both the server-side and client-side skeleton code, or you can write the server-side skeleton and use a tool to generate a WSDL, from which client code can be generated.  I elected to do the latter: writing my Java server-side code and using first AXIS, then JDeveloper to generate a WSDL from the classes.  Oracle's Application Server also has the ability to generate a WSDL from a Web Service on the fly, but that WSDL is ugly and not very useful, so I never really considered it as an option.<br />
One of the first ways I wanted to improve upon the WSDL was to remove the Java class package names.  For example, if my classes were in the package peter.webservices, then whenever one of my classes appeared in the WSDL, it was referred to as peter_webservices_<class name>.  Not wanting any consumers of my web service to have to refer to any objects with the package name prepended, I spent a bit of time removing those package names from the WSDL.  I first tried creating packageless classes, which looked good in the WSDL, but then I had to use the "tempuri.org" namespace (see <a href="http://tempuri.org">tempuri.org</a> for more info about that namespace) in order for the server to recognize the objects.<br />
Cutting through hours of research and testing, I finally figured out that I could add to the web.xml file included in the deployment "war" file, a "custom-bean-qname" parameter that mapped WSDL complex type names to my Java class names.  I got the idea <a href="http://www.oracle.com/technology/tech/webservices/htdocs/samples/serialize/index.html">here</a>, then extended it to multiple mappings by separating mappings with semi-colons.  I never found any mention of using a semi-colon to declare multiple mappings; found that through trial and error (mainly error).<br />
My next battle was saving the actual request for auditing purposes.  by the time my Java code had access to the request, it was parsed into parameters and classes.  More on that later.</p>]]>
</content>
</entry>
<entry>
<title>Another year, another, uh, dollar?</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2006/01/another_year_an.html" />
<modified>2006-01-20T05:20:38Z</modified>
<issued>2006-01-20T04:58:00Z</issued>
<id>tag:www.peterguy.com,2006://2.4</id>
<created>2006-01-20T04:58:00Z</created>
<summary type="text/plain">Well, it&apos;s another year. Doh. Anyway, I&apos;m mainly writing this entry so that this page isn&apos;t blank. I changed the template; added links to the PHP install guide and the colormatch page on the side. Well, that&apos;s cool, but in...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Well, it's another year.<br />
Doh.<br />
Anyway, I'm mainly writing this entry so that this page isn't blank.<br />
I changed the template; added links to the PHP install guide and the colormatch page on the side.  Well, that's cool, but in order to display them, I had to rebuild the page.  I accidentally rebuilt the whole site, resulting in my previous posts being relegated to the archives, with the front page left blank.<br />
You can check out the new links over there ------------------------><br />
Rather than having a blank front page, I figured I'd post some inane dribble to fill space.</p>]]>
<![CDATA[<p>I should actually post some more useful content based on some of the work I've been doing recently.<br />
I'm just wrapping up a web service written in Java, hosted on an Oracle Application Server.  I wrote an SDK for client-side use, and one of our clients is writing a PHP-based client using PHP 5's new SOAP implementation.  The project has been much longer than anticipated, mainly because of unforseen bugs and glitches with both the Oracle SOAP server platform and the PHP client-side SOAP implementation.<br />
I'll work up another post related to that...</p>]]>
</content>
</entry>
<entry>
<title>PHP install guide</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2005/03/php_install_gui.html" />
<modified>2005-03-20T02:25:57Z</modified>
<issued>2005-03-20T02:21:16Z</issued>
<id>tag:www.peterguy.com,2005://2.2</id>
<created>2005-03-20T02:21:16Z</created>
<summary type="text/plain">Thanks to help from others, I have a shiny new html-formatted guide for installing PHP under Windows Server 2003/IIS6!! It&apos;s been update, corrected, AND expanded. :-)...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Thanks to help from others, I have a <a href="http://www.peterguy.com/php/install_IIS6.html">shiny new html-formatted guide</a> for installing PHP under Windows Server 2003/IIS6!!<br />
It's been update, corrected, AND expanded. :-) </p>]]>

</content>
</entry>
<entry>
<title>It&apos;s a brave new world</title>
<link rel="alternate" type="text/html" href="http://www.peterguy.com/archives/2005/03/its_a_brave_new.html" />
<modified>2005-03-20T02:09:16Z</modified>
<issued>2005-03-20T02:04:12Z</issued>
<id>tag:www.peterguy.com,2005://2.1</id>
<created>2005-03-20T02:04:12Z</created>
<summary type="text/plain">Well, this is my first entry in my new website. I decided to use a blog format because that would allow me to have to worry only about content, and leave the managements to software. Since I don&apos;t have much...</summary>
<author>
<name>Peter</name>
<url>http://www.peterguy.com</url>
<email>peter@peterguy.com</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.peterguy.com/">
<![CDATA[<p>Well, this is my first entry in my new website.<br />
I decided to use a blog format because that would allow me to have to worry only about content, and leave the managements to software.  Since I don't have much content, I don't need to worry much! :-)</p>]]>

</content>
</entry>

</feed>
