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 可以让你足不出户,享受上百名厨师团队的服务,中饭想吃啥菜式、样品,输入框中一应俱全,光论规格,可能已超过帝王的御膳房。 我老婆曾在经历一周的忙碌疲惫之后,一脸自豪的跟我说,她可以周末在家御宅一整天,走动不超过一百步,完成所有日常行为。这一点也不夸张,早饭,中饭,新鲜水果,下午茶,晚饭,打扫卫生...

iOS 真机访问 sandbox 目录的各种姿势

我一直知道,要做成同一件事,程序员们的方式往往五花八门。所以这次就一个问题在微博上征集答案,果然得到了许多不同方案,和大家分享下。 平常调试一直有看日志的需要,我们一般将日志文件存放在 sandbox 的 Document 目录下,之前我如果要查看某台设备上的日志,一般是按如下两种方式: 方式一:使用 iTools,Mac 端的 iTools 可以访问真机 App 的完整目录,虽然 iO...

iOS weak 关键字漫谈

weak 关键字的运用在 iOS 当中属于基础知识,在面试的时候问 weak 的用处,就像两个 iOS 程序员见面寒暄问候一样普通了。 weak 的常见场景是在 delegate,block,NSTimer 中使用,以避免循环引用所带来的内存泄漏,这是教科书式的用法。 编程语言是工具,语言特性只是工具的特性,工具怎么用在于使用者。weak 关键字的方便之处绝不局限于避免循环引用,适当脑洞...

懒惰三问

在偷懒这件事上,我们人类是绝不会偷懒的。 我时常在想,为什么懒惰会是我们的天性,为何造物主会将其编入我们的基因序列。如果人人都勤快些,都乐于强健体魄,忙于学习工作,精于发明创造,那么建设社会主义的砖瓦早就多到有剩,民族复兴可能也已完成 99.99%。从生物学的角度来说,知冷畏热,趋利避害,这都是为了提高个体的生存几率,但勤劳能有什么危害呢?为什么大脑总是会想方设法阻止我们长时间的思考或者劳...

Hosted by Coding Pages