2010-08-23

更换热水管阀门

周日中午GK又惊呼没有热水了,于是我直奔地下室查看储水罐的水压力表。果不其然,压力表又变为零了。2个月前才加的水似乎又跑光了。以前就注意到有两个阀门有点漏水,但没想到越来越厉害。这两个阀门在从储水罐出来的Speichervorlauf和Speicherrücklauf这两根管子上,都位于Fermwärme设备的大盒子内。不打开大盒子盖是不容易发现漏水情况的。徒劳地往上缠了些胶条和布条,又来回关上打开折腾数次,阀门转动部分与阀门的接触缝隙似乎越来越大,漏水反而越来越大。这下搞不定了只能请教专家了。周一专家过来,把阀门卸了下来,上了些润滑油试图能阻止漏水情况,可是效果不理想,只能买新的阀门来换掉无法修理的坏阀门。麻烦的是这种阀门不是普通的标准阀门,普通的建材市场如Hornbach之类的根本没有,只好去专业的管道建材商店。

拿出黄页一翻,先找到了一家在Rappstraße的店。拿着画的尺寸图和拍的照片和黄页就出发了,带着黄页是怕万一没买到会多跑几家店。果然第一家店就没有这样的阀门,不过店员态度很好,推荐我去位于Intzestraße的一家名为Stapf的商店,离Porsche中心很近。马上赶了过去,店员态度也很好,拿着图纸上后面去找了很久出来了。虽然没有完全一样的阀门,不过找到了替代品。买了两个回家,简单一试,果然相配,再把专家请了过来才把两个阀门正式安装上。此后关于热水的问题应该能消停一段时间了!

2010-08-22

从SD卡更新HD2 Rom

HD2 在安装完取消启动声音功能后就再也不能启动了。每次启动都停留在红色圆圈界面。连接电脑用ROMUpdateUtility.exe重新刷了HTC Tmobile的ROM还是没有解决问题。并且发现进入三色屏时,最上的一行不是类似PB81110 HX-BC,而是怪怪的oo@ HX-BX,上面还有一条短横线。
* der Akku des HD2 sollte mindestens 80% geladen sein um fortzufahren
* schließe den HD2 wieder an den PC an und wähle im automatisch erscheinenden Menü > Festplatt (Disk Drive)
* entpacke mit 7zip das Rom von HTC welches du z.B. hier gefunden hast
* unter den entpackten Dateien befindet sich die Datei RUU_signed.nbh welche du umbenennen musst in LEOIMG.nbh
* kopiere die Datei LEOIMG.nbh aud die SD Karte des HD2
* trenne nun den HD2 vom PC und schalte ihn aus
* drücke und halte jetzt die Volume Down (leise) Taste
* drücke nun zusätzlich die Power Taste und halte beide 5 Sekunden
* wenn ein Menü auf dem Display angezeigt wird kannst du los lassen
* starte den flash Vorgang durch kurzes drücken der Power Taste
* der Vorgang kann bis zu 15 Minuten dauern und darf nicht unterbrochen werden
* wenn der Vorgang abgeschlossen ist drücke den kleinen roten Restknopf unter dem Akkudeckel (neben dem MicroSD Karten Slot)
* nun startet der HD2 neu und sollte das Betriebssystem laden

其中按住降低音量和电源键5秒钟很重要!
从SD卡更新Rom后,显示:
RADIO_V2 – OK
RCUST – OK
BOOTLOADER – OK
SPLASH1 – OK
OS – OK
CONFIGDATA – OK
RUU_WALLPAPER1 – OK
RUU_WALLPAPER2 – OK

Update Complete
Update SUCCESS

2010-08-19

enable Acrobat key shortcut

记的低一点版本的Acrobat在安装完后是默认启用快捷键的,如Acrobat 6。在Acrobat 9中却是默认不启用这个功能。要启用快捷键可在设置中更改。

Edit – Preference – General 中选中 Use Single-Key Accelerators To access tools

2010-05-01

试用HTCHD2

公司的手机可以续合同了,公司提供HTC HD2这款手机。考虑到这款手机的大显示屏和算是不错的硬件配置便毫不犹豫地订了这款手机。周二发的邮件订手机,周五就到了。效率还算是不错。

试用了一会儿,目前发现的问题有:

reset键在里面,必须打开电池后盖才能reset

没有触笔,在选择下拉菜单选项时很难选中

新拿到手免不了要自己刷机,访问各种论坛。一些基本术语是必须要掌握的,如:

LEOIMG.nbh/ruu_signed.nbh/[Randomname.nbh] - These are all the actual roms, the things you need to flash, usually they are called one of the first two names, but some rom chefs give their own names to the roms, but you can always distiguish which file you need as it will always be a "nbh" file and will always be the largest file in the archive/folder

SPL - Secondary Program Loader: Loads the actual OS. (The SPL is what lets you flash the different aspects of your device, however the stock SPL is 'CID Locked' which means only official releases from HTC can be installed.

HSPL - A 'custom' SPL created by the dark forces team (bepe and cotulla), this is CID Unlocked and it lets you install custom roms and flash any radio. The reason it is called 'Hard' is because it stays on your device after a flash, unlike 'Soft' SPL which is removed after a flash.

RUU - The official 'Rom Update Utility' from HTC which is used to do all your flashing from your pc, its essentialy a nice user interface for the SPL

CustomRUU - The custom Rom Update Utility from the dark forces team which is designed to be used with the HSPL

ROM - An operating system build from HTC, updated to bring you the newest functions and fixes

Custom/Cooked ROM - An operating system build built on a stock rom, these are created by 'Chefs or Cooks' who use 'Kitchens' to design their own roms to release to the community, these are usually alot better than stock roms and contain lots of custom tweaks from others in the xda community.

更多术语可以参考xdadeveloper的wiki页面:http://wiki.xda-developers.com/index.php?pagename=Glossary

2010-04-18

没有热水?

复活节就发生过一次,热水明显不够热。地下室里储热水罐的温度显示只有20度,而我设定的热水温度已经调到了最大55度。考虑到复活节让人来修比平时要贵不少,把修理时间订到了周一早上07:00。周一起一个大早,准备接待修理工。洗漱时发现又有热水了,喜出望外之际赶紧给修理工打了个电话取消了修理请求。

这周一又发生没有热水了,症状与上次一样,只是没有“自我修复”。周四下午到家第一件事就是约Mainova的修理工,结果约到周五早上07:00的时间。修理工检查发现,室内热水循环系统的压力变为了0 Bar,正常的数值应为2Bar。修理工清洗了Schmutzfänger(其实这个应该与我的问题无关),然后拿了一根管子连接水龙头往热水循环系统里加水,直到水压升到2Bar为止。据说自来水水龙头的水压在5  ~ 6 Bar左右,经过室内的减压装置水压变为4Bar。

在网上看到在给暖气放气要注意的事项:
Wichtig: Jeh nach Anzahl der zu entlüftenden Heizkörper und Größe des Heizkreislaufs ist es wichtig, daß nach dem Entlüften Wasser in den Heizkreislauf nachgeführt wird, weil der Druck durchs Entlüften abnimmt. Der otpimale Druck liegt in einem Einfamilienhaus bei ca 1,2-1,5 Bar. Unter 1 Bar sollte er nicht fallen. Zu hoch sollte er auch nicht sein, da die Pumpe sonst schwerer arbeiten muß (Verschleiß, Stromverbrauch).
Das Wasser wird übrigens am Kessel wieder nachgefüllt....
Wenn viel Wasser nachgefüllt werden muß (viel frische Luft), sollte man nach 4-6 Wochen nochmal entlüften.

2010-03-14

认识一下Navigon的nfs文件

使用navigon有一年多了,对这个导航还比较满意。中间插在点烟口上给导航器充电的线坏了一次,发了一个邮件给售后服务,很快就得到了回复。更重要的是很快就邮寄来了一根新的线来。这个售后服务做的也是很到家的。导航软件里有不少nfs文件,其用途分别是:

  • Brunnel_EU.nfs:  Positionen der Tunnel für schnellen Satfix

  • CityModels_EU.nfs: Städte und ihre Gebäude so realistisch wie möglich 3D

  • Landmarks_EU.nfs: zeigt Sehenswürdigkeiten und Sonderziele 3D

  • MapDrawer.nfs: für die Darstellung der Karten zuständig

  • poicats.nfs: Darstellung der Pois

  • RealityView_EU.nfs:  zeigt Beschilderung auf Autobahnkreuzen 3D

  • sat_EU.nfs: Darstellung der Übersichtskarte ohne GPS-Empfang

  • Terrain_EU.nfs: Darstellung der 3D Landschaften (Panorama View 3D)

  • TMC.nfs: TMC (pro) empfangen

2010-03-09

o2 loop surf stick 2, Fehler 720

相信会有其他人在google中以标题中出现的单词作为关键字来查找解决办法的。

我的问题是在Lenovo R400下,操作系统为Vista Enterprise + SP1,使用O2的loop surf stick 2,碰到掉线时,不能重新拨号建立连接,modem的log文件里记录720错误:

A connection to the remote computer could not be established.  You might need to change the network settings for this connection.  For further assistance, click More Info or search Help and Support Center for this error number.(720)

每次必须重新启动电脑才能重新建立连接,让人无法忍受。

google了半天,终于找到了如下解决办法:

1. Services.msc ausführen
2. folgende Services als automatisch einstellen

  • Telefonie
  • RAS-Verbindungsverwaltung (rasman)
  • Verwaltung für automatische RAS-Verbindung (rasauto)


3. Rechner neu starten

网上有Windows 7的用户也反映有这个问题,同样的办法估计应该有效!

2010-02-10

新笔记本让人失望

旧笔记本HP Compaq 6400的硬盘好像开始罢工了,开机时不时有蓝屏错误,查询微软知识库,极有可能是硬件错误引起的,日志里也发现disk warning。于是让同事带去公司修理或更换。离更换新笔记本还有3个月,估计support的人也不愿意折腾,换个硬盘,还倒腾一下数据,隔几个月再倒腾一下数据。于是直接给换了一个新的 Lenovo R400。新电脑用了不到一个小时就发现不少问题:

  • S键掉下来了!!重新给按回去了,不过仍旧是松松垮垮的!

  • 键盘的布局不一样了。ESC键被放置了最最上面,F1键取代了它的位置。这样按ESC的时候,总变成按F1键,可恶的是Vista下,windows的帮助似乎不是那么容易被禁用掉。。

  • Control键和Fn键的位置也互换了一下。Control键用的很多,以前在左下角非常方便,不会在按Control时按成其他的键。现在却被夹在了Fn和Windows徽标键之间。这一点网上抱怨的人很多,以thinkpad swap fn control为关键字一查就知道了。原来IBM很早以前就是把Fn键放在左下角的。另外回车键也变小了些。

  • 还有一点个人认为是设计上的缺陷。USB的口被设计成了与桌面垂直,而不是通常的与桌面平行。这样由于我的UMTS卡插上后,由于UMTS卡的宽度比笔记本要厚,这样要么把笔记本垫起来,要么把插UMTS卡的地方悬空。简直无语!

2010-01-22

Vista + SP1开机后出现黑屏

ZN给我打电话,说家里的台式机(fujitsu)开机(Vista Home Premiun + service pack 1)后虽然能启动,但是开机后没有桌面,一片“漆黑”。只能手动启动task manager,然后执行explorer。我以为是注册表被修改了,觉得应该不是什么问题。他买的是西门子的品牌机,买到后自己也没有作镜像备份(这点电脑厂商对普通用户要求有点过高),系统要是出了问题,没有备份光盘,怎么恢复??
我手里没有Vista的安装盘,倒是有win 7。在此之前有个在一台笔记本上安装win 7的愉快经历。安装很快,并且所有的硬件驱动都自动识别并安装好驱动了,省了很多时间,因此建议他也改用win 7。没想到安装win 7后,硬盘狂转一阵后,也是漆黑一片。关机试图进安全模式,被告知因为安装还没有完成,安装程序不能在安全模式下进行。重启两次都戏。没办法只能把win xp的盘扔进去,再折腾一下自己。安装win xp后,启动后桌面能正常加载。
我原来夸下海口说半小时就能搞定,现在一看没戏了。朋友在旁边玩扑克,看我没解决问题,安慰说,没事,原来那样虽然麻烦点也能用。可是现在不能恢复成原来那个样了,只好拿着他的电脑灰溜溜回家了。回家google了一下,有人提到是BIOS的问题。去厂商的网页下了一个最新的BIOS,更新后,重装win 7,问题解决了!
我怀疑是安装SP 1后带来的问题,因为朋友的机器新买到时就是安装的Vista Home版本,用了一年多都没有这样的问题。总结两点:
1. 解决这类问题时间要估计的宽松一些,有时候半天都不一定能搞定
2. 手里一定得有另外一台能上网的电脑,带刻录机,有空白盘 :)

2009-11-10

SAP Utilities课程

Level 2:
  • IUT110 Introduction to ISU/CCS

Level 3:
  • IUT210 Basic Data/Basic Function
  • IUT220 device management
  • IUT221 work management
  • IUT230 Billing and Invoicing
  • IUT240 Contract Accounts Receivable and Payable
  • IUT250 Customer Service
  • IUT280 Print Workbench
  • IUT225 Energy Data Management
  • IUT235 Real Time Pricing
  • IUT255 Integration of CRM, IS-U and BW

2009-11-06

IS-U基础

上两周刚搬完家,在搬家之前就为新家签订了新的供电合同。当时对一些背景知识还不了解,不知道签的合同后面是什么运作的。经过这一周的培训,现在对IS-U多少有些了解。IS-U涉及的行业包括电,气,水,暖气和垃圾处理。国家对这些行业的调整主要是让提供基础网络设施的公司与供应商分离开来,以引入竞争,让消费者有选择的余地。比如在电网商和供电商没有分开时,消费者只能从当地的电网商购买电,现在就可以向其他供电商购买电,而只需向电网商支付一定的网络使用费用。目前德国的电和气这两个行业在Deregulierung上已经走在了前面,接下来水,暖气和垃圾处理行业会逐渐面临这个问题。

能源市场上的各个公司之间的数据通信采用统一的EDIFACT标准,使用的数据段类型包括:
  • UTILMD:utility master data message
  • MSCONS:meter service consumption report message
  • REMDAV:remittance advice
  • INVOIC:invoice message
  • CONTROL:control message
  • APERAK:application error and acknowledgement message
  • REQDOC:require MSCONS
  • ALOCAT:

UTILMD中包含的值(粗体为常见值):

category:

E01 = Anmeldungen (Netznutzung)
E02 = Abmeldungen (Netznutzung)
E03 = Änderungsmeldungen
E04 = Zuordnungsliste Abgänge
E05 = Zuordnungsliste Zugänge
E06 = Zuordnungsliste Lieferstellen
E07 = Lieferantenzuordnungsliste
E27 = Anfrage
E35 = Kündigung Liefervertrag
E40 = Bilanzkreiszuordnungsliste
E44 = Informationsmeldung (zur Auflösung der Lieferantenkonkurrenz)
E48 = Anmeldung Beistellung
E50 = Abmeldung Beistellung

transaction reason:

E01 = Ein-/Auszug
E02 = Einzug (Neuanlage)
E03 = Lieferantenwechsel
E04 = Ersatzbelieferung
E05 = Stornierung
E06 = Notversorgung

各个类型的值和具体构造可以参看 http://www.edi-energy.de .

2009-10-23

把电话设为音频拨号

家里这个Sigma电话(TAF890 D)虽然内置数字留言功能,不过出厂默认设置竟然是脉冲拨号。在音频拨号和脉冲拨号之间切换还不是通过硬拨动一个小开关,而是通过输入一组键来实现切换。正因为如此才一直保留着那本说明书。切换到音频需要提前电话,并连续输入-> * 3 ->。

2009-10-16

学习BC480课程

BC 480是一个关于在SAP系统中使用基于PDF的打印表单的课程(PDF-Based Print Forms),包括附录一共9个单元。第一单元介绍了SAP interactive form by Adobe与以前的SAPscript和Smart Form相比的优点:
  • PDF是web上表单的事实上的标准
  • Adobe的产品LiveCycle Designer使得设计表单更为轻松和灵活
  • SAP NetWeaber Development Studio和 ABAP Workbechn都集成了LiveCycle Desinger
  • 多种格式的图像文件无需转换可直接插入到表单中
  • 可以旋转对象(包括文本)
  • 可以在同一个表单中的不同页面中使用不同的orientation(landscape or portrait)
  • Forms can be created so that they conform to accessibility standards
  • Complex layout elements can be shared between form developers
  • Existing PDF or Word documents can be imported
  • TrueType Fonts can be used; installation requires no upload
  • Barcodes can be printed on all printers of types Postscript, PCL, PDF, or Zebra
  • Mailing and faxing is easier
  • Forms are regular Repository objects with standard transport and versioning
  • Interactive scenarios and integration into browser-based applications are possible (Web Dynpro for Java or ABAP)
在设计表单时主要完成interface和form template这两个东西,其中template包括content和layout两部分。interface定义了程序可以传递哪些数据给表单,content则定义了interface中的那些部分可以被用在表单中。

2009-10-09

Adobe提供的几个常用网页

1. http://www.adobe.com/support/documentation/
Adobe各种产品的在线文档。打开这个页面后选择想查看的产品,然后会转到http://livedocs.adobe.com/域名下。如选择livecycle后,页面会跳转到 http://livedocs.adobe.com/livecycle/8.2/wb_designer/wwhelp/wwhimpl/js/html/wwhelp.htm 。因为Livecycle designer的帮助文件在不是当前窗口也显示在前,因此查看在线的会更方便些。
2. http://cookbooks.adobe.com/
这个网页与Oreilly合作,用于分享和查找与Adobe产品相关的代码,现在最活跃的是与Flex相关的板块。
3. http://learn.adobe.com/
这是一个wiki站点,让大家共同来创作帮助初学者学习Adobe的产品。

2009-09-30

SAP关于表单的课程

  • BC 480:PDF-Based Print Forms
  • BC 470:Form Printing with SAP Smart Forms
  • BC 460:SAP-Script Form Printing and Text Management

2009-09-29

用电力线路传输数据

今天在ibood.de网上买了一个使用电力线路传输音频数据的转换器,名为dLAN Audio extender Starter Kit,39.95加上UPS运费5.95。这样以后就可以把楼上的电脑和楼下的Bose音箱连接起来。试用了一下,安装很简单,不过有时候数据传输不稳定,音乐会出现短暂的中断。目前还不知道是什么原因导致的短暂传输中断。

2009-09-28

孔夫子的生日

今天照例打开google的主页查找点东西,一看logo上加了一行中文字,”有朋自远方来,不亦悦乎“。鼠标移过去才知道今天是孔夫子的诞辰。中文和德文的google主页logo都是它,而英文搜索主页的logo却没有改变。分别打开了google日文和韩文搜索主页,发现日文的logo有孔夫子的名言,而韩文的与英文一样,没有更改。很好奇google的logo是各国自主决定,还是全球统一管理。





2009-08-18

mspaint的替代工具

windows下都自带一个名为paint的处理图像的简单工具,不过这个工具的功能实在有限。在网上发现了一个能很好替代它的的免费工具, paint.Net

2009-08-14

google picasaweb vs. microsoft photogallery

一个朋友结婚拍了些照片放在了google的picasaweb下,通过她的hotmail邮箱发了个链接给大家分享。没想到的是链接的href属性没修改成了:href="http://www.microsoft.com/china/windows/windowslive/products/photo-gallery-edit.aspx"

不知道这个可笑的替换是在撰写邮件时被替换的,还是在邮件服务器上被替换的。很想知道用gmail账户发出带microsoft photo-gallery会不会被替换成picasaweb的页面。这样不光彩的行为对稍有计算机常识的人不是问题,可是对于年老的父母亲一定会带来困扰。谁叫她使用的是hotmail的免费服务呢,没准那个角落的条款就容许Microsoft这么干。如果是hotmail的付费用户,兴许Microsoft不会采取这样拙劣的办法。

2009-07-15

LiveCycle Designer中事件顺序

在LiveCycle Designer中有很多预定义的事件,弄清这些事件的先后顺序很重要。有不少事件,如initialize,validate等事件是在加载文档时没有用户参与就发生的。文档中field元素的事件总是先于form表单的事件。

f为表单名称,p为第一页页面名称,txtField是一个text field的名称。

f.p.txtField::initialize
f::initialize
f.p.txtField::validate
f::validate
f.p.txtField::ready:form
f::ready:form
f.p.txtField::docReady
f::docReady

2009-07-14

解决无法访问dashboard的错误

升级wordpress到2.81后,可以登录进入管理界面,修改各项设置,但是左侧的菜单栏显示不正常,并且不能进入dashboard界面。一点击就会出现页面错误提示:

You do not have sufficient permissions to access this page.

网上有不少类似错误,但很少有仅仅出现在dashboard页面上。后来突然想到有可能是plugin不兼容导致的错误,发现曾经安装过一个名为Admin Drop Down Menu的插件。这个正好与管理界面内的菜单相关,禁用后立即可以访问dashboard页面了。

2009-07-13

转换文件编码

使用vim来转换文件编码:

$ ex filename '+set fenc=utf-8' '+x'

如果要把多个文本文件转换为utf8
$ find -name '*.txt' -exec ex {} '+set fenc=utf-8' '+x' \;

2009-07-12

转换mysqldump文件编码

以前就为mysqldump导出的文件编码折腾过,这一次没费那么大的劲。因为blog的备份是以前从系里mysql服务器dump出来的,并且系里的mysql服务器版本比较低是4.0 (-- Server version    4.0.24_Debian-10sarge2-lo),导出文件的默认编码不是utf8。使用iconv转换总失败,只好用来方法,用notepad++打开sql文件,然后选择format  -> convert to utf8,保存为utf8编码的文件。中间notepad++假死很长时间,耐心等待之后才成功保存。这样把utf8编码的sql文件上传到新的mysql服务器(版本为v5.0.81)后,中文和变音才正常显示。

2009-07-04

无法启动windows上的cygwin sshd

升级完cygwin后,用putty就无法连接本地的ssh server了。查看windows下面的service,CYGWIN sshd根本没有启动。手动点击启动仍然无法启动,执行命令/usr/sbin/sshd 也无法启动,得到错误提示:

/var/empty must be owned by root and not group or world-writable.

执行/usr/sbin/sshd -D -d -d -d得到更详尽的信息:

$ /usr/sbin/sshd -D -d -d -d
debug2: load_server_config: filename /etc/sshd_config
debug2: load_server_config: done config len = 196
debug2: parse_server_config: config /etc/sshd_config len 196
debug3: /etc/sshd_config:13 setting Port 22
debug3: /etc/sshd_config:38 setting StrictModes no
debug3: /etc/sshd_config:92 setting UsePrivilegeSeparation yes
debug3: /etc/sshd_config:106 setting Subsystem sftp /usr/sbin/sftp-server
debug1: sshd version OpenSSH_5.1p1
debug1: private host key: #0 type 0 RSA1
debug3: Not a RSA1 key file /etc/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #1 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #2 type 2 DSA
/var/empty must be owned by root and not group or world-writable.

记得以前的版本中var目录在cygwin的安装目录下,现在var目录被自动创建到了C:\var下。

试着在var下创建了empty目录并修改其权限,仍然不能启动。最后重新启动cygwin安装程序,在Install for选项中选择for all,在组件中选择reinstall cygwin,cygrunserv, openssh,安装完毕后马上就可以启动ssh服务了!

Update: 在台式机上遇到同样的问题,这次与在笔记本上不同。不能启动windows里的服务,但却能够在命令行下启动sshd,并且能登陆。采用上面的办法重装后仍然不见效果。重新运行ssh-host-config后sshd.log仍然出现

/var/empty must be owned by root and not group or world-writable.

执行:$ chown SYSTEM empty

jia@swhtw78190 /cygdrive/e/cygwin/var
$ ls -al empty/
total 0
drwxr-xr-x+ 2 SYSTEM Benutzer 0 Jul 7 12:36 .
drwxrwxrwx+ 8 jia Benutzer 0 Jul 7 12:36 ..

jia@swhtw78190 /cygdrive/e/cygwin/var
$ net start sshd
CYGWIN sshd wird gestartet.
CYGWIN sshd wurde erfolgreich gestartet.

估计是ssh-host-config程序没有正确设置/var/empty目录的owner。

2009-06-17

Live Cycle Designer下text object和text field object的区别

当把表单中的数据导出成XML文件时,text object的数据不会出现在XML文件中,而text field object的数据会出现在XML文件中。

可以设置tab order忽略text object,但不能跳过text field object,尽管它的属性设置为invisible或hidden。

2009-06-16

清除radionbutton group的选择状态

通过脚本来清除radiobutton group 的选择状态不能通过设置其值为null,而必须设置其值为空,如

F.P.radioButtonGroup.rawValue = "";  而不是F.P.radioButtonGroup.rawValue = null;

javascript中的比较

如果把一个string和一个number相比较,javascript会自动试着将string转换为number,所以 "1.010" == 1.01 表达式返回true。

空和空格会被转换为数字0,所以不管是"" == 0,还是"  " == 0 都会返回true。

这也与使用的比较操作符 == 有关。更严格的比较使用 ===,参看javascript reference

2009-06-14

又长一颗痣

早上起床洗脸突然发现右脸上有多了一颗黑痣。在此之前右脸上已经长了两颗黑痣,不过没留意过是什么时候钻出来的。这次这颗竟然在一夜之间就冒出来了。

2009-06-10

删除一对XML标签内的文字2

LiveCycle Designer不提供一次删除所有的javascript代码,要清空多个xdp文件内的脚本得使用正则表达式来将<script contentType="application/x-javascript">和</script>标签之内的文字替换为空,也就是删除<script contentType="application/x-javascript">和</script>标签内的脚本。

我的尝试:
:%s/\(<script \a*="\a*\/x-javascript">\)\([^<]*\)\(<\/script>\)/\1\3/

或者
:%s#\(<script contentType="application/x-javascript">\)[^<]*\(</script>\)#\1\2#

用sed来处理:
sed -rn 's#(<script contentType="application/x-javascript">)[^<]*(</script>)#\1\2#g;p' myfile.xdp

如果脚本有多行,需要处理换行的情况:
%s#\(<script contentType="application/x-javascript">\)\([^<]*\n\)*[^<]*\(</script>\)#\1\3#g

或者用awk来处理换行的情况:

awk -v RS="<script contentType=\"application/x-javascript\">" 'NR!=1{gsub("^[^<]*</script>","</script>")}{printf NR==1?$0:RS""$0}'  myfile.xdp

Update: (2009-06-24 )

要干净删除已有的脚本代码,仅仅删除<script>标签内的代码还不够。这样会留下很多空的不包含脚本的event标签,当再次添加脚本文件时,如果新生成的event标签连同script标签在原来那个标签之后,那么代码将不会在design view下显示出来,而只在XML source中显示出来,在执行时,代码仍会被执行。也就是说,一个不包含任何代码代码的form的xml source里面应该有不会有event标签出现。

2009-06-03

xdp文件变大问题

今天留意到我这几天正编辑的xdp文件已经到了8MB了,原来不过仅仅几百KB。这又让我想到经常代码写进去后在design view下看不到,只有在xml source界面下才能看到,并且是重复的。

网上google的结果是,这是Livecycle Designer ES 8.2的一个Bug造成的。
A bug introduced with LiveCycle Designer ES Update 1 (8.2) is now fixed in LiveCycle service pack 2 and the Acrobat 9.1 update. The bug causes a processing instruction ex. <?templateDesigner StyleID aped3?> to get copied repeatedly while working with the form. This can lead to extremely large file sizes and sometime causes crashes. The fix removes duplicate StyleID's found in existing forms and prevents them from being created.
http://blogs.adobe.com/livecycle/2009/03/post.html

2009-05-31

删除一对xml标签内的文字

原来的xdp文件中有很多旧的脚本,都在<script>标签内,如:

<script contentType="application/x-javascript">$.rawValue = ValidateScriptObject.fmtDate(ValidateScriptObject.getPeriod(),1);</script>

LiveCycle Designer不提供一次性删除所有的javascript代码,只好自己动手。在vim下先查找x-javascript,然后执行 cit 来删除标签内的文字,然后击键 n . ,这样下去似乎很快捷,不过后来发现当标签内文字不为空时,命令执行的很好,当这是一对空标签时,cit 命令会删除开始标签,导致XML文件不再well formed,后来在bbs.chinaunix.com一问才知道,这是gvim 7.1的一个bug,7.2修正了这个问题。

2009-05-30

解决无法写入_viminfo文件错误

最近在笔记本上的windows xp上使用gvim时,总是提示无法写入D:\Documents and Settings\dingjun.jia\_viminfo文件。开始以为是文件权限被错误设置。在检查目录Documents and Settings的权限设置时,发现这个文件夹的readonly被阴影选中了,取消保存后该选项仍然显示被选中,不过这个目录确实可写,估计只有微软自己的程序员才知道为什么要把这个文件夹设置为readonly,并且这个设置还不起作用,总之走了一段弯路。网上有人写道有可能是viminfo有太多的临时文件,vim无法知道该把哪个临时文件写入_viminfo中,所以写入失败。查找了一下并没有发现viminfo的临时文件,viminfo的帮助(:help viminfo)说,Unix或OS/2下该文件位于$HOME/.viminfo下,在Windows下位于$HOME\_viminfo。如果windows下没有定义HOME变量,文件被保存到$VIM\_viminfo,如果VIM也没有被定义,就位于c:\_viminfo。可是我使用gvim 7.2总是试图在目录下D:\Documents and Settings\dingjun.jia\下写该文件。定义了VIM变量,问题依旧,在定义HOME变量后,提示消失了。是不是Vim的Help应该更新了?

2009-05-26

在LiveCycle Designer下调试javascript

在Firefox下用惯了用firebug去调试javascript,现在在Livecycle Designer下也希望有一个这样的工具。查了半天文档才发现在Acrobat下打开javascript debugger(Edit -> Preferences, Select Enable Interactive Console and Show Console On Errors And Messages),可以在Livecycle Designer下用control + j打开。让人费解的是如何执行interactive console下的代码,必须先选中要执行的代码,再按control+enter,才能执行。

Using the JavaScript Console from Acrobat, you can to evaluate single or multiple lines of code.
There are three ways to evaluate JavaScript code while using the interactive JavaScript Console:
To evaluate a portion of a line of code, highlight the portion in the console window and press either Enter on the numeric keypad or Ctrl+Enter on the regular keyboard.
To evaluate a single line of code, make sure the cursor is positioned in the appropriate line in the console window and press either Enter on the numeric keypad or Ctrl+Enter on the regular keyboard.
To evaluate multiple lines of code, highlight those lines in the console window and press either Enter on the numeric keypad or Ctrl+Enter on the regular keyboard.

2009-05-20

初识Adobe LiveCycle Designer

写了几天的specification,现在开始动手用Adobe LiveCycle Designer编程了。这个东东的名字就让我费解了半天。程序安装完后在开始菜单里显示为Adobe LiveCycle Designer ES 8.2,启动程序后程序的标签上显示的名字为Adobe LiveCycle Designer,但是在Help下的关于菜单下又显示为Adobe LiveCycle Designer ES。浏览Adobe的网页之后才搞清楚,Adobe提供的一个解决方案被称为LiveCycle ES (Enterprise Solution),其中有服务器组件,也有designer组件,还有一个workbench组件,而Adobe LiveCycle Designer就是designer部分。

用了之后很失望,与其他编程的IDE相差甚远,与之搭配使用的Acrobat Pro9下的debugger窗口也很蠢,鼠标点到Acrobat窗口后,debugger窗口仍然在当前窗口,只有笔记本没有第二个显示器简直是一场恶梦。更惨的是一个form有错之后,必须关掉Acrobat,重新启动,否则Acrobat不能正确解释form内的JavaScript代码!!不知道Adobe什么时候能在这个产品上多花点功夫。

2009-05-14

在Excel下用方向键在单元格间移动光标

今天在使用Excel时,发现使用上下左右方向键(KEYDOWN、KEYUP、KEYLEFT和KEYRIGHT)进行单元格的切换时,发现方向键控制的不是单元格的切换,而是整个Excel工作表的滚动条的移动,而当前焦点的单元格并没有随方向键而改变。解决办法是按下Scroll Lock键。

2009-05-06

自定义另存为对话框中的快捷访问位置

当你在一段时间内要多次点击鼠标才能到你的文件夹时,你会发现这招很有用。使用组策略来添加另存为对话框中的快捷访问方式:

run gpedit.msc

open User Configuration – Administrative Templates – Windows Components – Windows Explorer – Common Open File Dialog - Items displayed in Places Bar

choose enable and add folder to Place to display

2009-04-17

IT职业规划

又在家休息了一段时间了,项目方面仍然没有消息。看看微软的人讲讲关于IT职业规划吧。
http://www.microsoft.com/china/technet/webcasts/class/career.mspx

2009-04-07

下载IGO 8.3.2.71348

在一个论坛上网上看到一个发帖,里面有IGO 8.3.2.71348的链接,文件是上传到rapidshare的。在帖子中链接不是完整的形式给出来的,而是以下面这种形式给出的。
http://rapidshare.com/files/175240934/i83264go.part01.rar
文件一共有20个,一个个去copy link location太麻烦了。于是选中了所有的链接,在Firefox先选中selection source,再把html source复制到一个文本文件里,再用grep过滤一下就行了
grep -s -o -E http:\/\/rapidshare\.com\/files\/[0123456789]{9}\/i83264go\.part[0123456789]{2}.rar igo8.txt
安装RSD和RouterControl程序。在RSD程序中Einstellung -> Methode 下给出RouterControl程序的正确路径,并填写参数/MULTI /d /c /q。把上面grep得到的结果复制到RSD中,启动下载。
Enjoy it!

2009-04-03

HP打印机端口

以前在大学为Windows XP安装打印机时经常使用standard TCP/IP端口来连接网络打印机。因为大学内IP地址是绑定到端口的,打印机装好之后基本就固定了。这次在帮gk公司安装一台HP的网络打印机时,一个奇怪的问题让我认识了HP打印机标准端口。不知道这种HP打印机标准端口是HP驱动程序带的,还是Windows Vista下自带的。

gk公司内IP地址是通过DHCP分配的,并且楼内因为有多家公司办公,共同使用网络设施。gk的电脑上安装的打印机使用的就是standard TCP/IP port。她的办公地点挪动到另一间屋子时,能上网,但不能打印了。一看分配到的IP地址,不再是以前的C类地址 192.168,而是一个A类地址10.0,而打印机得到仍然是C类地址。打完一圈电话后才知道楼里有两个DHCP server。机器启动时,哪个DHCP server响应快,机器就得到一个相应的A类或C类地址。可是她的同事的电脑也获得了一个A类地址,却仍然可以打印。区别就在于她的同事电脑上安装的打印机使用的是HP打印机标准端口,其中有一个选项是: 当IP地址改变时也打印到这个设备上。我猜测是直接使用打印机的MAC地址与打印机的网络模块通信,而不再需要IP地址解析,所以能把要打印的数据发过去。

2009-03-23

PI Bootcamp

这周(23.03.2009 - 27.03.2009)参加公司的SAP PI的培训。

Course Objectives :
  • Understand the technology and developer basics of SAP NW PI
  • Understand the technical architecture of each SAP NW PI component
  • Implement SAP NW PI business scenarios

This course will cover:
  • PI Overview
  • System Landscape Directory (SLD)
  • Integration Repository (IR) – Design
  • Integration Directory (ID) – Configuration
  • Mapping Techniques
  • Runtime Workbench (RWB)
  • Adapter Framework (AF)
  • Business Process Management (BPM)
  • Monitoring and Administration
  • Installation and Technical Architecture Considerations

2009-02-13

音频光纤接口

在media markt买了一个LG47寸的LCD电视(47LG5000-ZA.AEUQLVG,W/O::901WRKG1K501,S/N:91ES0484),价格为1099 欧元+运费20欧元。因为以前买的也是LG的LCD电视,带有同轴的音频输出接口(Cinch-Buchsen)。因此买这款时没注意到,这款电视的音频输出只有一个方型的光纤接口(TOSLINK),不能把它直接和新买的音箱(Bose的CineMate® Digital Home Cinema Speaker System)连接起来。还好SAT reciever有两个输出口,这样直接把SAT reciever和音箱连在一起了。只是播放DVD的时候还得把音箱的一端连线从SAT reciever上拔下来接到DVD的输出上。

2009-02-10

shell脚本中的行尾空格引起的错误

如果执行脚本时出现syntax错误,如 line 9: syntax error: unexpected end of file 并且提示出错的行比脚本中最后一行的数字还大时,检查脚本中的行尾是否有空格,删除行尾空格就应该能解决这类错误。在vim中使用 :% s/\s*$//即可删除行尾的空白字符,包括<Space> 和 <Tab>。

2008-12-10

standby之后出现蓝屏

最近笔记本不时出现蓝屏,都是发生在笔记本空闲一段时间进入standby之后。摁电源键之后红色的desktop还能闪一下,紧接着就是蓝屏:

page_fault_in_nopaged_area

technical information: 0x00000050 (0xF7A62000, 0x00000001, 0X804DADE8, 0x00000000)

或是:

technical information: 0x00000050 (0xF7A62CB000, 0x00000001, 0X804DADE8, 0x00000000)

以0x00000050为关键字在微软的知识库查,发现这个错误有可能是USB的驱动,刻录程序,病毒或木马引起的。赶紧查一下毒再说吧。

2008-11-25

用Vsubst加载一个目录为虚拟盘

在windows下当一个常用的目录处于比较深的位置时,层层点击或从favorite点击过去都比较麻烦。在网上找到一个免费的小软件VSubst可以把任意的一个目录虚拟为一个盘,这样便于访问。

2008-11-18

邮件在Outlook发件箱里不能被发送

前几天一直很烦,时不时的就出现邮件停在Outlook的发件箱里不能被发送。双击邮件显示总是,该邮件还没有被发送。点击发送后,邮件虽然在发件箱里,但是发送时间总是显示keine Angabe。打了好几次电话给hotline,问题都没有解决。后来发现,这种情况基本上是发生在由Johannes准备的邮件上。因为production组的人都有一个共同使用的账户,以前是我自己准备邮件,然后发送,现在大多是Johannes准备好邮件,我再检查一遍,然后再发送出去。于是问题就出现了。奇怪的是我写了封测试邮件,放到production的邮件账户里,Johannes却能正常发送出去。难道问题出在他用的是Outlook 2007,而我用的是Outlook 2003?

2008-11-16

卸载Windows Live Messenger 2009 beta

一位朋友新买了一台电脑,自己安装了windows live messenger 2009 beta版本。可是安装完成后根本不能登陆,错误代码为8000ffff。网上查询的结果显示有不少人都有同样的错误,都是建议卸载后安装一个低一点的正式版本。下载完8.5版本后无法进行安装,因为检测到有更新的版本存在。于是去卸载windows live messenger 2009 beta。可是Windows控制面板里的添加卸载程序里根本就没有列出它,无法卸载。在程序安装的文件夹内也找不到卸载程序。执行用Windows Installer CleanUp Utility 1.0后,beta版本的messenger仍然纹丝不动。google的结果中有个方法是执行:

msiexec /x {B1403D7D-C725-4858-AACC-7E5FA2D72859}

可是这个方法在这位朋友的机器上却不见效,说对当前安装的程序无效。想到贴出这个方法的都是使用英文的用户,而我这位朋友安装的是中文版本。也许是英文与中文版本的ID不一样。于是上注册表一看,果然windows live messenger下的ID是另一个值。把上面的ID值更换之后,卸载界面终于出来了。问题就算解决了,可是为什么不能让beta版本的卸载更容易些呢?

2008-11-13

延迟发送邮件

现在每天要通过邮件向客户的头发送两次status report。第二次发送的时间是在18:00。如果在17:30就准备好了要发送的邮件,想早一点结束工作而又不想让头头18:00之前看到邮件,怎么办?
解决办法是在exchange+outlook环境下使用延迟发送邮件功能。撰写好邮件之后,在邮件选项里可以指定在特定时间之前不发送。这样即使在本地Outlook发送完邮件之后,exchange服务器在指定的时间之前也不会投递邮件到邮件接收者。

参考:
http://office.microsoft.com/en-us/outlook/HP052427901033.aspx?pid=CH063565631033

2008-11-12

收回已发送的邮件

Outlook 2003 在Exchange环境下可以撤回已发送的邮件。打开已发送的邮件,在action菜单下有个选项撤回已发送的邮件,具体操作如下:
http://office.microsoft.com/de-de/outlook/HA010917601031.aspx

2008-11-07

update Nav N Go iGO to v8.3.1.57021

把文件拷贝到SD卡后,启动程序总报错说:

program application database cannot be found. Please insert the original card.

网上提示修改sys.txt文件中app的路径,比如把SDCARD改成本地化版本WM中SD卡的名字:

[folders]
app="%SDCARD%/iGO8"

[interface]
maxzoom2d=6000000
show_exit=1

[map]
2dheadup=1

试着修改为Speicherkarte,仍然不行。不过发现在启动程序后在Mein Windows Mobile-basiertes Gerät下面会有一个以app的值为名称的文件夹,不过里面都是空的。也就是说程序去那儿查找content文件夹的内容却找不到,所以报错。后来干脆删掉指定folders的两行,问题就解决了。因为sys.txt,iGo8.exe和content等文件夹在同一个目录下,查找是从当前目录开始,于是就找到了。

2008-11-03

Sending artes with Outlook 2007 failed

今天要重发一遍上个月月底的time  reporting,结果发送不出去,因为周末把Outlook更新到了2007。可气的是Artes的出错提示,明明我点击的是发送,它却总是告诉我,我点击了cancel,取消了发送过程。这样的提示如何帮助用户去解决问题。后来找到的解决办法:

  1. Close Artes & Outlook 2007.

  2. Install the Microsoft patch by clicking here.
    NOTE:  You can also install the patch Collaboration Data Objects, version 1.2.1 from this link: http://www.microsoft.com/downloads/details.aspx?familyid=2714320d-c997-4de1-986f-24f081725d36&displaylang=en

  3. Start Artes & Outlook 2007.

  4. Send your Time Report.

2008-10-28

print files in landscape orientation

在双面打印横向排版的文件时,根据个人的经验,如果使用HP打印机,奇数页面的方向是正确的,可是偶数页的方向却不对。在打印之前需要设置一下orientation:

Fertigstellung -> Ausrichtung -> 选择 Querformat

2008-10-27

Font Substitution with Acrobat

Acrobat提供一个特性,把显示文档所需的字体嵌入到文件中,而不必把整个字体文件嵌入到文件中,因此能明显减小文件的大小。如果发送一个中文的pdf文档给一位使用西文操作系统的用户,这时最好使用font substitution,以保证这个文件在他的系统中能正常被现实和打印。

Font substitution in PDF will occur when the computer does not have access to the original font. If the original font is not present, an Adobe Multiple Master typeface is temporarily substituted for missing fonts— AdobeSerifMM for a serif fonts, and AdobeSansMM for sans serif fonts.

Documents submitted to technical review by the agency may contain formulas and other scientific characters. To prevent the possibility of a character being incorrectly substituted, documents must have fonts embedded.

Modern font sets often contain thousands of characters. Completely embedding a font greatly increases the file size of the resulting PDF. The solution is font subsetting. Subsetting only embeds the characters that are necessary to render the page. Visually, a document with subset fonts and completely embedded fonts looks and prints identically.

2008-09-07

购买Office 2007记

从周一开始就在K给Jump Starter做Training。今天结束的早赶上了17:11的S-Bahn,并在S-Bahn上和去年参与招人工作并主持AC的MM和Stefan(后来才知道是位senior manager)和聊了起来。快到Hbf时,GK打电话说,她公司的电脑上的Office 2007试用版已经不能用了,老板让她自己去买一套Office 2007,于是求助于我,让我去Hauptwache帮她买一套。早就跟她说过Open Office完全可以作为替代品,不过对此似乎是很不感冒。我也懒得再费口舌坐车直奔Hauptwache的Saturn了。这应该算是法兰克福最热闹的地段的一个大型电器商场了,不想货架上唯一找到的微软的Office产品除了一份单独出售的Outlook 2007外就只有Office 2007 standard的一个upgrade版本,价格为349欧元。也就是说购买者在自己的电脑上必须已经安装了一份有许可证的Office组件(Word,Excel和Powerpoint)才能使用这个Upgrade版本。看到如此情形,不禁怀疑微软是不是根本就没有打算把Office 2007卖给个人消费者,所以它才在法兰克福这样一个国际性大都市最繁华地段的大型电器商场不见踪影。一番电话之后,打消了那位还想购买Office 2007许可证的想法。Citibank这样的客户到现在还在用Office 2000,不禁好奇这Office 2007都卖给了什么样的企业用户。

2008-08-28

针对IE的CSS

用CSS来布局页面,IE的不同版本对CSS的支持不一样,因此必须针对不同的版本应用一些CSS hack。IE 5和以上版本提供一种特殊的注释,IE 会去解释它,而其他的浏览器把它视作注释,不用理睬。

想针对版本低于和等于IE 6的应用CSS,可以使用:

<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="css/IE6hacks.css" />
<![endif]-->

只针对IE 7的CSS:

<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="css/IE7hacks.css" />   
<![endif]-->

针对IE 5和以上版本:

<!--[if IE ]>
<link rel="stylesheet" type="text/css" href="css/IEhacks.css" />   
<![endif]-->

使用Google Calendar Sync

为了把Outlook的日历与Google的日历同步,找到了Google提供的Google Calendar Sync。填写好Gmail的账户和同步频率后就可以完成同步。这个小软件提供三种同步选择,google 日历 -> outlook 日历,outlook 日历 ->  google 日历和google 日历 <--> outlook 日历。如果能把它作为一个Outlook的addon应该会更加方便。

Vista下改变分区

周六一个朋友新买一个电脑(Vista系统),让我帮忙创建分区。我以为还可以用旧的PM搞定,用Windows PE光盘启动后,不知道是硬盘太新,还是Vista的原因,连硬盘都没有识别出来,只好作罢。后来在网上一查,原来Vista已经自带了调整和创建分区的工具。

Windows Vista includes a built-in functionality in Disk Management to shrink and expand partitions. No more 3rd party utilities needed!

2008-07-06

邮件没有到达某些或全部的预定收件人

为GK在Outlook下配置了1und1的邮箱,使用IMAP协议,收发邮件都没有问题,可是每发送一封邮件时总会在本地的收件箱里收到一封由“系统管理员”发送的主题为“未传递:邮件主题”的邮件。邮件内容为:

邮件没有到达某些或全部的预定收件人。

主题: foobar

发送时间: 6.7.2008 20:58

无法到达以下收件人:

'foobar@hotmail.com',时间为 6.7.2008 20:58

550 must be authenticated

Google了一下原来是因为在在设置账户时没有选中选项:

我的邮件发送服务器(SMTP)要求验证

2008-06-22

web dynpro for abap基础知识(4)

本篇是关于如何访问controller context。

访问一个context node

对于每一个controller,系统都会为其自动创建一个interface,名为IF_<ctrol_name>。在这个interface中,对于每一个context node都会有一个相应的WDCTX_<node_name>存在。访问root node直接使用WD_CONTEXT,访问root node的子node使用get_child_node( )方法,要注意的是方法名作为参数被传递时必须是大写!方法返回指向指定node的引用,类型为IF_WD_CONTEXT_NODE。这个方法还有一个可选参数,是要访问的element在父node中的索引编号。

访问一个node element

获得一个指向node的引用后就可以使用get_element( )方法来获得指向element at selection的引用,类型为IF_WD_CONTEXT_ELEMENT。

2008-06-21

学习HR350课程

sap的HR350是一个关于Human Capital Management的ABAP编程的课程。这个课程按课程材料规划是5天,此次在Heidelberg的HCMS学习这个课程却只有3天时间,因此只学习了第1单元到第5单元。Unit 6 (Data structures in personal planning),Unit 7(Logical database PCH),Unit 8 (customer-specific Infotypes)和Unit 9(HCM ABAP Feature)只能自己在家学习了。

2008-06-20

web dynpro for abap基础知识(3)

web dynpro中controller的方法

在web dynpro中每个controller都有两个默认的方法:

wddoinit():这是一个controller内第一个被调用的方法,常用于初始化数据。

wddoexit():这是一个controller内最后一个被调用的方法,用于做收尾工作。

这两个方法在controller被创建时自动生成,并且都是空的方法。

对于component controller还有两外两个重要的方法:

wddobeforenavigation():
This method is called after the action method has been processed and just before the web dynpro frameworkprocesses the events in the navigation queque.

wddopostprocessing():
This method allows data validation from multiple components, and it's the last controller method that is processed before the UI is sent to the client.

view controller也有自己的两个方法:

2008-06-19

web dynpro for abap基础知识(2)

在web  dynpro中定义user interface

定义user interface相对比较简单,从左边栏的工具箱里拖拽需要的UI elements到layout里面,并设置各个UI element的属性。更多的工作是关于data binding。

有些UI elements是不可见的,如TransparentContainer, ViewUIElementsContainer。这类元素用于组织其他的可见元素,如Button, Label,InputField,Table,Tree等。所有的UI elements被组织成一个树状结构,根节点名为RootUIElement,类型为TransparentContainer。RootUIElement下的每个container element都有一个属性Layout,它规定了在container内元素的布局。4种layout manager可供layout属性选择:

2008-06-18

web dynpro for abap基础知识(1)

空闲在家开始学习sap课程NET310 abap web dynpro。想学这个课程是因为Alex说,现在对web dynpro for abap的需求会越来越大。想到到他搞sap已经十几年了,先相信他这一判断。

这个课程以BC400和BC401(abap objects)为基础。BC400没有完整的学过,BC401也没学过。看了前几个单元,先纸上谈兵一番,总结一下关于wda(web dynpro for abap)的基础知识。

web dynpro for abap采用了MVC的设计方法。一个web dynpro component包括window,views和component controller。window和view主要和UI有关。windows只是一种容器,在一个component内一个window可以包含任意多个view,而component controller只有一个。如果一个component不需要view,那么windows也就相应无需存在了。

一个web dynpro component可以与一个URL关联,通过浏览器来访问,或者作为另一个web dynpro component的sub-component供调用。

用abap创建一个简单的web dynpro application

执行se80,选择Repository Browser,并选择Web Dynpro Comp. / Inf.

填入要创建的web dynpro component的名字,回车,系统创建web dynpro component,并为它创建了一个Main view和一个window。

接下来在main view的tab context中为view context创建一个context node,在main view的tab layout中插入一个表格,并完成data binding,实现main view的tab methods下的WDDOINIT方法。之后创建一个web dynpro application,并激活整个web dynpro component。测试这个web dynpro app会自动打开浏览器显示表格内容。

2008-06-17

abap objects中的命名习惯

abap objects中的类和接口与data elements,tables,structures和types共用一个命名空间,它们都被保存在表TADIR中。

classes in the class library: CL_<class name>
example: CL_COMPANY_CODE, CL_GENERAL_LEDGER_ACCOUNT

interfaces in the class library: IF_<interface name>
example: IF_STATUS_MANAGEMANT, IF_CHECKER

local classes in programs: LCL_<class name>
example: LCL_TREE_MANAGEMENT

local interfaces in programs: LIF_<interface name>
example: LIF_PRINTER

2008-06-12

使用ALV的一个例子

HR350中的Unit 4介绍了使用ALV(ABAP list viewer)来格式化report的数据输出,使输出的数据具有排序,打印,搜索,过滤,隐藏/显示特定字段等功能。使用ALV最基本的步骤包括:

1. 把要显示的数据都放到一个内表中

2. 定义一个field catalog,用于确定要显示的列

3. 调用函数 REUSE_ALV_GRID_DISPLAY

2008-05-05

Outlook 2003的search folder功能

search folder是我在Outlook中常用的一个功能,因为它能方便的根据不同的条件来组织邮件。现在的项目先后有两个负责的经理,为了把项目有关的邮件组织在一起,所以建立了一个search folder,过滤条件是From or Sent to。公司用的是Exchange Server,所以过滤条件内容为vorname1.name1; vorname2.name2。奇怪的是过滤出来的结果中没有包含后面那位经理的邮件。很明显问题只可能出在过滤条件的输入内容上,但是反复检查都没有拼写错误。最后把第二位经理的邮件地址写为name2, vorname2,过滤结果中就包括她的邮件了。实在不知道为什么,估计和Exchanger Server那边两位经理的user profile有关。

2008-05-04

升级MDA到windows mobile 6

公司发的MDA compact III操作系统为windows mobile 5.0,今天抽空把它升级到了6.0,并把Microsoft ActiveSync从4.2升级到4.5。安装完Windows Mobile 6.0后发现自带了杀毒软件F-Secure Mobile,其他也就是图标换了换,另外word默认保存为Word 2007支持的docx格式。原来在Kontakte只显示Outlook里同步过来的联系人,现在升级后SIM卡里的联系人也一并在Kontakte中显示,并且不提供选项更改。这一点感觉很不友好!

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。