Tuesday, March 02, 2010

NOKIA 手机安装 MIDlet 时出现“Conflicting application”错误及解决 0 条评论

最近发现在某些诺基亚(NOKIA)手机上安装带有 Push Registry 功能的 MIDlet 时,会发生安装失败的情况。错误信息有可能是“Push registry failure”(S60v3),或者“Conflicting application”(S40v6),出现这个错误的直接原因,应该是安装程序在执行 Push Registry 注册时失败,认为要注册的目标端口已经被其它应用程序占用。

实际的情况是之前安装过同样的 MIDlet 的旧版本并已经删除。然而,无论是软格机、硬格机,用 Nokia Software Updater 重装/升级 Firmware,都无法解决。

最后发现一个简单但有效的解决办法:
  • 将 JAD Property 的 MIDlet-Push-1 中 Push Registry 的端口改成别的端口
  • 这时 MIDlet 应该能够正常安装。如果你的应用并不在乎使用哪个具体的端口,那么到这里问题就已经解决了
  • 如果应用必须使用之前的那个固定端口,那么将安装好的 MIDlet 删除(卸载)掉,将 JAD 中的端口再改回去,然后就可以正常安装了

Labels: , , ,

Wednesday, February 10, 2010

Windows x64 下 Cisco VPN Client 的替换方案 0 条评论

买了新机器,为了解决硬盘问题重装了系统,顺便装了 Windows 7 x64,绝大多数情况下都没有软件兼容的问题,唯独碰到 Cisco VPN Client 不兼容 Windows x64 且没有提供 64 位的版本。

Google 了一番,发现 Cisco 为 Windows x64 的操作系统提供了一个名为 Cisco AnyConnect VPN Client,但官网上需要特殊的认证用户才能下载,而几经搜索也没找到其它的下载网站。

最后,发现有个国外的论坛有人回复说用 Shrew VPN Client 可以正常的在 Windows x64 下运行。下载下来试用,发现真的不错。安装运行都很简单,关键是还能够直接导入 Cisco VPN Client 的 pcf 配置文件,不用花精力去研究参数配置。所以如果你也需要在 x64 的 Windows 下运行 VPN 客户端又无法安装 Cisco VPN Client,不妨试试这个 Shrew VPN Client。

Labels: , ,

Friday, February 05, 2010

西数 EARS 绿盘使用心得 0 条评论

这周新配了台电脑,主板:微星 P55-CD53 / CPU:Intel i5 750 / 内存:金士顿 DDR3-1333 2G / 显卡:影驰 GTS250 黑将版 / 硬盘:西数 1TB/64M 绿盘(WD10EARS)。

买回来整体感觉非常好,除了这块西数的新技术 EARS 绿盘。从装 Windows 7 系统开始,到更新系统、安装驱动,系统反应都让人难以忍受。在我 06 年买的笔记本上装 Win7,仅花了不到半个小时,而在这台机器上花了一个多小时。另外用迅雷下载一个几十兆的驱动压缩包,点“开始下载”后,要过 2-3s 界面才会有反应。在使用过程中,硬盘灯大部分时候都长亮,开关机时间也很长,远比我的笔记本开关机慢,系统整体毫无性能可言。这完全不像一台 i 平台的电脑该有的情况。

经过多番搜索查找,到论坛上询问与讨论,做了如下改进和设置,现在虽然硬盘性能仍不尽如人意,但也算可以忍受。打电话到卖电脑的商家,说硬盘本身没问题不给换,要换也是同样型号的硬盘,因此也只能忍了。

这里分享一下我做的改进和设置,希望对同样使用西数 EARS 硬盘忍受暴差性能的朋友能有所帮助。

Labels: , , ,

Sunday, August 16, 2009

phpMyAdmin 使用时 Apache 崩溃问题 1 条评论

最近笔记本的硬盘时常怪响,因此换了一块硬盘以防万一,系统重装了,因此开发环境 PHP + MySQL + Apache 也需要重搭。因为已经做过很多次,做起来轻车熟路,然而装好 phpMyAdmin 以后,在登入界面输入用户名密码点登入,居然弹出一个 Windows 应用程序进程崩溃的 report 对话框:Apache 崩溃了……

重新试了几次,仍然如此,换以前硬盘上的 PHP 目录(保证 PHP 的配置和以前一致),无效;换 Apache 版本,无效;换 phpMyAdmin 较早的可以正常使用的版本,无效;用 MySQL 官方的 GUI 客户端登录,可以读写数据,因此不是 MySQL 的问题,于是我就没辙了……

上 Google,发现很多人都有类似的问题,最早的帖子甚至可以追溯到 2003 年,然而没有看到一个有用的解释或者回答,但终究找到一个网页提到架设 PHP + MySQL + Apache 的时候,要保持 MySQL 的客户端连接库 libmysql.dll 版本一致,最好使用 PHP 自带的 dll。

想到这次设置 PHP 时,没有像以前把所有的 dll 都拷贝到 %windows_root%\system32 下,而只是直接的把 D:\PHP 加入到了 PATH 环境变量中。于是马上照以前的办法,把 PHP 包中的相关 dll 都拷贝到了 system32 下,再启动 Apache,进 phpMyAdmin,问题解决了。

用了一会儿,问题有时候仍然存在,于是又把 %Apache%\bin\libmysql.dll 删除(或改名),则问题解决了。但是在 phpMyAdmin 登入后,首页下方会提示说当前使用的 MySQL 客户端版本和服务器版本不相符,可能导致不可预料的结果。

如果各位对此问题有没有更透彻的解释以及彻底的解决办法,望不吝赐教。

Update 2010-02-10:

这个问题似乎和 MySQL 的版本有关。之前出现此问题的 MySQL 版本是 5.4 beta。最近在新机器上同样的架构和设置,只是 MySQL 版本为 5.1,没有出现该问题。

Labels: , , , ,

Monday, April 27, 2009

收缩 Outlook 的 OST / PST 数据文件 0 条评论

今天发现 Outlook 里一年多的邮件都没有存档了,数据文件 outlook.ost 已经涨到了 500 多兆,于是执行了一下存档操作。存档的 .pst 数据文件一下子多出了 300 多兆,但奇怪的是原来的 outlook.ost 文件却没有减少。

搜索了一下,找到了有关的信息。OST / PST 文件是 Outlook 的数据文件,随着收到新的邮件和保存旧的邮件,这些文件会越来越大,当永久删除邮件和其它内容时,空间就会被空出来,直到收到新的邮件,这些空间就又被分配使用。处于安全的考虑,这些空余的空间不会立即被释放。当空余的空间占到文件总量 20% 以上以后,Outlook 会自动在系统空闲的时候执行收缩操作。所以在我执行存档操作以后,原来的 outlook.ost 文件没有立即缩小。

如果要手动执行收缩操作,可以如下图提示操作:右键单击要收缩的数据文件对应文件夹的根目录,选择“Properties” » 点击“Advanced...”按钮 » 选择“Advanced”标签 » 点击“Offline Folder File Settings...”按钮 » 点击“Compact Now”

收缩 Outlook OST 文件

Labels: , ,

Wednesday, April 22, 2009

[转]小姜杂谈:浅论英文字体 0 条评论

瘾科技上看到这篇文章,虽然寥寥几句,但是把字体的基本结构讲得非常清楚,因此特地摘录下来。另外由于原文可能是港台繁体中文的,用词和大陆简体中文不太一样,因此做了一些转换。

英文字体?反正就是在 Arial 和 Times New Roman 之间选一个嘛,偶尔想俏皮一点的话,就拿 Comic Sans MS 出来就好了,哪有什么值得写一篇文章的?小姜完全不是这方面的专家,但收集各种字体也算是小姜一个小小的爱好,所以多年来也学到了不少东西。虽然大家用到英文的机会不大,但其实英文字体里好玩的东西还不少呢!让小姜带大家一起来看看吧……每个字体都有五条线……

字体的五条线 / Fine lines of a font

这五条线,决定个一个字体的性格。Mean line 和 Base line 之间的距离叫做“x-height”,这个高度是一个字体中的英文字母 x 的高度,也是没有向上、向下伸展的部份的小写字的主体高度。Base line 向下有一条 Decender line,是 g, j 之类有向下伸展的笔画的字母延伸的极限。反之,向上延伸的部份,包括 f, b 的字母向上延伸的笔画和 i, j 的点的极限,则称为 Ascender line。最后还有一条 Cap line 是大写字母向上延伸的极限,在许多字体中(像上面的 Times New Roman 就是)Cap line 的高度会略低于 ascender line,但也有一样高的。Mean line 和 Ascender line 之间的距离叫“Ascender”,Base line 和 Decender line 之间的距离叫“Decender”,Base line 和 Cap line 之间的距离叫“Cap height”,而 Ascender line 和 Decender line 之间的距离则叫做这个字体的“Point size”,也就是我们在选字号的时候说的几 pt。

为什么说这五条线决定字体的性格呢?通常 x-height 占 point size 比例愈高的字体,放在内文里的时候看得比较清楚,但放在标题就很难看。反之,x-height 占 point size 比例小的字,就比较适合当标题。以下面这个例子,小姜找了两种类似的字体,但左边是设计来当标题用的(Garamond),而右边则是做内文用的(Times New Roman)。注意到 x-height 的分别了吗?

Garamond V.S. Times New Roman

应用在真实世界,会变成这样:

Garamond V.S. Times New Roman

有注意到下面的一组字看起来比较大吗?实际上小姜是用一样的 pt 数下去设的(大字是 96pt,小字是 12pt),为什么会这种差别?因为先前说过了,pt 数管的是字体从 Ascender line 到 Decender line 之间的距离,所以当 x-height 比较短(即 ascender 和 descender 比较长)的时候,通常字体设计师会减少每个字母的宽度,以避免字母变形。直接的结果就是虽然 pt 数一样,但 x-height 短的字会看起来比较小。下面是个比较极端的例子:

Park Avenue V.S. Tahoma

左边的字体是 Park Avenue,右边则是常见的 Tahoma。在设定上两者的 pt 数是一样的,但右边的 Engadget 看起来显然大多了!

其实字体和排版当中能讲的题材还有不少,如果有机会的话,再来和大家分享啰!

另外,在文章后面的评论中,有网友推荐了一个用中文写的关于字体排版印刷的 Blog:Type is Beautiful / 字体排印,内容专业、丰富而又深入浅出,不管是编辑、平面设计师等专业人士用来参考或者非专业人士用来拓宽知识面,都非常值得推荐。

Labels: ,

Friday, April 17, 2009

SAMSUNG 手机安装 MIDlet 出现“内容不匹配” 0 条评论

昨天通过 OTA 方式从 Apache 服务器上在一部 SAMSUNG SGH-L760 上安装 MIDlet,下载完 JAD 确认安装,开始下载 JAR 之前,手机报错说“内容不匹配 (Content mismatch)”。同样的 JAD 和 JAR 在另外一个主机上就能成功下载安装,而且这一组 JAD 和 JAR 在同服务器上另外一个 HTTP 服务应用上也能成功安装,一时觉得纳闷。

开始怀疑是端口问题,因为出现安装错误的 Apache 服务器是运行在 82 端口上的。但是同样是从这个 Apache 服务,另外一部 SonyEricsson K610i 就能正常下载安装,而且如果是端口问题,没道理 JAD 能下载而 JAR 不能。

然后开始怀疑是 JAR 文件的 Content-Type 问题,因为在确认安装的界面上,有显示应用类型是 application/vnd.sun.j2me.java-archive。打开 Apache 的配置文件 /etc/httpd/conf/httpd.conf,发现没有定义 .jad.jar 文件的语句,于是添加如下两行:
AddType text/vnd.sun.j2me.app-descriptor .jad
AddType application/vnd.sun.j2me.java-archive .jar
然后重启 Apache 服务,问题解决。MIDlet 成功在 SAMSUNG SGH-L760 上安装了。

Labels: , , , , ,

Friday, October 10, 2008

MIDlet 在索爱手机上安装失败 0 条评论

最近在工作中,发现一部分索爱 (SonyEricsson) 手机,在安装 MIDlet 时发生“Downloading failed”错误。具体情况发生在手机通过 OTA 安装 MIDlet,Jar 文件下载完毕并开始安装后,系统询问是否允许应用程序自动启动,以及是否允许应用程序收发短信,接下来就出现“Downloading failed”。

在出现此问题时,使用的是 Orange France 的 SIM 卡,考虑到 GPRS 漫游可能会带来的问题,我们改用中国移动的 SIM 卡,则安装正常。看来和 SIM 卡有关系。但同时,在索爱手机上无法安装的 Orange France 的 SIM 卡,在其它一些索爱手机以及所有 NOKIA 手机上都能正确安装,所以并不是由 SIM 卡本身 GPRS 漫游引起的。

几个星期以来,一直被这个问题困扰,百思不得其解。今天修改一个关于 PushRegistry 的 bug,突然想起来可能和 PushRegistry 有关,又重新 Google 了一番,发现了索爱官方论坛上的这个帖子:

https://developer.sonyericsson.com/thread/17306

帖子的作者遇到和我们完全一致的问题,而最终的解决办法,由索爱的技术人员给出了答案。

这个无法安装的错误,确实和 PushRegistry 有关系。如果把 JAD 中“MIDlet-Push-*”的属性去掉,则可以正常安装。但导致出问题的最终原因,是手机短信选项设置中存在没有值得空选项,如“Service center”、“Message type”、“Validity period”。SIM 卡通常都会为这些选项自动设置,但如果某一个选项没有设置,成为空值,则会导致上述情况。

我仔细查看了我们有问题的手机,所有手机上的“Validity period”都为空。设置成“Network maximum”后,MIDlet 安装和 PushRegistry 注册就完全正常了。

另外,我们发现有问题的手机包括 K700、K500、W800、S700、K600 等,多为 JP-3、JP-5 平台的手机。

Labels: , , ,

Tuesday, September 23, 2008

MIDlet 在 NOKIA 手机上安装失败 0 条评论

这两天发现一个奇怪的问题,就是 MIDlet 在 NOKIA 6680 上无法安装。在 Jar 下载完成后,会显示“Unable to install. Not enough memory!”而安装之前手机刚刚执行过出厂复位操作,机身空余存储空间约 7MB,因此,安装失败不可能是装不下 MIDlet 的内容而导致的。

经过反复研究,终于发现问题出在 Jad 文件属性 MIDlet-Data-Size 上。这个属性是 MIDlet 用来告诉手机,该应用程序将需要多少 RMS 存储空间。由于 NOKIA 6680 的 RMS 容量,实测有 7128 KB,和机身的空余存储空间相等,也就是说理论上手机能装多少,MIDlet 的 RMS 就能装多少,因此应用程序的 Jad 里头,MIDlet-Data-Size 设置的值是 133072,也就是 128KB。

经过反复修改 Jad 文件里 MIDlet-Data-Size 的值,发现允许的最大值为 65536,也就是 64KB。任何超过这个值的应用程序,在安装时手机都会拒绝。

同样的问题在 NOKIA 6131 上也同样存在。如果有其它手机也有类似问题,以后会随时更新。

Labels: , , ,

Friday, September 05, 2008

测试手机的 User-Agent 2 条评论

由于最近工作中需要得到一些手机的 User-Agent 以及 X-Wap-Profile 两个 HTTP 头的值,于是写了个简单的 PHP 程序,检测 HTTP 头,输出到 Response,然后放到网站上,让手机用 WAP 浏览器打开查看。

开始这个程序只是简单的输出纯文本,结果是 NOKIA、Sony Ericsson 以及 Samsung 手机都能正确读出,而 Motorola 却不行(实际测试过程中用的是 Motorola RAZR V3i),仅显示白页。

后来把程序改成输出标准 WML 页面,HTTP 头的 Content-Type 设置成 application/vnd.wap.xhtml+xml,NOKIA、Sony Ericsson 以及 Samsung 仍然能够正确显示而 Motorola 还是不合作。

最后找到答案,Content-Type 要设置成“text/vnd.wap.wml”,这下 Motorola 终于老实了…… 可是结果中只有 User-Agent,没有 X-Wap-Profile。

另外,在用中国移动的 SIM 卡测试的时候,发现 HTTP 请求中并没有 User-Agent 和 X-Wap-Profile 这两个头,而有个奇怪的
VIA: HTTP/1.1 SCCD-PS-WAP-GW02 (infoX-WISG, Huawei Technologies)
开始以为是手机的问题,但看到“Huawei”字样,觉得很蹊跷,后来换成 Orange France 的 SIM 卡,则一切正常了。

看来拦截 HTTP 请求是中国运营商的“优良传统”啊!

Update 2009/08/03:

最近发现中国移动这个问题只存在于 cmwap,用 cmnet 则正常。

Labels: , , , ,

Tuesday, September 02, 2008

修改 IE 默认 HTML 查看器 0 条评论

众所周知在 Internet Explorer 打开的网页中,点鼠标右键,选“查看源代码”,即可查看所打开的网页的HTML 源代码,但通常系统会用 Notepad 打开,如果要仔细查看源代码内容,Notepad 可能显得不那么方便。修改一下注册表键值,即可用自己顺手的文本编辑器打开。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name]

将 (default) 的值改成编辑器的路径即可,例如用 UltraeEdit,可以写:
"C:\Program Files\UltraEdit\uedit32.exe"

如果没有这个键,按照路径创建即可。

我一直用 EditPlus,要将 EditPlus 关联到 IE,可以直接在设置里打开这个选项。具体的:

Tools / Preference... / General / Use EditPlus in Internet Explorer 5

这个方法应该适用于 Windows 所有的版本,已知在 Windows 98 / Me / 2000 / XP 上有效。

Labels: , , ,

Monday, September 01, 2008

用 Cobertura 测量测试覆盖率 0 条评论

单元测试相信大家都不陌生,测试先行编程(Test-First Programming)和测试驱动也不是什么新概念了。测试改进了代码质量,但这也只是针对实际测试到的那部分代码而言的。您需要有一个工具告诉您程序的哪些部分没有测试到,这样就可以针对这些部分编写测试代码并找出更多 bug。

现在,有 Cobertura (cobertura 在西班牙语是“覆盖”的意思)这个免费的 GPL 工具在 Java 领域来完成这个任务。Cobertura 通过在执行测试时,用额外的语句记录哪些行被测试到、哪些行没有被测试到,通过这种方式来度量字节码,以便对测试进行监视。然后它生成一个 HTML 或者 XML 格式的报告,指出代码中的哪些包、哪些类、哪些方法和哪些行没有测试到。可以针对这些特定的区域编写更多的测试代码,以发现所有隐藏的 bug。

先来看看生成报告的样子吧:

Cobertura 报告示例(点击放大)


可以看到报告列出了每个包的行覆盖率、分支覆盖率以及复杂度。点击进去,可以看到针对这个包里头每个类的报告,进而每行代码的测试情况,以及被测试到的次数。这里是 Cobertura 官方网站上给出的一个报告的 Sample。

Labels: , ,

Tuesday, February 13, 2007

MySQL 的自动断开连接问题 0 条评论

最近发现 MySQL 会自动断开 IDLE 时间超过 8 小时的数据库连接,从而导致一些基于数据库连接的应用程序,特别是 WEB 应用程序出错。

有两个办法可以解决这个问题:

第一个办法是修改 MySQL 的配置参数。这个参数的名称是 wait_timeout,其默认值为 28800(单位秒),刚好就是 8 小时。其意义为关闭一个连接之前在这个连接上等到行动的秒数,也就是说,如果一个连接闲置超过这个选项所设置的秒数,MySQL 会主动断开这个连接。

有实践表明,没有办法把这个值设置成无限大,即永久。因此如果你无法保证你的应用程序必定在设定的秒数内至少有一次操作,那么最好用第二个方法解决这个问题。

第二个办法是如下修改 JDBC 连接的 URL:
jdbc:mysql://hostaddress:3306/schemaname?autoReconnect=true

添加 autoReconnect=true 这个参数,即能解决这个问题。

另外,对于 Java 的应用程序,据说第三方的数据库连接池应用 Proxool 能够对断开的数据库连接发起自动重连,不过我没有用过,有兴趣的朋友可以尝试一下。

Labels: , , ,

Monday, January 08, 2007

不再厌恶中文版 Windows XP 6 条评论

一直很厌恶简体中文版的 Windows XP,而尽可能的用英文版,不是我为了炫耀英文——其实刚开始使用英文版的时候真的有种找不到北的感觉——之所以会厌恶,完全是因为字体!

厌恶 Windows 系统“宋体”的默认西文字体已经有年头了,我是不会在任何场合下使用其对应的西文字体的,只要有可能我就会用 Tahoma 或者 Verdana 来替代。诚然,宋体在 12px 以及 14px 下作为正文字体是非常合适的,也很入眼,但是在比 12px 更小或者比 14px 更大的场合,这款字体就不那么好看了,加上它没有很好的支持 Anti-Aliasing 和 ClearType,因此在 Windows Vista 中才会替换成了以前说过的“微软雅黑”。

通常中文版的 Windows XP 装好后,大部分的字体都可以通过“显示属性”对话框中“外观”选项卡下的“高级”选项对话框来设置。然而,登录界面以及登录后屏幕左下角“开始”按钮上偌大的“开始”两个字,可以说要多难看有多难看。经过一番 Google 和琢磨,现在终于找到办法来将这两处的字体换掉。这样一来,我就可以比价舒服的用中文版的 Windows XP了。以下是修改方法:

Labels: , , , , ,

Tuesday, December 05, 2006

用微软雅黑代替宋体开启 ClearType UI 3 条评论

用 Microsoft Update 升级到了 Internet Exloporer 7,发现它默认开启了 ClearType,一时之间,觉得两眼昏花,半天才适应。不过由于中文的默认字体仍然是宋体/新宋体,而这个字条不支持 ClearType,因此会发现网页中西文部分是 Anti-Aliasing 的,但是中文部分仍然是默认状态。

其实很早之前就很羡慕 Mac 系统下简明漂亮的细黑中文字体,Windows 系统下的默认宋体的中文字体还算过得去,但是它的西文实在是无法入眼,因此通常我安装了中文版的 Windows 的第一件事情就是把系统界面的字体换成 Tahoma。

现在微软在新的 Windows Vista 中用“微软雅黑”字体代替了原来的宋体/新宋体,以便更好的支持中文的 ClearType 显示。将这个字体安装到 Windows XP 上,也就可以同样利用它实现中文的 ClearType 了。以下是应用前后的对比:

未使用 ClearType

使用 ClearType

Labels: , , , ,

Wednesday, November 15, 2006

Feeds of Blogger Beta 0 条评论

今天爬 Blogger Beta 的资料,发现 Blogger Beta 除了可以提供整站帖子、整站评论以及分帖子评论的 feed 以外,甚至可以按照单个的 label 来提供 feed,格式如下:
http://beta.blogger.com/feeds/blogID/posts/default/-/labelname

URL 中的 labelname 就是要订阅的 label,注意中间的“-”符号不能少!

另外,把其它的订阅地址的格式也一并写在这里:

订阅整站帖子全文:
http://beta.blogger.com/feeds/blogID/posts/full

订阅整站帖子默认,即按照 Blogger 的 Site Feed 设置选项:
http://beta.blogger.com/feeds/blogID/posts/default

订阅整站评论:
http://beta.blogger.com/feeds/blogID/comments/default

订阅单贴评论:
http://beta.blogger.com/feeds/blogID/postID/comments/default


Update on 2006/11/17:
对于 label 的 Feed,发现如果 labelname 中含有空格,则无法正确获取 Feed 内容,会出现 Blogger 的“We're sorry, but we were unable to complete your request.”报错页面,例如:
http://beta.blogger.com/feeds/blogID/posts/default/-/Knowledge Base

无论中间的空格是否被 urlencode 成 %20,都会出现这个情况。已经向 Blogger GData API 讨论组 提交了这个问题,不过至今仍未有任何回复。

Update on 2007/01/12:
这个问题在 Blogger GData API 的另一个讨论串中被再次提到,并被认定为一个 bug,可以通过这里来追踪。希望这个问题能够早日得到解决。

Labels: , , , ,

Saturday, November 11, 2006

Firefox 的 JavaScript 问题两则 1 条评论

今天发现页面上新加上的左列 Tag 在 Firefox 上显示不正确,在细察之下,发现 Firefox 在 JavaScript / CSS 上和 IE 不同之处:

问题 1. 类似 obj.style.height = imgObj.height 的语句无效。

即将一个 image 对象的高度值赋给另一个对象,用来修改其样式高度,这样做无效。

分析

要理解这个问题,首先要纠正思想上的一个误区。以上这个操作,其实并非是通常编程概念上的将一个 int 值赋给另一个 int 变量。这个语句的操作,实际上是把 imageObj.height 当作一个字符串,作为 obj 这个对象 CSS 中 height 的属性。

之前的一篇帖子说过,Firefox 对 CSS 的理解非常严格,任何表示大小的值,数字后面必须跟上单位,除非是 0。也就是说,height: 20 对于 Firefox 来讲不具有任何意义,必须写成 height: 20px 才会被接受。所以,在 JavaScript 中,为了让对 CSS 的 height 值的设置有效,所赋给的字符串也同样必须是数量加上单位。

解决

以上语句,应该写成:
obj.style.height = imgObj.height + 'px';

Labels: , , , ,

Friday, November 10, 2006

升级到 Blogger Beta 后的问题 4 条评论

昨天收到 Blogger 的升级邀请,将我的 Blogger 帐号升级为了新推出的 Blogger Beta。由于升级的过程中,没有对原有模版中的内容进行更新,也没有自动重新重建页面,因此今天在重新修正了模版文件并将整个站点重建。在这个过程中还是发现了一些问题:
  • 模版中的中文内容变成了乱码

  • 模版标签 <$BlogOwnerAboutMe$> 失效

  • 发布时不再提供 rss.xml 文件

  • 无法特别为标签页面定制模版内容

  • 可能出现读者访问速度非常缓慢且无法发表评论

Labels: , , ,

Wednesday, November 08, 2006

让 TortoiseSVN 记住密码 0 条评论

用 TortoiseSVN 维护工程,每天都要输入无数次密码,有时候一次操作就要输入数次密码,实在是烦人。多方搜寻让 TortoiseSVN 记住密码的办法,但是对我目前的情况都无效,我想大概是因为用了 svn+ssh 协议的原因。

不过虽然不能让 TortoiseSVN 记住密码,但是却能够让它自动输入密码,一样可以避免频繁输入密码的麻烦,方法如下:

1. 在 Explorer 右键菜单中:TortoiseSVN -> Settings.
2. 在弹出对话框的左侧面板中选择 Network,在右边界面下方的 SSH Client 中填写:
[TortoiseSVN Install Path]\bin\TortoisePlink.exe -pw [Your Password]

例如,你的 TortoiseSVN 安装在默认目录 C:\Program Files\TortoiseSVN 下,密码为 abc123,那么以上的内容就应该为:
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -pw abc123

3. 点击 OK.

然后,以后在进行 SVN 操作的时候,就不再弹出要求输入密码的窗口了。

Labels: ,

Thursday, October 26, 2006

Blogger 网页显示空白的问题 0 条评论

之前一直有朋友声称我的 Blog 访问不了,打开来是空白。这个问题我自己也经常遇到,原因是网页编码被误判成 GB2312,而不是正确的 UTF-8,于是 IE 无法识别,所以显示成空白。这个问题据说在 Firefox 上并不存在,但是为什么会被误判我也一直不清楚。

现在原因应该清楚了,因为在文件头中,声明网页内容编码的那一行标记
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

被放到了 <title> ... </title> 之后,而刚好 title 中有中文,所以 IE 在没有获得指定的编码类型时,用了默认的 GB2312。

解决这个问题还是比较容易:编辑 Blogger 的模版,把“<$BlogMetaData$>”放到“<title><$BlogPageTitle$></title>”的前面,然后重建一下,就不会出现这个问题了。

Labels: , , , ,

Tuesday, September 26, 2006

奇怪的 TP-LINK 无线网卡驱动 2 条评论

由于新买的 ASUS A6Jc 笔记本没有自带无线网卡,于是我另外购买了一块 TP-LINK 的 TL-WN310G 无线网卡。安装以后出现一些问题,现总结如下:

现象
安装完驱动重新启动后,Windows XP 由其特有的欢迎登录界面变成经典的窗口登录模式。切在控制面板“用户设置”中无法改回欢迎界面登录模式,会提示“近期安装的应用程序屏蔽了欢迎界面和快速用户切换。您需要卸载该应用程序来恢复这项特性。以下名称或许能帮助您识别该应用程序:athgina.dll”。

原因
驱动程序安装时会用其自带的 athgina.dll 文件取代 Windows XP 自身的 msgina.dll 并写入注册表从而改变 GINA 的行为。

GINA 的全称为“Graphical Identification and Authentication”——图形化识别和验证。它是几个动态数据库文件,被 winlogon.exe 所调用,为其提供能够对用户身份进行识别和验证的函数,并将用户的帐号和密码反馈给 winlogon.exe。在登录过程中,“欢迎屏幕”和“登录对话框”就是 GINA 显示的。

无线网卡的驱动程序安装自己的动态链接库来控制 GINA,推测可能是为了获取用户登录的用户名密码以便在登录有身份验证的无线网络时使用。

解决办法
如果只是使用不加安全验证的无线网络,实际上是永不到这个动态链接库的。打开注册表,找到键值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL,其值应该就是 athgina.dll,将其删掉,就可以立即到控制面板里重新设置欢迎登录界面和用户快速切换。实际上,Windows 默认是没有这个键值的,而只要存在这个键值,欢迎登录界面和用户快速切换功能就会被屏蔽,哪怕其值是 Windows 自身的 msgina.dll。

如果需要使用 WPA + PEAP(MSCHAP v2) 安全验证的无线网络,似乎只有放弃 Windows XP 的欢迎登录机界面和用户快速切换功能了。去掉以上键值后,不管是用 Windows 自带的无线忘了连接向导还是 TP-LINK 驱动盘提供的无线网络连接程序都无法正确建立无线连接,而把这个键值重新加上即可。

Update on 2006/10/30:
今天又把笔记本带到公司,注册表中没有 GinaDLL 这一项,但是正常的连接到了公司的无线网络。看来这个东西并不是必要的。

Labels: , ,

Tuesday, November 22, 2005

SQL Server 2000 数据库日志 3 条评论

SQL Server 2000 数据库对数据的事务会记录日志,并且能够根据日志回滚数据库操作,这个想必大家都知道。不过,如果日志变得很大,或者达到了限定的日志文件上限,就会对数据库产生较大的影响。

先来看看 SQL Server 2000 数据库日志文件的两种设定方式。

Labels: , ,

Thursday, November 17, 2005

Tomcat 5.5 无法编译 Java 1.5 语法 JSP 3 条评论

Apache Jakarta Tomcat 5.5.x (笔者在 5.5.9 和 5.5.12 下遇到同样问题) 在安装过后,用默认配置,无法自动编译带有 Java 1.5 语法的 JSP,经过多方求证,问题是由其自带的 eclipse 编译器造成的。文档 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jasper-howto.html 中说:
The Java compiler from Eclipse JDT in included as the default compiler. It is an advanced Java compiler which will load all dependencies from the Tomcat class loader, which will help tremendously when compiling on large installations with tens of JARs. On fast servers, this will allow sub-second recompilation cycles for even large JSP pages. This new compiler will be updated to support the Java 5 syntax as soon as possible.

Apache Ant, which was used in previous Tomcat releases, can be used instead instead of the new compiler by simply removing the common/lib/jasper-compiler-jdt.jar file, and placing the ant.jar file from the latest Ant distribution in the common/lib folder. If you do this, you also need to use the "javac" argument to catalina.sh.

由此可见,这个编译器 common/lib/jasper-compiler-jdt.jar 是不支持 Java 5 语法的,而 Apache Ant 工程中的编译器可以替代它解决这个问题,具体方法如下:

Labels: , , , ,

Page 1 / 1 2 3 4 5 » ... Last »