进入新团队准备工作

程序员是个相对跳槽率相对较高的职业,虽然不鼓励频繁换工作(伤简历,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 更方便可靠。还可以在 ...

TCP/IP 系列之重新认识 IP 地址

TCP/IP 系列第三篇,关于 IP 地址。这是我最有意愿分享,也最有趣的一个话题。IP 地址有意思的地方在于,虽然只是一个简单的 IP 地址,短短的 4 个字节,32 bits,里面包含的知识却是森罗万象。智者看山,目之所及,胸中自起万千丘壑。知识底蕴够丰富,才能窥见一个 IP 地址里所隐含的「花中世界」。 预热 在开始之前,需要做一些基础知识的预热。要对...

今年第一个独立 App,TKeyboard,也是第一个开源项目

在咖啡馆耗费了数个周末之后,终于将这个灵光一闪的点子变成了一个实实在在可以运行的 app。同时意味着年初制定的第一个小目标达成,完成了 2017年的第一个独立 app。 在app上架的同时,我决定将代码全部开源,除了兑现去年年底的承诺之外,我相信代码本身的价值,要高于 App 的功能,开源能带来更多知识的碰撞和增长。去年开源给我带来了不少乐趣,希望今年能有更好的成绩。整个项目涉及到一些比较...

TCP/IP 系列之 Header 篇

这是 TCP/IP 系列的第二篇,阅读目标是建立对网络包结构的初步认识。 上一篇里,我们提到一次完整的 TCP 会话其实是一个字节流,只不过我们可以按照一定的规则来切割这个字节流,从而划分出一个个的网络包。我们经常说抓包分析网络故障,这个抓包里所指的包在不同的语境下其实意义并不相同,首先我们得对包的构成形成具象的认知。 再看七层协议 刚毕业那会,大家都喜欢在简历上写「精通 TCP/IP...

TCP/IP 系列之初印象

如果有人问我推荐技术类书籍,我个人首选一定是【TCP/IP 详解】原版。这种大部头的经典之作里所包含的知识,说是浩如烟海也不为过,每次重新翻起总会有一些新的体悟和收益。经典的好处在于,它描述的一般是通用的计算机问题,可以帮助读者形成通用的计算机思维,而不局限于某一领域或某一场景,常看常新。 当然这本书的厚度也到了让人望而生畏的程度,如果着急短时间内啃完,多半会由于无法完成目标的沮丧半途而废...

技术文章的阅读姿势

阅读技术文章可以说是我们程序员的日常之一,Peak 君每天也会进行定量的阅读。特写一篇小文分享下心得,介绍下过去几年,在纠正阅读习惯上所做的一些努力和取得的成果,或许可以帮助一些朋友,节省少许阅读时间,提升一点学习效率。 差不多两年前,我开始搭建 Android 相关的知识体系。最开始的想法是从基础知识的积累开始,正好这几年社区的技术分享盛行,「掘金」、「开发者头条」、「简书」等渠道上每天...

闲聊 Hash 算法

最近读了一篇好文:【微信高并发资金交易系统设计方案——百亿红包背后的技术支撑】,其中关于高并发性能问题的解决方案中,有应用 hash 算法的思想。想起公众号后台里断断续续有读者提起算法方面的问题,觉得可以写篇文章聊聊算法中的 hash 算法。顺道科普下算法与数据结构的重要性。 开讲前,先跑题闲聊下程序员的技术功底。我常说每个程序员都有自己独特的技术视野和知识盲区,不同程序员之间很难因为某些...

四十以后,何处而安

之前是 34 岁被离职,这次是 45 岁必须退休,华为又一次用年龄挑动了众多程序员的神经。老问题又在耳边回响起来,程序员这门手艺到底能干多久,能做出多少价值来?这问题,值得每个阶段的从业者持续思索和探究。 这自然也包括 20 岁出头的初入行的朋友们,处于这个年龄段看待这个世界,还是一片生机勃勃、新鲜有趣、充满无限可能的,进可以跻身创业大军一搏富贵,退可以去 BAT 颐养天年。20 岁到 4...

Hosted by Coding Pages