2011-11-02

oulook 2010的邮件索引问题

系统windows 7 entreprise (64bit),outlook 2010 (32bit,版本号14.0.6025.100),MS Exchange 2010 mail account。

最近发现search folder下的文件下总不能自动更新,查看被禁用的addin包括windows search Email indexer mssphtb.dll。启用后重启outlook,又自动被禁用。新建了mail profile也无济于事。后来发现问题根本不在这个addin上,因为根据微软的KB http://support.microsoft.com/kb/2385524, 这个addin在outlook 2010里本身就是被禁用的。
After you install Outlook 2010, you may see the Windows Search Email Indexer add-in listed under Disabled Application Add-ins. This behavior is by design.
安装完service pack 1后问题还是存在。

vim下以tab方式打开文件

gvim在windows下安装后,使用edit with vim菜单每次打开一个新文件的默认方式是新开一个窗口。使用edit with existing Vim打开文件使用已存在的窗口,新开一个buffer,不过不是以tab的方式来显示。在不同buffer之间切换还须使用 :b bufferNumber。要把一个buffer以tab的方式显示,可以使用命令:

:tabnew | b 2 (把buffer 2以tab的方式显示)


如果要直接以tab的方式来打开,在 _gvimrc 中添加:
if (&diff==0)
    :autocmd BufReadPost * tab ball
endif
很奇怪,这样虽然能以tab的方式打开文件,可是后打开的文件没有syntax highlight。

改成下面的设置就没问题:
:au BufAdd,BufNewFile,BufRead * nested tab sball
:bn 切换到下一个tab,:bp 切换到上一个tab,gt 在tab之间切换。

2011-10-27

PI useful URLs

PI开发中的常用URL

Design Time

http://<host>:5<sys>00/dir/start/index.jsp Process Integration PI 7.1 tools

http://<host>:5<sys>00/sld/index.html System Landscape Directory (SLD)

http://<host>:5<sys>00/rep/start/repository.jnlp Enterprise Services Repository (ESR)

http://<host>:5<sys>00/rep/support/public/LockAdminService Unlock Enterprise Service objects

http://<host>:5<sys>00/dir/start/directory.jnlp Integration Directory(ID)

http://<host>:5<sys>00/sr Service Registry(SR)

Runtime

http://<host>:5<sys>00/rwb Runtime Workbench(RWB)

http://<host>:5<sys>00/nwa Local SAP Netweaver Administrator (NWA)

http://<host>:5<sys>00/nwa/quicklinks NWA Quicklinks

http://<host>:5<sys>00/nwapi Central SAP Netweaver Administrator (Visual Admin in XI)

http://<host>:5<sys>00/index.html Netweaver Application Server Java

http://<host>:5<sys>00/CPACache CPA Cache Monitoring

http://<host>:5<sys>00/CPACache/refresh?mode=delta Delta CPA Cache refresh

http://<host>:5<sys>00/CPACache/refresh?mode=full Full CPA Cache Refresh

http://<host>:5<sys>00/mdt Message Display Tool (MDT)

http://<host>:5<sys>00/mdt/channelmonitorservlet Communication channel Monitoring

http://<host>:5<sys>00/mdt/amtServlet Adapter Monitoring

http://<host>:5<sys>00/AdapterFramework/admin/channelstatus.jsp Communication channel Status

http://<host>:5<sys>00/MessagingSystem Message Display Tool

http://<host>:5<sys>00/MessagingSystem/monitor/sequenceMonitor.jsp EOIO Sequence monitor

http://<host>:5<sys>00/MessagingSystem/monitor/systemStatus.jsp Message Queue monitor

http://<host>:5<sys>00/TREX/Monitor TREX Application

http://<host>:5<sys>00/rwb/rtc?op=init Re-Initialize Runtime Workbench
其它:
http://<host>:5<sys>00/utl/UsageTypeInfo  information about useage types

2011-10-21

短途行车导致电池电量不足

上周六车子(BMW E61)显示电池电量不够(erhöte Battrieentladung, Battrie stark entladen)。周一约了个时间,今天去Dreieich的BMW店把车子送过。维修人员上来就问车子开的是否频繁,答曰每周约100公里。对方马上就说车开的太少了,导致电池充电不够,太短距离的行车根本不能给电池充上足够的电,发而会让电池发电,最后导致电瓶电量不够。

去之前google了一下这个问题,网上大部分的讨论都是说电池出问题的可能性很大。我提出给检查一下是否电池有问题,如果有问题,就换一个吧。维修人员先开出了一个检查费用报价,含税155.17欧元。这仅仅是检查的费用。一个电池含税价要215.07欧元(Teilenummer: 61 21 8 381 768),不知道是AGM还是GEL电池,也不知道是多少安培的。这还不包括安装电池的费用,据说如果新换了电池还要在车载电脑Energiemanagement里重新注册一下才能给新电池正常充电。维修人员建议购买一个充电器,定期给电池充电,解决短途行车导致电池充电不够的问题。BMW提供的充电器(Teilenummer: 61 43 2 153 788)的含税价格刚好100欧元(看工作人员电脑显示物料管理用的是SAP)。所有的费用Europlus Garantie都不管,得自掏腰包。


网上的一个讨论:
ca. 30 min bis 1 Std sollten zum Aufladen der Batterie in Ordnung sein. Eine durchschnittliche Lima liefert ca. 50-80 Ampere, Licht, dicke Anlage und Heckscheibenheizung aus, bleiben noch die Verbraucher zur Funktion der Motorsteuerung, sagen wir...10 Ampere, grosszügig bemessen.
Eine durchschnittliche Batterie hat eine Kapazität von ca. 36 - 80 Amperestunden. Einfache Rechnung:
36 Ah Batterie,
80 Ampere Lichtmaschine - 10 Ampere Verbraucher...Ergo 70 Ampere...
Dann ist die Batteie theoretisch in ner halben Stunde voll.
Bei normalem Fahrbetrieb z.B- täglich 15 Km zur Arbeit sollte mit der Leistungsfähigkeit der Batterie nix passieren. Wenn Du aber mit dem Auto nur ins Dorf zum Einkaufen fährst, wohlmöglich noch bei kalten Temperaturen, Heckscheibe und Licht an, hat die Batterie keine Chance vernünftig geladen zu werden.
Wenns das alles nicht ist, sollte vielleicht mal ne neue Batterie her. Manche geben nach drei Jahren den Geist auf, andere wiederum halten 3x so lange. Da steckt man halt nicht drin. 


2011-10-20

BWM E60/E61 隐藏菜单

在网上看到宝马的E60/E61系列的iDrive里有一个隐藏的菜单,在这个隐藏菜单里可以看到当前运行的各种软件的版本。进入菜单的方法如下:

Grundmenü am Bordmonitor einschalten
Controllerknopf 10 sec gedrückt halten
3 mal rechts
3 mal links,
1 mal rechts
1 mal links
1 mal rechts
1 mal drücken
fertig

一会儿左三圈,一会儿右三圈,感觉跟开个保险箱似的 :)

2011-08-24

download SAP Netweaver Development studio


SAP Netweaver Development studio

https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/ce/

OSS user required

用firefox浏览器下载超过1G的文件还是不太可靠,到快下载完时程序容易死掉,最好还是用wget。

wget  --user=USER --password=PWD  --no-check-certificate  https://nwds.sap.com/swdc/downloads/updates/netweaver/nwds/ce/710/NWDS_platform.zip

2011-08-05

Android启动时间过长

不知道是上次摔了一下手机,还是安装了某个或某些程序,启动GT-9000时间太长了。有时半个小时都不一定能完成启动能输入PIN,进入能打电话的状态。这要是赶上紧急情况,只能把人急死,把手机砸碎。虽然不能进入登陆界面,不过还好能连接到adb。用Android SDK下的ddms查看了一下启动日志信息,发现无法启动是因为系统一直在等待一个名为media.audio.flinger的服务。

08-05 09:08:53.396: ERROR/ServiceManager(2850): set property for kill mediaserver process
08-05 09:08:53.396: INFO/ServiceManager(2850): Waiting for sevice media.audio_flinger...
08-05 09:08:54.398: ERROR/ServiceManager(2850): set property for kill mediaserver process
08-05 09:08:54.400: INFO/ServiceManager(2850): Waiting for sevice media.audio_flinger...:

杀掉这个等待进程后又进入下一次循环,最后又处于黑屏等待状态。希望能尽快解决这个问题。

2011-07-28

命令行工具puttycyg

一直舍不得linux下的命令行工具,所以在笔记本上都一直装了cygwin。cygwin自带的命令行界面有太多不方便的地方,于是一直都是装了open ssh server,然后用putty登陆本机获得命令行界面。以前一直都可以用pageant加载私钥登陆不用输入密码。可是自从笔记本升级到windows 7,登陆windows的用户变为域用户之后,用pageant加载私钥登陆总是失败。为了不用输入密码获得命令行界面用了一下puttycyg,基本和 putty一样,只是多了一个connection type选项 cygterm,在命令行填入bash,port选项不用填就可登入。

2011-07-07

PI lookup use缺少权限

PI lookup user 在SAP ECC里不能读表LFBK,得到错误权限不够。查看LFBK的authorization group为FA,在表TBRG里查找到相应的 authorization object为S_TABU_DIS。

The table that contains all authorization objects is TOBJ.
The table that contains all activities is TACT.
The table that contains definition of all authorization groups is TBRG.

使用表AGR_USERS查找用户的role。查看一个authorization role 包含哪些authorization object,使用表 AGR_1251

2011-05-15

SAP NetWeaver Process Orchestration

SAP NetWeaver BPM
SAP NetWeaver BRM
SAP NetWeaver PI
三者合起来就是SAP NetWeaver Process Orchestration?

2011-05-02

PI message mapping editor shortcut

PI 7.0下的graphic message mapping editor下按住contro + shift,点击鼠标右键,有更多隐藏选项。更强大的快捷组合键是:control + shift + 0

2011-03-28

debug su01

se93,输入su01,得到su01的program名SAPMSUU0。然后se38,输入程序名,进入debugger。然后在debugger中设置断点,方法如下:
breakpoints -> breakpoints at ->breakpoints at Subroutine,在Program处填入saplsuu0,在Fmla处填入auth_check。

2011-01-20

解决jdownloader窗口不能选择正确的显示器

在办公室把笔记本和另外一个显示器连了起来,把笔记本设置为主显示器,画面扩展到大的显示器上。问题出在当把笔记本与外接显示器断开时,启动jdownloader后,jdownloader窗口不能正常显示在笔记本的屏幕上,似乎“显示”在已经没有连接的外接显示器上。鼠标移动到任务栏的图标上,可以看到窗口的缩略图,可就是不能把窗口拽回来。上次就遇到过这样的情况,当时刚好遇上电视开着,就把笔记本与电视连了起来,把窗口拽了回来。这次从办公室回来又发生这样的情况,以为重启启动一下电脑会解决这个问题。没想到重启后还是同样的问题,只好另寻出路。试了一下,这个方法管用。将鼠标移到任务栏的图标上,显示程序缩略图,然后单击右键出现菜单,选择移动,此时千万不要移动鼠标,而是移动左方向键,窗口就回来了!

这个问题好像和java有关,因为上次用的SAP download manager也是用java写的,也有同样的问题。

2011-01-15

XSLT 1.0处理分组

在处理一个接口映射时遇到需要分组的问题,因为发送方使用JDBC adapter从数据库抽取数据,SAP PI得到的数据结构为:
<row>
<column1/>
<column2/>
<column3/>
</row>
其中column1,column2,column3是JDBC adapter中SQL查询语句里select的表列。
这个问题通过graphic mapping的node function估计应该能解决,但没有例子和好的文档就先放弃了,改用XSLT来实现。现在读取出来的数据中有一列为INVOCIE_ID,同一个INVOICE下有多个line_item。为每一个INVOICE _ID应生成一个IDoc,所有具有相同INVOICE_ID的line_item要映射到同一个IDoc下。如果环境支持 XSLT 2.0,可以很方便的使用group-by解决分组的问题。试了一下SAP PI环境不支持group-by语句,只能使用XSLT 1.0支持的语句。一个名为Muenchian的方法颇为有名,使用了xsl:key语句和key函数,提高了XSLT处理分组的性能。一个简化的例子:
XML 源文件
<?xml version="1.0" encoding="UTF-8"?>
<MT_PTP_PURCHASEINVOICE>
    <row>
        <INVOICE_ID>12</INVOICE_ID>
        <INVOICE_CURRENCY>EUR</INVOICE_CURRENCY>
        <LINE_NUMBER>1</LINE_NUMBER>
    </row>
    <row>
        <INVOICE_ID>12</INVOICE_ID>
        <INVOICE_CURRENCY>EUR</INVOICE_CURRENCY>
        <LINE_NUMBER>2</LINE_NUMBER>
    </row>
    <row>
        <INVOICE_ID>13</INVOICE_ID>
        <INVOICE_CURRENCY>EUR</INVOICE_CURRENCY>
        <LINE_NUMBER>1</LINE_NUMBER>       
    </row>
   <row>
        <INVOICE_ID>13</INVOICE_ID>
        <INVOICE_CURRENCY>EUR</INVOICE_CURRENCY>
        <LINE_NUMBER>2</LINE_NUMBER>
    </row>
</MT_PTP_PURCHASEINVOICE>
XSLT 表单
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:key name="mykey" match="row" use="INVOICE_ID"/>
    <xsl:template match="/">
        <doc>
            <xsl:for-each select="//row[count(. | key('mykey', INVOICE_ID)[1]) = 1]">
                <xsl:sort select="INVOICE_ID"/>
                <invoice>
                    <INVOICE_ID>
                        <xsl:value-of select="INVOICE_ID"/>
                    </INVOICE_ID>
                    <items>
                        <xsl:for-each select="key('mykey', INVOICE_ID)">
                            <xsl:sort select="LINE_NUMBER"/>
                            <line>
                                <xsl:value-of select="LINE_NUMBER"/>
                            </line>
                        </xsl:for-each>
                    </items>
                </invoice>
            </xsl:for-each>
        </doc>
    </xsl:template>
</xsl:stylesheet>

2011-01-11

XSLT下填充空白字符

今天遇到一个问题需要对一些字符串进行操作,以保证字符串达到给定的长度。如果字符串长度不够则在字符串后面添加空白字符来补齐。刚开始的想法是用给定的长度(m)减去字符串的长度(n),然后在字符串后面添加(m-n)个空白字符。不过去构造这(m-n)个空白字符还要额外想办法。google了一下xslt padding,更简洁的办法是添加超过给定长度的空白字符,然后用substring去取指定长度的字符串即可。同一个问题换一个思路方便多了。

如果要常用到,定义一个template,带两个参数。
<xsl:template name="pad">
<xsl:param name="str"/>
<xsl:param name="len"/>
<xsl:variable name="spaces"><xsl:text>                           </xsl:text></xsl:variable>
<!-- <xsl:text>在这里很重要,避免空白字符被过滤掉 -->
<xsl:value-of select="substring(concat($s, $spaces), 1, $len)"/>
</xsl:template>

需要时调用这个template即可:
<xsl:variable name="var">
<xsl:call-template name="pad">
<xsl:with-param name="str" select="concat(firstname, ', ', name)" />
<xsl:with-param name="len" select="10" />
</xsl:call-template>
</xsl:variable>

更灵活一些的template,'padVar' 是要填充的字符, 'length' 是给定的长度。
在前面插入,右对齐:
<xsl:template name="prepend-pad">
<!-- recursive template to right justify and prepend-->
<!-- the value with whatever padChar is passed in   -->
<xsl:param name="padChar"> </xsl:param>
<xsl:param name="padVar"/>
<xsl:param name="length"/>
<xsl:choose>
<xsl:when test="string-length($padVar) &lt; $length">
<xsl:call-template name="prepend-pad">
<xsl:with-param name="padChar" select="$padChar"/>
<xsl:with-param name="padVar" select="concat($padChar,$padVar)"/>
<xsl:with-param name="length" select="$length"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($padVar,string-length($padVar) - $length + 1)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

在后面插入,左对齐:
<xsl:template name="append-pad">    
<!-- recursive template to left justify and append  -->
<xsl:param name="padChar"> </xsl:param>
<xsl:param name="padVar"/>
<xsl:param name="length"/>
<xsl:choose>
<xsl:when test="string-length($padVar) &lt; $length">
<xsl:call-template name="append-pad">
<xsl:with-param name="padChar" select="$padChar"/>
<xsl:with-param name="padVar" select="concat($padVar,$padChar)"/>
<xsl:with-param name="length" select="$length"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($padVar,1,$length)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

2011-01-10

galaxy s 的几个常用按键操作

拿着galaxy s手机还没翻看过说明书,不知道这里列出的按键操作是否在说明书中已被提及。
  • 快速重启:同时按住 加大音量和电源键 5秒钟。这样不必按住Power键,选择关机,然后再按Power开机。
  • 调出搜索框:长按住菜单键
  • 切换任务:长按住Home键
  • 在联系人里,往右滑动,拨打联系人电话,往左滑动,发送短信

2011-01-06

启动android SDK manager

Samsung的galaxy s到了,免不了要折腾一下。在笔记本上装了android的SDK,选择的是推荐的installer安装文件。安装完后竟然不能启动SDK manager。点击后没有任何反应,在命令行下执行android.bat update sdk得到错误提示:
'java -jar lib\archquery.jar' is not recognized as an internal or external command,
operable program or batch file.
ERROR: SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
google了一番,禁用了windows 7的UAC,用管理员权限执行命令,都是同样的结果。既然变量ANDROID_SWT没有被赋正确的值,直接在
for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
后面加上了:
set swt_path=lib\x86_64

在执行android.bat得到错误提示就比较有帮助了:
Cannot load 64-bit SWT libraries on 32-bit JVM
因为windows操作系统是64位的,而我装的JDK是32位,为了运行SAP PI 7.0的客户端,因此64位的swt.jar不能加载。修改为:set swt_path=lib\x86 就能正常启动了。

新手机Samsung Galaxy I9000的版本

新手机到手后先用Samsung的Kies更新到到了Anroid 2.2。键入*#1234#得到firmware信息:
PDA: I9000BOJPB (This is android and all the applications that come with it.)
PHONE: I9000BOJP3 (This is the firmware of the wireless chipset of the device and will operate you WiFi, Blutooth and 3G/2G/GSM connections. 这就是常说的Radio ROM)

CSC: I9000GDTMJP6 (Customer Specific Customization)
build info: 2010.11
这个在刷机的时候检查版本会用到。

soft reset: 按住机身右边电源键
hard reset:按住 VolumeUP+Home+Power,选择“wipe data/factory reset”,恢复到默认设置 (我的手机的这个组合键好像被禁用了,不管用!)

*#1234# : SW Version
*#2222# : HW Version
*#0842# : Vibrator Test
*#0289# : Buzzer Test
*#0228# : Battery Statue

2011-01-04

导入以前的posts

圣诞节前就把wordpress里的帖子导出来,并用wordpress2blogger转换成了blogger的格式,可是在导入时遇到一个问题:页面一直在显示导入的进度条,也不给出任何出错信息。用不同的浏览器在不同的时间去导入帖子都是同样的问题,请教了一个也把wordpress转换到blogger朋友还是没有解决问题,于是把这个事先搁了下来。今天突然想起用我的另外一个google account来创建一个blogger帐号来测试一下。不想在新的blogger账户下导入没有遇到任何问题。原来这个问题和我在同一个google account下有多个blogger账户有关。我其中的一个blogger账户里已经包含部分将导入的帖子,因此导入就不能完成。这应该是导入程序会检测在这个google account下的所有blogger账户里是否包含要导入的帖子,如果有,则导入停止。值得改进的是,应该给出一个对用户更友好的信息。

2010-12-16

XML Tagung in Stuttgart

Xing收到了明年3月1日在斯图加特举行的一个XML会议的邀请,其中的一名报告者为Dr. Michael Key。如果和XML打过些交道的人想必都听说过这个名字。他参与了XSLT 2.0和XPATH 2.0标准的制定,有自己实现的XSLT processor SAXON,并且写了多本关于XPATH和XSLT的书籍,如XPath 2.0 Programmer's Reference,XSLT 2.0 Programmer's Reference,XSLT 2.0 and XPath 2.0 Programmer's Reference,是一位名副其实的XML专家。他在很多mailing list也很活跃,常常参与有关XSL的讨论和解答有关的问题。本来有个Stuttgart的项目找人,但因为时间上不合适放弃了,否则倒是想去凑个热闹,听听这些站在XML技术最前沿的人能带来什么新鲜的东西。不过想到参加这个会议的报名费(包括一顿自助午餐)也不便宜,普通250欧元,有折扣券的180欧元,也不觉得不参加有多大遗憾 :) 。

2010-12-14

在XSLT中调用Java函数

在为客户实现一个sap PI的interface时,用XSLT去生成IDoc的XML文件形式,通过sap PI的IDoc adapter发送IDoc。由于客户现在用SAP替代了旧的Oracle系统,需要映射一些如Cost Centre和Profit Centre的东西,映射所需的表在SAP PI系统中。要读取数据库中的东西借助XSLT不容易实现,只能用Java。在Java代码中使用SAP JCO读取并返回了正确的值,但是在XSLT中调用JAVA函数却大费了一番周折,问题主要出在该如何声明自定义的命名空间才能使XSLT processor能找到编译好的Java class文件,以调用Java类中定义的函数。
当XSLT文件和Java class文件位于一目录下,经过测试,在Altova XML Spy下,命名空间需要声明为:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myns="java:Test" exclude-result-prefixes="myns">
其中需要注意的是在xmlns:myns="java:Test" exclude-result-prefixes="myns"中,java不能省掉,Test为Java class的名字,否则Altova 的XSLT processo找不到声明的Java class,会返回ClassNotFound exception。
而在SAP PI 7.0环境下,声明自定义的命名空间必须去掉“java:”,否则也会出现找不到Java class的错误。
示例:
XSLT文件
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myns="java:Test" exclude-result-prefixes="myns">
 
<xsl:template match="/">
<root>
<text><xsl:value-of select="myns:foo(‘hello’, ‘world’)" /></text>
</root>
</xsl:template>
</xsl:stylesheet>
Java class
public class Test {
     public static String foo(String str1, String str2) {
     return str1 + “ ” + str2 ;
     } 
}

2010-12-13

XPATH点滴

XPATH 1.0中一个XPATH表达式返回一个节点的集合(node set),因为是一个集合,所以不存在节点顺序的概念。而在XPATH 2.0中一个表达式返回的则是一个节点序列(sequence of nodes),顺序为document order。

/ 符号:以前基本上认为就是在轴上分隔不同的节点。更广义的理解是这是一个高阶的运算符。比如$EXP1和$EXP2 分别为两个节点集合,那么$EXP1/$EXP2表示对$EXP1中的每一个节点对$EXP2求值,$EXP1/$EXP2的值即为:对$EXP1中每个节点对$EXP2求值的集合。

对轴的理解:轴实际上是一种节点间一对多的映射,可以把轴理解为一种函数,输入为一个单个节点,输出为与该节点有某种关系的节点的集合。

(@code,"N/A")[1]:如果code属性的值不为空,那么这个表达式的值即为code属性的值,否则返回”N/A”。因为当code属性的值为空时,通过运算符逗号 “,” 创建的sequence只有一个item即”N/A”,筛选条件[1]选择sequence中第一个元素。

2010-12-10

实物恋

早上起来打开电视正播放ARD的新闻。很多德国人对柏林墙都是恨之入骨,可是新闻里正报道的一位在柏林生活的美国人对柏林墙却有性喜好。她先是数年前在法国巴黎与埃菲尔铁塔成亲,之后又辗转到柏林,爱上了残余的柏林墙。报道之后采访了一位医学教授,据说德国约有50多名性取向目标为实物。有同性恋,没想到还有实物恋。刚好赶上这条新闻是节目的最后一条,另外估计这个确实罕见,ARD的播音员已经忍不住笑着说了结束语。新闻节目消音后,屏幕上还能看到这位一向严肃的女播音员已经大笑不止了。这和我们的播音员在播音结束后还正襟危坐等待画面切开截然不同。

2010-12-09

不能加载SAPJCORFC

操作系统为Windows 7 64bit Enterprise,JDK版本为32bit的"1.5.0_22"。按照sapjco2的说明已经把sapjcorfc.dll和librfc32.dll复制到目录c:\system\windows\system32,可是仍然得到错误:
Exception in thread "main" java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [no sapjcorfc in java.library.path]. java.library.path [C:\Program Files (x86)\Java\jdk1.5.0_22\bin;.;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Java\jdk1.5.0_22\bin; C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ThinkPad\Bluetooth Software\;C:\Program Files\ThinkPad\Bluetooth Software\syswow64;C:\Program Files (x86)\Windows Live\Shared;c:\cygwin\bin;C:\Users\dingjun.jia\Documents\Data\UnxUtils\usr\local\wbin;C:\Users\dingjun.jia\Documents\Data\projects\o2 SAP\cmd;]
    at com.sap.mw.jco.JCO.<clinit>(JCO.java:820)
    at JM_I025B.countVendorData(JM_I025B.java:26)
    at JM_I025B.main(JM_I025B.java:10)
很明显是找不到sapjcorfc.dll,所以不能加载。把sapjcorfc.dll和librfc32.dll这两个文件复制到jdk的bin目录下,也就是上面错误中的第一个目录中,就能正确加载了。难道java只在目录列表中的第一个目录去寻找。

2010-11-23

PI 7.1与PI7.0的比较

Name changes PI 7.0 -> PI 7.1

Integration Repository (IR) -> Enterprise Service Repository (ESR)
message interface -> service interface
interface mapping -> operation mapping
business service -> business component

Features of PI 7.1 over PI 7.0

a) Repository Objects

  • Service Registry (SR) is to support publishing, classifying, discovering services.
  • Service Interfaces (SI) may contain several operations where each operation describes one communications (Synchronous / Asynchronous). The various attributes are Category (I/O/A), Mode(S/A), Interface Pattern & Operation Pattern
  • Interface patterns is a new attribute of a service interface that describes the type of communication that is to be executed on the message (Stateless/ Stateless Xi 3.0 Compatible / TU&C/C and Stateful)
  • Operation Patterns depends on Interface patterns (Normal / Commit/ Rollback / Confirm/Tentative Update/Compensate)
  • SAP Global Data type (GDT) is introduced to have business semantics in order to replace SAP Core DT
  • Folders are introduced to organize projects and interfaces which have access authorizations
  • We can use either XML toolkit / JDK 1.5 toolkit for JAVA and XSLT Mapping.

b) Mapping Enhancements


  • We can set Failure Behavior in fix values and value mapping (Return initial value/Default/Exception)
  • Output of fields and functions can be used for multiple target fields for Reusable / Better Runtime Performance
  • Tool support to adjust the mappings after the structure changes to avoid structural inconsistencies.
  • Storing intermediate Results in a variable can be possible and can be reused.
  • Complete copy of XML sub trees is possible
  • Parameterized mapping is useful for Channel Lookup and Reuse of multiple mapping in Interface Determinations and to transfer content of Container in UDF.
  • Function Libraries is useful for reuse of UDF and enhanced portability of UDF.
  • Graphical Support of RFC Lookup and JDBC Lookup is available.
  • Importing SQL Tables Meta Data is possible

c) ccBPM


  • Step Groups - Set of steps that can be reused by embedded in Integration Process across SWCV. Step Parameters can also be used in step groups.
  • Configurable Parameters - Defined in Integration process and the values can be used assigned in ID. Here Agents, Communication channel and simple data type can be used as parameters.
  • User Interaction - User Decision Step in Integration Process with an agent configured in ID is used to get the workflow message to make a decision

d) Configuration Objects


  • Web Service Reliable Messaging WS-RM for Asynchronous messaging is configured in Sender Agreement and Communication Channel for a considerable level of reliability and security.
  • Principal Propagation based on Security Assertion Markup Language (SAML 1.1) can be configured in WS adapter. It means user is securely propagated from a sender system to receiver systems. An authorization check in receiving system based on original user.
  • Advanced Adapter Engine (AAE) is used to increase the performance of message processing by eliminating the need for ABAP stack during the process.
  • Reusable Receiver Rules for logical routing can be used in different Receiver Determination.
  • Cache Notification function is enhanced to analyze the possible error.
  • XML Payload validation is possible in sender and Receiver agreement.
  • Publish the sender agreement in Service Registry for web service Client and provider connected to IS.
  • Centralized administration and monitoring is done by SAP NetWeaver Administrator.
  • Message Packing enables processing bulk messages in one service call and reduce context switches

2010-10-27

XSLT SAP PI 7.0

这两天写xslt文件用于在SAP PI 7.0环境下的interface mapping,才发现SAP PI 7.0下的XSLT环境不完整支持xpath 2.0,如:
  • 不支持xpath 2.0下表示两个节点集合的xpath运算符intersect。Dr. Kay在很多年前就提出在xpath 1.0下的替代表达式 $ns1[count(.|$ns2) = count($ns2)]倒是派上了用场,只是效率差些。
  • 不支持XPATH 2.0下的函数current-date。XPATH 1.0里根本就没有针对date和time的函数,在XSLT下通常只能通过传递参数给stylesheet才能解决这个问题。不过这个问题倒是借助SAP PI的运行环境能解决,因为它提供一些参数,只需在stylesheet下声明一下就可以使用如:

<xsl:param name="TimeSent" />
SendTime的值的格式为:YYYY-MM-DDTHH:MM:SSZ

更多可供使用的参数见:http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/frameset.htm

2010-10-21

暂时远离64位应用

现在64位的windows操作系统被越来越多的安装在个人电脑上了。前两天笔记本的硬盘声音不对去公司更换了个硬盘。换完硬盘后也换上了64位的windows 7 enterprise。不过选择64位的应用程序还是要谨慎,因为很可能和其他的应用程序不能很好的兼容。

之前没仔细阅读64bit office 2010的release note。在msdn下载安装完后才发现问题不少。首先是64位的Outlook 2010与Windows mobile device center不兼容。和我的HD2同步时显示错误提示:
Either there is no default mail client or the current mail client cannot fulfill the messaging request. Please run Microsoft Outlook and set it as the default mail client.

google了一番之后才知道这是一个64bit office 2010的已知问题,尽管问题并不是在64 bit的Outlook 2010这个产品上。微软在2010年5月份就发布一篇KB( http://support.microsoft.com/kb/980513/en-us )描述了这一问题。不能同步的原因在WMDC(windows mobile device center)上,不过软件巨人微软根本不打算修正这一问题(There are no plans to update Windows Mobile Device Center to improve compatibility with Outlook 2010),强迫用户用户要么换回32位的Office应用程序,要么更换手机!我相信为windows phone 7开发的同步软件肯定会修正这一问题,但是那些还没有使用windows phone 7的用户就这样被抛弃了。如此微软怎么能期望更多的用户使用基于windows mobile的手机。很想知道微软如果修复这样一个问题需要多大的开销。

另外一个软件巨人的免费产品google calendar sync也不能和64位的Outlook实现同步。google也是不推出任何更新已解决这个很多用户反映了很久的问题。

2010-10-07

SAP PI 7.11 Integrated Configuration

SAP PI 7.1 EHP1在integration directory中引入了一个新的collaboration agreement object类型,名为Integrated Configuration。这种类型下的message处理仅在advanced adapter engine里完成,与ABAP Stack的Integration Engine无关。

Defining the Integrated Configuration
http://help.sap.com/saphelp_nw73ehp1/helpdata/en/48/cfac399bf23e49e10000000a421937/content.htm

How To configure Integrated Configuration

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/700058f0-b1a1-2a10-39a8-ab2627b87cfa?overridelayout=true

2010-10-06

vim下移动到特定列

以前只知道如何在vim下在不同的行之间移动,现在需要经常在同一行内移动到特定的列,用法为 n|,n为光标所在的列的数目。
在google中查找这个用法是,先用关键字 vim jump to column查找,估计是因为关键字jump的原因,结果中出现了很多在不同tag之间跳转的结果,后来换成vim move to column,查询结果就好多了。

2010-09-01

在公司工作3年了

一转眼就在公司干了三年了。从2007年9月在Frankfurt am Main开始,辗转Düsseldorf, München, Oldenburg, Heidelberg, Köln, Krefeld, München。下一站会是那个城市?

2010-08-27

待做检查

Ringelröteln 传染性红斑

CMV ( Zytomegalie )

Toxoplasmose

2010-08-25

更换HTC HD2

尽管刷了官方最新的ROM,并且显示更新成功,可是我的HD2却怎么不能启动了。启动界面停留在屏幕中间出现一个红色圆圈,左下角显示R,G和D信息。折腾了数小时仍然不见起色。考虑到此前运行Navigon和IGo程序都会过几分钟就会莫名死机,并且有时无法重启,或必须多次重启才能进入系统,或出现一输入PIN,机器自动重启,还有一次竟然在打电话时连上电脑也死机了。打定主意联系Tmobile更换一个,因为它还在保修期内。周一早上一早就给Tmobile服务热线2828打电话,除了等的时间有点长约一刻钟外,没有其他可抱怨的,还好服务热线是免费的。不过工作人员的细心度还有待提高,我报上送货地址的街道名后,也不问如何拼写,把街道名的其中两个字母颠倒了。这应该不是工作人员手误,而是不认识这条街名。
发来的传真说,周四通过GLS送货并取走坏的手机。没想到的是周二上午10点多GLS送货的人就到家门口了。从效率上来看,倒真是不赖,街名拼写错误也如此迅速地送到了。可是如果我真按传真上写的送货时间周四来计划,岂不是这效率也白搭。

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