Soul Orbit

I'll take a quiet life. A handshake of carbon monoxide.

原创文章,转载请标明出处:Soul Orbit
本文链接地址:近期随想:科技发展的终结

最近看了一些视频,世界进步的真是好快。

希拉・尼伦伯格:用假体眼睛治疗失明 [Link]

Google Glass [Link]

Anthony Atala:三维细胞打印机打印肾脏 [Link]

看到这里,我不由得开始乱想,现在的科技已经发展到了现在这种程度,学科的分支已经如此的多,想学通多个分支已经相当的难。那到底什么时候才是科技发展的尽头呢?是不是很幼稚?:D,不要当真,乱想嘛。

Read more »

前段时间读了《程序员修炼之道》,读之前以为这本书估计基本是在重复《Unix编程艺术》,《编程珠玑》,《重构》等等里面的各种思想,结果我发现我错了,这本书完全不是那么一回事。其他的书说的只是代码或工程的哲学,而这本书除了讲述工程方面的哲学之外,还在讲述程序员应该如何规划自己的人生。看完之后确实是受益匪浅,越看到后面,越觉得这世间的万事万物其实是相通的。事物的表现或许不同,但是背后的规律却是如此的相似。

1. 修行啊,属于程序员的修行

不知道大家有没有这样的感觉,时间总是那么的不够用,想要学的东西太多,学习的速度太慢,有时候还不一定有激情。我们没有龙珠里面的时间与精神的小屋,也没有岛国的时间停止器,修行是一辈子的事情,而且有时候没有想象中的那么简单。

1.1. 重中之重:注重实效

这四个字是书中最关键的几个字,在书中频繁出现,仿佛作者写这本书就只是想将这四个字潜移默化给大家一样。方法和过程都因人而异,但是只有注重实效是永远不变的。

1.2. 投资并管理好你的知识

曾经有一个同事F对我说:“一个技术人员最不可或缺的是什么?技术。如果没有技术的,那其他的东西,如人际,都没有意义,因为那些都只是加分而已。”。这句话我觉得说的很对。所以,一个技术人员在修炼自己之前,首先需要有一个意识:你的知识就是你的资产,学会如何经营他。在这本书里面,作者给出了如下几个建议:

  • 定期评估已有资产,并进行投资
    定期的回顾你已经学习到的东西,并找出其中你遗忘的或者你想学的,以后会有用的内容,进行学习。说不定,以后这些知识就真的能够帮到你。

    书中推荐的几个目标是:

    • 每年学习一个新的语言,从新语言中学习新的解决问题的思想。
    • 每季度看完一本技术书籍,专业领域当然不能拉下。
    • 当然也要看看非技术书籍,和你打交道的他们都是人,不要什么时候都纯技术。
  • 多元化
    多元化投资是长期成功的关键,谁也不知道以后的市场会有怎样的突变,偶尔去看看别的方面,对自己是有好处的。也许你现在很熟悉C++了,那么尝试着去看看动态语言吧。如果你已经做了两三年Windows上的开发了,那么去看看Unix吧。分散的投资到最后总会有一处会收到回报。

    注意,这并不是让大家乱学知识,什么都不深,看着这段时间语言排行榜一变,就一股脑钻进去了。多元化的投资的前提是,你已经有一个擅长的专长或领域了。

  • 平衡风险和回报
    学习和投资一样,有风险有回报,管理好学习的风险,不要学了很久,也许带来不了任何回报,开阔眼界是好的,但是也要注意,你的时间是有限的。不要瞎忙活。

  • 主动联系大神们,向他们学习
    互联网带来的最大的好处就是将所有人和事物的关系都拉近了,主动的寻找你这个方向的大神,并向他们请教,也许他们不会马上回复你,组织好自己的问题,耐心一点,礼貌一点,总会有结果的。

Read more »

这几天旅游去了一次日本,跟着旅行团,几天之内晃悠了大半个日本,所以路上非常的紧张,而且还很不幸的遇上了台风,导致风景自然就没有那么好看了,不过这一趟还是不虚此行的。

第一天,我们在成田下了飞机到了酒店,刚到酒店,台风就登陆了,雨开始哗啦啦的下了起来,但是即便这样也挡不住我们一群人想要撒欢的心。下午自由活动的时候,我们自己坐了1个半小时的地铁到了东京塔,登上塔上的时候,天已经黑了,正好在上面俯瞰东京的夜景。东京塔上是一个很浪漫的地方,特别是在晚上,要是带上MM一起去,真是一件非常舒服的事情,可惜这次我没有,感觉真是格外的寂寞。
japan-tokyo-tower

当然,在东京塔上看台风也是有一番别样的感觉,那种冲击的感觉,实在是相当刺激。听说最顶层的眺望台还会被风吹得晃动,幅度可以达到1m!

Read more »

Mirror 0.2的x86版本已经膨胀到了793KB了,这让我觉得很好奇,到底是什么东西在疯狂的膨胀呢?实在想一探究竟。
于是杯具的事情发生了:Mirror的方向终于还是跑歪了,偏离了窗口,朝着编译器的方向走了弱弱的一小步。

加载pdb,就可以看到代码段大小的分布。
mirror-pdb

发现还是stl膨胀的比较猛,特别是map和vector。但是没有想想中的那么多,代码只有400多k,还有300多k估计是资源什么的,这个可能要等写完pe分析了之后才能知道了。

当时在写这个功能的时候,我想到的方法有两种:

  1. 使用dbghelp.dll提供的Symbol Api使用这种方法来写的话,需要将dll加载起来才能进行分析,但是实际上,我们需要的内容在pdb文件里面就已经都有了,所以这么做就有点多此一举了。
  2. 自己手写pdb的分析类
    虽然较为简单的分析代码,应该可以从breakpad中找到,但是我还是觉得这种方法太蛋疼,难道就没有现成的库来使用么?这不像是Windows的风格啊。

正当我纠结的蛋疼的时候,幸运的事情发生了,无意中在vs中发现了一个的pdb分析库:Debug Interface Access SDK。这个库随着vs的发布而发布,反正Mirror也只有开发人员才会用,所以基本上机器上应该都有vs,所以就直接使用这个SDK来实现了。

这个库里面有两个最主要的类:

  • IDiaDataSource:提供通过Exe,dll和Pdb加载调试信息的接口。功能类似于IDiaSession的类厂。
  • IDiaSession:通过IDiaDataSource创建,通过这个Session可以获取文件内部各种详细的调试信息。

关于这个SDK,微软已经给出了非常好的使用方法,所以这里就不罗列代码了,大家可以照着这个step by step来学习使用。
另外微软还提供了一个完整的实例程序Dia2dump展示Dia的方方面面:http://msdn.microsoft.com/en-us/library/b5ke49f5

今天来看博客的草稿箱,发现这篇文章已经放置有将近一年了,本来是2011年8月份的时候,写天津之行的,结果一直放到现在。
一晃一年过去了,走了一些地方,满足了一些自己的好奇心,原来在上海,没有去杭州。在深圳,去了香港,没去澳门。现在来到了北京,周边城市什么的还是去看看比较好。就先去了天津。

当时还是由于T哥家在天津,想着还能有个伴,就带着MM和T哥一起去玩了两天。去的时候,我对天津的印象只有两个:竹板这么一打呀,别的咱不夸,夸一夸咱们那个狗不理包子!

到了天津算是去了不少地方:瓷房子,五大道,意大利风情街,劝业场。不过最搞的还是古玩街。
tianjin

嗯,原来只听过泥人张,结果。。。这。。。。。简直就是张家村呀~

Read more »

原创文章,转载请标明出处:Soul Orbit
本文链接地址:玩了一天就实在忍不住要吐槽暗黑3了

难得有时间,玩了一天整的暗黑3,感觉不知道要如何表达,有些内容实在忍不住要吐槽一下了。
p.s. 我的游戏时间才一天,对游戏的理解肯定不深,下面这些都只是我的个人YY而已,暴雪出品,必是精品,这句话我还是坚信的。如果说的有什么地方不对,欢迎各种指正。

1. 写在前面

现在的电脑游戏已经越来越简单,这是真的!以前,你见过中间休息一下就能补满血的FPS游戏么?你见过杀第一个小怪就弹出什么类似于“初出茅庐”的成就么?你见过走几步就弹一个还带视频的教学的RPG么?你见过按一个键就能发大招的KOF么?而现在这种简单的趋势在暗黑3中更是表现的淋漓尽致。
另外,我实在觉得3里面有太多2的影子,以至于让我产生了一种在玩2的新资料片的感觉。。。这。。。应该不太正常吧。。。
好吧,现在我们来细细的聊一下我觉得的各种槽点吧~

2. 故事背景

暴雪的CG依然是那么的给力,每到CG开始我都特别激动。但是故事背景还是那么的单纯,具体是什么,你懂的。在暗黑2的时代,毕竟大家见的少,弄一个出来很新鲜。但是现在这种RPG已经遍地都是,所以感觉总是缺乏新意。当然,我们可以说暗黑3的剧情必须要继承暗黑的传统去发展,所以才不会有特别大的变化。不过即便是这样,我还是觉得少了点什么。
可能是对暴雪期望太高,毕竟暗黑2是一个里程碑。

3. 人物设定和游戏操作

现在我总共也才玩一天,我接触到的也还是一些最简单的部分,比如最浅显的人物设定和基本的游戏操作。

3.1. 游戏大厅

在暗黑2中,一旦你登录到战网中,首先看到的是一个战网大厅,大家可以在里面聊天,组团,约着一起打怪,要么刷巴尔,要么刷莫非斯托,大家都很high。
但是在暗黑3中,这一切都没有了,取而代之的是一个自动加入房间的入口。这算什么?!欢乐斗地主么?而且就连斗地主也没有取消大厅啊!这样多不利于大家交流啊。

Read more »

在发布了0.1 Preview版本之后,又折腾了一个月,Mirror v0.2 Preview 2终于诞生了。

这一次的发布主要是让界面可以自由缩放了,这样能适当的缓解一些界面太大导致的调试困难。另外还增加了一些小功能,并且修复了一些bug。

由于加入的部分功能在64位的机器上只有64位的API才能正常工作,所以之后的Mirro可能都将发布32位和64位两个版本,后面我会尽量想办法将两个版本合并。

欢迎您点此乱入反馈各种意见和问题,或者点此捐助作者鸡蛋灌饼,支持作者继续开发~

1. 下载地址

Mirror v0.2 Preview 2 (0.2.69.102)

Read more »

由于前段时间经常在各种奇奇怪怪的窗口相关的问题上纠缠着,而spy++的功能又总是不那么尽如人意,所以就在业余的时间,写了这么一个非常简单的小工具,能查看和修改窗口的一些信息,方便测试窗口,避免每实验一下,都要重新编译工程带来的痛苦。

1. 下载地址

Mirror v0.1 Preview (0.1.21.101)

2. 基本信息

Mirror的目标是成为一个足够绿色,对开发人员足够友好的观察窗口的行为的小工具。现在的Mirror还很简单,只有两个主要功能:窗口操作和热键管理,希望他以后会慢慢强大起来。但是Mirror是一个单纯的孩子,它并不想成为Spy++,所以暂时不会添加关于Hook窗口消息的功能。

软件主要包含如下文件:

  • mirror.exe:软件主程序
  • mirror.ini:软件配置文件,在软件第一次启动时会自动生成在exe所在目录下。

本来打算将配置文件生成在appdata目录下,但是这个软件本来只是一个很小的工具,实在没有必要。

如果有兴趣的,也可以点击下面的捐赠页面,让作者每天都能吃上好吃的鸡蛋灌饼,帮我增加继续下去的动力。
捐赠页面:https://me.alipay.com/bigasp

Read more »

**说明啊说明:**本人纯属小菜,对Objective-C神马的完全的不懂,这篇文章纯属扯淡,各位大大路过,欢迎各种指教~

今天一个同事对我说,他花了两个晚上的时间,啃完了Objective-C。我表示非常震惊,这种速度,应该是为了避免跟不上工作进度,穿越回来的时候选早了几天。于是接着我们就围着Objective-C侃了起来。

他说他看到Objective-C里面的一些特性非常好玩,于是说给我听,比如:

这是一个很神奇的特性,虽然我完全没有看过Objective-C,但是听大致的描述是这个意思:只要我们拥有某个类的头文件和其对应的静态链接库,那么我们就可以对这个类进行扩展,比如,给这个类加一个成员函数。

这种用法,对于基本只在C++里面转圈的我来说,确实也是第一次听到,觉得相当新鲜,于是就开始想了:C++里面是不是也能做到这件事情呢?

让我们来开始尝试吧!给一个名为Test的类添加名为Func1的成员函数。

Read more »

这篇文章是接着上篇文章继续聊的,Chrome的代码实在太多,每一个东西单拿出来都可以说很很多,单就一个breakpad都说了两篇。恩,不过也许是我太啰嗦了。

1. UI控件库(Control)简介

我们知道Chrome做这一套皮肤引擎是为了替换掉Windows原生的控制UI的方式,所以这个皮肤引擎上怎么能没有控件呢?所以在建立好各种基础的UI元素和默认处理之后,Chrome在上面开始封装各种基础的控件,比如button等等。

其相关代码主要分布在src/ui/views/control目录下。

为了进一步的方便开发,Chrome的UI控件库中包括了很多基础的控件,这些控件现在包括如下几种:

  • button:基本的按钮控件和其常用的变种,类似于CButton。
  • combobox:下拉列表和原生的下拉列表,类似于CComboBox。
  • menu:菜单。
  • scrollbar:滚动条。
  • tabbed_pane:封装了自绘的和系统原生的Tab分页控件,类似于CTabCtrl。
  • table:封装列表控件,类似于CListCtrl。
  • textfield:封装输入控件,类似于CEdit。
  • tree:树形控件,类似于CTreeCtrl。
  • 其他:Label,进度条,分栏等等等等。

这些控件中有一些并不一定是全部自绘的,而是使用系统原生的控件,比如tabbed_pane,tree和table。按照Chrome的文档来看,Chrome团队应该并不喜欢使用系统原生的控件,所以从长远来看,这些代码应该是中间代码,毕竟很好的实现一个这样的控件还是比较复杂的,所以Chrome就暂时使用着原生的控件。

另外还有一种我们在控件库中找不到,但是却十分重要的控件:容器。

Chrome的皮肤引擎有一个特点:万物皆容器。所有的控件都继承于一个同一个基类:View,所以所有的控件都可以有子元素。在Chrome里面,你可以建立一个其他什么都不做的View,只用它来排布他的子元素。用过GTK的朋友们肯定对GtkHBoxGtkVBox这个类有一定的印象,这两个类对辅助控件的布局是很有帮助的。在Chrome里面,你也可以使用类似的用法来辅助控件的布局,而且在UI里面还提供了几种基础的布局方法来帮助大家开发。

Read more »
0%