《异类》读书心得
最近读完了《异类》这本书,作者是格拉德威尔(Gladwell)。这是一本很薄的书,内容也多是以讲故事的方式,所以读起来会非常轻松畅快。
这是一本讲成功的书,以前我们都认为成功都是靠天赋 + ...
MOI 模型 - 读《成为技术领导者》
最近看完了温伯格的 《成为技术领导者》,本书英文名叫《Becoming A Technical Leader》。这是一本看起来很快,但是理解起来很慢的书,害怕自己看完书后过一段时间就忘了,于...
让我们再谈谈 iOS 安全
前言安全方面的话题总是聊不完的。这不,国外一家有名的专门攻击别人的安全公司 Hacking Team 自己被 Hack 了,结果有 400 多 G 的攻击资料泄漏出来,包括一些 0-day 的漏...
Apple Watch 使用体验
虽然做了多年 iOS 开发,但我算不上一个真正意义上的果粉,所以 Apple Watch 出来的时候,我并没有马上下单,而是等到周围有几个朋友买了之后,在征询过他们的意见后,我才决定下单。
我订...
基于 CoreText 的排版引擎:进阶
版权说明原创文章,转载请保留以下信息:
本文节选自我的图书:《iOS 开发进阶 》。
本文涉及的 Demo 工程在这里:https://github.com/tangqiaoboy/iOS-P...
基于 CoreText 的排版引擎:基础
版权说明原创文章,转载请保留以下信息:
本文节选自我的图书:《iOS 开发进阶 》。
本文涉及的 Demo 工程在这里:https://github.com/tangqiaoboy/iOS-P...
你会翻转二叉树吗?--谈程序员的招聘
事件回放2015 年 6 月 10 日,Homebrew 的作者 @Max Howell 在 twitter 上发表了如下一内容:
Google: 90% of our engineers...
谈谈苹果开源 Swift
在今年的 WWDC 大会上,苹果推出了 Swift 2,给 Swift 语言增加了许多新的特性,同时苹果宣布将开源 Swift 的编译器和标准库。虽然源码还需要等到年底才能放出,但不妨我们来聊聊...
打造 iOS 原创内容的生态圈
故事在说想法之前,我想先讲几个故事。
故事一:新杂志与《Tiny4Cocoa》我敬重的 tinyfool 刚创业的时候,做了一个 App 叫 「新杂志」,这是一个杂志聚合平台。与新杂志平台同期发...
苹果推出了官方的分析工具
苹果在五月一号这天,向开发者发送邮件,邀请参与他自家的分析工具的试用。虽然现在我们公司猿题库的帐号还处于排队等待的状态中,不过我们可以从苹果的介绍中看出这个工具的特点
无需额外操作
You ...
QCon 参会笔记
前言这两天在北京国际会议中心,QCon 全球软件开发大会正如期举行,我有幸参加了此次会议。QCon 此次参会的人数远远超过了主办方的预期,以至于提前关闭了报名通道。大会现场很多演讲人员爆满,现场...
《从 0 到 1 》读书笔记
我每天坐地铁上班和下班,在路上的时间加起来有1个半小时。但有一个好处是:在地铁上,你除了看书也没什么事情可干。于是,最近看完了《从 0 到 1》。这本书的作者是:彼得·蒂尔(Peter Th...
iOS 开发中的争议(二)
打算分享一些有争议的话题,并且表达一下我的看法。这是该系列的第二篇。
在本文中,我想讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写...
iOS 开发中的争议(一)
序言打算分享一些有争议的话题,并且表达一下我的看法。这是该系列的第一篇,我想讨论的是:类的成员变量应该如何定义?
在 Objective-C 的语言的早期,类的私有成员变量是只能定义在 .h...
流行的方法论 - 读《引爆点》
春节的时候看到了萧宸宇的博客中一篇名为 《读书笔记 「引爆点」》 的文章。受文章的吸引,于是把 《引爆点》 这本书学习了一下。
《引爆点》的作者格拉德威尔在书中主要讲解了他对于 “流行现象”...
谈谈 React Native
前言几天前,Facebook 在 React.js Conf 2015 大会上推出了 React Native(视频链接)。我发了一条微博(地址),结果引来了 100 多次转发。为什么 Re...
写iOS SDK注意事项
我发现即使是像腾讯、小米这样的大厂提供的 SDK,在质量和规范上也有很多问题,而且包括我以及我身边的很多朋友都被恶心到了,所以我就把这些注意事项总结出来,希望大家不要犯同样的错误。
注意事项一:...
使用蒲公英来做iOS测试应用的分发
前言我在 《给 iOS 工程增加 Daily Build》 一文中介绍过如何用命令行生成 IPA 文件以及通过 itms-services 协议 来让用户可以直接在网页上安装测试应用。但是这...
对《iOS开发进阶》一书的解释
《iOS开发进阶》虽然仅仅在互动出版社可以买到,还没有在京东和亚马逊上架,但是在 v2ex 上已经引起了一些讨论和误解,见 此贴。所以我想在这里,对本书的内容和定位做一些解释。
定位《iOS开发...
我是如何完成《iOS开发进阶》的编写的?
前言《iOS 开发进阶》 终于出版了,在架构师峰会的签售会上,首批 100 本图书在签售的两天很快就卖光了,前几天首先在互动出版社上架的首批图书也在一天内卖缺货了,能得到读者这么热烈地支持,我还...
解读2014之iOS篇:拥抱变化
版权说明本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
前言对于 iOS 技术领域,2014 年是变化巨大的一年。在硬件上,由于苹果发布了更大...
2014年个人总结
2014 年对于我来说是重要的一年,因为一方面我刚好年满 30 岁了,另一方面我的家庭生活和工作都经历了很大的变化。值得总结的包括:
通过分享,进一步提高了自己的技术影响力
创业进一步取得成绩...
《iOS开发进阶》即将出版
关注我博客的人也许发现了,除了每周一期的InfoQ约稿的《iOS开发周报》,我已经很久没有写iOS方面的原创文章了。这主要的原因是:我把周末的时间都用来筹划一本iOS方面的书,这本书叫做《iOS...
开源一个Key-Value存储工具类
前言还记得大学刚学数据库那会儿,天真地以为世界上所有的存储都需要用数据库来做。后来毕业后,正值NOSQL流行,那时我在网易参与了网易微博的开发,我们当时使用了有道自己做的“BigTable”— ...
写在创业两周年
一年前写了一篇名为 《写在创业一周年》 的文章,眼看创业已经两年多了,我就寻思着是不是再写一个创业两周年的总结。之所以拖了几个月,一是因为刚刚满两年的时候,我们公司刚刚拿下了 1500 万美元的...
适合码农工作时玩的游戏:Scrum
前言昨天遇到一个来自微软的面试者,在面试的最后,我简单介绍了一下我们团队使用一周一次的 Scrum 来做项目管理。他回答说:” 我在微软也用 Scrum,不过我们一周两次,时间在周二和周四上午,...
iOS开发如何提高
许多人在博客和微信上咨询我 iOS 开发如何提高,经过一番思考之后,我能想到如下一些提高的办法,我个人也是通过这些方法来提高的。
阅读博客在现在这个碎片化阅读流行的年代,博客的风头早已被微博...
WWDC2014,苹果的“软件”发布会
在今年的 6 月 2 日到 6 日,苹果照例举行了一年一次的全球开发者大会(World Wide Developer Conference,简称 WWDC)。由于去年大会门票在不到 2 分钟...
那些好用的iOS开发工具
版权说明本文首发于《程序员》杂志 2014 年 6 月刊,未经允许,请勿转载。
前言从苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜暴富的故...
专访《iOS测试指南》作者羋峮
版权说明本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
前言在 2014 年 QCon 北京 大会上,羋峮进行了他的新书 《iOS 测试指南》...
深入理解Tagged Pointer
版权说明本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
【摘要】:为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对...
用CocoaPods做iOS程序的依赖管理
文档更新说明
2012-12-02 v1.0 初稿
2014-01-08 v1.1 增加设置 ruby 淘宝源相关内容
2014-05-25 v2.0 增加国内 spec 镜像、使用私有 p...
技术人员如何坚持写作
我和朋友的故事这个月我给 InfoQ 网站、《程序员》 的投稿所获的稿费,加上去人人网分享技术所得到的礼物,一共有将近 3000 块。看到这个数字之后我自己都吓了一跳,不知不觉中,写作和分享...
iOS应用安全开发概述
【摘要】:iOS 应用由于其直接运行在手机上,相比运行在服务器的后台服务,更有可能被黑客攻击。本文将从网络安全、本地文件和数据安全、源代码安全三个方面,阐述 iOS 应用在安全性上遇到的挑...
专门针对越狱iOS设备的盗号木马出现
关于木马今天,国外的 iOS 开发者 @iOn1c 发现一个来自中国的开发者 “WANG XIN” 签名的 iOS 平台的木马插件,该插件是一个名为Unflod.dylib动态链接库,可以将...
从 Facebook 看移动开发的发展
从 Facebook 谈起Facebook 最近绝对是互联网界的新闻明星。它首先是进行了大手笔的收购:2014 年 2 月,Facebook 以 160 亿美元现金加股票,以及 30 亿美元...
Mac重装记录
前言上次将我的iMac硬盘换成SSD后,我是通过迁移助理将我的Mac Book Air的环境同步过去的,不知道为什么,半个月前出现了重启后电脑一直处于加转中的状态。尝试过了网上提供的以下方法都没...
NSNumber对象缓存以及Tagged Pointer
这是一次和 @onevcat 的技术讨论总结。技术点比较散,但是还都比较有意思。涉及的技术细节包括:
系统对象的缓存
Tagged Pointer对象
讨论一:autorelase对象按照苹...
使用brew cask来安装Mac应用
简介
brew cask
是一个用命令行管理 Mac 下应用的工具,它是基于 homebrew
的一个增强工具。
homebrew
可以管理 Mac 下的命令行工具,例如imagemagick
, nodejs
,如下所示:
brew install imagemagick brew install node
|
而使用上brew cask
之后,你还可以用它来管理 Mac 下的 Gui 程序,例如qq
, chrome
, evernote
等,如下所示:
brew cask install qq brew cask install google-chrome brew cask install evernote
|
ReactiveCocoa - iOS开发的新框架
本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
什么是 ReactiveCocoa
ReactiveCocoa(其简称为 RAC)是由 Github 开源的一个应用于 iOS 和 OS X 开发的新框架。RAC 具有函数式编程和响应式编程的特性。它主要吸取了 .Net 的 Reactive Extensions 的设计和实现。
ReactiveCocoa 试图解决什么问题
经过一段时间的研究,我认为 ReactiveCocoa 试图解决以下 3 个问题:
- 传统 iOS 开发过程中,状态以及状态之间依赖过多的问题
- 传统 MVC 架构的问题:Controller 比较复杂,可测试性差
- 提供统一的消息传递机制
自己动手给iMac换SSD
公司的 iMac 是 2011 年款的,经过 2 年的使用,现在已经变得比较慢了,用htop
看了一下,其实 cpu 占用率一直不高,主要是磁盘 IO 比较慢,所以考虑自己动手给 iMac 换一个 SSD。在此将整个过程分享给大家。
非换行空格在CoreText排版上的问题
分享一个在使用 Core Text 时遇到的问题。
问题描述
我们的猿题库界面因为有图片、公式需要混排,所以用的是 Core Text 实现的排版。
在使用中,发现一些英文题目的换行方式不对,
我们设置的是按单词换行,但是总是有些题目的换行并不是按单词的,造成显示上比较错乱,如下图所示。图中 unchangeable, study, falls 三个单词都被生生截断了,造成阅读上的不适。
作为码农,我们为什么要写作
在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除了借口没有时间外,大多没有意识到写作带来的收益。在他们看来,将自己学到的知识简单记录下来就足够自己需要的时候回顾了。而技术写作通常需要花更多时间,因为需要将技术的细节以及来龙去脉讲清楚。
不得不承认,这的确是一个事实,通常情况下,把一个知识讲清楚比理解它更难。那我们为什么要花时间写作呢?我想写作至少有以下好处。
2013年个人总结
2013这一年值得总结的有两方面的事情:一是技术分享和收获,二是创业感悟。
技术分享
我这一年在技术分享上投入了更多的时间,也得到了非常大的收获。
我主要的技术分享渠道包括:
个人博客。今年一共完成了24篇原创博客。相比于去年的36篇,少了很多。主要是因为很多精力分散到微信公共帐号上去了。不过今年文章的质量相比去年更高了,写了包括《Objective-C对象模型及应用》和《谈Objective-C Block的实现》这类比较深入的文章。
InfoQ网站 。今年一共完成了7篇发表在InfoQ 上的稿件 , 其中原创技术文章4篇,翻译技术新闻1篇,采访稿2篇。
如何写面向互联网公司的求职简历
前言
我在 IT 公司工作了六年,有着三年面试官的经历。在面试中,我发现很多人都不能写好一份求职简历,所以今天不谈 iOS 开发,谈谈如何写一份针对互联网公司的求职简历。
我主要想分享的内容包括:
- 简历的页数不要超过两页(最好一页)
- 删掉不必要的信息
- 如果你实在太牛逼,最多写 2 页
- 重要的信息写在最前面
- 不要简单罗列工作经历
- 列出你的工作中有价值的细节(有哪些技术上的困难等)
- 不要写任何虚假或夸大的信息
- 不要附加任何可能带来负面印象的信息
- 不要加照片
- 不要写政治面貌
- 不要写奇怪的爱好(打游戏,喝酒,抽烟)
- 不要写参加过某某培训公司的 iOS 培训
- 尽量用专业邮箱
- 用 PDF 格式
Xcode Debugger中的Icon符号的意义
你注意到了吗?在 Xcode 中,当你点击查看调用栈的时候,调用栈的每个方法前面都有一个 Icon,而且还有好几种不同的样子,如下图所示,你知道它们代表什么意思吗?
iOS开发工具-网络封包分析工具Charles
更新
本部分的内容写于2013年12月,2015年11月有更新,更新版的文章见:《Charles 从入门到精通》
简介
本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
Charles 是在 Mac 下常用的截取网络封包的工具,在做 iOS 开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。
因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
Charles 主要的功能包括:
- 支持 SSL 代理。可以截取分析 SSL 的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。
- 支持 AMF 调试。可以将 Flash Remoting 或 Flex Remoting 信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查 HTML,CSS 和 RSS 内容是否符合 W3C 标准。
使用Flurry来统计和分析用户行为
2015年11月更新
由于 Flurry 的后台在中国访问实在太慢,另外 Flurry 对中国区的 IP 类型判断不太准确(3G和Wifi无法准确区分),所以我现在不再推荐大家使用 Flurry 了。
不用 Flurry 之后,我们现在使用的是腾讯的 MTA 来做统计。
简介
本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。
Flurry是一家专门为移动应用提供数据统计和分析的公司。他们的数据统计分析SDK支持的平台包括iPhone, iPad, Android, Windows Phone, Java ME和BlackBerry。使用Flurry服务的公司包括eBay、Yahoo、Hulu和Skype等超过11万家公司,涉及的应用超过36万个。
利用Flurry提供的分析平台,我们可以很容易地自动统计出应用的使用情况,例如:
- 每天(每周或每月)登录用户数,应用使用次数
- 每天(每周或每月)新用户数,活跃用户数
- 用户的所在地、年龄、性别的分布情况
Flurry也可以自动统计出移动设备的分类情况,例如:
- 使用3G,Wifi的会话比例
- 使用iOS系统各版本(例如iOS6.0, iOS7.0等)的比例
- 使用iOS各种设备(例如iPhone4, iPhone5等)的比例
除了上面介绍的自动统计项目,Flurry SDK也提供了统计用的相关API,便于我们针对自己产品的特点,做针对性的统计。例如统计应用中某个按钮的按下次数,或者网络请求的平均响应时间等。
猿题库iOS客户端的技术细节(三):基于CoreText的排版引擎
前言
本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。
这是本技术分享系列文章的第三篇。本文涉及的技术细节是:基于 CoreText 的排版引擎。
猿题库iOS客户端的技术细节(二):答题卡扫描算法
前言
本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。
这是本技术分享系列文章的第二篇。本文涉及的技术细节是:答题卡扫描算法。