Changes are coming! – news from Sitecore Partner Day

On 15th June 2016 I had a pleasure to be on first in Poland Sitecore Partner Day.

Speakers were mainly from Sitecore and we had an opportunity to hear about:

  • Updates from the Global Solution Partner Program (Marie Louise Bouchet)
  • Make your Sitecore implementation processes efficient (Hedgehog)
  • What’s new in Sitecore 8.1 and Roadmap (Jannik Devantier)
  • xDB – what is it really and how do I use it? (Morten Ljungberg)
  • Partnering with Sitecore – use Sitecore messaging to help drive digital transformation and generate business (Marie Louise Bouchet)
  • Sitecore Poland Community (Coders.Center & I)
  • Diving deeper into the new features of Sitecore 8.1 (Morten Ljungberg)
  • Sitecore Commerce (Jannik Devantier)
  • Xccelerate Program & Case Stories (Jannik Devantier)

As you can see – most of titles are about: partnering with Sitecore , future of Sitecore and Sitecore Modules.  There was a lot of interesting information and I am not able to provide all of them to you, but I will provide for you some of the most interesting from my point of view.

  • In the second half of the year Sitecore will provide us Sitecore 8.2 version.
  • In the beginning of the year 2017 Sitecore will provide us Sitecore 8.3 version.
  • Sitecore has decided to extend their QA team to provide for use better quality (if you have ever opportunity to create an support ticket you probably will appreciate this move from Sitecore side ;)) .
  • Sitecore will provide us a new version of Web Forms For Marketers (yes another changes in our favorite and the most stable module). In the nearest future WFFM will be a part of Sitecore – not a module as now.
  • Sitecore xDB could be run as a service (infrastructure provided by Sitecore) – but you have to remember that you can not define custom structure of data which will be stored in xDB
  • In the nearest future Sitecore will change some things in Partners program
  • Sitecore Commerce – is becoming to be the most important module for Sitecore, so we can be sure that they will change a lot of things in very short period of time
  • Sitecore eLearning platform elearning.sitecore.net (you can get Sitecore training without Sitecore certificate)
  • Sitecore’s Business Optimization Services (SBOS) – check the place of your client in the road to success “click” (great move from SBOS side)
  • Sitecore webinars – Sitecore will more often share an interesting knowledge with community
  • Sitecore Community in Poland is looking for speakers for next meetup and sponsors and everyone who somehow want to involve in our community (tricky advert ;))

I hope that some of this information will be interesting for you also.

At the end I want to also share with you one photo from Sitecore Partner Day:

Sitecore Awards Coders Center

Coders Center got some Sitecore Awards 😉 I am this first guy from the left side.

Speed Up Sitecore instance

All Sitecore developers know, that waiting for Sitecore load can be very annoying – especially when we do not have time.

In this post I’ve written about some tricks – but remember, they should NOT be used on the production environment.

Dynamic Compilation

About .net dynamic compilation you can read here: click

In simple words – everytime when you changing some code which has some references (let say inside class) all dll files should be recompiled and this process in bigger applications (like Sitecore) takes a lot of time. So we can decide to compile only changed parts.

Inside /sitecore/system.web/ in web.config file we should set

<compilation optimizeCompilations="true" />

So final definition could look like:

<compilation defaultLanguage="c#" debug="false" targetFramework="4.5"  optimizeCompilations="true">

If you want to make your compilation more selective you can also set “batch” to false value. To read more about this: click

<compilation defaultLanguage="c#" debug="false" targetFramework="4.5"  optimizeCompilations="true" batch="false" >

You can also consider to use RAMDisk (example of software : click) for your compilation temporary files.

Then your definition for compilation would look like:

<compilation defaultLanguage="c#" debug="false" targetFramework="4.5"  optimizeCompilations="true" batch="false" tempDirectory="X:\TEMP\">

Pros of this feature you will see especially when you have old HDD rather than SDD.

Thanks to: http://blog.lavablast.com/post/2010/12/01/Slash-your-ASPNET-compileload-time.aspx

Publisher evidence (authenticode signature veryfication)

It is default mechanism which you can disable on your development environment. If you want to know more, please read here: click

Inside directories:

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config

you should update file “machine.config” and set in node “/coniguration/runtime” folowing value (patch of course would be better):

<generatePublisherEvidence enabled="false"/>

Sitecore Performance Counters

Counters store an information about number of different activities. They can be very useful but if you at particular moment do not need them, you can just turn off them (patch of course would be better).

<setting name="Counters.Enabled" value="false" />

Thanks to: https://sitecorebasics.wordpress.com/2011/03/17/all-about-sitecore-performance-counters-a-real-hero/

You can do it by yourself or use SIM “Configuration – Sitecore 8 – Development – Initialize Speed Booster” (here you can find configuration file: click).

Prefetch Cache

Prefetch cache is the basic cache for production environment so it is good to allocate as mach memory as it is possible for it. But what is good for production environment, not always also good for development environment.

Bigger prefetch cache also means longer Sitecore starting process.

You can change files inside App_Config/Prefetch/ directory.

Decrease size of cache in “configuration/cacheSize” nodes and numer of children in “configuration/childLimit”.

Thanks to: http://sitecoreblog.patelyogesh.in/2013/08/speedup-sitecore-startup.html

Initialize SPEAK Pipelines

Sitecore SPEAK has defined pipelines which precompile the SPEAK files.  If they will not be compiled on start, they will be compiled during the page loading. So it easy to decide to disable precompile pipelines on developer machine.

To disable this pipelines you should comment out (patch of course would be better):

// App_Config/Include/Sitecore.Speak.config

<initialize>
<!--  
<processor type="Sitecore.Pipelines.Initialize.PrecompileSpeakViews, Sitecore.Speak.Client">
 <Paths>/sitecore/shell/client/Business Component Library</Paths>
 </processor>
-->
 </initialize>

// App_Config/Include/ContentTesting/Sitecore.ContentTesting.config

<initialize>
<!--
<processor type="Sitecore.Pipelines.Initialize.PrecompileSpeakViews, Sitecore.Speak.Client" use="ContentTesting">
 <Paths>/sitecore/shell/client/Applications/ContentTesting</Paths>
 </processor>
-->
 </initialize>

Thanks to: http://kamsar.net/index.php/2015/02/sitecore-8-experience-editor-performance-optimization/

You can do it by yourself or use SIM “Configuration – Sitecore 8 – Development – Initialize Speed Booster” (here you can find configuration file: click).

Change mode of initialization for ApplicationPool

Inside directory

%windir%\System32\inetsrv\config

you will able to find file “applicationHost.config”. Inside that file in node “/configuration/system.applicationHost/applicationPools” you will find definitions of pools for your applications. You should set startMode to “AlwaysRunning”, so your configuration may looks like this one:

<add name="$NAME" autoStart="true" enable32BitAppOnWin64="false" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning">
 <processModel identityType="ApplicationPoolIdentity" pingingEnabled="false" />
 </add>

You can also change this from IIS and pool advanced configuration.

The second think you could change is in node “/configuration/system.applicationHost/sites”. Find your site and “application” definition, then add/set there an attribute “preloadEnabled” to “true”. Your configuration may looks like this one:

<site name="$NAME" id="6" serverAutoStart="true">
 <application path="/" preloadEnabled="true">
 <virtualDirectory path="/" physicalPath="$PATH" />physicalPath="$PATH" />
 </application>
 <bindings>
 <binding protocol="http" bindingInformation="*:80:$NAME" />
 </bindings>
 <applicationDefaults applicationPool="$NAME" />
 </site>

This setting makes your website always ready to display.

Thanks to : http://blogs.iis.net/wadeh/application-initialization-part-2

Disable Ilde Time-out Action in IIS

By default your iis terminate applications which are not in use for defined time. But when you are working on your application you definitely want to have your application ready all the time.

Find your application pool inside IIS and:

  • in recycle settings (first view) clear all checkboxes
  • in advanced settings find “Idle Time-out (minutes)” and set it to 0

Then go to the website advanced configuration (also in IIS) and change “Connection Time-out” to 0.

Restart IIS and your environment is ready.

Thanks to: https://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/

Disable Event Queue

You can disable some event queues because they are not required for developers use.

Just add the following line in “/configuration/sitecore/settings” node:

<setting name="EnableEventQueues" set:value="false" />

You can do it by yourself or use SIM “Configuration – Sitecore 8 – Development – Disable Event Queue” (here you can find configuration file: click).

Happy speeding up! 🙂

If you have other tips, please share them in comments – i will update post.

First in Poland Sitecore Meetup

20 may 2016 will go down in history as day of first in Poland Sitecore meetup.

I have a pleasure to be an organizer of this event. In cooperation with our sponsors (Coders.Center & Sitecore) we are trying to build community of Sitecore users in Poland.

On first meetup our speakers are going to talk about:

  • Sitecore XP – more than CMS – about platform capabilities in support of online marketing (Jakub Koba)
  • Sitecore xDB – Architecture and Configuration (Tomasz Juranek)
  • Sitecore & Gulp as a way of automatization in Siteore projects (Radosław Kozłowski)

If you want to be a part of this event here you can find more information:

Presentations from Meetup:

If you want to join to our community, here you are able to find more information:

 

SOLID architecture principles

Hello again!

Because every day I learn new things and I had been looking for good place to store interesting websites I decided to create new category “Worth To Know” on my blog to share what in my opinion should be shared/promoted in developers community (not only with those who work with Sitecore).

So today I’m giving for you some links about SOLID architecture principles which I try to watch/read once a week to remember how important are they.

  • SOLID architecture principles using simple C# examples by Shivprasad Koirala – website / click
  • SOLID Design Patterns in C# by Free Programming Course – youtube / click

These rules are also important when you work with Sitecore – as you probably know it is also possible to destroy a pleasure of work with Sitecore if code will be done very badly.

Lucene Analyzers for Sitecore – how the tokenized content looks like?

Everyone who have worked with Lucene indexes in Sitecore probably asked one day  him self – “how my content looks after tokenization process?”.

The answer of course is different depending on the type of used analyzer. (About types of analyzers you can read here. I will not provide those information here because it is not in the scope of this post)

Few days ago one of my colleagues (Wojciech Urban – thanks for that!), found the very useful tool which provide us following information:

  1. how tokenized text looks like
  2. how get tokens which are equal to those inside Lucene index

< You can find this tool here >

How tokenized text looks like?

As you can see in the image you are able to insert any description and test the tokenization process results.

2016-03-26_17h08_40

You can also change types of analyzers – you can choose from the following list:

2016-03-26_17h11_13

With this tool, results of your queries would never surprise you again!

How to get tokens which are equal to those inside Lucene index?

If you need tokens – let say for do something with your search results you can do something like this:

// get the analyzer which you use
var analyzer = new StandardAnalyzer(Version.LUCENE_30);
// prepare StringReader object with your text inside
StringReader stringReader = new StringReader(text);
// get the tokens stream
TokenStream tokenStream = analyzer.TokenStream("defaultFieldName", stringReader);
while (tokenStream.IncrementToken())
   ITermAttribute termAtt = tokenStream.AddAttribute<ITermAttribute>();
   var term = termAtt.Term;
   // ...
   // ... do something with your term
   // ...
}