<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>basketweaving for the mind : iis7</title><link>http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx</link><description>Tags: iis7</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>IIS7.x, Server Farms and Ruby</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/24/iis7-5-server-farms-and-ruby.aspx</link><pubDate>Tue, 24 Feb 2009 12:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9442377</guid><dc:creator>nhodge</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9442377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9442377</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9442377</wfw:comment><description>&lt;P&gt;(Caution: Ruby application names are as prolific, esoteric and funny as Microsoft code names) &lt;/P&gt;
&lt;P&gt;The previous post (broadly) demonstrated how to use a combination of URL Rewrite and FastCGI to put a &lt;A href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx" mce_href="http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx"&gt;Ruby on Rails application on IIS7.5&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As &lt;A href="http://rubyonrails.org/" mce_href="http://rubyonrails.org/"&gt;Rails&lt;/A&gt;, &lt;A href="http://www.merbivore.com/" mce_href="http://www.merbivore.com/"&gt;Merb&lt;/A&gt; (&lt;EM&gt;which I am reliably informed is what all the cool kids use today&lt;/EM&gt;) and &lt;A href="http://www.sinatrarb.com/" mce_href="http://www.sinatrarb.com/"&gt;Sinatra&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Another more common method of deploying Rails applications is behind a small web server such &lt;A href="http://mongrel.rubyforge.org/" mce_href="http://mongrel.rubyforge.org/"&gt;mongrel&lt;/A&gt;, &lt;A href="http://code.macournoyer.com/thin/" mce_href="http://code.macournoyer.com/thin/"&gt;thin&lt;/A&gt; or whilst development ruby’s inbuilt &lt;A href="http://www.webrick.org/" mce_href="http://www.webrick.org/"&gt;WEBrick&lt;/A&gt;. These servers are attached to one instance of the ruby application with a front-end web server &lt;A href="http://en.wikipedia.org/wiki/Reverse_proxy" mce_href="http://en.wikipedia.org/wiki/Reverse_proxy"&gt;acting as the reverse proxy server&lt;/A&gt;. This server forwards requests from the outside world to one of the instances of your ruby application; and ‘proxies’ the response back to the browser on the client.&lt;/P&gt;
&lt;P&gt;Using an reverse proxy server architecture provides various goodness: easy instance creation, simple scaling and relatively easy deployment. If you get the configuration right.&lt;/P&gt;
&lt;P&gt;To deploy a reverse proxy server with IIS previously required third party ISAPI such as &lt;A href="http://www.isapirewrite.com/" mce_href="http://www.isapirewrite.com/"&gt;ISAPIRewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;As complex deployments are becoming more common, Microsoft has released the &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7 (get it here)&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The following is my simple setup.&lt;/P&gt;
&lt;H3&gt;How to Setup&lt;/H3&gt;
&lt;P&gt;As I have &lt;EM&gt;mongrel&lt;/EM&gt; installed on my development machine, and am experimenting with &lt;EM&gt;sinatra&lt;/EM&gt;: mongrel is chosen as the default server.&lt;/P&gt;
&lt;P&gt;With a simple batch script, I launch the instances of my simple application. The ruby application is &lt;STRONG&gt;hi.rb&lt;/STRONG&gt;. In this instance, ruby.exe is in my PATH. The '-p 4567' tells Sinatra and Mongrel to use port 4567 as the listening port. There are mechanisms to make these services. This machine is development only, so I’ll leave that alone&lt;/P&gt;&lt;PRE&gt;@ECHO OFF
ruby.exe hi.rb -p 4567&lt;/PRE&gt;
&lt;P&gt;Install &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1712"&gt;Microsoft Application Request Routing Version 1 for IIS 7&lt;/A&gt;. Note that the server also requires &lt;A href="http://www.iis.net/extensions/URLRewrite" mce_href="http://www.iis.net/extensions/URLRewrite"&gt;URL Rewrite&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Launch the Internet Information Services (IIS) Manager&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Create a Server Farm&lt;/STRONG&gt;. A farm is a collection of servers (IIS7 and others) the server is going to farm the incoming requests to&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304987789/" mce_href="http://www.flickr.com/photos/nickhodge/3304987789/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-1 border=0 alt=ServerFarm-1 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg" width=312 height=288 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-1_6bb47f88-b8c9-48b3-b226-feb5605e548f.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Provide a name for your farm&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304990693/" mce_href="http://www.flickr.com/photos/nickhodge/3304990693/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-2 border=0 alt=ServerFarm-2 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png" width=307 height=217 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-2_57081937-13d9-4ed5-9133-8f69935ec468.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;On my test server, I wish to use multiple ports on the same server. That is, more than one application instance bound to separate ports.&lt;/P&gt;
&lt;P&gt;Type the address (without the port) of &lt;STRONG&gt;an application instance&lt;/STRONG&gt;. After clicking “&lt;EM&gt;Add&lt;/EM&gt;”, click on the entry in the server address, and click on the “&lt;EM&gt;Advanced settings…&lt;/EM&gt;”. Sinatra’s default port for an instance is :4567. As extra instances are added; add them to the farm with the appropriate port. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 1&lt;/STRONG&gt;: The UI when adding a httpPort for each address is a little weird. What I found working is to type the Server address:, expand ‘applicationRequestRoutin’, enter the port (if not the default port 80), click add. Then re-click on the entry in the list, and re-enter the httpPort (as it seems to revert back to :80)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NOTE 2&lt;/STRONG&gt;: Each server address must be unique in the Server farm. Therefore, if you have multiple instances of the same application, although on separate ports, on the same server: you will need to do some work on the DNS or &lt;STRONG&gt;hosts&lt;/STRONG&gt; file. On my test machine, I have created aliases in my machine’s &lt;STRONG&gt;hosts&lt;/STRONG&gt; file to the same server (run Notepad.exe as administrator!):&lt;/P&gt;&lt;PRE&gt;%windir%\System32\drivers\etc\hosts
127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost localhost-1 localhost-2&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Server farms can also exist across physical IP addresses: this may be different IIS instances, different virtual machines or different physical machines.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3304998577/" mce_href="http://www.flickr.com/photos/nickhodge/3304998577/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-3 border=0 alt=ServerFarm-3 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png" width=338 height=242 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-3_c5d07261-9078-4ff3-a486-aeb3c615829d.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;To match the incoming requests with a particular farm, a &lt;STRONG&gt;URL Rewrite Rule&lt;/STRONG&gt; is automatically created.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305858896/" mce_href="http://www.flickr.com/photos/nickhodge/3305858896/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-4 border=0 alt=ServerFarm-4 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png" width=365 height=136 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-4_b8ea6fa1-883d-4148-9107-d92582ead7a3.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The below rule will matching any incoming request (which you may wish to tweak) to the server farm. Note the &lt;EM&gt;Action properties:&lt;/EM&gt; pointing to a particular farm, passing on the &lt;EM&gt;{R:0},&lt;/EM&gt; or the pattern matched in the &lt;EM&gt;Match URL&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.flickr.com/photos/nickhodge/3305037127/" mce_href="http://www.flickr.com/photos/nickhodge/3305037127/"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=ServerFarm-5 border=0 alt=ServerFarm-5 src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png" width=474 height=404 mce_src="http://blogs.msdn.com/blogfiles/nickhodge/WindowsLiveWriter/IIS7.5ServerFarmsandRuby_CB02/ServerFarm-5_1af8dc93-7be4-458e-943b-e470e002b8b5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;The .config file&lt;/H3&gt;
&lt;P&gt;The configuration (on my machine) looks something like:&lt;/P&gt;&lt;PRE&gt;%windir%\System32\inetsrv\config\applicationHost.config

&amp;lt;webfarms&amp;gt; 
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webfarm enabled="true" name="localhost"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-1"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4567" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;server enabled="true" address="localhost-2"&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting httpport="4568" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/server&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;loadbalancing algorithm="WeightedRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;protocol httpversion="Http10" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webfarm&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameRoundRobin" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Microsoft.Web.Arr.HostNameMemory" /&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/hostaffinityproviderlist&amp;gt;
&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationrequestrouting&amp;gt;
&lt;BR&gt;&amp;lt;/webfarms&amp;gt;&lt;/PRE&gt;
&lt;H3&gt;For Further Research&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;The Server Farms have extra features for checking the health of instances. Wiring these into mongrel would be cool.&lt;/LI&gt;
&lt;LI&gt;Load Balancing mechanisms: wiring these for deeper integration&lt;/LI&gt;
&lt;LI&gt;IronRuby. Now that would be cool.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9442377" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item><item><title>Windows 7, IIS 7.5 and Ruby on Rails</title><link>http://blogs.msdn.com/nickhodge/archive/2009/02/23/windows-7-iis-7-5-and-ruby-on-rails.aspx</link><pubDate>Mon, 23 Feb 2009 07:50:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9440961</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9440961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9440961</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9440961</wfw:comment><description>&lt;p&gt;Having spent the weekend working on Ruby on Rails with IIS/SQLServer 2008 Express backend via FastCGI, here are some tips to get you going:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The best resource is &lt;a href="http://ruslany.net/2008/08/ruby-on-rails-in-iis-70-with-url-rewriter/"&gt;Ruslan’s post on Rails and IIS7&lt;/a&gt;. In fact, go and bookmark this site right now. In Ruslan’s post, the &lt;em&gt;web.config&lt;/em&gt; shown is best edited in a text editor. &lt;/li&gt;    &lt;li&gt;When installing IIS7.5 on Windows 7 Beta (build 7000) is easy: Using the &lt;em&gt;Control Panels\Programs,&lt;/em&gt; Turn Windows Features On/Off. Underneath the Internet Information Services, you need to also install the CGI feature (to get FastCGI) &lt;/li&gt;    &lt;li&gt;Windows 7 and URL Rewrite: This forum post &lt;a href="http://forums.iis.net/t/1154240.aspx"&gt;http://forums.iis.net/t/1154240.aspx&lt;/a&gt; will get you going whilst Windows 7 is in beta &lt;/li&gt;    &lt;li&gt;Database connectivity to &lt;a href="http://www.microsoft.com/express/sql/"&gt;SQLServer&lt;/a&gt; seems to be a common question. Installing the option “sqlserver adaptor” which is now an optional part of ActiveRecord:       &lt;br /&gt;      &lt;pre&gt;gem install activerecord-sqlserver-adapter --source=http://gems.rubyonrails.org&lt;/pre&gt;
Connecting via the ODBC adaptor via the SQL Native Client worked, rather than the ADO connector. My connector string looked something like this: 

    &lt;br /&gt;

    &lt;pre&gt;development: 
  adapter: sqlserver 
  mode: odbc 
  dsn: Driver={SQL Native Client};Server=.\SQLEXPRESS;Database=xxxxx;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;As I am installing underneath the IIS7 root directory (that is: &lt;a href="http://server/myapp"&gt;http://server/myapp&lt;/a&gt;) there are 3 small Rails tweaks required inform the application all the goodies are in a subdirectory:

    &lt;br /&gt; 

    &lt;br /&gt;&lt;em&gt;in config/environment.rb, the header, define a global variable:&lt;/em&gt; 

    &lt;pre&gt;PATH_PREFIX = '/myapp'&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/environment.rb, in the Initializer, set the asset home directory:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;Rails::Initializer.run do |config|
    config.action_controller.asset_host = PATH_PREFIX&lt;/pre&gt;

    &lt;p&gt;&lt;em&gt;in config/routes.rb, ActionController::Routing::Routes.draw:&lt;/em&gt;&lt;/p&gt;

    &lt;pre&gt;  map.connect PATH_PREFIX + '/:controller/:action/:id'
  map.connect PATH_PREFIX + '/:controller/:action/:id.:format'
end&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9440961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/rubyonrails/default.aspx">rubyonrails</category></item><item><title>Demos and Links from Edge of the Web, Nov’08 Perth</title><link>http://blogs.msdn.com/nickhodge/archive/2008/11/11/demos-and-links-from-edge-of-the-web-nov-08-perth.aspx</link><pubDate>Tue, 11 Nov 2008 06:08:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9059152</guid><dc:creator>nhodge</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/9059152.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=9059152</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=9059152</wfw:comment><description>&lt;p&gt;During the 50 minutes of presentation (including at least 9 &lt;a href="http://icanhascheezburger.com/"&gt;ICHC&lt;/a&gt; images), I demonstrated the following bits and pieces of open source and or free Microsoft bits.&lt;/p&gt;  &lt;h3&gt;Demo set 1: Web Standards&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.mesh.com/"&gt;Live Mesh Mobile&lt;/a&gt; : take photo to mesh on laptop &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;MacOS X 10.5 client available too [&lt;em&gt;not demo’d&lt;/em&gt;] &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://dev.live.com/"&gt;DataModelBrowser to apis.mesh.com&lt;/a&gt;; showing REST/JSON/APP [part of Live Framework SDK]&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Oomph"&gt;Oomph: Microformats toolkit&lt;/a&gt; (source on codeplex.com) incorporating:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://get.live.com/writer/overview"&gt;LiveWriter&lt;/a&gt;; hCard plugin; publish; show IE plugin, same site with &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2240?id=2240"&gt;Firefox Tail&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 2: PHP, SQLServer 2008 &amp;amp; IIS7 &lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/nickhodge/archive/2008/08/19/in-which-i-get-my-own-iis7.aspx"&gt;IIS7/PHP; Modules mapping via FastCGI&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/channel/downloads/default.aspx"&gt;Microsoft Web Platform Installer and Web Application Installer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/SQL2K5PHP"&gt;MSSQLPHPDriver; show PHP + results; codeplex&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 3: IronPython&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython&lt;/a&gt;; ipy hello world winforms &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/aspnet/Wiki/View.aspx?title=Dynamic%20Language%20Support"&gt;using as aspx as &amp;quot;code behind&amp;quot; and ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/a&gt; integration with via .NET compiled .dll&amp;#160; (calling from IronPython)&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 4: IronRuby&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.ironruby.net/"&gt;IronRuby&lt;/a&gt;; flickr.net example from &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL44.wmv"&gt;John Lam’s PDC2008 session&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.jimmy.schementi.com/2008/08/walk-through-silverlight-flickr-client.html"&gt;Photoviewer&lt;/a&gt;; using local Chiron, browser, ruby in browser doing HTML/DOM &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Demo set 5: Silverlight&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight 2 tools for Visual Studio now support Visual Studio Express &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Silverlight 2 also supporting Eclipse (see, competition is a good thing) &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/Silverlight"&gt;Silverlight Toolkit&lt;/a&gt;, run from chrome-less Google Chrome (contains &lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode33MicrosoftOpenSourceInsideGoogleChrome.aspx"&gt;Microsoft Windows Template Lib&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9059152" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/sqlserver/default.aspx">sqlserver</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/codeplex/default.aspx">codeplex</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/opensource/default.aspx">opensource</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ruby/default.aspx">ruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/f_2300_/default.aspx">f#</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/microformats/default.aspx">microformats</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironruby/default.aspx">ironruby</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/ironpython/default.aspx">ironpython</category></item><item><title>Vista as my PHP Developer Workstation</title><link>http://blogs.msdn.com/nickhodge/archive/2008/09/13/vista-as-my-php-developer-workstation.aspx</link><pubDate>Sat, 13 Sep 2008 15:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8949955</guid><dc:creator>nhodge</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8949955.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8949955</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8949955</wfw:comment><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Prior to joining Microsoft, I always setup my Windows laptop as a PHP/Apache development workstation. Having created my &lt;A target=_blank href="http://www.nickhodge.com/blog/archives/2210" mce_href="http://www.nickhodge.com/blog/archives/2210"&gt;own content management system in PHP&lt;/A&gt; (and who hasn’t!) – having a remote development copy is critical.&lt;/P&gt;
&lt;P&gt;Over the last few weeks, I have installed the following onto my Vista Ultimate 64-bit laptop and &lt;A target=_blank href="http://www.nickhodge.com/blog/general-melchett" mce_href="http://www.nickhodge.com/blog/general-melchett"&gt;home workstation&lt;/A&gt;:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;install IIS7 web server, with the CGI support (note: &lt;A target=_blank href="http://learn.iis.net/page.aspx/28/installing-iis-70-on-windows-vista/" mce_href="http://learn.iis.net/page.aspx/28/installing-iis-70-on-windows-vista/"&gt;a version of IIS7 supplied with Vista SP1&lt;/A&gt;) &lt;/LI&gt;
&lt;LI&gt;Install Thread-safe PHP from &lt;A title=http://windows.php.net/downloads.php href="http://windows.php.net/downloads.php" mce_href="http://windows.php.net/downloads.php"&gt;http://windows.php.net/downloads.php&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Using the IIS Manager, and module remap .php extensions to the &lt;/LI&gt;
&lt;LI&gt;Install php_sqlsrv&lt;STRIKE&gt;_ts&lt;/STRIKE&gt;.dll which is a part of the &lt;A target=_blank href="http://www.codeplex.com/SQL2K5PHP" mce_href="http://www.codeplex.com/SQL2K5PHP"&gt;Microsoft SQL Server 2005 Driver for PHP&lt;/A&gt;, modify the php.ini to launch/activate the extension &lt;STRONG&gt;&lt;EM&gt;[see comments below]&lt;/EM&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;The following change in the php.ini is also important in an IIS installation 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;; Set to 1 if running under IIS.&amp;nbsp; Default is zero. &lt;BR&gt;; fastcgi.impersonate = 1;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/LI&gt;
&lt;LI&gt;Restart the IIS &lt;/LI&gt;
&lt;LI&gt;Reading the &lt;A href="http://forums.iis.net/" mce_href="http://forums.iis.net/"&gt;http://forums.iis.net/&lt;/A&gt; &lt;A target=_blank href="http://forums.iis.net/t/1151378.aspx" mce_href="http://forums.iis.net/t/1151378.aspx"&gt;I also updated FastCGI&lt;/A&gt; (fixes REQUEST_URI) &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Development Environments&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Everyone has their favourite development environment. I do have Notepad++ installed, and often just resort to Notepad. As I am from Microsoft, I have access to Visual Studio. Searching out for a Visual Studio plugin: I am currently trialling &lt;STRONG&gt;vs.php&lt;/STRONG&gt; (Visual Studio PHP; &lt;A title=http://www.jcxsoftware.com/vs.php href="http://www.jcxsoftware.com/vs.php" mce_href="http://www.jcxsoftware.com/vs.php"&gt;http://www.jcxsoftware.com/vs.php&lt;/A&gt;)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8949955" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category></item><item><title>In Which I Get My Own IIS7</title><link>http://blogs.msdn.com/nickhodge/archive/2008/08/19/in-which-i-get-my-own-iis7.aspx</link><pubDate>Tue, 19 Aug 2008 08:28:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8877903</guid><dc:creator>nhodge</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/nickhodge/comments/8877903.aspx</comments><wfw:commentRss>http://blogs.msdn.com/nickhodge/commentrss.aspx?PostID=8877903</wfw:commentRss><wfw:comment>http://blogs.msdn.com/nickhodge/rsscomments.aspx?PostID=8877903</wfw:comment><description>&lt;p&gt;Thanks to our resident &lt;a href="http://blogs.technet.com/jorke/" target="_blank"&gt;Hosting Geek: Jorke&lt;/a&gt;, I have an internet-facing Windows 2008 / IIS7 web site.&lt;/p&gt;  &lt;p&gt;Yes, Jorke is a brave man. &lt;/p&gt;  &lt;p&gt;After logging in via Remote Desktop and changing my password, it is off and away on this funny experience with Windows IIS hosting.&lt;/p&gt;  &lt;p&gt;For the record, historically I have always developed/tested my PHP/MySQL sites on Windows: from 2000, via XP and now on Vista, I would install Apache, PHP and MySQL to provide a mirror to the eventual “web hosted” server in the cloud.&lt;/p&gt;  &lt;p&gt;First step is to install &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/express.aspx" target="_blank"&gt;SQLServer 2008: Express&lt;/a&gt; onto the server. &lt;/p&gt;  &lt;p&gt;Second step, to ensure that FastCGI PHP is running. Thanks &lt;a href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis7/" target="_blank"&gt;to the support of FastCGI in IIS7, this took a minute at most&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://learn.iis.net/Content_Cache/246/IIS - Add Module Mapping.png" /&gt; &lt;/p&gt;  &lt;p&gt;Thirdly, as I plan to use the open source &lt;a href="http://www.codeplex.com/SQL2K5PHP" target="_blank"&gt;Microsoft SQL Server 2005 Driver for PHP&lt;/a&gt;, installing the extension: php_sqlsrv.dll and wiring this to launch in php.ini (one line addition)&lt;/p&gt;  &lt;p&gt;&lt;a title="sqlsrv enabled" href="http://www.flickr.com/photos/37473564@N00/2776555007/"&gt;&lt;img alt="sqlsrv enabled" src="http://static.flickr.com/3289/2776555007_6d08328fd7.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;After testing with php_info(); , I can see I have a working internet-facing server install.&lt;/p&gt;  &lt;p&gt;Now onward towards php.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8877903" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/nickhodge/archive/tags/php/default.aspx">php</category><category domain="http://blogs.msdn.com/nickhodge/archive/tags/iis7/default.aspx">iis7</category></item></channel></rss>