2007-11-25

解决Daemon Tools的安装问题

在单位的笔记本上安装完Daemon Tool后,启动Daemon Tool总得到错误提示:Unable to add adapter. Device problem 39。右键单击任务栏的图标得到错误提示:virtual scsi driver not detected。Windows的日志报告中没有关于这个错误的任何报告

google了一下,发现已经有人报告这类错误,解决建议包括卸载程序,重新安装,在安全模式下安装等等。我卸载数次再安装都没有解决问题,最后在安全模式下重新安装才能正常使用它加载虚拟光驱。

修改Firefox的字体设置

单位的笔记本操作系统为英文版的Windows XP。用Firefox阅读中文网页时,字体看起来很别扭。在系统中添加了微软的雅黑字体,想让Firefox显示中文网页时默认使用雅黑字体,需要修改一下字体设置。有一个变量font.name.serif.x-western,默认的值为“time new roman”,把它的值改为“Microsoft YaHei”后,中文网页的字体看起来就好多了。

2007-11-13

恢复blog

在停了两个多月后,现在终于又有点时间了。9月份先是ABAP,10月份SAP Netweaver Portal,11月现在作无聊的Co-Trainer,到20号才正式开始工作。

小提示:

在Hbf乘S4去Campus,在104站台最好往前走,大概在B的位置是最佳位置。这样下车的时候可以在S-Bahn还没有通过马路时赶紧穿过马路,因为此处过马路没有斑马线。这在赶时间的时候还是有用的:)。

回家乘S1或S2刚好相反,尽量坐在火车的后面比较划算,这样下车之后回家可以少走几步。

2007-11-06

初识SAP认证

各个大的IT公司都有自己的认证体系,如IBM,Microsoft, SAP,Oracle等等。除了这些公司提供的认证之外,还有非商业机构提供的认证,如由Linux Professional Institute提供的关于Linux的LPI认证。各个公司的认证体系既能提高使用本公司产品的用户的专业水平,也为企业招聘员工提供了一个衡量的尺度,当然也为公司带来了一笔收入,因此各个公司对此都非常重视。相比之下更多的人会选择去考取微软的认证。我想这主要是因为微软的产品普及地比较广泛,作为个人接触其产品和获取认证资料的机会也相对较多。这一点与SAP的产品形成一个鲜明的对比。SAP早期产品只是针对大企业用户,现在SAP公司正努力拓取中小企业市场,其门槛才慢慢降下来,因此考取SAP认证的人数相对而言就要更少一些。

现在SAP在全世界推行一套统一的认证体系。SAP认证包括三个级别,分别为Associate, Professional和Master。其中Associate这一级别的认证主要针对牢固掌握SAP基础知识,从业经验在1到3年之间的用户,而Professional则要求从业经验在4至7年之间,并拥有实际的项目经验。持有最高级别的Master认证的SAP咨询师则被认为是真正的SAP专家,熟悉系统整合,优化和架构知识,并能领导团队顺利完成项目。除了认证级别之外,还有一个认证领域的概念,因为SAP系统涉及企业管理的方方面面,确实比较繁杂。认证领域包括应用(application),开发(development)和技术(technology,此处译作技术欠佳,但不知道什么词更合适)。应用主要包括自定义SAP系统适应企业需求,开发则包括使用ABAP和Java的编程,技术类涉及SAP Netweaver Web Application Server和Portal等的安装和维护。早期的SAP认证,如Solution Consultant, Development Consultant 和 Technology Consultant分别对应Associate级别的Application,Development和Technology。
这样一来一个完整的SAP认证证书名称实际上由多个部分组成(符合SAP的习惯,名字也弄繁杂点 :)),首先是认证级别,紧接着是认证领域,然后是短横线接认证时所使用的SAP产品版本。比如Development Associate – ABAP with SAP
NetWeaver 7.0 或者Development Professional – ABAP System Integration with SAP NetWeaver 7.0。

因为有各种各样的认证搭配,SAP为此提供一个查询功能,供用户查询SAP提供的认证。查询表单有三个可选项。第一个可选项为认证涉及的解决方案,个 人认为与常说的模块比较接近,包括 SAP NetWeaver,Enterprise SOA,SAP Customer Relation Management, SAP ERP, SAP Product Lifecycle Management, SAP Supply Chain Management, SAP Business One, Small and Midsize Enterprise (SME)。第二个可选项是上面提到的认证领域,即application,development,technology。最后一个可选项为在企业中的角色,提供的选择包括架构师,应用咨询师,开发咨询师和技术咨询师,IT管理员及行业咨询师。
以分别选择SAP Netweaver, Technology,和technology consultat为例,系统会返回SAP提供的多种认证可能。包括:
    * SAP Certified Technology Professional - Security with SAP NetWeaver 7.0
    * SAP Certified Technology Consultant SAP NetWeaver 2004 - SAP Web AS for MAX DB
    * SAP Certified Technology Consultant SAP NetWeaver '04 - SAP Web AS for Oracle
    * SAP Certified Technology Consultant SAP NetWeaver 2004 - SAP Web AS for MS SQL Server
    * SAP Certified Technology Consultant SAP NetWeaver 2004 - SAP Web AS for DB2 UDB
    * SAP Certified Technology Consultant SAP NetWeaver 04 - OS/DB Migration for SAP Systems
    * SAP Certified Technology Consultant SAP NetWeaver - SAP Web AS Implementation & Operation for DB (2003) (for Tech. Cons. 2000)
    * SAP Certified Technology Consultant SAP NetWeaver - SAP Security (2004)
    * SAP Certified Technology Consultant SAP NetWeaver 2004 - SAP Web AS for DB2 on z/OS
    * SAP Certified Tech. Associate - System Admin (Oracle DB) with SAP NW 7.0
    * SAP Certified Technology Consultant SAP NetWeaver 2004 - Enterprise Portal, Knowledge Management & Collaboration
    * SAP Certified Technology Professional - Platform Technology with SAP NetWeaver 7.0
    * SAP Certified Technology Consultant SAP NetWeaver 7.0 Exchange Infrastructure
    * SAP Consultant Certification Technology Consultant SAP NetWeaver 2004s - Portal
    * SAP Certified Technology Associate - System Administration (MS SQL DB) with SAP NetWeaver 7.0
    * SAP Certified Technology Associate - System Administration (DB2) with SAP NetWeaver 7.0
    * SAP Certified Technology Associate - System Administration (MAX DB) with SAP NetWeaver 7.0
    * SAP Certified Technology Professional - Portal with SAP NetWeaver 7.0
    * SAP Certfied Technology Associate - Process Integration with SAP NetWeaver (PI 7.1)

点击这些列出的认证能获得更多的关于该认证的信息,包括认证考试涉及的主题和SAP针对该主题提供的培训课程,各个主题所占的比例等等。这些信息对于准备认证考试是必不可少的。

我在Preentry School的第二个月曾接受了一个月的由SAP提供的培训。我仔细比对了一下,我们当时培训的课程与上面SAP Consultant Certification Technology Consultant SAP NetWeaver 2004s - Portal里列出的课程完全一致,包括:
SAPTEC: Fundam. of SAP Web AS
SAPEP: Enterprise Portal Fund.
ADM 200: Web AS Java Administration
ADM 102: Web AS Admin II
EP 200: Enterprise Portal System Admin.
EP 300: Configuration of Knowledge Management und Collaboration

内容本身并不难,只是比较多,要在四个星期之内完成。因为当时只有考试通过了才能拿到正式的合同,所以大家都学地比较认真。培训结束时的考试也是SAP的认证考试。由SAP的一位工作人员人带着笔记本过来,考试前在每人的笔记本上安装一个SAP提供的程序,连接到考官的笔记本上。从回答第一道题开始计时,必须在3个小时内回答120个选择题,包括单选和多选。个人感觉考试内容并不难,所考的内容基本上来自培训资料。尽管EP 300也属于考试内容,但考试时因为时间关系,我们尚未来得及学习,尽管这样我们绝大多数人都通过了考试,但没有获得SAP的认证证书,因为公司为了保护自己利益仅仅颁发了一个ATS的培训证明。由此看来要考取一个SAP证书并不是很难。个人认为准备一个Associate级别的认证考试最少也需要一个月的高强度学习。更高级别的考试我没参加过,所以无从估计。但是有一点是肯定的,对于我们经历了无数考试的70后来说,这种考试我们是可以通过的。

2007-09-29

10月份培训内容

10月份继续接受培训,主题为SAP NetWeaver Portal,内容包括:

SAPTEC: Fundam. of SAP Web AS

SAPEP: Enterprise Portal Fund.

ADM 200: Web AS Java Administration

ADM 102: Web AS Admin II

EP 200: Enterprise Portal System Admin.

EP 300: Configuration of Knowledge Management und Collaboration

2007-09-02

Firefox插件列表

今天是在大学工作的最后一天了,需要的数据都备份完了。我的机器ge2pc51里Firefox中安装的插件也在此罗列一下。列表是由listZilla插件生成的:

Adblock Plus 0.7.5.1
Aptana Debugger Service 0.2.8.14433
CHM Reader 0.2.1.1
CSSViewer 1.0.2
del.icio.us 1.2.1
ErrorZilla 0.2
Firebug 1.05
Full Screen 0.5
Fullerscreen 2.02
Google Notebook 1.0.0.18
Google Toolbar for Firefox 3.0.20070525W
Greasemonkey 0.7.20070607.0
Html Validator 0.8.4.0
Java Console 6.0
ListZilla 0.8
Live HTTP Headers 0.13.1
LiveClick 0.2.4
Right Encoding 0.2.2
ScrapBook 1.2.0.8
Searchbar Autosizer 1.3.7
SwitchProxy Tool 1.4.1
View Cookies 1.6
Web Developer 1.1.4
XML Developer Toolbar 0.2

2007-08-17

工作许可下来了

等了一个多月的工作许可终于下来了。6月29日晚上打完球看信箱收到了公司寄过来的已经准备好的申请材料。7月2日周一一早去外管局递交了材料,7月3日材料到达Frankfurt劳工局,8月13日电话询问外管局得知没有进一步的消息,发Mail给公司请求公司联系劳工局查询材料的处理情况,立即收到Tania回复,答应去查询有消息即刻通知我。8月16日中午刚吃过午饭收到Tania的邮件,告诉我工作许可下来了,让我可以去Rehm那儿去了。交了30Euro之后,护照上又少了两页空白页。

2007-08-16

Wordpress 2.2使用jquery

Wordpress的开发者从2.2版本开始使用jquery作为其核心的Javascript库了,因为他们认为jquery is lighter and faster。看来jquery的发展越来越被人看好。在扩展digilib时我也使用了jquery,觉得它非常方便,清晰。一个名为visual jqeury的文档对这个库的各个函数作了很明了的分类,有时要比阅读API更方便。

jquery中很多函数操作的对象都为jqury对象的集合,而jquery自身的一个名为implicit iteration的特性能自动遍历处理集合中的每一个对象,省掉了很多for循环语句。

另外jquery的selector非常丰富,支持CSS和Xpath的表达式。此外jquery还有一个名为chaining的特性,能避免创建过多的临时变量。

This means that the result of most operations on an object is the object itself, ready for the next action to be applied to it.

2007-08-15

第一份工作还未结束

如果按照正常的休假,今天本应是在大学工作的最后一天。接下来的半个月可以享受剩下的12天假期。按规定工作半年(不超过30岁)可以享受14天休假,全年为28天,超过30岁全年休假29天,超过40岁则全年休假30天。不过即使休假也是在家呆着等法兰克福那边签发工作许可,所以痛快的接受了Thomas让我放弃休假的建议,一直工作到月底再结束在大学的工作。

2007-08-14

O2使用cocoon服务器

在浏览O2的网页时,发现其Pagerank值为零,另外URL里出现cocoon-action-DisplayCDRs等字样,便猜测会不会跟cocoon有关。查看服务器返回的Header,果然使用的是cocoon,版本号为2.1.9,而2.1.10正式版在2006年12月就发布了。看来对于企业生产环境来说,更换网页服务器不是一件简单的事。

2007-08-09

Firefox的插件LiveClick

如果使用Firefox的Live Bookmarks功能,那么这个名为LiveClick的插件能够提供更方便的功能,如显示某个post是否已经阅读,监视feed更新等等。

阅读pdf文件的小巧工具

以前就知道有个名为Foxit的pdf阅读软件,小巧并且免费,但觉得有时候文件的渲染效果不够好,在Linux下有xpdf就足够。今天在How-To Geek看到一款开源的pdf阅读软件,名为Sumatra,试用了一下速度很快,文件渲染也不错。程序由Krzysztof Kowalczyk开发,就一个可执行文件,无需安装,当前版本为beta 0.7,大小仅为803kb,非常值得推荐!常用的快捷键有:

  • space - scroll by screen
  • backspace - scroll back by screen
  • k - scroll by one line
  • j - scroll back by one line
  • Down - scroll by one line
  • Up - scroll back by one line
  • n - goto next page
  • p - goto previous page
  • Page Down - go to next page
  • Page Up - go to previous page
  • g - goto page
  • q - quit
  • + - zoom in
  • - - zoom out
  • r - reload PDF document
  • <Shift> <Ctrl> + - rotate clockwise
  • <Shift> <Ctrl> - - rotate counter-clockwise
  • Home - go to first page
  • End - go to last page

不知道为什么用k和j移动的用法刚好和在vim里相反。

2007-07-31

Ignore a file(folder) in Subversion

Ignore a file:
svn propset svn:ignore *.log .

svn propset svn:ignore *.pyc dirname

Ignore a folder:
svn propedit svn:ignore dirname



要忽略多个文件夹和文件类型,创建一个文本文件ignore.txt,一文件夹或一种文件类型占一行,如:
obj
bin

保存这个文件到如obj和bin的父目录src目录下,然后在src目录一级执行svn propset svn:ignore -F ignore.txt .

注意最后的 "."表示当前目录,不能省略。

2007-07-28

cocoon环境下在XSLT中使用request parameter

在cocoon的sitemap.xmap文件中XSLT这个transformater默认的配置是不启用request paramter的,要在XSLT中使用request parameter的值只需把:
<use-request-parameters>false</use-request-parameters>

的值改为:

<use-request-parameters>true</use-request-parameters>

这样在XSLT中声明一下这个parameter就可以使用了:

<xsl:param name="parameter-name"/>

2007-07-21

vim提供的简单加密功能

今天阅读vim的手册才知道,原来vim提供简单的文档加密功能。在新创建文档时使用 -x 选项,vim会自动询问密码,要求用户两次输入密码,确保密码被用户正确设置。要为一个已经创建的文档添加密码和更换密码,可以使用命令:
:X

要停止对一个文件加密,可以把key选项设置为一个空字串:
:set key=

2007-07-18

使用Firebug

Firefox的插件Firebug对于开发调试网页实在太有帮助了。用F12就可以激活Firebug,默认在网页下端显示。我常用control + F12在新窗口中打开Firebug,这样在左边的主显示器上显示网页,在右边的副显示器上显示Firebug的窗口。这样在使用inspect功能时可以很方便的看到对应元素的代码。查看更多Firebug的快捷键。

在使用console功能时,如果选中了larger command line,Firebug为输入javascript提供的类似vim中设置选项一样的自动补全功能不可用。当在javascript的console提示符>>>后复制一段javascript代码时,larger command line会自动被激活。

在Firebug功能选择的上面一行选中一个元素,右键可以激活Log Events选项。这样可以在console查看事件输出。

有了Firebug不用去W3C查看CSS中的box model了。选中html,选定元素,再选中右边的Layout tab,就可以看到元素的box布局了。

当Firefox加载的网页包含多个frames时,Firebug默认的context是top-level的页面,如何切换context到其中的一个frame呢?

答案:

cd(window)

By default, command line expressions are relative to the top-level window of the page. cd() allows you to use the window of a frame in the page instead.

在command line下的常用函数:

$(id)
Returns a single element with the given id.

$$(selector)
Returns an array of elements that match the given CSS selector.

$x(xpath)
Returns an array of elements that match the given XPath expression.

用于输出日志的函数:

console.debug("message" [,objects]) - Logs a debug message.
console.info("message" [,objects]) - Logs an informative message.
console.warn("message" [,objects]) - Logs a warning.
console.error("message" [,objects]) - Logs an error.

解决安装MS Expression Web遇到的错误

今天下午听Qi Jin说起MS的silverlight,顺便安装了一下微软推出的Web开发工具MS Expression Web。不想在安装过程中出现错误:

Error Message: “The 2007 Microsoft Office system does not support upgrading from a prerelease version of the 2007 Microsoft Office system.”

解决办法是卸载各种与office 2007有关的beta版本。这篇文章提及了这个问题。在我下载掉2007 Microsoft Office Add-in: Microsoft Save as PDF (Beta)后,安装就能进行了。

In addition to the programs listed in the KB, this error message could also be caused by the German Language Pack for Office 2007 and Outlook 2007 add-ins (known ones so far: Windows Live Local Addin for Outlook, Calendar Printing Assistant for Outlook 2007).

2007-07-16

vi motions

在vi 的操作符命令(operator,常见的如:c,d,y,~,gu,gU,>,<)之后跟上移动命令(motion)可以带来很高的编辑效率。在编辑html/xhtml,XML文件时我使用这个特性觉得非常方便。
删除:
ci[ 删除一对 [ ] 中的所有字符并进入插入模式
ci( 删除一对 ( ) 中的所有字符并进入插入模式
ci< 删除一对 < > 中的所有字符并进入插入模式
ci{ 删除一对 { } 中的所有字符并进入插入模式
cit 删除一对 HTML/XML 的标签内部的所有字符并进入插入模式
ci" ci' ci` 删除一对引号字符 (" 或 ' 或 `) 中所有字符并进入插入模式
把上面命令中的i替换为a可以把 [ ]/( )/< >等字符一并删出。
其他例子:
"diw" delete inner word
"daw" delete a word
"diW" delete inner WORD
"daW" delete a WORD
"dd" delete one line
"dis" delete inner sentence
"das" delete a sentence
"dib" delete inner '(' ')' block
"dab" delete a '(' ')' block
"dip" delete inner paragraph
"dap" delete a paragraph
"diB" delete inner '{' '}' block
"daB" delete a '{' '}' block

选择:
vi[ 选择一对[ ] 中的所有字符,va[ 选择一对[ ]和其中的所有字符
vi( 选择一对( ) 中的所有字符,va( 选择一对( ) 和其中的所有字符
vi< 选择一对< > 中的所有字符,va< 选择一对< > 和其中的所有字符
vi{ 选择一对{ } 中的所有字符
vit 选择一对 HTML/XML 的标签内部的所有字符
vi” vi’ vi` 选择一对引号字符 (” 或 ‘ 或 `) 中所有字符
把命令中的i替换为a可以选中 [ ]/{ } /( )等字符。
vas 选中cursor所在的句子
vap选中cursor所在的段落

2007-07-15

使用sshfs加载远程文件

使用 sudo apt-get install fuse-utils libfuse2 sshfs 安装使用sshfs所需的包,安装程序会创建fuse用户组。如果要让普通用户也能使用sshfs,还需把用户加到fuse这个用户组里。用法为:
sshfs [user@]host:[dir] mountpoint
安装完后使用时碰到一个奇怪的问题,在gepc188上使用sshfs jia@germa93:~ germa93。命令执行成功,进入germa93目录却看不到远程主机的任何文件。germa93这个文件夹的属性也变为全是问号。查看/etc/mtab文件,最后一行就是刚才加载的fuse文件系统。这才发现是因为登录到远程主机与登录到本地主机的用户名不一致造成的。jia@germa93:~ 被解释成为加载远程主机germa93上的/home/jiad4701目录。这个目录不存在,因此出现上了上面的问题。把命令改为:
sshfs jia@germa93:/home/jia germa93
加载远程主机文件就没有问题了。
如果要卸载文件使用 fusermount -u /path/to/mount/point

2007-07-11

FreeMarker概述

FreeMarker特性

  • FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写
  • 被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
  • 虽然具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据
  • 不是一个Web应用框架,而适合作为Web应用框架一个组件
  • 与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
    更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库

1、通用目标

  • 能够生成各种文本:HTML、XML、RTF、Java源代码等等
  • 易于嵌入到你的产品中:轻量级;不需要Servlet环境
  • 插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等
  • 根据需要生成文本;保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器

2、强大的模板语言

  • 所有常用的指令:include、if/elseif/else、循环结构
  • 在模板中创建和改变变量
  • 几乎在任何地方都可以使用复杂表达式来指定值
  • 命名的宏,可以具有位置参数和嵌套内容
  • 名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突
  • 输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;你可以定义自己的转换

3、通用数据模型

  • FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示
  • 可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用方法,使其不受技术细节的打扰

4、为Web准备

  • 在模板语言中内建处理典型Web相关任务(如HTML转义)的结构能够集成到Model2 Web应用框架中作为JSP的替代
  • 支持JSP标记库
  • 为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员

5、智能的国际化和本地化

  • 字符集智能化(内部使用UNICODE)
  • 数字格式本地化敏感
  • 日期和时间格式本地化敏感
  • 可以用非US字符集作标识(如变量名)
  • 多种不同语言的相同模板

6、强大的XML处理能力

  • <#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树
  • 在模板中清楚和直觉的访问XML对象模型

Turbine Web Application Framework

Apache的项目Turbine是一个基于servlet的framwork。

A quick guide to Turbine technologies:

  • Presentation layer - Velocity or JSP
  • Database layer - Turbine uses Torque, but different OM layers like OJB or Hibernate are also supported.
  • HTML Form Validation using the Turbine provided "Intake"-Service.
  • Logging - Turbine uses Commons Logging and supports a wide range of logging frameworks like Log4J, jdk14 or simple file logging
  • Service based framework, using Avalon compatible components in Turbine 2.4 and beyond.

有时间试一试!

2007-07-07

恢复注册表损坏导致的 Windows XP 无法启动

恢复由于注册表损坏而无法启动的 Windows XP 系统。警告如果您的计算机上的操作系统是由 OEM 安装的,请不要使用本文中介绍的步骤。OEM 安装中的系统配置单元会创建以前不存在的密码和用户帐户。如果您使用本文中介绍的步骤,可能无法重新登录到故障恢复控制台,因而无法还原最初的注册表配置单元。

要点:
在故障恢复控制台的命令提示符处,键入下面几行命令:

md tmp
copy c:\windows\system32\config\system c:\windows\tmp\system.bak
copy c:\windows\system32\config\software c:\windows\tmp\software.bak
copy c:\windows\system32\config\sam c:\windows\tmp\sam.bak
copy c:\windows\system32\config\security c:\windows\tmp\security.bak
copy c:\windows\system32\config\default c:\windows\tmp\default.bak
delete c:\windows\system32\config\system
delete c:\windows\system32\config\software
delete c:\windows\system32\config\sam
delete c:\windows\system32\config\security
delete c:\windows\system32\config\default
copy c:\windows\repair\system c:\windows\system32\config\system
copy c:\windows\repair\software c:\windows\system32\config\software
copy c:\windows\repair\sam c:\windows\system32\config\sam
copy c:\windows\repair\security c:\windows\system32\config\security
copy c:\windows\repair\default c:\windows\system32\config\default

使用故障恢复控制台中的 batch 命令,您可以按顺序处理文本文件中的所有命令。在使用 batch 命令时,无需手动键入多个命令。

Win XP登陆时不显示上一次登陆名

 

Windows XP系统下默认会保留上一次的登陆名。如上次用administrator用户登陆的话,下次开机,它还保留这个用户名在用户名框内。下面这个方法用来在登陆时不显示上次的登陆名:

----------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system]
"dontdisplaylastusername"=dword:00000001
----------------------------------------------------------------

把上面这段保存为reg文件,导入到注册表里。这样下次登陆就不显示上次的登陆名了。如果想还原的话,就把dword值改为:00000000即可。

2007-07-06

在XSLT中为元素添加属性

想把一个XML文件中一个原来是一个元素的子元素变为该元素的属性,如:

<item>
<itemText>f. 3v: cath 3, 80-134 </itemText>
<link>003_v.jpg</link>
</item>
<item>
<itemText>f. 4r: cath 3, 135-199 </itemText>
<link>004_r.jpg</link>
</item>
<item>
<itemText>f. 4v: cath 3, 200-4, 52 </itemText>
<link>004_v.jpg</link>
</item>

使用下面的XSLT语句可以为item元素增加name属性,但是没有删除子元素<link>,只好用vi来删除了:)

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" >
<xsl:output method="xml" encoding="utf-8" indent="yes"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

<xsl:template match="//item">
<xsl:copy>
<xsl:attribute name="name"><xsl:value-of select="./link" /></xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

2007-07-05

Firefox的插件:fullscreen 与 fullerscreen

Firefox下的插件多多,在http://addons.mozilla.org/页面下用关键字fullscreen查找会找到名为Fullscreen的插件。不过其实还有一个实现全凭效果更好的插件,名为fullerscreen。后者能隐藏所有的菜单栏和工具栏,增加了不少可视面积。

创建帮助文件 HelpSetMaker

Ansgar他们以前为fud写的帮助文件是用Word写的。现在发现这个帮助文件使用起来并不方便,希望帮助文件能类似windows下的chm文件,支持查找,关键字等功能。在sourceforge上发现一个名为HelpSetMaker的程序,可以制作帮助文件,输出html,JavaHelp,latex和Eclipse帮助文件,也支持搜索。

输出的JavaHelp文件可以借助Javahelp中的hsviewer.jar来查看。测试了一下,发现HelpSetMaker输出javahelp格式的文件时对UTF-8的支持有问题。如果项目编码设置为UTF-8,输出的jar文件编码设置也为UTF-8,那么在用hsviewer.jar查看该文件时,变音不能正常显示。不过当项目和输出jar文件都使用latin-1或latin-15时,编码就没有问题。生成的jar文件可以用:
java -jar hsviewer.jar -helpset fud-help.jar 命令来打开。

notepad的日志功能bug

微软的notepad有个功能是每次打开文件时在文件末自动填上当前的日期和时间。办法是在文件的第一行写入 .LOG 即可。我一直用它来作一些日常笔记记录。但是这个功能有个bug,即当文件大小达到44kb时,notepad在打开这样的文件时就会报错,说内存不够,请关闭其他的应用程序。尽管你没有打开其他的应用程序还有很多空闲的内存,你仍然会得到这样的错误提示。虽然还可以编辑这个文件,但是自动填入日期和时间的功能已经没有了。

2007-07-04

配置Windows XP自动获得IP或固定IP

Nathania有个笔记本,在家用DSL上网,通过router自动获得IP。但她把电脑拿到办公室后,只能使用学校分配的固定IP上网。这样每次都要改来改去,实在是麻烦。简单一点的办法就是写两个脚本来配置不同地点的IP,不过也要手工执行,还是不够方便。其实有个更简单的解决办法,只是因为在学校的LAN下基本上都使用固定IP,所以没有发现这个方法。解决办法很简单,先配置网卡为自动获得IP,然后在为这块网卡分配一个固定IP地址就可以了。

2007-07-03

关掉Ubuntu 7.04下apache2的默认网页编码

当前使用apt-get install apache2 安装的apache版本为2.2.3。安装后apache为网页编码默认设置为UTF-8。不知道为什么一定要设置这个默认编码为UTF-8,让用户编写的网页自己来决定网页的编码不是更好吗。看了一眼/etc/apache2/apache2.conf文件,发现里面的语句:
#AddDefaultCharset ISO-8859-1

已经关掉了默认编码设置了。可是发现网页的编码设置仍然默认为UTF-8。后来才发现原来在/etc/apache2/conf.d文件夹下还有一个名为charset的文件,里面包含:
AddDefaultCharset UTF-8

就是它在捣乱了!注释掉这句再重启apache2,就关掉服务器端设置的默认网页编码了。

2007-07-02

递交申请材料

今天一大早就把申请工作许可的材料交上去了。办事的小伙子Rehm扫了一眼材料就收下了,并告诉我四周之后才有进一步的消息。他主动把他的电话写在纸条上给我,让我四周之后再打电话(7181334)询问进展情况。现在就盼着Frankfurt那边能办事利落些,学学人家Bayern那边。据说那边两周就有结果了。

为Outlook创建profile配置文件

如果在Outlook中有多个POP3帐号,那么每次在新的机器上安装时都必须重新创建每个POP3帐号,因为Outlook不提供单独帐号设置导出。MS KB的一篇文章提到了可以创建一个prf文件来配置一个新的Outlook profile。

2007-06-29

Firefox的Smart Keywords功能

Firefox有个叫做Smart Keywords的功能很 方便,但很少人用到。用户在一个搜索网面页内的搜索框内右击鼠标,就会出现一个add a keyword for this search选项。点击后就会弹出一个添加到Bookmarks的对话框,填入在Bookmarks中显示的名字,并选择一个关键字。如常常查找学校内的 电话号码,每次都需打开页面http://www.uni-trier.de/uni/telefon.html,在输入名字。现在我为这个查找定义了一个关键字,fon,这样我只需在浏览器地址栏里输入 fon searchitem。这样返回的页面就是要查找的结果。

Zope目录下的默认文件

当URL不是以一个文件结束,而是以一个目录结束时,Zope会寻找该目录下的默认文件。这个文件不是像在Apache下的index.htm/index.html,而是一个ID为index_html的文件。如果这个文件不存在,访问以目录结尾的URL就会得到一个错误提示:
Resource not found
Sorry, the requested resource does not exist.
Check the URL and try again.
Resource: Folder instance at 2a9b97c210

Zope下调用external method

Michael为WBB写了web service,Thomas想在Zope下调用WBB的web service。安装完SOAPpy模块之后,写了一个小的测试脚本,放在了$INSTANCE/Extension目录下。在Zope中创建一个external method时, Module Name为这个脚本的名字,但不包含.py,Function Name为脚本中定义的函数名。

这个脚本能在命令行下执行,可是在Zope中调用总是得到错误提示:

Error Type: ImportError
Error Value: No module named SOAPProxy

在网上google了一下,没有立刻找到解决办法。想了一下,应该是Zope的执行环境和在命令行下的执行环境不同造成的。浏览了一下Zope的配置文件zope.conf,发现里面有个名为path的指令,默认值为

$INSTANCE/lib/python

由于SOAPpy安装在/usr/lib/python2.4/site-packages目录下,自然Zope就找不到它了。添加下面的语句后:

path $INSTANCE/lib/python:/usr/lib/python2.4/site-packages

问题就解决了。

用${}过滤变量

${}用于过滤变量的值有时候非常方便,不过每次用都记不住,只好写个例子在此供翻查:(提醒一下,别与命令替换操作符 $(command) 搞混了!另外在XSLT中可以用{$var}来得到一个变量的值)

假设 FNAME="/home/jia/tmp/test.1.sh"

那么有:

${FNAME}
显示变量的全部。

/home/jia/tmp/test.1.sh

${FNAME##/*/}
比对变量開端﹐如果以 /*/ 开头的話﹐砍掉最長的部份。

test.1.sh

${FNAME#/*/}
比对变量开端﹐如果以 /*/ 开头的話﹐砍掉最短的部份。

jia/tmp/test.1.sh

${FNAME%.*}
比对变量末端﹐如果以 .* 結尾﹐砍掉最短的部份。

/home/jia/tmp/test.1

${FNAME%%.*}
比对变量末端﹐如果以 .* 結尾﹐砍掉最长的部份。

/home/jia/tmp/test

${FNAME/sh/bash}
如果在变量中找到 sh ﹐將第一个 sh 替换为 bash。

/home/jia/tmp/test.1.bash

${FNAME//sh/bash}
如果在变量中找到 sh ﹐將全部 sh 替换为 bash。

/home/jia/tmp/test.1.bash

简单总结:

# 比对变量的的开始部分

% 比对变量的结束部分

一个符号表示去掉最短的部分,两个符号表示去掉最长的部分。

developerWorks 中国时事通讯

我已经有好几个星期没有收到IBM 每周一次的developerWorks的newsletter了,以为是我的订阅出了问题。今天有空上IBM的developerWorks 中国时事通讯网页一看,上面列出的newsletter也只到第303期(2007年4月24日)。看来不是我没有收到中文newsletter,而是IBM本身没有撰写。浏览网页时发现,页面上提供2004年和2005年的打包下载。这倒是很方便,省得我在Outlook里整理了。既然收不到中文的newsletter了,那以后就只能阅读英文的developerWorks Newsletter: Weekly Edition.

Ubuntu 7.04下的know_hosts

Ubuntu 7.04下的位于~/.ssh/的文件know_hosts与原来的版本和其他的GNU/Linux发行版本有所不同了。以前的版本能够看出一台远程主机对应的钥值。每一行为一个主机的标识值,分别是:
主机名 IP地址 钥匙类型 钥值
如:
urts96,136.199.199.96 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwZMisKXEF2poSc WEujP+YLWKl53p80SpOVyp/h3UVxeAVHkLP0s1NkiW5mRlN4prUpxK5UuZ7yd5u9uc/2qMvK 38S2hC4P/aYki7rM8L+fHQPnjiLe+J0j/UfSvUjjPyOeXuSokWWHN8aatvlJQavvZOC36Hd8 In/NtwpzganJc=
当一台server重新装操作系统有新的钥匙值之后,从原来保存有旧的钥匙值的主机上登录这台server时,就会得到警告提示:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
dd:c4:44:74:80:f7:6b:99:4d:f1:c4:cd:df:65:3a:73.
Please contact your system administrator.
Add correct host key in /home/jiad4701/.ssh/known_hosts to get rid of this message.
Offending key in /home/jiad4701/.ssh/known_hosts:9
RSA host key for germa93 has changed and you have requested strict checking.
Host key verification failed.
lost connection
以前我的解决办法是在客户端的know_hosts文件中删除server对应的钥值。可是如果你的客户端是Ubuntu 7.04,你不能从这个文件中分辨出你要登录的server的钥值在第几行,只能全部删除文件里面的内容。

为Ubuntu添加ACL

apt-get install acl安装完之后,修改/etc/fstab文件,在需要acl支持的分区上添加acl,如:

原来的一行为:
UUID=e6d069bc-4bcd-4e4d-9730-f66473118a7f / ext3 defaults,errors=remount-ro 0 1

添加acl支持后变为:
UUID=e6d069bc-4bcd-4e4d-9730-f66473118a7f / ext3 defaults,acl,errors=remount-ro 0 1

要使acl生效还必须重新加载文件系统:
jia@germa93:~$sudo mount -o remount /

2007-06-15

设置notepad的默认字体

在windows XP 下修改注册表的[HKEY_CURRENT_USER\Software\Microsoft\Notepad]键下的lfFaceName,将其值改为 “Microsoft YaHei”。如果操作系统中在区域设置中把不支持Unicode程序使用的语言设为中文,则须将lfFaceName的值改为“微软雅黑”。

2007-06-14

本Blog第一帖!

8月底就要离开大学了,以后就不能再使用学校的各种网络资源了。所以对原来在系里服务器上用wordpress架设的Blog也不得不考虑搬家了。再加上最近系里的web服务器总是出问题,有时候想查找一下以前写的东西,却不能访问。这更让人有了搬家之意。

早先在wordpress.com也申请了一个账户,本想从系里服务器上的blog导出到wordpress.com上。可是,以前导入的post里很多都出现了乱码。blog的管理功能不提供批量删除Post的功能,又无法接触数据库,一个个去删又太麻烦,于是只好作罢。刚好使用google docs时看到可以在线撰写,然后发送到一定blog服务提供商。这让我想起了2年前申请的在blogger申请的账户。

2007-04-25

在Firefox下阅读chm文件

Firefox借助插件chm reader可以打开chm格式的文件。这个插件以前的版本还只支持Linux下的Firefox,不过现在的版本已经支持Windows下运行的Firefox了。不少chm文件都不提供放大或缩小字体的功能。要修改chm中字体的大小必须借助修改IE中的字体大小来完成,更为麻烦的是修改完IE中的字体大小后还必须关掉chm文件重新打开chm文件才能生效。现在有了chm reader方便多了。

2007-04-24

vim 中常用删除

供查看方便:

删除第3-18行
:3,18d

删除行首空白
:%s=^\s*==

此处用 \s 匹配空白。 

删除行尾空白
:%s= *$==

匹配首尾空白字符的正则表达式:^\s*|\s*$

删除行首和行尾的空白:
:%s=^\s*|\s*$==

2007-04-20

保存pdf文件

今天用Adobe Acrobat 7.0打开了一个关于XPath的ebook,并做了简单的修改。原文档拒绝保存修改,试着另存为一个PDF文件。保存后文件的大小显著减小,从原来的57.560.207 Bytes到现在的5.995.126 Bytes。保存中曾有显示程序消除了一些冗余的图像,我想这应该是文件体积减小的主要原因。

保存Tomcat的访问日志记录

Tomcat的访问日志默认时关闭的,要打开访问日志记录只需修改conf/server.xml文件,去掉下面一段的注释:

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>

2007-04-19

PuTTYcyg

PuTTYcyg 是一个Putty的patch版本,搭配cygwin才能使用,能提供一个命令行页面。用惯了putty,总觉得cygwin的界面不习惯。连接本地的cygwin时,只需在connection type中选择cygterm,在主机名填入短横线 - ,然后存成一个session,如cygwinterm就可以了。做一快捷方式,建立一个cygwinterm.bat文件,包含:

c:\puttycyg.exe -load cygwinterm

2007-04-18

修正gvim的右键菜单

我在家里的电脑上安装的gvim 7.0有edit with gvim的右键菜单,在办公室里的电脑上安装了同样的文件,却找不到这样右键菜单,虽然能用,但是总觉缺点什么。两台机器都是同样的操作系统和同样的补丁,只是办公室电脑是通过clone的方式安装的,因此估计在注册表上有问题。于是从家里电脑里导出了有关gvim的键值,再导入到另一台机器上,右键菜单就有了。

附上注册表的文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Vim]

[HKEY_LOCAL_MACHINE\SOFTWARE\Vim\Gvim]
"path"="D:\\Programme\\Vim\\vim70\\gvim.exe"

[HKEY_CLASSES_ROOT\Applications\gvim.exe]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit]

[HKEY_CLASSES_ROOT\Applications\gvim.exe\shell\edit\command]
@="D:\\Programme\\Vim\\vim70\\gvim.exe \"%1\""

[HKEY_CLASSES_ROOT\CLSID\{0F0BFAE1-4C90-11D1-82D7-0004AC368519}]
@="Vim"

[HKEY_CLASSES_ROOT\CLSID\{0F0BFAE1-4C90-11D1-82D7-0004AC368519}\LocalServer32]
@="D:\\Programme\\Vim\\vim70\\gvim.exe"

[HKEY_CLASSES_ROOT\CLSID\{0F0BFAE1-4C90-11D1-82D7-0004AC368519}\ProgID]
@="Vim.Application.1"

[HKEY_CLASSES_ROOT\CLSID\{0F0BFAE1-4C90-11D1-82D7-0004AC368519}\TypeLib]
@="{0F0BFAE0-4C90-11D1-82D7-0004AC368519}"

[HKEY_CLASSES_ROOT\CLSID\{0F0BFAE1-4C90-11D1-82D7-0004AC368519}\VersionIndependentProgID]
@="Vim.Application"

[HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}]

[HKEY_CLASSES_ROOT\CLSID\{51EEE242-AD87-11d3-9C1E-0090278BBD99}\InProcServer32]
@="D:\\Programme\\Vim\\vim70\\gvimext.dll"
"ThreadingModel"="Apartment"

2007-04-15

禁止Firefox窗口被改变大小

浏览有些网页时,有些脚本会改变浏览器的窗口大小,很是烦人。通过下面的设置可以禁止窗口大小被改变:

Here is how to prevent sites from resizing your Firefox window…

1. Open Firefox, Preferences (or if you’re on Windows…Tools, Options)

2. Go to the Content Tab

3. To the right of “Enable Javascript” hit “Advanced…”.

4. Uncheck “Move or Resize Existing Windows”

2007-04-12

在windows下使用GnuPGP签名邮件

在Windows下,以Thuderbird作为邮件客户端:
下载GnuPG 1.4.7二进制文件和Thuderbird的插件Enigmail

  1. 安装上面的两个文件,并把安装后的GnuPG目录添加到路径变量中。

  2. 测试gpg安装是否成功:

  3. C:\Dokumente und Einstellungen\jia>gpg --version gpg (GnuPG) 1.4.7
    Copyright (C) 2006 Free Software Foundation, Inc.
    This program comes with ABSOLUTELY NO WARRANTY.
    This is free software, and you are welcome to redistribute it
    under certain conditions. See the file COPYING for details.

    Home: C:/Dokumente und Einstellungen/jia/Anwendungsdaten/gnupg
    Supported algorithms:
    Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
    Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
    Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
    Compression: Uncompressed, ZIP, ZLIB, BZIP2

  4. 运行OpenPGP Key Management向导,生成一对Key,并提交到Key Server。


详细步骤参见:http://enigmail.mozdev.org/gpgconf.html#install

注释JMS block

把cocoon作为一个webapp分发在Tomcat下,如果在启动Tomcat时出现警告提示:


WARN! *** JMS block is installed but jms client library not found. ***
- For the jms block to work you must install and start a JMS server and place the client jar in WEB-INF/lib.
- The default server, OpenJMS is configured in cocoon.xconf but is not bundled with Cocoon.

解决办法:
在xcoocon.conf文件里注释掉关于jms-connection-manager的配置内容即可:
<jms-connection-manager logger="core.jms">
...
</jms-connection-manager>

在Tomcat 5.5下使用APR

在windwos下启动Tomcat 5.5下时,命令行窗口会提示:

INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\jdk1.5\bin;.;C:\WINDOWS\system32; ...

为了提高Tomcat的性能,应让Tomcat使用APR,Apache Portble Runtime。具体信息参见http://tomcat.apache.org/tomcat-5.5-doc/apr.html

在windows安装方法:下载编译好的dll文件,tcnative-1.dll,把它复制到%SystemRoot%\system32目录下即可。 

解决无法复制aurorun.inf文件的问题

不止一次赶上这样的情况了,无法把autorun.inf文件从本地硬盘上的一个文件夹复制到映射的网络硬盘上,但却可以复制到本地硬盘的另一个文件夹下。复制时,得到错误提示:
access denied。
请确保磁盘没有满,也没有写保护,或文件当前没有被使用。

网上搜索的结果表明,这是由McAfee的访问保护机制引起的。在McAfee的访问保护下有个文件,共享和文件夹保护选项,下面有个选项:
prevent remote creation of autorun.inf files

如果这个选项被选中,就会出现无法复制到远程机器的问题。

利用鼠标放大和缩小文字

现在有不少程序都支持利用鼠标放大和缩小文字,只要在摁住control键时,转动鼠标滑轮就可以了。我知道的最早支持这个特性的是Firefox,随后发现IE 7和Opera 9都有这个功能了。可是这个功能在Firefox下和在IE/Opera下略有差别:在Firefox下,滑轮往下转,文字变大,而在IE/Opera下刚好相反,滑轮往下转,字号变小。此外在Opera下,轻轻转动一下,文字就会变的很大或很小,感觉不够细腻。

另外新版本的XMLSPY 2007也支持这个功能。这样在编辑器查看文件时,可以很方便的调整字号了,而不用进到菜单里去调整显示字号大小。

2007-04-11

奥组委的网页

今天在msn上看到以前的一个同学留言,说ZDF找地服人员。顺道看了一下第29届奥林匹克运动会组织委员会的网页,http://www.beijing2008.cn ,提供中文,英文和法文版。英文和法文根本就没有点进去。按理说这么重要的赛事,应该弄个制作精良的网页出来。不说精美至少也多少符合web标准吧,可是扫一眼代码,满眼的<table> <tr><td>。不用说也知道这是什么水平了。我相信,国内能做出比这个网页好上百倍的网页的个人,公司和机构的实体有的是。可是组委会的人多半是不懂这些的,也没有第三方的资讯机构。这样相关的负责人一句话就随便圈定某个人来做。于是大家就看到了这么糟糕的网页,只能贻笑大方。

Firefox扩展:LiveHttpHeaders

Firefox数目众多,功能丰富的扩展真好。今天测试联邦档案馆会议记录的搜索功能时多亏有了LiveHttpheaders才发现我的问题在于提交request时,header里没有包括jessionid这个变量,所以搜索的结果分页问题不能解决。

另外在Tomcat的邮件列表中名为Christ写了一段很好的关于在搜索中使用jsessionid的问题:
> Is there anyway to create JSessionIDs per window rather than per browser?
> I am having the problem of when you open multiple tabs within
> a browser, and enter two simultaneous queries, the results returned are
> corrupted. Any suggestions? Thanks for the help.

I have an application that allows the user to perform searches and paginate through the results. Since the search really only needs to be performed once, pagination can be as simple as picking a segment of the results (stored in the session) and displayed on the screen.

I store the query that was performed as well as a "token" which is generated when the query is created. I place this token in all of the URLs on the page (most importantly, the ones involved with pagination).
If a request comes into the server including a token, I check the token against what I have in the session. If the tokens match, I skip the search. If they do not match, I re-run the search and re-set the token. Rinse, repeat.

In your case, you might want multiple simultaneous paginating queries, though I'm not exactly sure why. You could adopt a similar approach using a List of queries (using the same session key, I would imagine),
each with separate tokens for the windows.

The only problem with an implementation like this is that it is very hard to decide when you are "finished" with a query, and that it's okay to purge it from the session. That is left as an exercise for the reader
;)

Hope that helps,
-chris

2007-04-10

Dremaweaver 8的bug?

今天使用Dreamweaver 8.02时发现一个奇怪的问题。我用它打开一个XML文件,其中的元素名大多是HTML里的元素。文件里的元素名本身小写的,但是用Dreamweaver 8.02打开时,在编辑器里除了第一行XML声明和第二行文件类型声明外,其他行中的元素名全都显示为大写。不光是显示成大写,只要在Dreamweaver下保存这个文件,这些标签名就真正的变为大写。类似这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML LANG="de">
<HEAD>
<TITLE>"Suche"</TITLE>
<LINK href="./skin/KaPr_basis_structure.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_top.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_header_footer.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_left_menue.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_left_suchformular.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_left_funktionsunterscheidung.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_text_treffer.css" REL="stylesheet" TYPE="text/css"/>
<LINK href="./skin/KaPr_Color_Fonts.css" REL="stylesheet" TYPE="text/css"/>
</HEAD>

... ...

</HTML>

用其他的编辑器,如vim,打开就不是这样,所有的元素名保持原来的大小写。这里Dreamweaver应该算是画蛇添足,算作Dreamweaver的一个bug?

2007-04-04

Windows XP下不输入用户名及密码自动登录

强烈不推荐,可是有的人偏偏喜欢这样,知道一下也无妨。

执行rundll32 netplwiz.dll,UsersRunDll,如果机器没有加入一个域,就可以去掉上方的“要使用本机,用户必须输入用户名和密码”选项前的小勾,再按“应用”按钮,会有个设置默认用户和密码的窗口弹出,输入用想默认登录的用户名和密码即可。

在XSL中对变量作加法

在XSL中对变量作加法:

如果使用的转换器只支持XSLT 1.0,则:

<xsl:variable name="n1">
<xsl:choose>
<xsl:when test="number($t1) = number($t1)">
<xsl:value-of select="$t1"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="n2">
<xsl:choose>
<xsl:when test="number($t2) = number($t2)">
<xsl:value-of select="$t2"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="temp1" select="$n1 + $n2"/>

如果XSLT parser支持XSLT 2.0:  

XSLT 2.0 makes it easier because of the conditional expressions in XPath 2.0. You can do:

<xsl:variable name="n1"
select="if (number($t1) = number($t1)) then $t1 else 0" />
<xsl:variable name="n2"
select="if (number($t2) = number($t2)) then $t2 else 0" />
<xsl:variable name="temp1" select="$n1 + $n2" />

Depending on how you're getting the values of $t1 and $t2 (and the final definition of if-absent()) it might also be possible to use the if-absent() function:

<xsl:variable name="temp1" select="if-absent($t1, 0) + if-absent($t2, 0)" />

2007-03-29

在Tarforst学生宿舍的最后一帖

明天上午就交钥匙,今天还得抓紧时间做清洁。使用136.199.*.52和136.199.*.53超过五年时间,中间除了曾因为53的网络接口超过流量限制被禁用过3个月外,网络一直畅通无阻。今天这个post是从53网络接口出去的最后一个了,留此文字纪念一下。
再见 Universitätsring 8,204 & 204a!

2007-03-27

搬家

来德国真正算起来搬家还只有一次。那次搬家是在2001年的圣诞节假期,地上还铺了厚厚的大雪。搬家也只是从马路的一侧搬到马路的另一侧,仅仅跨越一个桥而已,由于距离很近,东西也不像现在这么多,帮忙的同学也多,连搬家车都没租,倒是跟URT借了一个推车在雪地里推着。

这两天有个朋友的MSN上显示,我们需要的很少,但是想要的太多。这次搬家扔了不少东西,新的旧的都有。东西仍完后生活依旧,也没觉得缺东少西,只觉得那朋友的留言说的即是。

远程连接遇到错误

今天帮Ralf解决一个电脑问题,Firefox不能启动,报告js3210.dll丢失。网上搜索结果显示有可能是特洛伊木马捣乱,用mcafee 8.0扫描整个一遍没有发现异常。倒是我远程连接时得到错误提示:

Die lokale Richtlinie erlaubt es Ihnen nicht, sich interaktiv anzumelden.

解决办法:

首先确保管理员用户在允许远程桌面连接的用户列表里。如果允许多个用户远程连接,用逗号分隔用户名。

其次察看远程桌面用户是否有足够的权限:
1. Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie secpol.msc ein, und klicken Sie auf OK.
2. Erweitern Sie Lokale Richtlinien, und klicken Sie anschließend auf Zuweisen von Benutzerrechten.
3. Doppelklicken Sie im rechten Fensterbereich auf Anmeldung über Terminaldienste zulassen. Stellen Sie sicher, dass die Gruppe der Remotedesktop-Benutzer aufgelistet ist.
4. Klicken Sie auf OK.
5. Doppelklicken Sie im rechten Fensterbereich auf Anmeldung über Terminaldienste verweigern. Stellen Sie sicher, dass die Gruppe der Remotedesktop-Benutzer nicht in der Listet erscheint, klicken Sie dann auf OK.
6. Beenden Sie das Snap-In "Lokale Sicherheitseinstellungen".

2007-03-23

Exchanger XML Editor

一款名为Exchanger XML Editor 的XML编辑器有一个可供学校和非商业用途的版本,其中有个小功能我觉得很好用。在编辑栏菜单的下方有一个XPath显示栏,能自动显示当前光标所在的某个元素或属性的XPath表达式。用户也可以在栏里输入XPath表达式,下方会显示XPath Results。希望这个软件能继续提供免费版本,别像Altova XMLSpy一样以前还提供一个免费的Home版本,现在取消了。现在想去下载和使用以前的免费版本都不行了。要想更好的使用右键菜单的Tag Selection,进入菜单XML --> Set Document Properties,从Tag Completion选择一个dtd或者xml schema文件就可以了。

2007-03-20

纪念一下正式毕业

留此文字纪念一下!
2006年11月底交的论文,今天才拿到正式的毕业证书,等的时间那个叫长啊。Gesamtnote: Gut 。学生生活实际上早就结束了,不过形式上今天才有了个正式的结束。

2007-03-10

笔记本的BIOS又得升级了

启动笔记本,发现需要非常长的时间,虽然内存只有128+256少点,但也不至于这么慢,先怀疑硬盘,后来在发现应该是BIOS有关:
http://support.microsoft.com/kb/283649

只是不知道Acer对这么老的机器还会不会提供支持。

2007-02-22

Tomcat目录结构

Tomcat下的目录结构

/bin 启动和关闭Tomcat server的脚本

/conf 包含server.xml(Tomcat的配置文件),web.xml(应用程序的配置文件)和tomcat-users.xml(用户管理配置文件)

/log 日志文件

/work JSP生成的Servlet

/webapps 应用程序发布位置

/shared/lib 包含应用程序访问的JAR文件

/lib 包含Tomcat使用的JAR文件

/server/webapps 包含Tomcat自带的系统管理和应用管理的web工具

/common 包含Tomcat和应用程序都可以访问的JAR文件

2007-02-19

试用openldap

今天在ubuntu下安装(apt-get install slapd)了openldap服务器,因为openldap server在ubuntu下的包名为slapd。

root@gepc188:/etc/ldap# dpkg -s slapd
Package: slapd
Status: install ok installed
Priority: optional
Section: net
Installed-Size: 2432
Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
Architecture: i386
Source: openldap2.2
Version: 2.2.26-5ubuntu3
Replaces: libldap2, ldap-utils (<< 2.2.23-3)
Provides: ldap-server

安装完成后要使用slappasswd命令来生成加密后的密码,然后在/etc/ldap/slapd.conf文件中添加两行:
rootdn "cn=root,dc=uni-trier,dc=de"
rootpw {SSHA}X5vL372YCCfHW7KJlVzGpwc+iQ6shuEX

这样才能登入数据库。

在创建User Account之前,需创建一个Posix Group组,否则会得到错误提示:
LDAP said: Object class violation
Error number: 0x41 (LDAP_OBJECT_CLASS_VIOLATION)
Description: You tried to perform an operation that would cause an undefined attribute to exist or that would remove a required attribute, given the current list of ObjectClasses. This can also occur if you do not specify a structural objectClass when creating an entry, or if you specify more than one structural objectClass.

这是因为shema定义的缘故,一个用户要求有一个gidNumber值。phpLDAPadmin是一个与phpmyadmin类似的图像化工具,可以简化管理ldap的工作。

2007-02-16

dpkg的常用选项

查询软件包: dpkg -l zope2.9
不知道软件包的具体名称,也可使用通配符来查询: dpkg -l zope*
查看软件包的详细信息: dpkg -s zope2.9
查看已安装软件包所安装的文件列表: dpkg -L zope2.9
显示.deb包的内容: dpkg -I scalix-swa_11.0.0.653_all.deb
显示.deb包中的文件列表: dpkg -c scalix-swa_11.0.0.653_all.deb
安装.deb软件包: dpkg -i scalix-swa_11.0.0.653_all.deb
删除软件包: dpkg -r scalix-swa_11.0.0.653_all.deb
(使用该命令安装.deb包并不能自动解决软件包的依赖问题,需用dpkg -I查出该软件包的依赖要求手动解决。所以该方法一般用来安装第三方的.deb软件包。如果需系统自动解决软件包的依赖关系,则要使用apt、 tasksel、dselect、aptitude或图形化的syanptic、KPackage等前端工具来安装软件包。)

重新配置软件包: dpkg-reconfigure

此外涉及debian源码包的管理工具还包括:dpkg-source, dpkg-gencontrol, dpkg-shlibdeps, dpkg-genchanges, dpkg-buildpackage, dpkg-dista ddfile,dpkg-parsechangelog

2007-02-07

你知道换一台苹果机的电源要多少钱吗?

办公室里一台旧的Power Mac G4 (733 MHz)电脑坏了,把电脑送到了URT的Computerwerkstatt。几天之后,联系CW的工作人员,他们告诉我电源坏了,换一个电源要250欧元(!),建议我为这个旧电脑不值得换电源,实在想要apple的机器,可以考虑mac mini。

上网查到了apple的订货查询热线08002000136,电话打过去之后一问,他们也不提供这样的配件了,让我向当地的苹果经销商询问。一个电话(0686193350)打给Ringlingen的苹果经销商,他们又让我打电话给位于特里尔的办事处(06519940018)。这才终于找对人了,对方告诉我,apple官方已经不提供这种系列的电源了,但是可以把普通PC的ATX电源稍加改变就可以换上,半个小时就可以搞定,所用的费用约为90欧元。250-90=160欧元,仅仅是多打了几个电话。另外对CW的工作态度实在是不敢恭维!

另:今天看最新的Neue Universal报道,Petrisberg的教学大楼两面墙之间的橘红色“涂鸦”之作竟然是出自来自柏林的一位女艺术家之手,为此花费了61000欧元!6万一千欧元!!

2007-01-27

2006/2007的第一场雪

记不清刀朗的歌里唱的是雪下得特别晚还是特别早了,今年的雪可是比前几年晚了好多。白色的圣诞节没有,并且冬天里刮得冷风也不见踪影。昨天打完球在回家的路上发现开始飘细微的小雪颗粒。今天早上起来发现,地上已经变白了。

2007-01-26

open command here不起作用了

换了个办公室也换了台电脑,Dell的Optiplex GX620(2G的内存,可以装Vista了)。发现以前常使用的在windows explorer的文件夹上右键菜单中的open command here只在系统所在的分区起作用,在其他的分区下的文件夹下点击出来的command窗口下,当前的目录总是系统所在的根目录。对比其他电脑,发现同样的注册表设置就是在新的电脑上不起作用。

原来的设置为:HKEY_CLASS_ROOT\\Directory\\shell\\DosHere\\command的值为

C:\WINDOWS\system32\cmd.exe /k "cd %L"

后来发现cd 有个/D选项可以在切换目录时把当前目录也切换到目标目录下。把值修改为:

C:\WINDOWS\system32\cmd.exe /k "cd /D %L"

问题就解决了。

2007-01-10

修改Webalizer的默认配置文件

在urts52上使用webalizer分析zope服务器日志时,发现生成的HTML页面是用utf-8编码的,而apche 2服务器配置文件中设置了默认编码为iso-latin1。我不是管理员,无法更改httpd.conf,只好自己从webalizer上想办法了。在webalizer的默认配置文件基础上添加了以下语句:

HTMLExtension php

生成的页面为PHP页面,不再是默认的HTML页面。

HTMLPre <?php header('Content-Type: text/html; charset=utf-8');?>

这样生成的PHP网页代码中第一行都包括这行内容,强制浏览器使用utf-8编码。

HTMLHead <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

在HTML页面的head部分添加编码设置,表明网页是用utf-8编码的。

2007-01-04

用putty的端口转发

从2007年1月1日起,大学的计算机中心修改了有关计算流量的规定。估计是现在大家使用学校的代理服务器太狠,大学有些招架不住了,所以现在通过proxy的流量也要计算在内。

以前就知道putty的端口转发功能,现在要用上了。通过在putty添加一个Dynamic SOCKS-based port forwarding,即在tunnel选项卡中选中auto和dynamic,在source处填写一个任意空闲的本地端口,然后点击添加。

在浏览器器里设置代理服务:
SOCKS HOST:127.0.0.1
Port:在putty session里设置好的端口

要使用这种socks host需要远程主机的转发功能没有被禁掉。系里机房的机器全都使用iptables被禁止了。另外URT机房里的机器的forwarding也被禁止了,只有另外两台我有root权限的可用,呵呵。使用putty的后台命令行程序plink更简单,不用打开一个putty session,如:
plink -N -load mysessionname -D 666

Online Wörterbücher von Kompetenzzentrum

Kompetenzzentrum免费提供多个网上字典。2006年过去了,可以分析一下日志文件看看访问情况如何。日志文件解开之后一共是37个GB,用gzip压缩之后也有1.5GB。除了总的zope服务器的日志外,还得看看对各个字典的访问情况。

这是各个字典的链接:

DWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/dwb/wbwelcome

EWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/ewb/wbwelcome

FiB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/findebuch/wbwelcome

GWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/gwb/wbwelcome

LWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/lwb/wbwelcome

LEX: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/lexer/wbwelcome

BMZ: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/bmz/wbwelcome

NLEX: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/nachtraege/wbwelcome

PfWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/pfwb/wbwelcome

RhWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/rhwb/wbwelcome

RhnWB: http://germazope.uni-trier.de/Projects/WBB/woerterbuecher/rhnwb/wbwelcome