2013年11月11日星期一

goagent 403 does not have permission to get URL /2

goagent 不用访问 blogger


403. That's an error.

Your client does not have permission to get URL /2 from this server. That's all we know.


解决方法有两个:

1、需要重新更新gogent

2、或者使用google_hk

2013年11月7日星期四

osx 10.9 lipo 会卡在xcrun and lipo 无法继续


http://stackoverflow.com/questions/18667916/installing-psycopg2-has-it-stuck-between-xcrun-and-lipo


A more appropriate fix is:
ln /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo
xcrun -k lipo
Why: xfx's fix will likely break being able to use xcode-select to choose your toolchain in future versions of Xcode.
Pre- Mavericks and Xcode 5.x, /usr/bin/lipo seems to be the actual location of the actual lipo tool (trycat /usr/bin/lipo - looks like a big binary). In Mavericks / Xcode 5.x, lipo was moved to XcodeDefault.xctoolchain, and the binary at /usr/bin/lipo is a thin wrapper that appears to just callxcrun lipo (see nm /usr/bin/lipo), which in turn finds the location of lipo based on xcode-select.
Probably, new versions of xcode-select and/or Mavericks replace /usr/bin/lipo with the wrapper version. If you then try to use lipo with the 4.x toolchain xcode-select'd, it won't work, since the tool isn't contained in older versions of Xcode. Luckily, it's still included in iPhoneOS.platform for some reason, else you'd probably have to pull it from an uncorrupted <=10.8 machine.
It looks as if there was a lot of shuffling of tools between Developer/usr/bin and Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin in the 4->5 switch - it wouldn't surprise me if there were similar problems with other less-often-used command line tools as well.
Finally, the fact that xcrun hangs when it can't find a tool seems like an apple bug, plain and simple.

2013年11月4日星期一

Appledoc安装

appledoc是一个可以帮你生成Objective-C代码注释的辅助工具,appledoc所生成的注释API文档与苹果类库的API文档保持一致.
这可以让Xcode能够识别出我们自己的API文档.

参考:
1:Mac安装Brew
2:使用Objective-C的文档生成工具:appledoc

安装:
appledoc的Github托管地址如下:
此版使用Brew安装appledoc
命令:sudo brew install appledoc
如果你事先没有安装Brew,那么上面的命令肯定也就失效了.
安装Brew使用如下命令:
命令:curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1
注意上面命令中红色标识的路径.
你应该检查一下,你是否有这个路径,如下图所示:
如果没有,就手动创建一个以后,在执行安装Brew的命令.

检测一下Brew是否安装成功.
命令:brew
如果出现一堆brew的使用说明,那么说明已经安装成功了.
接下来回到我们的appledoc 运行以下命令:
命令:sudo brew install appledoc
在执行命令中,还是有可能失败.原因是指定的路径没有足够的读写权限.
/usr/local/bin is not writable. You should change its permissions.
那么去红色标识的路径中为其设置读写权限
完成后,此时卸载appledoc. 此时appledoc安装了一半,没有完全安装成功.
命令:brew uninstall appledoc
结束后,再重新执行一次安装.

不出意外的话,应该就安装成功了.
然后同样的检测一下,是否安装成功,调出appledoc的帮助文档.
命令:appledoc --help




使用:
通过以下命令来生成API文档
[csharp] view plaincopy
  1. appledoc --project-name yushuyi12345677     
  2.          --project-company "xiaoyu123"   
  3.          --company-id aaaa    
  4.          --output /Users/yushuyi/Desktop       
  5.          /Users/yushuyi/Desktop/MultiFTPTask/MultiFTPTask/Classes  
注:以上命令中分别需要提供5个参数,分别是:
1:工程名称
2:公司名称
3:工程ID
4:生成结果输出路径
5:扫描哪个路径下的类.
该命令会根据指定的路径将所有的的类遍历一次,当生成成功以后,appledoc会新建一个文本文件来记录生成情况,这个文件存放在上面命令中指定的--output.
执行上面的命令时,请确保删去了所有的换行符以后在执行.
生成的文档会自动存放在Xcode默认的文档目录里: 
~/Library/Developer/Shared/Documentation/DocSets
不出意外的话,进入到目录里面就可以看到刚刚执行命令以后生成的文档:

我们都知道按住option键位时,再点击某个方法或者属性名称

粉笔网iPhone端使用的第三方开源库

http://blog.devtang.com/blog/2012/10/09/3rd-libs-used-in-fenbi-app/


前言

粉笔网iPhone端使用了哪些第三方的开源库。

ASIHttpRequest

ASIHttpRequest 是一个被广泛使用的第三方网络访问开源库。用于提供更加友好的网络访问接口。相信很多搞iOS开发的朋友都用过它。 ASIHttpRequest 的主要使用文档可以参考这里
另外,由于ASIHTTPRequest的作者已经公开说明不再维护这个开源项目,并且该项目已经一年多没有更新了,所以我一直在寻找替代的开源库。不过现在暂时还没有找到更好的。

RegexKit

RegexKit是一个正则表达式工具类。提供强大的正则表达式匹配和替换功能。我们主要使用它来对类似微博的正文替换工作。例如将 @某某 换成带链接的,将图片的URL换成img标签等。
同时,开源库MGTemplateEngine也依赖于此库。附上RegexKit4.0的官方文档教程

MGTemplateEngine

MGTemplateEngine是一个模版引擎。我们主要使用它来生成单条微博页的内容。我们的单条微博页打算用UIWebView来显示,所以内容需要用模版渲染成HTML格式。MGTemplateEngine的模版语言比较象:Smarty, FreeMarker 和 Django的模版语言。
MGTemplateEngine的作者官方博客在这里
我们在使用时,对此开源库的Filter类进行了修改,主要增加了3个自定义的filter,用于提供我们的格式化时间,转义html和过滤空头象的用户的方式。

JSONKit

JSONKit是一个比较高效的JSON解析库。我之前比较过各大JSON解析库的性能(文章在此),JSONKit算是非常不错的,大概的使用示例如下:
1
2
3
4
5
6
#import "JSONKit.h"

NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
NSData *content = [NSData dataWithContentsOfFile:path];
NSDictionary *kitData = [content objectFromJSONData];
NSString *kitString = [kitData JSONString];

GTMNSString

GTMNSString主要用于转义HTML中的特殊字符。以防止XSS攻击。

FMDB

FMDB是一个sqlite数据库封装类,需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。在使用上非常简单。如下是一个例子:
1
2
3
4
5
6
7
8
9
10
11
NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString * dbpath = [docsdir stringByAppendingPathComponent:@"user.sqlite"];
FMDatabase * db = [FMDatabase databaseWithPath:dbpath];
[db open];
FMResultSet * rs = [db executeQuery:@"select * from People"];
while ([rs next]) {
    NSLog(@"%@ %@",
    [rs stringForColumn:@"firstname"],
    [rs stringForColumn:@"lastname"]);
}
[db close];

BBCustomBackButtonViewController

BBCustomBackButtonViewController 是用于在ios4上提供自定义的NavigationBar按钮的开源库。使用上异常简单,只需要让自己的ViewController继承它就可以了。
我对BBCustomBackButtonViewController进行了修改,主要是改动它的自定义的按钮的样式,使其和我们的风格一致。

MTStatusBarOverlay

MTStatusBarOverlay 是一个在iphone的顶部status bar显示消息的开源库。示例代码如下:
1
2
3
4
5
6
7
8
+ (void)showCompletedTextOnStatusBar:(NSString *)text {
    NSString * message = [NSString stringWithFormat:@"%@成功", text];
    MTStatusBarOverlay *overlay = [MTStatusBarOverlay sharedInstance];
    overlay.animation = MTStatusBarOverlayAnimationFallDown;
    overlay.detailViewMode = MTDetailViewModeHistory;
    [overlay postImmediateFinishMessage:message duration:2.0 animated:YES];
    overlay.progress = 1.0;
}
但是stackoverflow上说,有项目因为这个审核被拒,但是新浪微博明显采用了此UI方案,所以我们还是大胆用了这个库。后来,我们也顺利通过了审核。

MBProgressHUD

MBProgressHUD 是一个用于显示灰色的加载进度或结果的类。与系统自带的UIAlertView相比,MBProgressHUD由于背影是黑色的,所以视觉上不是那么强烈。我们主要用它来显示一些加载中的提示,以及一些自已会消失的操作结果(例如网络失败等)。

NSStringWrapper

因为自己有多年Java开发的经历,我还是不太习惯Objective-C连基本的字符串操作都要查文档,而我自己又记不住老长的方法名,所以我把Objective-C的字符串基本操作都封装成了Java风格的方法调用。这部分是很早前拿周末时间在家里写的,所以是开源的,源代码地址

EGOTableViewPullRefresh

EGOTableViewPullRefresh 一个开源的下拉刷新组件。我对它进行了改进,增加了强制刷新功能。

LoadMoreTableFooterView

LoadMoreTableFooterView 一个开源的上拉加载更多的组件。我做了少量修改,以便让它支持iPhone5的分辨率。

zepto.js

zepto是一个类似JQuery的javascript开源库,用于实现css选择器和一些dom操作。它的api几乎和JQuery完全一样,优点是体积小巧。

ejs

ejs一个js端的模版库。我们主要用于渲染一些UIWebview中异步加载的内容。例如笔记的评论,问题的答案。

总结

希望上面的开源库能对你有用。最后分享一张粉笔网全站用到的所有开源项目的图片。