<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><language>en</language><title>Blog posts by Andreas Nylin</title> <link>https://world.optimizely.com/blogs/Andreas-Nylin/</link><description></description><ttl>60</ttl><generator>Optimizely World</generator><item> <title>Updated Checklist for deploying EPiServer sites</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=090cbbe5-c4c4-4705-88a8-4702fea240ae</link>            <description>&lt;p&gt;The checklist has been updated with info on EPiServerLog.config and more detailed descriptions. View the updated list in the &lt;a href=&quot;http://labs.dropit.se/blogs/post/2010/01/10/Checklist-for-deploying-EPiServer-sites.aspx&quot;&gt;checklist post&lt;/a&gt; or download the &lt;a href=&quot;http://labs.dropit.se/checklist/checklist%20for%20deploying%20episerver%20sites.pdf&quot;&gt;PDF version&lt;/a&gt;.&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=090cbbe5-c4c4-4705-88a8-4702fea240ae</guid>            <pubDate>Thu, 25 Mar 2010 10:35:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Checklist for deploying EPiServer sites</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=6a297bd2-f33e-42be-8a11-c91af530c955</link>            <description>&lt;p&gt;There are many tasks that needs to be performed when a new EPiServer web site is deployed and it&#39;s easy to forget something. This is a checklist with some of the most common tasks that needs to be done on most new EPiServer web sites. &lt;a href=&quot;http://labs.dropit.se/checklist/checklist for deploying episerver sites.pdf&quot;&gt;You can download the list as PDF here.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Licenses&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Order license for EPiServer&lt;/li&gt;
&lt;li&gt;Order licenses for EPiServer modules&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Access rights&lt;br /&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Check access rights in the EPiServer page tree&lt;/li&gt;
&lt;li&gt;Remove test users and groups in EPiServer &lt;/li&gt;
&lt;li&gt;Create users and groups in EPiServer (WebAdmins and WebEditors)&lt;/li&gt;
&lt;li&gt;Check access rights in web.config&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Web.config&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Set compilation debug to false&lt;/li&gt;
&lt;li&gt;Set attributes for outputcache    
&lt;ul&gt;
&lt;li&gt;httpCacheExpiration = 01:00:00 (one hour)&lt;/li&gt;
&lt;li&gt;httpCacheVaryByParams = * or parameters (id,epslanguage)&lt;/li&gt;
&lt;li&gt;httpCacheVaryByCustom = remove if not needed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Set attributes for mailsettings    
&lt;ul&gt;
&lt;li&gt;host = the mail server that should be used to send mails&lt;/li&gt;
&lt;li&gt;from = set to an address or remove&lt;/li&gt;
&lt;li&gt;port, userName, passWord (for mail server if needed)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Search for &quot;:\&quot; and check that all paths are correct&lt;/li&gt;
&lt;li&gt;Set stringDelayedLoadThreshold = 50&lt;/li&gt;
&lt;li&gt;Check access rights. Search for authorization and verify allow roles and deny users&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Episerver.config&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;siteUrl = http://www.acme.com&lt;/li&gt;
&lt;li&gt;uiUrl = http://www.acme.com/UI/&lt;/li&gt;
&lt;li&gt;utilUrl = http://www.acme.com/Util/&lt;/li&gt;
&lt;li&gt;SiteDisplayName = Site name used in title, etc&lt;/li&gt;
&lt;li&gt;Verify paths for virtualPath/providers&lt;/li&gt;
&lt;li&gt;Set predefined image formats for the image editor: imageEditor/sizePresets&lt;/li&gt;
&lt;li&gt;Set uiEditorCssPaths (~/EditorStyles.css)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;connectionStrings.config&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that the correct database and user is specified&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;ApplicationInitializing.txt&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create an ApplicationInitializing.txt file in the web root. Example content of the file: &quot;The application is loading. Please wait.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Database&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Set Recovery mode = Simple&lt;/li&gt;
&lt;li&gt;Set Auto shrink = true&lt;/li&gt;
&lt;li&gt;Remove testusers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Robots.txt&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create a robots.txt file in the web root. Specify any paths you want to exclude from search engines.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Google Analytics&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that Google Analytics scripts are inclunded in the page and that the correct key is specified.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Validate HTML&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that the pages HTML code validates with http://validator.w3.org&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Browser Compability&lt;/h2&gt;
&lt;p&gt;Verify that the page looks ok in these browsers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Internet explorer 8&lt;/li&gt;
&lt;li&gt;Internet explorer 7&lt;/li&gt;
&lt;li&gt;Internet explorer 6&lt;/li&gt;
&lt;li&gt;Firefox&lt;/li&gt;
&lt;li&gt;Google chrome&lt;/li&gt;
&lt;li&gt;Safari&lt;/li&gt;
&lt;li&gt;Opera&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Optimization&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Analyze the page with Yslow or Websiteoptimization.com&lt;/li&gt;
&lt;li&gt;Make sure that any ScriptManagers has ScriptMode set to Release&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Favicon&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that a favicon is displayed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Title&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that the page title is displayed correct&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Images&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that images can be uploaded&lt;/li&gt;
&lt;li&gt;Verify that images are displayed&lt;/li&gt;
&lt;li&gt;Verify that automatically resized images are displayed (thumbnails, etc)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Mail&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Verify that mails sent from forms are sent and received&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Search&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Perform testsearches and verify that relevant results are shown&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Error pages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add custom error pages in IIS&lt;/li&gt;
&lt;li&gt;Verify that error pages are displayed for 404, 500, etc&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;IIS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create a separate Application Pool for the site&lt;/li&gt;
&lt;li&gt;Disable IIS logging&lt;/li&gt;
&lt;/ul&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=6a297bd2-f33e-42be-8a11-c91af530c955</guid>            <pubDate>Sun, 10 Jan 2010 20:20:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>A short summary of jQuery Summit 2009</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=58c6096a-f15d-4116-980d-0c9d2156c65d</link>            <description>&lt;p&gt;jQuery summit is an online conference that was held this Thursday. The main event was of course &lt;a href=&quot;http://www.slideshare.net/jeresig/recent-changes-to-jquerys-internals&quot;&gt;The State of jQuery&lt;/a&gt; with &lt;a href=&quot;http://ejohn.org&quot;&gt;John Resig&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;John talked a lot about the news in the upcoming version 1.4 of jQuery. Some of the news are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimization and improvements of existing functions (some are now three times faster that before)&lt;/li&gt;
&lt;li&gt;jQuery.core will be split in to several modules.&lt;/li&gt;
&lt;li&gt;Dynamically loading portions of the library with .getScript().&lt;/li&gt;
&lt;li&gt;.toArray() method. Returns an array of DOM elements.&lt;/li&gt;
&lt;li&gt;.get(-N). Access elements with negative indices.&lt;/li&gt;
&lt;li&gt;.data(). Returns all data for an element.&lt;/li&gt;
&lt;li&gt;.detach(). Like .remove() but keeps events and data intact.&lt;/li&gt;
&lt;li&gt;.remove() is now a lot faster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mobile jQuery in the process.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://trends.builtwith.com/javascript/JQuery&quot;&gt;21.56% of all websites use jQuery!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A new plugin site with a CDN is on the way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt; Other interesting presentations were &lt;a href=&quot;http://paulirish.com/perf&quot;&gt;jQuery Anti-Patterns for Performance &amp;amp; Compression&lt;/a&gt; with &lt;a href=&quot;http://paulirish.com&quot;&gt;Paul Irish&lt;/a&gt; and &lt;a href=&quot;http://learn.appendto.com/jquery-refactored&quot;&gt;Refactoring jQuery&lt;/a&gt; with &lt;a href=&quot;http://amountaintop.com&quot;&gt;Mike Hostetler&lt;/a&gt;.&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=58c6096a-f15d-4116-980d-0c9d2156c65d</guid>            <pubDate>Sat, 21 Nov 2009 10:17:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>6 great JavaScript resources</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=7d74f64d-835b-426c-ac4d-2fa5e8acb412</link>            <description>&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://net.tutsplus.com/tutorials/javascript-ajax/24-javascript-best-practices-for-beginners/&quot; target=&quot;_blank&quot;&gt;http://net.tutsplus.com/tutorials/javascript-ajax/24-javascript-best-practices-for-beginners/&lt;/a&gt;&lt;br /&gt;Great tips for the beginner. Examples of common pitfalls and do&#39;s and don&#39;ts.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/En/JavaScript&quot; target=&quot;_blank&quot;&gt;https://developer.mozilla.org/En/JavaScript&lt;/a&gt;&lt;br /&gt;A really good JavaScript reference and guide. Also has information on what&#39;s supported in different versions of JavaScript.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.quirksmode.org/js/contents.html&quot; target=&quot;_blank&quot;&gt;http://www.quirksmode.org/js/contents.html&lt;/a&gt;&lt;br /&gt;Covers just about everything from how to work with strings to event binding and AJAX. Lots of useful compatibility tables.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.crockford.com/javascript/&quot; target=&quot;_blank&quot;&gt;http://www.crockford.com/javascript/&lt;/a&gt;&lt;br /&gt;Douglas Crockford is the Author of JavaScript - the good parts. On his site you will find many great tips on how you should write JavaScript and how to create advanced object inheritance and extending.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.asp.net/AJAX/Documentation/Live/ClientReference/default.aspx&quot; target=&quot;_blank&quot;&gt;http://www.asp.net/AJAX/Documentation/Live/ClientReference/default.aspx&lt;/a&gt;&lt;br /&gt;API for the ASP.NET AJAX library. There&#39;s so much more than just UpdatePanel.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;a href=&quot;http://www.jslint.com/&quot; target=&quot;_blank&quot;&gt;http://www.jslint.com/&lt;/a&gt;&lt;br /&gt;A JavaScript syntax validator. Run it on all your scripts.&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=7d74f64d-835b-426c-ac4d-2fa5e8acb412</guid>            <pubDate>Thu, 19 Nov 2009 13:07:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Expression Web SuperPreview for Windows Internet Explorer</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=06140d35-5ad7-4fd0-be60-c3ef5bd3dc7d</link>            <description>&lt;p&gt;&lt;img src=&quot;http://labs.dropit.se/blogs/image.axd?picture=2009%2f11%2fsuperpreview.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Expression Web SuperPreview for Windows Internet Explorer is the quite long name of a great tool for testing web page layouts in different browsers (I&#39;m just gonna refer to it as SuperPreview form now on).&lt;/p&gt;
&lt;p&gt;SuperPreview allows you to compare how a web page is rendered in different browser versions. You can add several browser windows which you can display side by side or on top of each other. You can even add images to compare your web page with a Photoshop design mockup. The full version currently has support for these browsers: Internet explorer 6-8, Firefox and Safari.&lt;br /&gt;&lt;br /&gt;Other features are: rulers and guidelines, zoom, browser size, DOM explorer, CSS properties and element highlighting.&lt;br /&gt;&lt;br /&gt;SuperPreview is a part of Microsoft Expression Web but there is a free stand-alone version of SuperPreview that only has support for the Internet Explorer browsers.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://expression.microsoft.com/en-us/dd565874.aspx&quot;&gt;More info on SuperPreview&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=8e6ac106-525d-45d0-84db-dccff3fae677&amp;amp;displaylang=en&quot;&gt;Download the stand-alone version&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.microsoft.com/Expression/default.aspx&quot;&gt;More info on Micorsoft Expression&lt;/a&gt;&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=06140d35-5ad7-4fd0-be60-c3ef5bd3dc7d</guid>            <pubDate>Sat, 14 Nov 2009 18:20:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>How to determine if an EPiServer Composer function is placed in another Composer function</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=57d6c336-e0e5-4450-9b00-415295714224</link>            <description>&lt;p&gt;Sometimes it can be handy to know if a Composer function is placed directly on the page or if it&#39;s placed in another Composer function. Here is a piece of code I wrote that does the trick. &lt;br /&gt;The property must be placed in a class that derives from Dropit.Extension.Core.BaseContentFunction&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;language-csharp&quot;&gt;&lt;code&gt;private bool ParentIsContentFunction
{
    get
    {
        // Make sure that the current page is an Composer page
        if (this.CurrentExtensionPageData != null)
        {
            ContentFunctionData currentContentFunctionData = new ContentFunctionData(this.ContentFunctionLink);
            
            // Loop through all content areas in the page
            foreach(ContentAreaData ca in this.CurrentExtensionPageData.ContentAreas)
            {    
                // If any of the content areas contains the current content function it means that the function is placed directly on the page
                // - it&#39;s not placed in another content function
                if (ca.ContentFunctions.Contains(currentContentFunctionData))
                    return false;
            }
        }
        
        // If we reach this code it means that the content function is placed in another content function
        return true;
    }
}
&lt;/code&gt;&lt;/pre&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=57d6c336-e0e5-4450-9b00-415295714224</guid>            <pubDate>Mon, 09 Nov 2009 09:56:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Fixes for EPiServer Composer client script issues in Internet Explorer and Firefox</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=617e8858-11c8-4bd7-96e1-820488a97e0c</link>            <description>&lt;p&gt;In my current EPiServer project (using EPiServer CMS R2 SP2 and EPiServer Composer) I discovered a bunch of client script issues which basically made it impossible to use Composer in any web browser. This post describes these issues, how to fix them and make it possible to use Composer in the latest versions of Internet Explorer and Firefox.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Problems in Internet Explorer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Script error &quot;Extension.Client not found&quot; when saving content function data in Internet Explorer 7 and 8.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Not possible to create functions in Internet Explorer 8 standard mode. Error message when dragging functions to page.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both of these problems are related to how the setAttribute method of the DOMElement is handled in Internet Explorer. The solution is to pass an empty string as value instead of null.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fixes:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Add the following code to &lt;strong&gt;Dropit\Plugin\Extension\UI\Js\Utils.js&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;Util.HandleNulls = function(val) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (val == null || val == &quot;null&quot;) ? &quot;&quot; : val;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;Locate the function &lt;strong&gt;Extension.ContentFunction.prototype.ToXml&lt;/strong&gt; in &lt;strong&gt;Dropit\Plugin\Extension\UI\Js\Extension.ContentFunction.js&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Replace line 444:&lt;/p&gt;
&lt;pre&gt;contentFunctionNode.setAttribute(&quot;remotesite&quot;, this.RemoteSite);&lt;/pre&gt;
&lt;p&gt;with this code:&lt;/p&gt;
&lt;pre&gt;contentFunctionNode.setAttribute(&quot;remotesite&quot;, Util.HandleNulls(this.RemoteSite));&lt;/pre&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Locate the function&amp;nbsp;&lt;strong&gt;Extension.ContentArea.prototype.HandleCategoryItem&lt;/strong&gt; in &lt;strong&gt;Dropit\Plugin\Extension\UI\Js\Extension.ContentArea.js&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Replace lines 354 and 355:&lt;/p&gt;
&lt;pre&gt;div.setAttribute(&quot;pid&quot;, pid);&lt;br /&gt;div.setAttribute(&quot;wid&quot;, wid);&lt;/pre&gt;
&lt;p&gt;With this code:&lt;/p&gt;
&lt;pre&gt;div.setAttribute(&quot;pid&quot;, Util.HandleNulls(pid));&lt;br /&gt;div.setAttribute(&quot;wid&quot;, Util.HandleNulls(wid));&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Problem in Firefox 3.5&lt;/h2&gt;
&lt;p&gt;Drag and drop doesn&#39;t work. Nothing happens when you drag a function from the toolbox.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fix&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;This turned out to be solved. You can read more about it in &lt;a href=&quot;http://world.episerver.com/Forum/Developer-forum/EPiServer-Composer/Thread-Container/2009/7/Composer-broken-in-Firefox-35/&quot;&gt;this thread&lt;/a&gt; on EPiServer World. Simply replace your Rico.js file with this one: &lt;a href=&quot;http://www.m2b.se/ext/composer/rico.js&quot;&gt;http://www.m2b.se/ext/composer/rico.js&lt;/a&gt;.&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=617e8858-11c8-4bd7-96e1-820488a97e0c</guid>            <pubDate>Fri, 23 Oct 2009 21:21:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Developer Lunch: XMPP, BOSH, Strophe and the &quot;Real time web&quot;</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=e62f1709-83af-4e56-836d-506bfc3fdb8a</link>            <description>&lt;p&gt;Today at the premiere of our developer lunch I decided to share this presentation of Jack Moffitts JavaScript library, &lt;a href=&quot;http://code.stanziq.com/strophe/&quot;&gt;Strophe&lt;/a&gt;, from the &lt;a href=&quot;http://jsconf2009.com/&quot;&gt;2009 JS Conf&lt;/a&gt;. In this video Jack explains XMPP (eXtensible Messaging and Presence Protocol), BOSH (Bidirectional-streams Over Synchronous HTTP) and gives a quick overview of the Strophe library. I think this is an exciting technique that we will see more and more on the web.&lt;/p&gt;
&lt;p&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;560&quot; height=&quot;334&quot; src=&quot;http://blip.tv/play/AYGPo0KY8ys&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jsconf2009.com/moffitt_video.html&quot;&gt;Watch the video at the JSConf website&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://xmpp.org/&quot;&gt;More info on XMPP&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://xmpp.org/extensions/xep-0124.html&quot;&gt;More info on BOSH&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://code.stanziq.com/strophe/&quot;&gt;More info on Strophe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sites using the Strophe library:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://speeqe.com/&quot;&gt;Speeqe&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://code.stanziq.com/strophe/&quot;&gt;Chesspark&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://drop.io/&quot;&gt;Drop.io&lt;/a&gt;&lt;/p&gt;</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=e62f1709-83af-4e56-836d-506bfc3fdb8a</guid>            <pubDate>Thu, 08 Oct 2009 23:06:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Microsoft Ajax content delivery network</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=7c3c1153-63c3-4256-b12c-c6f6155dcc3d</link>            <description>&lt;p&gt;
Microsoft has launched a content delivery network for client script libraries. It currently hosts the beta version of the new Microsoft Ajax Library and the latest version of jQuery.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.asp.net/ajax/cdn/&quot;&gt;More information on Microsoft Ajax CDN&lt;/a&gt;
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=7c3c1153-63c3-4256-b12c-c6f6155dcc3d</guid>            <pubDate>Sat, 19 Sep 2009 14:39:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>A page property plugin for EPiServer CMS</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=8ec4357b-bd4d-4b44-a2d1-6552c08d9b00</link>            <description>&lt;p&gt;
In a recent project I had to create a property with the same name and type on several page
types. Let&amp;#39;s just say that it was not that fun. &amp;quot;There should be a way
to create the same property on several pages at once&amp;quot;, I thought to
myself. So I decided to create a plugin that lets you copy properties
from one page type to other page types. &lt;br /&gt;
&lt;br /&gt;
To install the plugin:
&lt;a href=&quot;http://labs.dropit.se/copypageproperty/copypageproperty.zip&quot;&gt;Download it&lt;/a&gt;, extract the files, copy the
Dropit.PlugIn.CopyPageProperty.dll-file to your bin directory and the
Admin.aspx-file to /PlugIn/CopyPageProperty/&lt;br /&gt;
&lt;br /&gt;
You will find the plugin in EPiServer Admin under Tools &amp;gt; Copy page properties.
&lt;/p&gt;
&lt;p&gt;
It should be easy to use. Just select your source page type, then select the properties you want to copy and the select the page types you want to copy the properties to.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;img src=&quot;http://labs.dropit.se/blogs/image.axd?picture=2009%2f8%2fcpp.jpg&quot; alt=&quot;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;
This
plugin is developed for EPiServer CMS R2 SP2. It will probably work in
all version of EPiServer 5 but this has not been tested.&lt;br /&gt;
&lt;br /&gt;
This is released under the WTFPL license. &lt;a href=&quot;http://en.wikipedia.org/wiki/WTFPL&quot;&gt;http://en.wikipedia.org/wiki/WTFPL&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://labs.dropit.se/copypageproperty/copypageproperty.zip&quot;&gt;Download the plugin (including source code)&lt;/a&gt;
&lt;/p&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=8ec4357b-bd4d-4b44-a2d1-6552c08d9b00</guid>            <pubDate>Sun, 23 Aug 2009 17:41:00 GMT</pubDate>           <category>Blog post</category></item><item> <title>Performance tips when selecting in jQuery</title>            <link>http://labs.dropit.se/blogs/post.aspx?id=eef3f026-9312-4c05-9fab-c56ed33144b8</link>            <description>&lt;strong&gt;1. Always use ID to select an element if you can.&lt;/strong&gt; This is the fastest way to select elements.&lt;br /&gt;
&lt;strong&gt;&lt;br /&gt;
&lt;br /&gt;
2. Avoid selecting elements by class name.&lt;/strong&gt; Selecting with class name only will make jQuery search every element in the entire page. If you need to select elements by classname then use the element tag combined with the class name.&lt;br /&gt;
&lt;br /&gt;
Avoid this: &lt;font face=&quot;courier new,courier&quot;&gt;jQuery(&amp;quot;.ElementClass&amp;quot;)&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
Do this: &lt;font face=&quot;courier new,courier&quot;&gt;jQuery(&amp;quot;div.ElementClass&amp;quot;)&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3. Narrow it down.&lt;/strong&gt; For example, if you know that the elements you want to select are in the top menu of the page then specify it when selecting.&lt;br /&gt;
&lt;br /&gt;
&lt;font face=&quot;courier new,courier&quot;&gt;jQuery(&amp;quot;#TopMenu&amp;quot;).find(&amp;quot;li.MenuItem&amp;quot;);&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4. Avoid selecting the same element more than once.&lt;/strong&gt; Store your selected element or use chaining.&lt;br /&gt;
&lt;br /&gt;
Avoid this:&lt;br /&gt;
&lt;br /&gt;
&lt;font face=&quot;courier new,courier&quot;&gt;jQuery(&amp;quot;#MyElement&amp;quot;).addClass(&amp;quot;SelectedItem&amp;quot;);&lt;br /&gt;
jQuery(&amp;quot;#MyElement&amp;quot;).show();&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
Do this:&lt;br /&gt;
&lt;br /&gt;
&lt;font face=&quot;courier new,courier&quot;&gt;jQuery(&amp;quot;#MyElement&amp;quot;).addClass(&amp;quot;SelectedItem&amp;quot;).show();&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
Or this:&lt;br /&gt;
&lt;br /&gt;
&lt;font face=&quot;courier new,courier&quot;&gt;var myElement = jQuery(&amp;quot;#MyElement&amp;quot;);&lt;br /&gt;
myElement.addClass(&amp;quot;SelectedItem&amp;quot;);&lt;br /&gt;
// some more code...&lt;br /&gt;
myElement.show();
&lt;/font&gt;
</description>            <guid>http://labs.dropit.se/blogs/post.aspx?id=eef3f026-9312-4c05-9fab-c56ed33144b8</guid>            <pubDate>Fri, 29 May 2009 21:31:00 GMT</pubDate>           <category>Blog post</category></item></channel>
</rss>