代码改变世界

用 Raspberry Pi 架设加密 DNS 客户端

2019-09-07 07:19 by Cat Chen, 19 阅读, 收藏, 编辑
摘要:Cloudflare 宣布使用 1.1.1.1 作为 DNS,并且强调隐私保护。由于 Cloudflare DNS 支持 DNS-over-TLS 和 DNS-over-HTTPS,这使得加密 DNS 成为了热门话题。 因为操作系统往往不支持加密 DNS,所以要使用加密 DNS 必须使用一个加密 D 阅读全文

iOS Workflow 分享 - Debug Action

2019-09-07 07:11 by Cat Chen, 5 阅读, 收藏, 编辑
摘要:有时候我们想要知道别人的 app 在调用 Share Extension 时提供了什么类型的数据以及具体数据是什么,我们可以自己在 Xcode 里面写个 app 去接收别人 app 的数据,但我们也可以用 Workflow 内置的「View Content Graph」来展示数据。相对于自己写个 a 阅读全文

iOS Workflow 分享 - Create QR Code

2019-09-07 07:10 by Cat Chen, 7 阅读, 收藏, 编辑
摘要:上次我分享了一个 Scan QR Code 的 Workflow,这次我分享一个正好相反的。如果我要分享一个 URL(或者是一段非常短的文本)给别人,我就可以用这个 Workflow 来生成 QR Code 图片然后发送给别人。 如果你还没有安装 Workflow,你可以先去免费下载安装上。然后打开 阅读全文

iOS Workflow 分享 - Scan QR Code

2019-09-07 07:07 by Cat Chen, 9 阅读, 收藏, 编辑
摘要:很多时候我们无意识地用微信扫描一个 QR Code,然后无论打开的是什么我们用就是了。我经常会好奇到底 QR Code 编码的是什么信息,到底是一个 ID 呢,还是一个 URL(可能是 deeplink)呢,还是一个 JSON 呢。所以我做了这个简单的 Workflow,先把 QR Code 的纯文 阅读全文

Heroku + Node.js + HTTPS

2018-07-02 05:54 by Cat Chen, 314 阅读, 收藏, 编辑
摘要:昨天把 biz-to-me 升级到支持 HTTPS 了,为此研究了一下如何让 Heroku 上跑的 Node.js 应用支持 HTTPS。我发现并没有任何文章描述这个具体的流程,只有零碎的信息,所以在此记录一下。 首先,Heroku 应用要支持 HTTPS 必须要是付费的等级,最便宜的是每月 $7 阅读全文

赴美工作常识(Part 6 - 绿卡排队)

2016-05-19 08:28 by Cat Chen, 2249 阅读, 收藏, 编辑
摘要:上一篇《赴美工作常识(Part 5 - 绿卡优先级)》解释完排队的优先级是怎么确定的,以及 PERM 和 I–140 表的意义,接下来就要解释一下队具体是怎么排的以及排到之后的 I–485 表申请。这里必须要有免责声名。因为我不是移民律师,所以我只是说我的理解,法律问题还是需要咨询律师的。 I–48 阅读全文

赴美工作常识(Part 5 - 绿卡优先级)

2016-04-19 12:17 by Cat Chen, 2593 阅读, 收藏, 编辑
摘要:这个系列的第一篇《赴美工作常识(Part 1 - 签证)》是三年前写的,过了这么久这个系列终于要继续下去了。接下来当然时讨论绿卡的事情了。跟讨论签证一样,这里必须要有免责声名。因为我不是移民律师,所以我只是说我的理解,法律问题还是需要咨询律师的。 由于绿卡涉及到排队,所以必须解释优先级。这个优先级就 阅读全文

如何捕获和分析 JavaScript Error

2014-03-17 05:58 by Cat Chen, 8564 阅读, 收藏, 编辑
摘要:前端工程师都知道 JavaScript 有基本的异常处理能力。我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常。但估计绝大多数前端工程师都没考虑过收集这些异常信息。反正只要 JavaScript 出错后刷新不复现,那用户就可以通过刷新解决问题,浏览器不会崩溃,当没有发生过好了。这种假设在 Single Page App 流行之前还是成立的。现在的 Single Page App 运行一段时间后状态复杂无比,用户可能进行了若干输入操作才来到这里的,说刷新就刷新啊?之前的操作岂不要完全重做?所以我们还是有必要捕获和分析这些异常信息的,然后我们就可以修改代码 阅读全文

Facebook 发布「流程」

2014-03-13 08:38 by Cat Chen, 4184 阅读, 收藏, 编辑
摘要:时不时就会在面试过程中碰到有候选人问 Facebook 是否采用 Scrum 之类的敏捷方法,偶尔也会有中国的朋友问及 Facebook 上线流程。我通常会简单说几句,然后说「如果你真感兴趣的话,去搜索 Chuck Rossi 在 Velocity 2012 San Fancisco 演讲的视频」。无论从 Scrum 的角度来看,还是大多数中国公司的上线流程来看,Facebook 的发布流程都显得很不一样,但其实又非常合理,看完那个视频你就明白了。尽管里面提到的内部工具都没有在 Facebook 的 GitHub 上开源,但那些截图已经足够清晰说明其功能和用途了。工具固然是重要的一方面,但我觉 阅读全文

Ping!

2014-01-31 15:20 by Cat Chen, 1963 阅读, 收藏, 编辑
摘要:我知道我很久没有更新这个博客了,所以特意来更新一下,骚扰一下各位订户。我有几年没有写过很具体跟技术相关的文章了,而跟职业发展相关的文章也半年没更新了,所以最近准备开始写写技术文章。在此之前,我要先完结我手上的一个游记系列。考虑到我所有的游记都不会发到这个博客来,所以在此进发几张照片几个链接诱惑大家去订阅我的另一个博客。Death ValleyDeath Valley 四日露营 [1 2]:到美国后的第一个圣诞节,没有什么过节的传统,正好有几个朋友说要去 Death Valley 露营,然后就跟着去了。这是我第一次去露营,发现在有足够现代化装备的情况下其实露营也不是那么的困难。 Death V. 阅读全文

赴美工作常识(Part 4 - 面试)

2013-09-25 09:31 by Cat Chen, 6512 阅读, 收藏, 编辑
摘要:最近跟同事讨论面试的事情比较多,所以就综合大家所说的列举几条面试建议吧。这些建议是针对中国候选人应聘美国职位而写的,但适用范围可能更广。假若你实际的实力是 X,面试官感知到你的实力是 Y,这些建议既不能让你实力暴增(X++),也不能让你展现超乎实际的实力(Y > X),只能帮助你避免由于沟通问题而造成的实力不被发现(Y < X)。当做讨论而非考试尽管面试有个「试」字,但在真正好的技术面试其实不是一问一答的考试,更多是如同同事之间的技术讨论一样,从比较糟糕的解决方案开始做优化,直到做到大家都可以接受的程度为之。这个观点在《理想的技术面试过程》中也提到过,在这里就说一下具体应该怎么做。 阅读全文

赴美工作常识(Part 3 - 英语)

2013-08-05 09:20 by Cat Chen, 11305 阅读, 收藏, 编辑
摘要:在《Part 2 - 申请》的评论中有人问英语要达到何种水平,以及如何提高。其实英语也不是我的强项,只是刚刚好做到能够沟通而已。由于我在知乎上回到过一个类似问题,我就基于那个答案简单说一下吧。Aa首先,你要能脱离中文和翻译,纯粹地使用英语来思考。很多英语单词短语是没有对应中文翻译的,就如同很多中文字词是没有对应英文翻译一样,然而这不妨碍你在使用中文时使用这些字词传达意思。同理,很多英文单词短语你不须要知道他们对应的中文翻译,只要你能够使用它们传达意思就行了。有时候你只需要感知一个词汇所传达的形象或者是感觉就可以了,你甚至不需要能够解释清楚它是什么意思。例如说,中文里面常见的「屌丝」和「hold 阅读全文

50 年前的黑客黑什么?

2013-07-22 08:00 by Cat Chen, 5584 阅读, 收藏, 编辑
摘要:19 世纪 60 年代,个人电脑还没有出现,两位 Steve 还没有把苹果电脑发明出来,那当时的黑客黑什么呢?黑电话网络。其中最著名的例子应该是两位 Steve 发明的蓝盒子了——只要用它来拨号,就能免费拨打长途。那到底蓝盒子的原理是什么?如果你好奇心足够重,就应该去看一本叫做《Exploding the Phone》的书。这本书先介绍了一下 AT&T 的简史。在贝尔发面电话之前,垄断美国的网络是西联电报。当时电报存在一个技术难题,就是一条线路只能走一个信道。由于想要发电报的人越来越多,而扩建线路的成本并不低,所以西联电报尝试研究信道复用技术。当时研究信道复用的人很多,大家都认为谁先研 阅读全文

孩子王?有孩子气才能为王?

2013-07-19 14:15 by Cat Chen, 4322 阅读, 收藏, 编辑
摘要:以最快的速度看完了 Facebook 第 51 号员工的回忆录《The Boy Kings》。尽管是关于 Facebook 成长的故事,说的却不是跟技术或者投资相关的事情,这是因为作者 Katherine Losse 并不是一名工程师,而是一位英文硕士。她最初加入 Facebook 时是一位客服,后来负责过 Facebook 的国际化工作,最后成为 Mark Zuckerberg 的代笔写手,估计是离 Mark Zuckerberg 最近的非高管了。这种经历使得作者陈述故事的角度如此的与众不同,让读者也必须跟着反思「难道高科技公司就必须做得如此孩子气才能成功?」作者最初加入 Facebook 阅读全文

赴美工作常识(Part 2 - 申请)

2013-07-10 09:24 by Cat Chen, 6956 阅读, 收藏, 编辑
摘要:在《Part 1 - 签证》的评论中有人提到,说我还没说如何申请职位就说签证的事情了。一方面,签证的周期决定了你申请职位的时间,错过关键时间点的话就可能错过重要的机会。另一方面,传统意义上的「申请」其实不是我的强项,而我个人的做法可能对大多数人来说是不容易实践的。首先需要说明的是,我在找工作时有两件事情是绝对不做的:大量投简历给众多公司为面试做任何应试准备我找工作基本上靠内部推荐,所以我是不会投简历给众多公司的。这不仅仅是因为内部推荐会使得公司更重视,还因为我需要了解一家公司是否适合我。一家公司如果没办法吸引到我身边跟我志同道合的好友,那么它对我的吸引力也相对有限。(我选择豌豆荚的时候就是因为 阅读全文

赴美工作常识(Part 1 - 签证)

2013-05-27 08:31 by Cat Chen, 10268 阅读, 收藏, 编辑
摘要:在《面试体验:Facebook 篇》的最后,我提到了我会写文章来介绍一下如何申请美国职位,以及拿到 offer 后入职前后都需要做些什么,那我们就先从到美国工作所必须的签证说起吧。说到签证,还是要先免责声明一下的,因为我不是移民律师,所以我只是按自己的理解来说,如果真的碰上了法律问题你还是要去咨询律师的。能够让你到美国工作的主要签证无非就是那几种:H、L、O。对于想要从中国直接应聘美国职位,那最常见的就是通过 H 签证了,其中只有 H–1B 是跟你有关系的。由于 H–1B 的配额是跟美国的财年挂钩的,所以我们必须先了解美国财年是如何计算的。美国的财年都是从上一自然年的 10 月开始算的,所以 阅读全文

面试体验:Facebook 篇

2012-11-05 08:20 by Cat Chen, 39101 阅读, 收藏, 编辑
摘要:Google、Microsoft 和 Yahoo 都是去年的事情了,接下来说说今年的吧。其实我在豌豆荚非常爽,跟身边的设计师和工程师合作都很愉快,所以唯一能够诱惑我去面试的就只有 Facebook 了。最初接受 Facebook 面试邀请的原因并不是追求它的 offer,而是我就想了解一下 Facebook 是怎么面试的,有什么是值得豌豆荚招聘借鉴的。过去在百度做面试官,只是面试而已,公司招不招得到人我没什么感觉。我觉得公司招不到人就招不到人咯,我们没必要扩张得那么快啊,先专注于做好手头上的项目再说嘛。豌豆荚其实不是着急要招前端工程师,我们还是坚持只招一流人才,只不过长期发不出 offer 还 阅读全文

面试体验:Yahoo 篇

2012-08-21 09:10 by Cat Chen, 23156 阅读, 收藏, 编辑
摘要:前面两篇文章提到了 Google 和 Microsoft 的面试体验,可惜都没有 offer,接下来说说有 offer 的。考虑到我已经在 Google 和 Microsoft 的招聘流程当中了,于是我也让 Yahoo 的同学帮我内部推荐一下,试试 Yahoo 的面试如何。本来没想着很正经地面,不过最后拿到了 offer,所以才有了我之前那篇文章所说的「越是放松越能成功」。Yahoo 一开始并没有什么 HR 沟通和预约,某一天我从百度下班回家正准备做饭就接到面试官电话。我开头以为他想要跟我约时间,结果他问我是否方便进行面试。我当时毫无准备不是很想面试,不过既然室友可以做饭那面试一下也没什么所谓 阅读全文

面试体验:Microsoft 篇

2012-08-14 08:49 by Cat Chen, 25159 阅读, 收藏, 编辑
摘要:在上一篇《面试体验:Google 篇》中说到,我对猎头的标准回复是「有美国或者香港的职位吗?」在进入 Google 招聘流程后,Microsoft 有一位 HR 打电话来跟我说有一个北京的职位跟美国总部会有密切的合作,问我有没有兴趣。我当时想的是,如果加入美国公司的中国分公司,或许将来有机会 rel... 阅读全文

面试体验:Google 篇

2012-08-08 11:06 by Cat Chen, 55758 阅读, 收藏, 编辑
摘要:尝试在自己的博客上搜索点东西,结果发现 4 年多以前还在博客上写过一系列的 recruiting events,把大四时候参加过的各种笔试面试都记录下来了。我从去年准备离开百度开始,到现在总过面试过 4 家公司:Google、Microsoft、Yahoo、Facebook,原本去年也想把面试经验写一写的,结果一拖就拖到现在。我不想写面试经验,因为我个人不喜欢漏题和背题的做法。我自己作为面试官,知道要设计出来一道好用的题目有多难,所以我希望面试者都是如实表现自己解题能力的。我更喜欢写面试体验,就是在整个面试过程中一家公司给人的印象是怎样的,HR 和面试官是否专业,能否让人信服这是一家值得长期工 阅读全文

HTTP 状态码详解

2012-06-19 09:04 by Cat Chen, 12686 阅读, 收藏, 编辑
摘要:最近看《REST in Practice》,发现 HTTP 如此之多的状态码都有各自的含义,要准确使用并不难,但现实当中很少人能够做得到。大多数人熟悉的状态码就那几个,平时也不会去阅读 RFC 2616,结果反复使用的也就是那几个状态码。其实很多 REST 中可能遇到的情况,在 HTTP 状态码中都已经有考虑到,不需要自己去发明新的状态码,也不需要在 header 或者 body 自定义错误信息。在说状态码之前,首先建议大家还是先阅读一下 RFC 2616 中的相关章节,看看已有的状态码描述都是什么。我相信有部分状态码是你看了描述也不知道用来干什么的,这时候就需要有更具体的例子来告诉你怎么用了 阅读全文

理想的技术面试过程

2012-06-06 06:36 by Cat Chen, 14577 阅读, 收藏, 编辑
摘要:作为面试官从在大学里面试社团大一新生,到加入百度后帮公司面试候选人,我觉得我对面试这件事一直不得要领。百度提供面试培训,也允许参考或使用题库,但我还是觉得不知道如何判断给不给一名候选人通过我这关。偶尔我会遇到非常优秀的实习生候选人,我能十分确定我要给他过,甚至想方设法确保他能来。其它时候,我觉得我的判断随机性太大,或许还不如一枚硬币做得好。在百度做二面的时候,我往往会问一些组合问题,就是候选人需要有扎实的基础加上一定的解题能力才能做出来的。我假设一面的面试官已经问过基础问题,所以我不会再问基础问题。结果通常是,候选人的基础不够扎实,会作出一些错误的假设,甚至面对组合问题就无从下手,不知道如何分 阅读全文

三藩市湾区一周游

2012-06-04 16:33 by Cat Chen, 7449 阅读, 收藏, 编辑
摘要:上个星期四一早从广州飞往三藩市,到这周三中午返回,大约一周时间,在三藩市湾区充满拜访了多位好友,也参观了几家互联网公司。还记得两年前去三藩市湾区,遇上暴风雨,不仅景色没看到,还让人担心自驾安全。这次旅行途中南湾阳光明媚,就算是三藩市也只是有雾而已,没有遇到下雨的情况,感觉好多了。5/24因为 Delta 取消了广州到东京的航线,所以尽管这次还是经东京转机,但飞的是 ANA 和 United。到达三藩市机场后,我做的第一件事情是把手机掏出来搜索机场免费 Wi-Fi。两年前的三藩市机场好像是没有免费 Wi-Fi 的,但我很确信现在是有的。找到 Wi-Fi 后先用 Foursquare check- 阅读全文

怎么样才算是 RESTful?读 REST in Practice

2012-05-09 22:08 by Cat Chen, 8725 阅读, 收藏, 编辑
摘要:最近 O’Reilly 搞活动,我就半价买了一本《REST in Practice》(Kindle 版链接)。对于 O’Reilly 的书,我通常会对比 O’Reilly 打折后的价钱和 Kindle 版的价格,通常是那家更便宜就在那家买,但图表或代码比较多的我就会坚持买 O’Reilly 的版本,因为 PDF 能够最好地保存这些格式。回到 REST 的话题上。尽管这个概念 2000 年就被提出来了,2007 年成为了一个热词,随后越来越多的服务都宣称自己是 RESTful 的,但是到底真么做才是真正的 REST 我从来没有自习学习过。由于 2007 年的时候 Ruby on Rails 也十 阅读全文

Covariant(协变)与 Contravariant(逆变)

2012-01-13 09:26 by Cat Chen, 3201 阅读, 收藏, 编辑
摘要:今天为了解释某个问题而提到协变和逆变,发现每次解释这两个概念都会忘掉它们的本质,然后要重新看看定义,重新消化一下才能说明白。所以我决定把自己对协变和逆变的理解写下来,以免将来再次忘掉。我知道 .NET 的用户喜欢用 delegate TResult Func<in T, out TResult>(T arg); 来解释协变逆变,我则喜欢把 Func 的签名简写为 Haskell 签名形式。也就是说,把 Func<T, TResult> 写成 f :: a -> b 的形式;把 Func<T1, T2, Result> 写成 f :: a -> b 阅读全文