唐巧的博客

唐巧的博客

记录下自己学习的点滴

ReactiveCocoa - iOS开发的新框架

本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。

什么是 ReactiveCocoa

ReactiveCocoa(其简称为 RAC)是由 Github 开源的一个应用于 iOS 和 OS X 开发的新框架。RAC 具有函数式编程和响应式编程的特性。它主要吸取了 .Net 的 Reactive Extensions 的设计和实现。

ReactiveCocoa 试图解决什么问题

经过一段时间的研究,我认为 ReactiveCocoa 试图解决以下 3 个问题:

  1. 传统 iOS 开发过程中,状态以及状态之间依赖过多的问题
  2. 传统 MVC 架构的问题:Controller 比较复杂,可测试性差
  3. 提供统一的消息传递机制
自己动手给iMac换SSD

公司的 iMac 是 2011 年款的,经过 2 年的使用,现在已经变得比较慢了,用htop看了一下,其实 cpu 占用率一直不高,主要是磁盘 IO 比较慢,所以考虑自己动手给 iMac 换一个 SSD。在此将整个过程分享给大家。

非换行空格在CoreText排版上的问题

分享一个在使用 Core Text 时遇到的问题。

问题描述

我们的猿题库界面因为有图片、公式需要混排,所以用的是 Core Text 实现的排版。

在使用中,发现一些英文题目的换行方式不对,
我们设置的是按单词换行,但是总是有些题目的换行并不是按单词的,造成显示上比较错乱,如下图所示。图中 unchangeable, study, falls 三个单词都被生生截断了,造成阅读上的不适。

作为码农,我们为什么要写作

在程序员这个行业,坚持做技术写作的人一直比较少。我和身边的朋友沟通后,发现他们除了借口没有时间外,大多没有意识到写作带来的收益。在他们看来,将自己学到的知识简单记录下来就足够自己需要的时候回顾了。而技术写作通常需要花更多时间,因为需要将技术的细节以及来龙去脉讲清楚。

不得不承认,这的确是一个事实,通常情况下,把一个知识讲清楚比理解它更难。那我们为什么要花时间写作呢?我想写作至少有以下好处。

2013年个人总结

2013这一年值得总结的有两方面的事情:一是技术分享和收获,二是创业感悟。

技术分享

我这一年在技术分享上投入了更多的时间,也得到了非常大的收获。

我主要的技术分享渠道包括:

  1. 个人博客。今年一共完成了24篇原创博客。相比于去年的36篇,少了很多。主要是因为很多精力分散到微信公共帐号上去了。不过今年文章的质量相比去年更高了,写了包括《Objective-C对象模型及应用》《谈Objective-C Block的实现》这类比较深入的文章。

  2. InfoQ网站 。今年一共完成了7篇发表在InfoQ 上的稿件 , 其中原创技术文章4篇,翻译技术新闻1篇,采访稿2篇。

如何写面向互联网公司的求职简历

前言

我在 IT 公司工作了六年,有着三年面试官的经历。在面试中,我发现很多人都不能写好一份求职简历,所以今天不谈 iOS 开发,谈谈如何写一份针对互联网公司的求职简历。

我主要想分享的内容包括:

  • 简历的页数不要超过两页(最好一页)
    • 删掉不必要的信息
    • 如果你实在太牛逼,最多写 2 页
  • 重要的信息写在最前面
    • 你的联系方式
    • 你最重要的工作经历
  • 不要简单罗列工作经历
    • 列出你的工作中有价值的细节(有哪些技术上的困难等)
  • 不要写任何虚假或夸大的信息
    • 类似精通 java,精通 C/C++ 等
  • 不要附加任何可能带来负面印象的信息
    • 不要加照片
    • 不要写政治面貌
    • 不要写奇怪的爱好(打游戏,喝酒,抽烟)
    • 不要写参加过某某培训公司的 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 主要的功能包括:

  1. 支持 SSL 代理。可以截取分析 SSL 的请求。
  2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
  3. 支持 AJAX 调试。可以自动将 json 或 xml 数据格式化,方便查看。
  4. 支持 AMF 调试。可以将 Flash Remoting 或 Flex Remoting 信息格式化,方便查看。
  5. 支持重发网络请求,方便后端调试。
  6. 支持修改网络请求参数。
  7. 支持网络请求的截获并动态修改。
  8. 检查 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提供的分析平台,我们可以很容易地自动统计出应用的使用情况,例如:

  1. 每天(每周或每月)登录用户数,应用使用次数
  2. 每天(每周或每月)新用户数,活跃用户数
  3. 用户的所在地、年龄、性别的分布情况

Flurry也可以自动统计出移动设备的分类情况,例如:

  1. 使用3G,Wifi的会话比例
  2. 使用iOS系统各版本(例如iOS6.0, iOS7.0等)的比例
  3. 使用iOS各种设备(例如iPhone4, iPhone5等)的比例

除了上面介绍的自动统计项目,Flurry SDK也提供了统计用的相关API,便于我们针对自己产品的特点,做针对性的统计。例如统计应用中某个按钮的按下次数,或者网络请求的平均响应时间等。

avatar
唐巧
一个中年程序员,正在努力学习做业务