用Shell脚本批量裁剪App Icon各个尺寸

再一次忍不住了,一次一次自己剪裁上架需要的各个尺寸的Icon,虽然有些软件也可以自动帮你裁剪你的应用图标,但今天查了一下Mac中自带了sips工具 关于sips,在终端中直接执行可以出现以下信息: > sips 10.4.4 - scriptable image processing system. This tool is used to query or modify raster image files and ColorSync ICC profiles.

LaunchRocket使用小记

今天在微博上看到 @拓词Joey 推荐了一个OSX的PrefPane小工具,LaunchRocket,可以在你的系统设置里管理Homebrew安装的服务的小工具,不用再打开Terminal输入一系列Start命令启动什么的了。 捣鼓捣鼓,不知怎么滴打不开了,重新添加.PrefPane文件也不行,提示什么工具加载失败。然后用CleanMyMac看到LaunchRocket在 /Library/Preferencesa 目录下建立了一个文件 “com.joshbutts.launchrocket.plist”,里面存放着你的所有已添加服务的配置文件,如: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.

用宏提速NSCoding

还记得你要为每个类实现dealloc方法的日子吗?从头文件复制每一个实例变量到dealloc方法不只是很烦,简直是一场灾难。忘了一个实例变量?内存泄漏,有个含有30个实例变量的类,并且意外地释放了两次相同的实例变量?崩溃。 幸运的是,那种内存管理的日子已经过去了,但归档和解档(序列化和反序列化)对象仍然存在,那是有多惨地写下面的代码: - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; if(self) { _val = [aDecoder decodeIntForKey:@"_val"]; _obj = [aDecoder decodeObjectForKey:@"_obj"]; } return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_obj forKey:@"_obj"]; [aCoder encodeInt:_val forKey:@"_val"]; } 这不仅是代码惨,它容易出错,如果在方法中拼错了key会发现什么?要么你不保存这些数据要么不重新加载它,这两种都是错误的,是不明显的。然而你的应用程序其他地方会出错,而且你会花时间来追踪问题最后发现则是你的NSCoding方法中一个简单的拼写错误。

2014新年伊始:近期读过的好文推荐

年过的也差不多了,有一段时间没写字了。今天写写最近看的一些文章,附带一点自己的看法和理解。 二进制的世界:原文 一篇编程基础知识的文章,讲解了C、OC中的各种位运算,引申到OC中的例子如十六进制颜色值通过位移转换到UIColor,还有动画中的UIViewAnimationOptions属性,另外这篇文章(Cocoa中的位与位运算)也可以看看。 Block 还是代理 (Blocks or Delegation) :原文 翻译 今天刚读到这篇文章,Block还是代理,也是我一直想问的一个问题。这篇文章适合多读几遍,会有不同层次深度的理解,文中从各方面比较 Block 和 Delegation ,通过窥探苹果的做法试图找到正确的道路,下面简单提炼一下要点:

[Objective-C] NSArray的二分查找

二分查找(也叫折半查找),是至今应用比较多的一种搜索算法。速度快,比较次数少,在Objective-C中的NSArray至少有三种方法可以进行二分查找: indexOfObject:inSortedRange:options:usingComparator: CFArrayBSearchValues 自己编写二分查找算法 NSArray的二分查找方法 NSArray *sortedArray = ... // must be sorted id searchObject = .

[iOS] stringWithFormat 和 initWithFormat 有何不同?

都说Objective-C是一门入门简单,深入难的语言,一直觉得基础不是很牢固,所以这几天也反复在看Objective-C内存管理、ARC相关的东西,下一步准备看看OC的Runtime相关。 NSString NSString作为Objective-C的最基本的字符串类,从最开始接触iOS开发就用过它,那今天说的NSString中的Format实例化方法,也类似于C语言中的printf中的format格式化。昨天在看《10 iPhone Memory Management Tips》一文的时候看到文中为了提高效率用initWithFormat代替stringWithFormat,今天详细看看这两个方法: + stringWithFormat: – initWithFormat: 一个类方法,一个实例方法,仅仅是用起来可以少些两个字吗? For Example 下面来个For Example,在非ARC环境下,循环构造10w个NSString,内容一样:

Apache + Flask + mod_wsgi + Koding 部署小记

之前发现了Koding,一直没怎么注意,今天试用了一下练练手,也算是第一次在真正的服务器上操作,用它搭个Flask站点出来,一路也是坑坑包包啊,特别是Apache的配置,复杂的无脑,第一次搞还是推荐先看看Apache的文档。话说Koding还真是不错,虽然不能拿来当生产环境,弄弄玩还是挺好,特别是像我们这种新手来练手。用Koding的原话来说是这样: Koding is first and foremost a Development Environment, and not a Production Host. VMs Shutdown After Logout,Approximately 20 minutes after you log out, your Free VMs will shut down.

[分享] Basic HTML - 一款极简的Typecho主题

之前从Emlog迁移过来顺带也把自用的主题迁移过来了。草草寥寥把主题从Emlog的关键字替换成Typecho的,一路还算轻松。唯一是归档页面没迁移过来,因为在Emlog的时候是用的一个插件,这段时间空了也把归档页完善了。 想说一下其实Typecho的周边开发潜力还是很大的,用了几天Typecho感觉插件、主题比起Emlog还是要少很多,我想原因大概是因为官方没有出一个商店,想发布这些东西只能到论坛发帖,官方也只是收集了一些插件什么的放在了Github中,以至于还出现了一些民间收集库。 今天不小心我的多说评论代码也跟着push上去了,不好意思,没注意,这个主题没有原生的评论支持,可以使用第三方评论。 顺便这里建议下Typecho弄个商店,统一审核和收集插件和模板,这样会贴心很多,有个可靠的源。 预览: 因版权问题,已停止下载! 如果觉得喜欢可以到原作者处购买:http://themeforest.net/item/basic-ultraclean-responsive-wordpress-theme/4345245

收集几个Objective-C的HTML解析库

最近在着手开发《掌中站》iOS客户端的HTML解析这一块,老早就选用了Google去年开源的Gumbo,用的OC对Gumbo的一个封装OCGumbo。最近在开发的一个功能点就是想根据OCGumbo里面的各种Query、Find方法写一个自动解析器,解析某一页面的时候只需要读取一个JSON文件,根据JSON里面的操作符号就能在程序里执行对应的操作,这样就可以在服务器端动态地更新解析格式了。(目的是为了以防HTML发生变化而不用改程序代码,不可能为了一个HTML标签再向App Store提交一个更新版本),目前也不知道有没有类似的代码了?免得重复造轮。 Gumbo,一款纯C99库,解析时无需任何外部依赖。它主要是用来成为其他工具或库的一个构建块,如linters、验证器、模板语言、重构和分析工具。完全符合HTML规范,强大灵活的处理、简单的API,详情可看去年CSDN的报道。 下面是我收集的几款Objective-C 的 HTML解析框架,或者叫库吧。:] hpple - 一个Nice的Objective-C封装,支持XPath查询。 Objective-C-HMTL-Parser - 一个libxml的封装 Google Gumbo - OCGumbo , ObjectiveGumbo - Google开源大作 ParseKit - 这家伙有个官网,点进去看吧~ IGHTMLQuery - 一个轻量级XML/HTML解析库,构建于libxml,支持XPath, jQuery风格的语法 本来想针对上述几个比较给力的框架来个评测横比的,精力有限(其实是懒),目前个人比较喜欢Gumbo,树大好乘凉~

NSMapTable: 不只是一个能放weak指针的 NSDictionary

NSMapTable 是早在 Mac OS X 10.5(Leopard)就引入的集合类型。乍一看,这似乎是作为一个替换 NSDictionary 的存在,可以选择 strong 和 week 指针。在这篇文章中,我会告诉你为什么它也非常有用,及其垃圾回收机制以及它是如何做到 NSDictionary 不能(或不应该)做的事情。