SpellChecker.net Blog

September 28, 2009

How to make SCAYT default spell-checker in FCKeditor 2.6.5

WebSpellChecker (WSC) is a default spell-checker in FCKeditor 2.6.5. To make SpellCheckAsYouType (SCAYT) a default spell-checker in FCKeditor 2.6.5 please follow the instruction below:

1) Open ckconfig.js (…\FCKeditor_2.6.5\fckeditor\fckconfig.js) for edit
2) Change the value of parameter “FCKConfig.SpellChecker” to “SCAYT”

It should look like:

FCKConfig.SpellChecker = ‘SCAYT’.

Comments ->Welcome to the Forum.

July 15, 2009

Internet Explorer 8.0 is supported

Filed under: Technical posts — Tags: , , , , , — marianna @ 10:49 am

ie8
We received several emails from customers, where they ask if Internet Explorer 8 is supported by SpellChecker.net applications. The answer is yes.

We maintain all compatible browsers starting from certain versions. Release of new versions is monitored, compatibility tests of the SpellChecker.net products on newly released versions is performed.

Compatible Browsers are as follows:
* Internet Explorer 6.0 +
* Firefox 2.0 +
* Google Chrome
* Safari 3.0 +

June 30, 2009

SpellChecker.net uses Amazon Features for Load Balancing

Filed under: Technical posts — Tags: , , , — marianna @ 1:54 pm

load graph

SpellChecker.net company doesn’t only sell licenses of the application, but also provides spell-checking service. With the growth of the number of SpellChecker.net customers we faced with a necessity to start balancing the load. In scope of this post we want to share our experience how we balance the volume on our servers.

The question of load balancing became more urgent when WebSpellChecker became a part of FCKeditor 2.6.4 available for all users of the editor. And now when CKEditor 3.0 with an embedded SCAYT 2.0 is coming load balancing will play a huge role in the service provision.

On the image at the right you can see how server load varies within 24 hours (time range is based on PDT). Load is not equal during a day. As we use Amazon EC2 servers it is not reasonable to run instances and pay for an additional server time when we do not need it. But at the same time we must be sure that the number of running servers is enough to provide stable and reliable work of the service. Logic solution is to have variable number of servers running at the same time.

Though the solution is obvious – tools to implement and support it are required. At first we started the development of our own load balancing agent and instance manager. Being in the middle of the implementation we received a Newsletter from Amazon “Introducing Monitoring, Auto Scaling and Elastic Load Balancing for Amazon EC2″.
amazon
Newsletter started with “We are excited to announce the public beta of several new features for the Amazon Elastic Compute Cloud (Amazon EC2): Amazon CloudWatch, a web service for monitoring AWS cloud resources, Auto Scaling for automatically growing and shrinking Amazon EC2 capacity based on demand, and Elastic Load Balancing for distributing incoming traffic across Amazon EC2 compute instances. Together, these capabilities provide you with visibility into the health and usage of your AWS compute resources, enhance application performance, and lower costs.”

It is useful to read newsletters! After reviewing mentioned features released by Amazon we made a conclusion that it is exactly what we need for load balancing!

New Amazon features provide us with the following benefits:
1. With Auto Scaling we can ensure that the number of Amazon EC2 instances we’re using scales up seamlessly during demand spikes to maintain performance, and scales down automatically during demand lulls to minimize costs. Auto Scaling is well suited for applications that experience hourly, daily, or weekly variability in usage. So it perfectly meets our needs!
2. Thanks to CloudWatch feature we have a visibility into resource utilization, operational performance, and overall demand patterns – including metrics such as CPU utilization or network traffic.
3. Elastic Load Balancing allows us to automatically distribute incoming application traffic across multiple Amazon EC2 instances.

We have just started to use Amazon Features for load balancing and will share our experience in the next posts.

March 25, 2009

Security Improvements

Filed under: Technical posts — Tags: , , — marianna @ 3:33 pm

Customers help us to make the SpellChecker.net better!

salesforceSpecial thanks to Salesforce!

“Salesforce.com is the worldwide leader in on-demand customer relationship management (CRM) services. More companies trust their vital customer and sales data to salesforce.com than any other on-demand CRM company in the world.”  Salesforce has used the SpellChecker.net since 2000.

Salesforce pays lots of attention on the security of the application and utilizes some of the most advanced technology for Internet security available today. Details are available in Security Statement. The SpellChecker.net as a part of Salesforce must meet security requirements as well.

This winter Salesforce was working on the improvement of their already excellent security. Ours and Salesforce teams combined their efforts  to make the SpellChecker.net application better from security prospective. Salesforce security team performed a number of test paths and provide us with a list of security issues that we successfully addressed.  These days we received a confirmation from Salesforce that “The scan has been re-run and all the XSS problems are now resolved!”.

Updated and improved sproxy files will be uploaded to our site shortly. Security updates are available for free for all licensed customers who have maintenance.

February 17, 2009

P3P is guilty in blocking of words addition to a dictionary

Filed under: Technical posts — Tags: , , — Andrew Zhuravok @ 5:40 pm

P3P is guilty in blocking of words addition to a dictionary

These days we received a support request from one of our new licensed clients. The problem was as follows. Person was not able to add word to a dictionary. To be more precise it seemed that a word was added to a dictionary, but then was marked as misspelled again.
The reason of the problem was not obvious at a glance. But after further investigation and analysis of requests we arrived at a conclusion that web browser’s processing of P3P blocked words from being added to a dictionary.

What is P3P?

From Wikipedia:  “The Platform for Privacy Preferences Project, or P3P, is a protocol allowing websites to declare their intended use of information they collect about browsing users. Designed to give users more control of their personal information when browsing. P3P allows browsers to understand their privacy policies in a simplified and organized manner rather than searching throughout the entire website. By setting your own privacy settings on a certain level, P3P will automatically block any cookies that you might not want on your computer.”

How does P3P affect functionality of the SpellChecker.net?

As soon as user dictionary related functionality is based on cookies web browser’s P3P processing affects this functionality. For Internet Explorer web browser default P3P settings do not allow “third party cookies that do not have a compact privacy policy”. The default behavior can be changed in the browser settings, but we as developers of the application can’t change and cannot recommend to change default settings of the web browser for the thousands or even millions of end-users. SpellChecker.net application use the client side architecture with the frameset where frameset belongs to one security domain and all frames to the other one. For example, when the customer’s web application is running on domain1.com and the Spellchecker.net application is running on domain2.com the domain2.com is a “third party” domain name to domain1.com and is trying to set cookies. Default settings in Internet Explorer web browser do not allow browser to store cookies from domain2.com in this situation.

Problem solving

To avoid this problem the application (in our sample above on domain1.com) need to send additional header. The header named P3P should be prepared. Details on what should be presented in this header can be found here: http://www.p3pwriter.com/LRN_111.asp. It is not correct to set the header inside the SpellChecker.net application as soon as the company who purchased the application may have different policy and may want to change it. The settings can be added to the settings of the web site.
For the IIS web server header can be set specifically to the path /spellcheck/script/ using IIS Management Console. It can be set in the properties dialog of the /script/ directory and choose HTTP Headers tab and add the header.

For the Apache web server header can be set according to apache web server documentation (http://httpd.apache.org/docs/2.2/mod/mod_headers.html#header) using the Header directive:

Header add P3P “[P3P policy value]”

Problem indicator

In the Internet Explorer web browser, the problem with privacy settings can be observed when an eye with a red sign appears in the status bar of browser window like on the shot below:

p3p problem indicator

February 6, 2009

FCKeditor 2.6.4 and WebSpellChecker embedding procedure

Filed under: Technical posts — Tags: , , — Andrew Zhuravok @ 5:52 pm

Some of SpellChecker.net customers were confused with the information on installation procedure. The installation procedure for the common version of WebSpellChecker requires sproxy script. The previous version of the WebSpellChecker plug-in for the FCKeditor is based on common version and requires sproxy script too.

The new WebSpellChecker plug-in for the FCKeditor is a part of the FCKeditor 2.6.4 and does not require any installation steps. All required settings/configuration already done in the plug-in code.

January 21, 2009

Linux compatibility issues we met on x86_64

Filed under: Technical posts — Tags: — Konstantin @ 7:18 pm

Now the licensed version of our product is also available on x86_64 platform.

Initially WebSpellChecker was designed when nobody heard even about plans to implement 64-bit platform of x86 processor family. And when our clients started requesting 64-bit WebSpellChecker we had to improve it, because server-side binary components compiled for x86_64 worked in wrong way. The issue was related to differences in standard data types of C language on 32-bit and 64-bit platforms. The differences are especially critical when you need to interpret data stored on different platforms. The evident examples where we bumped into this in our application are encoded license keys and precompiled dictionaries.

There is a table below illustrated the changes in integer types between 32-bit and 64-bit platforms. This information is available in open sources and can be tested.

Data type Number of bytes
32-bit platform 64-bit platform
char 1 1
short int 2 2
int 4 4
long int 4 8
long long 8 8
Pointer and size_t 4 8

The conclusion we can make from this table is that “long” data type size changed and it breaks any structure alignment. For example we have a structure that describes a binary file record:

struct DataRecord{
long value1;
unsigned long value2;
};

In case if we use this structure to create a data file on 32-bit platform we will get garbage on 64-bit platform and vice versa.

To avoid this issue we have chosen the way to use integer data with size constraints from stdint.h. A portable structure from the example should be the following:

struct DataRecord{
int32_t value1;
uint32_t value2;
};

Additional information can be found here (http://www.linux.org.uk/~ajh/gcc/gccsummit-2003-proceedings.pdf) in article Porting to 64-bit GNU/Linux Systems.