唐巧的博客

唐巧的博客

记录下自己学习的点滴

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,便于我们针对自己产品的特点,做针对性的统计。例如统计应用中某个按钮的按下次数,或者网络请求的平均响应时间等。

猿题库iOS客户端的技术细节(二):答题卡扫描算法

前言

本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。

这是本技术分享系列文章的第二篇。本文涉及的技术细节是:答题卡扫描算法。

猿题库iOS客户端的技术细节(一):使用多target来构建大量相似App

前言

本人今年主要在负责猿题库 iOS 客户端的开发,本文旨在通过分享猿题库 iOS 客户端开发过程中的技术细节,达到总结和交流的目的。

这是本技术分享系列文章的第一篇。本文涉及的技术细节是:采用多 Target 编译方案来实现多个相似 App 的开发,以保证我们能够快速地推出多个相似课程的客户端。

Objective-C对象模型及应用

前言

原创文章,转载请注明出自 唐巧的技术博客

本文主要介绍 Objective-C 对象模型的实现细节,以及 Objective-C 语言对象模型中对isa swizzlingmethod swizzling的支持。希望本文能加深你对 Objective-C 对象的理解。

ISA 指针

Objective-C 是一门面向对象的编程语言。每一个对象都是一个类的实例。在 Objective-C 语言的内部,每一个对象都有一个名为 isa 的指针,指向该对象的类。每一个类描述了一系列它的实例的特点,包括成员变量的列表,成员函数的列表等。每一个对象都可以接受消息,而对象能够接收的消息列表是保存在它所对应的类中。

在 XCode 中按Shift + Command + O, 然后输入 NSObject.h 和 objc.h,可以打开 NSObject 的定义头文件,通过头文件我们可以看到,NSObject 就是一个包含 isa 指针的结构体,如下图所示:

动态下载苹果提供的多种中文字体

引言

在今年 WWDC 的内容公开之前,大家都以为 iOS 系统里面只有一种中文字体。为了达到更好的字体效果,有些应用在自己的应用资源包中加入了字体文件。但自己打包字体文件比较麻烦,原因在于:

1、字体文件通常比较大,10M - 20M 是一个常见的字体库的大小。大部分的非游戏的 app 体积都集中在 10M 以内,因为字体文件的加入而造成应用体积翻倍让人感觉有些不值。如果只是很少量的按钮字体需要设置,可以用一些工具把使用到的汉字字体编码从字体库中抽取出来,以节省体积。但如果是一些变化的内容需要自定义的字体,那就只有打包整个字体库了。

2、中文的字体通常都是有版权的。在应用中加入特殊中文字体还需要处理相应的版权问题。对于一些小公司或个人开发者来说,这是一笔不小的开销。

以上两点造成 App Store 里面使用特殊中文字库的 iOS 应用较少。现在通常只有阅读类的应用才会使用特殊中文字库。

但其实从 iOS6 开始,苹果就支持动态下载中文字体到系统中。只是苹果一直没有公开相应的 API。最终,相应的 API 在今年的 WWDC 大会上公开,接下来就让我们来一起了解这个功能。

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