Profiel van 猪哥猪哥的BlogWeblogLijstenGastenboek Extra Help
    30-12-2007

    让Slickedit解析一些使用宏定义的数据结构

    通常在Linux内核代码里面,常常见到很多用宏来定义的数据结构。比如著名的list.h内就用LIST_HEAD(name)宏来定义链表头节点。还有诸如DEFINE_SPINLOCK(x)和DEFINE_RWLOCK(x)这类宏。

    数据结构一旦使用这类宏定义以后,大部分的代码分析工具(包括SE)都无法识别。比如LIST_HEAD(virtual_eth_dev),虽然是定义了一个初始化为链表头节点的virtual_eth_dev的数据结构。但是因为SE并不知道LIST_HEAD宏的具体含义,也就不会将这句当作数据定义来解析。

    通常在这些数据结构是全局的时候多不会有什么问题。因为这些全局数据结构通常在头文件内都会有一份声明,SE可以从这些声明里面明确获得数据类型正确进行解析(但是仍然只能懂得根据其数据类型进行自动提示,数据的定义位置还是不懂找)。但如果这些数据是static的没有声明的话SE会根本tag不到这个symbol,在编码的时候或多或少带来一些困难。幸好SE的作者早就有考虑到这点:对于C/C++的用户来说,可以自己轻松地将这类宏定义告诉SE让它在解析时展开做预处理,这样可以大大提高解析的准确性。

    1. 在Context Tagging Options里面,点击“C Preprocessing”按钮:



    2. 点击New,然后输入需要添加的宏定义名称:



    3. Slickedit会列出当前工程这个宏的定义,非常方便!你只要选一个就好了。其中带(define)的意思是仅仅定义这个宏而不管其内容:如果要添加的宏是作为#ifdef这样的编译开关用的话,用define可以让SE在解析时预先定义此宏。



    4. OK以后,SE就将新的宏定义添加到预处理列表里面。以后在Tagging的时候就懂得把这个宏按照这里的定义展开。把所有要添加的都添加完成后,SE会询问是否要重新Tag工程,按需选择即可(一般要让它retag一下)。



    如上添加了LIST_HEAD和HLIST_HEAD以后,SE就能正确识别这些数据定义了。
    25-12-2007

    Wrox的红皮书系列:Professional SlickEdit (Programmer to Programmer)

    Wrox的红皮书《Professional Slickedit》已经可以从网上下到了。因为这本书有电子版卖,所以可下载的是非扫描的高清晰PDF,质量非常好。



    Wrox印象中基本上没有怎么出过专门介绍工具的书,最近的一本应该是3年前的《Professional Eclipse 3》吧~~所以这本书被Wrox给印出来有点令人出乎意料,如果是O'Reilly的就比较正常~~毕竟EMACS和VI的书都是它出的。这本书属于Wrox的Programmer to Programmer系列。这个系列Wrox的说法是:“Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. ”。这话很有道理——SE确实是个“meet the real-world needs of programmers”的完美工具。

    这本书的作者本身就是个10多年的SE老用户,从恐龙时代的版本开始用起。一个软件能发展个10来年不稀奇,但是能让一个人用它10来年,这就令人敬畏了。书对应的是SlickEdit v12.0.2版本,比较新。

    书有将近500页,厚度可以从照片上来点感觉。书的读者定位于“experienced programmers working in one or more of the 40 languages supported by SlickEdit. No previous experience with SlickEdit is necessary”。即这本书的读者可以是0经验的SE菜鸟,但是不能是0经验的程序新手。



    快速翻了翻,内容并没有涵盖SlickEdit的所有功能,主要描述其常用和精华的部分,并且融入了很多作者的个人心得和经验(遗憾的是这些小tip埋没于冗长的step by step的指导文字中,只想看tip的话还不是那么容易)。其他一些高级特性比如GUI的SlickC宏开发等都没有提及。看来如果要写全,估计得这么厚的来个上下卷才行。

    另外令我惊讶的是我的大名竟然列在了这本书的致谢部分,真是令我大吃一惊啊哈哈,早知道应该和作者蹭一本来~~可惜不认识人家(╥﹏╥)
    22-12-2007

    修好歪屏的尼康E5900

    周末在家用了用相机,不慎又因为尼康5900该死的歪屏缺陷拍出了几张歪掉的照片来。看来即使是在取景时打开了水平辅助线,人因为歪掉的LCD引起的错觉也难以抵制的。

    现在这个尼康早就过了保修期N久,人老珠黄也看它很不爽,干脆拆开整整。用眼镜批拆的时候发现有俩螺丝拧得真是TMD紧,拧碎了我眼镜批一支才拧下来,郁闷!

    幸好机壳是金属的,所以螺丝卸掉以后没有任何暗扣就轻松摘下后机背。机背的排线长度还不错,正好可以让机壳成90°向上打开而不需要把两根排线拔掉。这样很好,我拆电子产品一怕塑料暗扣,二怕要拔排线。这个“耐克”牌倒是没有在这两个方面郁闷到我。





    拆开后发现E5900的LCD是CASIO制造的,难怪显示质量和以前的卡西欧相机一个德性分辨率很低。整个显示器确实是使用非常普通的双面不干胶黏在主板上的。这些不干胶因为用久了加上夏天出去玩的时候被太阳晒化的缘故,早就固定不住显示器了指头稍微拨一拨就能滑来滑去。

    至于为什么所有外屏的尼康5900/7900都是座歪,原因很简单:主板上有3个固定显示屏的金属挡片。其中两个在左边,一个在上边。下面和右侧是完全没有任何固定措施的。所以液晶屏要歪,就会左端向下向右“旋转”。这样无一例外都是左歪屏。

    至于修理,也是很简单:只要在三个定位挡片处注入双管树脂胶,把LCD黏住即可,简简单单就搞定了。摆正以后屏幕效果完美,不过正常的屏幕没啥好看的就不上了,倒是可以上一个歪屏的图片让没有见识过歪屏的同学开开眼。这图片不是我的但是我的修之前歪屏的效果和这个是完全一样的~~

    15-12-2007

    自制TFTP Server

    很早就想做个用起来比较顺手的TFTP Server。因为完全是用来下装程序调试用的,所以只想要个界面足够弱智,操作方便的TFTP Server。

    试过一些TFTP Server,要么就过于弱智,打开来只能换个目录其他什么也不能动。但是实际上调程序的时候经常要切换编译目录下载不同版本的bin,这个就用起来有点郁闷。再要么用一些支持设置多文件夹切换的,又太麻烦:非要用界面点开来选择目录,不能直接Ctrl+V一个路径进去,操作不够直接干脆。在要么就是做得如FTP Server一般界面吓人配置复杂的那种,作为中心服务器可能不错,但是个人拿来调试就太复杂了。

    昨晚花了俺整整一个晚上折腾出来一个勉强可用的版本,界面如下:

    这玩意的主要特点如下:

    • 界面要足够弱智。我这个点开马上就在当前目录下建立Server,任何配置都是多余。
    • 虽然界面弱智,功能也不能太弱。所以设计了6个收藏夹可以存储多个服务器根目录,只要简单点Tab就能快速切换。收藏夹保存在ini文件内。这样切换服务器目录非常方便。
    • 所有的路径输入都能支持直接粘贴。这样从Explorer或者是命令行Copy过来的路径直接贴进去就好了免得必须用鼠标选很烦。当然也支持用对话框选择。
    • 任务列表用红色标出失败的传输。
    • 支持最小化的系统托盘,并在最小化以后用Balloon提示状态信息,Ballon在3秒后自动消失:
     
    *