329 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Jobs | Twitter | Bookmarks | Pods | Blogs | Search | myPL | About 
 
Latest 7 Posts
Two critical HTTP problems in Domino 9...
Fri, Mar 29th 2013 451
Happy Pi Day present: Pi Calculator for XPages...
Thu, Mar 14th 2013 257
DOTS Deep Dive 4: I can schedule myself...
Thu, Feb 21st 2013 244
DOTS Deep Dive 3: Warning for Deadlocks
Thu, Feb 14th 2013 240
DOTS Deep Dive 2: Cancel me or I will crash your server...
Wed, Feb 13th 2013 257
DOTS Deep Dive 1: Art of Scheduling Tasklets
Mon, Feb 11th 2013 252
A rookie speaker was here...
Wed, Feb 6th 2013 303
Top 10
A little story about an error with ID Vault...
Wed, Jan 12th 2011 639
Authenticating Notes users for Web apps automatically...
Wed, May 11th 2011 599
Second Article is on The View: Custom Controls - Deep Dive into Parameterization
Thu, Nov 29th 2012 498
XPages Tip: A simple CC for prompting SSJS messages to UI...
Mon, May 2nd 2011 451
Two critical HTTP problems in Domino 9...
Fri, Mar 29th 2013 451
6000 miles flight and I will speak at IBM Connect 2013...
Mon, Dec 10th 2012 426
Experimenting DOTS task vs. Java Agent
Fri, Nov 9th 2012 397
My first NotesIn9 show: Introduction to DOTS
Tue, Dec 4th 2012 395
Five weeks of Yammer experience...
Fri, Jul 27th 2012 391
Still part of IBM Champions Program!
Wed, Dec 12th 2012 373


"Dotless i", toLowerCase and toUpperCase functions: Use responsibly!
Serdar Basegmez    

"Dotless i" problem is the most profitable area in my revenue stream :)

Since the beginning of my career, I found and isolated dozens of bugs simply related to 'dotless-i'.

I have already blogged about it couple of times, but let me sum up the problem.

There are Turkish characters in our language, as in many others. But two exceptional cases are "ğ" (curved g) and "ı/İ" (dotless-i/dotted-I) characters. The first one is a whole different story that some linguistic experts suggest its removal. The second one is a serious headache for us.

Image:"Dotless i", toLowerCase and toUpperCase functions: Use responsibly!
Dotless-i, is a lowercase 'i' without dot. The uppercase of this character is the usual "I". There is another character, "I with dot". The lowercase of this character is the usual lowercase "i".

Have you noticed the problem? This unsymetrical conversion causes a serious problem in programming. We face this problem mostly in Java applications because of (IMHO) poor implementation of toLowerCase and toUpperCase functions.

In Java, String.toLowerCase() method converts characters to lowercase according to the default locale. This causes problems if your application works in Turkish locale and especially if you are using this function for a file name or a url that must obey a certain character set.

I have blogged about two serious examples before: The compile errors with Script libraries with "i" in their names and XSP Manager's fault if an XPage is in a database with "I" in its name.

There is a long history, as I said. For instance in some R7 version, router was unable to send a message to a recipient if his/her name starts with "I". Message reporting agents was not running in Turkish locale until R8. Anyone with Turkish locale could not install Lotus Notes 8.5.1 (it's real!). The list goes on...

There is almost no beta tester from Turkey and customers don't open PMR for these problems. So these problems are not going up to the first priority for development teams.

Even Java team has added a special warning to the latest documentation:

Note: This method is locale sensitive, and may produce unexpected results if used for strings that are intended to be interpreted locale independently. Examples are programming language identifiers, protocol keys, and HTML tags. For instance, "TITLE".toLowerCase() in a Turkish locale returns "t?tle", where '?' is the LATIN SMALL LETTER DOTLESS I character. To obtain correct results for locale insensitive strings, use toLowerCase(Locale.ENGLISH).


My point is to give a simple suggestion for all Java programmers.

If you are using toLowerCase and toUpperCase function for non-textual context, use them as suggested above!

Use responsibly :)



---------------------
http://lotusnotus.com/lotusnotus_en.nsf/dx/dotless-i-tolowercase-and-touppercase-functions-use-responsibly.htm
Apr 05, 2012
231 hits



Recent Blog Posts
451


Two critical HTTP problems in Domino 9...
Fri, Mar 29th 2013 6:48a   Serdar Basegmez
After I upgraded my servers to Domino 9, I have found two problems affecting HTTP task. 1. Redirect TCP to SSL problem... My HTTP task stopped responding just after the upgrade. When I look into thread logs I saw that it was redirecting every requests to the same URL! After a couple of tests, I found that if you have "Redirect TCP to SSL" checked in your Internet Site document, it fails with infinite redirection problem. I posted the issue into the N/D 9.0 Social Edition forum and [read] Keywords: administration domino ibm ldd lotus notes traveler mobile profile server
257


Happy Pi Day present: Pi Calculator for XPages...
Thu, Mar 14th 2013 2:56a   Serdar Basegmez
Today is the "Pi Day"... Last week I was playing with Threads and Jobs project from OpenNTF. I needed a very long job to be run n the server-side. I have thought calculating pi digits would be a cool selection :) I found a Javascript-based Spigot algorithm by Stephen R. Schmitt and easily converted to Java (sorry about the code!). Notice that, on an average machine it calculates 10,000 digits in less than a minute. Now consider, ENIAC has calculated 2037 digits in 70 hours in 1949! [read] Keywords: xpages database development java javascript openntf server wiki
244


DOTS Deep Dive 4: I can schedule myself...
Thu, Feb 21st 2013 5:20a   Serdar Basegmez
Finally, we will be able to enable FeedMonster for CollaborationToday project. While doing final touches, I have been challenged by a question: "Can we schedule DOTS tasklets programmatically?" Actually, this is in the wish list for the next version of DOTS. But we can do some trick here. I didn't test this on Domino 9 but it should work. Here is the code: package org.openntf.news.playground.tasklets; import org.eclipse.core.runtime.CoreException; import org.eclipse.core [read] Keywords: domino ibm eclipse openntf profile xml
240


DOTS Deep Dive 3: Warning for Deadlocks
Thu, Feb 14th 2013 7:03a   Serdar Basegmez
Last time, I have blogged about the importance of the importantance of canceling tasklets... In most of the time, canceling a task is a 'choice' you have. You might want to stop the task for a reason. However, a very important problem is falling into deadlocks. If somehow your code falls into a deadlock or stuck situation, that would lock your DOTS container entirely. DOTS uses a basic mechanism for identifying scheduled tasklets that are stuck. Every tasklet starts its life with a pre [read] Keywords: ibm java openntf server
257


DOTS Deep Dive 2: Cancel me or I will crash your server...
Wed, Feb 13th 2013 3:53a   Serdar Basegmez
I just wanted to emphasize an important functionality within DOTS... One of our slides in the recent DOTS session in IBM Connect 2013, we have talked about the "monitor" argument in tasklets. It has two important uses. First of all, you might let DOTS container know about your progress. Second, it allows you to cancel your task in a less-disruptive manner. Let's dive into code here. Our tasklet is running every five seconds and wait 30 seconds each run: @RunEvery( every=5, [read] Keywords: domino ibm application java profile server
252


DOTS Deep Dive 1: Art of Scheduling Tasklets
Mon, Feb 11th 2013 4:02a   Serdar Basegmez
After a successful IBM Connect session, I started a series of posts, based on feedbacks I received from other developers. There was a little thing I didn't test before the session and this issue has been asked a couple of times: Possible conflicts between scheduled tasklets. Unfortunately, current implementation within DOTS is based on single threaded approach for tasklets. There are three different threads responsible in DOTS tasklet container for scheduled, manual and triggerred tasklet [read] Keywords: domino ibm sametime java profile




303


A rookie speaker was here...
Wed, Feb 6th 2013 7:06a   Serdar Basegmez
I was there, at IBM Connect 2013. My second Orlando visit was far more greater this time. A speaker badge combined to the IBM Champion ribbon, more experience and more fun! This year, my schedule was packed. I have planned lots of sessions and attended most of them. After last year's disappointment in BDD, I attended master classes on sunday and they were great! Two sessions were approaching development process in a different angle and they were especially exceptional. On sunday master [read] Keywords: domino ibm lotusphere notes application applications community development eclipse java openntf server skype
253


IBM Connect Session: BP207 - Meet the Java Application Server you already own...
Tue, Jan 22nd 2013 5:12a   Serdar Basegmez
Last year was my first Lotusphere. I had a great pleasure visiting labs and talking to developers from IBM. I have met to David Taieb and we were discussing about an idea (or a suggestion) about XPages. We are lacking a (distributed) back-end processing system for XPages. When you have to run a really long process in your application which could be a reporting, calculation or so forth, you don't have anything to keep users waiting with an hour glass. David sketched a diagram showing how S [read] Keywords: administration agent domino ibm lotusphere notes xpages application applications development java office openntf server
373


Still part of IBM Champions Program!
Wed, Dec 12th 2012 5:18a   Serdar Basegmez
In 2011, I have been honored to be recognized as IBM Champion for IBM Collaboration Solutions (formerly, Lotus Software). Yesterday, 2013 class has been announced by our precious community manager Joyce Davis and my title has been renewed for 2013. There are new champions on the list as well. But I am most delighted to see my dear friend, fellow founder of Turkish Lotus User Group and neighbour Ferhat Bulut (with the well-deserved nick name: bestcoder!). Ferhat is working for Akbank, o [read] Keywords: collaboration connections ibm lotus xpages blackberry community integration openntf
426


6000 miles flight and I will speak at IBM Connect 2013...
Mon, Dec 10th 2012 11:21a   Serdar Basegmez
Yes you heard right... One of two sessions I have submitted has been accepted. It will be a great excitement for me to speak at IBM Connect for the first time, and also honored to do this with my dear friend Bruce Elgort (and I might be the first speaker from Turkey... Not sure...). Meet the Java Application Server You Already Own - Domino "Java and in particular OSGi are now very important parts of the Notes/Domino app dev model. In this session you will learn about OSGi and how easy [read] Keywords: domino ibm notes xpages application applications community java server




Created and Maintained by Yancy Lent - About - Blog Submission - Suggestions - Change Log - Blog Widget - Advertising - Mobile Edition