从中兴事件看全球人才流动

湾区呆的久了,接触到来自世界各地的信息,加上自己半年多的经历,对人才流动这一社会现象有了新的认识,不一定对,说出来也不伤大雅。 我所说人才流动泛指一般意义上的人才,将门槛降低,姑且将我们这种受过高等教育,在新兴行业具备高效生产力的青年人算入在内。 科技公司尤其重视人才的吸纳和储备,这点国内外都一样,大公司在招聘的大年为了抢人,应届生开出的薪资可以互相竞争与老员工持平或倒挂。 湾区的科技...

如何检测 iOS app 卡顿导致的系统强杀

在之前的文章中提到过,现有市面上的 iPhone 老设备(特指 iPhone 6s 之前的设备)占有率高达 40%,iOS app 卡顿的发生率发生概率也很高。卡顿里有一类卡顿又尤其严重:主线程长期不响应而导致的系统 Watchdog 强杀。 现在很多 iOS 线上 App 都集成了卡顿检测工具,原理多是基于 runloop 的各个事件回调,这类工具可以检测主线程是否在某个 thresho...

iOS App 使用 GCD 导致的卡顿问题

最近在调研 iOS app 中存在的各种卡顿现象以及解决方法。 iOS App 出现卡顿(stall)的概率可能超出大部分人的想象,尤其是对于大公司旗舰型 App。一方面是由于业务功能不停累积,各个产品团队之间缺乏协调,大家都忙着增加功能,系统资源出现瓶颈。另一方面的原因是老设备更新换代太慢,iOS 设备的耐用度极好,现在还有不少 iPhone 4S 在服役,iPhone 6 作为问题设备...

Facebook 工作体验小记(一)

早该写篇文章介绍下在 FB 的工作体验,但呆的时间不够长,难免导致观点有失偏颇。到现在半年有余,差不多可以提笔了。 一般我写体验类文章,会习惯性的先列出大纲再润色细节,比如加分项一二三,减分项 ABC。遗憾且反常的是,至今为止我在 FB 的工作体验里,想不出一条不满意之处,如果一定要列出一条,那么我希望是 FB 可以新开个主打中国菜的食堂。不过也有可能我需要呆的更久,在更深度的体验里还隐藏...

iOS App 连续闪退时如何上报 crash 日志

为保障线上 App 的用户体验,我们一般都会对线上 App 的 crash 率做实时监控,一旦检测到 spike,可以即刻调查原因,但这一切的前提是 crash 日志能够准确上报。 crash 日志上报有两个难点: crash handler 安装之前的代码要绝对稳定 如果日志采集器还没成功启动就 crash 了,自然什么日志也无法采集到。这一点并没有太多技巧可...

iOS 程序员效率提升利器之 AppleScript

这篇文章和大家分享我平时工作时,用来提升效率的神器之一:AppleScript。 AppleScript 虽然是一种脚本语言,但在我看来是最接近自然语言和最不具备计算机特质的编程语言了。即使没有计算机基础,在阅读基础文档和几个样例脚本之后,马上就能动手写出实用的脚本工具。 我感觉很多使用 Mac 系统的同学可能都没意识到,与自己每天作伴的 Mac 系统上还有这么一个强大高效的脚本语言,可...

硅谷生活半年记

春节期间回了趟杭州,休了两个月的产假,后又赶回湾区开始上班。国内国外几次的切换,以及从生娃养娃工作的深度体验里,让我对两边的文化生活方面的差异有了更多感受。 从杭州小区楼下的蛋饼油条小店,到 Facebook 咖啡零食一应俱全的 Micro Kitchen,从建于九十年代绿树成荫斑驳老旧的楼房,到宽敞明亮错落有致的 Town House,从处处贴着二维码的移动支付,到刷信用卡返现的 Sho...

iOS 下如何一键调试 Push

来湾区工作的一项有趣之处,是可以和来自完全不同工程文化背景的程序员们碰撞交流,语言习惯,教育环境,思维模式,工程经验都存在不小的差异。来湾区半年有余,这段时间下来有一点我感受颇深,这边的程序员非常强调做一件事的效率。在遇到一个有挑战性的项目时,前期的设计讨论调整非常频繁以求最优路径抵达目标,平常做项目时,各个程序员都有自己的工具箱和小脚本来应付各类场景。目的是都花最少量的时间干最多的活,又或...

IM App 如何确保消息可靠抵达

IM App 是我做过 App 类型里复杂度最高的一类,里面可供深究探讨的技术难点非常之多。这篇文章和大家聊下消息可靠抵达机制。 如何确保 IM 不丢消息是个相对复杂的话题,从客户端发送数据到服务器,再从服务器抵达目标客户端,最终在 UI 成功展示,其间涉及的环节很多,这里只取其中一环「接收端如何确保消息不丢失」来探讨,粗略聊下我接触过的两种设计思路。 说到可靠抵达,第一反应会联想到 T...

iOS 代码使用 C++ 的 zero-cost abstraction 特性

不少 iOS 项目里都有 C++ 代码的痕迹,Objective-C 和 C++ 虽然都是 C 的 superset,但二者在语言特性上存在很大差异,Objective-C 的 runtime 使其语言的特性更丰富更易使用,但代价是会增加性能损耗以及编译后的 binary size。 很多成熟项目开发到一定阶段,会关注一些关键指标,比如 App size,现在超过 100 M 的 App ...

一些轻松好玩的英语学习辅助

来美之后,需要融入纯英文的生活和工作环境,融入的前提当然是扎实的英语基础。我自高中之后就没怎么正儿八经的学习过英语,都是零零散散的看些英文电影,不间断阅读些英文资料,勉强还维持着英语可用的水准。 不用说,刚来这边极度不适应,经常性听不懂别人说啥,也很难完整表达一个技术想法。这边老美陌生人之间还经常爱搭话,逛超市店员会问你是否需要帮助,吃饭服务员中途问你是否吃的满意,进电梯遇到陌生人也要偶尔...

2017 回顾

又到了年终盘点季,我的 17 年相较往年有很大不同。16 年忙着创业,埋头写代码,日子过的单调充实,当然也夹杂着对未来的种种担忧。到去年年底,心态发生转变,通过创业改变人生的激情逐步消退,家庭的责任感日益加重,方向开始朝着生活稳定性和未来的保障倾斜。用时下流行的话来说:再生猛的人生也有拿起保温杯的一天。 我在年末开始留意大公司的机会,决定将创业所投入的能量转移到更稳定可靠的职场里,看看自己...

iOS 代码里逻辑分支的处理

我们大致上可以将代码按执行方式分解为三类:Sequence,Selection,Iteration。 Sequence Sequence 即为按前后顺序依次执行,从第一行按序一直执行到第 n 行。比如: NSString *name = @"default"; //definition name = @"peak"; //assignment NSLog(@"name is %@", ...

iOS 代码的 taste(品味)

最近看了不少代码,想起写代码有意思的地方之一在于,实现同一个 feature,修复同一个 bug,不同程序员可以写出风格迥异的代码,甚至流程也不同,虽然最后都可行,从结果论的角度对用户来说是一致的。我们可以称这种差异为个人 taste,taste 有好坏高低之分,但有时候如何评定却很难有一个清晰准确的界定标准,一般来说代码是越简单越清晰越容易测试越好,但简单清晰容易测试又是另一个维度的标准,...

湾区一月见闻

从上次更新到今天在湾区一切基本布置妥当,已整整过去一个月。这一个月熟悉新环境的过程中,无论是生活还是工作上,都有颇多感触,终于能抽空提笔做点记录。 出发前就被朋友打过预防针,在国内的城市里生活久了,习惯了高楼商场和便捷的生活服务,一旦出国大多数时候都会有下乡的感觉。 入关 下飞机入海关那一刻我就明白此言不虚。湾区有好几个机场,我选择的旧金山机场显得十分老旧,过道狭小,硬件设施普遍具备年...

Facebook 之行,新的远方

下周即将离开生活了十三年之久的杭州,前往硅谷,成为 Facebook 的一员。 我曾假想过为了换工作,去新城市生活的各种可能场景,会是在上海、深圳或者广州?试想着各种融入新环境所带来的改变,唯独没想到这次会漂洋过海跑得这么远,去到一个这么陌生的地方,人生的际遇有时候当真难以预料。 从去年 10 月份收到 HR 的面试邀请邮件,到可以正式加入新公司,整整耗时一年,这恐怕是我有生之年历时最长...

有备者无患,徐徐以图之

我的第一份工作开始于 2008 年,作为 .NET 开发工程师加入了一家外企。当时主要使用 C# 做为后台语言,Javascript 写一些前端逻辑,JQuery 那时处于绝对的统治者地位,面试的时候还很流行问 Gang of Four 的设计者模式。一晃近十年过去,现在回想起来,刚参加工作的新鲜感还犹在昨日,但一些技术名词却显得久远而有年代感了。 大概在 09 年左右,我印象十分深刻,那...

进入新团队准备工作

程序员是个相对跳槽率相对较高的职业,虽然不鼓励频繁换工作(伤简历,HR 对这点很敏感),但要在同一家公司呆五年以上确实很难,总有各式各样的原因催促我们寻找新的环境。一旦进入新环境,作为技术人员需要从多方面调整自己,以求尽快适应,在短时间内让自己进入最高效的工作状态。 以我的经历,融入新环境大致可以从两方面入手,人与事,一半一半。 事 事,工程项目的方方面面都相关。 进入团队的第一件事...

iOS 端定位「网络问题」

作为客户端开发者,如果你的 App 中有图片上传功能,而且某天测试人员拿着手机告诉你图片总是上传不上去,或者进度条走的很慢,你的第一反应很有可能是「网络不好?」。网络到底是个什么概念,网速为什么会不好,如何预估当前网速是否合理,分析这类问题,背后需要建立全面且广阔的技术视野。 无论是上行数据通道(数据从客户端发往服务器)还是下行通道(数据从服务器发回客户端),一次完整的网络行为(比如 HT...

自律以自救

在一次逻辑思维的跨年晚会上,罗胖曾以「帝王」来形容活在当下移动互联网世界的人们。一个手机 App 可以让你足不出户,享受上百名厨师团队的服务,中饭想吃啥菜式、样品,输入框中一应俱全,光论规格,可能已超过帝王的御膳房。 我老婆曾在经历一周的忙碌疲惫之后,一脸自豪的跟我说,她可以周末在家御宅一整天,走动不超过一百步,完成所有日常行为。这一点也不夸张,早饭,中饭,新鲜水果,下午茶,晚饭,打扫卫生...

Hosted by Coding Pages