<?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>Phil&#039;s Blog</title>
	<atom:link href="http://famousphil.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://famousphil.com</link>
	<description>My Personal Blog</description>
	<lastBuildDate>Sat, 21 Aug 2010 00:04:30 +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>Password Policy on a Windows Server 2008 R2 Domain Controller</title>
		<link>http://famousphil.com/blog/2010/08/password-policy-on-a-windows-server-2008-r2-domain-controller/</link>
		<comments>http://famousphil.com/blog/2010/08/password-policy-on-a-windows-server-2008-r2-domain-controller/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 00:04:30 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Hosting / Server Administration]]></category>
		<category><![CDATA[active directory]]></category>
		<category><![CDATA[domain controller]]></category>
		<category><![CDATA[password complexity]]></category>
		<category><![CDATA[password policy]]></category>
		<category><![CDATA[server 2008 r2]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=559</guid>
		<description><![CDATA[Phil solves the problem of disabling complex passwords and other password policies that are enabled by default with the installation of Active Directory on Server 2008 R2.  ]]></description>
			<content:encoded><![CDATA[<p>This is an annoyance that I constantly have to look at 2 sources to remember so I&#8217;ve decided to consolidate my 2 sources into a single blog that I can refer to in the future.  Basically, every time I set up a new Server 2008 R2 box to act as an Active Directory domain controller, I always run into passwords having to be complex and changed every 42 days by default.  This is an annoyance because users don&#8217;t like having to do that so frequently.  The location to change this isn&#8217;t in a common sense location either.</p>
<p>To change the policy, goto your start menu and in the search area (provided it will run commands), type in &#8220;gpmc.msc&#8221; and hit enter.  This will bring up the Group Policy Management Console.  Expand the local forest that you want to modify the password policy for.  Expand Domains, and the domain that you wish to modify.  Right click on Default Domain Policy and click edit.  This will bring up a new screen.  You want to navigate to Computer Configuration -&gt; Policies -&gt; Windows Settings -&gt; Security Settings -&gt; Account Policies -&gt; Password Policy.  From this screen, you will be able to modify the password policy.  You can either reboot or type in a new command &#8220;<span style="font-family: Verdana,Arial,Helvetica; font-size: x-small;">gpupdate   /force&#8221; and the new settings will take over.<br />
</span></p>
<p>I don&#8217;t recommend disabling features such as complexity because your users will then be able to use passwords such as &#8220;letmein, password, changeme&#8221;, etc.  These are insecure passwords and those who use them are simply asking to get their accounts compromised.</p>
<p>Also, the solution above will not work if you have a password window open that is forcing you to use a complex window, you will have to go through that wizard again.  This also won&#8217;t reverse the force password changes on next login if a user needs to change their password due to the old policies.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/password-policy-on-a-windows-server-2008-r2-domain-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 Calendar to ICalendar using ASP.net / C# &#8211; Coding Blog 2/2</title>
		<link>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-coding-blog-22/</link>
		<comments>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-coding-blog-22/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 04:02:23 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[My Site]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[exchange 2010]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[ical]]></category>
		<category><![CDATA[icalendar]]></category>
		<category><![CDATA[ics]]></category>
		<category><![CDATA[VCAL]]></category>
		<category><![CDATA[vcalendar]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=539</guid>
		<description><![CDATA[Phil releases a fairly step by step guide on how to convert an Exchange 2010 Calendar into VCalendar / ICalendar format using ASP.NET in Visual Studio 2010.]]></description>
			<content:encoded><![CDATA[<p><strong>Reminders</strong>: As with anything I post, I ask that you provide a backlink to my code if you use it (if you don’t, its considered plagiarism).  Also, the code below is the outcome of 2 days in ASP.net as an excursion, I’m sure that my code could be improved vastly.  I’m also not going to baby step through this, so you’re going to have to be a somewhat experienced programmer to follow along with the rest of my blog.  One last thing: If you feel the urge to donate to me for my time (provided this solution helped you), please use the NEW donate button in the footer, I appreciate it.<span id="more-539"></span></p>
<p>In Visual Studio 2010, create a new empty website in C#.  I’d recommend giving this website a logical name, mine is named VCalendarGenerator.  Once you’re settled, right click the actual website and goto “add service reference”.  In the address box, you want to enter the service reference Address, which is the path to exchange.asmx.  This will be something like <a href="https://%3cfqdn%3e/ews/exchange.asmx">https://&lt;fqdn&gt;/ews/exchange.asmx</a>.  At this point, click go and let it find the service information.  You will be prompted to login, you MUST use an administrator’s account on the exchange server, your regular OWA login will not work.  After this step, you will not need to be an administrator on the exchange server.  In the namespace box, enter Exchange (or whatever you wish).  Click the Advanced button, then click the add web reference button.  In the URL, enter the same address and hit enter.  You will probably have to allow some prompts and ok allowing only the secure content through (which is fine).  Once that is all set, change the web reference name to “ewsclass” without the quotes and click ok.</p>
<p>Now we’re all set up to program in Visual Studio.  Since I want the Default page of the website to load a VCalendar (I don’t want this website to do anything else), I’m going to right click the project and add a new item.  The item that I want to add is a web form.  This should be bring up a new page in the list called Default.aspx.  Now we want to right click on Default.aspx and select view code.    Within the partial class scope, you want to insert the following function:</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">GenerateVCalendar Function in C#</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="csharp" style="font-family:monospace;"><span class="coMULTI">/**
     * Description: Prints a VCalendar Complaint File for web distribution from an Exchange 2010 Account - TESTED
     * This file accompanies the FamousPhil.com Blog Post regarding ASP.net and Exchange -&gt; VCalendar (August 2010)
     * NOTE: Written on ASP.NET Framework 4.0
     * NOTE: Here are the proper imports for your class file (usually placed above the class name)
     using System;
     using ewsclass;
     using System.Net;
&nbsp;
     * NOTE: Page that this function prints to MUST contain no additional content
     Recommended Display Page code:
     &lt;%@ Language=&quot;C#&quot; CodeFile=&quot;VCalendar.aspx.cs&quot; Inherits=&quot;VCalendar&quot; %&gt;
     &lt;% GenerateVCalendar(); %&gt;
&nbsp;
     *
     * Accepts the following parameters:
     *
     * User - Exchange OWA Username (without the domain)
     * Password - Exchange OWA Password for Username Specified
     * fqdn - Fully Qualified Domain Name (OWA Access Top Level Domain like yahoo.com)
     * esburl - Exchange Web Services URL - Normally https://&lt;fqdn&gt;/ews/exchange.asmx
     * datestart - Integer for how many days from today to start outputing calendar events (-30 would mean from 30 days ago)
     * dateend - Integer for how many days from today to end output calendar events (30 would mean 30 days from today into the future)
     *
     * To minimize Exchange load and time outs (and slow load speeds), keep the date range under 360 days (a full year)
     */</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">void</span> GenerateVCalendar<span class="br0">&#40;</span><span class="kw4">String</span> user, <span class="kw4">String</span> password, <span class="kw4">String</span> fqdn, <span class="kw4">String</span> esburl, <span class="kw4">int</span> datestart, <span class="kw4">int</span> dateend<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
&nbsp;
        Response.<span class="me1">ContentType</span> <span class="sy0">=</span> <span class="st0">&quot;text/calendar&quot;</span><span class="sy0">;</span>
        Response.<span class="me1">AddHeader</span><span class="br0">&#40;</span><span class="st0">&quot;Content-disposition&quot;</span>, <span class="st0">&quot;attachment; filename=calendar.ics&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;BEGIN:VCALENDAR&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;PRODID:-//Matthouse.us//Matthouse.us / Famousphil.com Exchange to VCAL v1.00//EN&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;VERSION:2.0&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;CALSCALE:GREGORIAN&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;METHOD:PUBLISH&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;X-WR-CALNAME:Exported Exchange Calendar For user:&quot;</span><span class="sy0">+</span>user<span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        ExchangeServiceBinding esb <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> ExchangeServiceBinding<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        esb.<span class="me1">Credentials</span> <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NetworkCredential<span class="br0">&#40;</span>user, password, fqdn<span class="br0">&#41;</span><span class="sy0">;</span>
        esb.<span class="me1">Url</span> <span class="sy0">=</span> esburl<span class="sy0">;</span>
        esb.<span class="me1">RequestServerVersionValue</span> <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> RequestServerVersion<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        esb.<span class="me1">RequestServerVersionValue</span>.<span class="me1">Version</span> <span class="sy0">=</span> ExchangeVersionType.<span class="me1">Exchange2010</span><span class="sy0">;</span>
&nbsp;
        <span class="co1">//Calendar extraction code partially found from</span>
        <span class="co1">//http://weblogs.asp.net/psperanza/archive/2008/03/18/getting-calendar-items-using-exchange-web-services.aspx</span>
&nbsp;
        FindItemType findItemRequest <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> FindItemType<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        CalendarViewType calendarView <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> CalendarViewType<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        calendarView.<span class="me1">StartDate</span> <span class="sy0">=</span> DateTime.<span class="me1">Now</span>.<span class="me1">AddDays</span><span class="br0">&#40;</span>datestart<span class="br0">&#41;</span><span class="sy0">;</span>
        calendarView.<span class="me1">EndDate</span> <span class="sy0">=</span> DateTime.<span class="me1">Now</span>.<span class="me1">AddDays</span><span class="br0">&#40;</span>dateend<span class="br0">&#41;</span><span class="sy0">;</span>
        calendarView.<span class="me1">MaxEntriesReturned</span> <span class="sy0">=</span> <span class="nu0">5000</span><span class="sy0">;</span>
        calendarView.<span class="me1">MaxEntriesReturnedSpecified</span> <span class="sy0">=</span> true<span class="sy0">;</span>
        findItemRequest.<span class="me1">Item</span> <span class="sy0">=</span> calendarView<span class="sy0">;</span>
        ItemResponseShapeType itemProperties <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> ItemResponseShapeType<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        itemProperties.<span class="me1">BaseShape</span> <span class="sy0">=</span> DefaultShapeNamesType.<span class="me1">AllProperties</span><span class="sy0">;</span>
        findItemRequest.<span class="me1">ItemShape</span> <span class="sy0">=</span> itemProperties<span class="sy0">;</span>
        DistinguishedFolderIdType<span class="br0">&#91;</span><span class="br0">&#93;</span> folderIDArray <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> DistinguishedFolderIdType<span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="sy0">;</span>
        folderIDArray<span class="br0">&#91;</span>0<span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> DistinguishedFolderIdType<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        folderIDArray<span class="br0">&#91;</span>0<span class="br0">&#93;</span>.<span class="me1">Id</span> <span class="sy0">=</span> DistinguishedFolderIdNameType.<span class="me1">calendar</span><span class="sy0">;</span>
        findItemRequest.<span class="me1">ParentFolderIds</span> <span class="sy0">=</span> folderIDArray<span class="sy0">;</span>
        findItemRequest.<span class="me1">Traversal</span> <span class="sy0">=</span> ItemQueryTraversalType.<span class="me1">Shallow</span><span class="sy0">;</span>
        <span class="kw1">try</span>
        <span class="br0">&#123;</span>
            FindItemResponseType findItemResponse <span class="sy0">=</span>
                esb.<span class="me1">FindItem</span><span class="br0">&#40;</span>findItemRequest<span class="br0">&#41;</span><span class="sy0">;</span>
            ArrayOfResponseMessagesType responseMessages <span class="sy0">=</span>
                findItemResponse.<span class="me1">ResponseMessages</span><span class="sy0">;</span>
            ResponseMessageType<span class="br0">&#91;</span><span class="br0">&#93;</span> rmta <span class="sy0">=</span> responseMessages.<span class="me1">Items</span><span class="sy0">;</span>
            <span class="kw4">int</span> folderNumber <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw1">foreach</span> <span class="br0">&#40;</span>ResponseMessageType rmt <span class="kw1">in</span> rmta<span class="br0">&#41;</span>
            <span class="br0">&#123;</span>
                FindItemResponseMessageType firmt <span class="sy0">=</span>
                    rmt <span class="kw1">as</span> FindItemResponseMessageType<span class="sy0">;</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span>firmt.<span class="me1">RootFolder</span> <span class="sy0">==</span> <span class="kw1">null</span><span class="br0">&#41;</span>
                    continue<span class="sy0">;</span>
                FindItemParentType fipt <span class="sy0">=</span> firmt.<span class="me1">RootFolder</span><span class="sy0">;</span>
                <span class="kw4">object</span> obj <span class="sy0">=</span> fipt.<span class="me1">Item</span><span class="sy0">;</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span>obj <a href="http://www.google.com/search?q=is+msdn.microsoft.com"><span class="kw3">is</span></a> ArrayOfRealItemsType<span class="br0">&#41;</span>
                <span class="br0">&#123;</span>
                    ArrayOfRealItemsType items <span class="sy0">=</span>
                        <span class="br0">&#40;</span>obj <span class="kw1">as</span> ArrayOfRealItemsType<span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw1">if</span> <span class="br0">&#40;</span>items.<span class="me1">Items</span> <span class="sy0">==</span> <span class="kw1">null</span><span class="br0">&#41;</span>
                    <span class="br0">&#123;</span>
                        folderNumber<span class="sy0">++;</span>
                    <span class="br0">&#125;</span>
                    <span class="kw1">else</span>
                    <span class="br0">&#123;</span>
                        <span class="kw1">foreach</span> <span class="br0">&#40;</span>ItemType it <span class="kw1">in</span> items.<span class="me1">Items</span><span class="br0">&#41;</span>
                        <span class="br0">&#123;</span>
                            <span class="kw1">if</span> <span class="br0">&#40;</span>it <a href="http://www.google.com/search?q=is+msdn.microsoft.com"><span class="kw3">is</span></a> CalendarItemType<span class="br0">&#41;</span>
                            <span class="br0">&#123;</span>
                                CalendarItemType cal <span class="sy0">=</span> <span class="br0">&#40;</span>CalendarItemType<span class="br0">&#41;</span>it<span class="sy0">;</span>
&nbsp;
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;BEGIN:VEVENT&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;UID:&quot;</span> <span class="sy0">+</span> DateTime.<span class="me1">Now</span>.<span class="me1">ToUniversalTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="st0">&quot;yyyyMMddTHHmmssZ&quot;</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">&quot;@&quot;</span><span class="sy0">+</span>fqdn<span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;DTSTAMP:&quot;</span> <span class="sy0">+</span> DateTime.<span class="me1">Now</span>.<span class="me1">ToUniversalTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="st0">&quot;yyyyMMddTHHmmssZ&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;DTSTART:&quot;</span> <span class="sy0">+</span> cal.<span class="me1">Start</span>.<span class="me1">ToUniversalTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="st0">&quot;yyyyMMddTHHmmssZ&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;DTEND:&quot;</span> <span class="sy0">+</span> cal.<span class="me1">End</span>.<span class="me1">ToUniversalTime</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="st0">&quot;yyyyMMddTHHmmssZ&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;SUMMARY:&quot;</span> <span class="sy0">+</span> cal.<span class="me1">Subject</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;LOCATION:&quot;</span> <span class="sy0">+</span> cal.<span class="me1">Location</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;DESCRIPTION:&quot;</span> <span class="sy0">+</span> cal.<span class="me1">Body</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;END:VEVENT&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                                Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                            <span class="br0">&#125;</span>
                        <span class="br0">&#125;</span>
                        folderNumber<span class="sy0">++;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">catch</span> <span class="br0">&#40;</span>Exception e<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            throw<span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">finally</span>
        <span class="br0">&#123;</span>
        <span class="br0">&#125;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="st0">&quot;END:VCALENDAR&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Response.<span class="me1">Write</span><span class="br0">&#40;</span><span class="kw5">System</span>.<span class="me1">Environment</span>.<span class="me1">NewLine</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span></pre></div></div>
<p>Save the default.aspx.cs file.  Let’s open up Default.aspx now and remove all the default HTML and body ASP code (mostly forms) that is present in that file except for the top line that starts with &lt;% (which is the asp tag).  We’re going to replace this with:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">default.aspx page code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="asp" style="font-family:monospace;"><span class="sy1">&lt;%</span><span class="sy0">@</span> Page Language<span class="sy0">=</span><span class="st0">&quot;C#&quot;</span> AutoEventWireup<span class="sy0">=</span><span class="st0">&quot;true&quot;</span> CodeFile<span class="sy0">=</span><span class="st0">&quot;Default.aspx.cs&quot;</span> Inherits<span class="sy0">=</span><span class="st0">&quot;_Default&quot;</span> <span class="sy1">%&gt;</span>
&nbsp;
<span class="sy1">&lt;%</span> GenerateVCalendar<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="sy1">%&gt;</span></pre></div></div>
<p>If you know anything about code, you should realize that this is an improper call.  Using the parameters defined in the block comment above my code, fill in this function appropriately.  Once everything looks good, right click your project and publish it to an IIS server.  I had a few difficulties making it work with IIS at first, but those were all solved after I reinstalled the .NET Framework 4 update on my IIS server (which I consider to be an administration issue, not a developer issue).</p>
<p><strong>I’ve decided against posting my full Visual Studio project online because I’ve already given you 95% of what you need to make this work.  I’ve discovered that programmers who are learning like to copy paste whatever code claims to do what they want without looking, and this leads to incompetent programmers!  Experienced / intermediate coders (with little ASP.NET experience) will immediately understand what I&#8217;m saying and fill in the pieces quickly, and that is the goal of this blog post.</strong></p>
<p><strong><em>One final note about FamousPhil&#8217;s recent design change</em></strong>: I will soon release the new calendar to my site (making the calendar icon work) sometime this weekend.  My goal is to rewrite the code above into a local application which can be run from the command line to use fewer server resources.  I also see some other issues with the header not working on Internet Explorer, so I will soon be fixing that also.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-coding-blog-22/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 Calendar to ICalendar using ASP.net / C# &#8211; Part 1/2</title>
		<link>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-part-12/</link>
		<comments>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-part-12/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 01:48:02 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[exchange 2010]]></category>
		<category><![CDATA[ical]]></category>
		<category><![CDATA[ics]]></category>
		<category><![CDATA[owa]]></category>
		<category><![CDATA[VCAL]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=537</guid>
		<description><![CDATA[Phil covers the background behind why he wants to convert an Exchange 2010 calendar to iCalendar format.  This is a 2 part blog with the code coming Friday.]]></description>
			<content:encoded><![CDATA[<p>For a long time now (2 years and counting), I’ve been wanting to dabble with ASP and Microsoft web technologies.  It seems that for every project that I want to dabble with, I have to gather a lot of ambition and have an end goal in mind well before I begin.  I guess that being a seasoned programmer; I have gotten very lazy at what projects I feel like attacking (this is partially why this blog doesn’t get a post every day).</p>
<p><span id="more-537"></span></p>
<p>Recently, I gathered enough ambition to finally solve the problem: Exporting an Exchange calendar to an ics file (also known as the icalendar or vcalendar format).  Up until last January when I upgraded to Exchange 2010, I have been able to get my calendar and publish it on my website by using the webdav protocol.  Webdav is a way to gain access to remote information on a webserver without a lot of hassle.</p>
<p>The most common use of webdav is remote file access.  Typically, when newbies begin developing on websites, they want an easy way to get to their website without having to use other software.  Using webdav, a user can simply use the built in Windows/Mac/Linux interface to connect directly to the remote web server.  This will provide the user with a new drive which is directly linked to the remote server.</p>
<p>Coming back to Exchange Calendars, Exchange 2007 depreciated webdav for a new concept called Exchange Web Services (EWS), while Exchange 2010 completely removed webdav.  So this left me holding the webdav code (that worked well until January) without any replacement.  I tried a very poor method to keep my calendar somewhat live from January until April, but ultimately, it failed miserably.  Basically I used outlook to connect to Exchange, google calendar to connect to outlook, then I posted a google calendar to my site.  With all the hops, my calendar was rarely in sync with what was on my website (there were too many possible failure points).  This is when I began looking for a solution using Exchange Web Services.</p>
<p>I tend to support open source solutions when they’re available so I spent roughly 2 months intermittently searching for a solution using only PHP, Perl, Python or Ruby to retrieve my exchange calendar.  My goal was to convert this into the VCalendar format which then an open source solution could display on my website (I’ve been looking at <a href="http://monket.net/wiki-v2/Monket_Calendar">Monket Calendar</a> ).  Unfortunately, short of writing a few new libraries for Exchange connectivity from PHP (probably using SOAP which is a common communication protocol that PHP can interface with), I decided that maybe it’s time to learn ASP.net to become proficient at something new.  To me, new languages aren’t a big deal anymore since I’ve learned the core concepts and what a new language really is (Kudos to <a href="http://www.cse.buffalo.edu/%7Ealphonce">Carl Alphonce</a> for teaching me this).</p>
<p>I’ve been tossing around if I want to share my asp.net solution as open source considering the cheapest solution for what I wanted to do is $600 commercially PER SERVER, AND Microsoft has fairly poor documentation when it comes to Exchange newbies (such as myself).  After a lot of consideration, I’ve decided to post a general guide to getting started using Visual Studio 2010 along with the actual code for connecting Exchange (yay:  you’re in luck!).</p>
<p>Since I like to keep my blogs somewhat small, I’m going to defer my code and explanation a few days since that blog post will pertain more to coders, not so much the general audience (with general explanations).</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/exchange-2010-calendar-to-icalendar-using-asp-net-c-part-12/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wireless Routers &#8211; A good way to keep yourself protected</title>
		<link>http://famousphil.com/blog/2010/08/wireless-routers-a-good-way-to-keep-yourself-protected/</link>
		<comments>http://famousphil.com/blog/2010/08/wireless-routers-a-good-way-to-keep-yourself-protected/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 02:52:26 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[wireless router]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=534</guid>
		<description><![CDATA[Phil discusses how a wireless router is more than a way to get wireless in your home, it also provides very powerful protection from unwanted hackers.]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s topic was sparked by a recent influx of worms attempting to take over one of the public servers that I manage.  Basically, I constantly get log notifications for the firewall (yes, I actually read logs!) saying that all these attack signatures are being detected against programs running on one of my servers.</p>
<p>These programs are IIS 7  (web server, Internet Information Services) and MSSQL Server 2008 R2 (Microsoft Standard Query Language Server).  In the past when I ran my own computers on an un-firewalled internet connection (public wi-fi, home DSL), with home security software installed (like Norton 360), I have also noticed these types of log messages and popup warnings.</p>
<p>Most people (I’d estimate at least 50%) probably have some sort of broadband, un-firewalled, connection setup in their home that is directly connected to their computer.  Most people probably subscribe to some security solution like Norton 360, and they probably run some sort of firewall.  Normally, these firewalls catch all the bad stuff that can harm your computer, but stuff still could potentially come through.</p>
<p>Although there will always be loop holes for these security vulnerabilities, there is another means of protection that most people would NEVER think of!  If you’re thinking Wireless router from the local Wally World (Wal-Mart), you read my thoughts. <strong> Yes, Wireless routers don’t just share an internet connection wirelessly like most people think. </strong></p>
<p>So what else does a wireless router do?  A wireless router is simply a ROUTER with a wireless ability built into it.  Routers are complex pieces of engineering that connect many computers together.  Without getting into too much detail, routers connect two separate networks together to bring multiple endpoints together.  The internet has many subnets that are connected to each other through routers. Think of the telephone system when I mention this, more specifically area codes and dialing prefixes.  The area code for Matthouse is 716, the prefix is 584.  So 1-716-584-xxxx gets routed to a particular telephone.   In my example, when you dial the full number, 1 means connect to the main US router which knows all the US phone area codes.  Next, 716 means connect to the router which  handles the Western New York area prefixes, then finally that router sends the call to the router than handles the 584 prefix.  That router then is practically directly connected to the xxxx number which will ring a phone and help establish your connection.  The internet is connected in a similar fashion.</p>
<p>Traffic is sent in internet packets that run on a certain port number.  For simplicity, a port is required to connect to a computer.  Computers listen on ports for connections and there are 65535 possible ports.  You might think of a port like a way to get to your house from the road at your address.  Each drive way is a unique path in and it accepts only a certain type of car.  Hackers tend to send a car into that drive way that acts and looks like the car it accepts, but once it’s in, it can cause havoc in your home (computer).</p>
<p><strong>So what am I getting to?</strong> Routers connect different networks, so they inherently have to forward all the traffic from one network to another, including all the ports.  Since ports are easy ways to get into your computer (provided your computer is actively listening / accepting on that port), hackers tend to go for these ports.  Some ports on web servers (like port 80) are absolutely necessary to leave open, but other ports like 5109 (which happens to be the AOL Instant Messenger port) probably isn’t needed on that web server.   For a home computer, blocking all the ports inbound to the computer is probably smart, while allowing all the outgoing ports from the computer to the internet.</p>
<p><strong>NOTE</strong>: I probably should add that with outbound connections through firewalls, if you request something from an external source (say a webserver) while having all incoming connections blocked, you will still get the response from that external source.  Firewalls are smart about allowing replies back through while blocking all new connections that are probably hacker initiated.</p>
<p>BOTTOM LINE: <strong>All computers have different needs. </strong>A wireless router when added to your network will block all incoming ports by default and allow all outgoing connections on all ports.  Therefore, by adding one of these cheap boxes, you’re not only gaining a wireless network access point, but you’re also protecting yourself from the nasty dangers of hackers that probe computers for open listening ports.  Since many ISPs provide un-firewalled public IP addresses to residential customers, those customers would be wise to install one of these routers.  Who knows, it might save their computer from a severe attack from a hacker some day!  I’ve also found that when I run a firewall in terms of a router, I don’t need as much protection from Norton 360 on my computer, so I basically have a faster computer (it isn’t working on blocking bad stuff anymore).</p>
<p>Hopefully this helps you!</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/wireless-routers-a-good-way-to-keep-yourself-protected/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>New Comment Spam Policy</title>
		<link>http://famousphil.com/blog/2010/08/new-comment-spam-policy/</link>
		<comments>http://famousphil.com/blog/2010/08/new-comment-spam-policy/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 16:39:55 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[My Site]]></category>
		<category><![CDATA[policy update]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=530</guid>
		<description><![CDATA[Phil's new comment approval policy is enclosed.]]></description>
			<content:encoded><![CDATA[<p>This is more an update than anything else.  I have finally taken the time to prune some of the comments in the past year on FamousPhil.  In the future, I will be only approving links that either are track backs or contain non SEO titles.  I have never minded allowing comments, but the spam volume that I&#8217;ve begun seeing is just too unreasonable to continue handling without changing my policies. In the past, I&#8217;ve approved comments that contain text that pertains to the post, but I just can&#8217;t continue on that course <img src='http://famousphil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In the next week or so, I will also be disabling user registrations, along with pruning the user database (except to the guest posters who were asked to make an account).  That too has gotten out of hand!</p>
<p>As always, if you want to make a guest post and get a real link back with seo key words, feel free to contact me <img src='http://famousphil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I generally don&#8217;t mind the content as long as it has something useful in it that won&#8217;t harm my readers.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/new-comment-spam-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows or Linux Hosting?</title>
		<link>http://famousphil.com/blog/2010/08/windows-or-linux-hosting/</link>
		<comments>http://famousphil.com/blog/2010/08/windows-or-linux-hosting/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 01:26:03 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Hosting / Server Administration]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[choice]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=526</guid>
		<description><![CDATA[Phil discusses the difference between Windows Hosting and Linux Hosting and why Linux Hosting is truly more wise in most cases.]]></description>
			<content:encoded><![CDATA[<p>Often times, I&#8217;m asked the question: Should I get Windows hosting or Linux hosting for my new website.  This is a topic that comes up time and time again in my field of expertise and sadly, newbies often choose based on perception, not based on fact.  This blog will cover some of the facts about both hosting platforms and hopefully help you make an informed decision about how you want your website hosted.<br />
<span id="more-526"></span><br />
Due to perception, Windows hosting, by no doubt, is the most chosen hosting platform by newbies worldwide (in my experience).  Unless my knowledge is outdated, Windows is the most popular and used operating system on the market today.  I&#8217;d say that there are at least 2 windows users to every mac or Linux user out there, there are possibly as many as 5 or 6, but I will remain with a conservative estimate.  Most new people who are just starting in the website world want their new website to be as compatible with everyone else as possible.  Since most people use Windows, most newbies make the assumption that Windows hosting is necessary to ensure that most of their friends will be able to see their website without any compatibility issues.</p>
<p>Before I get to the main point, I&#8217;d like to explain how a web server acts under the hood.  Deep down in the guts of the web server&#8217;s programming, there is a concept called a socket and a protocol.  Sockets are used to open a connection from any web browser (Internet Explorer, Firefox, Chrome, Safari, Opera, etc) to the web server sitting in a data center somewhere.  A socket is similar to establishing a telephone call to a friend, the wires that connect both ends of the telephone receivers together can be viewed as a socket.  A protocol can be simply described as a means of communication.  When you&#8217;re on the telephone, there is a way that you speak, for example, you expect to hear hello before the conversation begins, and there are pauses and such as both sides understand the other.  If the connection is weak, one side may ask to hear the message over again.  This is the normal protocol of a telephone call.  Computers are no different, they expect hello messages, acknowledgment messages and such to validate that the message each side got was the correct message.  In the web&#8217;s case, this protocol is called Hyper Text Transfer Protocol (HTTP).  Finally, there is data that is passed through the socket.  The data follows the protocol specification.  On the telephone, you&#8217;d begin speaking English, then once done, you&#8217;d wait for the other side to return its response in English.  Most web browsers understand HTML (Hyper Text Markup Language) and this is passed through the socket.  The last paragraph has been ultra simplified so that you can get the idea.</p>
<p>Contrary to popular belief, Windows hosting is actually just as compatible with the world as Linux hosting is!  Because of HTTP, all web servers must communicate using a single protocol which is HTTP.  All browsers that work with the web send an HTTP request to a web server for a certain content and the web server returns it.  It may not always be plain text (HTML is written in plain text), but at times it may be binary (1/0 encoded) data that contains an image or other files.  Regardless, the web server must be uniform in a response, it is up to the browser how this data may be displayed.</p>
<p>ASIDE: Most web developers are annoyed about how they HAVE to test Internet Explorer, Opera, Firefox, Chrome, and Safari to make sure that their web page looks correct.  Browsers all will get the same exact data from the server, but they parse the data differently.  Think of English, I&#8217;m sure that you&#8217;ve been in situations where you misunderstood the other party and therefore took a different action.  Computer browsers parse (or understand) the same web page differently, so they may display web pages a bit different than other browsers.  To implement (program) a browser, you need to look at the specification of the HTTP protocol and HTML language then give the browser methods to display what it understands.  There is no single way to write a parser, therefore all parsers (browsers in this case) may produce slightly different results.  In the past, Microsoft has been the worst offender since they didn&#8217;t fully implement the HTML specification which is well known, but they&#8217;ve gotten much better.</p>
<p>Back to the original topic, since all servers have to return the same exact data, it doesn&#8217;t matter what operating system is on the server, it will return the same compatible data regardless.  So now, what are the differences between Windows and Linux based hosting?</p>
<p>Windows Hosting-</p>
<ul>
<li>Price: Just like with your copy of Windows on your local computer, a copy of Windows for a server is quite pricey.  If you want the latest and greatest Windows Server version (currently 2008 R2), you are looking at anywhere between $300-$1500 PER COPY of Windows Server 2008 R2.  This is on top of the costs to keep the server running in a data center that is climate controlled and sufficiently powered (backup systems in place, multiple excellent internet connections to many providers).</li>
<li>Stability: Windows has a monthly release of updates from Microsoft, sometimes these are more frequent as important issues are found and fixed.  Normally, 99% of Windows updates require a reboot of the server.  During the reboot, your websites are not accessible.  Therefore, you can easily look at 5 to 10 minutes of downtime at least once per month if your host cares anything about security.</li>
<li>Ease of administration: Most administrators start in Windows and never leave because Windows typically babies the administrator through any task.  Windows has really nice wizards that take all the difficulty out of administration.  Windows also typically can fix itself if it runs into issues, so there is less time spent fixing problems.  Unfortunately, since administrators don&#8217;t need to know a lot to get by with Windows, some security measures are often overlooked.</li>
<li>Control Panels: These are often desired in hosting since it gives the client the power to do anything with their website space, including create accounts, view statistics, add additional domains, control email accounts and more.  There are 4 control panels that I&#8217;m aware of, they are dotnetpanel, vdeck, plesk, helm.  All 4 of these controls panels can cost anywhere from $20-$100/month to maintain from their suppliers.</li>
<li>Supported Languages: ASP.net, ASP, JSP, Perl (CGI), PHP, Python, Ruby, etc</li>
<li>Supported Database Servers: MySQL, MSSQL, Oracle, etc</li>
</ul>
<p>Linux Hosting-</p>
<ul>
<li>Price: Linux is free, so you&#8217;re really looking at the bare cost to keep the server running in a data center.  This dramatically reduces the cost of hosting.</li>
<li>Stability: In my experience, I see the need to reboot a Linux server every 4 to 5 months due to a major security vulnerability that involves the kernel (the heart of Linux).  Linux can be easily updated without a reboot, so clients typically experience much less down time.</li>
<li>Ease of administration: Linux has very few wizards and graphical screens that say &#8220;let me baby you through this dreaded task&#8221;.  In fact, Linux is 99% controlled by the command line when it is used as a server.  Often, Linux often will not even notify the administrator that there is a problem directly.  Therefore, administrators tend to monitor Linux more closely.  They also know the command line more because to get a server running in Linux takes a lot more knowledge than it does in Windows.  Linux administrators are also more likely to know about security measures more because they read more about flaws that are found.  This makes Linux administrators get a better pay check, but in the end, Linux tends to be very stable because the admins really know what they&#8217;re doing (in most cases).</li>
<li>Control Panels: Like Windows, control panels on Linux cost between $20-$100/month from their suppliers.  The most common panel for Linux is CPanel, Plesk also exists.  These give you full control over your web space and in many cases, they also simply the administrator&#8217;s job by doing the hand editing of vital configuration files automatically (like Windows would do).</li>
<li>Supported Languages: JSP, Perl (CGI), PHP, Python, Ruby, etc</li>
<li>Supported Database Servers: MySQL, Oracle, etc</li>
</ul>
<p>So, I&#8217;ve done a comparison, what is the verdict?  In my humble opinion, Linux is by far my choice of a hosting platform.  Although Linux admins may cost a little more, they really don&#8217;t cost enough more to make it unreasonable (Windows admins make a good pay check too!).  It does everything that Windows can do and more.  There is just one catch with Linux.  Linux doesn&#8217;t support Microsoft SQL Server or ASP.NET (active server pages) fully (You can achieve partial support using MONO).  Therefore, if you must have a website that uses either MSSQL or ASP/ASP.NET, I&#8217;m afraid that you have no choice if you want your website to work without problems.  Most websites are programmed in PHP, so this is rarely a problem, but for some businesses that started long before PHP was created, ASP is a need, therefore, Windows is needed.</p>
<p>Yet another Aside: You may have noticed that not too long ago, I added a new Windows server to Matthouse (bit).  This was added because I do not have a lot of ASP experience and I thought it would be nice to get some experience with it.  I&#8217;ve decided to use ASP to pull data from Microsoft Exchange to display a new calendar on FamousPhil.  I hope that this is done by the end of August!  Unfortunately, I cannot access Exchange from PHP, so I had no real choice but using ASP.net to pull data.</p>
<p>This blog post was made because I&#8217;ve always seen newbies go for Windows without a real reason.  Its sort of like the Mac fans who fight to get Mac products for no real advantage over something like the Android OS on Verizon Phones.  Hopefully this blog post will convince you that Linux is indeed a better choice unless you seriously want to learn or use ASP.net for your website.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/windows-or-linux-hosting/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>MySQL Command Line Admin Cheat Sheet</title>
		<link>http://famousphil.com/blog/2010/08/mysql-command-line-admin-cheat-sheet/</link>
		<comments>http://famousphil.com/blog/2010/08/mysql-command-line-admin-cheat-sheet/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 01:28:11 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Hosting / Server Administration]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[cheat]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[interpreter]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=515</guid>
		<description><![CDATA[Phil created a MySQL Administrator cheat sheet for basic - intermediate command line MySQL administration.]]></description>
			<content:encoded><![CDATA[<h2>Introduction:</h2>
<p>This topic plagues me to death every time I need to do some administrative function MySQL simply because I don&#8217;t do it every day.  I have 3 servers that I manage entirely via the command line now and all 3 require me to know at least some MySQL.  Unfortunately, I always end up going to several sources to get all the information I need.  So instead of doing that in the future, I&#8217;m writing this blog as a centralized reference for everything I need.  Hopefully you can use this blog as much as I will!</p>
<p>Note: You will need to click the &#8220;show code&#8221; icon in the top right corner to view the code entirely for some of the blocks that are longer than the code box.</p>
<p><span id="more-515"></span></p>
<h2>A few side notes:</h2>
<ol>
<li>Hosts: Mysql allows access to certain hosts.  % means allow the user to connect from any computer on the internet that can reach the database server, localhost / 127.0.0.1 both will allow the user to connect only from the local database server.</li>
<li>&lt;&gt; means you need need to put in the appropriate information</li>
</ol>
<h2>Basic User Commands:</h2>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Logging into MySQL interpreter via the console (SSH)</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysql <span class="re5">-u</span> <span class="sy0">&lt;</span>username<span class="sy0">&gt;</span> <span class="re5">-p</span></pre></div></div>
<ul>
<li>Login may require -h &lt;server address).  If remotely connecting, verify that port 3306 is allowed through the firewall on your end and the remote database server.</li>
<li>This is done through SSH / the console, not within the MySQL interpreter!</li>
</ul>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Update a user's password</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">UPDATE</span> mysql<span class="sy0">.</span>user <span class="kw1">SET</span> password<span class="sy0">=</span>PASSWORD<span class="br0">&#40;</span><span class="st0">&quot;&lt;new password&gt;&quot;</span><span class="br0">&#41;</span> <span class="kw1">WHERE</span> User<span class="sy0">=</span><span class="st0">'&lt;username&gt;'</span>;</pre></div></div>
<ul>
<li>You don&#8217;t want to use % or other mysql special characters in the password as they will cause you grief when using other commands.</li>
<li>This should be done within the MySQL Interpreter</li>
</ul>
<h2>Backup / Restore Commands:</h2>
<p><strong>These should be done through SSH / the console!  NOT within MySQL&#8217;s interpreter!!!<br />
</strong></p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Backup the database server entirely (done as root)</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysqldump <span class="re5">-u</span> root <span class="re5">-p</span><span class="st_h">'&lt;mysql root'</span>s password<span class="sy0">&gt;</span><span class="st_h">' --all-databases &gt; &lt;filename&gt;.sql</span></pre></div></div>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Restore a full MySQL database server backup</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysql <span class="re5">-u</span> root -p<span class="sy0">&lt;</span>Root<span class="st_h">'s Password&gt; &lt; &lt;filename to restore backup with .sql extension&gt;</span></pre></div></div>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Backup a single database</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysqldump <span class="re5">--user</span>=<span class="sy0">&lt;</span>username<span class="sy0">&gt;</span> <span class="re5">--password</span>=<span class="sy0">&lt;</span>password<span class="sy0">&gt;</span> <span class="re5">--databases</span> <span class="sy0">&lt;</span>database<span class="sy0">&gt;</span> <span class="re5">--opt</span> <span class="re5">--quote-names</span> <span class="re5">--allow-keywords</span> <span class="re5">--complete-insert</span> <span class="sy0">&gt;</span> <span class="sy0">&lt;</span>filename<span class="sy0">&gt;</span>.sql</pre></div></div>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Restore a single database</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mysql <span class="re5">-u</span> <span class="sy0">&lt;</span>username<span class="sy0">&gt;</span> -p<span class="sy0">&lt;</span>User<span class="st_h">'s Password&gt; &lt; &lt;filename&gt;.sql</span></pre></div></div>
<h2>General Administration Commands:</h2>
<p>NOTE: All of these commands should be done within the MySQL interpreter!</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Create a Database</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">CREATE</span> <span class="kw1">DATABASE</span> <span class="sy0">&lt;</span>database name<span class="sy0">&gt;</span>;</pre></div></div>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Delete a Database</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">DROP</span> <span class="kw1">DATABASE</span> <span class="sy0">&lt;</span>database name<span class="sy0">&gt;</span>;</pre></div></div>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Create a valid username</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">CREATE</span> user <span class="st0">'&lt;username&gt;'</span>@<span class="st0">'&lt;allowed hosts&gt;'</span> <span class="kw1">IDENTIFIED</span> <span class="kw1">BY</span> <span class="st0">'&lt;user'</span>s password<span class="sy0">&gt;</span><span class="st0">';</span></pre></div></div>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Allow a valid username to connect to a database</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">GRANT</span> <span class="kw1">ALL</span> <span class="kw1">ON</span> <span class="sy0">&lt;</span>database name<span class="sy0">&gt;.*</span> <span class="kw1">TO</span> <span class="st0">'&lt;username&gt;'</span>@<span class="st0">'&lt;allowed hosts&gt;'</span>;</pre></div></div>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Click to show/hide code block">Delete a valid user from the MySQL Server</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">DELETE</span> <span class="kw1">FROM</span> mysql<span class="sy0">.</span>user <span class="kw1">WHERE</span> user<span class="sy0">=</span><span class="st0">'&lt;username&gt;'</span>;</pre></div></div>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Click to show/hide code block">Flush All the MySQL Privileges (done after any modifications typically)</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">FLUSH</span> privileges;</pre></div></div>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Click to show/hide code block">Exit the Interpreter</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;">exit;</pre></div></div>
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Click to show/hide code block">Change a user's valid connecting hosts</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">UPDATE</span> mysql<span class="sy0">.</span>user <span class="kw1">SET</span> host<span class="sy0">=</span>’<span class="sy0">&lt;</span>allowed hosts<span class="sy0">&gt;</span>’ <span class="kw1">WHERE</span> user<span class="sy0">=</span>’<span class="sy0">&lt;</span>username<span class="sy0">&gt;</span>’;</pre></div></div>
<div id="wpshdo_17" class="wp-synhighlighter-outer"><div id="wpshdt_17" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_17"></a><a id="wpshat_17" class="wp-synhighlighter-title" href="#codesyntax_17"  onClick="javascript:wpsh_toggleBlock(17)" title="Click to show/hide code block">Change the valid connecting hosts on a database</a></td><td align="right"><a href="#codesyntax_17" onClick="javascript:wpsh_code(17)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_17" onClick="javascript:wpsh_print(17)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_17" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">UPDATE</span> mysql<span class="sy0">.</span>db <span class="kw1">SET</span> Host<span class="sy0">=</span><span class="st0">'&lt;allowed host&gt;'</span> <span class="kw1">WHERE</span> Db<span class="sy0">=</span><span class="st0">'&lt;database name&gt;'</span>;</pre></div></div>
<div id="wpshdo_18" class="wp-synhighlighter-outer"><div id="wpshdt_18" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_18"></a><a id="wpshat_18" class="wp-synhighlighter-title" href="#codesyntax_18"  onClick="javascript:wpsh_toggleBlock(18)" title="Click to show/hide code block">Change the valid connecting hosts on a  database</a></td><td align="right"><a href="#codesyntax_18" onClick="javascript:wpsh_code(18)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_18" onClick="javascript:wpsh_print(18)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_18" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">UPDATE</span> mysql<span class="sy0">.</span>db <span class="kw1">SET</span> Host<span class="sy0">=</span><span class="st0">'&lt;allowed host&gt;'</span> <span class="kw1">WHERE</span>  Db<span class="sy0">=</span><span class="st0">'&lt;database name&gt;'</span>;</pre></div></div>
<div id="wpshdo_19" class="wp-synhighlighter-outer"><div id="wpshdt_19" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_19"></a><a id="wpshat_19" class="wp-synhighlighter-title" href="#codesyntax_19"  onClick="javascript:wpsh_toggleBlock(19)" title="Click to show/hide code block">Select a Database</a></td><td align="right"><a href="#codesyntax_19" onClick="javascript:wpsh_code(19)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_19" onClick="javascript:wpsh_print(19)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_19" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">USE</span> <span class="sy0">&lt;</span>database name<span class="sy0">&gt;</span>;</pre></div></div>
<div id="wpshdo_20" class="wp-synhighlighter-outer"><div id="wpshdt_20" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_20"></a><a id="wpshat_20" class="wp-synhighlighter-title" href="#codesyntax_20"  onClick="javascript:wpsh_toggleBlock(20)" title="Click to show/hide code block">View all the databases on the server</a></td><td align="right"><a href="#codesyntax_20" onClick="javascript:wpsh_code(20)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_20" onClick="javascript:wpsh_print(20)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_20" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SHOW</span> <span class="kw1">DATABASES</span>;</pre></div></div>
<div id="wpshdo_21" class="wp-synhighlighter-outer"><div id="wpshdt_21" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_21"></a><a id="wpshat_21" class="wp-synhighlighter-title" href="#codesyntax_21"  onClick="javascript:wpsh_toggleBlock(21)" title="Click to show/hide code block">List the tables within a selected database</a></td><td align="right"><a href="#codesyntax_21" onClick="javascript:wpsh_code(21)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_21" onClick="javascript:wpsh_print(21)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_21" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SHOW</span> <span class="kw1">TABLES</span>;</pre></div></div>
<div id="wpshdo_22" class="wp-synhighlighter-outer"><div id="wpshdt_22" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_22"></a><a id="wpshat_22" class="wp-synhighlighter-title" href="#codesyntax_22"  onClick="javascript:wpsh_toggleBlock(22)" title="Click to show/hide code block">Show the format of a table</a></td><td align="right"><a href="#codesyntax_22" onClick="javascript:wpsh_code(22)" title="Show code only"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_22" onClick="javascript:wpsh_print(22)" title="Print code"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://famousphil.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://famousphil.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_22" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">DESCRIBE</span> <span class="sy0">&lt;</span>table name<span class="sy0">&gt;</span>;</pre></div></div>
<h2><strong>Disclaimer</strong>:</h2>
<p>I may have got a few of these commands incorrect (typo).  If I did, please let me know so I can fix them asap.  If I missed a command that you&#8217;d like, please comment and I will add it.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/08/mysql-command-line-admin-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Malvertising, its much worse than you may think</title>
		<link>http://famousphil.com/blog/2010/07/malvertising-its-much-worse-than-you-may-think/</link>
		<comments>http://famousphil.com/blog/2010/07/malvertising-its-much-worse-than-you-may-think/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 15:32:43 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ads]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[antivirus 2010]]></category>
		<category><![CDATA[malvertising]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=472</guid>
		<description><![CDATA[Phil describes how easy it is to get Antivirus 2010 (Malware) on your computer by simply visiting major sites like Yahoo and Fox News.  This is a serious security risk!]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s blog kind of got pushed to the top of my to do list after I finally obtained a virus that I have been trying to get now for the past year and a half!  <strong>This basically deals with a type of malware which comes from advertisements on websites you visit.</strong> For many years now, I have always wondered, how can someone walk into my room, get on my computer, and have a virus on it within 5 minutes.  After all, I haven&#8217;t gotten a virus now in at least 5 years!!!  Is it the surfing habits of people, or is it just that I don&#8217;t visit &#8220;those&#8221; types of sites.  I&#8217;m going to go into a little detail today about what I&#8217;ve found out.</p>
<p>At one point or another, I&#8217;d say that at least half the population that uses a computer has seen some sort of a virus.  The most popular virus as of late (I&#8217;m talking the past 2 years) is the Antivirus 20xx Virus.  Its usually labeled Antivirus 2008, 2009, or 2010 and looks like an antivirus program.  The only trick is that it isn&#8217;t.  I&#8217;ve always wanted to figure out how this virus enters the computer because I&#8217;ve seen it so much now that I&#8217;ve become an expert at removing it without tools.  I&#8217;ve also given a few lectures (as a Teaching Assistant) on viruses, but without the virus as an example, it is really hard to show how infections occur and how to prevent them.  So instead, I just gave the usual lecture about run Windows Updates, Antivirus protection, and use Firefox or Google Chrome instead of Internet Explorer.<br />
<strong><br />
So now, lets get into how I actually found the virus</strong>.  Yesterday, I was talking with my friend, John, about the normal crap we talk about and John brought up that he was fixing a Windows XP machine that was infected by Antivirus 2010.  He mentioned that it was a popular virus (which I already know).  Up until that point I have fixed at least 10 computers with the same infection.  The only common thing I could come up with between them (in most cases) was that the user had Yahoo! set as their homepage, Windows update was seldomly ran, and Internet Explorer was the main browser.  John also came up with very similar characteristics.</p>
<p>Normally I give a walk through to everyone who I repair computers for that includes click ok to any updates to symantec antivirus and windows updates, this is what that screen will look like, etc.  <strong>Contrary to popular believe, some of the biggest updates DO NOT get installed automatically for Windows</strong>.  For example, internet explorer 8 right now is considered a non vital update, so is Windows Vista Service Pack 2.  Both of these updates take a long time to install and require the user to initiate them.  To do so,<strong> the user should get in a habit of running Windows Updates monthly</strong> at the very least to manually check for these updates that don&#8217;t automatically install.</p>
<p>Yesterday, as a test, John left Yahoo open in Internet Explorer on his fully updated computer and he noticed that a risk was found.  After hearing that, I too ran a similar test.  I follow all of my instructions and I verified that my computer had the latest version of everything.  I managed to find a risk within 5 minutes of simply reloading the yahoo page.  This completely shocked me and confirmed what 2 of my last customers said they were doing when they got the virus (working on Yahoo Mail).  The risks that I found could easily give me the virus that I&#8217;ve looked for.  Of course, I&#8217;m a bit smarter than most and I killed the Internet Explorer window through the task manager when the risk showed up.  I will still probably restore my computer though a hard drive clone I made a month ago to verify that nothing bad did happen.</p>
<p>I always thought that the culprit was free porn and file sharing (emule, limewire, torrent, etc).  I have always known that free videos and music can contain malicious software on the inside encoding that can cause your computer to execute a virus installer.  I never thought that this could happen from viewing a simple advertisement.   So now that I know the culprit, is there anything you can do to protect yourself?  Of course there is.  First, I strongly encourage you to dump Internet Explorer.  I have never seen &#8220;Internet Explorer&#8221; and &#8220;Secure&#8221; used in the same sentence with correct grammar (there is no correct way to put those 2 into the same sentence truthfully).  The first step to protect yourself is to Goto http://www.getfirefox.com or http://chrome.google.com and download Firefox or Chrome, then install it.  I personally like Firefox more, but others push Chrome too.</p>
<p>Now comes the controversial part of the solution.  The internet is mostly ran on Advertising (sadly) meaning that there is a lot of controversy with blocking advertising.  FamousPhil is a more a hobby site so I never intend on having advertisements on this site that I don&#8217;t have full control over.  Sadly, some of the biggest sites, including Yahoo, Fox, Google, and others have malware placed within their dynamic ads (as per my testing).  <strong>It may or may not be any fault of their own (there are hackers out there), but malvertising is a major security risk</strong>.  I have always run an ad blocker (which is probably why I have never gotten anything).  My reason has always been that I&#8217;m on a slow connection and without ads, my internet is so much faster.  Therefore, I have never strongly recommended ad blockers until today, but I always put them onto comptuers that I fix for clients.  <strong>Now I feel that without ad blockers, this malware will get into the computers of innocent people</strong>.  Being a computer technician, I really hate seeing the same problem / computer over and over.</p>
<p>So with that said lets apply an adblocker to your browser of choice above.  <strong>To install an adblocker for firefox</strong>, simply open up firefox and goto tools -&gt; addons.  Search for the addon &#8220;adblock plus&#8221;.  Install that addon and restart the browser.  Upon restart, you should see a screen asking what filter you want.  I am an avid fan of &#8220;easylist usa&#8221; which blocks just about everything that is advertising related.  <strong>For chrome</strong>, you want to click on the wrench (tools) and goto extensions.  Then you want to browse the gallery.  The first adblock by gundlach is the one you want to click on.  Then click the install button.  The extension will pop up a window that says install, so install it.  After that window goes away, simply exit google chrome and go back into it.  Ads should now be gone.</p>
<p><strong>I really hate having to recommend blocking ads, but hopefully after enough people block ads, the advertisers will realize that their ads are doing more damage than good and will fix that</strong>.  Until then, If you want to avoid viruses and crap, I&#8217;d strongly recommend using one.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/07/malvertising-its-much-worse-than-you-may-think/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Online Backup: Avoiding Disaster</title>
		<link>http://famousphil.com/blog/2010/07/online-backup-avoiding-disaster/</link>
		<comments>http://famousphil.com/blog/2010/07/online-backup-avoiding-disaster/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 16:32:23 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[alexis bonari]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[disaster]]></category>
		<category><![CDATA[guest post]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=469</guid>
		<description><![CDATA[A guest poster, Alexis Bonari, has graciously contributed a post about online backup solutions for home users!]]></description>
			<content:encoded><![CDATA[<p>I am delighted today to bring you a guest posting from Alexis Bonari!</p>
<p>Anyone who does any sort of work on their computer can tell you a hard drive crash is the stuff nightmares are made of.  While it’s easy to pass judgment on such individuals for failing to use an external hard drive, doing so is admittedly time-consuming and, in some cases, expensive.</p>
<p>The solution: online backup sites. For a small fee, these off-site servers back up all data stored on the computer in case of a hard drive failure.  Here are the top three such services and what they have to offer:</p>
<p>1. Carbonite<br />
(http://www.carbonite.com/en/default.aspx)<br />
For only $54.95/ year, Carbonite offers unlimited backup on their server.  No matter what your computer’s storage limit, the Carbonite system can handle it.  For security purposes, files are encrypted before being sent to the Carbonite server for storage. For ease of use, the files are automatically backed up each time the computer is connected to the Internet. Restoring the files is as simple as logging into the Carbonite website and clicking the “restore” button listed on your account.</p>
<p>2. MozyHome Free<br />
(http://mozy.com/home/free)<br />
Unlike Carbonite, Mozy doesn’t charge a fee for the first 2 GB backed up.  The system for retrieving files and backing them up is essentially the same the one used by Carbonite.  If you want to store more than 2 GB, Mozy charges $4.95/month.  This gives you unlimited data storage for only slightly more per year than Carbonite.</p>
<p>3. SugarSync<br />
(https://www.sugarsync.com/)<br />
Many experts believe that online syncing represents the future of online backup technology.  SugarSync.com is the current leader in online syncing technology. Instead of simply backing up a set of files on one computer, SugerSync notifies other computers and devices you’ve listed of any changes made. You can work from nearly anywhere in the world and have your files backed up in real-time by the Sugarsync server.  Devices supported include Mac’s, PC’s, Ipads, smart phones, and many others.</p>
<p>Those who sign up get a 30 day free trial.  After that, the price goes up to $10/month for 60 GB of storage.  While the limited storage and the higher price might be prohibitive for some customers, many are happy to pay extra for the ability to sync documents over multiple devices.</p>
<p>Bio: Alexis Bonari is a freelance writer and blog junkie. She spends much of her days blogging about Education and <a href="http://www.collegescholarships.org">CollegeScholarships</a>. In her spare time, she enjoys square-foot gardening, swimming, and avoiding her laptop.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/07/online-backup-avoiding-disaster/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Exchange 2010 Update Rollup 4 Via Windows Updates &#8211; Caution this Update!!!</title>
		<link>http://famousphil.com/blog/2010/07/exchange-2010-update-rollup-4-via-windows-updates-dont-do-it/</link>
		<comments>http://famousphil.com/blog/2010/07/exchange-2010-update-rollup-4-via-windows-updates-dont-do-it/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 07:22:41 +0000</pubDate>
		<dc:creator>Famous Phil</dc:creator>
				<category><![CDATA[Hosting / Server Administration]]></category>

		<guid isPermaLink="false">http://famousphil.com/?p=464</guid>
		<description><![CDATA[Phil Dealt with a Windows Update to Exchange 2010 that made OWA stop working... fix is enclosed.]]></description>
			<content:encoded><![CDATA[<p>This is the revised version of my initial blog last night:</p>
<p>I always perform updates monthly on all of my servers beginning at 10:30pm Eastern Time of the Wednesday following the 2nd Tuesday of the month (to stay in line with Microsoft Updates).  I know a lot of Windows admins look at the 2nd Tuesday of each month as &#8220;Black Tuesday&#8221;, and I now have a first hand incident that has me dreading it also.</p>
<p>So last night, Windows Updates recommended I install Exchange 2010 Server Update Rollup 4.  I have never had issues in the past, so I quickly looked into known issues and guidance.  Nothing was listed with a Bing / Google search (I use Bing more when I&#8217;m dealing with Microsoft technologies).  Anyways, last night the updates took about an hour to install.  Once done, I rebooted as normal, but Outlook Web Access didn&#8217;t ever come back.  After some investigation, all of the exchange related services that make exchange work were disabled.  I&#8217;m not sure why this was, but I began troubleshooting lots of stuff and the I have 2 theories for what happened (I did both at the same time so it could be either one).</p>
<p>I first tried to remove the update rollup that Windows Update installed but was asked for a DVD that I don&#8217;t think was ever made and released by Microsoft!!!!  I also tried a system restore which lead nowhere since it doesn&#8217;t exist on Server 2008.  After this, I was considering my options, I tried 2 things at the same time which worked to fix the issue and get Update Rollup 4 installed (thankfully).</p>
<p>Theory 1: The updater package disabled the web service and since the web service had to be up to be updated, the updater failed to update everything successfully.</p>
<p>Theory 2: The previous update rollups (I had update rollups 1, 2, and 3 all installed) were interfering with the new update rollup.  So I removed all 3 previous ones then reinstalled update rollup 4.  Note that I had to uninstall all 3 of these with the broken install of rollup 4 still listed in the optional remove panel. Once I was ready to reinstall update rollup 4, only update 4 was listed in the installed updates for exchange section of Windows Updates.</p>
<p>Steps to fix such an error:</p>
<p>1. don&#8217;t panic or get impatient, this will take about 3 hours</p>
<p>First remove any previous update rollups from the add/remove programs in the control panel for applied updates.  Each one will take about 15 to 30 minutes to uninstall.  I started with rollup 3 and worked my way backwards.</p>
<p>2. get the official rollup 4 package from Microsoft&#8217;s website</p>
<p>3. open up an elevated (run as administrator) command prompt and change directory to the file that you downloaded</p>
<p>4. execute the rollup msp file &#8211; don&#8217;t do anything once the installer loads yet</p>
<p>5. open up the services console (under administrative tools)</p>
<p>6. start the updater&#8230; as soon as it is done with the stopping services text, immediately goto the services console and enable both the iis admin service and world wide web publishing service, also START them immediately.  There is about a 60 second window to do both (start the www publish service first)</p>
<p>7. let it install, afterwards you will need to re-enable all of the exchange related services that were running prior to the original windows update (I hope you have a good memory, for my server, it was all but the edgesync service)</p>
<p>8. reboot the server</p>
<p>9. hopefully exchange will work again, for me it did.  Apparently Microsoft released a bad update to Windows Update this past black Tuesday and it caught me off guard <img src='http://famousphil.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Anyways, I hope this information is useful for other Windows Admins that are in this situation without any option but restore a complete system image and have lots of downtime while Exchange&#8217;s latest email is restored.</p>
]]></content:encoded>
			<wfw:commentRss>http://famousphil.com/blog/2010/07/exchange-2010-update-rollup-4-via-windows-updates-dont-do-it/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
