RSS

Monthly Archives: 五月 2012

Mac OS X如何在Finder中显示所有文件

Mac OS X中有两类隐藏文件,一种是以 . 开头的,另一种则是系统认为一般用户无需了解的文件,如/etc, /usr。

.开头的文件在Terminal中ls -a就可以显示

如果想要在Finder中显示所有文件,那么可以在Terminal中执行如下的命令:

defaults write com.apple.Finder AppleShowAllFiles YES
killall Finder

第一行表示修改配置,在Finder中显示所有文件。第二行表示结束所有Finder进程,让Finder重启。


 
添加留言

Posted by on 五月 25, 2012 in Mac OS

 

Tags: , ,

JavaScript混淆,精简与“编译”

由于JavaScript在客户端解释执行,因此发布的代码有必要增加代码的执行效率,减少代码的长度(大小),最好还能降低可阅读性。

我个人认为,为了保密代码中的某些敏感信息而进行所谓的混淆其实意义不大,理论上来讲只要你的代码在客户端,无论你如何混淆,都不可能阻止别人获取敏感信息。所以我建议换一种思路,把核心或者敏感的部分放到server端。

对JavaScript实现精简或者“编译”,推荐使用下列服务:
https://code.google.com/p/closure-compiler/ ( http://closure-compiler.appspot.com/home )

http://www.minifyjs.com/javascript-compressor/

http://developer.yahoo.com/yui/compressor/

 
添加留言

Posted by on 五月 23, 2012 in resources

 

Tags: , ,

危险的dictionaryWithObjectsAndKeys

使用NSDictionary的时候,最常见的就是采用[dic dictionaryWithObjectsAndKeys:....,nil];初始化一个NSDictionary,但是这种用法也许会带来意想不到的问题。

比方说如下代码:

    NSString* string1 = nil;
    NSString* string2 = @"string2";
    NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:
                         string1, @"string1",
                         string2, @"string2",
                         @"string3", @"string3", nil];

string1为nil,不仅会使从dic中取string2时发现string2为nil,并且在取我们认为肯定不为nil的string3时,string3也为nil,这就有可能引发各种意外。

那么解决方案就是当object有可能为nil的时候,采用setObject:forKey:

    NSString* string1 = nil;
    NSString* string2 = @"string2";
    NSMutableDictionary* dic = [NSMutableDictionary dictionary];
    if (string1) {
        [dic setObject:string1 forKey:@"string1"];
    }
    if (string2) {
        [dic setObject:string2 forKey:@"string2"];
    }
    [dic setObject:@"string3" forKey:@"string3"];

当然还有更便捷的方法,使用setValue:forKey:

    NSString* string1 = nil;
    NSString* string2 = @"string2";
    NSMutableDictionary* dic = [NSMutableDictionary dictionary];
    [dic setValue:string1 forKey:@"string1"];
    [dic setValue:string2 forKey:@"string2"];
    [dic setValue:@"string3" forKey:@"string3"];

请注意,setValue:forKey:与setObject:forKey:不完全等同,最大的区别有两点:

1. setValue:forKey:只接受NSString*类型的key
2. setValue:forKey:当value为nil时,将调用removeObjectForKey:

 
添加留言

Posted by on 五月 21, 2012 in Objective-C

 

Tags: , , , ,

sftp下载文件夹中所有文件

sftp username@domain.com

登陆之后再要下载的文件夹中

get -r *

Tips:

大部分命令前面加l表示在本地执行,例如lcd, lls, lpwd。

 
添加留言

Posted by on 五月 21, 2012 in solutions

 

Tags: ,