<?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>Eclipsed4utoo&#039;s Blog</title>
	<atom:link href="http://eclipsed4utoo.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://eclipsed4utoo.com/blog</link>
	<description>Not Your Ordinary Programmer</description>
	<lastBuildDate>Tue, 23 Feb 2010 22:00:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using SqlDependency To Monitor SQL Database Changes</title>
		<link>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/</link>
		<comments>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 22:00:34 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SqlDependency]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=299</guid>
		<description><![CDATA[In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.
The purpose of this class is to save you from having to continuously re-query the database to get new data. You [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.</p>
<p>The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.</p>
<p>We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.</p>
<p>My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.</p>
<p>So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</p>
<pre class="brush: sql;">
USING [YourDatabaseName]

CREATE QUEUE NameChangeQueue;
CREATE SERVICE NameChangeService ON QUEUE NameChangeQueue
([http://schemas.microsoft.com/sql/notifications/postquerynotification]);

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO YourUserName;
</pre>
<p>You can now see that we have a new queue and a new service.</p>
<p><img class="alignnone size-full wp-image-300" title="Database" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/Database.png" alt="Database" width="374" height="373" /></p>
<p>Now we move on to the code. The first thing you will need to do is to test if the connecting user has the privileges for the query notifications.</p>
<pre class="brush: csharp;">
private bool DoesUserHavePermission()
{
     try
     {
           SqlClientPermission clientPermission = new SqlClientPermission(PermissionState.Unrestricted);

           // will throw an error if user does not have permissions
           clientPermission.Demand();

           return true;
     }
     catch
     {
           return false;
     }
}
</pre>
<p>Next, we have our method to get the user names from the database.</p>
<pre class="brush: csharp;">
private void GetNames()
{
    if (!DoesUserHavePermission())
        return;

    lbNames.Items.Clear();

    SqlDependency.Stop(connectionString);
    SqlDependency.Start(connectionString);

    using (SqlConnection cn = new SqlConnection(connectionString))
    {
        using (SqlCommand cmd = cn.CreateCommand())
        {
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = &quot;SELECT FirstName, LastName FROM dbo.[Users]&quot;;

            cmd.Notification = null;

            SqlDependency dep = new SqlDependency(cmd);
            dep.OnChange += new OnChangeEventHandler(dep_OnChange);

            cn.Open();

            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    lbNames.Items.Add(dr.GetString(0) + &quot; &quot; + dr.GetString(1));
                }
            }
        }
    }
}
</pre>
<p><span style="color: #ff0000;"><strong>THIS IS VERY IMPORTANT.</strong></span></p>
<p><span style="color: #ff0000;">1. In the previous code, you will notice that my SQL query does not use the &#8220;*&#8221; wildcard to return all columns. You MUST return the exact columns that you want. If you use the &#8220;*&#8221;, it will cause you to have unwanted consequences.<br />
</span></p>
<p><span style="color: #ff0000;">2. Also in the previous code, you will notice that my SQL query contains the &#8220;two-part&#8221; table name. This is also REQUIRED. Using just &#8220;TableName&#8221; instead of &#8220;owner.TableName&#8221; will also cause unwanted consequences.</span></p>
<p>Here is the method for the <strong>OnChange </strong>event</p>
<pre class="brush: csharp;">
void dep_OnChange(object sender, SqlNotificationEventArgs e)
{
    // this event is run asynchronously so you will need to invoke to run on UI thread.
    if (this.InvokeRequired)
        lbNames.BeginInvoke(new MethodInvoker(GetNames));
    else
        GetNames();

    // this will remove the event handler since the dependency is only for a single notification
    SqlDependency dep = sender as SqlDependency;
    dep.OnChange -= new OnChangeEventHandler(dep_OnChange);
}
</pre>
<p>You will also need to stop the dependency when the form closes so that it doesn&#8217;t leave it running.</p>
<pre class="brush: csharp;">
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    SqlDependency.Stop(connectionString);
}
</pre>
<p>The other events&#8230;</p>
<pre class="brush: csharp;">
private void Form1_Load(object sender, EventArgs e)
{
    GetNames();
}

private void btnShowForm_Click(object sender, EventArgs e)
{
    Form2 f = new Form2();
    f.Show();
}
</pre>
<p>And my simple second form&#8217;s code..</p>
<pre class="brush: csharp;">
private void btnSave_Click(object sender, EventArgs e)
{
    using (SqlConnection cn = new SqlConnection(&quot;Data Source=alfordr;Initial Catalog=MyTestDatabase;User Id=dev;Password=dev;&quot;))
    {
        using (SqlCommand cmd = cn.CreateCommand())
        {
            cmd.CommandText = &quot;INSERT INTO Users VALUES (@FirstName, @LastName)&quot;;
            cmd.CommandType = CommandType.Text;

            cmd.Parameters.AddWithValue(&quot;@FirstName&quot;, txtFirstName.Text);
            cmd.Parameters.AddWithValue(&quot;@LastName&quot;, txtLastName.Text);

            cn.Open();

            cmd.ExecuteNonQuery();
        }
    }
}
</pre>
<p>And that is really all you have to do. Here are a couple of screenshots.</p>
<p>Before clicking &#8220;Save&#8221;&#8230;<br />
<img class="alignnone size-full wp-image-307" title="BeforeSave" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/BeforeSave.png" alt="BeforeSave" width="657" height="367" /><br />
After clicking &#8220;Save&#8221;&#8230;..<br />
<img class="alignnone size-full wp-image-308" title="AfterSave" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/AfterSave.png" alt="AfterSave" width="657" height="364" /></p>
<p>As you can see from my code, I am simply inserting data into my database when the<strong> Save</strong> button is clicked.  When the data is inserted, a notification is sent to the application, which is handled by the <strong>OnChange </strong>event.  The OnChange event then invokes the <strong>GetNames </strong>method which re-queries the database to get the new information.  This makes a huge performance improvement because I ONLY query when I need to.</p>
<p>This works for inserts, updates, and deletes.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: Verdana,sans-serif; font-size: 14px; line-height: 21px;">In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database.<span class="Apple-converted-space"> </span><br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</span></span><span style="border-collapse: separate; color: #000000; font-family: Arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span style="border-collapse: collapse; color: #222222; font-family: Verdana,sans-serif; font-size: 14px; line-height: 21px;">In this tutorial, I will use the SqlDependency class and Query notifications to monitor SQL Server 2005 database data changes. Query Notifications allow an application to be notified when data has changed in the database. <br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />The purpose of this class is to save you from having to continuously re-query the database to get new data. You would have probably done this by setting up a timer that executes every X amount of seconds so that your display control would be displaying the most up-to-date information. You will no longer have to do this.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />We will be using a Service Broker and a QUEUE in SQL Server 2005. These were new additions to SQL Server 2005. I will assume these are also in SQL Server 2008, but can&#8217;t guarantee.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />My example will be doing something very simple. I have a &#8220;Users&#8221; table in my database with two fields: FirstName and LastName. I am simply displaying these in a ListBox on one form. On a second form, I have textboxes to insert the data into the database.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />So first, we need to create the Queue and the Service broker and assign the privileges to the SQL user.</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/sqldependency-monitor-sql-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPF &#8211; Using an Application Configuration File</title>
		<link>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/</link>
		<comments>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:16:01 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[app.config]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ConfigurationManager]]></category>
		<category><![CDATA[wpf]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=292</guid>
		<description><![CDATA[This is going to be a real short post about an issue that I ran into recently with WPF.
I was wanting to use an app config file with my WPF application.  I was running into an issue with the ConfigurationManager calls not getting the information from the app config file.
I added the app config just [...]]]></description>
			<content:encoded><![CDATA[<p>This is going to be a real short post about an issue that I ran into recently with WPF.</p>
<p>I was wanting to use an app config file with my WPF application.  I was running into an issue with the ConfigurationManager calls not getting the information from the app config file.</p>
<p>I added the app config just like I would in a Windows Form..<br />
<img class="alignnone size-full wp-image-293" title="AppConfig" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2010/02/AppConfig.png" alt="AppConfig" width="679" height="418" /></p>
<p>My app config file looked something like this&#8230;</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
&lt;configuration&gt;
  &lt;appSettings&gt;
     &lt;add key=&quot;myKey&quot; value=&quot;SomeValue&quot; /&gt;
  &lt;/appSettings&gt;
&lt;/configuration&gt;
</pre>
<p>I was using the standard code that works fine in Windows Forms(needed to add a reference to the System.Configuration):</p>
<pre class="brush: csharp;">
using System.Configuration

private void Window_Loaded(object sender, RoutedEventArgs e)
{
     var myKey = ConfigurationManager.AppSettings[&quot;myKey&quot;];
}
</pre>
<p>However, the app settings were not being found.  After scratching my head for a while and searching numerous places online, I found a small response on a forum.  None of the &#8220;MVP&#8221;s picked up on it.  It was because of the name of the app config file.  By default, VS2008 added the file as &#8220;App1.config&#8221;.  For some reason, the ConfigurationManager class looks for a file named exactly &#8220;App.config&#8221;.</p>
<p>So simply changing the name of the config file to &#8220;App.config&#8221; fixed the issue and the code started working.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/wpf-application-configuration-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8211; Log in to Website Programmatically</title>
		<link>http://eclipsed4utoo.com/blog/log-website-programmatically/</link>
		<comments>http://eclipsed4utoo.com/blog/log-website-programmatically/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 22:00:41 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[programmatically]]></category>
		<category><![CDATA[WebBrowser]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=244</guid>
		<description><![CDATA[In this tutorial, will show how to log into a website through code.  I am going to use Twitter in my example.
THIS IS FOR EDUCATIONAL PURPOSES ONLY.  I WOULD NOT ADVISE THE USE OF THIS TO ALWAYS LOG-IN TO TWITTER.
First, you will need to download and install Tamper Data.  It&#8217;s an add-on for Firefox that [...]]]></description>
			<content:encoded><![CDATA[<p>In this tutorial, will show how to log into a website through code.  I am going to use Twitter in my example.</p>
<p><span style="color: #ff0000;"><strong>THIS IS FOR EDUCATIONAL PURPOSES ONLY.  I WOULD NOT ADVISE THE USE OF THIS TO ALWAYS LOG-IN TO TWITTER.</strong></span></p>
<p>First, you will need to download and install <a href="https://addons.mozilla.org/en-US/firefox/addon/966" target="_blank">Tamper Data</a>.  It&#8217;s an add-on for Firefox that allows you to view and tamper with GET/POST web request data.  We won&#8217;t be doing any tampering.  We will be using it to view what POST parameters the page is expecting.</p>
<p>Next, navigate to the log in page for Twitter(<a href="https://twitter.com/login" target="_blank">http://twitter.com/login</a>).  Once the page has loaded, go to <strong>Tools</strong> &#8211;&gt; <strong>Tamper Data</strong> to open <strong>Tamper Data</strong>.  At the top of Tamper Data, click the <strong>Start Tamper</strong> button.  After clicking the button, click the &#8220;Sign In&#8221; button on Twitter&#8217;s log in page.  Once you hit the Sign In button, Tamper Data will prompt you with this popup&#8230;.</p>
<p><img class="alignnone size-full wp-image-245" title="Tamper Data Popup" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2009/12/12-9-2009-4-24-49-PM.png" alt="Tamper Data Popup" width="324" height="140" /></p>
<p>Click &#8220;Tamper&#8221;.  You will then be presented with this window&#8230;</p>
<p><img class="alignnone size-full wp-image-246" title="Tamper Data" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2009/12/12-9-2009-4-15-09-PM.png" alt="Tamper Data" width="724" height="489" /></p>
<p>If you notice on the right-hand side of the window, you will see the POST parameters.  These are:</p>
<p>authenticity_token<br />
session[username_or_email]<br />
session[password]<br />
commit</p>
<p>Now that we have those, we can close the Tamper Data window, and close Firefox.</p>
<p>Now for the code.  The code is actually fairly simple.  We are just going to use the <strong>WebBrowser</strong> class to make the requests to the server to get the html source of the page.  This will give us the &#8220;authenticity_token&#8221; for us to use in the POST request.</p>
<pre class="brush: csharp;">
string url = &quot;https://twitter.com/login&quot;;
string username = &quot;someUserName&quot;;
string password = &quot;somePassword&quot;;
string commit = &quot;Sign+In&quot;; //this matches the data from Tamper Data

private void Login()
{
     WebBrowser b = new WebBrowser();
     b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted);
     b.Navigate(url);
}

private void b_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     WebBrowser b = sender as WebBrowser;
     string response = b.DocumentText;

     // looks in the page source to find the authenticity token.
     // could also use regular expressions here.
     int index = response.IndexOf(&quot;authenticity_token&quot;);
     int startIndex = index + 41;
     string authenticityToken = response.Substring(startIndex, 40);

     // unregisters the first event handler
     // adds a second event handler
     b.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted);
     b.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(b_DocumentCompleted2);

     // format our data that we are going to post to the server
     // this will include our post parameters.  They do not need to be in a specific
     //    order, as long as they are concatenated together using an ampersand ( &amp; )
     string postData = string.Format(&quot;authenticity_token={2}&amp;session[username_or_email]={0}&amp;session[password]={1}&amp;commit={3}&quot;, username, password, authenticityToken, commit);

     ASCIIEncoding enc = new ASCIIEncoding();

     //  we are encoding the postData to a byte array
     b.Navigate(&quot;https://twitter.com/sessions&quot;, &quot;&quot;, enc.GetBytes(postData), &quot;Content-Type: application/x-www-form-urlencoded\r\n&quot;);
}

private void b_DocumentCompleted2(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     WebBrowser b = sender as WebBrowser;
     string response = b.DocumentText;

     if (response.Contains(&quot;Sign out&quot;))
     {
         MessageBox.Show(&quot;Login Successful&quot;);
     }
}
</pre>
<p>And that&#8217;s all you need to do.  You can now use the <strong>response</strong> variable to see the tweets that are in your timeline.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/log-website-programmatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android &#8211; Open Contacts Activity and Return Chosen Contact</title>
		<link>http://eclipsed4utoo.com/blog/android-open-contacts-activity-return-chosen-contact/</link>
		<comments>http://eclipsed4utoo.com/blog/android-open-contacts-activity-return-chosen-contact/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 18:12:26 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=270</guid>
		<description><![CDATA[I was looking for a way to open the Contacts Activity, chose a Contact, then have that Contact returned to my application.  I found a number of code snippets, but they all used depreciated API calls.  So I decided to make this post with the updated API calls for Android 2.0.
First, you will need to [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for a way to open the Contacts Activity, chose a Contact, then have that Contact returned to my application.  I found a number of code snippets, but they all used depreciated API calls.  So I decided to make this post with the updated API calls for Android 2.0.</p>
<p>First, you will need to add this permission to your AndroidManifest.xml file:</p>
<pre class="brush: xml;">
&lt;uses-permission android:name=&quot;android.permission.READ_CONTACTS&quot;/&gt;
</pre>
<p>Next, add this constant as a class level variable:</p>
<pre class="brush: java;">
private static final int PICK_CONTACT = 3;
</pre>
<p>Now, you will add the code to open the Contacts Activity.  This is done by using an Intent:</p>
<pre class="brush: java;">
// I did this from a button click
public void btnAddContacts_Click(View view){
     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
     startActivityForResult(intent, PICK_CONTACT);
}
</pre>
<p>Now, you will override the &#8220;onActivityResult&#8221; activity method, and get the Contact information:</p>
<pre class="brush: java;">
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data){
    super.onActivityResult(reqCode, resultCode, data);

    switch(reqCode){
       case (PICK_CONTACT):
         if (resultCode == Activity.RESULT_OK){
             Uri contactData = data.getData();
             Cursor c = managedQuery(contactData, null, null, null, null);

             if (c.moveToFirst()){
                 // other data is available for the Contact.  I have decided
                 //    to only get the name of the Contact.
                 String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                 Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();
             }
         }
    }
}
</pre>
<p>And that is all you need to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/android-open-contacts-activity-return-chosen-contact/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ASP.Net &#8211; AJAX and an External Javascript File</title>
		<link>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/</link>
		<comments>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 22:00:44 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[external]]></category>
		<category><![CDATA[javacript]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=264</guid>
		<description><![CDATA[Recently, I needed to add a color picker to a web application.  I thought I would try the new AJAX toolkit, but the toolkit was full of issues so I had to resort to doing it with javascript.  I downloaded a color picker that somebody had done(and donated for their development).
When I went to add [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I needed to add a color picker to a web application.  I thought I would try the new AJAX toolkit, but the toolkit was full of issues so I had to resort to doing it with javascript.  I downloaded a color picker that somebody had done(and donated for their development).</p>
<p>When I went to add the external javascript file and the other associated files, my AJAX page would no longer show up.  Anything inside of an UpdatePanel would not show up.  I did some searching and found that using an external javascript file can cause AJAX to fail.</p>
<p>I originally had this code which was giving me issues.</p>
<pre class="brush: xml;">
&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;
    &lt;asp:ScriptManagerProxy ID=&quot;ScriptManagerProxy1&quot; runat=&quot;server&quot; /&gt;
    &lt;script src=&quot;../Javascript/jscolor/jscolor.js&quot; type=&quot;text/javascript&quot; /&gt;

    &lt;asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;&gt;
       &lt;%--   some controls  --%&gt;
    &lt;/asp:UpdatePanel&gt;
&lt;/asp:Content&gt;
</pre>
</pre>
<p>I used the <strong>ScriptReference </strong>in the <strong>ScriptManagerProxy</strong> to add a reference to the javascript file:</p>
<pre>
<pre class="brush: xml;">
&lt;asp:Content ID=&quot;Content1&quot; ContentPlaceHolderID=&quot;MainContent&quot; runat=&quot;server&quot;&gt;
    &lt;asp:ScriptManagerProxy ID=&quot;ScriptManagerProxy1&quot; runat=&quot;server&quot;&gt;
       &lt;Scripts&gt;
          &lt;asp:ScriptReference Path=&quot;~/Javascript/jscolor/jscolor.js&quot; /&gt;
       &lt;/Scripts&gt;
    &lt;/asp:ScriptManagerProxy&gt;

    &lt;asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;&gt;
       &lt;%--   some controls  --%&gt;
    &lt;/asp:UpdatePanel&gt;
&lt;/asp:Content&gt;
</pre>
</pre>
</pre>
<p>And that worked.  The controls inside the <strong>UpdatePanel</strong> now show up.</p>
<pre>
<pre></pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/aspnet-ajax-external-javascript-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# &#8211; Twitter API For Desktop</title>
		<link>http://eclipsed4utoo.com/blog/twitter-api-desktop/</link>
		<comments>http://eclipsed4utoo.com/blog/twitter-api-desktop/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 14:16:58 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=259</guid>
		<description><![CDATA[I made a post almost 3 months ago about a .Net Twitter API that I had done.  Since then, I have made some modifications to the API.  I have added a couple of more features.  I also included various classes from the System.Web namespace so that I wouldn&#8217;t need a reference to that namespace.  This [...]]]></description>
			<content:encoded><![CDATA[<p>I made a post almost 3 months ago about a .Net Twitter API that I had done.  Since then, I have made some modifications to the API.  I have added a couple of more features.  I also included various classes from the System.Web namespace so that I wouldn&#8217;t need a reference to that namespace.  This allows the API to be used on a mobile device with a very small footprint(the System.Web.dll file is 5MB in size, my .dll is 52KB).</p>
<p>I am missing a few features from my API.  Most notably the new &#8220;Retweet&#8221; functionality and the &#8220;Lists&#8221; functionality.  I am also missing some of the account methods.  Other than that, I believe I have most, if not all, of the other methods.</p>
<p>This API supports both Basic Auth and OAuth.  I would advise to use OAuth, since Twitter will be depreciating Basic Auth in <a href="http://www.techcrunch.com/2009/12/09/twitter-le-web-2009/">June 2010</a>.  To learn more about how OAuth works, check out my <a href="http://eclipsed4utoo.com/blog/net-twitter-desktop-oauth-authentication/">other blog post</a> where I try to explain OAuth.</p>
<p>Remember that this API is for the Desktop OAuth only.  Feel free to download it and make changes to allow OAuth from a web application(yes, they are different &#8220;workflows&#8221;).   Basic Auth should work for both Desktop and Web applications.</p>
<p>I give credit to <a href="http://www.voiceoftech.com/swhitley/?p=681">Shannon Whitley for his original OAuth code</a>.  I made some modifications to it, but the base code of the OAuth is his.</p>
<p>Here is a code snippet on using the API for OAuth authorization.</p>
<pre class="brush: csharp;">
// creats instance and sets Consumer and ConsumerSecret values
TwitEclipseAPI twit = new TwitEclipseAPI();
twit.OAuthConsumerKey = &quot;yourConsumerKey&quot;;
twit.OAuthConsumerSecret = &quot;yourConsumerSecret&quot;;

// makes request to get unauthorized request token
// The method will concatenate the request token to Twitter's Desktop OAuth
//    url (http://twitter.com/oauth/authorize)
string url = twit.OAuthGetUnauthorizedRequestToken();

// opens the user's default browser and browses to Twitter's OAuth page
Process.Start(url);

//  You will need to get the PIN from the user
//  I just created a popup and have the user enter the PIN
//       into a textbox in the popup
frmPinPopup popup = new frmPinPopup();
popup.ShowDialog();

string PIN = popup.PIN;
popup.Dispose();

// Gets the Token and TokenSecret that will be needed for all
//   subsequent requests.  You will need to save these values to keep
//   from forcing the user to authorize your application everytime they
//   open your application.
twit.OAuthRequestAccessToken(PIN);

// You can check for success by checking the OAuthAccessToken
//    and OAuthAccessTokenSecret values.  If they are populated, then
//    it was successful.  If they are empty, then it failed.
if (!string.IsNullOrEmpty(twit.OAuthAccessToken) &amp;&amp; !string.IsNullOrEmpty(twit.OAuthAccessTokenSecret))
{
    MessageBox.Show(&quot;Authorization Successful&quot;);
}
</pre>
<p>Each method of the API will check the OAuthAccessToken and OAuthAccessTokenSecret values to determine whether it needs to do the request using OAuth or Basic Auth.</p>
<p>I have put the code on <a href="http://twiteclipseapi.codeplex.com/" target="_blank">CodePlex</a>.  It will contain both the .dll file, and the source code.  I felt it was easier to keep up with using CodePlex.</p>
<p>If you have code questions, you can post here.  However, if you are on Google Wave, <a href="https://wave.google.com/wave/#restored:search:twiteclipseapi,restored:wave:googlewave.com!w%252BtKPwoLd7A.5">you can go here</a>.  If you would like Google Wave, I have about 20 invitations that I can send out.  Using Google Wave would be much better since we could exchange code using a code snippet tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/twitter-api-desktop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android 2.0 &#8211; Changing Widget Layout Dynamically</title>
		<link>http://eclipsed4utoo.com/blog/android-20-changing-widget-layout-dynamically/</link>
		<comments>http://eclipsed4utoo.com/blog/android-20-changing-widget-layout-dynamically/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 18:47:55 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[MotoTorch LED]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=232</guid>
		<description><![CDATA[I recently wrote my first application for Android, and it was a great learning experience.  One of the more &#8220;advanced&#8221; tasks that I wanted to do was to make the widget icon change depending on whether the LEDs were on or not.  I also wanted to allow the user to be able to choose which [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wrote my<a href="http://eclipsed4utoo.com/blog/mototorch-led-flashlight-android-application/" target="_blank"> first application for Android</a>, and it was a great learning experience.  One of the more &#8220;advanced&#8221; tasks that I wanted to do was to make the widget icon change depending on whether the LEDs were on or not.  I also wanted to allow the user to be able to choose which icons they wanted the widget to use.</p>
<p>So I started out using one layout XML file with multiple ImageViews, and was just showing/hiding and changing the source to the image that I wanted to show.  I started thinking that this seemed to be very convoluted and that there must be an easier way.</p>
<p>I decided to figure out how to create multiple layout XML files and load those dynamically.  This would allow me to have each icon in it&#8217;s own separate XML file so any changes that needed to be made to them would only affect that icon and not the other icons.</p>
<p>First, I created the separate layout XML files.  I am just going to show two that I did.</p>
<p><strong>widget_flame_with_border_off.xml</strong></p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout android:id=&quot;@+id/main&quot;
   android:gravity=&quot;center&quot;
   android:background=&quot;@drawable/widget_frame_portrait1x1_black&quot;
   xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
   android:layout_height=&quot;74dip&quot;
   android:layout_width=&quot;74dip&quot;&gt;

   &lt;LinearLayout
      android:id=&quot;@+id/btn_led&quot;
      android:layout_width=&quot;52dip&quot;
      android:layout_height=&quot;52dip&quot;
      android:background=&quot;@drawable/appwidget_button_center&quot;
      android:clickable=&quot;true&quot;
      android:focusable=&quot;true&quot;
      android:gravity=&quot;center&quot;&gt;

      &lt;ImageView
          android:id=&quot;@+id/img_led&quot;
          android:layout_height=&quot;40dip&quot;
          android:layout_gravity=&quot;center&quot;
          android:layout_width=&quot;40dip&quot;
          android:src=&quot;@drawable/mototorch_led_off&quot;
          android:scaleType=&quot;fitXY&quot; /&gt;

   &lt;/LinearLayout&gt;
&lt;/LinearLayout&gt;
</pre>
<p><strong>widget_flame_with_border_on.xml</strong></p>
<pre class="brush: xml;">
&lt;pre&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;LinearLayout android:id=&quot;@+id/main&quot;
   android:gravity=&quot;center&quot;
   android:background=&quot;@drawable/widget_frame_portrait1x1_black&quot;
   xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
   android:layout_height=&quot;74dip&quot;
   android:layout_width=&quot;74dip&quot;&gt;

   &lt;LinearLayout
      android:id=&quot;@+id/btn_led&quot;
      android:layout_width=&quot;52dip&quot;
      android:layout_height=&quot;52dip&quot;
      android:background=&quot;@drawable/appwidget_button_center&quot;
      android:clickable=&quot;true&quot;
      android:focusable=&quot;true&quot;
      android:gravity=&quot;center&quot;&gt;

      &lt;ImageView
          android:id=&quot;@+id/img_led&quot;
          android:layout_height=&quot;40dip&quot;
          android:layout_gravity=&quot;center&quot;
          android:layout_width=&quot;40dip&quot;
          android:src=&quot;@drawable/mototorch_led_on&quot;
          android:scaleType=&quot;fitXY&quot; /&gt;

   &lt;/LinearLayout&gt;
&lt;/LinearLayout&gt;
</pre>
<p>With those two layout XML files created, I can now load them dynamically.</p>
<pre class="brush: java;">
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
     RemoteViews views = null;

     int layoutID = 0;

     if (ledIsOn){
         layoutID = R.layout.widget_flame_with_border_on;
     }
     else {
         layoutID = R.layout.widget_flame_with_border_off;
     }

     // the layoutID that is passed in the constructor of the
     //   RemoteViews object is the layout that will be loaded
     //   when the widget is updated.
     views = new RemoteViews(context.getPackageName(), layoutID);

     for (int i = 0; i &lt; appWidgetIds.length; i++) {
          appWidgetManager.updateAppWidget(appWidgetIds[i], views);
     }
}
</pre>
<p><span style="font-family: Verdana,sans-serif; font-size: 14px; line-height: 23px;">In the constructor for the RemoteViews object, you pass in the layout ID of the layout that you want to use. So simply changing this to a different layout than is currently being used, you can change the layout completely.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/android-20-changing-widget-layout-dynamically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MotoTorch LED &#8211; LED Flashlight &#8211; My First Android Application</title>
		<link>http://eclipsed4utoo.com/blog/mototorch-led-flashlight-android-application/</link>
		<comments>http://eclipsed4utoo.com/blog/mototorch-led-flashlight-android-application/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 14:47:43 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Droid]]></category>
		<category><![CDATA[LED Flashlight]]></category>
		<category><![CDATA[Milestone]]></category>
		<category><![CDATA[Motorola Droid]]></category>
		<category><![CDATA[MotoTorch LED]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=215</guid>
		<description><![CDATA[I have released my first Android application called MotoTorch LED.  It is designed for the Motorola Droid and Motorola Milestone and uses it&#8217;s camera LEDs as a flashlight.  It&#8217;s also has a widget that can be placed on one of the HOME screens.  A simple click on the widget will turn the LEDs on, and [...]]]></description>
			<content:encoded><![CDATA[<p>I have released my first Android application called MotoTorch LED.  It is designed for the Motorola Droid and Motorola Milestone and uses it&#8217;s camera LEDs as a flashlight.  It&#8217;s also has a widget that can be placed on one of the HOME screens.  A simple click on the widget will turn the LEDs on, and clicking it again will turn them off.  The widget can also turn off the screen when the LEDs are on.</p>
<p>This application is free.</p>
<p>IF YOU HAVE AN ISSUE, GO TO THE BOTTOM OF THIS POST.  IF YOUR PROBLEM ISN&#8217;T COVERED, EITHER POST IN THE COMMENTS HERE, OR SEND ME AN EMAIL.  If you don&#8217;t email me, I can&#8217;t fix the issue. You can send an email directly from your phone.  At the bottom of the application listing on the Android Market, there is a button for &#8220;Send email to developer&#8221;.  Click that, choose your email, then send me an email.</p>
<p>Features:</p>
<p>1. Uses both a widget and a normal application to turn on the LEDs as a flashlight.</p>
<p>2. The widget icon will change depending on whether the LEDs are on or not.</p>
<p>3. The application will allow you to configure whether you want the screen to dim or not.</p>
<p>4. The application will allow you to use the LEDs as a strobe light.</p>
<p>5. The application will allow you to use the LEDs as a MORSE CODE sender, implementing the international Morse protocol.</p>
<p><strong>Version 2.2(11/26):</strong></p>
<p>1. Strobe and Morse Code now run on their own threads. This means that there are now Start/Stop buttons.</p>
<p>2. Strobe now has 2 sliders that allow the duration and delay to be configurable. These can be moved while the strobe is on to see the values changed on the fly.</p>
<p>3. Changed the checkbox for the &#8220;Torch&#8221; section to be more descriptive.</p>
<p>I made tons of changes to how the settings are saved. I hope this will have fixed the issue with it losing the screen timeout. If it continues to happen, let me know.</p>
<p><strong>Version 2.3(11/27):</strong></p>
<p>1. Now supports landscape mode.</p>
<p>2. Added numeric labels to the strobe sliders.</p>
<p><strong>Version 2.4(11/27):</strong></p>
<p>1.  Fixed issue with moving to/from landscape while Strobe or Morse Code was on.</p>
<p><strong>Version 2.5(12/02):</strong></p>
<p>1.  Changed the Widget icon.</p>
<p>2.  Added the ability to dim the screen while the LEDs are on.  This includes having a slider to specify the brightness of the screen.</p>
<p>3.  Fixed &#8220;B&#8221; &#8220;D&#8221; Morse Code bug.</p>
<p>4.  The &#8220;Dim Screen&#8221; and &#8220;Turn Off Screen&#8221; are now disabled if Automatic Brightness is turned on.  Automatic Brightness overrides both of these settings.  Currently there is no way for me to disable Automatic Brightness programmatically.  It seems to have been left out of the SDK.</p>
<p><strong>Version 2.6(12/04):</strong></p>
<p>1.  The widget icon is now configurable.  Use the MENU button in the application to select the icon for the widget.</p>
<p>2.  Fixed issue where using the widget of certain other apps could cause the LEDs to come on.</p>
<p>3.  Added a Disclaimer when opening the app.  It should only be shown once.  If you accept, it will not show again.</p>
<p>4.  Added a message when Automatic Brightness is enabled.</p>
<p>5.  The &#8220;Dim Screen&#8221; slider is disabled when the &#8220;Dim Screen&#8221; checkbox is unchecked.</p>
<p><strong>Version 2.7(12/11):</strong></p>
<p>1.  Added HELP menu that will open to my website.</p>
<p>2.  Changed the &#8220;Automatic Brightness&#8221; popup display only the first time.</p>
<p>3.  Added option to turn on LEDs when the application opens.  (Application Settings menu)</p>
<p>4.  Moved &#8220;Torch&#8221; settings to menu.  (Torch Settings menu)</p>
<p><strong>Version 2.8(12/14):</strong></p>
<p>1.  Fixed issue where widget icon would get reset back to the default icon when exiting the application.</p>
<p>2.  Added option to turn &#8220;Torch&#8221; off when exiting the application</p>
<p><strong>NOTE: </strong> The Dim Screen only works from the application.  It currently does not work from the widget.  This is due to a bug in Android 2.0.</p>
<p><strong>NOTE:</strong> If your screen brightens when you turn on the LEDs, then you have Automatic Brightness enabled, and it&#8217;s doing it&#8217;s job.  It was designed to use light sensors to determine whether to dim or brighten the screen.  The more light the sensors detect, the brighter the screen gets.  I&#8217;ll let you take a guess where 1 of the 2 sensors are&#8230;&#8230;directly beside the LEDs.  So when you turn on the LEDs, the light causes the sensors to think it needs to brighten the screen.</p>
<p><strong>NOTE:</strong> To change the widget icon, open the application, then hit the MENU button on the phone. This will bring up the menu in the application. Choose &#8220;Select Widget Icon&#8221;, then choose the icon you want to use.</p>
<p><strong>NOTE: </strong>To install the widget, Long Press on an open space on a HOME screen, choose &#8220;Widgets&#8221;, then choose &#8220;MotoTorch LED&#8221;.</p>
<p><strong>NOTE:</strong> For those that say that this application &#8220;starts in the background&#8221;, it does not.  The application is not running.  It&#8217;s the widget that is running in the background.  This is what Android allows.  The widget is running because it needs to constantly check to see if you have turned the LEDs on from the application so it can change it&#8217;s icon.  This is allowed by Android, and is actually the default functionality of a widget.</p>
<p>I have created a Google Wave for MotoTorch LED.  If you have Google Wave, you should be able to search for it and find it.</p>
<p>If you have &#8220;Barcode Scanner&#8221; or &#8220;ShopSavvy&#8221; installed on your Droid/Milestone, you can scan this QR-Code and it will take to you my app.  You can scan it directly from your monitor.</p>
<p><img class="alignnone" title="MotoTorch LED" src="http://qrcode.kaywa.com/img.php?s=5&amp;d=market%3A%2F%2Fsearch%3Fq%3DMotoTorch" alt="" width="155" height="155" /></p>
<p>I have also added a Donation version of the app to the Market. If you would like to donate toward MotoTorch&#8217;s development, you can buy that version. BOTH VERSIONS ARE EXACTLY THE SAME. The free version is NOT limited in any way.</p>
<p>You can also donate using Paypal.</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input name="hosted_button_id" type="hidden" value="9935098" />
<input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypal.com/en_US/i/scr/pixel.gif" border="0" alt="" width="1" height="1" /><br />
</form>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/mototorch-led-flashlight-android-application/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>ASP.Net &#8211; Closing page with Javascript without notification</title>
		<link>http://eclipsed4utoo.com/blog/aspnet-closing-page-javascript-notification/</link>
		<comments>http://eclipsed4utoo.com/blog/aspnet-closing-page-javascript-notification/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 01:52:54 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=201</guid>
		<description><![CDATA[This is a short post on closing an IE window from a button click.
This is normally a simple task.  You could use code like this:

// This code does not work in Firefox 3.5 or Chrome 3.0
protected void btnClose_Click(object sender, EventArgs e)
{
     Response.Write(&#34;&#60;script language='javascript'&#62;window.close();&#60;/script&#62;&#34;);
}

And that would work&#8230;for the most part.  Only in [...]]]></description>
			<content:encoded><![CDATA[<p>This is a short post on closing an IE window from a button click.</p>
<p>This is normally a simple task.  You could use code like this:</p>
<pre class="brush: csharp;">
// This code does not work in Firefox 3.5 or Chrome 3.0
protected void btnClose_Click(object sender, EventArgs e)
{
     Response.Write(&quot;&lt;script language='javascript'&gt;window.close();&lt;/script&gt;&quot;);
}
</pre>
<p>And that would work&#8230;for the most part.  Only in IE, you would be given this message..</p>
<p><img class="alignnone size-full wp-image-203" title="Image" src="http://eclipsed4utoo.com/blog/wp-content/uploads/2009/11/11-2-2009-2-25-49-PM.png" alt="Image" width="360" height="130" /></p>
<p>Now, if you wanted to get around that message, you could need to do this:</p>
<pre class="brush: csharp;">
// This code works in IE 7, Firefox 3.5, and Chrome 3.0
protected void btnClose_Click(object sender, EventArgs e)
{
     Response.Write(&quot;&lt;script language='javascript'&gt;window.open('','_self',''); window.close();&lt;/script&gt;&quot;);
}
</pre>
<p>This will no longer show the message and just close the window.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/aspnet-closing-page-javascript-notification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uncharted 2 Causing PS3 to Freeze</title>
		<link>http://eclipsed4utoo.com/blog/uncharted-2-causing-ps3-freeze/</link>
		<comments>http://eclipsed4utoo.com/blog/uncharted-2-causing-ps3-freeze/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 16:43:05 +0000</pubDate>
		<dc:creator>Ryan Alford</dc:creator>
				<category><![CDATA[Random Stuff]]></category>
		<category><![CDATA[freezing]]></category>
		<category><![CDATA[ps3]]></category>
		<category><![CDATA[system update]]></category>
		<category><![CDATA[uncharted 2]]></category>

		<guid isPermaLink="false">http://eclipsed4utoo.com/blog/?p=198</guid>
		<description><![CDATA[I recently bought Uncharted 2.  While the game is amazing, during the first 2 hours or so of gameplay, my PS3 froze 5 times.  I was thoroughly pissed off about it since I had just bought the game.
After the 5th freeze, I decided to check the system updates for the PS3.  I was running version [...]]]></description>
			<content:encoded><![CDATA[<p>I recently bought Uncharted 2.  While the game is amazing, during the first 2 hours or so of gameplay, my PS3 froze 5 times.  I was thoroughly pissed off about it since I had just bought the game.</p>
<p>After the 5th freeze, I decided to check the system updates for the PS3.  I was running version 3.0.  Sony released 3.01 on September 15th, but it was only an optional update which means you aren&#8217;t required to install it to still be able to access the PSN.</p>
<p>After updating to 3.01, I have played about 6 more hours and have not had another problem.  The change log for 3.01 is &#8220;System stability during use of some PlayStation®3 format software has been improved.&#8221;.  I can only assume that Uncharted 2 is one of those titles that was improved.</p>
<p>So for anybody who may be having problems with freezing while playing Uncharted 2, downloading the 3.01 update may help.</p>
]]></content:encoded>
			<wfw:commentRss>http://eclipsed4utoo.com/blog/uncharted-2-causing-ps3-freeze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
