十二月 12th, 2009

MiniTwitter

3 Comments, 我的作品, 未分类, by Allen Dang, 297 views

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

好了,秀一下界面吧。

image2

image3

More

九月 8th, 2009

小工具 – 天涯帖子抓取器

6 Comments, Qt, by Allen Dang, 634 views

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

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

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

下面就秀一下截图:

image

More

九月 7th, 2009

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

No Comments, Qt, by Allen Dang, 372 views

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

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

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

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

[160|8]

具体代码如下:

More

四月 23rd, 2009

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

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

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

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

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

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

三月 20th, 2009

我的Visual Studio 2008颜色配置。

No Comments, 未分类, by Allen Dang, 999 views

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

My visutal studio theme.

My visutal studio theme.

点击这里下载

十一月 3rd, 2008

发布PhotoInfo v0.6.

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

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

用法:

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

界面截图:

More

十月 28th, 2008

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

6 Comments, Cocoa, by Allen Dang, 1,988 views

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

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

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

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

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

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

十月 20th, 2008

Core Image 学习笔记 - 为照片加边框和EXIF信息。

1 Comment, Cocoa, by Allen Dang, 4,224 views

最近迷上了摄影,拍了很多照片之后就想上传跟大家分享。到色影无忌和几个摄影论坛上一看,发现很多人的照片都有不错的边框、水印和拍摄信息(相机类型、光圈、快门、拍摄日期等等….)。
因为用的是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, 808 views

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

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

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