Dominik Juszczyk Technical blog

5Oct/102

Windows Azure – introduction and general thoughts

Last week I read post blog by Daniel Berg about running EPiServer CMS on Azure platform. I got interested :) I started reading about it. Also I had possibility to attend the presentation about Azure by Dawid Chappell on MTS  conference in Warsaw (Microsot Technology Summit - The Windows Azure Platform - A perspective).  I want to share with you some of the things I learned.

Most of the things about Azure you can learn from that article - Introducing Windows Azure by Dawid Chappell and this video - Conversations with David Chappell about Windows Azure and Cloud Computing. I won't write about the architecture and the feature of the Azure - you can read it in the article I mentioned (it is described very well there). I want to hightlight three things:

  • the most common scenarios of using the Azure
  • list the alternatives of the Azure platform with main differences
  • describe IaaS and PaaS terms and explain where each cloud platform fits

From the Dawid's presentation and the things I read about Azure I learned that the most common scenarios of application using Azure platform are:

  • sites with not stable load (for example ticket booking sites) - there are times when there is no traffic at all and suddenly when selling tickets to some event there are very high peaks of visits to the site. Azure let's you to use more resources when needed - and also load balancing mechanism is already there.
  • marketing campaign sites - when time of the campaign is not know (for example when new movie is entering cinemas). You can use the resources for the time that is needed (if there are user coming back to your site for one year - run the site for one year, if the users stop visiting your site after one month - shut it down)
  • startups - that at the beginning does not have heavy load and they will need more computing power if succeed or shut up when failure - same as above, when you see that your startup is a failure, you just stop buying resources in cloud, you are not left with the servers and infrastructure you do not need.
  • parallel computing  - ease of adding new resources
  • storage is in cloud and the application  itself is hosted or installed on-premise. Storage in cloud gives you by default full replication.

Those are most common scenarios when it is worth considering moving/installing application in cloud.

Of course Azure is not alone. There are other cloud platform available. They are:

  • Amazon EC2 (Amazon Elastic Compute Cloud) - which enables you to use the whole Virtual Machine in cloud (that you administer yourself) while Azure gives you rather computing resources (you do not need to administer your Virtual Machine yourself but you loose control on it)  - IaaS  vs Paas(Azure) - more about that below
  • Google AppEngine - designed to run Python (and recently Java) application, does not have relational database, very specialized and focused on startups and Web 2.0 servies (Paas)
  • Force.com
  • Rackspace
  • other

I used two acronyms IaaS and PaaS. IaaS stands for Infrastructure as a Service and PaaS is Platform as a Service.

The Cloud Spectrum: IaaS, PaaS & SaaS (from http://www.cloudstrategies.com/2010/05/cloud-spectrum-iaas-paas-saas/)

Nice explanation of the differences between those two approaches to cloud computing can be found on the page: What Is the cloud? In general the idea is to give you as a user whole virtual machine with all the responsibility and possibilities - IaaS (admin access to the machine with possibility to do what you want there) vs giving you just possibility to run you application - PaaS (but also doing all the administrative and maintenance work for you). The choice is up to you - you need to know what you need.

This post is just a quick overview what I learned after reading few articles and listening to one presentation. I am going to investigate that area further. If I will have any interesting finding that will be worth sharing with you I will blog about it.

14Sep/101

Microsoft Search Server 2010 – Access denied for crawler – real reason

In this post I wrote that I had problem with denied access when I tried to crawl my site. I wrote that I found solution but it occurred  that I was just lucky. I had similar problem with another site and the fix I described didn't work. After spending some hours investigation it occurred search server had problems with crawling sites hosted on IIS 6 and Windows Server 2003.

Knowing that I played with configuration of the web site and I finally was able to crawl my page when I set only Anonymous access in web site's Authentication methods (by default Integrated Windows authentication was enabled).

I had no such problems when crawling sites hosted with IIS 7 and 7.5

19Aug/100

Microsoft Search Server 2010 – User Agent

If you wondering what is the default Microsoft Search Server 2010 User Agent it is: "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT; MS Search 6.0 Robot)"

You can find it in registry entry: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office Server\14.0\Search\Global\Gathering Manager\UserAgent

It is useful to know that if you want to hide part of the page from crawler - you can check visitor's user agent and if it is Search Server just not render that part.

29Jun/100

Playing with Microsoft Search Server 2010 Express

Recently I was asked to find out if we can use new version of search server in one of our new projects together with the module we did develop to integrate it (Search Server 2008) with EPiServer.
I have started to search, investigating and I have few findings which I want to share here (mostly to have everything in one place :) )

I have started with quick comparison of the 2008 and 2010 version - there is nice page that gives the overview what was introduced in new version. On that page you can find summary of new features introduced in version 2010.

Next thing I did was installing the Microsoft Search Server 2010 Express. The idea was to install it, try to crawl the page that was already using search server (but in version 2008) and try to just change the URL to the search web service.  Of course there were some tricks to do it. For example I had error message when I wanted to crawl any page. I got the error: "Access is denied. Verify that either the Default Content Access Account has access to this repository, or add a crawl rule to crawl this repository. If the repository being crawled is a SharePoint repository, verify that the account you are using has "Full Read" permissions on the SharePoint Web Application being crawled." Luckily I found that post. Following the instructions from that post helped to solve it.

Good news is that it occurred that Query Search Schema of version 2010  is compatible  with that one from version 2008. So the module we did develop to use it with Search Server 2008 is working with Search Server 2010 without changing single line in code :)

I am wondering if elements of search query SortByProperties and  SortByProperty are finally working (they weren't with version 2008) :D

When I will do anything more with new versions and I will have any interesting findings I will share it with you here :)

18Mar/100

The “Exec” task needs a command to execute.

I have lost one hour trying to figure out what is the source of the message: "The "Exec" task needs a command to execute." (Visual Studio 2005)

It occurred that when modifying  the post-build action I have left one empty line... Removing it solved the problem...

26Oct/091

Microsoft Search Server Express 2008 – two issues

Recently we have started using Miscrosoft Search Server Express 2008 (MOSS) as a search engine for some of EPiServer based projects (replacing default EPiServer  search engine). But the context of usage is not that important now.

To be clear - I think MOSS is a very nice product that is great for medium projects. But we encountered two issues with it - one already solved and one still not fixed.

Starting with solved one ;) It occurred that MOSS by default is not crawling pdf files. I'm not sure why - because pdf files are one of the most popular ones...  I found solution to that on Nicholas's blog - Microsoft Search Server PDF iFilter Installation

You can read about details on his blog. Just to highlgiht those are steps to add pdf crawling to MOSS:

  • you will need to install Acrobat Reader on the same machine where MOSS is installed
  • modify some register keys
  • add pdf extension to the list of files extensions to be crawled

That was quite easy ;)

Update: Some times there might be still the problem with PDF crawling. It might be an issue with wrong CLSID of Adobe IFilter.  Here can be found a solution to that:  http://blogs.msdn.com/ifilter/archive/2007/03/29/indexing-pdf-documents-with-adobe-reader-v-8-and-moss-2007.aspx

Second issue is still waiting for solving.

What is the problem? Results sorting, not by rank but by chosen managed properties.
We are using QueryEx. According to MSDN it is possible to change default sorting of results returned by search server. You can see that the QueryPacket has element:

It should be possible to send QueryPacket with SortByProperties element set to something like this:

1
2
3
4
<SortByProperties>
  <SortProperty name="Page" direction="ascending" order="1"></SortProperty>
  <SortProperty name="Heading" direction="ascending" order="2"></SortProperty>
</SortByProperties>

where both Path and Heading are managed properties that are available in results.
Unfortunately, there is no change in results sorting - they are still sorted by rank. We have even tried to add names of the properties in lowercase - as someone suggested in comments.

I'm still looking for a solution to the second problem - so, if you have any suggestion please, do not hesitate to let me know ;)

9Oct/090

Get LinkURL in context of choosen language

Recently I had a problem with getting URL of the page in context of the language different that master one.

I had a PageDataCollection with pages:

1
2
3
4
5
6
7
8
9
LanguageSelector language = new LanguageSelector("EN") ;

foreach (PageData childPage in DataFactory.Instance.GetChildren(startPage, language))

{

...

}

In the collection I had correct pages - children of startPage that had English language version.

Then for each page I wanted to write it's URL using childPage.LinkURL Unfortunately all those pages had different master language (Norwegian) and I was receiving URLs like "/no/mypage"

After searching for the solution for a while  my colleague Robert told me how to do it. The solution is:

1
2
string LanguageBranch = "EN";
string link = UriSupport.AddLanguageSelection(childPage.LinkURL, LanguageBranch);

Now I get URLs that looks like this one: "/en/mypage"

Thank you Robert ;)

17Sep/090

Fragments of Apple’s keynote – most used words

Extracted fragments of  the Apple's Keynote in September 2009 - outstanding, amazing, great ;)

Filed under: Uncategorized No Comments
6Sep/091

Joomla – simple CMS for smaller sites

Recently I've been looking for simple CMS to use it for my son's nursery website. I wanted it to be:

  • free
  • PHP based (I have hosting that is Linux based)
  • very simple to use - I wanted this site to be edited and updated by teachers from nursery
  • extensible - to easily add new functionalities (like for example gallery)
  • I wanted to limit the development to minimum - meaning no development at all as a goal ;)
  • free templates should be there -  to use with chosen CMS

If you check sites like for example: CMS Watch you will see that it is not easy to choose the proper one. I checked quite a few of CMSes but at the end I had only three to choose from: Drupal, Joomla and... Umbraco. The last one was a little bit surprising since it didn't fulfill my initial requirements - it is .Net based - but I had some experience with it from my work and it is similar to EPiServer in many areas ;) .

After playing with demos ( Drupal demo site, Joomla demo site) I decided to perform test installation. I stared with Joomla because I didn'tliked Drupal at all (based what I've seen in demo site) and I knew  Umbraco from work. I installed it and it occurred that I it was good choice :) Just from playing in administrator mode I was able to build the site I was looking for - with functionality, structure and everything  I needed.

Next step was to find template that was right for kindergarten site - and also in this area Joomla was the right choice. There is a lot of sties with Joomla free templates.

Finally, it occurred that after two days of work I managed to build the working site - ready to be publish  :) There was only one surprise for me - the way how pages were organized. I was used to "tree" structure - after all those projects with EPiServer :) . In Joomla editor has two "tools" to organize pages in the site:

  • each page has to be assigned to section and category. Primary use of sections and categories is to make kind of listing pages. There is possibility to create page that list all pages in section (from all categories) or all pages from chosen category. Also thanks to this it is easier to find pages in administrator view.
  • menus - if there is no tree structure there is nothing we can based menus on... So menus in Joomla are built from scratch. Administrator has to build the desired menu structure ("tree") and for each node he/she has to select the type of the node. And there are many to choose from:
    • article - menu node will be just link to article,
    • category - list all pages with chosen category,
    • section - list all pages with chosen section,
    • external link,
    • search page,
    • start page,
    • many more...

At last I was able to built the kindergarten site: Przedszkole nr 6 w Bochni (site is in Polish ). I also created for them Google Apps account - for domain przedszkole6.bochnia.org - as e-mail service and Picasa account as a pictures storage. Which all together makes quite nice connection and application (almost like SOA :D )

After this "project" - from my perspective - those are pros and cons of Joomla:

Pros:

  • free
  • really easy to install
  • installed version is ready to work with and easy to customize
  • huge number of extensions: Joomla extensions site
  • easy to find free template,
  • templates are quite easy to modify

Cons:

  • no tree pages structure - structure of pages is flat,
  • menus has to be created from scratch (can be advantage in some cases),
  • when linking to the page in WYSIWYG editor there is no internal type of link - so editor has to copy paste URL, instead of have possibility to choose from existing pages directly from WYSIWYG add link dialog,
  • lack of possibility to add access right to chosen section/category - for example to create administrator account for news updating. There is only administrator and editor kind of roles. Good thing is that editor can set right to only edit and another role to publish.

I think it is very good CMS for smaller sites with not that many pages. I think that with lager sites lack of tree strcuture might cause some problems in flexible management of the site. I haven't tested performance yet, I will do it and let you know how it went.

Tagged as: , , , , 1 Comment
14Dec/081

LinkItemCollection property in EPiServer

I was really happy reading on EPiServer Labs blog post by Ted Nyberg that in EPiServer CMS 5 R2 there is a new property type introduced - LinkItemCollection. You can read more on Ted's blog - but in short, it is a native property that does what old good Multi-page property has done so far (and some others implementation of multi link property).

I was using multi-page property in many projects and still I will be using it on all EPiServer 4.6x projects, but for sure, in all new CMS 5 I will go with LinkItemCollection. Especially that what I have just checked it is "smarter" then Multi-page property. "Smarter" because it knows what links it stores - and for example, while moving document (or deleting) that is referred by LinkItemCollection now we will get a warning. This was  not possible with Multi-page property.

Still there are some areas where probably I will stick to Multi-page property. It is great base for creating new specialized properties for different purposes.  We have created few new properties for which Multi-page property source code was a base like for example property called multi-image list - which allows for adding images with caption, alt text, link URL and so on. I'm not sure for now if it is possible with the new property - if not multi-page property isn't dead for us (at least for the time being :) )