yichao firstname, zeaster nickname, zhang lastname

统一Mac OS X,Windows XP/Vista以及linux的系统时间

Windows把BIOS时间作为系统时间,而Mac OS X把BIOS时间作为GMT+0时间,所以对于生活在GMT+8时区的中国用户来说,这两个系统共存时系统时间是不一致的。
即:如果windows时间为12:00,则到Mac OS X下就变成了20:00,在Mac OS X下改过来后,再回到windows下就又错了。

之前看过这篇blog,讲了通过修改windows注册表,使得windows也把bios时间作为GMT+0时间,这样就可以解决这个问题了,具体操作如下:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\中加一项DWORD,RealTimeIsUniversal,把值设为1即可。

这个办法是靠调整windows时间设置来解决问题的,但是当系统中有linux时,因为linux也是使用bios时间作为系统时间,所以这时linux系统的时间就又不一致了。
最好的办法就是调整Mac OS X的时间。于是想到了强大的Bash Shell,先写脚本1用来开机时自动把时间校对准,然后关机时再运行脚本2,把时间调整回去。
脚本1:
#!/bin/bash
d=$(date "+%d")
H=$(date "+%H")
M=$(date "+%M")
S=$(date "+%S")
let "H=$H-16"

z=0
if [ "$H" -lt "$z" ]
then
  let "H=$H+24"
  let "d=$d-1"
fi

z=10

if [ "$d" -lt "$z" ]
then
  d=0$d
fi

if [ "$H" -lt "$z" ]
then
  H=0$H
fi

sudo date -u $d$H$M.$S

脚本2
#!/bin/bash
ss=$(date "+%d%H%M.%S")
sudo date -u $ss

那么如何实现自动开机运行以及关机自动运行呢?
1 开机自动运行
写shell,然后在applescript中调用shell,再把applescript保存为app,添加到login items中
注:我的.sh文件和textmate做绑定了,这样直接添加.sh文件不会执行shell,而是被textmate打开

2 关机自动运行
使用launchbar的restart和shutdown applescript,因此只需在这两个script中添加调用shell的一句即可了。

bash shell修改系统时间需要root权限,那么如何在applescript中调用时输入root密码呢?
使用如下命令:
do shell script "sudo date -u 1200" password "mypwd" with administrator privileges

推荐一本书:中国自行车之旅

前面介绍了如何选购适合自己的自行车,以及一些基本修车技术,足以应付长途骑行的需要。
后面是全国各地的骑行路线介绍,很实用!

PS 1:
本来想引用豆瓣上关于这本书的链接,结果发现没有,仔细一查才发现原来:
在豆瓣上已无法添加《中国自行车之旅》一书,因为《中国自行车之旅》和《中国徒步之旅》这两本书的isdn号都是7561327234
  这两部书见:
  http://joyo.com/detail/product.asp?prodid=bkbk404144
  http://joyo.com/detail/product.asp?prodid=bkbk410714

PS 2:
看过之后,决定今年春季去一次十三陵水库,那位想一同去,可以留言。

性能准则之一:在遍历集合前一定要判断集合是否为空

例举2个例子:
1使用Iterator对象遍历集合时,此时遍历前检查集合大小可以缩短执行时间约为:64%

  public static void main(String[] args) {
    int N = 1000 * 100000;
    List<Integer> list = new ArrayList<Integer>();

    long start = System.currentTimeMillis();
    for (int i = 0; i < N; i++) {
      Iterator<Integer> iter = list.iterator();
      while (iter.hasNext()) {
        System.out.println(iter.next());
      }
    }

    System.out.println(System.currentTimeMillis() - start);                      //==================490
    start = System.currentTimeMillis();
    for (int i = 0; i < N; i++) {
      int j = list.size();
      if (j > 0) {
        Iterator<Integer> iter = list.iterator();
        while (iter.hasNext()) {
          System.out.println(iter.next());
        }
      }
    }
    System.out.println(System.currentTimeMillis() - start);                     //==================180          时间缩短了64%
  }


2 使用for循环遍历集合时,此时遍历前检查集合大小可以缩短执行时间约为:5%
  public static void main(String[] args) {
    int N = 1000 * 10000;
    List<Integer> list = new ArrayList<Integer>();

    long start = System.currentTimeMillis();
    for (int i = 0; i < N; i++) {
      int j = list.size();
      for (int t = 0; t < j; t++) {
        System.out.println(list.get(t));
      }
    }

    System.out.println(System.currentTimeMillis() - start);          //==================190
    start = System.currentTimeMillis();
    for (int i = 0; i < N; i++) {
      int j = list.size();
      if (j > 0) {
        for (int t = 0; t < j; t++) {
          System.out.println(list.get(t));
        }
      }
    }
    System.out.println(System.currentTimeMillis() - start);         //==================180     时间缩短了5%
  }

blogsync with gui coming, import your wordpress to blogger

blogsync with gui coming

and with some control function about which posts to import.

it can be downloaded from
http://yichao.zhang.googlepages.com/blogsync-with-gui.tar.gz

Readme.txt

0. What is it used for?
This is a simple tool to import all posts from wordpress to blogger/blogspot.

1. How to use it?
0) set java in your path.
for windows users, run run.bat
for unix/mac users, run run.sh
1) set up your wordpress and blogger account.
2) choose one import option from option panel.
3) read posts from wordpress.
4) check posts and remove any posts that you do not want to import by selecting and right-clicking.
5) import now by just clicking the import button.

2. what is my blogger blogid?
It's in your blogspot Dashboard url, for example: http://www2.blogger.com/posts.g?blogID=18083698
"18083698" is your blogid.

3. what may cause this error?
[Fatal Error] :1444:21: Invalid byte 1 of 1-byte UTF-8 sequence.
org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse
servers response: Invalid byte 1 of 1-byte UTF-8 sequence.

One of your posts may be an invalid xml.
please correct it and make sure its source code is valid xml, then import again.

4. any other questions?
Welcome to send your feedback to Yichao.Zhang & gmail.com
or leave me a comment on http://zeaster.blogspot.com

春运火车票攻略

1
春运背景介绍:
a)票贩子绝对和铁路部门没关
b)铁路部门绝对不想趁春运期间抬高票价
c)政府绝对在春运问题上竭尽全力为人民服务了
d)中国老百姓在春运问题上绝对有觉悟维护自己的权益
此处省去1万字

2
时间:年二十八晚6点
地点:北京火车站退票大厅
人物:票贩男甲
对话:哈尔滨的啦,T17,今晚9:05发车,有座了。。。。/ 多少钱? / 400元 / 。。。。

时间:年二十八晚8点15分
地点:北京火车站退票大厅
人物:票贩女
对话:哈尔滨的啦。。。。/ 多少钱? / 154元 / 。。。。

3 返程
本人脑子有问题,错失购买学生票良机,只好买了站票
带了2个凳子,花了20元,让小红帽带着提前上车了。对了,上车前竟然遇到高中好友,匆忙中也没聊上几句
20元还算有所值,提前占了一个2节车厢中间的位置,摆好箱子当座子,支起椅子坐上,倒也逍遥,此处温度适宜,如果没有后来的事儿,我觉得比有座好
接下来说说后来的事儿:
沈阳站停车,乘务员要从我这个位置开门倒垃圾下去,结果垃圾袋破了,洒出n多方便面汁儿,弄得到处都是,女友牺牲了一个垫椅子的围巾。
乘务员一句道歉的话也没有,惹得女友痛痛快快的骂了一车。

老爸的酒瘾

1
新年回家,老妈拿出2大瓶自制"葡萄酒",就是用葡萄和枸杞子加上白酒泡制而成。
里面泡的葡萄也没扎个眼儿,一问老妈说这是老爸要求的。
别人不知道,我可清楚,这是老爸的变相喝酒法。

2
前几年回家,听说老爸拿蝎子泡酒,说是有营养。
嗯,这是另一种。。。

Spoofing the User Agent with Safari for cmwap

In Mac OS X terminal:
chao:~ mac$ defaults write com.apple.Safari CustomUserAgent "\"hicmwapiamcomingnow\""

Now your safari user-agent has been changed to "hicmwapiamcomingnow".
OK, go internet surfing with cmwap on Mac OS X!

P.S:
of course, you can go with gprsproxy tool without changing anything for safari.
see this for details:
http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html

cmwap is a wap service provided by China Mobile.

Windows XP/Vista vs Mac OS X 软件对比清单

自从切换到Mac OS X平台下,就被吸引了,也不想回windows了。
不过刚开始发现windows上还是有几个软件是Mac OS X下没有的,不过现在这种软件越来越少了
现列举几个和我密切相关的说明一下:

1 Microsoft Office for Mac 通过!pass
这个是没用过Mac的人不能想象的,不过它真的有,微软自己给Apple Mac OS X 做的Office 套件
现在版本是Microsoft Office for Mac 2004,和Microsoft Office 2003功能一样
另外,Microsoft已经公布Microsoft Office for Mac 2008也将马上发布。这版的功能和Microsoft Office 2007是一样的
详见:http://www.microsoft.com/mac/products/office2004/

2 ipmsg 通过!pass
实习时公司内使用的即时聊天工具,一个很小的exe程序。
不过也有Mac OS X下的版本,详见我这篇blog:
http://zeaster.blogspot.com/2007/01/translate-ipmsg-into-gbk-on-mac-os-x.html

3 ActiveSync / Windows Mobile Device Center 通过!pass
我用的手机是dopod 696,Windows Mobile的操作系统,同步工具在XP下是ActiveSync,Vista下是Windows Mobile Device Center
不过也有Mac OS X下的类似软件Missing Sync for Windows Mobile,详见:
http://www.markspace.com/missingsync_windowsmobile.php

4 Dopod 696 USB Modem 无线modem 通过!pass
在Mac OS X 下用Windows Mobile 2003/wm5.0手机连接cmwap或者cmnet上internet?!
没错!这是可以成功!详见我的这篇blog:
http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html

5 智能手机工作室 Jeyo 没通过,failed
就是在Mac OS X连接手机发短信,这个功能目前我还没找到可替代的软件

6 招商银行专业版客户端 通过!pass
最近发现原来Windows Mobile下又招商银行客户端,而且可以cmwap连接,本人已试,好用!
成功登陆后使用cmwap进行各项操作均没有问题。不过也有几点需要主要:
1)不要用cmwap恢复专业版证书,会很慢,常常会失败,可以先手机连pc机,恢复完证书,再用cmwap登陆就没问题了!
2)打开招商银行掌上版前,一定要先连同gprs,例如,先打开pie,连个网。
否则招商银行掌上版会找不到网络,它不会自动开启gprs。也许这是为用户安全考虑吧。
另外也督促招商银行尽快出Mac OS X版的客户端。
掌上版详见:
http://www.cmbchina.com/PDAbank/PDADownload.htm


7 蓝牙棒的驱动 没通过,failed
实际我用的Mac OS X是装在IBM Thinkpad上的,没蓝牙驱动

8 三耳可视数字复读机 没通过,failed
我练习听力的软件,可以自动把mp3按句子分割,然后一句一句复读听。没找到Mac版的
详见:http://www.3estudy.com

Mac OS X上成功使用dopod 696 wm5.0 连 cmwap上网

哈哈!
也是使用dopod 696/himalaya wm5.0 的“internet共享”方式上网
1 在Mac OS X 下,安装Missing Sync for Windows Mobile
2 去掉Missing Sync连接方式中的usb,以下和我上篇blog中的说明一样,详见:
http://zeaster.blogspot.com/2007/02/dopod-696-wm50-cmwap.html

蓝牙方式我没试,因为偶是在IBM thinkpad 上装的Mac OS X 10.4.7,没蓝牙驱动,不过道理是一样的,应该也能成功。