<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8457662892362572895</id><updated>2012-02-16T12:09:51.560-08:00</updated><category term='UNIX'/><category term='Lock down'/><category term='Visual Studio'/><category term='URL Rewrite'/><category term='Attachment'/><category term='proxy'/><category term='Form customization'/><category term='Cache'/><category term='Accessibility'/><category term='Page Layout'/><category term='perl'/><category term='Business Data Catalog'/><category term='Extend Web application'/><category term='Definition Editor'/><category term='Windows'/><category term='Firewall'/><category term='Content Query Web Part'/><category term='Variations'/><category term='ASP.NET'/><category term='ZIP'/><category term='FTP'/><category term='internet facing site'/><category term='List'/><category term='CQWP'/><category term='MOSS'/><category term='XHTML'/><category term='timestamp'/><category term='MS Office documents'/><category term='Reverse Proxy'/><category term='Publishing'/><category term='SharePoint Designer Workflow'/><category term='Policy for Web application'/><category term='CSS'/><category term='Subversion'/><category term='Avidemux'/><category term='VisualStudio'/><category term='Cookie'/><category term='FLV Flash Video'/><category term='default.aspx'/><category term='WebDAV'/><category term='Windows2008'/><category term='2007'/><category term='H264'/><category term='Session'/><category term='SharePoint 2010'/><category term='Breadcrumb navigation'/><category term='FireBug'/><category term='SDK'/><category term='FlexListViewer'/><category term='HttpModule'/><category term='Passive mode'/><category term='View'/><category term='FPSE'/><category term='BLOBCache'/><category term='Document Library'/><category term='Custom List'/><category term='Sharepoint'/><category term='CMS'/><category term='Web Deploy'/><category term='Custom list form'/><category term='EventViewer'/><category term='content type'/><category term='IIS7'/><category term='media=&quot;print&quot;'/><title type='text'>Murmur of a webmaster</title><subtitle type='html'>SharePoint, DotNetNuke, .Net in general : Tips I would like to remember myself and like to share with you.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-5811641390222197151</id><published>2012-01-25T08:22:00.001-08:00</published><updated>2012-01-25T08:22:15.182-08:00</updated><title type='text'>DOCTYPE Mobile</title><content type='html'>&lt;p&gt;It took more than a day...&lt;/p&gt;  &lt;p&gt;I was implementing mobile view of our internet-facing web site, which is on MS SharePoint 2010.&lt;/p&gt;  &lt;p&gt;The page’s computed width gets 980px. But I could not find out where it comes from.&lt;/p&gt;  &lt;p&gt;We had design company prepared their designs in HTML. So my task should not have been much more than a copy and paste. However, SP pages generated based on my mobile master page (basically of copy and paste) gets its computed width as 980px. Consequently, the contents gets all too small to read, while the HTML given by the design company shows nicely on mobiles.&lt;/p&gt;  &lt;p&gt;Towards the end of a fruitless day, I noticed that the DOCTYPE definitions are different.&lt;/p&gt;  &lt;p&gt;I did this mobile master page, based on that for PCs, which contains those SP controls and all. Its DOCTYPE is the usual:&lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Strict//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&amp;quot;&amp;gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;and I did not think I need to change this.&lt;/p&gt;  &lt;p&gt;One defined in the design company’s HTML is:&lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//WAPFORUM//DTD XHTML Mobile 1.0//EN&amp;quot; &amp;quot;http://www.wapforum.org/DTD/xhtml-mobile10.dtd&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;With it, my SP pages look now OK on mobiles.&lt;/p&gt;  &lt;p&gt;I am not an authority or anything. Do not know anything about the wapforum. I am writing this here just hoping that it may help you there tearing your hairs, not understanding where the hell the 980px width is coming from.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-5811641390222197151?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/5811641390222197151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=5811641390222197151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5811641390222197151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5811641390222197151'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2012/01/doctype-mobile.html' title='DOCTYPE Mobile'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7932348575467639312</id><published>2011-08-31T00:45:00.001-07:00</published><updated>2011-08-31T00:45:42.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FPSE'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS7'/><title type='text'>Migrate FrontPage web from IIS6 to IIS7.5</title><content type='html'>&lt;p&gt;After weeks of try and error, I think luckily I have archived what I wanted. Not 100% but to an acceptable level.&lt;/p&gt;  &lt;p&gt;100% is to copy everything. Users would not even notice that it is moved. But that was not possible. I could not figure out how after all. The thing missing is user permission. That, I think I would re-setup manually. At least the admins. Then ask them to deal with their colleagues.&lt;/p&gt;  &lt;p&gt;First, I write about the method that did not work for our site after all. I believe that is due to something particular with our site, which I could not figure out. I may have achieved the 100% if I could.&lt;/p&gt;  &lt;p&gt;You copy the site to your new 2008 R2 server using msdeploy tool. &lt;a title="http://learn.iis.net/page.aspx/427/migrate-a-web-site-from-iis-60-to-iis-7/" href="http://learn.iis.net/page.aspx/427/migrate-a-web-site-from-iis-60-to-iis-7/"&gt;http://learn.iis.net/page.aspx/427/migrate-a-web-site-from-iis-60-to-iis-7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You activate (“extend”) FPSE (FrontPage Server Extension) on the copied site.&lt;/p&gt;  &lt;p&gt;At this point, you realize that the FP user permission are missing. This is what you should do: &lt;a title="http://blogs.msdn.com/b/robert_mcmurray/archive/2009/10/12/migrating-fpse-roles-between-servers.aspx" href="http://blogs.msdn.com/b/robert_mcmurray/archive/2009/10/12/migrating-fpse-roles-between-servers.aspx"&gt;http://blogs.msdn.com/b/robert_mcmurray/archive/2009/10/12/migrating-fpse-roles-between-servers.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In case your site is simple enough, this is the end of the story. You have achieved the 100%. However, with our site, the server health check repair did not work. It ends with an exception, without telling me what it does not like.&lt;/p&gt;  &lt;p&gt;Giving up to copy the permission, I uninstall FPSE once then re-extend. Failed too. Stuck...&lt;/p&gt;  &lt;p&gt;Here is the workaround that I found. I cannot activate FPSE on the fully copied site. Let us then have an empty FPSE enabled site first, and then pour the actual site data into it.&lt;/p&gt;  &lt;p&gt;I created a blank web site, activate FPSE, and finally copy files from the old server with the following command.&lt;/p&gt;  &lt;p&gt;msdeploy -verb:sync -source:metakey=lm/w3svc/1551257136 -dest:metakey=lm/w3svc/2,computername=newserver -skip:objectName=dirPath,absolutePath=.+_vti.+ -skip:objectName=metakey,absolutePath=.+vti.+ -skip:objectName=metaKey,absolutePath=&amp;quot;fpexedll.dll&amp;quot;&lt;/p&gt;  &lt;p&gt;The “-skip” parts are my invention. No documentation found. They are to not to copy FP related stuff. It looks work. All webs are copied, seem working. I can create FP web on them.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7932348575467639312?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7932348575467639312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7932348575467639312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7932348575467639312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7932348575467639312'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2011/08/migrate-frontpage-web-from-iis6-to.html' title='Migrate FrontPage web from IIS6 to IIS7.5'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6297301447702798208</id><published>2011-04-14T02:49:00.001-07:00</published><updated>2011-04-27T07:54:26.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Publishing'/><category scheme='http://www.blogger.com/atom/ns#' term='FPSE'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDAV'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS7'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows2008'/><title type='text'>No real alternative yet for FrontPage Server Extension</title><content type='html'>&lt;p&gt;After days of frustrating analysis, my conclusion at the moment is to stay with the now-has-become-a-third-party-product FPSE.&lt;/p&gt;  &lt;p&gt;My requirements are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I, the server administrator, do not want to do much. I do not want to be called to intervene each time a web site is to be created. Once I have appointed developer A for admin of web site host/siteA, I do not want to have to intervene for host/siteA/siteA1 etc. Moreover, when he has got a colleague who assumes the same role as him, he could do the necessaries. &lt;/li&gt;    &lt;li&gt;Operations for developers such as managing the web site permission, deploy their codes, should be straightforward. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;With FPSE on a 2003 box, it has been near perfect. Except for one thing. No means that developers can verify if a folder is setup as “application”. They can turn a folder into an application, but cannot verify.&lt;/p&gt;  &lt;p&gt;The story started when we start thinking of upgrading our web server, currently IIS6 on 2003 box, to IIS7.5 on 2008 R2. Soon I came to know that FPSE is no more supported. There is one as a third party product, but not from MS. Not yet for IIS7.5 but it is said to become available soon.&lt;/p&gt;  &lt;p&gt;What is then the MS’s alternative? None that I can see.&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 supports the followings for code deployment.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;FPSE &lt;/li&gt;    &lt;li&gt;FTP &lt;/li&gt;    &lt;li&gt;Network share &lt;/li&gt;    &lt;li&gt;Web Deploy # Only for Web Application Projects &lt;/li&gt;    &lt;li&gt;WebDAV # Some say you could, by mapping it as (or like) a network drive. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I do not know if you agree. But to me, 2 and 3 seem going back to the stone age.&lt;/p&gt;  &lt;p&gt;4. Web Deploy should be the first choice. It is new so must be better. But some say that converting a web site project to web application is not as straightforward as you may think. In addition, it does not fulfill one of my requirements above. The server administrator has to do whole a lot!!&lt;/p&gt;  &lt;p&gt;If I setup the “Application” host/siteA for developer A, he could autonomously do the child application host/siteA/siteA1, by importing the siteA1 application with the IIS7 Remote Administration. (I so far fail to do the same with VS though) But he cannot give the permission to his colleagues by himself. It is understandable. When the server administrator setup an application, he needs to not only configure IIS Manager Permission but folder permission as well, while with FPSE you do all these in one go.&lt;/p&gt;  &lt;p&gt;Finally, 5. WebDAV too appears to have the same shortcoming, lacks the permission management delegation capability that we want. It is said “&lt;em&gt;The IIS7.* WebDAV extension module supports per-URL authoring rules, allowing administrators to specify custom WebDAV security settings on a per-URL basis.&lt;/em&gt;” But as it reads, it is for (server) administrators only. When you connect to a site or an application, with the IIS7 Remote Administration, you do not have the WebDAV Authoring Rules icon. And to connect to the server (then you have the icon), you need to be the administrator...&lt;/p&gt;  &lt;p&gt;And above all, needing to map WebDAV folders for publishing web sites from VS does not sound to me an optimum solution...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6297301447702798208?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6297301447702798208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6297301447702798208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6297301447702798208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6297301447702798208'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2011/04/no-real-alternative-yet-for-frontpage.html' title='No real alternative yet for FrontPage Server Extension'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7330109467903711177</id><published>2011-02-25T05:50:00.001-08:00</published><updated>2011-02-25T05:50:57.223-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>CSS delivered as Content-type: application/octet-stream</title><content type='html'>&lt;p&gt;I do not know if this could ever be any benefit of anybody. It could be just that there is something wrong with our servers…&lt;/p&gt;  &lt;p&gt;On our site, sometimes (it appears) CSS files are delivered to clients as Content-type set to application/octet-stream.&lt;/p&gt;  &lt;p&gt;The story starts as a few colleagues report pages are displayed ugly without styles on Firefox and Chrome. OK on IE.&lt;/p&gt;  &lt;p&gt;I found that the CSS is stored in the browser's cache as application/octet-stream. This is tricky because once you clear the cache and go to the page again, the CSS would be downloaded OK.&lt;/p&gt;  &lt;p&gt;There seems nobody having similar issue, or at least reporting to the net. I tried to come up with an own workaround.&lt;/p&gt;  &lt;p&gt;I wrote an HttpModule to verify if responses for css files are generated correctly as Content-type: text/css, and correct it if not. It writes into the log file each time it find such a problematic response. By the way, in the course of writing the module and testing it, I found that IE applies styles even if it receives the css file as application/octet-stream. This is why the problem has been reported happening only on Firefox and Chrome. Furthermore, for some css, those that SharePoint generates, you can change the Content-type (to application/octet-stream for the testing) in the MIME type configuration of IIS. However, those of our own creation, those in the /Style library folder, come as text/css, even after the change in the IIS’s MIME section. So it is SharePoint that controls it.&lt;/p&gt;  &lt;p&gt;Towards the end of the first day after the module is plugged in, the module reported that it did the Content-type correction. And a lot! We have two Web Front End in a farm. Both connect to one single Content database. Each web server generates those mal formed css responses at different timings.&lt;/p&gt;  &lt;p&gt;Each has a IISRESET scheduled job. At different times of a day, obviously. Each generates the problematic responses after the IISRESET and stops doing so when the application pool gets recycled. (it gets recycled when the memory usage reaches the threshold)&lt;/p&gt;  &lt;p&gt;Sh*t!! I should have requested pages from the server while the module there was reporting the problem!! I could have verified that my Content-type correction does the trick. No worries. It would come again, I guess…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7330109467903711177?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7330109467903711177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7330109467903711177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7330109467903711177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7330109467903711177'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2011/02/css-delivered-as-content-type.html' title='CSS delivered as Content-type: application/octet-stream'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2451596113892246546</id><published>2011-02-25T03:00:00.001-08:00</published><updated>2011-02-25T03:00:16.082-08:00</updated><title type='text'>Post from Windows Live Writer</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Let us see how it goes…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_t1Xs0qHQ2tk/TWeLvefPG-I/AAAAAAAAACE/qnlN2n2Z-TA/s1600-h/micrus%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="micrus" border="0" alt="micrus" src="http://lh4.ggpht.com/_t1Xs0qHQ2tk/TWeLvo-un6I/AAAAAAAAACI/y0jFnyaaQlI/micrus_thumb.jpg?imgmax=800" width="141" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2451596113892246546?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2451596113892246546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2451596113892246546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2451596113892246546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2451596113892246546'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2011/02/post-from-windows-live-writer.html' title='Post from Windows Live Writer'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_t1Xs0qHQ2tk/TWeLvo-un6I/AAAAAAAAACI/y0jFnyaaQlI/s72-c/micrus_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7369315037321887422</id><published>2010-12-20T05:47:00.000-08:00</published><updated>2010-12-20T07:49:27.021-08:00</updated><title type='text'>ASP:Menu SkipLink</title><content type='html'>For those who landed here looking for a solution together with the cristal clear explanation, sorry, no, I do not have one :-(&lt;br /&gt;&lt;br /&gt;Symptom.&lt;br /&gt;We have migrated our internet facing site from SharePoint 2007 to 2010. We (needed to) have redone our custom master page. We did so having the 2010 minimal masterpage &lt;a href="http://code.msdn.microsoft.com/odcSP14StarterMaster"&gt;http://code.msdn.microsoft.com/odcSP14StarterMaster&lt;/a&gt; as the basis.&lt;br /&gt;Then we found the Global Navigation menu, which uses the SharePoint:AspMenu control (I think it behaves pretty much the same as ASP:Menu), appears a little lower than it used to.&lt;br /&gt;It does so to me everywhere. I have IE8 and FF3.5 on my PC. But later realized that it is OK on their old versions; IE7 and FF1.5.&lt;a href="http://1.bp.blogspot.com/_t1Xs0qHQ2tk/TQ9oxCenb5I/AAAAAAAAABc/P6gTxEGN4Y4/s1600/visible.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The only difference is with the so-called "skip navigation link". It is visible (and thus takes some space) with the new master.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_t1Xs0qHQ2tk/TQ91HiP2USI/AAAAAAAAABk/qV7t-r-HDco/s1600/visible.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 54px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5552785637883924770" border="0" alt="" src="http://2.bp.blogspot.com/_t1Xs0qHQ2tk/TQ91HiP2USI/AAAAAAAAABk/qV7t-r-HDco/s320/visible.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It was invisible with the old master.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/TQ91p3zWuyI/AAAAAAAAABs/Qk__ww-SOEU/s1600/invisible.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 45px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5552786227785546530" border="0" alt="" src="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/TQ91p3zWuyI/AAAAAAAAABs/Qk__ww-SOEU/s320/invisible.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The above screenshots are from FireBug. But up to now, I do not know what makes it "visible" or "ïnvisible".&lt;br /&gt;&lt;br /&gt;My solution for the time being is to set DOCTYPE of the masterpage back to XHTML 1.0 Transitional. Do not ask me why...&lt;br /&gt;&lt;br /&gt;The above mentioned minimal masterpage comes as XHTML 1.0 Strict. It is pity that I had to go back "Transitional". But this is the only workaround that I so far found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7369315037321887422?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7369315037321887422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7369315037321887422' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7369315037321887422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7369315037321887422'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/12/aspmenu-skiplink.html' title='ASP:Menu SkipLink'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_t1Xs0qHQ2tk/TQ91HiP2USI/AAAAAAAAABk/qV7t-r-HDco/s72-c/visible.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-8727804614510938753</id><published>2010-12-14T01:24:00.000-08:00</published><updated>2010-12-14T06:09:49.430-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Install Perl Modules</title><content type='html'>&lt;span style="font-family:arial;"&gt;This is really my personal memo.&lt;br /&gt;I have installed a perl module for the first time in my life and actually learned a lot, so just like to keep what I did here for future reference.&lt;br /&gt;&lt;br /&gt;The command is as simple as this. There is a switch -MCPAN for the executable itself to add a module. I log the output. Again this is just for my reference.&lt;br /&gt;# perl -MCPAN -e "install Time::Period" &gt;install.perl.time.period.log 2&gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;Actually, this failed.&lt;br /&gt;It was unable to find the package, Period-1.20.tar.gz, at (in our environment) &lt;/span&gt;&lt;a href="http://cpan.mirror.fr/"&gt;&lt;span style="font-family:arial;"&gt;http://cpan.mirror.fr/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;I found the file at &lt;/span&gt;&lt;a href="http://search.cpan.org/CPAN/authors/id/P/PR/PRYAN/Period-1.20.tar.gz"&gt;&lt;span style="font-family:arial;"&gt;http://search.cpan.org/CPAN/authors/id/P/PR/PRYAN/Period-1.20.tar.gz&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. So how can I change the host (that perl goes to get packages)? You do as follows.&lt;br /&gt;&lt;br /&gt;# perl -MCPAN -e shell &lt;- go into the shell mode &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cpan shell -- CPAN exploration and modules installation (v1.61)&lt;br /&gt;ReadLine support available (try 'install Bundle::CPAN')&lt;br /&gt;&lt;br /&gt;cpan&gt; o conf urllist &lt;- show the currect host list &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;urllist &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://cpan.mirror.fr/"&gt;http://cpan.mirror.fr&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://cpan.mirror.fr/"&gt;http://cpan.mirror.fr/&lt;/a&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Type 'o conf' to view configuration edit options &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;cpan&gt; o conf urllist pop&lt;br /&gt;cpan&gt; o conf urllist pop &lt;- do this twice to remove the unwanted hosts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;cpan&gt; o conf urllist push http://search.cpan.org/CPAN/&lt;br /&gt;cpan&gt; o conf urllist push http://cpan.mirror.fr &lt;- not really care but just liked to keep what were there&lt;br /&gt;cpan&gt; o conf urllist push http://cpan.mirror.fr/&lt;br /&gt;&lt;br /&gt;cpan&gt; o conf urllist&lt;br /&gt;urllist&lt;br /&gt;http://search.cpan.org/CPAN/ &lt;- now perl tries this site first&lt;br /&gt;http://cpan.mirror.fr&lt;br /&gt;http://cpan.mirror.fr/&lt;br /&gt;Type 'o conf' to view configuration edit options&lt;br /&gt;&lt;br /&gt;cpan&gt; o conf commit&lt;br /&gt;commit: wrote /usr/lib/perl5/5.8.0/CPAN/Config.pm&lt;br /&gt;&lt;br /&gt;cpan&gt; quit&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Try the first command again, and GOTCHA!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-8727804614510938753?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/8727804614510938753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=8727804614510938753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8727804614510938753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8727804614510938753'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/12/install-perl-modules.html' title='Install Perl Modules'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2925566502713627871</id><published>2010-10-27T00:56:00.000-07:00</published><updated>2010-10-27T01:12:58.771-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='EventViewer'/><title type='text'>EventLog.WriteEntry from a ASP.NET page</title><content type='html'>The page is run as NETWORK SERVICE. I would not ask you to either change it to LOCAL SYSTEM, or put NETWORK SERVICE to the administrator group.&lt;br /&gt;The later sounds quite stupid. But a colleague of mine did find somebody proposing it as a solution on the net.&lt;br /&gt;&lt;br /&gt;The simplest code fragment that you would find at many places on the net should look like the following. I too found it on the net.&lt;br /&gt;&lt;blockquote&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        // Create the source, if it does not already exist.&lt;br /&gt;        if (!EventLog.SourceExists("hoge"))&lt;br /&gt;        {&lt;br /&gt;            //An event log source should not be created and immediately used.&lt;br /&gt;            //There is a latency time to enable the source, it should be created&lt;br /&gt;            //prior to executing the application that uses the source.&lt;br /&gt;            //Execute this sample a second time to use the new source.&lt;br /&gt;            EventLog.CreateEventSource("hoge", "Application");&lt;br /&gt;            // The source is created.  Exit the application to allow it to be registered.&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // Create an EventLog instance and assign its source.&lt;br /&gt;        EventLog myLog = new EventLog();&lt;br /&gt;        myLog.Source = "hoge";&lt;br /&gt;&lt;br /&gt;        // Write an informational entry to the event log.   &lt;br /&gt;        myLog.WriteEntry("hello world.");&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;This would not run as NETWORK SERVICE. However, there is actually only one instruction that cannot be performed with NETWORK SERVICE privilege. It is the “CreateEventSource()”. The instruction to actually write an event, WriteEntry(), runs with no problem.&lt;br /&gt;Since CreateEventSource() needs to run only once, you either take it out and run in a separate console app, or runs the above code only once as LOCAL SYSTEM then change it back to NETWORK SERVICE immediately after that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2925566502713627871?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2925566502713627871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2925566502713627871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2925566502713627871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2925566502713627871'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/10/eventlogwriteentry-from-aspnet-page.html' title='EventLog.WriteEntry from a ASP.NET page'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-804464010886481175</id><published>2010-04-28T08:17:00.000-07:00</published><updated>2010-04-28T08:21:52.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Document Library'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='MS Office documents'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>[MOSS 2007 public facing site] access to MS Office documents in Document Library</title><content type='html'>&lt;span style="font-family:arial;"&gt;I am less and less certain if this is a right product…&lt;br /&gt;This is THE most incredible and discouraging experience that I ever had with this product, which I have been working on to maintain our public internet site.&lt;br /&gt;&lt;br /&gt;First of all, MANY MANY MANY thanks to the author of this blog post.&lt;br /&gt;&lt;a href="http://www.theblackknightsings.com/RemoveLoginBoxWhenAnonymousUsersDownloadOfficeDocumentFromSharePointSite.aspx"&gt;http://www.theblackknightsings.com/RemoveLoginBoxWhenAnonymousUsersDownloadOfficeDocumentFromSharePointSite.aspx&lt;/a&gt;&lt;br /&gt;# BTW, the design is very funny. I thought it was a genuine error screen at the beginning.&lt;br /&gt;&lt;br /&gt;The explanation is very clear, and so is the code. So I went straight plugging it in to our production site.&lt;br /&gt;# I have at least compiled the DLL myself, and did a bit of test though.&lt;br /&gt;&lt;br /&gt;We know that this product i.e. SharePoint is now widely used, especially with intranets, sites for collaboration and so on, where you know the users, they are all authenticated. However, for public facing internet sites such as ours where majority of users are anonymous, there are points overlooked, including ones as obvious as this one. And we users by ourselves need to apply workarounds… Hope with the coming 2010, it comes as a WCM product fully ready for public sites.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-804464010886481175?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/804464010886481175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=804464010886481175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/804464010886481175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/804464010886481175'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/04/moss-2007-public-facing-site-access-to.html' title='[MOSS 2007 public facing site] access to MS Office documents in Document Library'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1432663090300799078</id><published>2010-04-06T14:13:00.000-07:00</published><updated>2010-04-06T14:15:51.908-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FLV Flash Video'/><category scheme='http://www.blogger.com/atom/ns#' term='H264'/><category scheme='http://www.blogger.com/atom/ns#' term='Avidemux'/><title type='text'>A day with video files</title><content type='html'>&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Nothing to do with work. Some video stuff.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Many probably knows about .fll (FLV Flash Video) file. I have got some movie files where there are some annoying discrepancy between image and sound.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;I was bored today so tried to do something with it.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;There is this famous Avidemux freeware with which you could fix this discrepancy. The latest is 5.2. It appears not yet nicely support the H264 video format.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;When it finds that your file is in the format, it popups:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; line-height: 20.0px; font: 13.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;H.264 detected&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;. If the file is using B-frames as reference it can lead to a crash or stuttering. &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Avidemux&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt; can use another mode which is safe but YOU WILL LOSE FRAME ACCURACY. Do you want to use that mode?&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;I am not at all an expert in this area, do not know what this means exactly, so went on accepting use of the "safe" mode. That appears fine. However, if you do not do what you want at this first time you open the file and close it. The popup would never come again and as the consequence, you can not open the file, unless you go to its conf file (in XML) and manually clear the history. This was the first difficulty that I encountered.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;The second thing is the sound. To adjust the sound so it goes nicely, side-by-side with the video, of course you want to see the video together with the sound in its preview mode. I use a mac at home by the way. And the latest mac version of the freeware does not seem to allow me to listen to the sound.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;I went back to a previous version, 4.4. Its handling of the sound device seems ok. Good! But then it does not yet support the audio format of my files!!!&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;So finally what I did was the following. I open each of those files with the latest, 5.2, change the audio data format to mp3, then turn to the 4.4 and shift the starting point of the sound.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;A nice holiday activity.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1432663090300799078?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1432663090300799078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1432663090300799078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1432663090300799078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1432663090300799078'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/04/day-with-video-files.html' title='A day with video files'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7792893088464431558</id><published>2010-04-01T15:13:00.000-07:00</published><updated>2010-04-01T15:18:18.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='media=&quot;print&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>media="print" and proxy</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, serif;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:12px;"&gt;&lt;span class="Apple-style-span"  style="font-size:130%;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Really strange thing happened.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;One of our developer tried to do a print-friendly rendering of a page. That is, when you print the page, logo is removed, hyperlinks is followed by their URLs written etc. A usual stuff.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;He did so using media="print" trick with CSS.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;He made it work nicely with FireFox but not on IE. Still needs some improvement, to support various browsers. That's OK. Not my business.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;The weird thing is that it behaves differently when you get the page, css everything via a proxy.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;The simplest example. If I start Fiddler to see if all come from where they are supposed to, you see it already different in the print preview...&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;You would normally suspect that some element of the page such as a css file fails to come, due to some authentication/authorization issue for instance, when you go thru the proxy. But Fiddler reports none. The key, linked as media="print", css seems downloaded OK. If the elements are the same, whether or not via proxy, it should behave in the same way...&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;After almost one day of fruitless investigation, given up... Asked him to revise it, so it works OK with IE as well, and with or without a proxy.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Mmmm...&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7792893088464431558?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7792893088464431558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7792893088464431558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7792893088464431558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7792893088464431558'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/04/mediaprint-and-proxy.html' title='media=&quot;print&quot; and proxy'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2740355525169954485</id><published>2010-02-11T08:55:00.000-08:00</published><updated>2010-02-11T09:16:31.385-08:00</updated><title type='text'>ASP.NET Menu for Arabic i.e. right-to-left pages</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Just to share, or for myself to remember this small piece of info.&lt;br /&gt;&lt;br /&gt;http://www.microsoft.com/middleeast/msdn/Asp2_menu.aspx&lt;br /&gt;&lt;br /&gt;It is becoming more and more that the key to be a good programmer is the ability to come up with a good set of keywords for the problem in hand, to type into a search engine...&lt;br /&gt;&lt;br /&gt;In this case... what did I type?&lt;br /&gt;At first, I typed something like "ASP.NET Menu right to left", whcih did not give me any useful pages.&lt;br /&gt;Then tried (already started thinking of moving to CSS adapter. No, do not want to do that. Would be quite a work...) &lt;/span&gt;&lt;span style="font-family:arial;"&gt;"ASP.NET Menu Arabic". Then, Voila! I found the above.&lt;br /&gt;&lt;br /&gt;For those who speak Arabic, it must be a well-known trick. But for us...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2740355525169954485?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2740355525169954485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2740355525169954485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2740355525169954485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2740355525169954485'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2010/02/aspnet-menu-for-arabic-ie-right-to-left.html' title='ASP.NET Menu for Arabic i.e. right-to-left pages'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-3854302073262885606</id><published>2009-10-27T09:55:00.000-07:00</published><updated>2009-10-27T10:02:13.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='BLOBCache'/><title type='text'>"The site with the id {GUID} could not be found" and BLOBCache</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;My own memo. Nothing I myself found.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Anyway it was really hard to figure out. But I was lucky that it happened in our testing environment. So I did not have to start crying yet.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The problem was the following.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I was getting “The site with the id {GUID} could not be found” error to get some css files from Style Library. But only on the extended web application, and futhermore, only when a user logs in to the site. # Our site accepts anonymous visitors too.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I re- extended the web app, re-restored the data from our production site. Nothing helped. # I did not have the problem on the production site.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As always, I went to the net for some help, a hint at least. But this time I did not think I would find anything helpful. I was believing that the content database might have been corrupted somehow, or something…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;However, there are people who had the exact same problem, and have overcome it.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/joshuag/archive/2008/05/22/filenotfoundexception-the-site-with-the-id-guid-could-not-be-found.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://blogs.msdn.com/joshuag/archive/2008/05/22/filenotfoundexception-the-site-with-the-id-guid-could-not-be-found.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This was a big help. I did not even think about the cache.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Unfortunately, however, the solution did not work for me.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;But I know now all I need to know is how to clear the cache. And found this &lt;/span&gt;&lt;a href="http://blogs.pointbridge.com/Blogs/monnette_jeff/Pages/Post.aspx?_ID=15"&gt;&lt;span style="font-family:arial;"&gt;http://blogs.pointbridge.com/Blogs/monnette_jeff/Pages/Post.aspx?_ID=15&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;More (seemingly) in depth explanation can be found at &lt;a href="http://sharepointinterface.com/2009/06/18/we-drift-deeper-into-the-sound-as-the-flush-comes/"&gt;http://sharepointinterface.com/2009/06/18/we-drift-deeper-into-the-sound-as-the-flush-comes/&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I did not have anough patience to read it throughly though…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In short, the UI does not work for a farm like ours, and the stsadm solution (&lt;a href="http://msdn.microsoft.com/en-us/library/aa622758.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa622758.aspx&lt;/a&gt;) stinks.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;We have only two front-ends. So I went for the manual flush.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-3854302073262885606?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/3854302073262885606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=3854302073262885606' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3854302073262885606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3854302073262885606'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/10/site-with-id-guid-could-not-be-found.html' title='&quot;The site with the id {GUID} could not be found&quot; and BLOBCache'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4967056429918033214</id><published>2009-07-21T06:00:00.000-07:00</published><updated>2009-07-21T06:04:04.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HttpModule'/><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Accessibility : Accessibility Kit for Sharepoint</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;There is this tool (? add-on?) exists. But after all it did not help much.&lt;br /&gt;&lt;br /&gt;You find a couple of things in the package but we were only interested in what they call HCCE (HiSoftware Compliant Code Engine) and WebZonePart controladapter.&lt;br /&gt;&lt;br /&gt;The HCCE is nothing more than a custom base class for Page Layout, and what it does is simple string replacements.&lt;br /&gt;For instance, MOSS Publishing feature generates &amp;lt;SCRIPT&amp;gt; in its output HTML, which violates XHTML. It has to be &amp;lt;script type=”text/javascript”&amp;gt;.&lt;br /&gt;It does this, the replacement in the output. But only if you specify it, exactly as above, one by one, in its config file.&lt;br /&gt;So it is not like, it does the work if you say you want to “comply” to XHTML, or HTML. “Compliant Code Engine”… Funny..&lt;br /&gt;&lt;br /&gt;And the other cr*p, WebZonePart controladapter, it is a controladapter. So as you know, it replaces with table with div.&lt;br /&gt;By default, MOSS generates lines like below for each webpart on the page. Of course it all violates standard.&lt;br /&gt;&amp;lt;td id="MSOZoneCell_WebPartWPQ3" orientation="Vertical" name="MSOZoneCell" relatedWebPart="WebPartWPQ3"…&lt;br /&gt;&lt;br /&gt;The adapter replaces those with divs. Sounds nice. But my problem was that it does not produces title and border of the part even if you configure you want them.&lt;br /&gt;Luckly, the package contains the source (not for HCCE. HCCE comes only as binary (of debug build…)). So I managed to have them back.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What still remains not OK are those XHTML not compatible codes generated mainly by Rich HTML editor.&lt;br /&gt;The HCCE’s static string replacement does not do anything for this. Here you want to replace, for instance border=0 with border=”0”. And there could be border=1, or 2, or 3, you never know…&lt;br /&gt;&lt;br /&gt;For this, I did not find any turnkey solution. However, I found a guy who solved the similar problem in a different CMS by plugging-in a httpmodule of his own.&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.codeplex.com/compfilter4umbraco"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeplex.com/compfilter4umbraco&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;He uses this library &lt;/span&gt;&lt;a href="http://www.codeproject.com/KB/dotnet/apmilhtml.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.codeproject.com/KB/dotnet/apmilhtml.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; , for basic clean-up of markup.&lt;br /&gt;&lt;br /&gt;I was not sure if I can plug-in a httpmodule to MOSS, but since I did not have any other more promising alternative, I gave it a try. And voila, it works!!&lt;br /&gt;For the module, I created it from scratch. I did not need any of logics placed specifically for the CMS. Quicker to build one from scratch than to remove those.&lt;br /&gt;But the library, thanks to the author, I did use it, although I changed it a bit.&lt;br /&gt;&lt;br /&gt;The challenge I had was that, at the beginning I had all page go thru this filter. It screwed up things.&lt;br /&gt;So, in the end, I made it so that it cleans up only contents, not part coming from masterpage. That works. This is where the rich editor generating codes appear.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4967056429918033214?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4967056429918033214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4967056429918033214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4967056429918033214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4967056429918033214'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/07/accessibility-accessibility-kit-for.html' title='Accessibility : Accessibility Kit for Sharepoint'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7458476208688202989</id><published>2009-07-18T12:31:00.001-07:00</published><updated>2009-07-18T15:12:38.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Accessibility'/><title type='text'>Accessibility : XHTML or HTML</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;The first step for an accessible site is conformance to a standard. A colleague of mine who closely follows this subject told me. It can be XHTML or HTML. Does not matter much as far as we conform to one, he added.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;Please contest me if I say something stupid, but in a word, a site created using MOSS 2007 Publishing Feature does not conform to none of the two. You can not configure it to. You have to customize it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;It is based on ASP.NET 2.0 which I believe supports XHTML more than HTML.One of the places that you clearly see it is that it inserts lines like below, which violates HTML scheme.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, fantasy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&amp;lt;input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, fantasy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;And you can not configure it to stop doing so.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;OK. Let us go for XHTML then. But, thank you MS! It violates it too...&lt;br /&gt;You can see it quite easily, just by inserting an image using its Rich HTML Editor. It generates a line like this.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, fantasy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&amp;lt;img border=0 ... &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, fantasy;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Actually, I have the impression that MOSS Publishing feature is designed(?) to create HTML sites. Its OOTB masterpage files have got HTML doctype declaration.I really do not understand why it comes out like this...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Anyway, after having tried both, I saw going for XHTML should be a realistic solution, and started customizing it. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;In a couple of posts after this, I would like to talk about the series of tricks that I employed.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, -webkit-fantasy;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Times;font-size:medium;"&gt;&lt;pre style="word-wrap: break-word; white-space: pre-wrap; "&gt;&lt;span class="Apple-style-span"  style="color:#FF6666;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"   style="color: rgb(0, 0, 0);  font-weight: normal; white-space: normal;  font-family:Georgia, fantasy;font-size:16px;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial, -webkit-fantasy;"&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Times;font-size:medium;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7458476208688202989?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7458476208688202989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7458476208688202989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7458476208688202989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7458476208688202989'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/07/accessibility-xhtml-or-html.html' title='Accessibility : XHTML or HTML'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6568912166441872955</id><published>2009-05-26T02:19:00.000-07:00</published><updated>2009-05-26T02:21:02.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='URL Rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='Reverse Proxy'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS7'/><title type='text'>IIS7 Application Request Routing</title><content type='html'>While the memory is still fresh…&lt;br /&gt;&lt;br /&gt;URL rewrite and/or Reverse Proxy on IIS.&lt;br /&gt;If I am not wrong, it was not possible up to IIS6 i.e. windows 2003, unless you buy a third party tool (which has been our case) or develop something in-house.&lt;br /&gt;Now It has got everything.&lt;br /&gt;&lt;br /&gt;I stalled the module (plug-in?) called Application Request Routing.&lt;br /&gt;One small note. When you install it with the version 1.0 installation exe, it installs also the URL Rewrite module, the version 1.0.&lt;br /&gt;It went fine on w2008, the original revision (does the R stand for Rivision?) but not on R2.&lt;br /&gt;I had to install the URL Rewrite module v1.1 separately.&lt;br /&gt;&lt;br /&gt;BTW, do we all know what CTP stand for?&lt;br /&gt;The install instruction says that I need to first uninstall the CTP1, if I have. ???&lt;br /&gt;I googled it and found that it is Community Technical Preview, I think.&lt;br /&gt;&lt;br /&gt;When I try to install the AAR (Application Request Routing), I had already URL Rewrite v1.1 installed, then found that it does not do reverse proxy.&lt;br /&gt;Since it was not the “CTP”, I did not see it written anywhere, so I went on installing AAR and failed.&lt;br /&gt;&lt;br /&gt;Anyway, once you have got it installed, the rest was quite easy. (for me. The goal that I was tasked this time was quite simple. Reverse proxy everything to a given host.)&lt;br /&gt;&lt;br /&gt;I created the server farm (of in fact the one host). A pop-up came and said that it would create the routing rule for me. It was just fine. It has turned out to be it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6568912166441872955?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6568912166441872955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6568912166441872955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6568912166441872955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6568912166441872955'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/05/iis7-application-request-routing.html' title='IIS7 Application Request Routing'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-654803922618140639</id><published>2009-04-24T00:55:00.000-07:00</published><updated>2009-04-24T00:58:09.799-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer Workflow'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom list form'/><title type='text'>Customize list form (cont.)</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;I wrote on this topic a little bit in the past.&lt;br /&gt;&lt;/span&gt;&lt;a href="http://murmurofawebmaster.blogspot.com/2008/11/customize-list-form.html"&gt;&lt;span style="font-family:arial;"&gt;http://murmurofawebmaster.blogspot.com/2008/11/customize-list-form.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;The motivation at that time was, and still is to evaluate, to see what it can, how easily, and what not.&lt;br /&gt;The thing that I picked up (some functionality of the web site to implement using this technique) was the feedback form (I have to have it anyway in one way or another).&lt;br /&gt;The challenges were:&lt;br /&gt;1. It sends an email message. The address is given.&lt;br /&gt;# The current form takes the address from QueryString. With the new SharePoint based website, you find it in the PropertyBag of each site. So idealy, depending on where a link to the feedback is clicked, when it is opened, it should already knows where to send email.&lt;br /&gt;2. An anonymous visitor can give him/her feedback.&lt;br /&gt;&lt;br /&gt;For the email, I used the SPD Workflow.&lt;br /&gt;The first prototype takes the address from QueryString, just like our current form. I do not think I can get it from the site’s PropertyBag unless I make the form as an Application Page with code behind.&lt;br /&gt;With some JavaScript, I pick up the email from QueryString and set to a field of the list. You can send a message to it from Workflow.&lt;br /&gt;Nice. Done. (I thought…)&lt;br /&gt;&lt;br /&gt;Then, I realized that I can not access the custom insert form of the list anonymously.&lt;br /&gt;After having spent sometime, I now guess that it is probably because the site being in the lockdown mode. &lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc263468.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://technet.microsoft.com/en-us/library/cc263468.aspx&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;OK, then, I can make it as a page under the Pages library.&lt;br /&gt;&lt;br /&gt;An error. “The data source control failed to execute the insert command.”&lt;br /&gt;Again spent time on the net to find someone say the following.&lt;br /&gt;“I’m finding out that the dealbreaker with anonymous access is the association with the SPD created workflow.  … Design a workflow and associate it with the list and the form will bomb any time that the workflow is initiated.”&lt;br /&gt;&lt;/span&gt;&lt;a href="http://blogs.devhorizon.com/reza/?p=498"&gt;&lt;span style="font-family:arial;"&gt;http://blogs.devhorizon.com/reza/?p=498&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;This person ended up doing it with an Application Page with code behind. I guess I would follow the path…&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-654803922618140639?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/654803922618140639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=654803922618140639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/654803922618140639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/654803922618140639'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/04/customize-list-form-cont.html' title='Customize list form (cont.)'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-3644782451144469676</id><published>2009-04-08T02:30:00.000-07:00</published><updated>2009-04-08T02:32:45.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Custom List'/><category scheme='http://www.blogger.com/atom/ns#' term='CQWP'/><category scheme='http://www.blogger.com/atom/ns#' term='Content Query Web Part'/><category scheme='http://www.blogger.com/atom/ns#' term='Page Layout'/><title type='text'>Content Query Web Part</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;My goal was to have multilingual summary links.&lt;br /&gt;I tried to implement it through the combination of custom list and content query web part.&lt;br /&gt;Our web site is in multiple languages. Image you have the OOBT summary links placed on pages in different languages, and that you update them one by one. It would be so painful for a person who does not speak the language(s). And it would br very tidious as well.&lt;br /&gt;So my idea was that I have a custom list containing all links, each marked with a language. And using content query part to filter them. For instance if it is on an Arabic page, it picks up only links marked as in Arabic.&lt;br /&gt;&lt;br /&gt;First, I defined my multiligual link content type as an inherited type of the built-in link type.&lt;br /&gt;Then I added; language column (built-in), ImageUrl column (custom) of publishing image (comes with the UI that allows my users to browse thru image libraries to select an image) and LinkSortOrder column (custom. Useful also to group links to the same contents in different languages).&lt;br /&gt;&lt;br /&gt;Next, I created a custom list of the type.&lt;br /&gt;# I do not think defining the type, and then defining it as the type of the list was required. You could have a list with those columns directly defined. It was a design choice.&lt;br /&gt;&lt;br /&gt;Then I prepared a page layout per language. Again a design choice. I may be able to have just one layout to serve all different languages.&lt;br /&gt;&lt;br /&gt;Now to customize the presentation.&lt;br /&gt;&lt;br /&gt;As you know, it is to write a XSLT code to render the XML returned from CQWP in a way you like.&lt;br /&gt;First, we want to have a look at the XML. I found a good post here &lt;/span&gt;&lt;a href="http://www.sharepointblogs.com/radi/archive/2009/03/17/content-query-web-part-getting-a-full-dump-of-the-raw-xml.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://www.sharepointblogs.com/radi/archive/2009/03/17/content-query-web-part-getting-a-full-dump-of-the-raw-xml.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;However, the challenge was to figure out how to tell the web part to use my XSL rather than the default one.&lt;br /&gt;I have the CQWP placed on a page layout, not a page. I did not find many who do this on the net. At the beginning, I did not think this export/upload was a solution to my case. I gave it a try nevertheless and found out that it is a hidden attribute. “hidden” here I mean, you do not see it by just creating an instance of the OOTB CQWP. So all you have to do is just add it manually.&lt;br /&gt;&lt;br /&gt;&amp;lt;PublishingWebControls:ContentByQueryWebPart … MainXslLink="/Style Library/XSL Style Sheets/myContentQueryMain.xsl" … &amp;gt;&lt;br /&gt;&lt;br /&gt;In the XML that I finally managed to look into, of course I do not see those columns I added. So I specified the following value to another hidden attribute.&lt;br /&gt;&lt;br /&gt;CommonViewFields="URL, URL;ImageUrl, Image"&lt;br /&gt;&lt;br /&gt;The URL is a column defined with the built-in Link type.&lt;br /&gt;To determine the types (comes after comma for each column) was a challenge too. It still is, when I do this again for other purposes.&lt;br /&gt;This document &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981241.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn.microsoft.com/en-us/library/aa981241.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; is the most explanatory that I found, but still not stisfactorily clear.&lt;br /&gt;For instance, in addition to the URL type, it says now we have another type called Link. I tried both but did not see the difference. They are the same in the XML. I think Microsoft should give us a table where we see the matching between Content Column type and type should be used in the CommonViewFields and other similar properties of CQWP…&lt;br /&gt;&lt;br /&gt;Once you have those columns you added appear in the XML, the rest is just usual XSLT coding that many already talk about on the net.&lt;br /&gt;&lt;br /&gt;After having gone thru this exercise, I think now that to deal with a custom list such as this one, a better, more beautiful way would be to have the completely own set of columns appear in the XML using yet another hidden attribute called ViewFieldsOverride. There is a nice article &lt;/span&gt;&lt;a href="http://sharepoint-tweaking.blogspot.com/2008/04/displaying-listname-and-sitename-when.html"&gt;&lt;span style="font-family:arial;"&gt;http://sharepoint-tweaking.blogspot.com/2008/04/displaying-listname-and-sitename-when.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;&lt;br /&gt;A better still would be that Microsoft, or somebody (though I would rather not to go to a third party solution) come up with a CQWP-like webpart that generates XML according to the custom list and/or content type specified. It may be difficult though, since then what I could have as the default XSL…&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-3644782451144469676?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/3644782451144469676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=3644782451144469676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3644782451144469676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3644782451144469676'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/04/content-query-web-part.html' title='Content Query Web Part'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-9127129290719659640</id><published>2009-04-01T05:55:00.000-07:00</published><updated>2009-04-01T05:58:45.793-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cache'/><category scheme='http://www.blogger.com/atom/ns#' term='Session'/><category scheme='http://www.blogger.com/atom/ns#' term='Cookie'/><title type='text'>Cache-Control: public and Session</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Recently one of our developers reported that session variables are not kept for him and asked me to look into.&lt;br /&gt;After a couple of hours of investigation, I finally came to conclude that this is probably because he set Cache-Control to public in his page.&lt;br /&gt;&lt;br /&gt;The below is my conclusion.&lt;br /&gt;When Cache-Control is set tp public with your page, it is undestood that the page is the same for everybody at any time.&lt;br /&gt;When a proxy server sees it, it caches the page, and the cookie, where your session is stored, will not reach the user browser.&lt;br /&gt;Consequently, when the user makes the next request to your server, no cookie will be sent. The server sees it as a new session.&lt;br /&gt;&lt;br /&gt;That the cookie does not reach the client is true. I do not see the Set-Cookie header in the response. I would see it if Cache-Control is set to private, the default.&lt;br /&gt;But I was surprised by two things.&lt;br /&gt;&lt;br /&gt;One: I found nobody talks specifically about this on the net. I think this is a pitfall that we could fall into easily.&lt;br /&gt;Many says that when the page requires authentication, it has to be private, without explaining why in detail. So you may not see it related.&lt;br /&gt;&lt;br /&gt;Two: By the fact that proxy strips cookie when Cache-Control is set to public.&lt;br /&gt;Mmm… Maybe… because it first caches the response and then send it to you. Anyway, it was good to know&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-9127129290719659640?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/9127129290719659640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=9127129290719659640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/9127129290719659640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/9127129290719659640'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/04/cache-control-public-and-session.html' title='Cache-Control: public and Session'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-8063262173330778276</id><published>2009-03-30T01:50:00.000-07:00</published><updated>2009-03-30T02:00:59.233-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='content type'/><category scheme='http://www.blogger.com/atom/ns#' term='Variations'/><category scheme='http://www.blogger.com/atom/ns#' term='default.aspx'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>default.aspx with custom type and layout under Variations</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Gaaa!! This was difficult and I am not still sure this was the best way.&lt;br /&gt;&lt;br /&gt;Objective was (I guess this is for everybody who uses Sharepoint Publishing portal with Variations enabled. For us, this is to support multiple languages) to have a custom content type and a page layout associated with it for default.aspx, when a subsite is created. And the subsite is propagated by Variations as it is.&lt;br /&gt;That is, you create a subsite in the source label. The default.aspx is of your custom type and layout. And you see the same on all target labels.&lt;br /&gt;&lt;br /&gt;First, to have default.aspx of a custom type and layout is achieved, by having a custom Site Definition defined and specifying it upon creation of subsites.&lt;br /&gt;&lt;br /&gt;If the objective is just this, you may not need to use a custom Site Definition.&lt;br /&gt;(Although it is a bit backdoor-way) I think we could use as well the Site Template technique. The GUI is provided. Thus, it can be done by a series of clicks.&lt;br /&gt;This was not my option because of the Variations.&lt;br /&gt;&lt;br /&gt;Suppose you create a subsite in the source label, based on a Site Template with default.aspx being of your custom type and layout.&lt;br /&gt;The propagation of default.aspx fails because the type does not match.&lt;br /&gt;This is because when Variations creates the subsite (propagation) in a target label, it does so based on the Site Template that you selected when you created the source label. It is either Publishing Site with Workflow or Publishing Site. For both, content type of default.aspx is set to Welcome Page.&lt;br /&gt;&lt;br /&gt;How to have our custom Site Template selected there? The answer that I found was to come up with a custom Site Definition.&lt;br /&gt;What I did at the beginning was rather simple. I create my definition having the BLANKINTERNET as basis, and just changed the default.aspx provisioning part so my type and layout are used. This what I have in my onet.xml.&lt;br /&gt;&lt;br /&gt;&amp;lt;Configuration ID="2"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;Modules&amp;gt;&lt;br /&gt;&amp;lt;Module Name="SubWebWelcome" /&amp;gt;&lt;br /&gt;&amp;lt;/Modules&amp;gt;&lt;br /&gt;&amp;lt;/Configuration&amp;gt;&lt;br /&gt;&amp;lt;Modules&amp;gt;&lt;br /&gt;&amp;lt;Module Name="SubWebWelcome" Url="$Resources:cmscore,List_Pages_UrlName;" Path=""&amp;gt;&lt;br /&gt;&amp;lt;File Url="default.aspx" Type="GhostableInLibrary" Level="Draft" &amp;gt;&lt;br /&gt;&amp;lt;Property Name="Title" Value="$Resources:cmscore,IPPT_HomeWelcomePage_Title;" /&amp;gt;&lt;br /&gt;&amp;lt;Property Name="PublishingPageLayout" Value="~SiteCollection/_catalogs/masterpage/mylayout.aspx, ~SiteCollection/_catalogs/masterpage/mylayout.aspx" /&amp;gt;&lt;br /&gt;&amp;lt;Property Name="ContentType" Value="mytype" /&amp;gt;&lt;br /&gt;&amp;lt;/File&amp;gt;&lt;br /&gt;&amp;lt;/Module&amp;gt;&lt;br /&gt;&lt;br /&gt;OK. Fine. Looked nice at first. But then I realized that layout is OK but not for the type. The type is Page, not “mytype”.&lt;br /&gt;&lt;br /&gt;Actually, up to this far, seems there are many doing the similar. I found blog posts discussing it.&lt;br /&gt;But I found none specifically talking of type. They seemed all happy having their custom layout with default.aspx. Do not tell what happened with the type.&lt;br /&gt;Could be my mistake, oversight somewhere. But I could not figure it out…&lt;br /&gt;&lt;br /&gt;After another sometime on the net, I found some people adding custom types to the Pages document library using Feature invoked when a site is created. I gave it a try.&lt;br /&gt;# I later found that the same can be achived using a Feature XML element (&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa543152.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn.microsoft.com/en-us/library/aa543152.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;), in which case you do not have to do any coding.&lt;br /&gt;&lt;br /&gt;Now mytype is added, after the three default types. But still, default.aspx is of type Page, not of my type.&lt;br /&gt;&lt;br /&gt;I thought that this may be because the default type of the Pages library is the Page, although it does not make sense because when we create a page thru the UI, it becomes of the type and layout we specify, not of the default type. Actually, when we do so thru the UI, we do not have to add the type first, to begin with.&lt;br /&gt;&lt;br /&gt;I looked for a way to change this default (type selected in a document library). But found no such method provided with SPList. It appears that a type is the default just because it comes at the top.&lt;br /&gt;&lt;br /&gt;So I decided to see what happens if I deleted the three build-in types, after having added mine.&lt;br /&gt;Bingo!! Now I have the default.aspx created as of my type as well as layout. And since the same definition is used when the site is created in a target label by Variations, there too, the default.aspx is of my type and layout, so the contents are properly propagated.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-8063262173330778276?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/8063262173330778276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=8063262173330778276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8063262173330778276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8063262173330778276'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/03/defaultaspx-with-custom-type-and-layout.html' title='default.aspx with custom type and layout under Variations'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6769803338675719923</id><published>2009-03-02T02:46:00.001-08:00</published><updated>2009-03-02T02:46:50.018-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZIP'/><title type='text'>Zip size limit, 32-bit and 64-bit</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Still FTP migration.&lt;br /&gt;&lt;br /&gt;Sometimes one folder is really big. Many files; each rather big. I had problems when unarchiving.&lt;br /&gt;I do not copy it here but from the error message, it seems the upzip can not find the file end.&lt;br /&gt;&lt;br /&gt;Found this page. &lt;/span&gt;&lt;a href="http://www.info-zip.org/FAQ.html#limits"&gt;&lt;span style="font-family:arial;"&gt;http://www.info-zip.org/FAQ.html#limits&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Says the actual size limit for an archive file is 2G on 32-bit and 4G on 64-bit environment.&lt;br /&gt;This explains.&lt;br /&gt;&lt;br /&gt;Actually, in my case, the target is 64-bit Windows 2008. We migrate files from a Tru64 UNIX. 4G should be big enough.&lt;br /&gt;However, the info-zip Unzip.exe that I mentioned that I have got in the last post is compiled against 32-bit DLLs, and it reads here (http://www.info-zip.org/board/board.pl?m-1235603338/) that there is no 64-bit Windows version available as of Feb 27/2009.&lt;br /&gt;It says also that I should be able to compile it and can report for any problem. I might want to try that some other time when I am bored but not now.&lt;br /&gt;&lt;br /&gt;So I used the –i and x options of zip command to include and exclude some type of file into one but not the other one, to keep one archive less than 2G.&lt;br /&gt;The mission seemed completed but in course of doing this, I have lost the time stamps of some of the files…&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6769803338675719923?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6769803338675719923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6769803338675719923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6769803338675719923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6769803338675719923'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/03/zip-size-limit-32-bit-and-64-bit.html' title='Zip size limit, 32-bit and 64-bit'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1471924711048399506</id><published>2009-02-24T04:08:00.000-08:00</published><updated>2009-02-24T05:08:29.357-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='timestamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ZIP'/><title type='text'>Copy data from UNIX to Windows, keeping structure and timestamp</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;We are migrating our FTP server from UNIX, Tru64 to a Windows box, Server 2008.&lt;br /&gt;We want to keep the structure and timestamp.&lt;br /&gt;&lt;br /&gt;First tried tar.gz, thinking that Server 2008 is smart enough to be able to handle it, without me doing any trick.&lt;br /&gt;No. It does not recognize .gz nor .tar. BTW, I did not give a try to the SUA, subsystem for UNIX-base application.&lt;br /&gt;Since it is already a production server. I wanted to do it as simply as possible. Without installing anything.&lt;br /&gt;&lt;br /&gt;I tried the GNU tar, which you do not have to really “install”, just have the executable.&lt;br /&gt;Funnily, the timestamp is not preserved. The date is OK but time changes. We can easily guess that, in which case the time is not really OK either.&lt;br /&gt;Some difference in ways to store datetime info, probably. I did not digg it further.&lt;br /&gt;&lt;br /&gt;Then went for ZIP. I should have tried it first. Both platform claim that they support it natively. It was just that I do not use it often.&lt;br /&gt;&lt;br /&gt;On UNIX, I zipped the folder structure, just normally without specifying any special option,&lt;br /&gt;&lt;br /&gt;% zip -r (resulting zipfile) (folder to archive)&lt;br /&gt;# This is just for me to remember the syntax. The man entry was not so easy to understand...&lt;br /&gt;&lt;br /&gt;copied it over to Windows, and simply did the Extract All from the Right-Click menu.&lt;br /&gt;This time, the timestamp of files are OK but not for folders. It appears that folders are created while it unarchives.&lt;br /&gt;Looking into the zip file, without extracting it, shows that the dates are there. So it is just a problem with unarchiving, not with the way the zip file is created.&lt;br /&gt;&lt;br /&gt;As far as my research goes, Windows 2008 does not seem to have a command line interface for unzip.&lt;br /&gt;I found one at &lt;/span&gt;&lt;a href="http://www.info-zip.org/Info-ZIP.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.info-zip.org/Info-ZIP.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;. Seems a dicent project. Downloaded it and finally my folder timestamps are there!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1471924711048399506?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1471924711048399506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1471924711048399506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1471924711048399506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1471924711048399506'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/02/copy-data-from-unix-to-windows-keeping.html' title='Copy data from UNIX to Windows, keeping structure and timestamp'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6734023800805146617</id><published>2009-02-17T02:06:00.000-08:00</published><updated>2009-02-17T02:07:37.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='FireBug'/><title type='text'>A small good-to-know with FireBug</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Like me, I think you like it, the FireBug. It is really nice, helpful when especilly you work with CSS.&lt;br /&gt;But have you ever been frustrated when you work on those for hyperlinks i.e. a:link, a:hover etc?&lt;br /&gt;You want to know which of the classes takes the effect when it appears on the browser, but it tells you that only when you click the element.&lt;br /&gt;But with the case with a hyperlink, when you do so, what takes the effect is that of “hover”, not that takes the effect when the page is loaded.&lt;br /&gt;&lt;br /&gt;I was very frustrated, helpless, but found out that just by coincident, after you once selected the element, if you refresh the page, it tells you the css class that takes the effect at the page load time.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6734023800805146617?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6734023800805146617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6734023800805146617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6734023800805146617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6734023800805146617'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2009/02/small-good-to-know-with-firebug.html' title='A small good-to-know with FireBug'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1119880730496546840</id><published>2008-12-04T03:54:00.001-08:00</published><updated>2008-12-04T03:54:43.846-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Business Data Catalog'/><category scheme='http://www.blogger.com/atom/ns#' term='internet facing site'/><category scheme='http://www.blogger.com/atom/ns#' term='Definition Editor'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Business Data Catalog.</title><content type='html'>&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Gaaaaa!!&lt;br /&gt;Lately Sharepoint keeps disappointing me. Here is another one.&lt;br /&gt;We can not make BDC available to anonymous users. http://support.microsoft.com/kb/948729&lt;br /&gt;Since I am using MOSS for an internet facing site, where majority of pages are supposed to be accessible anonymously, this is a big limitation.&lt;br /&gt;&lt;br /&gt;And also, I just can not find the exahusted reference listing and explaining all possible values that a Property of an element in the application definision XML can take.&lt;br /&gt;&lt;br /&gt;I expected that the BDC Definition Editor in the SDK would do the IntelliSense. But not. It just pops up a blank textbox where you have to type a valid value…&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1119880730496546840?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1119880730496546840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1119880730496546840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1119880730496546840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1119880730496546840'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/12/business-data-catalog.html' title='Business Data Catalog.'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-5099803173601983117</id><published>2008-11-14T01:36:00.001-08:00</published><updated>2009-04-23T08:50:33.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='List'/><category scheme='http://www.blogger.com/atom/ns#' term='Attachment'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Form customization'/><title type='text'>Customize list form</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;This is really still just my own memo.&lt;br /&gt;&lt;br /&gt;To redirect after submit, add ?source=URL.&lt;br /&gt;&lt;br /&gt;The official way (&lt;/span&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101191111033.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://office.microsoft.com/en-us/sharepointdesigner/HA101191111033.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) of creating a custom list form, uses the DataFormWebPart.&lt;br /&gt;It has a limitation. Attachment does not work. So it has to be disabled.&lt;br /&gt;&lt;br /&gt;There seems unsupported workaround exists. &lt;/span&gt;&lt;a href="http://cid-6d5649bcab6a7f93.spaces.live.com/blog/cns!6D5649BCAB6A7F93!130.entry"&gt;&lt;span style="font-family:arial;"&gt;http://cid-6d5649bcab6a7f93.spaces.live.com/blog/cns!6D5649BCAB6A7F93!130.entry&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;If it is just to apply the coporate masterpage, we could go just by replacing that of the default NewForm.aspx with whichever masterpage we want.&lt;br /&gt;Attachment works.&lt;br /&gt;&lt;br /&gt;BTW, NewForm.aspx uses ListFormWebPart. We can not customize it, or a very little. For instance, it seems we can not hide fields that we do not need users to fill in.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;Input validation. &lt;a href="http://rdacollab.blogspot.com/2007/07/custom-sharepoint-edit-forms-with.html"&gt;http://rdacollab.blogspot.com/2007/07/custom-sharepoint-edit-forms-with.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-5099803173601983117?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/5099803173601983117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=5099803173601983117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5099803173601983117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5099803173601983117'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/11/customize-list-form.html' title='Customize list form'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7110255866550151098</id><published>2008-11-07T08:11:00.001-08:00</published><updated>2008-11-17T02:05:37.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='VisualStudio'/><title type='text'>My first experience with Subversion</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;br /&gt;On the Subversion server, I did:&lt;br /&gt;- Create a folder for my repository, and&lt;br /&gt;- Did TortoiseSVN “Create repository here …” on the folder.&lt;br /&gt;This should be the equivalent of doing DOS&gt; svnadmin create (path to the folder).&lt;br /&gt;&lt;br /&gt;And on my PC,&lt;br /&gt;- Create a folder structure in a temporal location, in the way that I want to organize my projects like below.&lt;br /&gt;Category1\ Project1-1\ trunck&lt;br /&gt;branches&lt;br /&gt;tags&lt;br /&gt;Project1-2\ trunk&lt;br /&gt;branches&lt;br /&gt;tags&lt;br /&gt;Category2\ Project2-1\ trunk&lt;br /&gt;branches&lt;br /&gt;tags&lt;br /&gt;etc.&lt;br /&gt;- Then, import those Categories, specifying the repository’s URL i.e. http://(svn server)/svn/(repository)/.&lt;br /&gt;&lt;br /&gt;I wanted to organize projects in categories in one repository, but seems they are igonored when I imported.&lt;br /&gt;What created in the repository are only the projects, in flat structure, no categories…&lt;br /&gt;&lt;br /&gt;Then, finally I import my VisualStudio solutions and projects as follows, always on my PC.&lt;br /&gt;For each,&lt;br /&gt;- Import the VS solution, specifying this time URL of the project’s trunk folder i.e. http://(svn server)/svn/(repository)/(project)/trunk.&lt;br /&gt;# my categories were completely ignored…&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is how to make changes into those projects, and save back into svn.&lt;br /&gt;- First, I need to checkout the VS project from svn, into an empty folder of the name of the project.&lt;br /&gt;# I can not make the change directly into the project from which I did the intial import.&lt;br /&gt;- Then, make whatever modifications I need to do.&lt;br /&gt;- Next, I could verify if nobody else has changed the project in the meantime, with check for modifications, or update.&lt;br /&gt;- Finally, I commit the project.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7110255866550151098?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7110255866550151098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7110255866550151098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7110255866550151098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7110255866550151098'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/11/my-first-experience-with-subversion.html' title='My first experience with Subversion'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1194650927277637968</id><published>2008-10-07T05:52:00.000-07:00</published><updated>2008-10-07T05:55:21.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Variations'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Variations stopped</title><content type='html'>&lt;span style="font-family:arial;"&gt;I suddenly realized that the Variations has stopped copying sites and pages from the source to the targets. No recent entries in the log…&lt;br /&gt;Looked into the timer job status and difinition to find that nothing for this particular web application.&lt;br /&gt;&lt;br /&gt;I stopped it once intentionally. Unchecked the “Automatic Creation” option. Then I was believing that I had started it again by checking it back.&lt;br /&gt;&lt;br /&gt;Found this blog entry http://www.objectsharp.com/cs/blogs/max/archive/2008/02/25/missing-timer-job-definitions-after-sharepoint-move.aspx.&lt;br /&gt;Although what triggerred it is different, the situation is the same. The jobs have disappearred.&lt;br /&gt;&lt;br /&gt;I created a “cheating” publishing site collection in the web application in question. The jobs are back. Variations started again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1194650927277637968?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1194650927277637968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1194650927277637968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1194650927277637968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1194650927277637968'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/10/variations-stopped.html' title='Variations stopped'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-3598405583705549161</id><published>2008-10-01T08:42:00.000-07:00</published><updated>2008-10-01T08:43:42.883-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FlexListViewer'/><category scheme='http://www.blogger.com/atom/ns#' term='List'/><category scheme='http://www.blogger.com/atom/ns#' term='View'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>FlexListViewer</title><content type='html'>&lt;span&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://blogs.infosupport.com/porint/archive/2006/08/15/9865.aspx"&gt;http://blogs.infosupport.com/porint/archive/2006/08/15/9865.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have you ever wanted to have a list presented on a page, which resides in a site different from where you have the list?&lt;br /&gt;I believe the list and view are one of the big selling points of Sharepoint. I like them very much. On the contrary, I do not like the Content Query Web Part. Out of question.&lt;br /&gt;&lt;br /&gt;Our site is of multi-lingual. We use the Variations technique. Though there are many points of it that I am not happy. This, I believe is one of the biggest shortcomings.&lt;br /&gt;If you say to your users that they have to manage a separate list for each different language, they would laugh at you.&lt;br /&gt;&lt;br /&gt;FlexListViewer is my saviour. It allow to have a view displayed in the other site than the one the list belongs to.&lt;br /&gt;&lt;br /&gt;Better even, the source code is available. There was a small point of it that does not really fit to our need. We are in the usual, stagin -&gt; internet facing setting. We prepare pages in the staging, and the Content Deployment pushes them to the internet facing site. The out-of-box FlexListViewer, the view URL needs to be a full URL, starting with http://hostname. But in our case, that changes, in the course of deployment. So, do not want to really specify any host.&lt;br /&gt;&lt;br /&gt;Thanks to the developper, who made the source available. I modified it so if the specified URL starts with “/”, it assumes the host it is on.&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-3598405583705549161?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/3598405583705549161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=3598405583705549161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3598405583705549161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3598405583705549161'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/10/flexlistviewer.html' title='FlexListViewer'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4322848788151051915</id><published>2008-10-01T08:06:00.000-07:00</published><updated>2008-10-01T08:08:25.066-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lock down'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Extend Web application'/><category scheme='http://www.blogger.com/atom/ns#' term='Policy for Web application'/><title type='text'>Lock down the Internet facing Sharepoint site</title><content type='html'>&lt;span&gt;&lt;span&gt;&lt;span style="font-family:arial;"&gt;There is such a command, but this post is not about that. It did not seem to me what I want.&lt;br /&gt;&lt;br /&gt;I want to “lock down” the web site so nobody including me can modify it directly. We use the Content Deployment which pushes what we prepare, permission settings as well as contents, from the staging site to the internet facing site. So the modification should happen only at the staging site.&lt;br /&gt;&lt;br /&gt;I said we copy the permissions. Our web site is very di-centralized. Every part has own group of people managing it. The management includes “targetting audiences”, restricting access in other words.&lt;br /&gt;&lt;br /&gt;The solution I found is the “Policy for Web application”. It allows to say “Deny Write” for everybody.&lt;br /&gt;This is good. Now even the site collection administrators can not modify it.&lt;br /&gt;&lt;br /&gt;However then found that even the user used for the Content Deployment can not write into…&lt;br /&gt;&lt;br /&gt;Then the solution found is to Extend the Web application, and define Internet zone for the actual service, Denying Write for everybody, while keeping the Default zone still writable.&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4322848788151051915?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4322848788151051915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4322848788151051915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4322848788151051915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4322848788151051915'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/10/lock-down-internet-facing-sharepoint.html' title='Lock down the Internet facing Sharepoint site'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7016558678630008185</id><published>2008-09-05T02:35:00.000-07:00</published><updated>2008-10-01T06:22:15.861-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Passive mode'/><category scheme='http://www.blogger.com/atom/ns#' term='FTP'/><category scheme='http://www.blogger.com/atom/ns#' term='Firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS7'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows2008'/><title type='text'>Need to switch off local Firewall to allow passive mode FTP?</title><content type='html'>With IIS7, it is possible to specify a data port range of passive FTP.&lt;br /&gt;This should be a good news for some Firewall administrators.&lt;br /&gt;&lt;br /&gt;# I do not know if is was already possible with IIS6. I have never tried to have a serious FTP service on a Windows box.&lt;br /&gt;&lt;br /&gt;However, I have the impression that we can not open a range of ports with the Windows local firewall.&lt;br /&gt;Ridiculously, you can only specify a single number…&lt;br /&gt;&lt;br /&gt;OK, then what about adding a program to the exception? The deamon process servicing FTP.&lt;br /&gt;You know? With 2008, it appears that many services are running with just one executable, SVCHOST.EXE.&lt;br /&gt;So for example,&lt;br /&gt;&lt;br /&gt;C:\&gt;tasklist /SVC&lt;br /&gt;Image Name PID Services&lt;br /&gt;============================================&lt;br /&gt;…&lt;br /&gt;svchost.exe 2880 ftpsvc&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;is the one for FTP I think.&lt;br /&gt;&lt;br /&gt;But then if I try to add it to the exception, the system complains. OK, understand, it is almost the same as switching the firewall off…&lt;br /&gt;&lt;br /&gt;So, after all this, my conclusion for the moment is that we switch off the local firewall to allow (default for many FTP clients I think) FTP Passive mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Follow-up&lt;/span&gt; on October 1, 2008:&lt;br /&gt;Found a commnad to issue to “Activate firewall application filter for FTP (aka Stateful FTP) that will dynamically open ports for data connections”.&lt;br /&gt;&lt;a href="http://blogs.iis.net/jaroslad/archive/2007/09/29/windows-firewall-setup-for-microsoft-ftp-publishing-service-for-iis-7-0.aspx"&gt;http://blogs.iis.net/jaroslad/archive/2007/09/29/windows-firewall-setup-for-microsoft-ftp-publishing-service-for-iis-7-0.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7016558678630008185?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7016558678630008185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7016558678630008185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7016558678630008185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7016558678630008185'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/09/need-to-switch-off-local-firewall-to.html' title='Need to switch off local Firewall to allow passive mode FTP?'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7452037031372526834</id><published>2008-09-05T01:21:00.000-07:00</published><updated>2008-09-05T02:08:45.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Variations'/><category scheme='http://www.blogger.com/atom/ns#' term='Breadcrumb navigation'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='MOSS'/><title type='text'>Hide Root web from Breadcrumb navigation</title><content type='html'>I do not think I am the only one who suffered from this.&lt;br /&gt;If you use the Variations technique to do a multi-lingual site and you want to have a Breadcrumb navigation there.&lt;br /&gt;Then, what you get is: root web &gt; Home &gt; site1 …&lt;br /&gt;&lt;br /&gt;But actually you do not want the “root web” AT ALL.&lt;br /&gt;With the Variations, it is just a redirection to one of the Variations root, depending on language setting of the user.&lt;br /&gt;If I have my PC setup language being to French, I get: root web &gt; Accueil &gt; site1 … # “Accueil” means “Home”. It is our top page for French speakers.&lt;br /&gt;So to me, the “root web” appearing there is completely stupid.&lt;br /&gt;&lt;br /&gt;I thought it is an everybody’s problem but could not find anybody have come to solve it. I needed to find one myself. Here it is.&lt;br /&gt;&lt;br /&gt;I extended the builtin PortalSiteMapProvider, overriding its method GetParentNode() so it returns null for those Variations root node; Home, Accueil etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7452037031372526834?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7452037031372526834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7452037031372526834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7452037031372526834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7452037031372526834'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/09/hide-root-web-from-breadcrumb.html' title='Hide Root web from Breadcrumb navigation'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6998850143075646829</id><published>2008-07-09T01:23:00.000-07:00</published><updated>2008-07-09T01:25:23.333-07:00</updated><title type='text'>User security information cannot be properly imported without setting UserInfoDateTime option to ImportAll.</title><content type='html'>&lt;span style="font-family:arial;"&gt;I setup a Content Deployment between my staging and production publishing sites, and got this warning.&lt;br /&gt;&lt;br /&gt;For the Content Deployment path, I said All to Security Information. I want to deploy security information (such as ACLs, roles, and membership). This is part of our requirements.&lt;br /&gt;&lt;br /&gt;Also, unchecked Deploy user names, following &lt;/span&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc263468.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://technet.microsoft.com/en-us/library/cc263468.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;It reads “… to protect the identities of your authors, disable the Deploy user names setting when you configure the content deployment path.”&lt;br /&gt;&lt;br /&gt;Then, it turned out that the above mentioned error, or warning comes from this.&lt;br /&gt;&lt;br /&gt;I think I was luckly to find &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa981161.aspx"&gt;&lt;span style="font-family:arial;"&gt;http://msdn.microsoft.com/en-us/library/aa981161.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;The title does not sound relevent, but in the code sample, you see:&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#009900;"&gt;// Retain author name during import; change if needed&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#000099;"&gt;importSettings.UserInfoDateTime = SPImportUserInfoDateTimeOption.ImportAll;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Why in order to “Retain author name during import”, we need to set UserInfoDateTimeOption to All… Do not ask me…&lt;br /&gt;&lt;br /&gt;So I check the Deploy user names, then voila, the warning is gone.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6998850143075646829?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6998850143075646829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6998850143075646829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6998850143075646829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6998850143075646829'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/07/user-security-information-cannot-be.html' title='User security information cannot be properly imported without setting UserInfoDateTime option to ImportAll.'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1053335801997022048</id><published>2008-06-30T08:56:00.000-07:00</published><updated>2008-06-30T08:57:15.392-07:00</updated><title type='text'>Make a change to an application that uses the Data Access Layer technique</title><content type='html'>&lt;span style="font-family:arial;"&gt;I think I like this technique in general. I have to admit that the learning curve was high. But once you got used to, I think you would become liking it. Especially if you are a guy like me, who had an ASP doing everying. No “three tier”… but who on the other hand, like OO (object oriented) programming.&lt;br /&gt;&lt;br /&gt;As always with a tool like this, a RAD, it is less complicated when you create a brand-new app. But today, I need to add some new fields to the DetailView, to the database table behind.&lt;br /&gt;&lt;br /&gt;Of course, you first add the column to the database table.&lt;br /&gt;&lt;br /&gt;Then with the TableAdapter representing the table, you should first adapt the main select query. You should not add the column to the DataTable yourself. VS does that for you.&lt;br /&gt;&lt;br /&gt;When the change is saved, VS asks you whether you want the update command too adapted. You may find it useful, if you do not do anything special with the update statement, but if you do, ATTENTION, with this auto adaptation, your manual editing of the update statement will be all gone. By the way, it apapts the insert command too, when you say YES.&lt;br /&gt;&lt;br /&gt;I had the following difficulty.&lt;br /&gt;As said, I added some new columns to an existing table. One of them was a BOOLEAN field. A bit column in SQL.&lt;br /&gt;I added a CheckBox to the DetailedView for it, and got error saying unable to convert DBNull to BOOLEAN.&lt;br /&gt;&lt;br /&gt;OK. Understand. For all existing data it is NULL because I created the column to accept NULL... wait a minute… I could have set the default value…&lt;br /&gt;Anyway, I made it work by setting it to FALSE in the DAL class. First get data in the DataTable calling a GET method of the TableAdapter, then set the field to FALSE if the original value is NULL.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1053335801997022048?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1053335801997022048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1053335801997022048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1053335801997022048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1053335801997022048'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/06/make-change-to-application-that-uses.html' title='Make a change to an application that uses the Data Access Layer technique'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7946331474846055884</id><published>2008-06-19T00:30:00.000-07:00</published><updated>2008-06-19T00:34:16.739-07:00</updated><title type='text'>PointFire</title><content type='html'>&lt;span style="font-family:arial;"&gt;Still, how to do a multi-ligual site.&lt;br /&gt;&lt;br /&gt;My boss asked me to evaluate a package called PointFire. Although it turned out not really something we are looking for, it may be interesting for others who have a different set of requirements than ours. But it is not free. I myself find it a little expensive. Please ask directly the vendor about the price.&lt;br /&gt;&lt;br /&gt;It does on-the-fly translation. It is a httpmodule, so the translation covers all output, regardless where it is produced; masterpage, layout and contents.&lt;br /&gt;&lt;br /&gt;Its user guide reads that for all phrases that Sharepoint uses out-of-the-box like “My Site”, “Site Actions”, it has a built-in dictionary, so Sharepoint own navigation, configuration pages etc are translated.&lt;br /&gt;&lt;br /&gt;What do you think happens if you have the sequence of words like “Site Actions” in the middle of your contents? Nothing, no traslation, except that you tag just that two words i.e. &amp;lt;span&amp;gt;Site Actions&amp;lt;/span&amp;gt;.&lt;br /&gt;&lt;br /&gt;You “register” your own words and phrases that you want the module to translate, into a List called Multilingual Translations created when the module is activated. There I registered the original English phrase “Hello, my name is”, together with its French translation “Bonjour, je m’appele”. And the key is the same. You need to tag a phrase, for it to be translated. I did not see it written anywhere in the userguide though.&lt;br /&gt;&lt;br /&gt;Voila, mon rapport bref sur FirePoint. J’espère qu’il vous donne quelque aide… &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7946331474846055884?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7946331474846055884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7946331474846055884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7946331474846055884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7946331474846055884'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/06/pointfire.html' title='PointFire'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4490532638114018996</id><published>2008-06-18T08:26:00.000-07:00</published><updated>2008-06-18T08:28:36.568-07:00</updated><title type='text'>Re: Sharepoint Variations: Not what I am looking for?</title><content type='html'>&lt;span style="font-family:arial;"&gt;I posted this question to MSDN forum. And Below is the answer.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;“Actually when the page is published it creates a new minor version in all sub variations. It's not overwriting any translated content, because it is a different version of that page.&lt;br /&gt;It's then up to the owner of the content in that target variation to merge any changes into translated content. That's not something you can do by machine, so it's handled by versioning.”&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Yes! You are absolutely right. There, you really sometimes find what you are looking for.&lt;br /&gt;&lt;br /&gt;Then if the story is really like what I was telling you, just one typo in English, all you have to do at those target sites is to restore the previous version.&lt;br /&gt;Actually, we should not be forced to do this though… There should be a way to correct English typo without affecting others… wait a minute… there may be a way…&lt;br /&gt;I will have a look and report what I found here.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4490532638114018996?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4490532638114018996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4490532638114018996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4490532638114018996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4490532638114018996'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/06/re-sharepoint-variations-not-what-i-am.html' title='Re: Sharepoint Variations: Not what I am looking for?'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6631388444954490651</id><published>2008-06-03T06:23:00.000-07:00</published><updated>2008-06-03T06:24:16.131-07:00</updated><title type='text'>Sharepoint Variations: Not what I am looking for?</title><content type='html'>I think I am not going to use it… at least for the moment…. Disappointed very much…&lt;br /&gt;&lt;br /&gt;Before, I quoted someone saying as:&lt;br /&gt;“Changes you make to the source site will automatically appear in each target site.”&lt;br /&gt;&lt;br /&gt;Ammm… yes, maybe… but in other words, it wipes out what existed previously in the target sites….&lt;br /&gt;&lt;br /&gt;That is, OK when the page is first created, but when you then find a typo (one spelling mistake among a million of words), you correct it and re-publish.&lt;br /&gt;The tanslator is emailed, opens the page in one of the target sites to find that… all translations he/she previously did, the million of words are all gone!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6631388444954490651?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6631388444954490651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6631388444954490651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6631388444954490651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6631388444954490651'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/06/sharepoint-variations-not-what-i-am.html' title='Sharepoint Variations: Not what I am looking for?'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4175290452670303354</id><published>2008-05-27T00:49:00.000-07:00</published><updated>2008-05-27T00:51:41.433-07:00</updated><title type='text'>Reverse proxy from Sharepoint site</title><content type='html'>&lt;span style="font-family:arial;"&gt;I have been using ISAPI Rewrite 3.0 &lt;/span&gt;&lt;a href="http://www.helicontech.com/isapi_rewrite/"&gt;&lt;span style="font-family:arial;"&gt;http://www.helicontech.com/isapi_rewrite/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt; for URL rewriting at IIS.&lt;br /&gt;I think this is a great tool. Especially for those who use Apache and its Rewrite module for URL rewrite. The sysntax is the same so you can copy your httpd.conf, the part you do some URL rewrite, over to IIS and it works.&lt;br /&gt;&lt;br /&gt;It does proxy too. But unfortunately I found it not work with Sharepoint.&lt;br /&gt;This is because Sharepoint uses "Wildcard application maps". Below is extract from its help.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;"This table lists ISAPI applications that are executed before a Web file is processed, regardless of the file name extension. These ISAPI applications are called wildcard script maps. Using wildcard script maps is similar to using ISAPI filters, ..."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;I removed it and saw what happens. Bingo. My reverse proxy started working. However, now Sharepoint does not behave as before, so I had to put it back.&lt;br /&gt;&lt;br /&gt;The ISAPI_Rewrite.dll works with Sharepoint, because it is an isapi filter, so it gets the requests first.ISAPI_RewriteProxy.dll does not, because it is implemented as an isapi extension, rather than a filter.&lt;br /&gt;&lt;br /&gt;Request to .rwhlp URL. The aspnet_isapi.dll, which is registered as the wildcard map, takes and returns 404 because it does not exist…&lt;br /&gt;&lt;br /&gt;It is really sad. If the proxy too is implemented as an isapi filter, it should work well also with Sharepoint, which I believe is increasing rapidly its share in the market.&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4175290452670303354?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4175290452670303354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4175290452670303354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4175290452670303354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4175290452670303354'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/reverse-proxy-from-sharepoint-site.html' title='Reverse proxy from Sharepoint site'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-8004747891655452861</id><published>2008-05-23T02:33:00.000-07:00</published><updated>2008-05-23T02:34:47.978-07:00</updated><title type='text'>Re: Do not see the provisioned application aspx files in “Site Content and Structure”</title><content type='html'>&lt;span&gt;&lt;span style="font-family:arial;"&gt;The trick was the “type” attribute of &amp;lt;File&amp;gt; element that provisions the aspx.&lt;br /&gt;&lt;br /&gt;Previously I had something like:&lt;br /&gt;&amp;lt;Module&amp;gt;&lt;br /&gt;  &amp;lt;File Url="PageTemplate.aspx" Name="Default.aspx" Type="Ghostable"&amp;gt;&amp;lt;/File&amp;gt;&lt;br /&gt;&amp;lt;/Module&amp;gt;&lt;br /&gt;&lt;br /&gt;With this, the aspx will not appear to the browser interface. I needed to change it to Type="GhostableInLibrary".&lt;br /&gt;&lt;br /&gt;So what are the possible values and then what the use of each?&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/en-us/library/ms459213.aspx explains the attribute:&lt;br /&gt;“Optional Text. Specifies that the file be cached in memory on the front-end Web server. Possible values include Ghostable and GhostableInLibrary. Both values specify that the file be cached, but GhostableInLibrary specifies that the file be cached as part of a list whose base type is Document Library.&lt;br /&gt;When changes are made, for example, to the home page through the UI, only the differences from the original page definition are stored in the database, while default.aspx is cached in memory along with the schema files. The HTML page that is displayed in the browser is constructed through the combined definition resulting from the original definition cached in memory and from changes stored in the database.”&lt;br /&gt;&lt;br /&gt;That means that you have three choices; none (you can go without specifying any value because it is optional), Ghostable or GhostableInLibrary.&lt;br /&gt;And the use of each… Let me stop here for now. I have not found a document explaining it throughly, nor had time to experiment it myself.&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-8004747891655452861?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/8004747891655452861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=8004747891655452861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8004747891655452861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8004747891655452861'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/re-do-not-see-provisioned-application.html' title='Re: Do not see the provisioned application aspx files in “Site Content and Structure”'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1880702350749275863</id><published>2008-05-19T05:26:00.000-07:00</published><updated>2008-05-19T05:28:16.353-07:00</updated><title type='text'>Do not see the provisioned application aspx files in “Site Content and Structure”</title><content type='html'>&lt;span&gt;&lt;span style="font-family:arial;"&gt;Second post of the “ASP.NET application integration into a Sharepoint publishing portal” series.&lt;br /&gt;&lt;br /&gt;Application page’s way is fine. I think I have got what I wanted. I have now integrated one of my ASP.NET apps into the Sharepoint portal.&lt;br /&gt;Then moved onto others. There is one intranet application that I would like to integrate into our internal Sharepoint portal.&lt;br /&gt;&lt;br /&gt;With it, I implemented its own menu system, controled via a sitemap xml.&lt;br /&gt;It is access control (defined in the web.confg) trimmed. That it, a user would see only menu items that he/she has access.&lt;br /&gt;&lt;br /&gt;Once integrated, all this should be already there, provided by the portal. You do not have to implement your own.&lt;br /&gt;Easy!! I only have to locate the provisioned aspx file in the browser interface of Sharepoint and set the permission…&lt;br /&gt;&lt;br /&gt;??? I do not see it in the browser interface, on the page titled “Site Content and Structure”...&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1880702350749275863?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1880702350749275863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1880702350749275863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1880702350749275863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1880702350749275863'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/do-not-see-provisioned-application-aspx.html' title='Do not see the provisioned application aspx files in “Site Content and Structure”'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4826944365236609513</id><published>2008-05-12T06:10:00.000-07:00</published><updated>2008-05-12T06:11:35.883-07:00</updated><title type='text'>Feature for an ASP.NET application</title><content type='html'>&lt;span style="font-family:arial;"&gt;This is first post of the “ASP.NET application integration into a Sharepoint publishing portal” series.&lt;br /&gt;&lt;br /&gt;Unlike the way I deployed my CreatePage.aspx-like page (see &lt;/span&gt;&lt;a href="http://murmurofawebmaster.blogspot.com/2008/05/how-to-have-something-like.html"&gt;&lt;span style="font-family:arial;"&gt;http://murmurofawebmaster.blogspot.com/2008/05/how-to-have-something-like.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;), this time I prepare a Feature for this.&lt;br /&gt;&lt;br /&gt;The main difference (to me, at least for the moment) is the masterpage.&lt;br /&gt;With this ASP.NET app, I want to have the masterpage I prepared for my internet facing site. Therefore, it i.e. the aspx page of the app is provisioned through the Feature to the site. If it sits in the LAUOUTS folder, not provisioned into a site, it does not have the masterpage defined for the site.&lt;br /&gt;&lt;br /&gt;I did:&lt;br /&gt;1. Created an assembly implementing the code behind class as well as other helper classes. This goes to the Bin folder of the portal.&lt;br /&gt;2. The aspx now inherits a class in the assembly.&lt;br /&gt;3. A Feature to provision, instanciate the aspx to the site, when the Feature is activated.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4826944365236609513?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4826944365236609513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4826944365236609513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4826944365236609513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4826944365236609513'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/feature-for-aspnet-application.html' title='Feature for an ASP.NET application'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-9056711189731997222</id><published>2008-05-12T05:42:00.001-07:00</published><updated>2008-05-12T05:42:58.342-07:00</updated><title type='text'>ASP.NET application integration into a Sharepoint publishing portal</title><content type='html'>&lt;span style="font-family:arial;"&gt;This is not going to a one-time post to explain the A to Z, but it is really my murmur. I find the solution (I hope I could) as I find problems.&lt;br /&gt;&lt;br /&gt;It seems to be a concensus that to this i.e.  ASP.NET application integration into Sharepoint, web parts is the way to go.&lt;br /&gt;Below is an extract from a blog post.&lt;br /&gt;1. Convert each Asp.Net page into one or more Asp.Net User Controls.&lt;br /&gt;2. Deploy the controls to the ControlTemplates directory.&lt;br /&gt;3. For each page in the Asp.Net app, create a custom page layout containing its respective User Control(s).&lt;br /&gt;4. Deploy the page layouts to the target site, and create a single page instance for each page layout.&lt;br /&gt;&lt;br /&gt;But, frankly, I do not understand why. Why we go for the web parts solution.&lt;br /&gt;We can run an arbitrary aspx page (with code behind class) in a Sharepoint site. This seems simpler to me.&lt;br /&gt;&lt;br /&gt;From the next post, I will show you here the steps I took. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-9056711189731997222?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/9056711189731997222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=9056711189731997222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/9056711189731997222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/9056711189731997222'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/aspnet-application-integration-into.html' title='ASP.NET application integration into a Sharepoint publishing portal'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6185046527906461562</id><published>2008-05-09T02:09:00.000-07:00</published><updated>2008-11-12T22:26:21.178-08:00</updated><title type='text'>Charasters with accent are not displayed correctly</title><content type='html'>&lt;span style="font-family:arial;"&gt;Our site is in multiple languages. We used to use the iso-8859-1 encoding but needed to move to utf-8 to include languages which use multi-bytes characters like Chinese. But Japanese, my mother tague was not included though…&lt;br /&gt;I want to share with you today the experience, problem and the solution, that we had at the transition.&lt;br /&gt;&lt;br /&gt;One day a developper came saying that with his ASP.NET app, characters with accent are not displayed correctly.&lt;br /&gt;I looked into and found that he had the following in the masterpage that he uses by mistake. He did it copying &amp;amp; pasting from an old page.&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&amp;gt;&lt;br /&gt;&lt;br /&gt;But at the same time, he had this in the web.config because his site is also in languages with multi-byte characters.&lt;br /&gt;&amp;lt;globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/&amp;gt;&lt;br /&gt;&lt;br /&gt;We correceted the mistake.&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&lt;br /&gt;But the accents still do not come. We spent time looking for hints on the net, and found that the file itself was saved in iso-8859-1.&lt;br /&gt;&lt;br /&gt;Visual Studio saved it in iso-8859-1 at the beginning because the materpage it i.e. the aspx file refers to has this.&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /&amp;gt;&lt;br /&gt;&lt;br /&gt;And it does not change it i.e. does not re-saves the file in the new character encoding, even after the mistake is corrected.&lt;br /&gt;We have to explicitely re-save it in the correct encoding. Here is how to.&lt;br /&gt;&lt;br /&gt;You go to “Save as” in the File menu, click the small arrow next to the Save button and choose “Save with Encoding…”.&lt;a href="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJKHgCwI/AAAAAAAAAAM/Jt1rMQzllLo/s1600-h/save_with_encoding.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5198353694506093314" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJKHgCwI/AAAAAAAAAAM/Jt1rMQzllLo/s320/save_with_encoding.JPG" border="0" /&gt;&lt;/a&gt;&lt;/span&gt; &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And choose Unicode on the window opened. # That ISO comes originally tells us that the file is in ISO now.&lt;a href="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJKHgCxI/AAAAAAAAAAU/gy7PnUIyxx8/s1600-h/advanced_save_iso.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5198353694506093330" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJKHgCxI/AAAAAAAAAAU/gy7PnUIyxx8/s320/advanced_save_iso.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJaHgCyI/AAAAAAAAAAc/DmIri4ISgfw/s1600-h/advanced_save_utf8.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5198353698801060642" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJaHgCyI/AAAAAAAAAAc/DmIri4ISgfw/s320/advanced_save_utf8.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6185046527906461562?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6185046527906461562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6185046527906461562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6185046527906461562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6185046527906461562'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/charasters-with-accent-are-not.html' title='Charasters with accent are not displayed correctly'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_t1Xs0qHQ2tk/SCRDJKHgCwI/AAAAAAAAAAM/Jt1rMQzllLo/s72-c/save_with_encoding.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-5870372699669948224</id><published>2008-05-02T04:51:00.000-07:00</published><updated>2008-05-02T04:57:20.754-07:00</updated><title type='text'>How to have something like _layout/CreatePage.aspx of our own</title><content type='html'>Recently I learnt rather many things thanks to a kind guy I met at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MSDN&lt;/span&gt; forum, and one of which is this; how to have something like _layout/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CreatePage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;aspx&lt;/span&gt; of your own.&lt;br /&gt;&lt;br /&gt;My motivation behind was the following.&lt;br /&gt;I want to have some properties defined with sites. In the very much same sense that we have custom columns, or fields with content types.&lt;br /&gt;I guess many has the same demand.&lt;br /&gt;&lt;br /&gt;I thought that an application page could do, and this is going to be very similar to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CreatePage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;aspx&lt;/span&gt; in the following sense.&lt;br /&gt;- Invoked from the Site Actions menu, and&lt;br /&gt;- Invoked under each site’s context and does what it is supposed to do for the site.&lt;br /&gt;Therefore, the URL has to be http://host/(path to the site)/_layout/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;theAppPage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;aspx&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;To do so, you have the manifest.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;xml&lt;/span&gt; as below.&lt;br /&gt;&amp;lt;Solution&amp;gt;&lt;br /&gt;&amp;lt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TemplateFiles&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;TemplateFile&lt;/span&gt; Location="LAYOUTS\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;theAppPage&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;aspx&lt;/span&gt;" /&amp;gt;&lt;br /&gt;&amp;lt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;TemplateFiles&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;/Solution&amp;gt;&lt;br /&gt;&lt;br /&gt;When deployed, this will create the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;aspx&lt;/span&gt; file into the C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS folder, and it becomes available at a URL like above.&lt;br /&gt;&lt;br /&gt;Cool!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-5870372699669948224?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/5870372699669948224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=5870372699669948224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5870372699669948224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/5870372699669948224'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/how-to-have-something-like.html' title='How to have something like _layout/CreatePage.aspx of our own'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2807012713474933902</id><published>2008-05-02T04:20:00.000-07:00</published><updated>2008-05-02T04:31:08.846-07:00</updated><title type='text'>How to get error detail with SharePoint</title><content type='html'>&lt;a href="http://www.keirgordon.com/2007/02/sharepoint-error-detail.html"&gt;&lt;span style="font-family:arial;"&gt;http://www.keirgordon.com/2007/02/sharepoint-error-detail.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Let me copy it here too, since the above may one day become unavilable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;In addition to &amp;lt; customerrors mode="Off"/&amp;gt;, which everybody including me could guess, you have to do &amp;lt;SafeMode CallStack="true"&amp;gt;&lt;safemode callstack="true"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2807012713474933902?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2807012713474933902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2807012713474933902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2807012713474933902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2807012713474933902'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/05/how-to-get-error-detail-with-sharepoint.html' title='How to get error detail with SharePoint'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-8414867474382352974</id><published>2008-04-30T05:15:00.000-07:00</published><updated>2008-04-30T05:48:28.845-07:00</updated><title type='text'>“please wait while scripts are loaded…”</title><content type='html'>&lt;span style="font-family:arial;"&gt;I really need to write this… I spent, wasted more than one full day just to sort this small thing…&lt;br /&gt;&lt;br /&gt;We implement our corporate page template into a MOSS &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;masterpage&lt;/span&gt;.&lt;br /&gt;Copy and paste the html code. Try it first with a blank page layout, not even the page content area. Fine. Looks good and easy.&lt;br /&gt;&lt;br /&gt;Add the page content field to the center of layout, to start with.&lt;br /&gt;This time, after creating a content page based on the layout, we type in some text into the page content area at the center.&lt;br /&gt;Do the Preview from the Tools menu. The text I typed DISAPPEAR!! Try to save without previewing. The same. The text is gone… From here, my long debugging exercise started.&lt;br /&gt;&lt;br /&gt;It is fine without our page template, the HTML code pasted into the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;masterpage&lt;/span&gt;.&lt;br /&gt;With the template, I noticed that when change the page to edit mode, the status bar of the browser reads “please wait while scripts are loaded…”&lt;br /&gt;Looks something going wrong with javascript codes generated.&lt;br /&gt;&lt;br /&gt;A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Sharepoint&lt;/span&gt; generated page contains tens of thousand lines of javascript. You need a debugger like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;FireBug&lt;/span&gt; to debug this.&lt;br /&gt;We need to either 1 authenticate FireFox against &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Sharepoint&lt;/span&gt; or 2 find a good javascript debugger for IE. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;Luckily&lt;/span&gt; I found the later.&lt;br /&gt;&lt;br /&gt;Thanks god! The debugger found the line causing the error. It was in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;js&lt;/span&gt; file called /_layout/1033/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;HtmlEditor&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;js&lt;/span&gt;, at its line 5772.&lt;br /&gt;&lt;br /&gt;var &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;displayContentElement&lt;/span&gt;=document.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;getElementById&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;clientId&lt;/span&gt;+"_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;displayContent&lt;/span&gt;");&lt;br /&gt;…&lt;br /&gt;var &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;findForm&lt;/span&gt;=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;displayContentElement&lt;/span&gt;;&lt;br /&gt;while (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;findForm&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;tagName&lt;/span&gt;!="FORM" &amp;amp;&amp;amp; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;findForm&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;tagName&lt;/span&gt;!="WINDOW")&lt;br /&gt;{&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;findForm&lt;/span&gt;=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;findForm&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;parentElement&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;findForm&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;attachEvent&lt;/span&gt;("&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;onsubmit&lt;/span&gt;",new Function("RTE2_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;TransferContentsToTextArea&lt;/span&gt;('"+&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;clientId&lt;/span&gt;+"');"));&lt;br /&gt;&lt;br /&gt;At &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_27"&gt;run time&lt;/span&gt;, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;clientId&lt;/span&gt;+"_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;displayContent&lt;/span&gt;” is the id of &amp;lt;div&amp;gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;element for the page content &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;textarea&lt;/span&gt;. This code adds an event handler for the form submission, to save the text typed. However, with our page template pasted, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;findForm&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;parentElement&lt;/span&gt; does not return. It can not find the &amp;lt;form id=”aspnetForm”&amp;gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;element to add the event handler. Why?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I had the impression that it is probably the &amp;lt;form&amp;gt; &lt;/span&gt;&lt;span style="font-family:arial;"&gt;element for the search box that we have with the page template, though it does not really make sense because it is properly closed, should not interfere others.&lt;br /&gt;But it was it. Having removed it, my simple page with our corporate page template now works. We think about how to have the search box back later.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To me, the lesson here is that, if you are not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_33"&gt;lucky&lt;/span&gt; and trapped with a problem such as this, it is really difficult to debug it with Sharepoint MOSS.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-8414867474382352974?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/8414867474382352974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=8414867474382352974' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8414867474382352974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/8414867474382352974'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/please-wait-while-scripts-are-loaded.html' title='“please wait while scripts are loaded…”'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4980004555726507044</id><published>2008-04-29T01:37:00.000-07:00</published><updated>2008-07-09T00:34:12.302-07:00</updated><title type='text'>Feature and Solution, why we need them?</title><content type='html'>&lt;span style="font-family:arial;"&gt;A Feature is a customization unit that you could activate on a selective unit of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SharePoint&lt;/span&gt;; a site, a web application, a farm etc. And Solution is packaging framework for Features.&lt;br /&gt;&lt;br /&gt;Actually, some built-in “features” of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SharePoint&lt;/span&gt; are delivered to you as Features.&lt;br /&gt;Built-in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;masterpages&lt;/span&gt; and layouts for Publishing portal for instance are found at C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PublishingLayouts&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MasterPages&lt;/span&gt;\.&lt;br /&gt;&lt;br /&gt;Likewise, if you create a Solution package containing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;masterpage&lt;/span&gt; you designed as a Feature, you could deploy it (quite easily indeed) to other instance of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SharePoint&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;What happens if you do NOT use Feature and Solution? Your customizations? Content types you created with the browser-based interface, layouts you designed with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SharePoint&lt;/span&gt; Designer etc?&lt;br /&gt;&lt;br /&gt;Answer (at least of the moment) is that customization done in that way i.e. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;thru&lt;/span&gt; browser and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;SPD&lt;/span&gt;, goes into database, from which you can not extract and deploy them selectively to other instances of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;SharePoint&lt;/span&gt;. For example, you design your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;masterpage&lt;/span&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SPD&lt;/span&gt;, to database. You can not make it available to other instances of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;SharePoint&lt;/span&gt; than the one you created it against, unless you copy and paste the codes manually.&lt;br /&gt;&lt;br /&gt;Even worse for contents types. You can not do any copy and paste with them.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;For Features, you define them in XML. There are the schema defined.&lt;br /&gt;However, what is painful is that you have to do this all manually. There is no tool yet available to generate them from content database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Having said that, I do not know if this would be a (major) problem for people like us who maintain own web sites, not consultants or anything who develop solutions for clients.&lt;br /&gt;We have a staging site and production site. Between, we establish Content Deployment job(s). It has been already proven that this “publishes” &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;masterpages&lt;/span&gt; and layouts too; everything necessary for content pages to appear correctly, except for assemblies and other file-based customization.&lt;br /&gt;So, what’s wrong if we do all customization to the staging site using browser interface and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;SPD&lt;/span&gt; and they all appear nicely on the production site, without having to worry about deployment etc?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;And even, I now wonder if we still need this old "staging site and production site" concept, structure or whatever you may call it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SharePoint&lt;/span&gt; presents a page differently, approved version, draft etc. depending on who you are, where you come from. We might go with just one site.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;We may still need the (BROKEN according to many) Content Deployment framework though to distribute contents among servers in a farm. I have not looked into this yet. Will share with you the experience once I had.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:#ff0000;"&gt;Follow-up&lt;/span&gt; on July 7 2008:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;No, you do not need to setup a Content Deployment to sync contents among a farm.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;Actually, it it nothing but obvious. For a farm, you have just one content database (per web application). All web servers in the farm connect to it. You do not need to synchronize anything.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4980004555726507044?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4980004555726507044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4980004555726507044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4980004555726507044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4980004555726507044'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/feature-and-solution-why-we-need-them.html' title='Feature and Solution, why we need them?'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2610026353500088092</id><published>2008-04-28T00:44:00.000-07:00</published><updated>2008-04-28T00:49:20.166-07:00</updated><title type='text'>Content Deployment “Timed Out”</title><content type='html'>&lt;span style="font-family:arial;"&gt;When gone into daylight saving time (DST: this is really IT guys nightmare…) at 2am March 30th 2008, the content deployment stopped working. The result was always “Timed Out”. BTW, to find this, that it may be because of the time change, it took days already….&lt;br /&gt;&lt;br /&gt;I found this hotfix &lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/938663/"&gt;&lt;span style="font-family:arial;"&gt;http://support.microsoft.com/kb/938663/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;SharePoint’s own timer service, or shceduler, is so smart that it does not notice the time change. Please… Thus, a job scheduled to run at 8am, will not run till 9. When it finally runs, it is already “timed out.”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Since the hotfix in question (&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/938535/"&gt;&lt;span style="font-family:arial;"&gt;http://support.microsoft.com/kb/938535/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;) is included (&lt;/span&gt;&lt;a href="http://support.microsoft.com/kb/942390"&gt;&lt;span style="font-family:arial;"&gt;http://support.microsoft.com/kb/942390&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;), decided to go for SP1 instead.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;One more final remark. Description of the hotfix reads as follows.&lt;br /&gt;&lt;em&gt;“The Windows SharePoint Timer service does not update its internal time when Microsoft Windows makes the transition from standard time to DST or from DST to standard time. Therefore, after you apply this hotfix, you must restart the Windows SharePoint Timer service after &lt;span style="color:#ff0000;"&gt;each transition from standard time to DST and after each transition from DST to standard time.&lt;/span&gt; If you do not restart the Windows SharePoint Timer service, timer jobs that you schedule may be delayed. Or, they may fail.”&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2610026353500088092?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2610026353500088092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2610026353500088092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2610026353500088092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2610026353500088092'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/content-deployment-timed-out.html' title='Content Deployment “Timed Out”'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-6379701941922455511</id><published>2008-04-24T09:20:00.000-07:00</published><updated>2008-04-25T01:10:25.300-07:00</updated><title type='text'>Web Statistics; NetIQ WebTrends vs Awstats</title><content type='html'>&lt;span style="font-family:arial;"&gt;The organisation I work for uses NetIQ WebTrends.&lt;br /&gt;We bought it some years back and have not upgraded it ever since, so I do not know its latest version. The version we use is its eBuisiness edition, version 6.1.&lt;br /&gt;&lt;br /&gt;The first thing I noticed was the long time it requires to process log data, especially after we enabled the geographical analysis. Several minutes for just one day.&lt;br /&gt;Our site is a rather busy site, had 1,952,538 hits on Monday for instance, which means you have such number of records in a log file to process. # Actually, it first has to unzip it. This takes some time already.&lt;br /&gt;So it may sound understandable, you may even think it is doing a good job and ask what is the problem.&lt;br /&gt;&lt;br /&gt;The problem is that it needs to process the log files, each time you create a new “profile”, to analyze a new thing.&lt;br /&gt;With a profile, you define the “filter” among other things. A filter typically is a URL path, of which you want to have statistics.&lt;br /&gt;For example, this blogger.com server hosts many sites including mine, murmurofawebmaster.blogspot.com. To prepare access statistics of my site, you have to “filter” accesses to this site from the whole gigantic blogger.com server log data.&lt;br /&gt;&lt;br /&gt;Imagine that you are towards end of the year, and need to prepare statistics for one particular URL, of the whole year.&lt;br /&gt;For me, it takes even like 3 days. Today, people will not understand that, they will think you are damn.&lt;br /&gt;&lt;br /&gt;So we looked at possible alternatives, namely Awstats. I think WebTrends and Awstats are the most famous two in this domain of web log analysis.&lt;br /&gt;&lt;br /&gt;First, we listed points that we like and dislike WebTrends.&lt;br /&gt;Good points/Advantage:&lt;br /&gt;G1. Delegation of management&lt;br /&gt;G2. Present geographical distribution of access&lt;br /&gt;&lt;br /&gt;Points we dislike:&lt;br /&gt;B(ad)1. A “profile” has to be created in order to see statistics of a subsite independently&lt;br /&gt;B2. Take time for a profile to be ready to be seen&lt;br /&gt;A colleague even said that the way we use it is probably wrong, and there should be a way to make it ready instantly.&lt;br /&gt;B3. The way the profiles are presented/organized. They are just being added chaotically…&lt;br /&gt;B4. Really a black box. An analysis fails without a trace of why it failed.&lt;br /&gt;B5. For something not documented, or that you can not find the explanation, now stuck, because of no valid license. # We decided not to keep its support contract.&lt;br /&gt;&lt;br /&gt;Awstats. A perl based freeware.&lt;br /&gt;G1: There is no concept of delegation of management. You administrator need to edit its text config file. -&gt; Disadvantage&lt;br /&gt;G2: Its documentation says possible. But I did not try. The environment I used for this evaluation misses not just one but several required perl libraries. -&gt; Let us say Equal&lt;br /&gt;&lt;br /&gt;B1, B2 and B3 -&gt; Equal, or WebTrends is slightly better to me.&lt;br /&gt;I think processing of log data is a time consuming task with all packages in general.&lt;br /&gt;I fed just one day log to Awstats and it took some time (like 10min or so, even more) for it to “digest” even that.&lt;br /&gt;&lt;br /&gt;And to have statistics for a subsite, just like with WebTrends, you have to have the specific “profile”, process the log data against the profile and have the result in a separate data store, a database of some sort.&lt;br /&gt;&lt;br /&gt;The main difference I found between WebTrends and Awstats with respect to ways to handle series of log data is the following.&lt;br /&gt;With Awstas, it is your responsibility to make sure not to feed it with the same data twice. I think this can be a bit tricky especially when you want to (re-)analyze all past logs. You yourself have to do some programming to achieve this. It is only simple when you feed logs as they are created.&lt;br /&gt;On the other hand, WebTrends remember the full path of log files it has already processed. Therefore, you normally specify a folder and tell it to process everything there. Very simple too when processes all log of this year, today for instance.&lt;br /&gt;&lt;br /&gt;B4 and B5 -&gt; Equal&lt;br /&gt;We can not really tell, until we seriously start using it, whether the Awstats is robust, a good set of info for trouble shooting are handy etc.&lt;br /&gt;However, in case of a problem, as with the case with other popular open source packages, I think we could find on the net, people already had that problem and overcome.&lt;br /&gt;With WebTrends, on the contrary, we can not rely on the net. But if you have the support contract, the support guys are there to help you out of whatever problem.&lt;br /&gt;&lt;br /&gt;In short, we did not see any significant gain we could have with Awstats, that we do not have with WebTrends. So we decided to stay with WebTrends. We have been using it for some years already (though with some un-satisfaction), and thus we have some level of understanding, know-how, experience etc with it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-6379701941922455511?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/6379701941922455511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=6379701941922455511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6379701941922455511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/6379701941922455511'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/web-statistics-netiq-webtrends-awstats.html' title='Web Statistics; NetIQ WebTrends vs Awstats'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-7499637956359054866</id><published>2008-04-24T01:47:00.000-07:00</published><updated>2008-04-24T01:48:59.980-07:00</updated><title type='text'>Google Analytics</title><content type='html'>&lt;span style="font-family:arial;"&gt;How many visitors do I have? Looks like this blogger.com does not tell me that.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;So I decided to try the Google Analytics. Luckly blogger.com does allows us to insert the required javascript snippets into our blogs.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;So far (as anticipated) number of hit I have with this site is really, really small. I need to put more interesting stuff here to draw your attention.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-7499637956359054866?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/7499637956359054866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=7499637956359054866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7499637956359054866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/7499637956359054866'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/google-analytics.html' title='Google Analytics'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-1320057320505833722</id><published>2008-04-22T08:55:00.000-07:00</published><updated>2008-04-22T08:59:43.067-07:00</updated><title type='text'>Cynthia Says</title><content type='html'>&lt;span style="font-family:arial;"&gt;This morning I went to a workshop. It is about to make web site accessible to people with disabilitty.The presentor was Cynthia of &lt;/span&gt;&lt;a href="http://www.cynthiasays.com/"&gt;&lt;span style="font-family:arial;"&gt;http://www.cynthiasays.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, looks like a very famous person in this area.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;I have worked on the topic a little already. My boss asked me to go through the W3C standard and do a summary.It is about stop using &amp;lt;table&amp;gt; to layout the page, or put the labels properly to all input fields of your form etc.&lt;br /&gt;&lt;br /&gt;So not many new things came out today’s session. Still, I picked up these interesting from the Q&amp;amp;A session.&lt;br /&gt;&lt;br /&gt;PDF is a image, not readable by screen readers.&lt;br /&gt;There are some improvement made by Adobe recently but it is still basically a snapshot image of a document.This is really new to me. I was thinking that it is more like PostsScript than snapshot.&lt;br /&gt;&lt;br /&gt;As you may have heard, the Captcha technique is becoming an issue in this context. Our site uses it too.&lt;br /&gt;Today, she presented a couple of possible solutions to it, which include to have audio file next to it. Sounds cool to me.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-1320057320505833722?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/1320057320505833722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=1320057320505833722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1320057320505833722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/1320057320505833722'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/cynthia-says.html' title='Cynthia Says'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-3990669454500642036</id><published>2008-04-18T04:54:00.000-07:00</published><updated>2008-04-18T05:01:13.236-07:00</updated><title type='text'>Massive SEO poisoning</title><content type='html'>&lt;span style="font-family:arial;"&gt; The story started this blog post. &lt;/span&gt;&lt;a href="http://ddanchev.blogspot.com/2008/04/unicef-too-iframe-injected-and-seo.html"&gt;&lt;span style="font-family:arial;"&gt;http://ddanchev.blogspot.com/2008/04/unicef-too-iframe-injected-and-seo.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;A guy in the organization I work for, who can be noisy at times, happens to be a subscriber of the feed and bought this to our attentions.&lt;br /&gt;I am the webmaster there, officially titled to be so. So I have to do, or say at least something, when things are brought up this way.&lt;br /&gt;&lt;br /&gt;I read the post, hard to understand. Frankly, I do not know if I got the full idea still.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SEO&lt;/span&gt; (I did not know the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;abbreviation&lt;/span&gt;) seemingly stands for Search Engine Optimization. In short, in this context, it points to the fact that search engines give higher ranking to pages from “high profile sites”.&lt;br /&gt;&lt;br /&gt;Then, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IFRAME&lt;/span&gt; injection (I did not know that this was getting that popular either) basically is to inject &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;malicious&lt;/span&gt; contents using the well-known &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XSS&lt;/span&gt; (Cross Site Scripting) vulnerability.&lt;br /&gt;&lt;br /&gt;So I said to the guy that for our site, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XSS&lt;/span&gt; was looked into, so we are safe. In reality, you can not be really safe. But you need sometime to be diplomatic, bureaucratic…&lt;br /&gt;&lt;br /&gt;The one thing I still do not really get is that, then how to have those injected URLs indexed by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;google&lt;/span&gt;.&lt;br /&gt;According to some posts I found on the net, those &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;malicious&lt;/span&gt; guys publish millions of pages tagged with keywords, where they have links to those injected URLs. Google robot comes and is tricked that the injected URLs mentioned at many place for those keywords. It indexes it with a high ranking because it is from a “high profile site”.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-3990669454500642036?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/3990669454500642036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=3990669454500642036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3990669454500642036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/3990669454500642036'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/massive-seo-poisoning.html' title='Massive SEO poisoning'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-4133343133011113619</id><published>2008-04-17T02:17:00.000-07:00</published><updated>2008-04-17T02:19:41.733-07:00</updated><title type='text'>FTP : Active vs. Passive</title><content type='html'>&lt;span style="font-family:arial;"&gt;I keep forgetting this but the occasions I need to understand it keep coming back. Like when I programmed a simple FTP web-based client (I expected I could find a free AJAXed control or something like that, but could not) or help our network guys to do some maintenance. So let me have a brief summary of things good to know/remember so that I do not have to google it yet again…&lt;br /&gt;&lt;br /&gt;This is really nice summary I found at http://www.cert.org/tech_tips/ftp_port_attacks.html.&lt;br /&gt;&lt;em&gt;“A client opens a connection to the FTP control port (port 21) of an FTP server. So that the server will be later able to send data back to the client machine, a second (data) connection must be opened between the server and the client.&lt;br /&gt;&lt;br /&gt;To make this second connection, the client sends a PORT command to the server machine. This command includes parameters that tell the server which IP address to connect to and which port to open at that address - in most cases this is intended to be a high numbered port on the client machine.&lt;br /&gt;&lt;br /&gt;The server then opens that connection, with the source of the connection being port 20 on the server and the destination being the port identified in the PORT command parameters.&lt;br /&gt;&lt;br /&gt;The PORT command is usually used only in the "active mode" of FTP, which is the default. It is not usually used in passive (also known as PASV [2]) mode. Note that FTP servers usually implement both modes, and the client specifies which method to use [3].”&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Then what is the passive mode? I think this is compact and quick to read but detailed enough, from http://slacksite.com/other/ftp.html#passive.&lt;br /&gt;&lt;em&gt;“In order to resolve the issue of the server initiating the connection to the client a different method for FTP connections was developed. This was known as passive mode, or PASV, after the command used by the client to tell the server it is in passive mode.&lt;br /&gt;&lt;br /&gt;In passive mode FTP the client initiates both connections to the server, solving the problem of firewalls filtering the incoming data port connection to the client from the server. When opening an FTP connection, the client opens two random unprivileged ports locally (N &gt; 1023 and N+1). The first port contacts the server on port 21, but instead of then issuing a PORT command and allowing the server to connect back to its data port, the client will issue the PASV command. The result of this is that the server then opens a random unprivileged port (P &gt; 1023) and sends the PORT P command back to the client. The client then initiates the connection from port N+1 to port P on the server to transfer data.”&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-4133343133011113619?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/4133343133011113619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=4133343133011113619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4133343133011113619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/4133343133011113619'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/ftp-active-vs-passive.html' title='FTP : Active vs. Passive'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8457662892362572895.post-2180114834884835899</id><published>2008-04-16T07:48:00.000-07:00</published><updated>2008-04-16T07:58:19.207-07:00</updated><title type='text'>Develop custom authentication module</title><content type='html'>Last week, I enjoyed developping a DNN module specific to our own need.&lt;br /&gt;I do not know how I can best describe it but… the DotNetNuke seems to be a rich framework that we can develop our own customizations on top.&lt;br /&gt;&lt;br /&gt;Things, or facilities it exposes for our use inlucde the ease in having properties of the module.&lt;br /&gt;Each module has the end-user interface and configuration interface for the admins to set it up.&lt;br /&gt;You design the configuration interface, listing textbox, checkbox etc for properties of your module. And in the code behind class, you override one method which is called when the admin, after filling those textbox, checkbox etc, clicks the link to save the config change.&lt;br /&gt;&lt;br /&gt;I mean, for all these, I do not have to worry about. The framework is there.&lt;br /&gt;What you have to do is just to, taking one of the exsting modues as sample, change the design of the config or enduser intergface or both user controls, and code the event handler method(s).&lt;br /&gt;&lt;br /&gt;In addition to that, there are fuctions provided by the framework to save and pick up the value given to a property, into and from database.&lt;br /&gt;&lt;br /&gt;I do not know if all this is documented somewhere in a publicly available document. Will let you know if I found it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8457662892362572895-2180114834884835899?l=murmurofawebmaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://murmurofawebmaster.blogspot.com/feeds/2180114834884835899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8457662892362572895&amp;postID=2180114834884835899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2180114834884835899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8457662892362572895/posts/default/2180114834884835899'/><link rel='alternate' type='text/html' href='http://murmurofawebmaster.blogspot.com/2008/04/develop-custom-authentication-module.html' title='Develop custom authentication module'/><author><name>kazutsugu</name><uri>http://www.blogger.com/profile/13641887351127909726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
