<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>ProtoAspx</title>
	
	<link>http://www.gljakal.com/protoaspx</link>
	<description>Integrating Prototype and ASP.Net to create the next generation of web applications</description>
	<pubDate>Thu, 26 Feb 2009 17:49:41 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Protoaspx" type="application/rss+xml" /><item>
		<title>SQL Server trick: finding text in multiple stored procedures</title>
		<link>http://www.gljakal.com/protoaspx/2009/02/sql-server-trick-finding-text-in-multiple-stored-procedures/</link>
		<comments>http://www.gljakal.com/protoaspx/2009/02/sql-server-trick-finding-text-in-multiple-stored-procedures/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 17:46:56 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[general]]></category>

		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.gljakal.com/protoaspx/2009/02/sql-server-trick-finding-text-in-multiple-stored-procedures/</guid>
		<description><![CDATA[Sometimes I need to know which stored procedures or views are using a particular table or field.
Most people I&#8217;ve seen, when presented with this problem do this the long, boring and potentially error-prone way: opening up each and every stored procedure or view in SSMS and using the good old &#34;Find and replace&#34; tool to [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I need to know which stored procedures or views are using a particular table or field.</p>
<p>Most people I&#8217;ve seen, when presented with this problem do this the long, boring and potentially error-prone way: opening up each and every stored procedure or view in SSMS and using the good old &quot;Find and replace&quot; tool to find out whether it is using the table or field we&#8217;re looking for.</p>
<p>There is, however, a much, much better way to do this, with a simple SQL query. Suppose we want to find out which stored procedure or view uses the table <code>foobar</code>:</p>
<pre class="csharpcode"><span class="kwrd">SELECT DISTINCT</span> OBJECT_NAME(ID) <span class="kwrd">FROM</span> <span style="color: #080">SYS.SYSCOMMENTS</span> <span class="kwrd">WHERE</span> [TEXT] <span class="kwrd">LIKE</span> <span class="str">'%foobar%'</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2009/02/sql-server-trick-finding-text-in-multiple-stored-procedures/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Random findings</title>
		<link>http://www.gljakal.com/protoaspx/2008/11/random-findings/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/11/random-findings/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 11:10:49 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[findings]]></category>

		<guid isPermaLink="false">http://www.gljakal.com/protoaspx/2008/11/random-findings/</guid>
		<description><![CDATA[
SQL Server: you can use the command: DBCC SHOWCONTIG (@TABLENAME) to display paging&#160; statistics about a table (MSDN article) 
C#: Use ConfigurationManager.GetSection() to read any section of your web.config or app.config (from my StackOverflow question) 
You can use only one SQL query per OleDbCommand! The OleDb provider does not support chaining SQL Queries with &#34;;&#34; [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>SQL Server: </strong>you can use the command: <code>DBCC SHOWCONTIG (@TABLENAME)</code> to display paging&#160; statistics about a table (<a href="http://msdn.microsoft.com/en-us/library/ms175008.aspx">MSDN article</a>) </li>
<li><strong>C#: </strong>Use <code>ConfigurationManager.GetSection()</code> to read any section of your <code>web.config</code> or <code>app.config </code>(from my <a href="http://stackoverflow.com/questions/258481/how-can-i-check-whether-i-am-in-a-debug-or-release-build-in-a-web-app">StackOverflow question</a>) </li>
<li>You can use only one SQL query per <code><strong>OleDbCommand</strong></code>! The OleDb provider does not support chaining SQL Queries with &quot;;&quot; </li>
<li><strong>ASP.Net&#8217;s</strong> ListBox control does not support the <code>&lt;optgroup&gt;</code> tag! </li>
<li>In <strong>SQL Server CE</strong>, you cannot <code>SELECT TOP n</code>. The syntax is <code>SELECT TOP(n)</code>, but can only be used starting from version 3.5 (<a href="http://stackoverflow.com/questions/138419/sql-compact-select-top-1">StackOverflow</a>) . </li>
<li><strong>64bit madness: </strong>If you&#8217;re referencing a COM assembly in your .Net application, you should compile it for 32 bit machines, or it will fail silently (but putting a vague error message in the event log) when run on a 64bit edition of Windows.       <br />The same applies if you&#8217;re referencing a <code>ComVisible</code> .Net assembly in your VB6 application (don&#8217;t ask :)).&#160; <br />If you&#8217;re on ASP.net, <a href="http://blogs.msdn.com/helloworld/archive/2007/07/14/using-x86-com-interop-with-asp-net-application-in-windows-x64.aspx">it gets even nastier</a>. </li>
<li>You can change a .net application to always run in 32 bit without recompiling it, using the <code>CorFlags</code> utility from the .net SDK (via <a href="http://blogs.intesoft.net/post/2007/12/Running-NET-Apps-in-32-bit-mode-on-64-bit-Windows.aspx">Simon Green&#8217;s blog</a>). </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/11/random-findings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome</title>
		<link>http://www.gljakal.com/protoaspx/2008/09/google-chrome/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/09/google-chrome/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 17:55:16 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[browsers]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/09/google-chrome/</guid>
		<description><![CDATA[
Taking the web by surprise (didn&#8217;t they have a partnership with Mozilla?), Google has made another step towards a better web (or towards world domination, some may argue  ) by releasing its browser, Google Chrome, yesterday.
Based on the WebKit rendering engine (the one powering Konqueror and Safari), but otherwise designed from the ground-up, Chrome [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="google chrome logo" align="right" src="http://gljakal.com/protoaspx/wp-content/uploads/2008/09/chrome-128.png" width="128" height="128" /></p>
<p>Taking the web by surprise (didn&#8217;t they have a partnership with Mozilla?), Google has made another step towards a better web (or towards world domination, some may argue <img src='http://www.gljakal.com/protoaspx/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) by releasing its browser, <a href="http://www.google.com/chrome">Google Chrome</a>, yesterday.</p>
<p>Based on the WebKit rendering engine (the one powering Konqueror and Safari), but otherwise designed from the ground-up, Chrome promises web developers something they have being begging for since the (re)discovery of AJAX: <strong>blazing fast javascript performance </strong>and a <strong>multi-threaded</strong> browsing experience.</p>
<p>The performance gains come from the V8 javascript engine, that compiles javascript code down to <strong>bytecode, </strong>instead of just interpreting it.</p>
<p>Also, in Chrome, every tab is hosted in a separate (and sandboxed) process, which means that the javascript execution in one tab won&#8217;t impact negatively on the execution of other tabs.</p>
<p>You can read more on the online cartoon/book:</p>
<p><a title="Go to the google chrome online book" href="http://www.google.com/googlebooks/chrome/"><img alt="js_perf" src="http://gljakal.com/protoaspx/wp-content/uploads/2008/09/js-perf.png" width="500" height="225" /></a></p>
<h3>In the end, what does Chrome mean for us web developers?</h3>
<p>In my opinion, it means that soon we will have better browsers. </p>
<p>The release of Chrome comes after two very important announcements: <a href="http://weblogs.mozillazine.org/roadmap/archives/2008/08/tracemonkey_javascript_lightsp.html">TraceMonkey</a>, the new javascript engine that will power Firefox 3.1 and <a href="http://webkit.org/blog/189/announcing-squirrelfish/">SquirrelFish</a>, the new javascript engine that will power Safari 4.0, both of which promise tremendous peformance gains over SpiderMonkey (the engine powering Firefox 3.0, which should also be the fastest one at the moment).</p>
<p>The only browser left behind is, sadly, Internet Explorer, <a href="http://ejohn.org/blog/javascript-performance-rundown/">as shown by the benchmarks</a>. Sure, IE8 is much faster than IE7, but it&#8217;s still way slower than any of its competitors.</p>
<p>The browser war has just got a bit more intense and Microsoft will have to do much better if they want to remain competitive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/09/google-chrome/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating classes with Prototype</title>
		<link>http://www.gljakal.com/protoaspx/2008/08/creating-classes-with-prototype/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/08/creating-classes-with-prototype/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 09:01:43 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/08/creating-classes-with-prototype/</guid>
		<description><![CDATA[If you use Script.aculo.us or some other library written on top of Prototype, you probably have already encountered the Class object. Every time you call a new Effect.Appear() or a new Draggable() you are, in fact, instantiating a Prototype class.
Just like software developers abandoned procedural languages like C or Pascal for object oriented ones like [...]]]></description>
			<content:encoded><![CDATA[<p>If you use Script.aculo.us or some other library written on top of Prototype, you probably have already encountered the Class object. Every time you call a <code>new Effect.Appear()</code> or a <code>new Draggable()</code> you are, in fact, instantiating a Prototype class.</p>
<p>Just like software developers abandoned procedural languages like C or Pascal for object oriented ones like C++ all the way up to C# and Java, the same concept applies to the web: with (web)applications growing in complexity, it&#8217;s better to keep a modular approach and have a finite number of classes instead of a million of functions.</p>
<h3>A *very* basic example</h3>
<p>For this example, we are going to create a new class that observes an element and adds the &#8216;hover&#8217; class name to it when the mouse is over it. If you are impatient, you can see the end result <a href="http://gljakal.com/protoaspx/hover.html">on this demo page</a>.</p>
<p>Let&#8217;s start by declaring the new class. The class must be declared with the var keyword. The function <code>Class.create</code> takes a javascript object and transforms it into a Prototype class.</p>
<pre class="csharpcode"><span class="kwrd">var</span> HoverObserver = Class.create({
    initialize: <span class="kwrd">function</span>(element)
    {
    }
});</pre>
<p>The <code>initialize</code> function is very important, as it will be the constructor for our class.</p>
<p>Let&#8217;s add some more code:</p>
<pre class="csharpcode"><span class="kwrd">var</span> HoverObserver = Class.create({
    initialize: <span class="kwrd">function</span>(element)
    {
        <span class="kwrd">this</span>.element = element;
        element.observe(<span class="str">'mouseover'</span>, <span class="kwrd">this</span>.addClass.bindAsEventListener(<span class="kwrd">this</span>));
        element.observe(<span class="str">'mouseout'</span>, <span class="kwrd">this</span>.removeClass.bindAsEventListener(<span class="kwrd">this</span>));
    },
    addClass : <span class="kwrd">function</span>(<span class="kwrd">event</span>)
    {
        <span class="kwrd">this</span>.element.addClassName(<span class="str">'hover'</span>);
    },
    removeClass : <span class="kwrd">function</span>(<span class="kwrd">event</span>)
    {
        <span class="kwrd">this</span>.element.removeClassName(<span class="str">'hover'</span>);
    }
});</pre>
<p>Now that our class is actually doing something, we can start using it:</p>
<pre class="csharpcode">document.observe(<span class="str">'dom:loaded'</span>, <span class="kwrd">function</span>(){
    <span class="kwrd">new</span> HoverObserver($(<span class="str">'someDiv'</span>));
});</pre>
<p>You can see that the element we are passing to the constructor is actually passed by Prototype to the initialize function. </p>
<h3>Adding options</h3>
<p>Another nice thing we can do is to add an options parameter to the initialize function, so that we can pass one or more additional parameters to the constructor. For example, we can add an option to specify the class name to use instead of the default &#8216;hover&#8217;:</p>
<pre class="csharpcode"><span class="kwrd">var</span> HoverObserver = Class.create({
    initialize: <span class="kwrd">function</span>(element, options)
    {
        <span class="kwrd">this</span>.options = Object.extend({
            hoverClass : <span class="str">'hover'</span>
        }, options ||{});

        <span class="kwrd">this</span>.element = element;
        element.observe(<span class="str">'mouseover'</span>, <span class="kwrd">this</span>.addClass.bindAsEventListener(<span class="kwrd">this</span>));
        element.observe(<span class="str">'mouseout'</span>, <span class="kwrd">this</span>.removeClass.bindAsEventListener(<span class="kwrd">this</span>));
    },
    addClass : <span class="kwrd">function</span>(<span class="kwrd">event</span>)
    {
        <span class="kwrd">this</span>.element.addClassName(<span class="kwrd">this</span>.options.hoverClass);
    },
    removeClass : <span class="kwrd">function</span>(<span class="kwrd">event</span>)
    {
        <span class="kwrd">this</span>.element.removeClassName(<span class="kwrd">this</span>.options.hoverClass);
    }
});</pre>
<p>This is how we can use the options parameter:</p>
<pre class="csharpcode">document.observe(<span class="str">'dom:loaded'</span>, <span class="kwrd">function</span>(){
    <span class="kwrd">new</span> HoverObserver($(<span class="str">'someDiv'</span>), {hoverClass: <span class="str">'highlighted'</span>});
});</pre>
<p>The nice thing about this approach is not that we can specify every single parameter in the options argument, but that we don&#8217;t have to, since every parameter we don&#8217;t specify will use its default value. </p>
<h3>Common (and not-so-common) mistakes explained</h3>
<p><strong>Problem:</strong> I can&#8217;t use my object&#8217;s properties or methods, it says they are undefined!</p>
<p><strong>Solution:</strong> You forget to add a <code>.bind(this)</code> or <code>.bindAsEventListener(this)</code> to a function called by an event handler or an iterator.</p>
<pre class="csharpcode"><span class="rem">// wrong</span>
element.observe(<span class="str">'click'</span>, <span class="kwrd">this</span>.doClickAction);
elements.each(<span class="kwrd">this</span>.doSomething);
<span class="rem">// right</span>
element.observe(<span class="str">'click'</span>, <span class="kwrd">this</span>.doClickAction.bindAsEventListener(<span class="kwrd">this</span>));
elements.each(<span class="kwrd">this</span>.doSomething.bind(<span class="kwrd">this</span>));</pre>
<p><strong>Problem:</strong> Everything works fine in Firefox, Opera and Safari, but IE refuses to run my script. It looks like IE doesn&#8217;t even recognize it as JS code!</p>
<p><strong>Solution:</strong> You forgot a comma next to the last function declaration. </p>
<pre class="csharpcode"><span class="kwrd">var</span> MyClass = Class.create({
    initialize: function(){
    },
    method1: function(){
    },
    lastMethod: function(){
    },  <span class="rem">// &lt;-- this is the evil bastard</span>
});</pre>
<p>In this particular case none of the browsers I tested throws an error (they should!): IE simply refuses to parse the javascript file while the others ignore the syntactical error.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/08/creating-classes-with-prototype/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RockScroll</title>
		<link>http://www.gljakal.com/protoaspx/2008/05/rockscroll/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/05/rockscroll/#comments</comments>
		<pubDate>Fri, 16 May 2008 08:15:43 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[VisualStudio]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/05/rockscroll/</guid>
		<description><![CDATA[Scott Hanselman has released RockScroll, a Visual Studio addin created by Microsoft employee Rocky Downs that can be really useful when working with large, ugly code files. In his own words:
The basic (as in &#8220;only&#8221;) idea is that RockScroll extends the scrollbar in Visual Studio to show a syntax highlighted thumbnail view of your source. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hanselman.com/blog/">Scott Hanselman</a> has released <strong>RockScroll</strong>, a Visual Studio addin created by Microsoft employee Rocky Downs that can be really useful when working with large, ugly code files. In his own words:</p>
<blockquote><p>The basic (as in &#8220;only&#8221;) idea is that RockScroll extends the scrollbar in Visual Studio to show a syntax highlighted thumbnail view of your source. This is really useful for those excessively long source code files you know you have. It&#8217;s just one DLL and you can turn it off from Tools|AddIns just by un-checking the checkbox. </p></blockquote>
<p>&nbsp;<a title="Download RockScroll" href="http://www.hanselman.com/blog/IntroducingRockScroll.aspx"><img border="0" alt="RockScroll" src="http://www.hanselman.com/blog/content/binary/WindowsLiveWriter/IntroducingRockScroll_C29C/RockScroll_5.png" width="500" height="379"></a></p>
<p>The only problems I have with RockScroll are that it doesn&#8217;t support JS files and it doesn&#8217;t handle collapsed code too well. Other than that, it provides a set of interesting features: for example, double-clicking any word in your code will highlight the same word everywhere it is found in the same file, both in the small &#8220;preview&#8221; area and in the code area. The addin works nicely with VS 2008.</p>
<p><strong><a href="http://www.hanselman.com/blog/IntroducingRockScroll.aspx">Download RockScroll</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/05/rockscroll/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Serving javascript with asp.net</title>
		<link>http://www.gljakal.com/protoaspx/2008/04/serving-javascript-with-aspnet/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/04/serving-javascript-with-aspnet/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 17:17:13 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[aspnet]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/04/serving-javascript-with-aspnet/</guid>
		<description><![CDATA[If you&#8217;re creating an aspx page that serves javascript, be sure to choose the application/x-javascript content encoding instead of the usual text/javascript.
I found out today that text/javascript will work fine in any browser, except for Internet Explorer. Changing it to application/x-javascript does the trick, however.
In case you&#8217;re wondering, the content type is easily changed by [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re creating an <code>aspx</code> page that serves javascript, be sure to choose the <code>application/x-javascript</code> content encoding instead of the usual <code>text/javascript</code>.</p>
<p>I found out today that <code>text/javascript</code> will work fine in any browser, except for Internet Explorer. Changing it to <code>application/x-javascript</code> does the trick, however.</p>
<p>In case you&#8217;re wondering, the content type is easily changed by adding:</p>
<pre class="csharpcode">Response.ContentType = <span class="str">&quot;application/x-javascript&quot;</span>;</pre>
<p>in the page_load event (or the onLoad method).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/04/serving-javascript-with-aspnet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tools</title>
		<link>http://www.gljakal.com/protoaspx/2008/03/tools/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/03/tools/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 09:57:02 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/03/tools/</guid>
		<description><![CDATA[These are my recommended tools for any web developer approaching ASP.Net and generally any kind of HTML/CSS/Javascript coding. They&#8217;re ideal even if you are on a tight budget, since they all are free or open source.
Firefox 
Some love it, some hate it. But this browser is probably the best tool a web developer could dream. [...]]]></description>
			<content:encoded><![CDATA[<p>These are my recommended tools for any web developer approaching ASP.Net and generally any kind of HTML/CSS/Javascript coding. They&#8217;re ideal even if you are on a tight budget, since they all are free or open source.</p>
<h3><a href="http://www.mozilla.com/firefox/">Firefox</a> </h3>
<p>Some love it, some hate it. But this browser is probably the best tool a web developer could dream. Alone, it features &#8220;just&#8221; a robust web standards support and a fast javascript engine, but the real power comes in the form of two extensions:&nbsp; </p>
<h3><a href="http://www.getfirebug.com/">Firebug for Firefox</a> </h3>
<p>The Swiss army knife for web developers. You could love it just for the javascript debugger, but the goodies don&#8217;t stop here: it also helps you inspect the structure of your page, alter and analyze the CSS, monitor the network activity and explore the DOM.&nbsp;&nbsp; </p>
<h3><a href="https://addons.mozilla.org/en-US/firefox/addon/60">Web developer Toolbar for Firefox</a> </h3>
<p>Another great tool. The feature I like most is the &#8220;Edit CSS&#8221; command, which can also be invoked by pressing CTRL+E.&nbsp; It also gives you quick access to other useful commands like disabling cache / stylesheets / javascript. </p>
<p>A rather complete review is available <a href="http://tips.webdesign10.com/web-developer-toolbar.htm">on this site</a>. </p>
<h3><a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">Internet Explorer Developer Toolbar</a></h3>
<p>Sometimes Internet Explorer is a little &#8220;challenging&#8221; to work with. CSSs or scripts that work well in Firefox, Opera or Safari don&#8217;t behave correctly in IE. While Internet explorer&#8217;s developer toolbar is not as good as its Firefox counterpart, it surely helps fixing IE&#8217;s discordances with the web standards.&nbsp; </p>
<h3><a href="http://www.microsoft.com/express/">Microsoft Visual Web Developer Express 2008 / Visual C# Express 2008</a> </h3>
<p>The latest version of the best .net IDE you could get.&nbsp; The 2008 version adds support for the new version of .Net, 3.5, while still maintaining backwards compatibility to the 2.0 version. VWD also features a javascript debugger for Internet Explorer, which could be especially useful to debug scripts that work in Firefox but not in IE. </p>
<h3><a href="http://www.microsoft.com/express/">Microsoft SQL Server Express 2005 / 2008 CTP</a></h3>
<p>Almost every web application will need to store data in a database. Microsoft SQL Server Express 2005 is the ideal choice: it&#8217;s free (though it&#8217;s limited to a maximum database size of 4Gb and to work on a single processor, among the other things) and it&#8217;s of the same quality of the expensive version. </p>
<p>And, if you&#8217;re feeling adventurous, try out the <a title="Microsoft SQL Server 2008 CTP" href="http://msdn2.microsoft.com/en-us/bb851668.aspx">newest version</a>! </p>
<h3><a href="http://notepad-plus.sourceforge.net/">Notepad++</a></h3>
<p>The ideal editor for quick prototyping and JS coding. With its low memory footprint and its wealth of functions, I always find myself using this program instead of a &#8220;proper&#8221; editor. </p>
<h3>More browsers</h3>
<p>Testing for Firefox and IE is better than developing just for Internet Explorer, but it&#8217;s even better to test also for <a href="http://www.opera.com/">Opera</a> and <a href="http://www.apple.com/safari/ ">Safari</a>. They are free to download, so there is really no excuse not to use them. And if you have windows vista, <a href="http://ajaxian.com/archives/ie6-virtual-pc-refresh-now-available">there is still a way to test with IE6</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/03/tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why Prototype?</title>
		<link>http://www.gljakal.com/protoaspx/2008/03/why-prototype/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/03/why-prototype/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 18:07:29 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/03/why-prototype/</guid>
		<description><![CDATA[Since I chose ASP.Net as my server side environment, the easiest choice for the AJAX stuff would have been Microsoft&#8217;s ASP.Net Ajax extensions. It&#8217;s a quite good, well documented library that many other developers have chosen. Plus, it&#8217;s completely integrated into Visual Studio.
Why then, did I choose otherwise?
While ASP.Net Ajax is a good choice for [...]]]></description>
			<content:encoded><![CDATA[<p>Since I chose ASP.Net as my server side environment, the easiest choice for the AJAX stuff would have been Microsoft&#8217;s ASP.Net Ajax extensions. It&#8217;s a quite good, well documented library that many other developers have chosen. Plus, it&#8217;s completely integrated into Visual Studio.</p>
<p>Why then, did I choose otherwise?</p>
<p>While ASP.Net Ajax is a good choice for many developers, there are some things I don&#8217;t like about it:</p>
<ol>
<ul>
<ul>
<li><strong>I don&#8217;t like the concept.</strong> <em>&#8220;Put everything inside an UpdatePanel to make it asynchronous&#8221;</em> seems to be the motto during Microsoft&#8217;s presentations.
<li><strong>I don&#8217;t like the standard asp.net controls.</strong> Most of the times, they&#8217;ll try to render themselves using a table layout. So &#8217;90s.&nbsp;
<li><strong>I don&#8217;t want to mix content, presentation and behavior. </strong>Using ASP.Net AJAX controls will inevitably result in poor XHTML code. The classic example is an anchor pointing to a javascript function (<code>&lt;a href="javascript:__someFunction()"&gt;</code>)
<li><strong>Black box syndrome:</strong> the javascript code is generated by Visual Studio. This is great when you need to throw out a prototype and &#8220;just make it work&#8221;, but what about optimization? What exactly is being transferred asynchronously? <em>[note: this could be just me being paranoid]</em>
<li><strong>It&#8217;s easy to do simple things, it&#8217;s <em>very </em>hard to do the complex stuff.</strong> The whole ASP.Net Ajax concept seems to be geared more towards the creation of simple websites (especially when time is scarce) than complex RIAs. A complex RIA usually consists of a very small number of significant pages (often just one or two) and each of them is carefully thought and planned, down to the single HTML element. </li>
</ul>
</ul>
</ol>
<h3>Ok then, but why choose Prototype over JQuery, Mootools, [any other javascript library here] ?</h3>
<p>It&#8217;s just my personal preference, really. There are a ton of other javascript frameworks of varying quality. Since I had to choose one, I picked my favorite <img src='http://www.gljakal.com/protoaspx/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Feel free to point out how much my assumptions are wrong in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/03/why-prototype/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome to ProtoAspx</title>
		<link>http://www.gljakal.com/protoaspx/2008/02/welcome-to-protoaspx/</link>
		<comments>http://www.gljakal.com/protoaspx/2008/02/welcome-to-protoaspx/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 17:07:10 +0000</pubDate>
		<dc:creator>Loris</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://gljakal.com/protoaspx/2008/02/welcome-to-protoaspx/</guid>
		<description><![CDATA[For years we have been telling our customers that some things could not be done on the web. The web was simply not responsive enough to be used as a platform for everyday applications.
Then, with the rise of the XMLHttpRequest object, everything changed. It is now possible to create Rich Internet Applications (RIAs) that defy [...]]]></description>
			<content:encoded><![CDATA[<p>For years we have been telling our customers that some things could not be done on the web. The web was simply not responsive enough to be used as a platform for everyday applications.</p>
<p>Then, with the rise of the <a href="http://www.w3.org/TR/XMLHttpRequest/">XMLHttpRequest</a> object, everything changed. It is now possible to create Rich Internet Applications (RIAs) that defy the synchronous post/download routine we were used to.</p>
<p>Today there are a lot of <a href="http://www.prototypejs.org/">excellent</a> <a href="http://www.jquery.com/">javascript</a> <a href="http://developer.yahoo.com/yui/">libraries</a> that can simplify our life as RIA developers.</p>
<p>On the server side of the equation, we can count on a lot of exciting new frameworks in addition to the usual asp, php and jsp: The trend today is towards Ruby on rails for linux/unix servers and ASP.net for windows servers.</p>
<p>This blog (as the name implies <img src='http://www.gljakal.com/protoaspx/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) focuses on the <a href="http://www.prototypejs.org/">Prototype javascript framework</a> for the client side and on <a href="http://www.asp.net">Microsoft’s ASP.net</a> for the server side.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gljakal.com/protoaspx/2008/02/welcome-to-protoaspx/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
