有多色 - 开发小记

某一天无意在微信中发现一款 HTML5 的小游戏,当时感觉挺新颖的,在一群色块中找到那个具有一点色差的,玩了几把感觉比较有意思,那么移植到 iOS 上来玩玩吧? 于是花了一下午用 Objective-C 写出来了一个简单版,确实比较简单,本来想拿 SpriteKit 练手写这么个东西,后来发现比较牛刀小用,于是直接用 UIKit 开整了。 放两张之前 App Store 的截图:

海岛风情 - 泰国普吉岛六日游

人生需要走走停停,那样才不会错过路上的风景。 就像我们每天步履匆匆的上班下班,可身边有些人却不知道城市长什么样子,旁边的人都在做些什么…这都是匆忙带来的遗憾。 期待了一个月的普吉游,总算在五一前划上圆满的句号,第一次出国门门,第一次真正意义上的旅游,应该好好记录下来,回首往昔时再看看应该是很不错的一件事。本想在每天行程结束在酒店就把把游记写下来,可惜没有电脑,手机打字简直不能忍。 整个行程最大的感触就是 “中国游客太多了”,而且大妈大叔居多,走到哪都是,商场、机场、酒店、海滩、饭店… 另外一个最大的感触就是 “会说中文的泰国人太多”,可能是因为在旅游地区,几乎所有的小商小贩、店家、船家、服务员都会说中文,至少会几句简单的;有在一个化妆品店看到很奇特的一幕:一个泰国店员用着流利的普通话在跟一个中国人介绍某某化妆品,“啥啥品牌,补水,效果咋样咋样…您适合….”,顿时感觉走到了国内商场… 出行前也算做了一些功课,由于是公司定的旅游团和行程,拖拖踏踏整个流程很没有节奏,直到出行前两天才大概直到具体行程安排,很懊恼啊…因为这次出行主要在泰国普吉府,于是提前做好了大部分准备工作,由于准备比较充足,后续玩的也比较顺畅。 用 iOS 自带的 <提醒事项> APP 就可以很好的列出出游备忘录,还可以多人共享查看和编辑,真是很方便呢。

EGOCache 源码解析

今天说说一款叫 EGOCache 的开源项目,一个简单、线程安全的基于 key-value 的缓存框架,原生支持 NSString、UI/NSImage、和 NSData,也支持储存任何实现 <NSCoding> 协议的类,可以设定缓存过期时间,默认是 1 天;ARC、基于 Block,同时支持 iOS 和 OSX 平台。

日语五十音假名临摹校验算法

这是一篇躺在笔记本里接近两年的技术笔记,今天正好想起了,编搬过来分享一下 这是在学校的时候做日语五十音APP的临摹模块中一个技术点,当时也是纠结了一阵子才总结出方法的,遂记录以纪念之~ 需求 大致需求是要在手机上实现类似传统毛笔字临摹字帖练习的功能,画出暗隐的底文,然后每一划的 起笔点 和 落笔点 给出红圈提示,规定起落在指定红圈区域中,才算正确,并给出下一划的提示,以达到简单的正确性临摹检测。当然,这里只是简单的只识别首尾锚点(红圈),如果要增强正确性检测,可以每一笔多增加几个检测锚点。 预览 原理 每个假名最多4笔,也就是最多8个点 开始的时候提示第一个落笔点,触摸后提示第二个点,也就是第一笔点结束点,松开后判断两个点是否在范围(圆圈)内,如果都在点话,表示这一笔临摹大致正确,取消第一笔点这两个提示圈,然后就开始第二笔,如此循环… 要实现此功能肯定要有一个标志变量来保存进度,也就是写到第几笔了,不然写到后面会干涉前面已经正确的笔画。 还需要事先录入所有需要临摹的字符检验点坐标集合,当时另外做了一个小工具,用于自动生成 点 / 松 坐标并输出至文件以便程序读取 (如果手动取点每个字符也太折腾了) 实现 用的【ACEDrawingView】来作临摹板,稍作修改,添加两个协议函数来返回出开始触摸的坐标和起指(抬起)的坐标。 把所有的点保存到一个数组,对应每个点的提示圆圈也保存到另一个数组。 一个标识变量(okNumber)存储当前写到第几笔了。 代码 -(void)touchBegan:(CGPoint)point { beganPoint = point; if (okNumber == 0) { if ([self isInRound:point and:[pointArray[0] CGPointValue] in:kRadius]) { [self.

[iOS] UITextView 追加文字自动跳到顶部解决方法

最近在做一个项目里遇到类似于网游公共对话窗口的文本框,由于需求比较简单,就用了 UITextView 实现,再配合 NSAttributedString 可以很轻松地实现颜色、字体等自定义;但是当我重新赋值设置 TextView 的 text 或 attributedText 属性时,会自动滑动回顶部,但我需要 TextView 超出屏幕始终定位在底部,于是我用 scrollRangeToVisible: 方法在 Append 后手动滑动到底部,可是还是会先由系统滑动到顶部,再滑倒底部,这个动画看起来很龊,于是开始了漫长的求解寻找之中…

Cocoa 新的依赖管理工具:Carthage

说到 iOS 的依赖管理工具,大家一定首先想到的是 CocoaPods ,不错,CocoaPods 确实是一个很好依赖管理工具,已然成为了 Cocoa 依赖管理的标准,丰富的支持库、文档等等,CocoaPods 相关的文章有很多,这里就不一一赘述了。 今天要介绍的是一款新的依赖管理工具,名曰 “Carthage”,名字有点难理解,简单方便,完全独立,不修改 XCode 项目文件或配置。 简介 我之前很少用 CocoaPods,很大一部分原因就是因为麻烦,仅个人感觉,需要牵扯 XCode 项目文件;而 Carthage 就很好的解决了我之前的烦恼,轻耦合,更灵活;使用 xcodebuild 工具来编译依赖项目成二进制 Framework,再引入到项目中去。

新年快乐!

新的一年,落日期得落 2015 了,希望不会像以前一样一段时间内还写错年份… 昨天晚上去解放碑兜了一圈,差点没被挤死…早上起来就看到上海滩踩死了三十多人的新闻心里一寒,我这也算是经历生死听跨年钟声啊。 这里是12点的时候随手用手机录的一段视频,大家也来感受下重庆解放碑跨年的气氛:

博客主机换到搬瓦工

在 V2 上看到很多人推荐搬瓦工,也就是 bandwagonhost,正好之前保罗主机赞助的一年空间要到期了,于是拿信用卡刷了台 Basic VPS - Unmanaged - 5G PROMO V2 ,不知怎么这个档的VPS没有出现在官网的列表中,只能通过链接进去,隐藏入口?配置如下: CPU :1核 内存:512 MB 流量:500 GB

在 Koding 上搭建 Shadowsocks

之前用的一个别人分享的 Shadowsocks 被停用了,一上午没好好上个网。无奈之际正准备在 Digitalocean 上自己搭建一套 Shadowsocks 服务端的时候,又想起了 Koding,一个支持在线编程的免费 VPS,唯一遗憾的是该服务会自动断线,不能常驻,也许这就是免费的限制。 Koding 允许建立一个免费的虚拟机,配置如下 1 Core 1GB RAM 3GB Total Disk

我的 Xcode 插件单

开始用XCode6了,之前5的插件都无效了,写了一天代码还是感觉不顺手,原来真是失去了才懂的插件的珍惜。正好又要都装一遍,所以就整理一下写上来,网络上有很多收集XCode插件的帖子,多而全,这里只是列出我正在使用的一些,以作分享而已。 其实列出来的每个插件最好加张图片就一目了然了,我就省得麻烦了,大家想看预览图可以点进链接,基本上都有的。 VVDocumenter-Xcode - 及其方便的三斜杠加注释,也支持 Swift 了。圈内知名 iOS / Unity 开发者 onevcat 大大的作品,也是我接触的第一批优质 iOS 开发者博客,永远走在技术最前沿… KSImageNamed-Xcode - 也是很方便并且我使用频率很高的一个插件,自动在 imageNamed: 方法后面列出项目里所有的文件名,带缩略图,选图的时候就不用先去看是哪张图片,再复制个名字过来粘贴了。 FuzzyAutocompletePlugin - 也是一个重量级插件,现在没了它已经没法儿好好写代码了,有了它 Cocoa 里长长的方法名再也不用烦恼了。XCode 默认也带了代码自动补全,可是你必须一个字母不错地拼写,特别是在写 TableViewDelegate 那些方法的时候,总是记不完全名,而前面几个字母筛选总会出现一大堆头似尾异的方法,无奈只能再人工筛选(我的上下键啊~)。这个插件支持模糊匹配,输入一个方法名的前两个字符,再输入后面可能出现的一两个字符,很快就精确定位到这个方法了,高效酷毙了。 ColorSense for Xcode - 做UI的时候用的比较多,UIColor 或者 NSColor 的方法会弹出色盘,colorWithRed:green:blue:alpha: 的时候还会有个小的颜色角标,赞! HOStringSense-for-Xcode - 有图,点进去一看就明白了,代码编辑器里的字符串编辑器,粘贴大段 HTML 字符串之类的很方便,自动转义。 CocoaPods for Xcode - 集成在 Xcode 菜单中的 CocoaPods 插件,可以方便的从菜单中运行几个 CocoaPods 主要命令,并在 Xcode 的 Debug Output 处输出状态,有了它再更新 pod 就不用再开终端了 正是这些有心的开发者的付出,才让更多的开发者能优雅高效的工作,致敬!