<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-34728599</atom:id><lastBuildDate>Tue, 07 May 2013 06:35:23 +0000</lastBuildDate><category>Mongodb</category><category>lotus formula</category><category>htmlminifier</category><category>me</category><category>javascript</category><category>CSS</category><category>web</category><category>lotus approach</category><category>lotus community</category><category>xPages</category><category>xpage</category><category>DDE</category><category>XML-XSL</category><category>lotus news</category><category>Java</category><category>lotus fun</category><category>Google</category><category>DSAPI</category><category>lotus notes</category><category>Node.js</category><category>sqwish</category><category>RSS</category><category>lotus issues</category><category>SEO</category><category>lotus integration</category><category>notes api c++</category><category>Domino</category><category>nodejs</category><category>uglifyjs</category><category>lotus script</category><category>lotus perfomance</category><category>XSS</category><category>lotus features</category><category>lotus and java</category><title>Find the best way</title><description>Tips for Java, JavaScript, HTML, CSS, SEO and IBM Notes/Domino</description><link>http://dpastov.blogspot.com/</link><managingEditor>noreply@blogger.com (Dmytro Pastovenskyi)</managingEditor><generator>Blogger</generator><openSearch:totalResults>219</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dpastov" /><feedburner:info uri="dpastov" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-3603221748981282611</guid><pubDate>Wed, 24 Apr 2013 07:00:00 +0000</pubDate><atom:updated>2013-04-24T09:00:14.353+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>Deferred Loading</title><description>&lt;span style="font-family: Verdana, sans-serif;"&gt;On my job we are trying to decrease time for loading pages as much as it is possible, we simply want 'fast pages'. We don't want our users waited for 2 seconds each time they load page. We are focusing to keep not more then 0.5-1 second per page and we are doing really a lot in that area.

Nowadays It's quite common for most of websites to include javascripts just in head area (or at bottom area) as static html so each time we load pages they will be not responsive till all resources will be loaded.

I want to share how to load of javascript files (or any another resouces) just after page loads. It could increase speed dramatically. This solution loads all javascrip files deferred after page load on onload event. That snippet should be minimized and be present on every page where you want to use deferred loading.
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;Snippet of deferred loader&lt;/strong&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;code&gt;(function(){
 function deferred(success){
    if (typeof window.onload != 'function') {
   window.onload = success;
  } else {
   var old = window.onload ;
   window.onload = function() {
    old();
    success();
   }
  }
 }

 function getScript(url,success){
  var script=document.createElement('script');
  script.src=url;
  var head=document.getElementsByTagName('head')[0],done=false;
  script.onload=script.onreadystatechange = function(){
    if ( !done &amp;amp;&amp;amp; (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') ) {
   done=true;
   success();
   script.onload = script.onreadystatechange = null;
   head.removeChild(script);
    }
  };
  head.appendChild(script);
 }

 function getScripts(urls, success){
  var total = 0;
  function trySuccess(){
   total++;
   if(total == urls.length)success();
  }
  
  for (var i = 0; i &amp;lt; urls.length; i++) {
   getScript(urls[i],trySuccess);
  }
 }
 
 var DeferredLoader = window.DeferredLoader = {};
 DeferredLoader.getScript = getScript;
 DeferredLoader.getScripts = getScripts;
 DeferredLoader.deferred= deferred;
})();&lt;/code&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;How to use loading, in that example we load jQuery, then when it's loaded we load kissmetrics libraries and only then utils.&lt;/strong&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;&lt;code&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;var urls = {
 jquery: "/javascript/jquery-1.9.1.min.js",
 dependent: ["/javascript/util-2013-04-10m.js"],
 kissmetrics:['//i.kissmetrics.com/i.js','//doug1izaerwt3.cloudfront.net/' + window._kmk + '.1.js' ]
};

DeferredLoader.deferred(function () {
 DeferredLoader.getScript(urls.jquery, function () {
  DeferredLoader.getScripts(urls.kissmetrics, function () {
   DeferredLoader.getScripts(urls.dependent, function(){})
  })
 })
})
&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace;"&gt;
&lt;/span&gt;&lt;/pre&gt;
</description><link>http://feedproxy.google.com/~r/dpastov/~3/ilevMB539Bs/deferred-loading.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/04/deferred-loading.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-1202200794760342509</guid><pubDate>Wed, 06 Mar 2013 08:00:00 +0000</pubDate><atom:updated>2013-03-14T10:49:20.201+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DSAPI</category><category domain="http://www.blogger.com/atom/ns#">notes api c++</category><title>Rewriting URL in Domino using DSAPI</title><description>I will briefly describe what we were aiming to achieve.
In order to open page with parameters Domino requires to add ?open or ?opendocument action and only after that Domino allows to add parameters. It's quite annoying for us due to some integration with another systems, those systems expect they can simply add parameters just after our pages, i.e.: http://www.host/page?parameter=123 etc. Also important reason - we simply do not like this ?open or ?opendocument in URL.
&lt;br /&gt;
&lt;br /&gt;
we want to be able to that:&lt;br /&gt;
&lt;span style="color: red; font-weight: bold;"&gt;www.host/page?opendocument&amp;amp;parameter=123&lt;/span&gt; &lt;b&gt;==&amp;gt;&lt;/b&gt; &lt;b style="color: blue;"&gt;www.host/page?parameter=123&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I got couple helpful comments in my previous article about &lt;a href="http://dpastov.blogspot.dk/2013/02/fighting-for-nice-url-in-domino.html"&gt;&lt;strong&gt;URL control in Domino&lt;/strong&gt;&lt;/a&gt;, that helped me to look on different solutions, thanks guys. However I decided that those solutions a bit complicated to setup and they could do some impact on page load time.
&lt;br /&gt;
&lt;br /&gt;
I've been working on DSAPI solution last days and finally with some help I've made it! Now we have full control with our URLs, at least I've such feeling :). Let me share my small success to all of you.
&lt;br /&gt;
&lt;br /&gt;
Here you can find main steps you need to do. Please keep in mind, I've updated my code a bit as our logic has many rules when exactly to add parameters.
&lt;br /&gt;
&lt;br /&gt;
1. Enable flag to catch Rewrite URL event.
&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;&lt;code&gt;filterInitData-&amp;gt;eventFlags = kFilterRewriteURL;&lt;/code&gt;
&lt;/pre&gt;
2. Link 'rewrite URL' event with you function.
&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;&lt;code&gt;DLLEXPORT unsigned int HttpFilterProc(FilterContext* context, unsigned int eventType, void* eventData) {
 switch (eventType) {
  case kFilterRewriteURL:
   return RewriteURL(context, (FilterMapURL *) eventData);
  default:
   return kFilterNotHandled;
 }
}&lt;/code&gt;
&lt;/pre&gt;
3. Finally the main logic, that makes URL rewriting.
&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;&lt;code&gt;int RewriteURL(FilterContext* context, FilterMapURL* pEventData) {
 FilterParsedRequestLine pReqData;
 unsigned int errid=0;

 // if there are no parameters in URL - nothing to do.
 if (strstr(pEventData-&amp;gt;url, "?")==NULL) return kFilterNotHandled;
 // read request as we are going to update query.
 context-&amp;gt;ServerSupport(context, kGetParsedRequest, &amp;amp;pReqData, NULL, NULL, &amp;amp;errid);
 // if query starts from opendocument - nothing to do
 if (strncmp(pReqData.pQueryUri, "opendocument", strlen("opendocument"))==0) return kFilterNotHandled;
 // adding opendocument before query and put result in pEventData-&gt;pathBuffer
 sprintf(pEventData-&gt;pathBuffer, "%s?opendocument&amp;%s", pReqData.pPathUri, pReqData.pQueryUri);

 return kFilterHandledEvent;
}&lt;/code&gt;
&lt;/pre&gt;
Solution we did works like a charm and what is very important it does not affect page load time (we measured of course)</description><link>http://feedproxy.google.com/~r/dpastov/~3/RGnRJBOREss/rewriting-url-in-domino-using-dsapi.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>7</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/03/rewriting-url-in-domino-using-dsapi.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-7016579277886017295</guid><pubDate>Sun, 03 Mar 2013 18:10:00 +0000</pubDate><atom:updated>2013-03-03T19:14:13.084+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mongodb</category><title>Mongodb - Enable Authentication</title><description>Basically it is very easy to do,

&lt;ul style="list-style: none;padding-left:0"&gt;
&lt;li&gt;1. open mongodb shell&lt;/li&gt;
&lt;li&gt;2. open admin db and add admin user (you need to have 1 user otherwise you can' lose access to your databases at all)&lt;/li&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;
&lt;code&gt;use admin
db.addUser("admin","12345")&lt;/code&gt;
&lt;/pre&gt;
&lt;li&gt;3. Enable authentication &lt;strong&gt;auth=true&lt;/strong&gt; (simply un-comment it) in config file 'sudo vi /etc/mongodb.conf', save changes and restart mongodb service&lt;/li&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;
&lt;code&gt;sudo service mongodb restart&lt;/code&gt;
&lt;/pre&gt;

&lt;/ul&gt;
For more information please read &lt;a href="http://docs.mongodb.org/manual/administration/security/"&gt;Security Practices and Management&lt;/a&gt;


</description><link>http://feedproxy.google.com/~r/dpastov/~3/aEjQhEkVNr4/mongodb-enable-authentication.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/03/mongodb-enable-authentication.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-4267522672013345850</guid><pubDate>Wed, 27 Feb 2013 14:48:00 +0000</pubDate><atom:updated>2013-03-01T20:01:14.705+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DSAPI</category><category domain="http://www.blogger.com/atom/ns#">Domino</category><title>Fighting for control of URL in Domino</title><description>We have really annoying problem for years with our URLs on all websites based on Domino. We use classic approach because we want control all tags + we like jQuery more etc. Our problem is about mandatory action [?open | ?opendocument] for pages with parameters, so if you want to add parameters to your page (i.e. param1=123) you have to add [?open | ?opendocument] just after your URL and only then you are allowed to add parameters.
&lt;br /&gt;
&lt;br /&gt;
Not really a huge problem, however we want to use new tracking code from google. That tracking has problems with [?open | ?opendocument]: it does not work correctly in case if first parameter is ?open. So now its blocker for us and we want to fix it for all another cases as well. We want to have possibility get rid off ?open | ?opendocument
&lt;br /&gt;
&lt;br /&gt;
Question in few words: "is it possible to get this URL working?"&lt;br /&gt;
&lt;b&gt;&lt;span style="color: blue;"&gt;http://www.e-conomic.com/accountingsoftware?parameter=123&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
instead of this&lt;br /&gt;
&lt;b&gt;&lt;span style="color: red;"&gt;http://www.e-conomic.com/accountingsoftware?open&amp;amp;parameter=123&lt;/span&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;br /&gt;
We've tried redirect, substitutions - no success ofc :(.
&lt;br /&gt;
&lt;br /&gt;
Next in my queue is DSAPI and I'm sure it can solve that problem (at least from documentation) however I'm not able to do that due to my experience with DSAPI and very very low information in the web.
&lt;br /&gt;
&lt;br /&gt;
I've played with different events in DSAPI: kFilterStartRequest, kFilterRawRequest and kFilterRewriteURL and tried to change incoming URL from request but did not success with it. Does any of you guys can give me tips :) what I do wrong or maybe there is another solution how to achieve that quest?
</description><link>http://feedproxy.google.com/~r/dpastov/~3/r40B2Uo06B8/fighting-for-nice-url-in-domino.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>3</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/02/fighting-for-nice-url-in-domino.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-5415847985371963451</guid><pubDate>Tue, 05 Feb 2013 08:00:00 +0000</pubDate><atom:updated>2013-02-05T10:09:10.780+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">uglifyjs</category><category domain="http://www.blogger.com/atom/ns#">sqwish</category><category domain="http://www.blogger.com/atom/ns#">htmlminifier</category><category domain="http://www.blogger.com/atom/ns#">nodejs</category><title>Nodejs and compression of HTML, JS, CSS</title><description>&lt;style&gt;
.code {
background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;
}
&lt;/style&gt;
&lt;p&gt;To decrease loading time for pages, it is always nice to minify your HTML, CSS and JS. Also to decrease number of requests we inject our minified CSS/JS directly on our pages (ofc we will do that unless our CSS/JS have small size), so minus 2 requests to all pages.&lt;/p&gt;
&lt;p&gt;Now time to write couple lines of real code&lt;/p&gt;
&lt;!-- JS compression --&gt;
&lt;h2&gt;1. &lt;a href="https://github.com/mishoo/UglifyJS"&gt;UglifyJS - compress JS&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="code"&gt;
&lt;code&gt;var uglifyJS = require("uglify-js");

var result = uglifyJS.minify("filename.js");
console.log(result.code);&lt;/code&gt;
&lt;/pre&gt;
&lt;!-- CSS compression --&gt;
&lt;h2&gt;2. &lt;a href="https://github.com/ded/sqwish"&gt;Sqwish - compress CSS&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="code"&gt;
&lt;code&gt;var sqwish = require('sqwish');
var filename=app.get('filename.css');
fs.readFile(filename, 'utf8', function(err, data) {
    if (err) throw err;
    var minifiedCss = sqwish.minify(data)
    console.log(minifiedCss);
})&lt;/code&gt;
&lt;/pre&gt;
&lt;!-- HTML compression --&gt;
&lt;h2&gt;3. &lt;a href="https://npmjs.org/package/html-minifier"&gt;HTMLMinifier - compress HTML&lt;/a&gt;&lt;/h2&gt;
&lt;pre class="code"&gt;
&lt;code&gt;var htmlminifier = require('html-minifier');
var minifiedHTML = htmlminifier.minify(data, {
 removeComments: true,
 removeCommentsFromCDATA: true,
 collapseWhitespace: true,
 collapseBooleanAttributes: true,
 removeAttributeQuotes: true,
 removeEmptyAttributes: true
});&lt;/code&gt;
&lt;/pre&gt;

So at the result we decreased size of our pages a lot and also decreased number of requests which is also nice, we all love "fast pages".</description><link>http://feedproxy.google.com/~r/dpastov/~3/zz_hc875ySA/nodejs-and-compression-of-html-js-css.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><georss:featurename>Copenhagen, Denmark</georss:featurename><georss:point>55.6760968 12.568337100000008</georss:point><georss:box>55.5328298 12.245613600000008 55.819363800000005 12.891060600000008</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/02/nodejs-and-compression-of-html-js-css.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-713589393180433156</guid><pubDate>Wed, 30 Jan 2013 13:22:00 +0000</pubDate><atom:updated>2013-01-30T15:19:51.183+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Node.js</category><title>Node.js first experience and first simple project</title><description>From 2013 I've started to learn (as much as I've free time) &lt;a href="http://nodejs.org/" target="_blank"&gt;Node.js&lt;/a&gt;. 'Domino/Notes' still my main, however it is always nice to learn something new.&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Verdana, Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 97%;"&gt;
&lt;code&gt;
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast,
scalable network applications. Node.js uses an event-driven, non-blocking I/O model 
that makes it lightweight and efficient, perfect for data-intensive real-time 
applications that run across distributed devices.
&lt;/code&gt;
&lt;/pre&gt;
Together with &lt;a href="http://lotusandjava.blogspot.dk/"&gt;Andrew Kuba&lt;/a&gt; (who guide me how to 'node') we are doing simple website for one game which is very popular right now, we are aiming to have hundreds users/month :) at some points + it is always nice to do something that is real and online&lt;br/&gt;
&lt;span style="padding-top:10px"&gt;We are using only couple modules for our first application:&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://expressjs.com/"&gt;Express&lt;/a&gt; - minimal and flexible node.js web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://underscorejs.org/"&gt;Underscore&lt;/a&gt; is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js (or Ruby), but without extending any of the built-in JavaScript objects
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://mustache.github.com/"&gt;mustache&lt;/a&gt; is a logic-less templates.
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yui/yuicompressor"&gt;yuicompressor&lt;/a&gt; compressor to minify our JS/CSS (we do compress all our CSS/JS and put it directly on page to avoid additional lookups)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kangax/html-minifier"&gt;html-minifier&lt;/a&gt; compressor to minify our HTML&lt;/li&gt;
&lt;/ul&gt;
We do not use database right now, however we are planning to use &lt;a href="http://www.mongodb.org/"&gt;mongodb&lt;/a&gt; with &lt;a href="http://mongoosejs.com/"&gt;mongoose&lt;/a&gt; in near future.&lt;br/&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.picklol.net/"&gt;Pick LoL&lt;/a&gt;&lt;/strong&gt; is our website (first version) we are working on to get some experience with Node.js&lt;/p&gt;
During next couple months I will write more posts about node.js which I'm going to like hopefully :).</description><link>http://feedproxy.google.com/~r/dpastov/~3/5iw7mXjowOY/nodejs-first-experience-and-first.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2013/01/nodejs-first-experience-and-first.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-4286602586378357483</guid><pubDate>Mon, 17 Dec 2012 08:00:00 +0000</pubDate><atom:updated>2013-01-08T09:59:18.660+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DDE</category><title>First couple days with IBM Domino Designer 9.0 Social Edition</title><description>Worked 2 days already with Domino&amp;nbsp;Designer&amp;nbsp;9 (I do not really care about changes in Notes 9, as I believe in 'web' direction). I did not find something really new/impressive for developers, however worked only 2 days and also I do not forget that it is just a beta. My impression:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;It is fast enough, however I do not feel difference compare to my 8.5.3, perhaps my laptop just too good.&lt;/li&gt;
&lt;li&gt;Ext Library is included by default.&lt;/li&gt;
&lt;li&gt;I've also read that now we have an API (Java, LS, C API) for C&amp;amp;S, would be great to have it few years ago, now its too late :), but still thanks!&lt;/li&gt;
&lt;li&gt;Special places for JAR, I guess it is only for xPages, but not for Java libraries/Agents, need to verify.&lt;/li&gt;
&lt;li&gt;Server-side JavaScript debugger for use with xPages (need to verify how it works, but options are present, I saw that :))&lt;/li&gt;
&lt;li&gt;$DesignerVersion still says:&amp;nbsp;"8.5.3" when you save elements. I think that would be changed with Release candidate.&lt;/li&gt;
&lt;li&gt;There are some new options to "Manage working sets drop-down" I really like, waited for those changes for a long time.&lt;/li&gt;
&lt;li&gt;Application Properties got 'Xsp Properties'.&lt;/li&gt;
&lt;li&gt;There are also changes to xPages, but I had no time to look on them.&lt;/li&gt;
&lt;li&gt;All 'old staff':&amp;nbsp;old window to work with @formula, properties&amp;nbsp;dialog&amp;nbsp;still looks same (and that is sad).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Some words about API for C&amp;amp;S.&lt;/b&gt;&lt;br /&gt;
I've been working on synchronization Lotus Notes 6.5-8.5 Calendar &amp;amp; Scheduling with huge CRM on&amp;nbsp;my previous job (synchronization in 2 side, from LN to CRM and back)&amp;nbsp;and we spent months to manage that correctly, oh dat&amp;nbsp;recurrent&amp;nbsp;events :), it would help us really a lot if we get such API earlier.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I've read also on some blogs that Domino 9 may have dojo 1.8. which would be nice to have and use.&lt;br /&gt;
&lt;br /&gt;
That's all for now.&lt;/div&gt;
</description><link>http://feedproxy.google.com/~r/dpastov/~3/Dk76T6fYSsI/domino-designer-9-beta-first-impression.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><georss:featurename>Ryesgade, 2100 Copenhagen, Denmark</georss:featurename><georss:point>55.6960995 12.5730562</georss:point><georss:box>55.691625 12.5631857 55.700574 12.5829267</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/12/domino-designer-9-beta-first-impression.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-722655830112887165</guid><pubDate>Sun, 16 Dec 2012 08:00:00 +0000</pubDate><atom:updated>2013-01-08T10:55:13.180+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">me</category><title>Moved from Ukraine to Denmark</title><description>&lt;br /&gt;
From 1-st December I work and live in Denmark. It's really interesting experience for me and my family. I had been working with e-conomic from Kiev for more than 3 years and at some point company decided that it had sense to invite me to work in main office. Now I'm here, so wanna tell 'hi' to those who live here :)&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Couple fresh photos of Copenhagen.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
City is ready for Christmas:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-eHJqFfUiLEY/UMzq5WtrMyI/AAAAAAAALW4/95VlQ6pOcNg/s1600/IMG_0115.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-eHJqFfUiLEY/UMzq5WtrMyI/AAAAAAAALW4/95VlQ6pOcNg/s320/IMG_0115.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-bV8U95PrHTg/UMzq7SWNHUI/AAAAAAAALXA/LXygPs0cdVg/s1600/IMG_0136.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-bV8U95PrHTg/UMzq7SWNHUI/AAAAAAAALXA/LXygPs0cdVg/s320/IMG_0136.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/--lclSQau_6A/UMzq9nT38qI/AAAAAAAALXU/EZwkrT9ouBU/s1600/IMG_3975.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/--lclSQau_6A/UMzq9nT38qI/AAAAAAAALXU/EZwkrT9ouBU/s320/IMG_3975.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
Now most funny thing :), we met hundred well&amp;nbsp;organized&amp;nbsp;girls, they marched along the main shop-street of the city and cried slogans&amp;nbsp;about Justin Bieber. It was really funny.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-MmCTwSa4knw/UMzq8ISLdKI/AAAAAAAALXE/4qVKr7xRqQY/s1600/IMG_0143.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-MmCTwSa4knw/UMzq8ISLdKI/AAAAAAAALXE/4qVKr7xRqQY/s320/IMG_0143.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-mD5EOYds7-g/UMzq8yFanXI/AAAAAAAALXM/P3HZdTIZaYc/s1600/IMG_0144.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-mD5EOYds7-g/UMzq8yFanXI/AAAAAAAALXM/P3HZdTIZaYc/s320/IMG_0144.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
</description><link>http://feedproxy.google.com/~r/dpastov/~3/fUkk3PwVLX4/from-ukraine-to-denmark.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-eHJqFfUiLEY/UMzq5WtrMyI/AAAAAAAALW4/95VlQ6pOcNg/s72-c/IMG_0115.JPG" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>Ryesgade 89-91, 2100 Copenhagen, Denmark</georss:featurename><georss:point>55.6960995 12.5730562</georss:point><georss:box>55.687151 12.5533152 55.705048000000005 12.5927972</georss:box><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/12/from-ukraine-to-denmark.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-8872261396412560460</guid><pubDate>Tue, 09 Oct 2012 10:35:00 +0000</pubDate><atom:updated>2012-10-09T12:39:07.818+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Java</category><title>What is comfort zone for Domino developers our days?</title><description>Lotus Script is no longer in my 'comfort zone' anymore but Java/JavaScript. That's actually it. We already moved all (well 90%) of backend to Java. Now Lotus Script serves only to provide validation/picklist/msgbox on forms/views for existing 'classic' applications. Now we are slowly moving everything to web and I like that.&lt;br /&gt;
&lt;br /&gt;
We are aiming in few years to let our users to un-install LN and simply use browsers and that would be perfect. That time we should have no even 1 line LS and @Formula.</description><link>http://feedproxy.google.com/~r/dpastov/~3/QZVXD7iMf40/what-is-comfort-zone-for-domino.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/10/what-is-comfort-zone-for-domino.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-3064046892534122924</guid><pubDate>Fri, 03 Aug 2012 14:51:00 +0000</pubDate><atom:updated>2012-10-09T12:38:49.072+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">xPages</category><title>Exception occurred calling method NotesAgent.runWithDocumentContext(lotus.domino.local.Document) null</title><description>Tried to run agent with 'context document' in xPage (via SSJS) and got this problem. I did not find a way how to solve that except to enable checkbox 'Run as Web User' for agent, however I need to run agent from 'signer' as 'runner' has Reader access and my agent update should document. It's terrible with this problem (if it is problem ofc :)). What should I do know?</description><link>http://feedproxy.google.com/~r/dpastov/~3/h9iNNvPMOH8/exception-occurred-calling-method.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/08/exception-occurred-calling-method.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-4014883589449501951</guid><pubDate>Tue, 03 Jul 2012 09:18:00 +0000</pubDate><atom:updated>2012-10-09T12:38:02.972+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus and java</category><title>ViewEntry and Show multiple values as separate entries</title><description>When your view has column with option 'Show multiple values as separate entries' and you use ViewEntry to read data from that column you will have a problem. Result of your getColumnValues() can be different, f.x. in 1 case it can be 'Vector' and in another case 'String'. It depends if entry was really split on few entries because of multi-value. I've lookup around and found this issue already reported on IBM ~3 years ago (IBM whats up?)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg21253521"&gt;Full description of problem&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is a solution I made&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;Vector v = entry.getColumnValues();
Object o = v.get(0);
String title = "";
if (o.getClass().equals(String.class)) {
 title = (String) o;
}
else if (o.getClass().equals(Vector.class)) {
 Vector tmp = (Vector)o;
 title = (String) tmp.get(0);
}&lt;/code&gt;&lt;/pre&gt;
</description><link>http://feedproxy.google.com/~r/dpastov/~3/oaOs8hXwXng/viewentry-and-show-multiple-values-as.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>2</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/07/viewentry-and-show-multiple-values-as.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-2353728130856028018</guid><pubDate>Mon, 18 Jun 2012 08:51:00 +0000</pubDate><atom:updated>2012-06-18T11:39:22.723+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Java</category><category domain="http://www.blogger.com/atom/ns#">RSS</category><title>Content Is Not Allowed In Prolog</title><description>Got this issue in the morning. We have service that "aggregate" data from multiple RSS into 1 RSS. The issue appeared because at one of RSS we enabled encode option [encode UTF-8] but not [encode UTF-8 without BOM]:

&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;encode in UTF-8
encode in UTF-8 without BOM.
&lt;/code&gt;&lt;/pre&gt;
our Java parse does not understand this &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Byte_order_mark"&gt;BOM&lt;/a&gt; &lt;/b&gt;(byte order mark). So we just swtiched to one without BOM byte.

I've made tests using this online tool, it worked just as I expected &lt;a href="http://www.judahfrangipane.com/utils/xmlvalidator/XMLValidator.html"&gt;XMLValidator&lt;/a&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/i7s3zJ3nelI/content-is-not-allowed-in-prolog.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/06/content-is-not-allowed-in-prolog.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-1040928912481402956</guid><pubDate>Wed, 13 Jun 2012 13:01:00 +0000</pubDate><atom:updated>2012-06-18T10:52:14.986+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus script</category><title>Cool trick which I never saw in LotusScript. Pass function as parameter.</title><description>Read this code
&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;'Comments for SetValue
Sub SetValue(src As Variant, target As Variant)
 If IsObject(src) Then
  Set target = src
 Else
  target = src
 End If
End Sub

'Comments for Test
Function Test(value As Variant) As Variant
 SetValue value, Test
End Function
&lt;/code&gt;&lt;/pre&gt;
You can call Test(now) or Test(customobject) or Test("ABC") it will return you just same object/value. nice, isn't it?

&lt;br /&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;msgbox Test(now).DateOnly
msgbox Test("Helllo")
msgbox Test(customobject).customProperty
&lt;/code&gt;&lt;/pre&gt;
Do not see right now really huge benefits from this but just nice to know this.</description><link>http://feedproxy.google.com/~r/dpastov/~3/bCuZWKh3me4/cool-trick-which-i-never-saw-in.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/06/cool-trick-which-i-never-saw-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-3481838731016531301</guid><pubDate>Mon, 11 Jun 2012 17:14:00 +0000</pubDate><atom:updated>2012-06-18T10:52:26.598+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Domino</category><title>Default sort order</title><description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Guys, does anybody make it (Default sort order) working? I played to much with it without success, my Domino server still ignore sorting (as Swedish) for my application.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-XytVSTPo1DA/T9YnDX4VcGI/AAAAAAAAK_8/HZnMSSAlktg/s1600/multioptions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-XytVSTPo1DA/T9YnDX4VcGI/AAAAAAAAK_8/HZnMSSAlktg/s320/multioptions.png" width="177" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/fm5_lq_gwHQ/guys-does-anybody-make-it-default.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XytVSTPo1DA/T9YnDX4VcGI/AAAAAAAAK_8/HZnMSSAlktg/s72-c/multioptions.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/06/guys-does-anybody-make-it-default.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-2315486303989728037</guid><pubDate>Tue, 05 Jun 2012 19:10:00 +0000</pubDate><atom:updated>2013-03-05T23:10:57.240+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus features</category><title>Predefined NoteID for design elements and applications</title><description>Sometime those NoteIDs can be quite useful, so I decided to gather all of them into place I can easy find.&lt;br /&gt;
&lt;br /&gt;
FFFF0002 "About This Database" document&lt;br /&gt;
FFFF0004 Default form&lt;br /&gt;
FFFF0008 Default view&lt;br /&gt;
FFFF0010 Database icon&lt;br /&gt;
FFFF0020 Database Design Collection (view)&lt;br /&gt;
FFFF0040 Database ACL&lt;br /&gt;
FFFF0100 "Using This Database" document&lt;br /&gt;
FFFF0800 Replication Formula&lt;br /&gt;
&lt;br /&gt;
ReplicaID for few databases:&lt;br /&gt;
&lt;br /&gt;
0000000000000E00 Mail database&lt;br /&gt;
0000000000000E01 Personal Address Book&lt;br /&gt;
0000000000000E02 Subscription Database&lt;br /&gt;
0000000000000E03 Bookmark</description><link>http://feedproxy.google.com/~r/dpastov/~3/OSqcbCV6OJA/predefined-noteid-for-design-elements.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/06/predefined-noteid-for-design-elements.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-2389788909873743098</guid><pubDate>Fri, 30 Mar 2012 18:27:00 +0000</pubDate><atom:updated>2013-03-05T23:11:37.257+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus approach</category><category domain="http://www.blogger.com/atom/ns#">lotus features</category><title>Create Lotus Notes views on fly</title><description>I'm wondering if somebody know how to use views that I created on fly, lets say we have document with embedded view which is not created yet. Before we open this document we create view (but simple triggering agent). However we can't use this view as embedded view on document till we reopen database. Anybody has any  idea how we can avoid this problem?</description><link>http://feedproxy.google.com/~r/dpastov/~3/21Bk7P7e3Gk/create-lotus-notes-views-on-fly.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>2</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/03/create-lotus-notes-views-on-fly.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-4244486769631884986</guid><pubDate>Thu, 02 Feb 2012 20:26:00 +0000</pubDate><atom:updated>2012-02-02T21:29:13.060+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus and java</category><category domain="http://www.blogger.com/atom/ns#">DDE</category><title>Hope to see this feature at next version of DDE</title><description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;
That is actually how it should be instead of keeping everything inside of Library. Do you agree? It would solve the problem I described in my previous post which is about &lt;a href="http://dpastov.blogspot.com/2012/02/how-do-you-work-with-java-libraries-in.html" target="_blank"&gt;working with java libraries in LDD&lt;/a&gt;.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-o6ojxxZ725U/Tyrw-u4x_BI/AAAAAAAAKbE/ye8Ge2vzRZc/s1600/how-it-should-be.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-o6ojxxZ725U/Tyrw-u4x_BI/AAAAAAAAKbE/ye8Ge2vzRZc/s320/how-it-should-be.png" width="178" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Hey, IBM please do that and make our team happy :)&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/h1Fdh-ABwaE/hope-to-see-this-enhancements-at-next.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-o6ojxxZ725U/Tyrw-u4x_BI/AAAAAAAAKbE/ye8Ge2vzRZc/s72-c/how-it-should-be.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/02/hope-to-see-this-enhancements-at-next.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-566683026817710756</guid><pubDate>Thu, 02 Feb 2012 12:48:00 +0000</pubDate><atom:updated>2012-02-02T17:27:42.164+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus and java</category><title>How do you work with Java libraries in LDD?</title><description>Hi guys,&lt;br /&gt;
&lt;br /&gt;
We have faced up (actually long time ago) with problem which is related to Java libraries. Back-end of our applications on Domino is&amp;nbsp;written on Java fully. Each Java library has ofc own classes and&amp;nbsp;packages. However LDD allows to work only 1 person with 1 library at same time and it is really painful for us as we have to wait till another developer finish his job. Does anybody know if there is a way (SVN?) which may resolve our problem?&lt;br /&gt;
What we really would like to get - possibility to sync java classes with library, so developers would be able to work with same library and just sync changes to it.&lt;br /&gt;
We need something like on screen: java library transform into files and each of file&amp;nbsp;represent&amp;nbsp;own class. So we would sync it in both side...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/--TlGDJDt8wU/Tyq5Oh0epqI/AAAAAAAAKa8/LN00BHylpCg/s1600/JAVA-CLASSES.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="143" src="http://4.bp.blogspot.com/--TlGDJDt8wU/Tyq5Oh0epqI/AAAAAAAAKa8/LN00BHylpCg/s320/JAVA-CLASSES.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Any help would be appreciated :)</description><link>http://feedproxy.google.com/~r/dpastov/~3/u97bySLbES8/how-do-you-work-with-java-libraries-in.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/--TlGDJDt8wU/Tyq5Oh0epqI/AAAAAAAAKa8/LN00BHylpCg/s72-c/JAVA-CLASSES.png" height="72" width="72" /><thr:total>10</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/02/how-do-you-work-with-java-libraries-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-6253294894195823808</guid><pubDate>Tue, 24 Jan 2012 08:37:00 +0000</pubDate><atom:updated>2013-03-05T23:10:14.351+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DSAPI</category><category domain="http://www.blogger.com/atom/ns#">notes api c++</category><category domain="http://www.blogger.com/atom/ns#">Domino</category><title>Error pages in Domino</title><description>&lt;span style="font-family: Verdana, sans-serif;"&gt;First of all I'd like to briefly describe few another ways we can use to manage error pages in Domino.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;Also notice, I will definitely update post few times more after all.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;1. Lazy solution&amp;nbsp;&lt;span style="background-color: white; line-height: 17px; text-align: left;"&gt;$$ReturnGeneralError and&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: white; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: 17px; text-align: left;"&gt;MessageString&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 17px;"&gt;It's the most fast and easy solutions, it require to create 1 design element (form)&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; line-height: 17px;"&gt;$$ReturnGeneralError, style it and add&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; line-height: 17px;"&gt;MessageString somewhere to explain what is wrong&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Benefits&lt;/u&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- I see only 1 advantage compare to another approaches, its time to implement. Once you create&amp;nbsp;&lt;span style="background-color: white; line-height: 17px; text-align: left;"&gt;$$ReturnGeneralError it starts to work. So few clicks and few minutes to manage output UI and you have solution.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Disadvantages&lt;/u&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- works inside of application only. So if you have 10 web applications, you need to manage error page in each of it. However you can setup inheritance and manage all error pages from 1 place etc.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- not very flexible on my opinion as we can operate with form-design elements only.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;2. HTTP response headers&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;Simply create error page as design element or as document (does not matter) and create rule for your website in Domino Directory database. It does not require special knowledge and it is simple to use.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Bh1PANvAbXQ/TxqSCQ6ceXI/AAAAAAAAKaY/2SpTXqferz0/s1600/error_404_response_header.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" height="136" src="http://2.bp.blogspot.com/-Bh1PANvAbXQ/TxqSCQ6ceXI/AAAAAAAAKaY/2SpTXqferz0/s320/error_404_response_header.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Benefits&lt;/u&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- easy to manage&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- path to Error page (means we can use different database to keep error pages)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- we can use both: Design Elements and Documents as error page.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Disadvantages&lt;/u&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;- require minor Administration of Domino skills.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;-&amp;nbsp;&lt;span style="color: black; line-height: 18px;"&gt;&lt;span style="text-decoration: none;"&gt;it works in the same way as client side redirection. i.e.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; line-height: 18px;"&gt;&lt;span style="text-decoration: none;"&gt;user will see “blink” of standard 404 page&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; line-height: 18px;"&gt;&lt;span style="text-decoration: none;"&gt;&amp;nbsp;before loading custom 404 page.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b style="font-family: Arial, sans-serif; font-size: large; line-height: 20px;"&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b style="line-height: 18px;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;3. "Whole server" solution&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: black; font-family: Verdana, sans-serif; line-height: 18px; text-decoration: none;"&gt;Use HTTPMultiErrorPage property in the Notes.ini file, for example HTTPMultiErrorPage=/error.html.&amp;nbsp;Create rule on the Domino server for /error.html to be substituted corresponding page.&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Benefits:&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;Disadvatages:&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif; line-height: 18px;"&gt;&lt;b&gt;4. DSPAI as error handler for Domino&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;Most complicated approach but also most flexible from my point of view. There is quite low information about how to use it. It requires knowledge of Notes C Api as well. If you want to see how it looks,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Verdana, sans-serif; line-height: 18px;"&gt;here is very good exampe (it helped me a lot) on&amp;nbsp;&lt;a href="http://www.eview.com/eview/volr6.nsf/0/39552123B298D66C852569520065460A/$File/dsapilog.c"&gt;loggin using DSAPI&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;Company I worked in use&amp;nbsp;&lt;a href="http://dpastov.blogspot.com/2011/11/solution-for-lotus-domino-to-trailing.html"&gt;DSAPI for handling URL&lt;/a&gt;&amp;nbsp;already, and now we are near to implement error handling using DSAPI as well (it already implemented it on development server, so soon I will show you real links etc).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;DSAPI allows us to catch responses Domino generated for users and we can replace output in case if responce 400, 404 or any another.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;I will post most important part of logic here, just to how overview how DSAPI works and what is gives to us. Notice I've changed code a bit, to show only most important part of it (I will copy comments from Paul's example just to make things faster)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;u&gt;1. initiation of filter and register for response event&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;/*
* FilterInit() - Required filter entry point. Called upon
* filter startup, which occurs when HTTP server task is started.
*/
DLLEXPORT unsigned int FilterInit(FilterInitData* filterInitData) {
   filterInitData-&amp;gt;eventFlags = kFilterResponse;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;pre style="word-wrap: break-word;"&gt;&lt;span style="font-family: Verdana, sans-serif; line-height: 18px; white-space: pre-wrap;"&gt;so what we did there, say to filter that we want to process response events&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="word-wrap: break-word;"&gt;&lt;u style="font-family: Verdana, sans-serif; line-height: 18px;"&gt;2. Link events we registered with functions&lt;/u&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;/*
* HttpFilterProc() - Required filter entry point. Dispatches the event notifications to the appropriate functions for handling the events.
*/
DLLEXPORT DWORD HttpFilterProc(FilterContext *pContext, DWORD dwEventType, void *pEventData)
{
 switch (dwEventType) {
  case kFilterResponse:
   return Response(pContext, pEventData);
 }

 return kFilterNotHandled;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;Now we can process Responses to users&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="white-space: pre-wrap; word-wrap: break-word;"&gt;&lt;u style="font-family: Verdana, sans-serif;"&gt;3. This is how we process Response to users&lt;/u&gt;&lt;/pre&gt;

&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;
&lt;code&gt;int Response(FilterContext* context, FilterResponseHeaders* eventData) {
 int responce = eventData-&amp;gt;responseCode;

 if (responce==404) {
  if (&lt;b&gt;Send404(context)&lt;/b&gt; == TRUE) {
   return kFilterHandledRequest;
  }
 }
 return kFilterNotHandled;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;pre style="word-wrap: break-word;"&gt;&lt;u style="font-family: Verdana, sans-serif; white-space: pre-wrap;"&gt;4. Finally code for Send404() how we replace content to users&lt;/u&gt;&lt;/pre&gt;
&lt;pre style="word-wrap: break-word;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="white-space: pre-wrap;"&gt;While you read code you need to know that when we load filter we also initiate a table with KEY-HTML arrays. Yes we keep in memory Error HTML pages with keys we need. Our Keys - domain, we handle error pages on domain level, means for domain1.com - is 1 error page, for domain2.com is another error page. But you can do it in another way its up to you.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre style="background-color: #eeeeee; border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;
&lt;code&gt;int Send404(FilterContext* context) {
 FilterResponseHeaders         response;
 unsigned int   errID = 0;
 char     szBuffer[DEFAULT_BUFFER_SIZE]={0};
 char     pszErrorPage[ERRRO_PAGE_SIZE]={0};
 FilterParsedRequestLine pRequestLine;
 unsigned int   pErrID;
 int      i;

 // As we are returning the entire page to the browser, we can 
 // set the response code to 404 (so the domino web log will show the error)
 response.responseCode=404;
 response.reasonText="Bad Request";
 
 // get domain name (its our key), could be done faster? right now its simple walk via 10-20 documents which is fine for now
 context-&amp;gt;ServerSupport(context, kGetParsedRequest, &amp;amp;pRequestLine, NULL, NULL, &amp;amp;pErrID);
 for(i=0; i&amp;lt;errorPagesCount;i++) {
  if (strcmp(errorKey[i], pRequestLine.pHostName)==0) {
   strcpy(pszErrorPage, errorHTML[i]);
   i=errorPagesCount;
  }
 }

 if(strlen(pszErrorPage)&amp;lt;10) {
  sprintf(szBuffer, "Error page on %s is very small, something wrong", pRequestLine.pHostName);
  writeToLog(CRITICAL_MSG, szBuffer);
  return FALSE;
 }

 sprintf(szBuffer, "Content-Type: text/html; charset=UTF-8\n\nContent-length: %i\n\n", strlen(pszErrorPage));
 response.headerText = szBuffer;

 if (context-&amp;gt;ServerSupport(context, kWriteResponseHeaders, &amp;amp;response, 0, 0, &amp;amp;errID) != TRUE) {
  sprintf(szBuffer, "Error sending redirect, code: %d", errID);
  writeToLog(CRITICAL_MSG, szBuffer);
  return FALSE;
 }
    if (context-&amp;gt;WriteClient(context, pszErrorPage, (unsigned int) strlen(pszErrorPage), 0, &amp;amp;errID) != TRUE) {
  sprintf(szBuffer, "Error sending redirect, code: %d", errID);
  writeToLog(CRITICAL_MSG, szBuffer);
  return FALSE;
 }
 return TRUE;
}&lt;/code&gt;&lt;/pre&gt;

&lt;pre style="word-wrap: break-word;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="white-space: pre-wrap;"&gt;OK guys,&amp;nbsp;&lt;/span&gt;&lt;span style="white-space: pre-wrap;"&gt;I've shared &lt;/span&gt;&lt;span style="white-space: pre-wrap;"&gt;most complicated part of this DSAPI for error handling, rest you have complete yourself (homework :)), but feel free to ask my help here if you need.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;u&gt;benefits:&lt;/u&gt;&lt;br /&gt;- most flexible approach (at least from those which I know)&lt;br /&gt;- our logic control everything we want and we clearly see what is going on&lt;br /&gt;&lt;u&gt;disadvantages:&lt;/u&gt;&lt;br /&gt;- most complicated ways from all I described&lt;br /&gt;- require knowledge of Notes C API&lt;br /&gt;- I did not try yet this solution with Linux servers (but I know it is possible to do)&lt;br /&gt;- it may crash your Domino server in case if you did you filter wrong (memory leak etc)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="white-space: pre-wrap;"&gt;&lt;b&gt;5. xPage &lt;/b&gt;error handling &lt;strike&gt;is on way &lt;/strike&gt;(on pause actually) and would be nice if somebody help me with that. I've read few articles in past from Per Henrik:&lt;/span&gt;&amp;nbsp;&lt;a href="http://per.lausten.dk/blog/2011/01/xpages-custom-404-and-error-page.html" target="_blank"&gt;XPages custom 404 and error page&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://per.lausten.dk/blog/2011/06/controlling-the-http-response-status-code-in-xpages.html" target="_blank"&gt;Controlling the HTTP response status code in XPages&lt;/a&gt;, I think they can be very useful for those who doing in xPages. We will try this approach as we have ongoing huge projects based on xPage.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;Hey:&lt;br /&gt;- ask to update/more details to article&lt;br /&gt;- notify me about issues&lt;br /&gt;- let me know if you know better way to handle errors&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;strongly&lt;/b&gt;&amp;nbsp;recommended as it can help to many developers in future.&lt;/span&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/sypIIHW2wac/error-pages-in-domino.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Bh1PANvAbXQ/TxqSCQ6ceXI/AAAAAAAAKaY/2SpTXqferz0/s72-c/error_404_response_header.png" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2012/01/error-pages-in-domino.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-4369212660564148763</guid><pubDate>Mon, 12 Dec 2011 16:49:00 +0000</pubDate><atom:updated>2013-03-05T23:12:37.480+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">lotus and java</category><title>Using Velocity in Domino</title><description>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;We are using &lt;a href="http://velocity.apache.org/index.html"&gt;velocity framework&lt;/a&gt; to solve our task with html templates and when we started to work with velocity we faced up with problem below&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key member_access_not_allowed at&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;java.util.MissingResourceException.(MissingResourceException.java:50) at java.util.ResourceBundle.getObject(ResourceBundle.java:400) at java.util.ResourceBundle.getString(ResourceBundle.java:421) at lotus.notes.JavaString.getFormattedString(Unknown Source) at lotus.notes.AgentSecurityManager.checkMemberAccess(Unknown Source) at java.lang.Class.checkMemberAccess(Class.java:112) at java.lang.Class.getDeclaredMethods(Class.java:675) at org.apache.velocity.util.introspection.ClassMap.populateMethodCacheWith(ClassMap.java:167)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;thanks to my friend &lt;a href="http://lotusandjava.blogspot.com/"&gt;&lt;b&gt;Adnrew Kuba&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;we have found the issue in velocity's source (well it is an issue only for Domino).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;i&gt;org.apache.velocity.util.introspection.ClassMap.populateMethodCacheWith(MethodCache, Class)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;that line we have to change to get only Public methods but not all declared as it requires more access then Domino gives by default (we are not able to to get all private methods into Domino for security reason), so we just changed &lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;getDeclaredMethods&lt;/span&gt;&lt;/b&gt;&amp;nbsp;to &lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;getMethods&lt;/span&gt;&lt;/b&gt;&amp;nbsp;and problem has gone.&lt;/span&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/PUbTsH4GM3c/using-velocity-in-domino.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>3</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/12/using-velocity-in-domino.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-8639048739358458077</guid><pubDate>Tue, 01 Nov 2011 08:54:00 +0000</pubDate><atom:updated>2013-03-05T23:11:17.171+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DSAPI</category><category domain="http://www.blogger.com/atom/ns#">SEO</category><category domain="http://www.blogger.com/atom/ns#">Domino</category><title>Solution for Lotus Domino to the trailing slash problem</title><description>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;2 months ago I've posted article about &lt;/span&gt;&lt;a href="http://dpastov.blogspot.com/2011/08/domino-resolve-url-with-and-without.html" style="font-family: Verdana, sans-serif;"&gt;solution which can solve our problem in Domino with last trailing slash in URL&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;. As I mentioned in my previous post, Domino does not care about url with/without last trailing slash, both way would work for Domino. Well, some of you maybe even find this feature useful because it gives less problems, however what if we talk about SEO (Search Engine Optimization)?&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;There is actually article from google about &lt;/span&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2010/04/to-slash-or-not-to-slash.html" style="font-family: Verdana, sans-serif;"&gt;to slash or not to slash&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;, where they explain that they handle similar URL with and without last trailing slash as 2 different URL, they also propose ways how to solve this. If you ask what is bad here, answer is quite simple: just image that each URL has it's power/score for google. In case if we have only 1 possible URL for our page all scrore go to it, otherwise we will split them (high score will go to URL which is more often used by people in web).&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Now about solution we implemented on our website. We used DSAPI to solve it as it does not do affect speed so much as different solutions. If you want to read more deeply about technical staff, you may want to read this article:&amp;nbsp;&lt;/span&gt;&lt;a href="http://techtalk.e-conomic.com/lotus-domino-dsapi-filter/" style="font-family: Verdana, sans-serif;"&gt;solution to the trailing slash problem&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;.&lt;/span&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Yes it works like it should, no impact to page load's speed which was "very-very" important to us. And I heared google start to love us a bit more after that.&lt;/span&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/bKpGqNjhG7s/solution-for-lotus-domino-to-trailing.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/11/solution-for-lotus-domino-to-trailing.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-3341822125515636455</guid><pubDate>Sat, 08 Oct 2011 17:19:00 +0000</pubDate><atom:updated>2011-10-08T19:23:14.902+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><title>JavaScript: use power of console</title><description>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;console.log() - is pretty nice way to display debug information without interrupting user's actions. But do you know that 'console object' has lot of other useful methods? In this article I will try to show another important method in console object.&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;1. power of output&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;most common case for using console object is:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;&lt;i&gt;console.log("hello word")&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;but here few more ways how we can use it&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.log("string1", "string2", 1, 2, {proper1:"val1", proper2: 5});&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.log("Do you know that word %s same for all language except english %s. %d &amp;lt; %d", "ananas", "pineapple", 1, 2);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; margin-left: 1em; margin-right: 1em;"&gt;&lt;a href="http://3.bp.blogspot.com/-qcol0mtcXoA/TpCB_5I74II/AAAAAAAAKZE/t7OXhHdPzC8/s1600/output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="32" src="http://3.bp.blogspot.com/-qcol0mtcXoA/TpCB_5I74II/AAAAAAAAKZE/t7OXhHdPzC8/s320/output.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;There are few another kind of log (works same as log but has different status)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;console.debug(),&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;console.info(),&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;console.warn(),&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;console.error()&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;console.group() and console.groupEnd() allow you to format very nice output with categories, it is very usefull when you have tons of data in log so you can easy control what is related to etc.&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.group("Food")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.group("Fruit")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.log("Apple")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.groupEnd("Fruit")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.group("Vegetables")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.log("Potato")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.groupEnd("Vegetables")&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;console.groupEnd("Food")&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; margin-left: 1em; margin-right: 1em;"&gt;&lt;a href="http://1.bp.blogspot.com/-3tD75LGqvO8/TpCCDGRHWEI/AAAAAAAAKZI/FtMFesGuwWw/s1600/group.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="54" src="http://1.bp.blogspot.com/-3tD75LGqvO8/TpCCDGRHWEI/AAAAAAAAKZI/FtMFesGuwWw/s320/group.png" width="320" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;2. power of time&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;just put&amp;nbsp;&lt;b&gt;console.time()/&lt;/b&gt;&lt;b&gt;console.timeEnd()&amp;nbsp;&lt;/b&gt;before/after code where you want to measure time&amp;nbsp;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Aslo there are profile methods &lt;b&gt;console.profile()&lt;/b&gt; and &lt;b&gt;console.profileEnd()&lt;/b&gt;&amp;nbsp;which allow to see "stack".&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;3. power of inspection&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;I guess most of us often want to see specific properties in HTML fragment, for such tasks we can use console.dir(object) or console.dirxml(element)&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Some usefull articles about logging:&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://getfirebug.com/logging"&gt;Firebug about logging&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;/span&gt;&lt;a href="http://v0.joehewitt.com/software/firebug/docs.php"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Joe Hewitts about console&lt;/span&gt;&lt;/a&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/CTcBQMBX838/javascript-use-power-of-console.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-qcol0mtcXoA/TpCB_5I74II/AAAAAAAAKZE/t7OXhHdPzC8/s72-c/output.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/10/javascript-use-power-of-console.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-6795370460164037700</guid><pubDate>Tue, 20 Sep 2011 07:00:00 +0000</pubDate><atom:updated>2011-09-20T16:22:21.349+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SEO</category><title>Page-layout rel = «next | prev»</title><description>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Along with the attribute &lt;a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html"&gt;rel = «canonical»&lt;/a&gt; to specify a 'search robot' to duplicate content, it is now possible to use the HTML reference value rel = "next" and rel = "prev" to indicate the position of the current page with neighbors in the navigation box. F.x. you have article splitted on 10 pages and you use next/prev buttons in order to move from one page to another. If you want to be sure that most of 'score' from 'google spider' will go to main page red="next"/"prev" is the very good options.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;b&gt;Here is more details about our example&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=3&lt;/a&gt;&lt;br /&gt;...&lt;br /&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=10&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Now about rel="next" and rel="prev"&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=1&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;next&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=2" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=2&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;next&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=3" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;prev&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=1" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=3&lt;/a&gt; &lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;next&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=4" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;prev&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=2" /&amp;gt;&lt;/span&gt;&lt;a href="http://www.example.com/article?story=abc&amp;amp;page=1"&gt;www.example.com/article?id=123page=10&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: purple;"&gt;&amp;lt;link rel="&lt;b&gt;prev&lt;/b&gt;" href="http://www.example.com/article?id=123&amp;amp;page=9" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;b&gt;Few notes:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;
&lt;li&gt;First page should have only rel=«next».&amp;nbsp;&lt;/li&gt;
&lt;li&gt;All pages between 1-st and last usually should have both only rel=«next» and rel="prev".&lt;/li&gt;
&lt;li&gt;Last page should have olny rel=«prev».&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Allowed to use the value rel=«previous» as an alternative to rel=”prev”. Not sure if it has sence :)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In case if you fail with that Google will continue to index your content with own heuristic logic.&lt;/li&gt;
&lt;/span&gt;&lt;/ul&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul style="list-style-image: initial; list-style-position: initial; list-style-type: disc; margin-bottom: 1.5em; margin-left: 2.65em; margin-right: 1em; margin-top: 1.5em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #4d7386;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ul&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: #f8f8f8; color: #4d7386;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #f8f8f8; color: #4d7386;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: #f8f8f8; color: #4d7386;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black;"&gt;&lt;span class="Apple-style-span" style="white-space: nowrap;"&gt;sources:&amp;nbsp;&lt;a href="http://googlewebmastercentral.blogspot.com/2011/09/view-all-in-search-results.html"&gt;View-all in search results&lt;/a&gt;&amp;nbsp;and &lt;a href="http://habrahabr.ru/blogs/google/128746/"&gt;Page-layout rel = «next | prev»&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: #f8f8f8; color: #4d7386;"&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://feedproxy.google.com/~r/dpastov/~3/uiYlaycIo40/page-layout-rel-next-prev.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/09/page-layout-rel-next-prev.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-1576344544030192149</guid><pubDate>Wed, 03 Aug 2011 07:24:00 +0000</pubDate><atom:updated>2011-08-03T09:27:19.318+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Google</category><title>Chrome 13 ready</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-oGMnzXitJCE/Tjj4OWUS4UI/AAAAAAAAKYg/_8sn6unPGMc/s1600/chrome13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://3.bp.blogspot.com/-oGMnzXitJCE/Tjj4OWUS4UI/AAAAAAAAKYg/_8sn6unPGMc/s320/chrome13.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/rML9SSuMC2g/new-version-of-chrome-ready-to-be.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-oGMnzXitJCE/Tjj4OWUS4UI/AAAAAAAAKYg/_8sn6unPGMc/s72-c/chrome13.png" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/08/new-version-of-chrome-ready-to-be.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-34728599.post-3505153881253612202</guid><pubDate>Tue, 02 Aug 2011 14:43:00 +0000</pubDate><atom:updated>2013-03-05T23:08:42.642+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DSAPI</category><category domain="http://www.blogger.com/atom/ns#">SEO</category><category domain="http://www.blogger.com/atom/ns#">Domino</category><title>Domino resolve URL with and without trailing as same URL, wrong?</title><description>We are faced with a problem (for us) with Domino. The problem is that Domino processes  those 2 URL as similar same URL:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://host/page" style="color: #5c81a7; font-family: verdana, arial, sans-serif; font-size: 11px;"&gt;http://host/0/unid&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://host/page/" style="color: #5c81a7; font-family: verdana, arial, sans-serif; font-size: 11px;"&gt;http://host/0/unid/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
the difference in 'trailing' (for those who thinks in same way as Domino :]). Well, it would be not a problem at all if you do internal staff, even very useful, problems start when we talk about SEO.&lt;br /&gt;
&lt;br /&gt;
It actually affects our websites, as f.x. google 'eats' 2 URL (I mentioned above) as 2 different URL so their 'value' will be split on 2 part + 2 URL with same content also very bad as it is duplicate.&lt;br /&gt;
&lt;br /&gt;
We should be able to either make 301's from the NOT CORRECT to the CORRECT URLs, or respond with a 404 (not found). Both options would be good.&lt;br /&gt;
&lt;br /&gt;
Does anybody know ways how to do it?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[update from 28 October 2011]&lt;/b&gt; we've found solution with DSAPI filter, here you can read&lt;b&gt;&amp;nbsp;&lt;a href="http://techtalk.e-conomic.com/lotus-domino-dsapi-filter/"&gt;Solution to the trailing slash problem in Lotus Domino&lt;/a&gt;&lt;/b&gt;</description><link>http://feedproxy.google.com/~r/dpastov/~3/Jg5XNpAlkFE/domino-resolve-url-with-and-without.html</link><author>noreply@blogger.com (Dmytro Pastovenskyi)</author><thr:total>3</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://dpastov.blogspot.com/2011/08/domino-resolve-url-with-and-without.html</feedburner:origLink></item></channel></rss>
