CloudApp

推荐一个Mac下的不错的同步软件,可以方便地在公司和家里把文件放到服务器端,这样无论在哪一边都可以很容易地得到需要地文件。

CloudApp

从这个网址进入 GetCloudApp

注册一个帐号,下载安装客户端之后,运行之。会看到在右上角总多的图标中多了一个“云”的图标。

点击,打开Preferences->Account
输入你的帐号
然后 …..
把需要上传的文件直接拖上去就搞定了!

另外一个更酷的功能是保存书签。有时候在公司看到一个不错的blog地址,想要回家之后再看看,使用cloudApp就很方便了。
在Safari里使用热键(默认是Ctrl+Alt+Command+U)就把当前页面的地址保存到云端了。当然也可以使用拖放完成这个需求。

刚刚用上CloudApp没多久,说不定还有些未被发现的好东西。

限于Mac平台的话,用户群应该不会太大吧。祝CloudApp能够存活在墙内吧。

va_list

Just a reminder here.
For details please refer to page: http://www.delorie.com/gnu/docs/glibc/libc_675.html

void my_printf(const char *format_string, ...) {
     va_list arg_list; // a pointer to locate the begin of parameters
     va_start(arg_list, format_string); // the format_string is the last argument, arg_list points to the begin of parameters
     // ...
     // Set A Loop here to traverse along the arguments
     int a = va_arg(arg_list, int); // For example
     // ...
     va_end(arg_list); // Clean up
}

Invalid Context

按照《IPhone Game Development》开始学习Game Development。
当在一个Game Loop中进行Update和Render时,都需要得到CGContextRef画图形。如果直接调用Update和Render,
在其中调UIGraphicsGetCurrentContext()就会报Invalid Context。

按照文档中的说法,系统会维护一个CGContextRef的栈,而UIGraphicsGetCurrentContext()会取栈顶的CGContextRef
正确的做法是只在drawRect里调用UIGraphicsGetCurrentContext()
因为在drawRect之前,系统会往栈里面压入一个valid的CGContextRef,除非自己去维护一个CGContextRef,否则不应该在其他地方取CGContextRef

对于Game Loop这种设计,应该由drawRect调用Render进行View的重绘,Update只负责修改一些变量,在Render中进行判断和绘制。

Vim Encoding

每次新装VIM都得设置编码相关的选项,记在这里备忘吧。

encoding: VIM内部编码,也就是内容在VIM内部的表现形式。

fileencoding: 文件读写编码,在打开文件时VIM认为此文件是采用fileencoding所指的编码,于是会进行编码转换,转换为encoding所指编码。

fileencodings: 一个编码序列,VIM依次尝试其中的编码,看看是否能成功转换为encoding所指编码。
termencoding:terminal采用的编码,vim如果要输出到terminal,会将文件转码为termencoding所指编码。

在Linux下,八子一般采用

let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936

感谢:
http://edyfox.codecarver.org/html/vim_fileencodings_detection.html

awesome

又开始折腾系统了。前几天试图给自己装个黑苹果,想着下班之后也还可以玩玩Mac。下了包括海盗湾,东皇几个常见的PC破解版。着实浪费了一些生命和流量。结果也不尽如人意。各种常见的错误都碰到了。

最后也是峰回路转,装上了一个不知名的破解版,10.5的。接着花了好些时间,拖下来一个Xcode+Iphone SDK。居然要求10.6以上的MAC!无奈再尝试安装原版,但是死活进不去系统。现在淡定下来了,重新折腾Linux吧。久闻Awesome大名,刚刚开始试用,还没有尝到甜头。很是期待啊,哈哈。

本来想弄些IPHONE的东西到Blog上,可惜黑MAC装不上,看看什么时候能给自己攒一台Macbook吧,期待啊。

URL编码和字符转义

使用基于Web的服务时,可能会需要在代码里生成URL。这里就涉及到URL的编码 (Encode) 和 解码 (Decode) 。

一个小工具,用来手工Encode/Decode:
Tools/Dencoder

IPHONE下可以使用stringByAddingPercentEscapesUsingEncoding来编码。
但是实际使用中,编码后的URL仍然可能会无效。因为URL的编码方式并不唯一。参见:
Encode-Compare URLEncoding

NSString* escapedURLString = [unescapedString
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

不同的编码方式下,有些字符不会被编码。
所以,客户端使用什么样的编码方式应该和服务器端的解码方式配对。
可以使用CFURLCreateStringByAddingPercentEscapes
编码URL中参数部分后,再用前面stringByAddingPercentEscapesUsingEncoding编码,应该可以适应多数解码方式。

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes
(NULL, (CFStringRef)yourtext, NULL, 
(CFStringRef)@”!*’();:@&=+$,/?%#[]“, kCFStringEncodingUTF8);

使用中发现,除了编码问题以外,字符的转义也是问题,这里附上一些常用的转义处理:

Javascript下:
转义字符: ‘\’
$转义为\$

XML下:
& —-> \&
< —-> &lt;
> —-> &gt;
‘ —-> &apos;
” —-> &quot;

SQL下(MS Access):
# —-> ##
! —-> !!
‘ —-> ”