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

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

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%。从生物学的角度来说,知冷畏热,趋利避害,这都是为了提高个体的生存几率,但勤劳能有什么危害呢?为什么大脑总是会想方设法阻止我们长时间的思考或者劳...

WWDC 2017 iOS11 新特性 Drag and Drop 解析

WWDC 2017 刚结束,虽然如预期的一样,缺少意料之外的惊喜,但依旧有不少新的特性和 API 值得圈点。抛开 Core ML 以及 ARKit 这些影响深远的亮点不谈,目前抢眼的系统升级,莫过于 UIKit 中新增的 Drag and Drop 特性了。 拖拽的意义 在阅读本文之前,建议读者先亲手把玩下 Drag and Drop 的各种姿势,有过实际的操作体验,才能更好的明白一些 ...

Facebook model 库 Remodel 观感

Linus Torvalds 有句名言:”Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” 虽然不知道自己算不算的上是 “Good programmer”,但我对数据的重要性是深有体会,之前也写过几篇与 model 相关的技...

iOS 客户端 HTTPS 防中间人攻击实践

写篇文章介绍些以前在 iOS 客户端实践 HTTPS 安全的经历。 不同工程师写代码的习惯不一样,有些喜欢边写边查,即使在接触陌生的知识域时,也要先写一些代码,遇到难题再去 google 或者 stackoverflow 找答案,另一些则习惯在动手之前,先储备足够多的理论知识,在建立整体认知之后再定框架填细节。我个人建议初学者采用第一种方式,而对于有一定工作年限且寻求专业度提升的工程师来说...

TCP/IP 系列之包与流

最近工作有点忙,有些天没更新啦,趁着五一放假,接着写之前 TCP/IP 的相关话题。 前些天看到有人吐槽 TCP 粘包和拆包的话题,说所谓的粘包是新手发明出来的术语,有误人子弟之嫌。粘包一说,对我也是陌生的概念,第一反应可能由是英翻中导致的。比如 iOS 术语里将 GCD 翻译为大中枢派发,就显得怪异且难以适应,有些术语还是让它保持原汁原味的好。 在搜索相关话题之前,我一番脑洞,感觉粘包...

TCP/IP 系列之 TCP 流控与拥塞控制(一)

TCP 流控(flow control)与拥塞控制(congestion control),是我个人认为每个 iOS 工程师都应该熟悉的,价值含量极高的知识点。明白了三次握手,但是不了解流控和拥塞控制背后的设计原理,是不能够在简历上写「精通 tcp/ip」的。 Flow control 和 congestion control 的学习价值高,而且学习过程也会很有趣。掌握整个过程的意义,远超...

慢一点,焦虑少一点

上周末做了一件有趣的事,一名在职读者,在技术学习和提升上感到迷茫和焦虑,向我求助,最后二人通了一个小时的电话,他说明了现状和原委,我也以我的经历和角度,提了些或许有用的建议。 他的一些情况和心态,勾起了我曾经在学习上所经历过的一些困境,觉得可以写篇文章和大家分享下,如果你也有类似的经历和困惑,以下的文字或许能有帮助。 慢一点 这名读者在叙述自身情况的时候,我能从语气里感受一股明显的焦虑...

如何设计一个通讯协议

最近给 TKeyboard 增加了不少新功能,其中最有意义的部分是,通过蓝牙和 Wifi,配合 protobuf,在 Mac 和 iOS 之间建立了两条便捷的数据交换通道,算是打好了未来产品开发的地基,网络通道建立好了,后续的想象空间也大。 比如,现在可以将 iPhone 上 safari 正在浏览的网页,一键分享到 Mac 的 safari 上,比 handoff 更方便可靠。还可以在 ...

Hosted by Coding Pages