2007年11月18日星期日

Hacker doomed to die alone

Hacker breaks rules, but obeys PRINCIPLE, no matter how ridiculous it seems.

Hacker adores mystery, but reveals UNKNOWN, no matter how complicated it appears.

Hacker keeps promises, but hates DISTRUST, no matter how accidently it happens.

They contradict, they convolve, they complement each other.

But,

People follow rules, people fear mystery, people forget promises.

That's how hacker doomed to die alone ironically and pitifully.

2BON2B

2007年11月9日星期五

The Day

Birthday!

Wish I could bring this happiness to you all ^O^

Thank you and

May God Bless The Especial You!

 
 

"Hang on to your hopes, my friend

Thats an easy thing to say, but if your hopes should pass away

Simply pretend

That you can build them again

Look around, the grass is high

The fields are ripe, its the springtime of my life"

--- Simon and Garfunkel <<Hazy shade of winter>>

2007年10月29日星期一

The Tower of Babel

When the whole earth had one language and the same words, they came upon a plain in the land of Shinar and settled there. And they said to one another,

"Come, let us make bricks, and burn them thoroughly."

And they had brick for stone, and bitumen for mortar. Then they said,

"Come, let us build ourselves a city, and a tower with its top in the heavens, and let us make a name for ourselves; otherwise we shall be scattered abroad upon the face of the whole earth."

The LORD came down to see the city and the tower, which mortals had built. And the LORD said,

"Look, they are one people, and they have all one language; and this is only the beginning of what they will do; nothing that they propose to do will now be impossible for them. Come, let us go down, and confuse their language there, so that they will not understand one another's speech."

So the LORD scattered them abroad from there over the face of all the earth, and they left off building the city. Therefore it was called Babel, because there the LORD confused the language of all the earth; and from there the LORD scattered them abroad over the face of all the earth.

 
 

(Babel, balal, meaning to confuse)

Nothing we propose to do will be impossible when we have one language and be one people!

2007年9月6日星期四

千呼万唤 Google Reader “Search”

终于来了!

如果你订阅了200+的feed,而里面又有某些能每天产生100+的"新闻",那你可以容忍没有搜索功能的Reader吗?还好,现在我们终于可以不用再亲自去找了。

搜索加星,搜索共享,按目录搜索,只搜索单项订阅,甚至你订阅的别人的共享,全都包括在搜索范围内,而且就像Google网页那么简单,Click and Search。感谢BenChrisJenna

另外除了这个重要更新以外,还有一个更新就是Google Reader现在完全像一个网页支持前进后退了。

2007年8月29日星期三

奇怪的梦之“任务管理器”

昨晚的梦很神奇,整个过程如下:

事件A,我在某处干某事。

事件B,我在用某东西拍摄事件A中的我。

事件C,起来喝水,并接着躺下继续睡。

事件D,不明原因的无法入睡,于是,按了Ctrl+Shift+Esc打开任务管理器。发现里面显示进程A占用CPU 20%,10多个进程B,每个占用5%的CPU。"喔。。。原来刚才的梦还没完啊,删之"。继续做梦。

事件E,"我刚才干了什么?""我不是在做梦吧?""怎么还有任务管理器?"。。。"我醒了没?"

事件F,睁眼发现同宿舍的正要出门,感觉很饿,于是下楼吃饭。

事件G,写下这篇。

PS:想起好像有首歌叫"睁一只眼闭一只眼"

2007年8月28日星期二

Ctypes: Unleash the power of Python

如果你认为Python仅仅是一个脚本语言,那么在你看完本文后或许会有新的感慨:Woooo~,It's cool

Ctypes module是提供Python直接调用C库函数的接口模块,有了它你可以像写C一样写Python,或者像写Python一样来写C。它提供了跟C兼容的数据类型,使得你可以直接调用dlls或者共享库导出的函数。下面大概介绍一下使用方法。

  1. 首先当然是 from ctypes import *
  2. 获取链接库:

    >>> print windll.kernel32 # doctest: +WINDOWS
    <WinDLL 'kernel32', handle ... at ...>

    >>> cdll.LoadLibrary("libc.so.6") # doctest: +LINUX
    <CDLL 'libc.so.6', handle ... at ...>

  3. 获得库函数:

    >>> libc.printf
    <_FuncPtr object at 0x...>
    >>> print windll.kernel32.GetModuleHandleA # doctest: +WINDOWS
    <_FuncPtr object at 0x...>

     
     

    注意:Windows下跟字符串相关的函数分ANSI和UNICODE版本:FuncNameA和FuncNameW。调用哪个需要你自己决定。

  4. 数据类型:

    >>> c_int()
    c_long(0)
    >>> c_char_p("Hello, World")
    c_char_p('Hello, World')
    >>> c_ushort(-3)
    c_ushort(65533)

     
     

    注意:内容将被更改的字符串指针应该用create_string_buffer来获得,如下:

    >>> p = create_string_buffer(3) # 3个字节长度,预置0x00
    >>> print sizeof(p), repr(p.raw)
    3 '\x00\x00\x00'
    >>> p = create_string_buffer("Hello") #用Hello来初始化
    >>> print sizeof(p), repr(p.raw) #内部表示
    6 'Hello\x00'
    >>> print repr(p.value) #值
    'Hello'
    >>> p = create_string_buffer("Hello", 10) # 同时指定初值和长度

    >>> print sizeof(p), repr(p.raw)
    10 'Hello\x00\x00\x00\x00\x00'
    >>> p.value = "Hi"
    >>> print sizeof(p), repr(p.raw)
    10 'Hi\x00lo\x00\x00\x00\x00\x00' # 获得新值,包含最后的0x00结尾

     
     

  5. 函数调用:

    >>> printf = cdll.msvcrt.printf
    >>> printf("Hello, %s\n", "World!")
    Hello, World!
    14
    >>> printf("Hello, %S", u"World!")
    Hello, World!
    13
    >>> printf("%d bottles of beer\n", 42)
    42 bottles of beer
    19

    >>>

     
     

    下面用一个具体例子来介绍:

    我的目标是(没有蛀牙!:)直接调用WIN32 API函数来移动桌面的某些窗口,此处涉及到传递callback 函数作为函数实参的例子。

  6. 首先定义callback函数类型:

    ENUMCHILDPROC = WINFUNCTYPE(c_int, c_int, c_int) # 表示一个 int FuncProc(int, int) 的C类型函数

  7. 定义要用到的一些常用结构:

    class RECT(Structure):

    _fields_ = [('left', c_long),

    ('top', c_long),

    ('right', c_long),

    ('bottom', c_long)]

    def __str__(self):

    return str((self.left, self.top, self.right, self.bottom))

     
     

    class POINT(Structure):

    _fields_ = [('x', c_long),

    ('y', c_long)]

    def __str__(self):

    return str((self.x, self.y))

  8. 定义实际执行的Callback函数

    def EnumChildProc(lhwnd, lParam):

    """return True, 继续枚举下一个窗口

    return False, 不再继续"""

    global wndlist

    pt = POINT()

    windll.user32.GetCursorPos(byref(pt))

     
     

    winclassname = create_string_buffer(255)

    windll.user32.GetClassNameA(lhWnd, winclassname,255)

    wintitlename = create_string_buffer(255)

    windll.user32.GetWindowTextA(lhWnd, wintitlename, 255)

    rect = RECT()

    windll.user32.GetWindowRect(lhWnd, byref(rect))

     
     

    if wndlist.has_key(winclassname.value):

    wndlist[winclassname.value].append((wintitlename.value, str(rect)))

    else:

    wndlist[winclassname.value] = [(wintitlename.value, str(rect))]

     
     

    if len(winclassname.value)==0 or len(wintitlename.value)==0:

    return True # 跳过那些"非实体"window

     
     

    # 根据class name决定是否要移动

    if winclassname.value=='TkTopLevel' and wintitlename.value.find('.py')!=-1:

    windll.user32.MoveWindow(hwnd, pt.x, pt.y, rect.right-rect.left, rect.bottom-rect.top, True)

    print '%s moved to under cursor. (%s)'%(wintitlename.value,winclassname.value)

    return True

  9. 最后,开始启动找窗口:

    wndlist = {}

    enumchildprc = ENUMCHILDPROC(EnumChildProc) # 保持一个对callback的引用,防止被回收

    tophwnd = windll.user32.GetDesktopWindow()

    windll.user32.EnumChildWindows(tophwnd, enumchildprc, c_int(-1))

     
     

    更多文档参见:

2007年7月21日星期六

锄禾日当午,汗滴禾下土

今天早上5点起来去庄园,太阳还算客气。
地里的各种庄稼已经绿的冒油。
番薯,玉米,花生,芋头,葡萄、、、
干到7点已经满头大汗了,不过看到劳动成果心里还是乐滋滋。
葡萄爬满了架子,各个肥的挂在那等我,心动了。。。
回来赶紧把花生煮熟。
自己锄的自然格外香。
农民确实不易。


Posted by Picasa

2007年7月13日星期五

Fly over the trip

Fly over the trip

Google Earth可不单单只是看看家在哪里用的~

想想沿着飞机飞的航线,看看脚下的壮丽河山~

要做的冒得可不是一般的风险,嘿嘿。

下面就是我记录到北京到宁波的航班路线。

只是非常可惜。。。

最后着陆一段本来也能记到。。。不小心被色迷迷的空姐发现,无奈之下只好留下小小的遗憾了

顺便还有去游泳的路线。

山还是那青,水还是那绿,还有那暴雨后那朦胧的山雾,与记忆中去年的景象差别还不算太大。

下载kml文件:

mytrip_home.kml

swim.kml

 
 

2007年6月26日星期二

这就是生活

这就是生活

发信人: psycho (风子~凡所有相,皆是虚妄), 信区: Joke

标 题: 难难难!

发信站: 水木社区 (Tue Jun 26 14:53:50 2007), 站内

 
 

【 以下文字转载自 RealEstate 讨论区 】

发信人: qiangwei325 (蔷薇雨1983325), 信区: RealEstate

标 题: 难难难!

发信站: 水木社区 (Tue Jun 26 14:39:27 2007), 站内

 
 

请你告诉我现在什么不难?

找男女朋友难

找房子难

找工作难

看病难

我们是怎样的一代人:

当我们读小学的时候,读大学不要钱;

当我们读大学的时候,读小学不要钱;

我们还没能工作的时候,工作也是分配的

我们可以工作的时候,撞得头破血流才勉强找份饿不死人的工作做

当我们不能挣钱的时候,房子是分配的.

当我们能挣钱的时候, 却发现房子已经买不起了

当我们没有进入股市的时候,傻瓜都在赚钱;

当我们兴冲冲地闯进去的时候,才发现自己成了傻瓜

 
 

 
 

 
 

--

于千万人之中遇见你所遇见的人,于千万年之中,时间无涯的

荒野里,没有早一步也没有晚一步,刚巧赶上了,那也没有别的话

可说,惟有轻轻地问一声:"噢,你也在这里吗?"


 

 
 

2007年6月25日星期一

杀人游戏官方文档

杀人游戏官方文档

杀人游戏,Mafia,即黑手党。

2007年6月23日星期六

核磁共振结果显示

核磁共振结果显示

相比可口可乐,人们更偏向于喜欢百事可乐。

核磁共振是个好东西,它根据人脑中的血液流量,来区分人们在干不同事情时不同部分的脑区活动的强弱。

HNL 的一项试验中,他们采用双盲测试(实验人员与被试人员都不知道被试的人喝的是什么),结果发现,人们如果不知道喝的是什么一般会更喜欢百事可乐;而如果知道喝的是什么,则更喜欢可口可乐。而且最神奇的是,实验人员不需要问被试的人喝的是什么,只需观察人们脑部的"奖赏反馈区域"的活动强弱即可。

2007年6月18日星期一

谁懂拉丁语?

谁懂拉丁语?

这是拉丁语吧?请问啥意思?

"Memento homo, quia pulvis es, et in pulverem reverteris"

当blog成了essay

当blog成了essay

推荐一个大牛Blog的一篇文章,可能把那称之为blog实在不恰当。不过还是非常值得推荐给所有崇尚科学的人们的。

把一个具体的研究过程用简单通俗的方式透彻地剖析清楚,比在某些高级杂志里发表仅供专业人士"谈资"的文章绝对要难得多的多,而且也更有实际意义,这可能是普及"民科"的更好的方式。

2007年6月17日星期日

留个“底案”,国内wiki暂时通了

留个"底案",国内wiki暂时通了

Welcome to Wikipedia,

the free encyclopedia that anyone can edit.

1,838,085 articles in English

 
 

源文档 <http://en.wikipedia.org/wiki/Main_Page>


 

当然zh.wikipedia.org还是"扑通"的。

2007年6月16日星期六

test

test jblogger

2007年6月15日星期五

Google Calendar 支持中国移动短信提醒啦

Google Calendar 支持中国移动短信提醒啦

之前居然只有中国联通。。。现在有中国移动咯~

http://www.google.com/calendar/

现在可以方便的设置email, SMS, 窗口三种提醒方式。

而且更重要的是,短信提醒是免费的!

来给国外朋友发发短信啦,实验室公司内朋友之间约会啦,还有blablabla… 只要对方能看到你日历就可以设置提醒。更多内容大家自己再去挖掘啦

只是有个限制是:延迟最少要设5分钟。

总的来说 Google Calendar还算是个比较成功的产品的,这里就帮着做做广告了,嘿嘿。

2007年6月12日星期二

小心氧气

小心氧气

最近的"靠,真他妈有意思" 里写到:除了能使铁块生锈,引爆炸弹,有时候,氧气还能使一直靠它为生的细胞死的那么壮烈。

医学上人们靠氧气来治疗紧急病人。但是,最近的研究表明,纯氧即使在正常的压强下,也可能起到相反的效果。当纯氧进入肺部的之后,自发的生理系统增强呼吸作用,一个直接效果就是血液里的二氧化碳量也随着急剧增加,进而导致血管收缩。也就是说,虽然氧气在肺里的量虽然增多了,但循环系统缺没有能力把氧运送到身体各处。

另外有实验通过脑部核磁共振表明,纯氧导致某些人的海马、脑岛、以及扣带回皮质反应剧烈,并刺激下脑丘,向全身释放各种荷尔蒙和神经递质,导致心跳减慢,循环系统也跟着痿掉了。(友情提示:不要用纯氧,加点二氧化碳就好很多,5%左右)

还有一个有趣的是,心跳停止后,人脑在无氧的情况下只能存活六分钟,因此人们一直在通过恢复呼吸和心跳作为复苏抢救的方法。但是,实验结果表明,在无氧的情况下,心脏细胞和神经细胞实际能存活长达一个小时。而且更令人吃惊的是,实际上,氧气的突然进入,反而触发了细胞内的线粒体的凋亡。这方法杀死细胞比别的啥毒药要快得多。

所有这些,原因究竟是啥目前不得而知。

嘿嘿,这也决定了我这篇文章仅仅只是"民科",不可全信,也不可不信。

有兴趣的可以看:

SciAm article on pure oxygen

Newsweek on oxygen apoptosis

 
 

 
 

 
 

2007年6月10日星期日

阿~

阿~

春天多美好

有那么多苹果

可以吃

2007年6月5日星期二

关于Google map的一点小知识

关于Google map的一点小知识

 
 

今天偶然看到有人做了个Google map downloader,一个中国人名的写的,可惜是收费的软件,$29.xx。。。

软件的功能是:批量下载 指定经纬度范围内 任意放大比例 的卫星照片。

软件下载地址我就不给了(不做广告,哼哼)

说想要破解版的去0day找,否则有精度限制。。。

Google.Maps.Images.Downloader.v2.3.Cracked-iNViSiBLE(2007.04.04还不是2007.04.08忘了)

 
 

现在转入正题(前面不算):

Google map用的是keyhole的地图技术,这里介绍如何手动得到地图。。。手动指的是,

在浏览器地址栏输入:http://kh0.google.com/kh?v=8&t=t

Voila! 你就看到整个地球了。(如果就此结束估计大家会找砖头拍我)

如何放大呢?你得先告诉我想放大哪一部分呀。。。

假设中国吧,在右上角,那么在上面地址后加上r

http://kh0.google.com/kh?v=8&t=tr

嘿嘿,这时候中国跑右下角了,再加个s

http://kh0.google.com/kh?v=8&t=trs

Bingo, 我家在新图的左下角,再加个t

http://kh0.google.com/kh?v=8&t=trst

我家就在喜马拉雅,貌似是左上角了,再加个q

http://kh0.google.com/kh?v=8&t=trstq

。。。。

找呀找呀,如果你眼神够好,就不停的qrstqrst….

我就在那alt 8888.8888888的地方写这篇blog呢。。。

嘿嘿。。。See you there

全文完,搞笑一下~ 笑过看过用过,转贴不让过!

2007年5月16日星期三

OneNote blog test

Hello , there~

2007年5月8日星期二

配置windows 2003 server 作为vpn服务器

配置windows 2003 server 作为vpn服务器

最后一步需要添加 "内部" 到NAT接口列表中:

Netsh routing ip nat add interface "内部" private

Netsh routing ip nat add interface "internal" private (英文版的2003)

2007年4月22日星期日

Windows桌面搜索,不错

在使用windows桌面搜索的时候,预览功能相当方便,但我碰到的一个奇怪问题是,

预览生成的临时文件存放在 file:///C:/recycled/Temporary%20Internet%20Files/ 目录下面

而用资源管理器无法打开 file:///C:/recycled/Temporary%20Internet%20Files/ 这目录

 
 

原因:

因为如果recycled目录属性为 +SH即系统且隐藏,则在资源管理器里看不到其下文件或目录。该目录有默认的回收站的显示方式。奇怪的是,临时目录本来不应该存放在此,但可能 office 2007 或 windows 桌面搜索使用自己的配置来存放临时文件。

解决办法:

Attrib -s -h c:/recycled

DOS下执行以上命令即可重新使用 windows 桌面搜索来预览 doc 等需要转为 mht 的文件了。

2007年4月21日星期六

GGA Global Positioning System Fix Data. Time, Position and fix related data

GGA Global Positioning System Fix Data. Time, Position and fix related data

for a GPS receiver

 
 

Time

Lat N Long E qua #s dilu alt M at' M age chk

1

2 3 4 5 6 7 8 9 10 11 12 13 14 15

$--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x, xx, x.x,x.x,M, x.x, M, x.x,xxxx*hh

1) Time (UTC)

2) Latitude

3) N or S (North or South)

4) Longitude

5) E or W (East or West)

6) GPS Quality Indicator,

0 - fix not available,

1 - GPS fix,

2 - Differential GPS fix

7) Number of satellites in view, 00 - 12

8) Horizontal Dilution of precision

9) Antenna Altitude above/below mean-sea-level (geoid)

10) Units of antenna altitude, meters

11) Geoidal separation, the difference between the WGS-84 earth

ellipsoid and mean-sea-level (geoid), "-" means mean-sea-level below ellipsoid

12) Units of geoidal separation, meters

13) Age of differential GPS data, time in seconds since last SC104

type 1 or 9 update, null field when DGPS is not used

14) Differential reference station ID, 0000-1023

15) Checksum

 
 

GSA GPS DOP and active satellites

list of satellites number

1

2 3 14 15 16 17 18

Sel Md

Md IDs… IDs PDOP HDOP VDOP chk

$--GSA, a, a, x, x,x,x,x,x,x,x,x,x,x,x, x.x, x.x, x.x *hh

1) Selection mode

2) Mode

3) ID of 1st satellite used for fix

4) ID of 2nd satellite used for fix

...

14) ID of 12th satellite used for fix

15) PDOP in meters

16) HDOP in meters

17) VDOP in meters

18) Checksum

 
 

 
 

GSV Satellites in view

1

2 3 {4 5 6 7 } n

tot

mn #s {sn elv azi snr} chk

$--GSV, x, x, x, x, x, x, x, ...*hh

1) total number of messages

2) message number

3) satellites in view

4) satellite number

5) elevation in degrees

6) azimuth in degrees to true

7) SNR in dB

more satellite infos like 4)-7)

n) Checksum

 
 

RMC Recommended Minimum Navigation Information

12

1 2 3 4 5 6 7 8 9 10 11|

| | | | | | | | | | | |

$--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh

1) Time (UTC)

2) Status, V = Navigation receiver warning

3) Latitude

4) N or S

5) Longitude

6) E or W

7) Speed over ground, knots

8) Track made good, degrees true

9) Date, ddmmyy

10) Magnetic Variation, degrees

11) E or W

12) Checksum

 
 

RMC Recommended Minimum Navigation Information

12

1 2 3 4 5 6 7 8 9 10 11|

| | | | | | | | | | | |

$--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh

1) Time (UTC)

2) Status, V = Navigation receiver warning

3) Latitude

4) N or S

5) Longitude

6) E or W

7) Speed over ground, knots (1 knots = 1852 meters per hour = 0.514444 meters per seconds)

8) Track made good, degrees true

9) Date, ddmmyy

10) Magnetic Variation, degrees

11) E or W

12) Checksum

 
 

VTG Track Made Good and Ground Speed

1 2 3 4 5 6 7 8 9

| | | | | | | | |

$--VTG,x.x,T,x.x,M,x.x,N,x.x,K*hh

1) Track Degrees

2) T = True

3) Track Degrees

4) M = Magnetic

5) Speed Knots

6) N = Knots

7) Speed Kilometers Per Hour

8) K = Kilometres Per Hour

9) Checksum

 
 

reincarnation

The blog comes back!

搜索此博客

你每天睡几小时?

Google