米就甘咯

四月 27th, 2010 | 181 次阅读

      今晚本来是不想写blog的,因为忙了一天确实比较累,打算玩会游戏就去睡的,但最后还是决定记录一下最近的某些想法。本blog足足被GFW了一周,China地区的网络根本无法访问(穿墙除外),直到昨天下午终于抽空把域名指向一个第三方的GHS入口。但其实要说我上一周是不是真的忙到连找一个新的GHS入口都没有时间,还真的不是,只是精力更多地被用在了其他地方(其实更多的是在浪费)。

      自从回到I记实习后,生活一下子就充实起来了,例如刚刚打断我写blog的那封邮件。虽然毕设做得七七八八了,但是还是要常常往实验室跑,毕竟那边还有一些技术层面的东西要移交。而I记这边,连续两周有通宵的task,这个还是蛮折腾身体的,呵呵。

      今天上午是我们team的Unit Meeting,我和云仔第一次作为team的预备成员参加(虽然他之前在Jacky那边已经参加过两次了)。会后我的感触就是,以后要好好干活,更要多点动脑,要有好的想法。更具体的一些想法就不在这里说了。会后和同事在board room就我和客户的某个接口人同名一事开玩笑,内容比较龌龊,在此略过。虽然我在上周就启用了我的英文名Tango,为了避免以后打电话的时候出现“HP,你好,我是HP”这样的情况,但是大家大多数时候还是喜欢直呼我的名字。

      最近在玩一个比较经典的战略游戏《突袭2》,真实性比较强,至少不会出现红警里面用机关枪打爆坦克这样的事情。这种战略游戏比较费脑汁,但还是蛮过瘾的,特别是当你用德军的88炮轰击盟军坦克的时候。

      看着自己的护照上的泰国签证还有一个月就过期,真的很不爽,依照泰国目前的局势,看来是去不成了。之前在SSR群上和同事讨论过一条旅行路线:先去拉萨玩几天,顺便在拉萨的尼泊尔大使馆办签证,之后由陆地从樟木口岸进入尼泊尔,沿路可以遥望珠峰,之后在尼泊尔走ABC大环路。但是这条路线至少需要20天时间,几乎抽不出时间嘛。猪仔计划的新一轮出行计划又还未酝酿出来~比较不爽~

      妖~一句讲晒,米就甘咯~训觉!

Tags: 心情 感想 生活 Posted in 生活

不知不觉

四月 4th, 2010 | 187 次阅读

      不知不觉就到四月了,离毕业还剩两个多月时间。

      昨天被阿聪叫去帮他拍一个广告DV,在里面饰演一个所谓事业有成,正在office里开OT的男人。就因为去拍这个DV,我特意跑回了学校。大学四年,也参加过几次视频的拍摄,之前都是给百步梯拍宣传片的时候上的镜。这次忽然有一个角色让我扮演,有一点点不习惯,居然要我这个大男生演绎和妻子通电话的温馨场面,还要演出说“我爱你”的那种尴尬,相当有挑战性。

     拍完MV打算回宿舍坐坐,结果宿舍没人,更恶心的是我没带宿舍门钥匙,只好跑去其他宿舍串门。和两个同班同学聊得兴起,其中一个和我签了同一家公司,不过他的location在深圳。几个人感叹一下时间的飞逝,面临着本科时代的终结,未免唏嘘。而我也在唏嘘之中错过了回家的最佳时间,赶不上公交的末班车,地铁2、3、5线都停了。最终在12580的帮助下坐地铁4号线去车陂南,再坐夜9到石牌桥转夜23回家,真够波折~~

      前天终于解决了我毕业论文所要研究的课题的核心部分的所有实验上的问题,所实现的玩意儿确实横竖跨越了单个系统的几个层次,说是一种全方位的技术也不为过。事实上我对自己这四年在专业技术上的成就还是颇得意的啦,无论是web还是嵌入式,无论是JIT语言还是脚本语言,都有一定的研究和相应的skill,最重要的是对“技术”已经有了一套自己独特的见解。只是一想到很快就要专心去做系统方面的东西了,心里面就未免有一丝惆怅。

      刚刚在广州SSR群上看见同事们对房价问题的讨论,马上意识到,自己很快也要面对这个问题了。对这种恶心龌龊而又不得不面对的问题,除了无所谓地去抱怨,更实际的还是去打拼。要在这个弱肉强食又充满未知性的社会活得精彩,就只有让自己变得更强更优秀。责任是用来承担的~~

      不知不觉就到四月了,离正式工作还有两个多月时间。

Tags: 感想 心情 Posted in 生活

IT生态圈

三月 21st, 2010 | 193 次阅读

      对于Mark Zhou在Round Table上讲到的IT行业生态圈(IT Ecosystem)这个概念我一直是很认同。记得上学期被学院叫回去参加新老生交流会,我跟大一的师弟师妹们就讲过,要尽快地选择一个IT生态圈作为自己以后的技术目标。我在学校里一直都是走Java和开源技术路线,所参与的项目一贯在这个范畴之内,所以IBM也很自然地成为我的首选企业之一。

      我个人对IT生态圈的定义有两种,一种是以技术为导向的,另一种是以产品(或企业)为导向的。以技术为导向的话主要有以Linux操作系统为中心的开源生态圈,以Unix为中心的传统商业计算生态圈,以及以微软技术为中心的Windows生态圈。以产品(或企业)为导向的就比较多了,有些企业可以单独成为一个庞大生态圈,例如IBM以及收购了SUN的Oracle,也有数家企业组成的联盟生态圈,如微软+Intel的wintel联盟以及最近貌似正在瓦解的Google+Apple联盟。这两种定义把焦点落在了技术和产品层面,是一种狭义的定义。而之前Mark所讲的那个生态圈应该是指IT生态圈是一种广义的概念,它还将供应商、厂商和客户为参与者包含进来了,加入了更多商业元素。但不管怎么讲,各个我们定义的IT生态圈最终都是组成IT行业这个大生态圈的一分子。

      对于一个IT生态圈来讲,它涉及的范围可以很大,例如IBM所构建的IT生态圈除了包括IBM在全球的业务公司外,还要算上其全球的供应商和使用IBM产品的客户,几乎能囊括所有领域,因此就不难理解IBM新提出Smart Planet是多么符合IBM的商业定位了。而这种庞大的生态圈对社会所造成的影响也是相当的巨大,仅仅是IBM本身在全球的员工就将近40万,我们的产品在某些关键的社会领域起着重要作用。作为一个IBMer,有时会觉得自己就是一台推动社会发展的巨型机器中的一个小零件,身上需要承担比普通人更多的社会责任。IT生态圈中的一点小变化经常会出现蝴蝶效应,就如当年IBM开发了PC引发的那场革命,差点把IBM自己的命给革了。而最近由于Google凭借android系统进军手机领域而惹怒Apple这件事,使得这个原本就不够坚实的联盟生态圈面临着分裂危机。

      IT生态圈的衍化和发展,总是充满了戏剧性,之前SUN花了10亿美元收购了MySQL,就让我吃惊了一阵子,但是SUN并没有因此而凭借着自家刚刚开源的Solaris系统以及买回来的MySQL等开源产品挤入主流的开源生态圈从而扭转自身的颓势,股价已跌再跌,最终被Oracle收购了。SUN这家曾经辉煌的Unix服务器提供商被一家对开源并不太友好的公司吞并,从商业角度来看,算得上是双赢,SUN凭此获得了新生(至少没倒掉),而ORACLE手上有了更多竞争的筹码,软硬通吃的ORACLE这下子成为了IBM最强大的对手。只是对于我们这些对技术关注比较多的人来说,一个充满了工程师文化的公司以这种方式消失确实很可惜。

      只能说,IT界也是弱肉强食的地方啊。

Tags: IBM 业界 Posted in 业界时事

也来谈谈云计算

三月 21st, 2010 | 249 次阅读

      今天在网上看到关于IBM将与美国空军(USAF)合作建立实验性的云计算系统的新闻,这让我想起了前段时间公司CEO Sam Palmissano在被记者问及“Google 是否势不可挡”时,这位老板爆发道:“Google将为企业提供云平台吗?银行想在Google上运营吗?航空公司想在Google上运营吗?IBM能在Google上运营我们的供应链吗?Bharti Wireless想把自己都放到Google上运营吗?那些用着我们提供的系统的中国的银行想到Google上运营吗?俄罗斯中心银行网络想把它们都建立 到Google上吗?不!”实际上,IBM与Google所提供的云计算解决方案是有很大不同的。

      对我来说,云计算已算不上是新颖的概念了,但还是不明白为何这个概念在近几年会这么火。简单点来说,云计算就是将大量的计算资源与存储资源统一起来,提供合适的接口给用户使用,用户不需要关心这些资源的运作方式和内部架构,就可以按需来使用这些资源,就如同我们家里的自来水一样要用的多少就用多少而无需关心这些水是从哪里来的。这个“云”指的就是接口后面那那一堆机器、存储设备和网络,因为用户不需要去关心它们之间的组成架构,对用户来讲这是透明的,就如同在一团“云”里面。而与云连接的方式就是互联网,在“云”之前,就有一个范围更广的概念:“The network is the computer”,来自SUN Microsystem,它将整个互联网当成一台计算机,也就是一个“云”。

      IBM提出的云概念专门是针对于企业级用户的,这与IBM本身的企业定位相符合,IBM即将与USAF合作建立的实验性云计算系统展示了云计算进入军事领域的可能性。众所周知军事上使用的产品无论是性能、可靠性还是安全性都要比一般的民用级产品高出至少一个等级。如果这个用来支持国防和情报网络的云计算系统成功实施,那么就说明了企业部署这样的云计算系统在产品可靠性上是不会有问题的,而这是很多企业对云计算采取观望态度的主要原因,毕竟当一切都隐藏在云后面的时候,这个“云”就是一个庞大的单点。USAF选择建立云计算系统还有一个重要的考量,就是省钱。USAF虽然财大气粗,但很多新技术、新产品的预算超支严重,连F22战机的采购数量都被迫削减。相比传统方法,云计算的高效和灵活能以较小的代价提供更好的安全性,这也正是美军青睐云计算的主要原因。根据公司对外发布的资料来看,这种云应该是一种企业云,infrastructure和系统由IBM设计但由USAF来掌控。IBM现有的云计算产品主要这种企业云,因为对大企业或者关键的公共部门来讲,核心业务数据和IT infrastructure必须由自己来掌控。现成的产品有IBM蓝云解决方案

      而Google提供的云计算服务则是一种公共云,它最通用的云计算产品就是Google App Engine,用户可以自己用python语言或者java语言编写web应用放到上面去,按使用量来收费(有一定免费用量)。这种云对于个人用户或者小型企业来说,完全够用。我的独立blog就是架设在这上面的。所以说Google提出的云概念偏向于互联网计算资源,它面向的是所有互联网用户。类似的云产品(服务)还有Amazon的EC2。

      当然,云计算也有潜在的危险性,除了它是一个大单点之外,还会有一定的信息安全隐患(主要是公共云),这不仅仅要在技术上进行防范,也要在使用条款这种商业协议上甚至法律上进行约束。而且在公共云上运行的应用必须做好应急接管工作,当这个云出了问题的时候,能将上面跑的业务切换到云下面来运行,之前Google App Engine就曾经试过崩溃了数个小时(导致我的blog无法访问)。

      总的来讲,云计算是能带来一场信息技术革命的概念,虽然我们还不能预知这场革命将给业界带来多大的影响,但我们必须紧跟这场革命的步伐,做好准备,积极创新。

Tags: IBM 业界 Posted in 业界时事

使用winelib在linux下调用DLL

三月 20th, 2010 | 317 次阅读

      相信Wine这个工具对很多使用linux系统的人来说都不会陌生,它能帮你在Linux环境下直接运行windows程序(目前还不能做到100%支持)。但是很少有人知道wine所附带的开发工具winelib,它现在已经是用来编译Wine本身的工具了。使用winelib,我们可以编译可以使wine来加载的程序,这个程序既可以调用Linux下的POSIX库,也可以调用windows的system call。那么,我们就可以用winelib来编译一个需要调用windows环境的dll,但是在Linux环境下运行的程序。

      使用winelib来编译调用了dll的程序在源代码上,与为windows环境写的那种是一样的,唯一不同的是其编译方式。在这里我们有一个dll文件junk.dll,使用winedump工具对其进行解析:

$winedump spec junk.dll
Contents of junk.dll: 14168 bytes
1 named symbols in DLL, 1 total, 1 unique (ordinal base = 1)
Done dumping junk.dll
Export   1 - 'HelloWorld' ... [Ignoring]

      从winedump的运行结果可以看出,这个dll里面包含了一个名为HelloWorld的函数可供调用。同时会生成一份.spec文件(在这里就是junk.spec),里面记录了该DLL内可调用的函数名(不保含其原型)。

      这个HelloWorld函数的实现是:

1 DLLIMPORT void HelloWorld ()
2 {
3     MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
4     printf("%s\n","Test");
5 }

      也就是调用windows的消息框显示一段信息,之后在标准输出流打印出Test。

      现在我们写一个调用该DLL并使用这个HelloWorld函数的演示程序,代码文件junk.c:

01 #include <unistd.h>
02 #include <stdio.h>
03 #include <windows.h>
04 int main(int argc, char* argv[])
05 {
06 char bufr[256];
07 HANDLE h;
08 void (/*WINAPI?*/ *say)(void); 
09
10 gethostname(bufr, sizeof(bufr));
11 strcat(bufr, " says, 'Howdy World!'");
12 MessageBox(NULL, bufr, "Junk", MB_OK);
13
14 h = LoadLibrary("junk.dll");
15 if(!h) exit(1);
16 say = GetProcAddress(h, "HelloWorld");
17 //say = GetProcAddress(h, MAKEINTRESOURCE(1));
18
19 sprintf(bufr,"%d",say);
20 MessageBox(NULL, bufr, "Junk", MB_OK);
21 say();
22
23 return(0);
24 }

      这里可以看到,这个程序加载了junk.dll,获取了HelloWorld这个函数的地址,并执行了这个程序。接下来让我们编译这个程序,使用这个命令:winegcc -o junk junk.c ,这样就生成了两个文件:junk.exe和junk.exe.so,其中junk.exe是一个shell脚本,它会调用wine来加载junk.exe.so,junk.exe.so就是wine所要加载的二进制程序,所以我们可以用两种方式来运行这个程序,一种就是直接命令调用:$./junk.exe,另一种就是通过wine加载调用:$wine junk.exe.so。如无意外,这个程序会弹出三个windows风格的消息框,一个用机器的名义和你say "Howdy World!",第二个输出HelloWorld这个函数的地址,最后一个是这个函数中调用的消息框。

      这里说一下winegcc,它是winelib在gcc编译器上的一层封装,使其能编译出能给wine加载的二进制程序,用法和普通的gcc类似。而wineg++就是对g++编译器的封装,用法也和g++差不多。

Tags: 技术 Linux Posted in 技术杂项

公告栏

    欢迎使用RSS阅读器订阅本Blog的文章哈!^_^
    本站替代域名:yuhp.appspot.com
    教育网访问域名:edu.javayu.com