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。