Wednesday, January 19, 2011

trying to get full control over xPage auto generated html

I know xPage is great especially for RAD but I feel bad when I see how Domino generates HTML for xPage's application and dojo why it loads even if I do not want to use it? yea, I know that most of xPage's controls use it but anywhere I want to keep control over each html-tag. I want nice html. I want to know what is going on with my html. I'm sure all of you saw what html we get from xPage, and I want to repeat once again "I'm not fan of that".
Here are couple steps for those who want to get some more control over xPage. I will show example with new application that has only one xPage.

so let's start. we created new application and created new xPage, let's call it 'index'. Open it in browser. what do you see? My Domino generates already lot of staff.

1. included dojo.
2. included css.
3. created form and put there ~6 fields for some reasons. I do not know why.
4. html, head, title, body tags and !DOCTYPE

So instead to display empty page, Domino generated ~1Kb of some data we did not ask.

1-st step: disable default dojo in xPage.
You can disable the loading of the default Dojo, for example in order to use a more recent version of Dojo. In the Package Explorer in Domino Designer open your database and find the WebContent/WEB-INF/ file.
Edit the file and addxsp.client.script.libraries=none
Switch to Java perspective and Package Explorer there by default, so go there and make update. Save and check results. 2 line disappeared.

2-nd step: disable CSS.
create new Theme and remove extends="webstandard" and add this Theme in application properties as one we want to use. check hmtl source again - 3 lines with css went out.

open our index xPage and go to properties, tab Basic and set CreateForm = false. Save. Check. 
nice! we are quite near :)

4-th step. get empty blank xPage.
I do not know yet the way how correctly suppress rest of these tags and how to change doctype, so next time when I found solution I will update article.

Funny, while I was looking for solution for 4-th step, I found absolutely similar article from Chris, so you can read more older one This is an xPage.

Tuesday, January 18, 2011

Google Maps API - MarkerClusterer

If you ever did some job linked with google map (f.x. show markers with popup) you probably noticed problem with huge amount of markers (f.x.1000 markers). It does slow performance of webpage + it looks not very nice on UI (just mass of markers on same place). There is solution for such situation: MurkerClusterer, it allows to join markers into cluster with possibility to have different cluster on different zoom.
Here is an article about it - markerClusterer solution to the Too Many Markers problem
For those who works with Google Maps API this article is mandatory to read.

short dojo + ajax example how to get data from db

There are 3 most useful ahax-approaches I use when working with Lotus Domino:
- getting view as JSON. database.nsf/viewname?readviewentries& OutputFormat=JSON (fast and modern)

- agent approach (example here, most flexible and probably most slow approach)
- page/form/view as elelemnts, f.x. database.nsf/myform?openform&unid=123123 (easy to use but not  flexible, I use it very rarely)

Very small and known example of dojo's ajax, I'm getting some information from agent and then will use it in my JS later.

var jsondata;
url: "database/agentGetData?Openagent&param1=id1",
sync: true,
load: function(data) {
jsondata = data;

I'm interesting in any another 'smart' approaches, so if u have some interesting idea we can discuss in comments them.

Sunday, January 16, 2011

Thursday, January 06, 2011

Merry Christmas, dear Orthodox !


Improving SEO for blogspot bloggers. Lesson #1.

Everybody wants to have at least not worst SEO on own blogs. In case if you have you own blog on Domino or another platform, use your hands and do updates but if you are one who use blogspot, here it couple tips I would like to suggest to do. It is quite simple and fast.

1. Title tag. Check it on main page, does it says what you wanted?
looks on different pages as well. If you want to update it go to Design of your blog and open it as HTML, find area with title and replace it on such one

<b:if cond='data:blog.pageType == &quot;item&quot;'>
<title><data:blog.pageName/> | <data:blog.title/></title>
<title><data:blog.pageTitle/> | Your additional keywords</title>

Actually you are free to put there whatever you want. Mostly all says that ideal length for title tag is 69-70 chars. So remember that and try to make it near to that.

2. By default blogspot does not include meta tags such as description and keywords, so we have to add that manually (at least my blog did not have these tags). Good length for this tags are: meta description ~156, meta keywords is about 180 chars. Here is snapshot of what you need to add to your template.

<b:if cond='data:blog.url == data:blog.homepageUrl'>
<meta content='bla bla bla' name='description'/>
<meta content='lotus, motus, fotus, focus, etc' name='keywords'/>

if you read logic carefully you will see that it says: add meta tags only for main page, that's because otherwise we will get these tags on all pages and that's very bad, google does not like same meta description on pages. that's duplicate and you will decrease PR. Later I will add some information how we can have unique meta tags on pages.

3. sitemap. I believe it is not necessary as we are already you google so it does this automatically, but anywhere, better to do :), I hope you have already enabled RSS on your blog. So just open Google Web Master add you site there and find menu Sitemap and try to add next /atom.xml?redirect=false&start-index=1&max-results=300you can update max-results as u wish. If everything went fine you should see Status 'OK' and number of of URL should be same as you have in you atom.xml.

4. that's is not linked to blogspot problem, but just remember that:
- Images should have title and alt.
- Tag <strong> is better that <b>, but as I see it requires go fix it into HTML of your entry.

These tips are legal and easy to implement, but remember, unique and interesting content is the key.

Monday, January 03, 2011

Native JSON

var jsonObjStr = '{"name":"Erast Fandorin", "speciality":"detective"}';
var object_person = JSON.parse(jsonString);
// object_person is object now with 2 properties

var personString = JSON.stringify(person);
// personString now keeps the string '{"name":"Erast Fandorin", "speciality":"detective"}'

this native JSON is now supported mostof browsers, so just use it :)