Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Text Grid Enhancement

It is my pleasure to announce a new enhancement feature (Text Grid) in writer document. Currently I am work on this feature.

* Create a new page in openoffice wiki to ask for input. Here is the link : http://wiki.services.openoffice.org/wiki/Text_grid

* Below is the two kinds of text grid layout.







Figure1, Squared page mode


Figure2, Rectangle page mode

1) "Squared paper mode". It is used by ODF.
For this kind of grid layout, the page is divided in a fixed numbers of lines (lines per page). The lines are divided into squared cells (characters per line). The number of lines per page depends on the line height ( i.e., the sum of grid base and ruby height), and the characters per line also depends on the line height.

In "Squared paper mode", the “Characters per line” setting has the most high priority, it will determine the height of line, then the “Lines per page” setting has the second priority, it will determine the height of type area.

This kind of grid layout "Squared paper mode" is used to simulate “squared paper”, which is a kind of specific paper used 20 years ago(before personal computer is widely used in text processing). But now, “squared paper” is only used in very limited case, and most CJK users won't use it anymore.

2) "Rectangle paper mode". It is used by OpenXML, UOF (Chinese Office File Format) and other CJK office suites (i.e., EIOFFICE, WPS).
For this kind of grid layout, the page is divided in a fixed numbers of lines (lines per page). While the lines are divided into rectangle cells (characters per line). Ruby grid is not specified in this paper mode. So the line height is grid base height and the characters per line depends on the grid base width, not grid base height.

In "Rectangle paper mode", type area has the most high priority, it will determine the height of line; the “Lines per page” setting has the second priority, and “Characters per line” setting can only determine the width of characters, and can't influence line height in anyway.

This kind of grid layout "Rectangle paper mode" is wildly used in CJK users.

* Snap to characters

We add a “snap to characters” attributes to specify whether the Asian character is centered in the grid cell or not when the grid type is set as “Grid(lines and characters)”. The default value “snap to characters” is “true”.

This additional attribute also improve the compatibility with MS word. Below is the map of grid type between MS Word 2003 and OpenOffice

Word 2003
OpenOffice.org 2.1.0
1. No grid
A. No grid
2. Specify line grid only (Default)
B. Grid (lines only) (Default)
3. Specify line and character grid 
C. Grid (lines and characters), “snap-to-characters” is false.
4. Text snaps to character grid  
D. Grid (lines and characters), “snap-to-characters” is true.


Figure 3. No grid

Figure 4 . Grid (lines only)


Figure 5. Grid (lines and characters), “snap-to-characters” is false


Figure 6. Grid (lines and characters), “snap-to-characters” is true

As shown in Figure 5, when "snap-to-chars" is false, the Asian characters are not centered in the cell, while the Western character ("OpenOffice.Org) are also centered in the cell. This is not accurate. It is work in progress now.
a silhouette of a person's head and shoulders, used as a default avatar

Valentine's Day Evening

In Valentine's Day evening, other staffs are off work. Only I am in office to create a blog to blog what I am doing everyday, quite interesting.
Florian help me to create it, thank Florian

a silhouette of a person's head and shoulders, used as a default avatar

Microsoft (in)compatibility

Microsoft is known for introducing incompatibilities, whenever they release any updates or new version of their software. Latest in town is Microsoft Exchange 2007, which has changed a lot from its predecessor - MS Exchange 2003. MS Exchange 2007 has replaced the FE and BE server roles with something called CAS and Mailbox roles. CAS is more than its 2000/2003 counterpart, FE, where it handles both the business logic and renders OWA UI. With this change, MS Exchange 2007 introduced a new default OWA interface called "OWA" - that defines some new interface other than webDAV interface. This has currently broken Evolution Exchange connector from operating with MS Exchange 2007 servers.

Interesting and challenging days ahead!
the avatar of James Willcox

a silhouette of a person's head and shoulders, used as a default avatar

the avatar of James Willcox

Thoughts on Sincerity

Hi Steve,

Earlier today I read your “Thoughts on Music” post. Afterwards, my initial reaction was “That’s great! You get ’em Steve!”. It’s no secret that DRM is broken by design, but it’s nice to see one of the biggest users of it say so. However, I was quickly reminded by a colleague that Apple hardly seems interested in the “everything works with everything” utopia you describe. One specific example is the iTunes music sharing feature. Soon after it was released, some smart people figured out how it worked and developed software to be compatible with it. This let people access their iTunes-shared music from devices or operating systems that didn’t have iTunes. Soon after, Apple implemented a mechanism which prevented non-iTunes clients from doing this. Why? It wasn’t because of the record companies. The music purchased on the iTunes Music Store was still protected by FairPlay, so they had no reason to complain. The only conceivable reason you’d have for doing this is to force consumers into vendor lock in. Well, it didn’t work. Some more smart people defeated your mechanism and once again people were playing their iTunes-shared music using whatever software they liked best (be it iTunes or otherwise). But that didn’t stop Apple from re-implementing a similar protection scheme again in iTunes 7. This time you even knifed some business partners in the process. This kind of behavior isn’t at all congruent with what you’re saying in your post. Have you changed your mind now? Will the next iTunes release remove this restriction? If your “Thoughts on Music” was sincere, I’d expect so.

a silhouette of a person's head and shoulders, used as a default avatar

Proxy support in Evolution

One of the key features that is expected out of any application that communicates over a network is talking over a proxy connection. Evolution has been lacking this feature for quite some time and I implemented a quick support around SLED10 release with a limitation that "Authenticated Proxy" configurations are not supported. Now, its time to do something about it and I came up with something called a Network Preferences option in Evolution that looks similar to that of gnome-network-preferences capplet. I had to take this approach as a lot of Evolution-KDE users complained proxy not working as the respective gconf entries were missing.

Following is the screenshot of the Network preferences window in Evolution:

It uses libsoup for resolving hostnames and other SOCKADDR related processing.

a silhouette of a person's head and shoulders, used as a default avatar

Evolution Exchange Performance Series - Chapter 2 - Public Folder Loading

Around a month back started working on issues surrounding Exchange Public folders from subscribing to accessing/using them. A tracker bug was already present in BGO and the most famous among them are 268412, 347811 and 346728. As I just took over the responsibility of Evolution Exchange connector around August 2006 and then had a month-long sick leave because of Chikungunya, it was a slow start for me - reading through code, docs, MS articles, webDAV references etc. After a week of analysis, found out the issue in Setting up folder hierarchies - which is done during the startup and it goes into a recursive loop setting up hierarchies for all folders, including public folders. When an organization has quite a lot of nested-public-folders, Evolution will take a minimum of 30 mins to start.

The complete fix was done in two-phases.
Phase-1:
--------
Do not scan public-folders recursively during startup.
Phase-2:
--------
Load folders on demand. This enabled us to achieve the maximum performance during subscribing to Public folders.
Any performance work needs to provide supporting data and here it is: (My test server has close to 250 public folders with a maximum depth of 21 subfolders)
S.No Description of Test/task Patch
(Sec)
<=2.9.4
(Sec)
1 Configure an exchange account
Restart Evolution
7 65
2 Folder->Subscriptions
Selectthe configured Exchange account
Note time taken to show the“All Public Folders”
3 4
3 Expand “All PublicFolders”
Note time taken to display folder list
< 1 168
4 Time taken totraverse to maximum depth folder 8 330

Memory consumption:
Before expanding a folder (in the folder->subscriptions dialog)

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory 152.8 154.6
RSS 13.4 15.1
Shared 9.1 9.2

After expanding a folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory 152.8 201.6
RSS 13.4 62
Shared 9.1 9.2

Actual memory consumption:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory 0 47
RSS 0 46.9
Shared 0 0

Note: Memory consumption data is taken using gnome-system-monitor and thus difference in Bytes are not shown above. Columns showing 0 would definitely have a difference at least in bytes.
Memory consumption to traverse to the maximum depth folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory 152.8 246.9
RSS 13.4 107.4
Shared 9.1 9.2

The fix also improved the overall folder loading performance.

the avatar of James Willcox

more vmx-manager stuff

I’m still working hard on vmx-manager, and I think it’s coming along pretty well. I spent a good chunk of last week writing my own code for creating VMware Virtual Disks. The VMDK specification is pretty straightforward, but implementing it proved to be more tedious than I expected (“the devil is in the details”). The end result seems to work pretty well, so now vmx-manager can create disks without relying on qemu or vmware-vdiskmanager. Soon I might try to add a couple more features in this area, such as the ability to grow an existing disk (which in theory should be easy — just add extents). I’ve made a screencast of the app as I put it through its paces, and you can find up-to-date screenshots here.

When I was writing the flat extent support (used for pre-allocated disks), I wanted to do something different than just writing a bunch of zeros out to a file (which is slow). It seemed to me that it should be possible to ask the filesystem to quickly give me a file of a specific size. I didn’t care what was in it, so it should be able to just find a bunch of unused sectors (or whatever) and mark them as mine, right? I was able to find no such feature in ext3 or Linux in general, and I guess the reason is probably due to security concerns. You obviously don’t want to give people a way to read deleted data. It would be nice, though, if the fs could mark the data in such a way that it would be zeros until you write to it. Maybe that’s just too expensive, I don’t know. Anyway, if anyone knows how I could accomplish such a thing, please let me know.

the avatar of Flavio Castelli

klaptopdaemon improvement

Last night I spent a couple of hours adding a missing feature to klaptopdaemon. Are you curious? keep reading… Yesterday I installed a new kde icon theme. It looked really nice but there was a problem: klaptopdaemon tray icon didn’t work. In fact the icon didn’t show the battery level, it was always at 0%. Quite annoying isn’t it? Since I liked the theme I decided to add a new option to klaptopdaemon: print the battery level percentage over the systray icon.

I’ve just contacted klaptopdaemon maintainers and I’m going to commit it into kde svn, so you’ll get everything into next klaptopdaemon release :)