周一来到M公司上班,除了不好意思和周围的人聊天外,倒也没有什么不舒服的地方。换个工作对我来说似乎跟换个项目做一样。至少目前感觉还。。。正常。
刚上班,除了看文档就是申请各种资源了,M果然是传说中的“大公司”,各个服务器的访问权限都需要走流程申请,且听说做这些工作的都是外包公司,就是说,可能给你解决问题的是个老外。。。这也是麻烦,时差啊,申请的访问权限的延迟长的要命。这中间我还弄错个申请,也没发,人家分得很细,发错了,就直接回你一个--‘can't understand‘,于是咱就得重来一边。唉,好怀念魔鬼做管理员的日子,一个电话,甚至吼上一句,什么访问权限啊,直接root口令就发过来了。。。
看文档是件很无聊的事情,至少对我来说是这样,每次我只能坚持看20分钟,然后就会走神30分钟。。。为了让自己能安静坐着,就想着该写些代码,于是开始对Putty动刀了。。。Putty和SecureCRT一样,是用于远程访问的终端程序,只是Putty是free的,而SecureCRT是。。。被盗版的,至少目前我还没有碰到一个用正版SecureCRT的,哪怕是在M公司。。。当然我也一直是盗版SecureCRT的使用者,很好,很强大。现在M公司多数,应该说绝大多数都是正版的,咱也不好意思再用了,于是就换用魔鬼使用的Putty。
Putty那叫一个“不方便”,没有Tab不说,你要不Paster那连Copy也没有。唉,都被SecureCRT惯坏了。于是也真是吃了空,下载了源码,就想着把Putty改成SecureCRT了。源码解压,不错,有VC工程,打开工程,登时晕了,全眼的.c文件。。。看到下面的代码,就知道添加Tab方式是没有指望了。。
void listbox( struct ctlpos * cp, char * stext,
int sid, int lid, int lines, int multi)
{
RECT r;
if (stext != NULL) {
r.left = GAPBETWEEN;
r.top = cp -> ypos;
r.right = cp -> width;
r.bottom = STATICHEIGHT;
cp -> ypos += r.bottom + GAPWITHIN;
doctl(cp, r, " STATIC " , WS_CHILD | WS_VISIBLE, 0 , stext, sid);
}
r.left = GAPBETWEEN;
r.top = cp -> ypos;
r.right = cp -> width;
r.bottom = LISTHEIGHT + (lines - 1 ) * LISTINCREMENT;
cp -> ypos += r.bottom + GAPBETWEEN;
doctl(cp, r, " LISTBOX " ,
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL |
LBS_NOTIFY | LBS_HASSTRINGS | LBS_USETABSTOPS |
(multi ? LBS_MULTIPLESEL : 0 ),
WS_EX_CLIENTEDGE, "" , lid);
}
Putty的作者绝对是C的高人,甚至我都怀疑他应该是用ASM的,为了让大家好理解才用C来写的。。。。别的不说,其代码中涉及到的Windows控件部分的代码,全面都是直接调用API的,这让我等用惯了‘Window Designer'的人来说,那些代码堪比天书。。。Putty代码已经超出我理解范围了,但又有些不心甘,于是照猫画虎,添加了所谓的’Copy‘功能,聊以自慰。。。
<----丢脸的分割线---->
刚才跟同事说起此事,同事很诧异地说:“Copy功能怎么可能没有啊~”,并当场演示给我看,原来在Putty中,选择不Paste就是COPY!丢脸啊~不过Putty这个功能也说明了,以后不要没事在屏幕上乱选了,小心COPY哦~