<?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/"
	>

<channel>
	<title>SpencerDrager.com</title>
	<atom:link href="http://www.spencerdrager.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spencerdrager.com</link>
	<description>Design, WordPress, Social Media</description>
	<lastBuildDate>Fri, 14 May 2010 02:56:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>YetAnotherForm (YAF) Theming and Layout Customization</title>
		<link>http://www.spencerdrager.com/2010/05/13/yetanotherform-yaf-themeing-and-layout-customization/</link>
		<comments>http://www.spencerdrager.com/2010/05/13/yetanotherform-yaf-themeing-and-layout-customization/#comments</comments>
		<pubDate>Fri, 14 May 2010 02:12:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[MSSQL]]></category>
		<category><![CDATA[Skinning]]></category>
		<category><![CDATA[Theming]]></category>
		<category><![CDATA[YAF]]></category>
		<category><![CDATA[YetAnotherForum]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=748</guid>
		<description><![CDATA[YetAnotherForum (YAF — pronounce &#8220;laugh&#8221;) is a forum package based on ASP.NET (C#) and Microsoft SQL Server. It has tons of features and functionality, and it use my , but when tasked with customizing it&#8230; well, that can be not quite so easy. Creating a custom Theme/Skin for YAF Skinning YetAnotherForum is kind of self [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yetanotherforum.net/">YetAnotherForum</a> (YAF — pronounce &#8220;laugh&#8221;) is a forum package based on ASP.NET (C#) and Microsoft SQL Server. It has tons of features and functionality, and it use my , but when tasked with customizing it&#8230; well, that can be not quite so easy.<br />
<span id="more-748"></span></p>
<h2>Creating a custom Theme/Skin for YAF</h2>
<p>Skinning YetAnotherForum is kind of self evident. Just copy an existing theme folder and XML file from the <code>themes</code> folder. All there is to it is a theme.css file in the folder (and a bunch of images) and the settings in the XML file. Done.</p>
<h2>Modifying the Layout of YAF</h2>
<p>For as easy as changing the theme of YAF is, changing the actual layout is a time-consuming and involved process. And there are a few things which are not as evident from quick google searches or examining the code. So take a lesson from me and save yourself hours of time.</p>
<h3>1. You cannot easily remove elements by commenting out the C#</h3>
<p>Almost any main &lt;YAF:Element&gt; you try to comment out will trigger errors when you try to compile due to dependent blocks elsewhere. And the source of the errors may not always be apparent. You may be able to fix those errors, but chances are it will not be worth your effort. This is a pain because depending on what you want to do you may want to eliminate some elements from showing. This may be typical for ASP.NET, but coming from PHP it prevented a learning curve. Many things you may want to remove can be removed by changing BoardSettings. (See next tip)</p>
<h3>2. YafContext.Current.BoardSettings are stored in the database</h3>
<p>Once you start investigating the depths of the page and class files of YAF, you will eventually start noticing how many part of the board are in hide/show if blocks based on a value of YafContext.Current.BoardSettings.[something]. Other parts of the forum look to these settings for things.</p>
<p>I can&#8217;t tell you how many searches I made trying to find what file BoardSettings are stored in. I still don&#8217;t know if there is a file with defaults. I didn&#8217;t find it despite much searching.</p>
<p>These settings can be changed in the database under the <code>Registry</code> table. Easy peasy? I got thrown off because many of the settings are not in the table. If they are not in the table, you will have to insert a row. The &#8220;value&#8221; field is a string, so numbers and boolean values are stored just as their string equivalent. i.e. a true value can be stored as the string &#8220;true&#8221;.</p>
<h3>3. The logical structure of the code is as follows</h3>
<p>This may seem elementary, but I&#8217;m new to ASP.NET and working with modifying larger(ish) packages. It would have been helpful to me to have a diagram or even just a quick explanation of the layout of what calls what. <img class="alignleft size-full wp-image-764" style="margin: 0px; border: 0px;" title="YAF-diagram" src="http://www.spencerdrager.com/wp-content/uploads/2010/05/YAF-diagram2.png" alt="YAF file structure diagram" width="640" height="514" /><br />
As you can see, any single page may reference a dozen or two files. This can be a serious pain, as those .cs files in the YAF.Controls.dll are in my experience, very tedious to edit. I didn&#8217;t realize I neede the SRC version until I realized I could not access TopicLine.cs, which is necessary to change how the single line each topic is displayed as when you look at a single forum.</p>
<p>And to be clear: There are many more pages, controls, and elements within Controls.dll that aren&#8217;t shown here. Also, there may be some exceptions to the hierarchy shown here.</p>
<h3>4. CSS Class names do not always describe what they refer to</h3>
<p>With class names like .header1, .header1Title, and .rightItem, it is not always easy to tell what element these CSS classes are referring to. This can be particularly challenging when you want to edit what they are referred to and you can&#8217;t locate which source file the element it is referring to spawns in. This is more of a heads up than an actual tip.</p>
<h2>Enjoy, and Contribute</h2>
<p>That&#8217;s all the tips I have for you today about YetAnotherForum. In my one-day&#8217;s experience with them, I found it to be a little frustrating, however now that I am more familiar with it I feel more confident in the likelihood I would be able to switch things up more rapidly. I hope these tips help other newbies trying to do what I was doing.</p>
<p>If you have any tips/tricks of your own you&#8217;d like to contribute, please feel free to share and comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/05/13/yetanotherform-yaf-themeing-and-layout-customization/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASP.NET: Connecting to MSSQL Server using Windows Authentication/Credentials</title>
		<link>http://www.spencerdrager.com/2010/05/12/asp-net-connecting-to-mssql-server-using-windows-authenticationcredentials/</link>
		<comments>http://www.spencerdrager.com/2010/05/12/asp-net-connecting-to-mssql-server-using-windows-authenticationcredentials/#comments</comments>
		<pubDate>Thu, 13 May 2010 00:56:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Connecting to Database]]></category>
		<category><![CDATA[Microsoft SQL Server]]></category>
		<category><![CDATA[MSSQL]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=742</guid>
		<description><![CDATA[I am learning ASP and ASP.NET for my new job, and today I was working on manipulating a Microsoft SQL database (SCUD) when I ran into a roadblock. I knew I had to use my own user credentials to connect to the secret through ASP.NET, something I thought would be a very simple matter. Well [...]]]></description>
			<content:encoded><![CDATA[<p>I am learning ASP and ASP.NET for my new job, and today I was working on manipulating a Microsoft SQL database (SCUD) when I ran into a roadblock. I knew I had to use my own user credentials to connect to the secret through ASP.NET, something I thought would be a very simple matter. Well after fifteen minutes of attempting to work out why I couldn&#8217;t connect with my username and password (trying variations of the domain/myusername) I finally discovered the MSDN page I needed. Yes, it already exists there, but the fact that it took me so long to find what  I needed means it can&#8217;t hurt to refer to it and reinforce it&#8217;s presence on the web.</p>
<p><span id="more-742"></span></p>
<p>The full MSDN article is <a href="http://msdn.microsoft.com/en-us/library/ff647396.aspx">here</a>. I will summarize the multi-page verbose article with the two important points that you need to make the connection.</p>
<h3>1. Modifying your <code>web.config</code></h3>
<p>Replace &lt;connectionStrings /&gt; with one of the following &lt;add /&gt;&#8217;s:</p>
<pre class="brush: php;">﻿
&lt;connectionStrings&gt;
  &lt;add name=&quot;MyDbConn1&quot;
       connectionString=&quot;Server=MyServer;Database=MyDb;Trusted_Connection=Yes;&quot;/&gt;
  &lt;add name=&quot;MyDbConn2&quot;
      connectionString=&quot;Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;&quot;/&gt;
&lt;/connectionStrings&gt;
&lt;/pre&gt;
</pre>
<p>And obviously, change the MyServer to your server&#8217;s name (i.e. <code>localhost</code> or <code>172.0.0.1</code> or whatever address.), change MyDb to the name of the database you want to use in the server. Simple!</p>
<h3>2. Open the connection in your ASP script</h3>
<p>Use the following code wherever in your script.</p>
<p>At the top of your page, you need to make the include to the framework API:</p>
<pre name="code" class="c-sharp">
&lt;%@ Import Namespace="System.Data.SqlClient" %&gt;</pre>
<p>And then you&#8217;re free to use the following to connect when you need to. This is in C#.</p>
<pre name="code" class="c-sharp">
string connStr = ConfigurationManager.ConnectionStrings["MyDbConn1"].ToString();
SqlConnection conn = new SqlConnection(connStr);
</pre>
<p>And walah! You should be connected.</p>
<p>More short articles will follow further explaining performing queries and outputting data.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/05/12/asp-net-connecting-to-mssql-server-using-windows-authenticationcredentials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launching of site: Zombie Attack Plans</title>
		<link>http://www.spencerdrager.com/2010/05/12/launching-of-site-zombie-attack-plans/</link>
		<comments>http://www.spencerdrager.com/2010/05/12/launching-of-site-zombie-attack-plans/#comments</comments>
		<pubDate>Wed, 12 May 2010 10:50:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[My Sites]]></category>
		<category><![CDATA[website launch]]></category>
		<category><![CDATA[ZombieAttackPlans.com]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=739</guid>
		<description><![CDATA[A few days ago I launch, for the first time, ZombieAttackPlans.com. The site is for users to submit their plans for surviving the zombie apocalypse. If you have some idea of what you want to do, come post it! If you don&#8217;t, come and read others&#8217; plans. Leave feedback, rate plans, vote in the Poll [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.spencerdrager.com/wp-content/uploads/2010/05/zombie.png" alt="" title="zombie" width="600" height="152" class="alignleft size-full wp-image-769" /></p>
<p>A few days ago I launch, for the first time, <a href="http://www.ZombieAttackPlans.com/">ZombieAttackPlans.com</a>. The site is for users to submit their plans for surviving the zombie apocalypse. If you have some idea of what you want to do, come post it! If you don&#8217;t, come and read others&#8217; plans. Leave feedback, rate plans, vote in the Poll of the Week, and read the Tip of the Day (updated daily, as per the name).</p>
<p> Please check it out and leave me some feedback on the site. I want to know how I can make it better. What do you like? And more importantly, what don&#8217;t you like?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/05/12/launching-of-site-zombie-attack-plans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safely Letting Specific HTML Tags Through Sanitization in PHP</title>
		<link>http://www.spencerdrager.com/2010/04/20/safely-letting-specific-html-tags-through-sanitization-in-php/</link>
		<comments>http://www.spencerdrager.com/2010/04/20/safely-letting-specific-html-tags-through-sanitization-in-php/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 03:49:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Character Entities]]></category>
		<category><![CDATA[HTML Entities]]></category>
		<category><![CDATA[input sanitization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[User Input]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=720</guid>
		<description><![CDATA[Sometimes you want to let your users express themselves and style their input—whether it be comments, stories, or whatever else—with a few HTML tags. The trick is doing this without letting through all sorts of bad mojo. Now there are many ways to do this, some more complicated than others. I&#8217;ve devised a fool-proof accomplish [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you want to let your users express themselves and style their input—whether it be comments, stories, or whatever else—with a few HTML tags. The trick is doing this without letting through all sorts of bad mojo. Now there are many ways to do this, some more complicated than others. I&#8217;ve devised a fool-proof accomplish this. While this can work with any tag, (i.e. making [b] into &lt;b&gt;), in this example I&#8217;ll be selectively letting through actual HTML tags, rather than aliases. I like to think that by letting users use real HTML tags I might one day help a computer semi-literate learn the fundamentals of HTML. Who knows?<br />
<span id="more-720"></span><br />
As with most mini-tutorials, I&#8217;ll start with what <em>doesn&#8217;t</em> work.</p>
<h2>What doesn&#8217;t work</h2>
<h3>1. <a href="http://php.net/manual/en/function.strip-tags.php">strip_tags</a></h3>
<p>Strip tags is bad for a few reasons. First, it ends up <em>removing </em>content, and sometimes more than you would think. That is not the goal of [textfield] sanitation. Sanitation is meant to prevent mischief while preserving the integrity of the user&#8217;s message. Secondly, and more importantly:</p>
<blockquote><p>This function does not modify any attributes on the tags that you allow using <em><tt>allowable_tags</tt></em>, including  the <em>style</em> and <em>onmouseover</em> attributes that a mischievous user may abuse when posting text that will be  shown to other users.</p></blockquote>
<p>That is bad for you, bad for me.</p>
<h3>2. <a href="http://php.net/manual/en/function.preg-replace.php">preg_replace</a> (or any other regular expression function)</h3>
<p>Regular expression is great for some things, but trying to create regex algorithms that will accurately do what you want here is not likely, and even if it does, it will be overly-complicated, time consuming, and not quickly modifiable  if you want to allow more tags. Basically, it&#8217;s overkill.</p>
<p>So what <em>is</em> a good way to let certain HTML tags through?</p>
<h2>The Right Way</h2>
<p>The right way is simple and maintains the integrity of the original input by first making a clean sweep, and then going back and choosing what to let through. Here is the code.</p>
<pre>function sanitize_out($input){
  htmlentities($input);
  $c_p_open=0;
  $c_p_close=0;
  $c_b_open=0;
  $c_b_close=0;
  $input = str_replace('&amp;lt;br&amp;gt;','&lt;br /&gt;',$input);
  $input = str_replace('&amp;lt;hr&amp;gt;','&lt;hr /&gt;',$input);
  $input = str_replace('&amp;lt;p&amp;gt;','&lt;p&gt;',$input,&amp;$c_p_open);
  $input = str_replace('&amp;lt;/p&amp;gt;','&lt;/p&gt;',$input,&amp;$c_p_close);
  $input = str_replace('&amp;lt;b&amp;gt;','&lt;b&gt;',$input,&amp;$c_b_open);
  $input = str_replace('&amp;lt;/b&amp;gt;','&lt;/b&gt;',$input,&amp;$c_b_close);
  while($c_p_open &gt; $c_p_close){
    $input .= '&lt;/p&gt;';
    ++$c_p_close;
  }
  while($c_b_open &gt; $c_b_close){
    $input .= '&lt;/b&gt;';
    ++$c_b_close;
  }
  return $input;
}
</pre>
<p>Now the code here could be cleaner, but it gets the job done.</p>
<h3>What is it doing?</h3>
<p>1. Convert all brackets and other XML-important characters to their corresponding entities with htmlentities().<br />
2. Back-convert specific entities into their HTML counterparts. In this case; &lt;p&gt; &lt;/p&gt; &lt;b&gt; &lt;/b&gt; &lt;br&gt; and &lt;hr&gt;.<br />
3. Closes all hanging tags, so that there will be a &lt;/b&gt; for every &lt;b&gt; and a  &lt;/p&gt; for every &lt;p&gt;.</p>
<p>Next time you want to do this type of input formatting, do it this way, rather than using overly-complicated eregs or some other expression.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/04/20/safely-letting-specific-html-tags-through-sanitization-in-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Universal Before and After Input Santization in PHP with mysql_real_escape_string and stripslashes</title>
		<link>http://www.spencerdrager.com/2010/04/18/universal-before-and-after-input-santizatio-with-mysql_real_escape_string-and-stripslashes/</link>
		<comments>http://www.spencerdrager.com/2010/04/18/universal-before-and-after-input-santizatio-with-mysql_real_escape_string-and-stripslashes/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 03:26:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[input sanitization]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sanitization]]></category>
		<category><![CDATA[SQL injection]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=713</guid>
		<description><![CDATA[Input sensitization can be a tricky thing. None (or too little) and you can find yourself a victim of the notorious SQL injection attack. Databases wiped out, system penetrated&#8230; that is not the place you want to see yourself, as you data is highly valuable and any leak can represent a major catastrophy&#8211;and possibly even [...]]]></description>
			<content:encoded><![CDATA[<p>Input sensitization can be a tricky thing. None (or too little) and you can find yourself a victim of the notorious SQL injection attack. Databases wiped out, system penetrated&#8230; that is not the place you want to see yourself, as you data is highly valuable and any leak can represent a major catastrophy&#8211;and possibly even lead to you losing your precious job. Too little and you&#8217;ll be faced with over-slashing, where escaped characters get escaped a second time, along with that escaping slash. It looks messy and poorly-coded.</p>
<p><code>that's cool</code> &#8211; Original input<br />
<code>that\'s cool</code> &#8211; First sensitization (single apostrophe escaped)<br />
<code>that\\\'s cool</code> &#8211; Second sanitization (single apostrophe and backslash both escaped)</p>
<p>It only gets worse from here.</p>
<p>Doing input sensitization on a per-line basis is sloppy and inefficient. It is asking for you to slip up and forget to sanitize. After all, you are only human. So why not save yourself the trouble and do a universal sensitization of all user input at the beginning of your code? Use this follow PHP code at the very beginning of your script to save yourself a lot of trouble.<br />
<span id="more-713"></span></p>
<pre>$_GET = sanitize($_GET);
$_POST = sanitize($_POST);
$_COOKIE = sanitize($_COOKIE);
$_REQUEST = sanitize($_REQUEST);

function sanitize($input){
  if(is_array($input)){
    foreach($input as $key =&gt; $value)
     $input[$key]=sanitize($value);
    return $input;
  }
  else
    return mysql_real_escape_string(stripslashes(trim($input)));
}
</pre>
<p>First, this script automatically <code>trims</code> your input, preventing usernames with spaces before or after, for example &#8216;Admin &#8216;, which to the user would look identical to &#8216;Admin&#8217;.</p>
<p>Second, it strips any backslashes out from previous sanitizations (plus typically you don&#8217;t want backslashes in input)</p>
<p>Third, it escapes any sensative characters (&#8216;, &#8220;, and \n, for example).</p>
<p>Essentially it leaves you with ALL input safely cleared of any possibility of SQL injection.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/04/18/universal-before-and-after-input-santizatio-with-mysql_real_escape_string-and-stripslashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spice Up Your Theme&#8212;Break Out Of Your Layout&#8217;s Lines</title>
		<link>http://www.spencerdrager.com/2010/02/15/spice-up-your-theme/</link>
		<comments>http://www.spencerdrager.com/2010/02/15/spice-up-your-theme/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 02:38:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design Tips]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tip]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=677</guid>
		<description><![CDATA[Have you ever been frustrated with your site's inability to break free of the <em>line</em>? By the very nature of HTML, most themes are prone to being reduced to a series of horizontal and vertical lines with no overlap. It's nice and orderly but boring&#8212;nothing ever stands out. Many rely on large images to break the monotony but it's simple to do it with small PNG images and a bit of CSS using positioning!]]></description>
			<content:encoded><![CDATA[<p>Have you ever been frustrated with your site&#8217;s inability to break free of the <em>line</em>? By the very nature of HTML, most themes are prone to being reduced to a series of horizontal and vertical lines with no overlap. It&#8217;s nice and orderly but boring&mdash;nothing ever stands out. Many rely on large images to break the monotony but it&#8217;s simple to do it with small PNG images and a bit of CSS using positioning!</p>
<p>Learn how to do this in two minutes following my near-light speed tutorial.<span id="more-677"></span></p>
<h3>Breaking Out Your Grid</h3>
<p>To get started, take any image with transparency. GIFs are a poor choice for this, because while they have transparency it is either on or off. <strong>You want to use PNG-24 images with alpha transparency. </strong></p>
<p>Choose an image. In most cases, it&#8217;s not worth it to make your own since what you want has a great chance of already being made and free. Check out some of these posts from Smashing Magazine (I&#8217;m a huge fan) to take an eye to free icon and image sets made with developers like you in mind: <a href="http://www.smashingmagazine.com/2009/02/16/50-beautiful-useful-and-free-icon-sets/">50 Free High-Quality Icon Sets</a> and <a href="http://www.smashingmagazine.com/2008/03/06/35-really-incredible-free-icon-sets/">35 (Really) Incredible Free Icon Sets</a></p>
<p>For this demonstration, I&#8217;ve selected this banana image from <a href="http://www.klukeart.com/">KlukeArt</a>.</p>
<h3>Position Relative</h3>
<p><img src="http://www.spencerdrager.com/wp-content/uploads/2010/02/Banana.png" alt="" title="Banana" width="256" height="256" class="noborder alignright size-full wp-image-678" /></p>
<p>Now, it&#8217;s a pretty spectacular image by itself, but it&#8217;s within the lines of this post and doesn&#8217;t &#8220;pop&#8221; out of the page.</p>
<pre class="brush: css;">
position: relative;
left: -150px;
</pre>
<p>With these two lines of code, the banana now pops over the border to the left, having moved 150 pixels left from where it was supposed to lay&#8230; unfortunately text does not wrap around it, so it looks sort of rubbish.</p>
<p><img src="http://www.spencerdrager.com/wp-content/uploads/2010/02/Banana.png" alt="" style="position:relative;left:-150px;" title="Banana" width="256" height="256" class="noborder alignright size-full wp-image-678" /></p>
<p>Next let&#8217;s see what happens when you float it to the left&#8230;</p>
<pre class="brush: css;">
position: relative;
left: -150px;
float: left;
</pre>
<p><img src="http://www.spencerdrager.com/wp-content/uploads/2010/02/Banana.png" alt="" style="position:relative;left:-150px;float:left;" title="Banana" width="256" height="256" class="noborder alignright size-full wp-image-678" /> </p>
<p>This is better&#8230; the text will wrap, but now the issue is that it still pushes the text out to form a margin where the image used to be, not where it is now. We will remedy this by adjusting the margins manually to match the left-shift.</p>
<div class="clear"></div>
<pre class="brush: css;">
position: relative;
left: -150px;
float: left;
margin-right: -140px;
</pre>
<p><img src="http://www.spencerdrager.com/wp-content/uploads/2010/02/Banana.png" alt="" style="position:relative;left:-150px;float:left;margin-right: -140px" title="Banana" width="256" height="256" class="noborder alignright size-full wp-image-678" /> </p>
<p>Ahh! Much better! Now you have your image shifted over, breaking the linearity of your page and instantly making it more interesting and less boxy! </p>
<h3>Position Absolute</h3>
<p>We still have one more property at our disposal however. Up until now we have been using <code>position: relative;</code>. Another method is using <code>position: absolute;</code>. Absolute position allows you to position your element wherever you want within it&#8217;s parent box. It&#8217;s parent box will be either the element it is in with <code>position:relative</code>, or the entire page window itself.</p>
<div class="clear"></div>
<p>For example:</p>
<pre class="brush: xml;">
&lt;div class=&quot;relative&quot;&gt;
  &lt;img class=&quot;absolute&quot; /&gt;
&lt;/div&gt;
</pre>
<pre class="brush: css;">
.relative{
  position: relative;
  background-color: #f99;
  width: 400px;
  height: 300px;
}
.absolute{
 position: absolute;
 bottom: -100px;
 right: 20px;
</pre>
<div style="position: relative; background-color: #f99;width: 400px; height: 300px;">
<img src="http://www.spencerdrager.com/wp-content/uploads/2010/02/Banana.png" alt="" style="position:absolute;bottom: -100px; right;20px;" title="Banana" width="256" height="256" class="noborder alignright size-full wp-image-678" />
</div>
<p>Pretty nifty. <em>Oh no! There is a banana is on top of my text! Oh no! There is a banana is on top of my text! Oh no! There is a banana is on top of my text! Oh no! There is a banana is on top of my text! Oh no! There is a banana is on top of my text! Oh no! There is a banana is on top of my text!</em></p>
<p>The down side to absolute positioning is it is impossible to margin text around it effectively. So ideally you want to use it in areas where you don&#8217;t need to do so.</p>
<h3>Comment!</h3>
<p> I hope you enjoyed this quick tutorial. This technique works in Firefox, Chrome, IE 7+, and Opera&#8230; and probably more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/02/15/spice-up-your-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 Tips For Form Validation: Striking a Balance</title>
		<link>http://www.spencerdrager.com/2010/02/10/7-tips-for-form-validation/</link>
		<comments>http://www.spencerdrager.com/2010/02/10/7-tips-for-form-validation/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 23:02:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design Tips]]></category>
		<category><![CDATA[form validation]]></category>
		<category><![CDATA[registration pages]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=624</guid>
		<description><![CDATA[Input validation has long been a highly debated topic. How much should you validate? How much is too much? Fields like username, password, and email address are common amongst thousands of registration pages and yet most of them handle validation in different ways. Read these seven tips for form validation and strike a balance.]]></description>
			<content:encoded><![CDATA[<p>How much is <em>too much</em>?</p>
<div class="right pictureframe" style="width: 193px;">
<img class="noborder nospace" title="Digg's registration page" src="http://www.spencerdrager.com/wp-content/uploads/2010/02/img3.jpg" alt="Digg's registration form screenshot" width="192" height="300" /></div>
<div class="caption" style="width: 193px;">
<p>
Digg uses client-side on-the-fly validation to walk visitors through their registration page.
</p>
</div>
</div>
<p>Input validation has long been a highly debated field. No one disputes some sort of validation is appropriate, but the question <em>how much</em> is subject of great debate. And more: server-side only enough, or are modern websites expected to have client-side too? Google &#8220;email validation,&#8221; or more specifically, &#8220;php email validation&#8221; and you&#8217;ll find hundreds of scripts all of which go about it different ways.</p>
<p>Programmers have spent years of man-hours working on the same sets of problems when it comes to validation. Username, password, email address, name, phone number, and so on. These fields are common in thousands of registration pages. Most have different ways of handling it. I will admit I&#8217;ve reinvented the wheel a few times. Perhaps this is because there is no definitive set of functions cross-language cross-platform that we&#8217;ve all agreed upon as <em>the</em> way to validate.<span id="more-624"></span></p>
<h2>7 Tips for Validation</h2>
<h3>1. Validate to help your users</h3>
<p>On the surface, the reason for validation is to make sure it doesn&#8217;t screw up your database, isn&#8217;t it? Wrong! That should just be a by-product. The real goal is to help your users—That is the entire goal of your site isn&#8217;t it? Users hate being wrong and they hate going back to fix their mistakes. The less frequently you can make them wrong and have your system work the better. The main goal of validation is to make them realize when they accidentally provide wrong information, as in accidental typos, not information your database doesn&#8217;t like.</p>
<h3>2. Avoid over-validation</h3>
<p>Over-validation is when you take over-examine the field you are validating, thinking strict validation will somehow help you or your user. The fact is people are not exact, and won&#8217;t like it if you try to force them to be. Try to compensate by other means (<a href="#4">see tip#4</a>). Furthermore, no amount of validation will prevent people from giving false names and e-mail addresses. If the reason for your rigorous screening for e-mail addresses is that, then you should reconsider.</p>
<blockquote class="right bigquote" style="width:180px;"><p><span class="superbig left">&ldquo;</span>No amount of validation will prevent people from giving false names and e-mail addresses.<span class="superbig right">&rdquo;</span></p></blockquote>
<p><strong><span style="text-decoration: underline;">Example</span></strong></p>
<p>E-mail addresses are notoriously annoying for validation. What is the right way to validate? Read the follow two ways of validation (in plain English) and tell me which you think is better:</p>
<p><strong>Method One:</strong> Two or more characters followed by an @ symbol followed by 2 or more characters followed by a valid extension (.com, .org, .uk, .ca, etc.). The strings before and after the @ symbol can have a-z, A-Z, 0-9, hyphens, underscores, and periods, but it must begin and end with a letter or number, and cannot have two symbols adjacent to each other. The domain name should be a valid domain (this could be checked). The entire address should not be longer than 64 characters.</p>
<p><strong>Method Two:</strong> a-z, A-Z, 0-9, _, -, and ., followed by an @, followed by more of the same, followed by a period followed by a-z or A-Z only. The entire address should not be longer than 64 characters.</p>
<p>The first one obviously is stronger in that it required an e-mail address that is one hundred percent realistic. <em>But</em>, it does more than it needs to and generally will only stop people who are giving a fake e-mail from giving one that is quite so fake. Instead they&#8217;ll give a more realistic fake one. Why bother? Save yourself the time.</p>
</div>
<p><img class="headliner nospace noborder alignnone size-full wp-image-512" title="Tumblr's registration form" src="http://www.spencerdrager.com/wp-content/uploads/2010/02/header2.jpg" alt="Tumblr's registration form" width="687" height="127" /></p>
<div class="caption">
Tumbler has minimal validation and a simple form.
</div>
<div class="storycontent">
<h3>3. Avoid under-validation</h3>
<p>On the other side you have too <em>little </em>validation. Too little validation is when your users can cause database-side errors with lengthy inputs, empty inputs, or some other wacky input. The minimum you must always do is to check length and presence of expected inputs. Enough said.</p>
<h3>4. Format information behind the scenes instead of causing errors</h3>
<p><a name="4"></a><br />
You don&#8217;t always have to flag problems with inconsistent inputs. Instead, as long as the &#8220;meat&#8221; of the input is correct, you can format it however you like without concerning the user. Take this example with phone numbers:</p>
<p><strong><span style="text-decoration: underline;">Example</span></strong></p>
<p><strong>Site One</strong> uses preg_match, regular expression to confirm that the input contains an input in the format (###) ###-####, and rejects anything not in this format.</p>
<p><strong>Site Two</strong> strips non-numbers out with ereg_replace and checks to make sure it is 10 digits long.</p>
<p>Before you try to guess which is better, I&#8217;ll just tell you. Site two is vastly superior. The resulting numbers-only string can be formatted however is wanted and nothing is required from the user to do it. They can enter their phone number however they like.</p>
<h3>5. Give succinct but detailed error messages</h3>
<p>While writing your error strings, <em>never </em>give your users the error <code>Invalid Input</code>. Describe what they did wrong. This make take extra time, but it will make your users happier. <code>Username too short</code> is much more friendly.</p>
<p>You&#8217;d think this tip would go without saying, yet there is still so many sites out there who give ambiguous and downright misleading error messages.</p>
<h3>6. Only ask for information you will use or will help the user</h3>
<p>Do you <em>need</em> to know your users phone number or birth date? No? Then don&#8217;t ask or make it an option to create a profile—AFTER they have already created their account. Studies have shown that users hate filling forms. Thing of it this way: the more fields you have the more users you will lose. So keep it short. Keep it sweet. While this technically isn&#8217;t validation specifically, it all ties together.</p>
<p>By keeping your forms short it makes less work for you, the designer, and happier (not to mention potentially more plentiful) visitors.</p>
<h3>7. Validate client-side too</h3>
<p>Ideally you want to validate client-side too. It doubles the amount of work you have to do, but it lessens the blow to the user when they get something wrong. When a user fills out a form and presses &#8216;submit&#8217;, they want the see success. Validating client-side (preferably on-the-fly) helps lessen the blow when they do things wrong. Rather than having to go back to a field, they are alerted to their mistake immediately. Users love to be babied and having their hand held, not that there is anything wrong with that.</p>
<p>This all goes back to serving the user. Keep focused on what the user desires&mdash;put yourself in their shoes. The end result is a better, more usable website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/02/10/7-tips-for-form-validation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Create local users with random passwords in Window Server</title>
		<link>http://www.spencerdrager.com/2010/02/08/create-users-with-randomized-passwords-in-window-server-2003/</link>
		<comments>http://www.spencerdrager.com/2010/02/08/create-users-with-randomized-passwords-in-window-server-2003/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 13:07:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Server Administration]]></category>
		<category><![CDATA[Local Users]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[VB Script]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=608</guid>
		<description><![CDATA[Using this script you can quickly and painlessly create local users with random passwords and automatically assign them to a predefined group in Windows Server. Make administration a bit easier.]]></description>
			<content:encoded><![CDATA[<p>I recently worked on a project where I had to write a script to create local users and add them to groups in Windows Server 2003. It was for VMWare&#8217;s vSphere software. It uses local groups and users as users of the center, and allows you to assign privileges with these. Creating these users and assigning them to groups is easy with a simple script:</p>
<p>The follow script does a few things:</p>
<ul>
<li>Creates multiple users with similar names (user1, user2, user3)</li>
<li>Generates a password of random numbers, upper and lowercase letters</li>
<li>Assigns the users to a group (the group must exist before using the script)</li>
<li>Stores the generated usernames and passwords to a text file</li>
</ul>
<p><span id="more-608"></span><br />
Make sure to change the settings at the start of the script.</p>
<p>To use the script, copy the text to a file in notepad and save it with a .vbs extension, then simply run it. This has been tested in Windows Server 2003, however it should work in Server 2008 as well.</p>
<pre class="brush: vb;">
On Error Resume Next

'SETTINGS - ADJUST
strComputer = &quot;YOUR_COMPUTER_NAME_HERE&quot;
strUsernameBase = &quot;User&quot;
strUsergroup = &quot;PCUsers&quot;
intNumOfUsersToCreate = 20
intPasswordLength = 6
strFilePath = &quot;c:\usernames_and_password_list.txt&quot;

'===start script
Set colAccounts = GetObject(&quot;WinNT://&quot; &amp; strComputer &amp; &quot;&quot;)
Set objComputer = GetObject(&quot;WinNT://&quot; &amp; strComputer &amp; &quot;,computer&quot;)
output = &quot;Username&quot; &amp; vbTab &amp; &quot;Password&quot; &amp; vbCrLf &amp; &quot;==================================&quot;

For i = 1 to intNumOfUsersToCreate

	strTempUsername = strUsernameBase &amp; i 'change to adjust how username iterates

	' === CREATE RANDOM PASSWORD ===
	strRandPassword = &quot;&quot;
	For o = 1 to intPasswordLength
		Randomize
		Select Case Chr(Int(3 * Rnd() + 49))
			Case &quot;1&quot;
				strRandPassword = strRandPassword  &amp; Chr(Int(10 * Rnd() + 48)) 'numbers
			Case &quot;2&quot;
				strRandPassword = strRandPassword  &amp; Chr(Int(26 * Rnd() + 65)) 'capital letters
			Case &quot;3&quot;
				strRandPassword = strRandPassword  &amp; Chr(Int(26 * Rnd() + 97)) 'lowercase letters
		End Select
	Next
	' ==============================

	objComputer.Delete &quot;user&quot;, strTempUsername 'deletes old user if one exists -- remove if you value the old users

	Set objUser = colAccounts.Create(&quot;user&quot;, strTempUsername )
	objUser.SetPassword strRandPassword
	objUser.SetInfo

	output = output &amp; vbCrLf &amp; strTempUsername &amp; vbTab &amp; strRandPassword

	' === ADD USER TO GROUP
	Set objGroup = GetObject(&quot;WinNT://&quot; &amp; strComputer &amp; &quot;/PCTeam&quot; &amp; strUsergroup &amp; &quot;,group&quot;)
	Set objUser = GetObject(&quot;WinNT://&quot; &amp; strComputer &amp; &quot;/&quot; &amp; strTempUsername &amp; &quot;,user&quot;)
	objGroup.Add(objUser.ADsPath)

Next

' ===== WRITE RESULTS TO FILE =========
Dim objFile, strFile, strFilePath
Set objFile = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set strFile = objFile.CreateTextFile(strFilePath, True)
strFile.WriteLine(output)
strFile.Close
</pre>
<p>If you had any trouble with this script, let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/02/08/create-users-with-randomized-passwords-in-window-server-2003/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hide PHP extension in URL using .htaccess</title>
		<link>http://www.spencerdrager.com/2010/02/07/hide-php-extension-in-url-using-htaccess/</link>
		<comments>http://www.spencerdrager.com/2010/02/07/hide-php-extension-in-url-using-htaccess/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 03:01:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Server Administration]]></category>
		<category><![CDATA[address]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[hide extension]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php extension]]></category>
		<category><![CDATA[RewriteCond]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=596</guid>
		<description><![CDATA[Hide the .php extension of your PHP files in the URL of your site address.]]></description>
			<content:encoded><![CDATA[<h3>What?</h3>
<p>Hide the .php extension of your PHP files in the URL of your site address.</p>
<p>Instead of:<br />
<code>http://www.example.com/page.php</code><br />
Visitors to your site will see:<br />
<code>http://www.example.com/page/</code></p>
<h3>Why?</h3>
<p>There are actually quite a few reasons to do this.</p>
<ul>
<li>Make your URLs cleaner and easier to remember for visitors</li>
<li>Make dynamic pages appear static for SEO</li>
<li>Security by obscurity (albeit very weakly so)—visitors cannot tell as easily that you are using PHP</li>
<li>For fun (yay!)</li>
</ul>
<p><span id="more-596"></span></p>
<h3>How?</h3>
<p>There a few ways you can do this.</p>
<h4>Method 1: example.com/test =&gt; example.com/test.php</h4>
<pre>RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php</pre>
<p><small>Source: <a href="http://newmediarts.blogspot.com/2007/01/hide-file-extensions-in-urls-with.html">newmediarts.blogspot.com/</a></small></p>
<p>With this rewrite, <code>http://www.example.com/test.php</code> is the same as <code>http://www.example.com/test</code> but <strong>NOT</strong> <code>http://www.example.com/test/</code></p>
<p>GET variables can still be pushed through: <code>http://www.example.com/test.php?id=5</code> is the same as <code>http://www.example.com/test?id=5</code></p>
<h4>Method 2: example.com/test/ =&gt; example.com/test.php</h4>
<pre>RewriteEngine on
RewriteRule ^(.*)$ $1.php</pre>
<p>This is a slight variation on the first method, except now the php file looks just like a directory. You can still access files within the directory. Parameters get passed correctly as well, though it looks a little goofy.</p>
<p><code>http://www.example.com/test/</code> =&gt; <code>http://www.example.com/test.php</code><br />
<code>http://www.example.com/test/?id=5&amp;code=4</code> =&gt; <code>http://www.example.com/test.php?id=5&amp;code=4</code><br />
<code>http://www.example.com/test/anotherfile.html</code> =&gt; <code>http://www.example.com/test/anotherfile.html</code> (only directs paramters if it starts with ?).</p>
<h4>Method 3: example.com/test/id/5/ =&gt; example.com/test.php?id=5</h4>
<p>This method allows the user to pass on one parameter hidden as directory folders.</p>
<pre>RewriteEngine on
RewriteRule (.*)/(.*)/(.*)/$ /$1.php?$2=$3</pre>
<p><code>http://www.example.com/test/</code> =&gt; <code>http://www.example.com/test.php</code><br />
<code>http://www.example.com/test/id/5/</code> =&gt; <code>http://www.example.com/test.php?id=5</code><br />
<code>http://www.example.com/test/id/5/code/4/</code> =&gt; <code>does not work</code></p>
<h4>Method 4: example.com/test/id/5/code/4/ =&gt; example.com/test.php?id=5&amp;code=4</h4>
<p>This method allows the user to pass on exactly two parameter hidden as directory folders.</p>
<pre>RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ /$1.php?$2=$3&amp;$4=$5</pre>
<p><code>http://www.example.com/test/</code> =&gt; <code>http://www.example.com/test.php</code><br />
<code>http://www.example.com/test/id/5/</code> =&gt; <code>does not work</code><br />
<code>http://www.example.com/test/id/5/code/4/</code> =&gt; <code>http://www.example.com/test.php?id=5&amp;code=4</code></p>
<p>Obviously this has some shortcoming. If anyone knows of a more functional script, please share it.</p>
<h3>Help! It&#8217;s not working!</h3>
<p>If you are in charge of configuring the Apache server, you may need to enable .htaccess in the config file of Apache. <a href="http://www.tildemark.com/software/servers/enable-htaccess-on-apache.html">See tildemark.com&#8217;s short guide.</a></p>
<p>If you are having trouble creating an .htaccess file (Windows will not allow you to rename a file to .htaccess because it has no name, just an extension), start up notepad and save a file as <code>".htaccess"</code> (<em>including the quotes</em>).</p>
<p>Now you can copy it wherever you need.</p>
<h3>More reading</h3>
<p>General tips and tricks with .htaccess <a href="http://corz.org/serv/tricks/htaccess.php">corz.org/</a><br />
Module Rewrite &amp; URL rewriting guide <a href="http://www.widexl.com/tutorials/mod_rewrite.html">widexl.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/02/07/hide-php-extension-in-url-using-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Definitive HTML Entities Reference List</title>
		<link>http://www.spencerdrager.com/2010/02/06/definitive-html-entities-reference-list/</link>
		<comments>http://www.spencerdrager.com/2010/02/06/definitive-html-entities-reference-list/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 15:54:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Reference List]]></category>
		<category><![CDATA[ASCII]]></category>
		<category><![CDATA[Character Entities]]></category>
		<category><![CDATA[Character List]]></category>
		<category><![CDATA[Character Set]]></category>
		<category><![CDATA[Characters]]></category>
		<category><![CDATA[Entities]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML Entities]]></category>
		<category><![CDATA[ISO-8859-1]]></category>
		<category><![CDATA[Reference]]></category>

		<guid isPermaLink="false">http://www.spencerdrager.com/?p=542</guid>
		<description><![CDATA[All on a single page: the full HTML Entities Reference List, including both the ASCII character-set as well as the rest of ISO-8859-1, grouped by use.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.w3schools.com/tags/ref_entities.asp">W3Schools has a great reference for HTML entities</a>&#8230; my only complaint is their organization. It is spread over multiple pages making it difficult to find what you already know you want. Without further ado, here is the full HTML Entities Reference List, including both the ASCII character-set as well as the rest of ISO-8859-1.<br />
<span id="more-542"></span><br />
<b><u>Table of Contents</b></u></p>
<ul>
<li><a href="#A">Reserved HTML Characters</a></li>
<li><a href="#B">Common Symbols</a></li>
<li><a href="#C">Language Characters with Diacritics or Ligatures</a></li>
<li><a href="#D">Math Symbols</a></li>
<li><a href="#E">Greek Letters</a></li>
<li><a href="#F">Miscellaneous</a></li>
</ul>
<p>Entity names are case sensitive. Generally, the entity name is better for readability of your code. I have removed non-entities from the table (entities which are technically valid but do not display in popular browsers).</p>
<table class="table-1" border="1" cellspacing="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td colspan="4"><a name="A"></a><br />
<h2>Reserved HTML Characters</h2>
<p>Always replaced these characters with their entities if you intend to <em>display</em> the letter on your website, rather than use it as code.</td>
</tr>
</tbody>
<thead>
<tr>
<td>Character</td>
<td>Entity Number</td>
<td>Entity Name</td>
<td>Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>&#8220;</td>
<td>&amp;#34;</td>
<td>&amp;quot;</td>
<td>quotation mark</td>
</tr>
<tr>
<td>&#8216;</td>
<td>&amp;#39;</td>
<td>&amp;apos; (does not work in IE)</td>
<td>apostrophe</td>
</tr>
<tr>
<td>&amp;</td>
<td>&amp;#38;</td>
<td>&amp;amp;</td>
<td>ampersand</td>
</tr>
<tr>
<td>&lt;</td>
<td>&amp;#60;</td>
<td>&amp;lt;</td>
<td>less-than</td>
</tr>
<tr>
<td>&gt;</td>
<td>&amp;#62;</td>
<td>&amp;gt;</td>
<td>greater-than</td>
</tr>
</tbody>
<tr>
<td colspan="4"><a name="B"></a><br />
<h2>Common Symbols</h2>
</td>
</tr>
<thead>
<tr>
<td align="left">Character</td>
<td align="left">Entity Number</td>
<td align="left">Entity Name</td>
<td align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>¡</td>
<td>&amp;#161;</td>
<td>&amp;iexcl;</td>
<td>inverted exclamation mark</td>
</tr>
<tr>
<td>¢</td>
<td>&amp;#162;</td>
<td>&amp;cent;</td>
<td>cent</td>
</tr>
<tr>
<td>£</td>
<td>&amp;#163;</td>
<td>&amp;pound;</td>
<td>pound</td>
</tr>
<tr>
<td>¤</td>
<td>&amp;#164;</td>
<td>&amp;curren;</td>
<td>currency</td>
</tr>
<tr>
<td>¥</td>
<td>&amp;#165;</td>
<td>&amp;yen;</td>
<td>yen</td>
</tr>
<tr>
<td>¦</td>
<td>&amp;#166;</td>
<td>&amp;brvbar;</td>
<td>broken vertical bar</td>
</tr>
<tr>
<td>§</td>
<td>&amp;#167;</td>
<td>&amp;sect;</td>
<td>section</td>
</tr>
<tr>
<td>¨</td>
<td>&amp;#168;</td>
<td>&amp;uml;</td>
<td>spacing diaeresis</td>
</tr>
<tr>
<td>©</td>
<td>&amp;#169;</td>
<td>&amp;copy;</td>
<td>copyright</td>
</tr>
<tr>
<td>ª</td>
<td>&amp;#170;</td>
<td>&amp;ordf;</td>
<td>feminine ordinal indicator</td>
</tr>
<tr>
<td>«</td>
<td>&amp;#171;</td>
<td>&amp;laquo;</td>
<td>angle quotation mark (left)</td>
</tr>
<tr>
<td>¬</td>
<td>&amp;#172;</td>
<td>&amp;not;</td>
<td>negation</td>
</tr>
<tr>
<td>®</td>
<td>&amp;#174;</td>
<td>&amp;reg;</td>
<td>registered trademark</td>
</tr>
<tr>
<td>¯</td>
<td>&amp;#175;</td>
<td>&amp;macr;</td>
<td>spacing macron</td>
</tr>
<tr>
<td>°</td>
<td>&amp;#176;</td>
<td>&amp;deg;</td>
<td>degree</td>
</tr>
<tr>
<td>±</td>
<td>&amp;#177;</td>
<td>&amp;plusmn;</td>
<td>plus-or-minus</td>
</tr>
<tr>
<td>²</td>
<td>&amp;#178;</td>
<td>&amp;sup2;</td>
<td>superscript 2</td>
</tr>
<tr>
<td>³</td>
<td>&amp;#179;</td>
<td>&amp;sup3;</td>
<td>superscript 3</td>
</tr>
<tr>
<td>´</td>
<td>&amp;#180;</td>
<td>&amp;acute;</td>
<td>spacing acute</td>
</tr>
<tr>
<td>µ</td>
<td>&amp;#181;</td>
<td>&amp;micro;</td>
<td>micro</td>
</tr>
<tr>
<td>¶</td>
<td>&amp;#182;</td>
<td>&amp;para;</td>
<td>paragraph</td>
</tr>
<tr>
<td>·</td>
<td>&amp;#183;</td>
<td>&amp;middot;</td>
<td>middle dot</td>
</tr>
<tr>
<td>¸</td>
<td>&amp;#184;</td>
<td>&amp;cedil;</td>
<td>spacing cedilla</td>
</tr>
<tr>
<td>¹</td>
<td>&amp;#185;</td>
<td>&amp;sup1;</td>
<td>superscript 1</td>
</tr>
<tr>
<td>º</td>
<td>&amp;#186;</td>
<td>&amp;ordm;</td>
<td>masculine ordinal indicator</td>
</tr>
<tr>
<td>»</td>
<td>&amp;#187;</td>
<td>&amp;raquo;</td>
<td>angle quotation mark (right)</td>
</tr>
<tr>
<td>¼</td>
<td>&amp;#188;</td>
<td>&amp;frac14;</td>
<td>fraction 1/4</td>
</tr>
<tr>
<td>½</td>
<td>&amp;#189;</td>
<td>&amp;frac12;</td>
<td>fraction 1/2</td>
</tr>
<tr>
<td>¾</td>
<td>&amp;#190;</td>
<td>&amp;frac34;</td>
<td>fraction 3/4</td>
</tr>
<tr>
<td>¿</td>
<td>&amp;#191;</td>
<td>&amp;iquest;</td>
<td>inverted question mark</td>
</tr>
<tr>
<td>×</td>
<td>&amp;#215;</td>
<td>&amp;times;</td>
<td>multiplication</td>
</tr>
<tr>
<td>÷</td>
<td>&amp;#247;</td>
<td>&amp;divide;</td>
<td>division</td>
</tr>
</tbody>
<tr>
<td colspan="4"><a name="C"></a><br />
<h2>Language Characters with Diacritics or Ligatures</h2>
</td>
</tr>
<thead>
<tr>
<td align="left">Character</td>
<td align="left">Entity Number</td>
<td align="left">Entity Name</td>
<td align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>À</td>
<td>&amp;#192;</td>
<td>&amp;Agrave;</td>
<td>capital a, grave accent</td>
</tr>
<tr>
<td>Á</td>
<td>&amp;#193;</td>
<td>&amp;Aacute;</td>
<td>capital a, acute accent</td>
</tr>
<tr>
<td>Â</td>
<td>&amp;#194;</td>
<td>&amp;Acirc;</td>
<td>capital a, circumflex accent</td>
</tr>
<tr>
<td>Ã</td>
<td>&amp;#195;</td>
<td>&amp;Atilde;</td>
<td>capital a, tilde</td>
</tr>
<tr>
<td>Ä</td>
<td>&amp;#196;</td>
<td>&amp;Auml;</td>
<td>capital a, umlaut mark</td>
</tr>
<tr>
<td>Å</td>
<td>&amp;#197;</td>
<td>&amp;Aring;</td>
<td>capital a, ring</td>
</tr>
<tr>
<td>Æ</td>
<td>&amp;#198;</td>
<td>&amp;AElig;</td>
<td>capital ae</td>
</tr>
<tr>
<td>Ç</td>
<td>&amp;#199;</td>
<td>&amp;Ccedil;</td>
<td>capital c, cedilla</td>
</tr>
<tr>
<td>È</td>
<td>&amp;#200;</td>
<td>&amp;Egrave;</td>
<td>capital e, grave accent</td>
</tr>
<tr>
<td>É</td>
<td>&amp;#201;</td>
<td>&amp;Eacute;</td>
<td>capital e, acute accent</td>
</tr>
<tr>
<td>Ê</td>
<td>&amp;#202;</td>
<td>&amp;Ecirc;</td>
<td>capital e, circumflex accent</td>
</tr>
<tr>
<td>Ë</td>
<td>&amp;#203;</td>
<td>&amp;Euml;</td>
<td>capital e, umlaut mark</td>
</tr>
<tr>
<td>Ì</td>
<td>&amp;#204;</td>
<td>&amp;Igrave;</td>
<td>capital i, grave accent</td>
</tr>
<tr>
<td>Í</td>
<td>&amp;#205;</td>
<td>&amp;Iacute;</td>
<td>capital i, acute accent</td>
</tr>
<tr>
<td>Î</td>
<td>&amp;#206;</td>
<td>&amp;Icirc;</td>
<td>capital i, circumflex accent</td>
</tr>
<tr>
<td>Ï</td>
<td>&amp;#207;</td>
<td>&amp;Iuml;</td>
<td>capital i, umlaut mark</td>
</tr>
<tr>
<td>Ð</td>
<td>&amp;#208;</td>
<td>&amp;ETH;</td>
<td>capital eth, Icelandic</td>
</tr>
<tr>
<td>Ñ</td>
<td>&amp;#209;</td>
<td>&amp;Ntilde;</td>
<td>capital n, tilde</td>
</tr>
<tr>
<td>Ò</td>
<td>&amp;#210;</td>
<td>&amp;Ograve;</td>
<td>capital o, grave accent</td>
</tr>
<tr>
<td>Ó</td>
<td>&amp;#211;</td>
<td>&amp;Oacute;</td>
<td>capital o, acute accent</td>
</tr>
<tr>
<td>Ô</td>
<td>&amp;#212;</td>
<td>&amp;Ocirc;</td>
<td>capital o, circumflex accent</td>
</tr>
<tr>
<td>Õ</td>
<td>&amp;#213;</td>
<td>&amp;Otilde;</td>
<td>capital o, tilde</td>
</tr>
<tr>
<td>Ö</td>
<td>&amp;#214;</td>
<td>&amp;Ouml;</td>
<td>capital o, umlaut mark</td>
</tr>
<tr>
<td>Ø</td>
<td>&amp;#216;</td>
<td>&amp;Oslash;</td>
<td>capital o, slash</td>
</tr>
<tr>
<td>Ù</td>
<td>&amp;#217;</td>
<td>&amp;Ugrave;</td>
<td>capital u, grave accent</td>
</tr>
<tr>
<td>Ú</td>
<td>&amp;#218;</td>
<td>&amp;Uacute;</td>
<td>capital u, acute accent</td>
</tr>
<tr>
<td>Û</td>
<td>&amp;#219;</td>
<td>&amp;Ucirc;</td>
<td>capital u, circumflex accent</td>
</tr>
<tr>
<td>Ü</td>
<td>&amp;#220;</td>
<td>&amp;Uuml;</td>
<td>capital u, umlaut mark</td>
</tr>
<tr>
<td>Ý</td>
<td>&amp;#221;</td>
<td>&amp;Yacute;</td>
<td>capital y, acute accent</td>
</tr>
<tr>
<td>Þ</td>
<td>&amp;#222;</td>
<td>&amp;THORN;</td>
<td>capital THORN, Icelandic</td>
</tr>
<tr>
<td>ß</td>
<td>&amp;#223;</td>
<td>&amp;szlig;</td>
<td>small sharp s, German</td>
</tr>
<tr>
<td>à</td>
<td>&amp;#224;</td>
<td>&amp;agrave;</td>
<td>small a, grave accent</td>
</tr>
<tr>
<td>á</td>
<td>&amp;#225;</td>
<td>&amp;aacute;</td>
<td>small a, acute accent</td>
</tr>
<tr>
<td>â</td>
<td>&amp;#226;</td>
<td>&amp;acirc;</td>
<td>small a, circumflex accent</td>
</tr>
<tr>
<td>ã</td>
<td>&amp;#227;</td>
<td>&amp;atilde;</td>
<td>small a, tilde</td>
</tr>
<tr>
<td>ä</td>
<td>&amp;#228;</td>
<td>&amp;auml;</td>
<td>small a, umlaut mark</td>
</tr>
<tr>
<td>å</td>
<td>&amp;#229;</td>
<td>&amp;aring;</td>
<td>small a, ring</td>
</tr>
<tr>
<td>æ</td>
<td>&amp;#230;</td>
<td>&amp;aelig;</td>
<td>small ae</td>
</tr>
<tr>
<td>ç</td>
<td>&amp;#231;</td>
<td>&amp;ccedil;</td>
<td>small c, cedilla</td>
</tr>
<tr>
<td>è</td>
<td>&amp;#232;</td>
<td>&amp;egrave;</td>
<td>small e, grave accent</td>
</tr>
<tr>
<td>é</td>
<td>&amp;#233;</td>
<td>&amp;eacute;</td>
<td>small e, acute accent</td>
</tr>
<tr>
<td>ê</td>
<td>&amp;#234;</td>
<td>&amp;ecirc;</td>
<td>small e, circumflex accent</td>
</tr>
<tr>
<td>ë</td>
<td>&amp;#235;</td>
<td>&amp;euml;</td>
<td>small e, umlaut mark</td>
</tr>
<tr>
<td>ì</td>
<td>&amp;#236;</td>
<td>&amp;igrave;</td>
<td>small i, grave accent</td>
</tr>
<tr>
<td>í</td>
<td>&amp;#237;</td>
<td>&amp;iacute;</td>
<td>small i, acute accent</td>
</tr>
<tr>
<td>î</td>
<td>&amp;#238;</td>
<td>&amp;icirc;</td>
<td>small i, circumflex accent</td>
</tr>
<tr>
<td>ï</td>
<td>&amp;#239;</td>
<td>&amp;iuml;</td>
<td>small i, umlaut mark</td>
</tr>
<tr>
<td>ð</td>
<td>&amp;#240;</td>
<td>&amp;eth;</td>
<td>small eth, Icelandic</td>
</tr>
<tr>
<td>ñ</td>
<td>&amp;#241;</td>
<td>&amp;ntilde;</td>
<td>small n, tilde</td>
</tr>
<tr>
<td>ò</td>
<td>&amp;#242;</td>
<td>&amp;ograve;</td>
<td>small o, grave accent</td>
</tr>
<tr>
<td>ó</td>
<td>&amp;#243;</td>
<td>&amp;oacute;</td>
<td>small o, acute accent</td>
</tr>
<tr>
<td>ô</td>
<td>&amp;#244;</td>
<td>&amp;ocirc;</td>
<td>small o, circumflex accent</td>
</tr>
<tr>
<td>õ</td>
<td>&amp;#245;</td>
<td>&amp;otilde;</td>
<td>small o, tilde</td>
</tr>
<tr>
<td>ö</td>
<td>&amp;#246;</td>
<td>&amp;ouml;</td>
<td>small o, umlaut mark</td>
</tr>
<tr>
<td>ø</td>
<td>&amp;#248;</td>
<td>&amp;oslash;</td>
<td>small o, slash</td>
</tr>
<tr>
<td>ù</td>
<td>&amp;#249;</td>
<td>&amp;ugrave;</td>
<td>small u, grave accent</td>
</tr>
<tr>
<td>ú</td>
<td>&amp;#250;</td>
<td>&amp;uacute;</td>
<td>small u, acute accent</td>
</tr>
<tr>
<td>û</td>
<td>&amp;#251;</td>
<td>&amp;ucirc;</td>
<td>small u, circumflex accent</td>
</tr>
<tr>
<td>ü</td>
<td>&amp;#252;</td>
<td>&amp;uuml;</td>
<td>small u, umlaut mark</td>
</tr>
<tr>
<td>ý</td>
<td>&amp;#253;</td>
<td>&amp;yacute;</td>
<td>small y, acute accent</td>
</tr>
<tr>
<td>þ</td>
<td>&amp;#254;</td>
<td>&amp;thorn;</td>
<td>small thorn, Icelandic</td>
</tr>
<tr>
<td>ÿ</td>
<td>&amp;#255;</td>
<td>&amp;yuml;</td>
<td>small y, umlaut mark</td>
</tr>
<tr>
<td>Œ</td>
<td>&amp;#338;</td>
<td>&amp;OElig;</td>
<td>capital ligature OE</td>
</tr>
<tr>
<td>œ</td>
<td>&amp;#339;</td>
<td>&amp;oelig;</td>
<td>small ligature oe</td>
</tr>
<tr>
<td>Š</td>
<td>&amp;#352;</td>
<td>&amp;Scaron;</td>
<td>capital S with caron</td>
</tr>
<tr>
<td>š</td>
<td>&amp;#353;</td>
<td>&amp;scaron;</td>
<td>small S with caron</td>
</tr>
<tr>
<td>Ÿ</td>
<td>&amp;#376;</td>
<td>&amp;Yuml;</td>
<td>capital Y with diaeres</td>
</tr>
</tbody>
<tr>
<td colspan="4"><a name="D"></a><br />
<h2>Math Characters</h2>
</td>
</tr>
<thead>
<tr>
<td align="left">Character</td>
<td align="left">Entity Number</td>
<td align="left">Entity Name</td>
<td align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>∀</td>
<td>&amp;#8704;</td>
<td>&amp;forall;</td>
<td>for all</td>
</tr>
<tr>
<td>∂</td>
<td>&amp;#8706;</td>
<td>&amp;part;</td>
<td>part</td>
</tr>
<tr>
<td>∃</td>
<td>&amp;#8707;</td>
<td>&amp;exist;</td>
<td>exists</td>
</tr>
<tr>
<td>∅</td>
<td>&amp;#8709;</td>
<td>&amp;empty;</td>
<td>empty</td>
</tr>
<tr>
<td>∇</td>
<td>&amp;#8711;</td>
<td>&amp;nabla;</td>
<td>nabla</td>
</tr>
<tr>
<td>∈</td>
<td>&amp;#8712;</td>
<td>&amp;isin;</td>
<td>isin</td>
</tr>
<tr>
<td>∉</td>
<td>&amp;#8713;</td>
<td>&amp;notin;</td>
<td>notin</td>
</tr>
<tr>
<td>∋</td>
<td>&amp;#8715;</td>
<td>&amp;ni;</td>
<td>ni</td>
</tr>
<tr>
<td>∏</td>
<td>&amp;#8719;</td>
<td>&amp;prod;</td>
<td>prod</td>
</tr>
<tr>
<td>∑</td>
<td>&amp;#8721;</td>
<td>&amp;sum;</td>
<td>sum</td>
</tr>
<tr>
<td>−</td>
<td>&amp;#8722;</td>
<td>&amp;minus;</td>
<td>minus</td>
</tr>
<tr>
<td>∗</td>
<td>&amp;#8727;</td>
<td>&amp;lowast;</td>
<td>lowast</td>
</tr>
<tr>
<td>√</td>
<td>&amp;#8730;</td>
<td>&amp;radic;</td>
<td>square root</td>
</tr>
<tr>
<td>∝</td>
<td>&amp;#8733;</td>
<td>&amp;prop;</td>
<td>proportional to</td>
</tr>
<tr>
<td>∞</td>
<td>&amp;#8734;</td>
<td>&amp;infin;</td>
<td>infinity</td>
</tr>
<tr>
<td>∠</td>
<td>&amp;#8736;</td>
<td>&amp;ang;</td>
<td>angle</td>
</tr>
<tr>
<td>∧</td>
<td>&amp;#8743;</td>
<td>&amp;and;</td>
<td>and</td>
</tr>
<tr>
<td>∨</td>
<td>&amp;#8744;</td>
<td>&amp;or;</td>
<td>or</td>
</tr>
<tr>
<td>∩</td>
<td>&amp;#8745;</td>
<td>&amp;cap;</td>
<td>cap</td>
</tr>
<tr>
<td>∪</td>
<td>&amp;#8746;</td>
<td>&amp;cup;</td>
<td>cup</td>
</tr>
<tr>
<td>∫</td>
<td>&amp;#8747;</td>
<td>&amp;int;</td>
<td>integral</td>
</tr>
<tr>
<td>∴</td>
<td>&amp;#8756;</td>
<td>&amp;there4;</td>
<td>therefore</td>
</tr>
<tr>
<td>∼</td>
<td>&amp;#8764;</td>
<td>&amp;sim;</td>
<td>similar to</td>
</tr>
<tr>
<td>≅</td>
<td>&amp;#8773;</td>
<td>&amp;cong;</td>
<td>congruent to</td>
</tr>
<tr>
<td>≈</td>
<td>&amp;#8776;</td>
<td>&amp;asymp;</td>
<td>almost equal</td>
</tr>
<tr>
<td>≠</td>
<td>&amp;#8800;</td>
<td>&amp;ne;</td>
<td>not equal</td>
</tr>
<tr>
<td>≡</td>
<td>&amp;#8801;</td>
<td>&amp;equiv;</td>
<td>equivalent</td>
</tr>
<tr>
<td>≤</td>
<td>&amp;#8804;</td>
<td>&amp;le;</td>
<td>less or equal</td>
</tr>
<tr>
<td>≥</td>
<td>&amp;#8805;</td>
<td>&amp;ge;</td>
<td>greater or equal</td>
</tr>
<tr>
<td>⊂</td>
<td>&amp;#8834;</td>
<td>&amp;sub;</td>
<td>subset of</td>
</tr>
<tr>
<td>⊃</td>
<td>&amp;#8835;</td>
<td>&amp;sup;</td>
<td>superset of</td>
</tr>
<tr>
<td>⊄</td>
<td>&amp;#8836;</td>
<td>&amp;nsub;</td>
<td>not subset of</td>
</tr>
<tr>
<td>⊆</td>
<td>&amp;#8838;</td>
<td>&amp;sube;</td>
<td>subset or equal</td>
</tr>
<tr>
<td>⊇</td>
<td>&amp;#8839;</td>
<td>&amp;supe;</td>
<td>superset or equal</td>
</tr>
<tr>
<td>⊕</td>
<td>&amp;#8853;</td>
<td>&amp;oplus;</td>
<td>circled plus</td>
</tr>
<tr>
<td>⊗</td>
<td>&amp;#8855;</td>
<td>&amp;otimes;</td>
<td>cirled times</td>
</tr>
<tr>
<td>⊥</td>
<td>&amp;#8869;</td>
<td>&amp;perp;</td>
<td>perpendicular</td>
</tr>
<tr>
<td>⋅</td>
<td>&amp;#8901;</td>
<td>&amp;sdot;</td>
<td>dot operator</td>
</tr>
</tbody>
<tbody>
<tr>
<td colspan="4">
<a name="E"></a><br />
<h2>Greek Letters</h2>
</td>
</tr>
</tbody>
<thead>
<tr>
<td align="left">Character</td>
<td align="left">Entity Number</td>
<td align="left">Entity Name</td>
<td align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>Α</td>
<td>&amp;#913;</td>
<td>&amp;Alpha;</td>
<td>Alpha</td>
</tr>
<tr>
<td>Β</td>
<td>&amp;#914;</td>
<td>&amp;Beta;</td>
<td>Beta</td>
</tr>
<tr>
<td>Γ</td>
<td>&amp;#915;</td>
<td>&amp;Gamma;</td>
<td>Gamma</td>
</tr>
<tr>
<td>Δ</td>
<td>&amp;#916;</td>
<td>&amp;Delta;</td>
<td>Delta</td>
</tr>
<tr>
<td>Ε</td>
<td>&amp;#917;</td>
<td>&amp;Epsilon;</td>
<td>Epsilon</td>
</tr>
<tr>
<td>Ζ</td>
<td>&amp;#918;</td>
<td>&amp;Zeta;</td>
<td>Zeta</td>
</tr>
<tr>
<td>Η</td>
<td>&amp;#919;</td>
<td>&amp;Eta;</td>
<td>Eta</td>
</tr>
<tr>
<td>Θ</td>
<td>&amp;#920;</td>
<td>&amp;Theta;</td>
<td>Theta</td>
</tr>
<tr>
<td>Ι</td>
<td>&amp;#921;</td>
<td>&amp;Iota;</td>
<td>Iota</td>
</tr>
<tr>
<td>Κ</td>
<td>&amp;#922;</td>
<td>&amp;Kappa;</td>
<td>Kappa</td>
</tr>
<tr>
<td>Λ</td>
<td>&amp;#923;</td>
<td>&amp;Lambda;</td>
<td>Lambda</td>
</tr>
<tr>
<td>Μ</td>
<td>&amp;#924;</td>
<td>&amp;Mu;</td>
<td>Mu</td>
</tr>
<tr>
<td>Ν</td>
<td>&amp;#925;</td>
<td>&amp;Nu;</td>
<td>Nu</td>
</tr>
<tr>
<td>Ξ</td>
<td>&amp;#926;</td>
<td>&amp;Xi;</td>
<td>Xi</td>
</tr>
<tr>
<td>Ο</td>
<td>&amp;#927;</td>
<td>&amp;Omicron;</td>
<td>Omicron</td>
</tr>
<tr>
<td>Π</td>
<td>&amp;#928;</td>
<td>&amp;Pi;</td>
<td>Pi</td>
</tr>
<tr>
<td>Ρ</td>
<td>&amp;#929;</td>
<td>&amp;Rho;</td>
<td>Rho</td>
</tr>
<tr>
<td>Σ</td>
<td>&amp;#931;</td>
<td>&amp;Sigma;</td>
<td>Sigma</td>
</tr>
<tr>
<td>Τ</td>
<td>&amp;#932;</td>
<td>&amp;Tau;</td>
<td>Tau</td>
</tr>
<tr>
<td>Υ</td>
<td>&amp;#933;</td>
<td>&amp;Upsilon;</td>
<td>Upsilon</td>
</tr>
<tr>
<td>Φ</td>
<td>&amp;#934;</td>
<td>&amp;Phi;</td>
<td>Phi</td>
</tr>
<tr>
<td>Χ</td>
<td>&amp;#935;</td>
<td>&amp;Chi;</td>
<td>Chi</td>
</tr>
<tr>
<td>Ψ</td>
<td>&amp;#936;</td>
<td>&amp;Psi;</td>
<td>Psi</td>
</tr>
<tr>
<td>Ω</td>
<td>&amp;#937;</td>
<td>&amp;Omega;</td>
<td>Omega</td>
</tr>
<tr>
<td>α</td>
<td>&amp;#945;</td>
<td>&amp;alpha;</td>
<td>alpha</td>
</tr>
<tr>
<td>β</td>
<td>&amp;#946;</td>
<td>&amp;beta;</td>
<td>beta</td>
</tr>
<tr>
<td>γ</td>
<td>&amp;#947;</td>
<td>&amp;gamma;</td>
<td>gamma</td>
</tr>
<tr>
<td>δ</td>
<td>&amp;#948;</td>
<td>&amp;delta;</td>
<td>delta</td>
</tr>
<tr>
<td>ε</td>
<td>&amp;#949;</td>
<td>&amp;epsilon;</td>
<td>epsilon</td>
</tr>
<tr>
<td>ζ</td>
<td>&amp;#950;</td>
<td>&amp;zeta;</td>
<td>zeta</td>
</tr>
<tr>
<td>η</td>
<td>&amp;#951;</td>
<td>&amp;eta;</td>
<td>eta</td>
</tr>
<tr>
<td>θ</td>
<td>&amp;#952;</td>
<td>&amp;theta;</td>
<td>theta</td>
</tr>
<tr>
<td>ι</td>
<td>&amp;#953;</td>
<td>&amp;iota;</td>
<td>iota</td>
</tr>
<tr>
<td>κ</td>
<td>&amp;#954;</td>
<td>&amp;kappa;</td>
<td>kappa</td>
</tr>
<tr>
<td>λ</td>
<td>&amp;#955;</td>
<td>&amp;lambda;</td>
<td>lambda</td>
</tr>
<tr>
<td>μ</td>
<td>&amp;#956;</td>
<td>&amp;mu;</td>
<td>mu</td>
</tr>
<tr>
<td>ν</td>
<td>&amp;#957;</td>
<td>&amp;nu;</td>
<td>nu</td>
</tr>
<tr>
<td>ξ</td>
<td>&amp;#958;</td>
<td>&amp;xi;</td>
<td>xi</td>
</tr>
<tr>
<td>ο</td>
<td>&amp;#959;</td>
<td>&amp;omicron;</td>
<td>omicron</td>
</tr>
<tr>
<td>π</td>
<td>&amp;#960;</td>
<td>&amp;pi;</td>
<td>pi</td>
</tr>
<tr>
<td>ρ</td>
<td>&amp;#961;</td>
<td>&amp;rho;</td>
<td>rho</td>
</tr>
<tr>
<td>ς</td>
<td>&amp;#962;</td>
<td>&amp;sigmaf;</td>
<td>sigmaf</td>
</tr>
<tr>
<td>σ</td>
<td>&amp;#963;</td>
<td>&amp;sigma;</td>
<td>sigma</td>
</tr>
<tr>
<td>τ</td>
<td>&amp;#964;</td>
<td>&amp;tau;</td>
<td>tau</td>
</tr>
<tr>
<td>υ</td>
<td>&amp;#965;</td>
<td>&amp;upsilon;</td>
<td>upsilon</td>
</tr>
<tr>
<td>φ</td>
<td>&amp;#966;</td>
<td>&amp;phi;</td>
<td>phi</td>
</tr>
<tr>
<td>χ</td>
<td>&amp;#967;</td>
<td>&amp;chi;</td>
<td>chi</td>
</tr>
<tr>
<td>ψ</td>
<td>&amp;#968;</td>
<td>&amp;psi;</td>
<td>psi</td>
</tr>
<tr>
<td>ω</td>
<td>&amp;#969;</td>
<td>&amp;omega;</td>
<td>omega</td>
</tr>
<tr>
<td>ϑ</td>
<td>&amp;#977;</td>
<td>&amp;thetasym;</td>
<td>theta symbol</td>
</tr>
<tr>
<td>ϒ</td>
<td>&amp;#978;</td>
<td>&amp;upsih;</td>
<td>upsilon symbol</td>
</tr>
<tr>
<td>ϖ</td>
<td>&amp;#982;</td>
<td>&amp;piv;</td>
<td>pi symbol</td>
</tr>
</tbody>
<tbody>
<tr>
<td colspan="4">
<a name="F"></a><br />
<h2>Miscellaneous</h2>
</td>
</tr>
</tbody>
<thead>
<tr>
<td align="left">Character</td>
<td align="left">Entity Number</td>
<td align="left">Entity Name</td>
<td align="left">Description</td>
</tr>
</thead>
<tbody>
<tr>
<td>ƒ</td>
<td>&amp;#402;</td>
<td>&amp;fnof;</td>
<td>f with hook</td>
</tr>
<tr>
<td>ˆ</td>
<td>&amp;#710;</td>
<td>&amp;circ;</td>
<td>modifier letter circumflex accent</td>
</tr>
<tr>
<td>˜</td>
<td>&amp;#732;</td>
<td>&amp;tilde;</td>
<td>small tilde</td>
</tr>
<tr></tr>
<tr>
<td>–</td>
<td>&amp;#8211;</td>
<td>&amp;ndash;</td>
<td>en dash</td>
</tr>
<tr>
<td>—</td>
<td>&amp;#8212;</td>
<td>&amp;mdash;</td>
<td>em dash</td>
</tr>
<tr>
<td>‘</td>
<td>&amp;#8216;</td>
<td>&amp;lsquo;</td>
<td>left single quotation mark</td>
</tr>
<tr>
<td>’</td>
<td>&amp;#8217;</td>
<td>&amp;rsquo;</td>
<td>right single quotation mark</td>
</tr>
<tr>
<td>‚</td>
<td>&amp;#8218;</td>
<td>&amp;sbquo;</td>
<td>single low-9 quotation mark</td>
</tr>
<tr>
<td>“</td>
<td>&amp;#8220;</td>
<td>&amp;ldquo;</td>
<td>left double quotation mark</td>
</tr>
<tr>
<td>”</td>
<td>&amp;#8221;</td>
<td>&amp;rdquo;</td>
<td>right double quotation mark</td>
</tr>
<tr>
<td>„</td>
<td>&amp;#8222;</td>
<td>&amp;bdquo;</td>
<td>double low-9 quotation mark</td>
</tr>
<tr>
<td>†</td>
<td>&amp;#8224;</td>
<td>&amp;dagger;</td>
<td>dagger</td>
</tr>
<tr>
<td>‡</td>
<td>&amp;#8225;</td>
<td>&amp;Dagger;</td>
<td>double dagger</td>
</tr>
<tr>
<td>•</td>
<td>&amp;#8226;</td>
<td>&amp;bull;</td>
<td>bullet</td>
</tr>
<tr>
<td>…</td>
<td>&amp;#8230;</td>
<td>&amp;hellip;</td>
<td>horizontal ellipsis</td>
</tr>
<tr>
<td>‰</td>
<td>&amp;#8240;</td>
<td>&amp;permil;</td>
<td>per mille</td>
</tr>
<tr>
<td>′</td>
<td>&amp;#8242;</td>
<td>&amp;prime;</td>
<td>minutes</td>
</tr>
<tr>
<td>″</td>
<td>&amp;#8243;</td>
<td>&amp;Prime;</td>
<td>seconds</td>
</tr>
<tr>
<td>‹</td>
<td>&amp;#8249;</td>
<td>&amp;lsaquo;</td>
<td>single left angle quotation</td>
</tr>
<tr>
<td>›</td>
<td>&amp;#8250;</td>
<td>&amp;rsaquo;</td>
<td>single right angle quotation</td>
</tr>
<tr>
<td>‾</td>
<td>&amp;#8254;</td>
<td>&amp;oline;</td>
<td>overline</td>
</tr>
<tr>
<td>€</td>
<td>&amp;#8364;</td>
<td>&amp;euro;</td>
<td>euro</td>
</tr>
<tr>
<td>™</td>
<td>&amp;#8482;</td>
<td>&amp;trade;</td>
<td>trademark</td>
</tr>
<tr>
<td>←</td>
<td>&amp;#8592;</td>
<td>&amp;larr;</td>
<td>left arrow</td>
</tr>
<tr>
<td>↑</td>
<td>&amp;#8593;</td>
<td>&amp;uarr;</td>
<td>up arrow</td>
</tr>
<tr>
<td>→</td>
<td>&amp;#8594;</td>
<td>&amp;rarr;</td>
<td>right arrow</td>
</tr>
<tr>
<td>↓</td>
<td>&amp;#8595;</td>
<td>&amp;darr;</td>
<td>down arrow</td>
</tr>
<tr>
<td>↔</td>
<td>&amp;#8596;</td>
<td>&amp;harr;</td>
<td>left right arrow</td>
</tr>
<tr>
<td>↵</td>
<td>&amp;#8629;</td>
<td>&amp;crarr;</td>
<td>carriage return arrow</td>
</tr>
<tr>
<td>⌈</td>
<td>&amp;#8968;</td>
<td>&amp;lceil;</td>
<td>left ceiling</td>
</tr>
<tr>
<td>⌉</td>
<td>&amp;#8969;</td>
<td>&amp;rceil;</td>
<td>right ceiling</td>
</tr>
<tr>
<td>⌊</td>
<td>&amp;#8970;</td>
<td>&amp;lfloor;</td>
<td>left floor</td>
</tr>
<tr>
<td>⌋</td>
<td>&amp;#8971;</td>
<td>&amp;rfloor;</td>
<td>right floor</td>
</tr>
<tr>
<td>◊</td>
<td>&amp;#9674;</td>
<td>&amp;loz;</td>
<td>lozenge</td>
</tr>
<tr>
<td>♠</td>
<td>&amp;#9824;</td>
<td>&amp;spades;</td>
<td>spade</td>
</tr>
<tr>
<td>♣</td>
<td>&amp;#9827;</td>
<td>&amp;clubs;</td>
<td>club</td>
</tr>
<tr>
<td>♥</td>
<td>&amp;#9829;</td>
<td>&amp;hearts;</td>
<td>heart</td>
</tr>
<tr>
<td>♦</td>
<td>&amp;#9830;</td>
<td>&amp;diams;</td>
<td>diamond</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerdrager.com/2010/02/06/definitive-html-entities-reference-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
