十二月 12th, 2009

MiniTwitter

4 Comments, 我的作品, 未分类, by Allen Dang, 714 views

我喜欢用Twitter记录自己的一些想法,所以一个小巧的Twitter发送程序就成了我手边必须东西。目前的Twitter客户端大多功能太多,且发送消息的功能大多只是附属,所以自己写了一个。

好了,秀一下界面吧。

image2

image3

More

九月 8th, 2009

小工具 – 天涯帖子抓取器

22 Comments, Qt, by Allen Dang, 1,428 views

老婆酷爱在天涯上看小说,莲蓬鬼话是她的最爱。这天她跟我抱怨,说帖子太长了,且里面回复太多,看起来很不方便。

所以我就答应了帮她写一个抓取天涯帖子内容的小工具,以方便她的小说阅读大业。

正好最近在学习Qt,便用它来练练手。Qt确实很方便,原以为代码量肯定要比C#多一倍以上,没想到竟然还少了,这样一个小东西只花了不到600行就搞定了。确实应了Qt的广告词,Code Less, Create More。

下面就秀一下截图:

image

More

九月 7th, 2009

使用Qt读取大文件最后一行

No Comments, Qt, by Allen Dang, 666 views

正在写的一个小软件需要这样一个功能,在开始一个新的下载任务前,先尝试在本地寻找是否已经存在同名文件。如果有,那读取文件最后一行文本,这行文本里面记录了上次下载的一些信息,然后从断点开始继续下载。

最后一行文本的格式很简单,就是[页码|行号],例如[160|8]就代表160页第8行。

读取的基本思路就是,先把文件指针移动到距离文件尾部20个字节的地方(这里留20个字节是因为我的最后一行信息很简单),然后循环读取每一行,最后一次读取到的就是最后一行文本。

目标文本文件最后一行如下:

[160|8]

具体代码如下:

More

四月 23rd, 2009

浅谈.NET Micro Framework的性能优化。

No Comments, Micro Framework, by Allen Dang, 665 views

(如有转载,请注明出处,谢谢)

由于工作原因,这几个月对.NET家族的新成员.NET Micro Framework做了一些研究和实践,对于这个可以直接运行在硬件上的小家伙还是很看好的。

它的可剪裁性,高定制性,和天生对硬件高集成度都让它的前途一片光明。当然,它现在还很年轻,就发布的SDK v3.0来看,它还有很长的路要走。

废话不说,就这几个月我用下来的经验谈谈在针对MF应用程序的性能优化吧。
More

三月 20th, 2009

我的Visual Studio 2008颜色配置。

1 Comment, 未分类, by Allen Dang, 1,596 views

花了好几天慢慢调出来的颜色,现在长时间看着眼睛也不会不舒服了。

My visutal studio theme.

My visutal studio theme.

点击这里下载

十一月 3rd, 2008

发布PhotoInfo v0.6.

8 Comments, PhotoInfo, by Allen Dang, 1,658 views

最近喜欢上了摄影,交流的时候发现大家都会把拍摄信息加到照片上,Windows下面用光影魔术手就可以方便的做到,但是Mac下面我没找到可用的(中间尝试了iWatermark,但是不好用)。
索性自己写个算了,实现添加相框和拍摄参数。

用法:

1. 拖放照片(必须是jpg格式)或者包含照片的文件夹到程序窗口。
2. 设置好输出路径后点击“开始处理”就好了。

界面截图:

More

十月 28th, 2008

用NSData玩转二进制文件的读写。

6 Comments, Cocoa, by Allen Dang, 2,819 views

今天看到有同学问如何读写二进制文件,那就顺道讲一下吧。
在Cocoa的世界里,所有与某个物件相关的东西都被该物件实现。好吧,我承认,这句话比较扯…. 还是上例子说明吧。

在通常的编程语言里面(这里指的是C/C++/Java/C#/Ruby/…),以下几个东西是如此关联起来的:

字符串类用来处理字符串存储,查找,替换…等等常规功能。
路径类用来处理所有与文件系统路径相关的事情,比如什么把路径分段,拿到文件扩展名,文件是否存在等等。
目录类则用来看某个路径的目录是否存在,是不是为空,等等。

这里一般会有三个类来处理各自逻辑相关的事情,但是,注意但是,Cocoa里面的构建法则不是这样的,它把所有与字符串相关的功能全部封装到了字符串类里面。
所以,NSString可以做的事情超多,从打开文件读取/写入字符串内容,到判断路径是否存在,等等,所有的事情,它都一手包了。
这样倒是方便程序员了,反正一旦有什么事情和字符串有点关系,找它准没错。

好了,讲了这么一堆,回过头来看这个问题,如何读写二进制文件?我写了各种类型的数据(整形,浮点,字符串)进去,怎么读出来?
这里提到了二进制对吧,也就是数据对吧,那么好了,找NSData就行了。

来看这段小代码,我准备了一个文件路径做演示,还有几个要写进去的数据。 More

最近迷上了摄影,拍了很多照片之后就想上传跟大家分享。到色影无忌和几个摄影论坛上一看,发现很多人的照片都有不错的边框、水印和拍摄信息(相机类型、光圈、快门、拍摄日期等等….)。
因为用的是Mac,找了很久,没有发现…(为什么每次写东西都是这个理由?)
好吧,废话少说,先把要做的事情分类。

1.调整图片大小,毕竟放到网上的图片不需要原图那么大。
————————————————–
以下是学习了Core Image之后的一点点实践。

NSImage *image = [[NSImage alloc] initWithContentsOfFile:path];
[image setScalesWhenResized:YES];
[image setSize:NSMakeSize(1000.0, [image size].height * (1000.0/[image size].width))];

这个方法确实可以调整大小了,但是缩小的图片质量非常差。花了很多时间仔细看文档,最后发现,Core Image其实就是对于Quartz 2D的包装,所有的绘图操作其实都值对于当前的NSGraphicsContext起作用,NSGraphicsContext本身有很多属性用来控制当前绘图的各方面。
而如果只是使用默认设置的话,绘图质量默认是最低。这里我们需要手动设置成高质量。
添加以下两行到代码开头:

//质量设置成高
[[NSGraphicsContext currentContext] setImageInterpolation:NSImageInterpolationHigh];
//打开反锯齿
[[NSGraphicsContext currentContext] setShouldAntialias:YES];

More

九月 6th, 2008

C语言练习 - 用筛选法算质数。

3 Comments, C, by Allen Dang, 1,100 views

这是《C和指针》第六章的习题,用筛选法算质数。因为用到了动态数组,所以需要gcc 3.4 以上版本编译。
More

九月 2nd, 2008

重新开始学习C语言的第一段小程序 - del_substr。

5 Comments, C, by Allen Dang, 1,154 views

看的书是《C和指针》,现在回头再看C,有了很多新的体悟,也让我开始觉得脑子抽筋。告别太多年的指针让我死去活来,非常不习惯,好在多年养成的习惯还在,也不需要赶时间,慢慢来吧。相信啃下了指针之后就会顺滑很多了。

下面这段代码是《C和指针》第六章的一个习题,写出来很是花了我一番力气。又一次体会到了那种为写一行代码抓掉n根头发的感觉。。。。。
中间为了调试,又花时间学习了gdb,让我这个被IDE惯坏的人惊艳了很久。好东西啊!
More