简易数据正则处理

因为数据服务填报系统中有个数据需要进行简易的处理,即移除数据列表中的文件大小,而此数据是csv格式的文件,首先想到的就是通过openoffice来进行快捷的处理。
1、OpenOffice尝试
OpenOffice中也有正则支持,默认是关闭的,在“查找与替换”中,点击“更多选项”,然后选择正则表达式,即可打开正则表达式支持。
实际上,我需要运行的正则很简单,即:

\(.*?MB\)

将此内容替换为空即可。
但不知道什么原因,在openoffice中运行此正则不成功,只能查找到部分结果。
2、gedit尝试
gedit也有正则支持的插件,即高级查找替换插件。安装之后运行效果也很好,非常直观。但最后发现对csv全局替换会有误伤,即前面括号中内容也给替换掉了。
3. sql尝试
最终就想在postgresql数据库里直接使用正则进行替换,发现postgresql中有一个regexp_replace函数,可以直接支持sql上进行正则,因此尝试用这个SQL来替换:

select regexp(datalist,'\(.+?MB\)','') from offlineapp

但这个每行只替换了一个第一个后就返回了,因此还需要添加一个flag:

select regexp(datalist,'\(.+?MB\)','',‘g') from offlineapp

odtphp: A nice library to output openoffice odt file

Recently, I want to add a function in our data center website(Which is only Chinese version now, an English version is preparing): “output the geographic metadata to openoffice odt format”. So, the odtphp project came into my sight.

After download the 1.0.1 version, and try some tests in its code. There is no problem in the text replacing, but if I insert into the odt file an image, the OpenOffice (What I use is LibreOffice) always tell me this file need repair, although the repair result nice. Dig into another search, find this problem and solution in the author’s blog.

Use the latest version (1.3) in the author’s blog, this bug is disappeared.

There is another requirement in my site yet, maybe it is not a problem: The image file which is dynamic produced has not a extension in the url, So the code in odtphp: setImage must change its behavior here.

So I patched the code, and released it here (it’s GPL license):

wlx@wlxpc:~$ diff odf.php odtphp-1.0.1_modified_files/odf.php
111a112,113
> $filename = strtok(strrchr($value, '/'), '/.');
> $file = substr(strrchr($value, '/'), 1);
116,118d117
< $filename=md5($value);; < $imgext=array('.gif','.jpg','.png','.swf','.psd','.bmp','.tif','.tif','.jpc','.jp2','.jpx','.jb2','.swc','.iff','.wbmp','.xbm','.ico'); < $file=$filename.$imgext[$size[2]]; 287,289c286 < //$this->file->addFile($imageKey, 'Pictures/' . $imageValue);
< $this->file->addFromString('Pictures/' . $imageValue,file_get_contents($imageKey));
< --- > $this->file->addFile($imageKey, 'Pictures/' . $imageValue);

In short, what I do: change the filenmae to a hash string (md5(source)), and save it with file_get_contents function (which could parse the url).

And, a big Thanks to you and your odtphp project: Vikas Mahajan.
Download patch file: odf.php.patch

用openoffice计算时间差

原来一直不知道,因为要修改照片的EXIF时间信息,需要计算两个时间的差值。
用OPENOFFICE试验了一下,可以直接得到结果。
在单元格A1中输入时间1,如2008-10-31 20:05:25,在B1中输入另外一个时间,在C1中输入公式=A1-B1,就可以得到时间差,是时分秒的格式。
然后就可以用exiv2修改元数据了。

openoffice的小BUG

今天在升级feisty时,自动安装了一堆的KDE软件,但我记得我之前在这台机器上都没有安装过KDE程序,肯定是哪儿有问题。
去launchpad.net搜索没发现,到irc上就看到有人在说同样的问题,然后就有人汇报了这个bug:
https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/104176
是openoffice.org-style-crystal这个包的问题,它推荐了kde-icons-crystal,然后就引起了一系列的连锁反应,最终是把kdesktop都关联上来了,等于是安装了kubuntu。
ubuntuforums里也有讨论:
http://ubuntuforums.org/showthread.php?t=403685
从这里可以知道,apt-get不安装推荐包,但aptitude是要安装推荐包的,所以我用aptitude dist-upgrade会导致连锁反应。

BTW:社区发行的效率果然高阿。

OpenOffice 2.2发布

openoffice
http://software.solidot.org/software/07/03/31/0414218.shtml

matrix 写道 OpenOffice.org发布了其最新的升级版本OpenOffice 2。详细的bug修正和新增的变化可看release notes。开发者的口号是“Office 2007的另一款真正选择”,希望能够争取更多用户使用而不要被Office 2007的新面孔而迷惑。微软Office的用户也会发现OpenOffice.org的升级真的很容易。” 从总体而言,OpenOffice 2.2版确实变得更好看了。比如字距调整(kerning),新技术改进了在均衡字符上的表现,字距调整被设为默认使用。OpenOffice上PDF格式输出功能上也得到了加强,通过额外提供的选项可创建书签,支持自定义输出表格域(form fields)。另从发布公告上可发现许多小的bugs在新版中修复了,大多数bugs都是与电子表格和数据库程序相关。”

ubuntu feisty中已经包括了openoffice 2.2正式版,默认就应该是安装好的。

OpenOffice 2.1发布

引自solidot

包含了许多重要的改进。
支持64位Linux,
多屏幕图章支持,
改良的Calc HTML输出,
更新的自动通知
更多的语言等。

“多屏幕图章支持”这个没有看懂,去slashdot才看明白:

It includes support for 64-bit Linux and a number of other improvements,
including multiple monitor support for Impress,
improved Calc HTML export,
and automatic notification of updates.

这个翻译啊,无语了。
再继续深究下去,发现这儿有比较详细的说明:

*Description*
————-
With this feature you can select the monitor that displays the full
screen slideshow from the impress application. Please see
specification or help for more details.

*Specification URL*
——————-
http://specs.openoffice.org/impress/slideshow/ControllingSlideShow.odt

简而言之,就是在作presentation的时候,假如你有多个显示器连接,你可以选择使用那个屏幕进行全屏展示。

ubuntu edgy下OpenOffice 2.0.3不能存盘

ubuntu edgy,现在有不能存盘的问题。
就是一存盘,就提示crash,然后恢复,再存盘,就一直循环下去了。

解决办法:
进入OpenOffice后,设置为使用OpenOffice.org对话框。

Options->OpenOffice.org->General and tick the box saying, Use OpenOffice.org dialogs.

问题的原因也找到了:
https://launchpad.net/distros/ubuntu/+source/openoffice.org-amd64/+bug/58492

OpenOffice无法启动:用scim-bridge解决

总是找不到原因,一开始以为是显卡驱动的问题,因为不用ati的显卡驱动的确可以起来,但用ati的显卡驱动,以root帐号登录也可以使用。
换驱动,可以解决问题,但目前开源的驱动尚不能驱动我的显卡:ati radeon X1300。
后来才怀疑到scim的身上,于是安装scim-bridge
sudo aptitude install scim-bridge
然后修改/etc/X11/xinit/xinput.d/zh_CN

GTK_IM_MODULE=”scim-bridge”

应该也可以使用XIM的方法解决:参考http://wlxblog.westgis.ac.cn/171/