接触 Python 后的一点感受记录

python最近因为工作的关系开始学习 Python 了。以前从不曾正儿八经地学过,如果说工作学习经验带来改变的话,那么编程语言的学习就是个很好的例子。如果在十年前,我要学习 Python 的话大概会买本系统介绍的 Python 教程,然后一页一页慢慢看,估计能够啃完大半本,跳过一些自认为次要的特性。等到在项目中使用已经得是一两个月之后了吧。但是如今我显然不太会做一样的事情,我现在会拿着我那些熟悉的编程语言来比较,不同的特性上面,Python 是怎样的,是先进还是落后,适合解决什么问题,在哪些领域可以大行其道,但在遇到哪些问题的时候事倍功半。

想起以前接触过的编程语言里,事实上有一半都不能算系统地学过,大致上只是零散地

[……]阅读全文

写在 Oracle 入职一个月之时(兼招人帖)

OCI加入 Oracle 的 OCI(Oracle Cloud Infrastructure)团队一个月了,感触颇多。事实上每一次团队的更换都是一次体验记录和整理的好机会。技术方面的东西有很多,在允许的范围内,我会在以后慢慢再谈,但是其他方面,现在我想稍微谈一谈,特别是和我的老东家 Amazon 比较地看。以下的文字更像一篇帖子,而不是文章。

先说工作中的生活。Amazon 的总部在西雅图,整个 SLU 满大街走着大亚麻的人,但是 OCI 目前只有 downtown 两栋楼的几层,人数要少得多。对我来说,每天上班从 van pool 改成了 bus,commute 的时间代价略高,但由于车次很多,因此也能够接受。Downtown 的

[……]阅读全文

开发环境上的代码同步

最近在搭建开发环境,大致的布局是这样的:一个专门的数据库 VM,一个用于编译和代码执行的 VM(dev virt,装的 RedHat),还有用来写代码和运行这两个虚拟环境的 Mac(local)。这里我需要一个工具,可以满这样的需求:

  • 能够把 Mac 上写的代码同步到 dev virt 上去。
  • 不需要手动触发,每当有修改,应该能够自动同步。

我把我的解决办法简单记录在这里。在接下去记录之前,需要回答这样两个问题:

  • 为什么需要把编译和执行环境放到 VM 里面去?因为尽量使得代码的编译执行环境接近于生产线。
  • 为什么要在 Mac 上写代码,而不在 dev virt 那个 VM 上写代码?因为在 Mac 上

[……]阅读全文

再见,亚马逊时光

IMG_6884 新入职 Oracle 已经超过一周了,但是一直没敢下笔,写一点东西纪念将近 6 年的亚马逊时光,总有惶恐的感觉。现在觉得不能再拖了,文字不在多寡,仿佛一种仪式,把整个亚马逊的经历画上句号。离开老东家的时候,往往是喜忧参半的,并且难免对前任颇有微词。在我离开华为的时候,便是如此,多为感怀和想念,但是诚实地说,也有一些厌烦的情绪,于是有释放之后的舒坦。这其中的缘由,我在以前的文中写到过。但是离开亚马逊,我却仿佛不再有这些负面的情绪,除了感伤和怀念,便是感激。要说明的是,如今亚马逊的股票直往上蹿,它却远非完美,也有诸多令人遗憾的风言风语。我觉得它在某些方面可以被称为“美国的华为”,做企业的成就自不必说,但是

[……]阅读全文

《Person of Interest》剧评

POI

看完美剧 Person of Interest(POI,疑犯追踪,下同),心有波澜,写一点点文字,零零散散,算是剧评。

我不觉得我是一个美剧狂热的爱好者,但是确实也看了好几部美剧。读书的时候开始看 Friends(六人行),后来顺着相同的风格,看 Two and a Half Men(好汉两个半),以及 How I Met Your Mother(老爸老妈浪漫史)等等,都是很欢快的风格;另一条线看一些悬疑、枪战、罪犯之类的片子,比如最早看 Prison Break(越狱),看 24(反恐 24 小时),后来看 Breaking Bad(绝命毒师),看 Crime Scene Investigation(犯罪现场

[……]阅读全文

折腾的快乐

sde

先讲个故事

公司里有这么一个小小的差事,某一个月,每天都要把 Excel 的某一列的数据根据某种规则换算以后拷贝到另一列去。

DA(数据分析师)看了以后说,就手工完成吧。反正只有一个月,这件事情每天做 3 分钟,也没有多耽误时间。

TPM 看了以后说,这事情每天做做很简单啊,写一张便签贴在屏幕上,每天就不会忘记了。

Dev Manager 看了以后说,衡量一下这个很小的时间成本,用其它的方式来解决是不划算的,还是手工搞定吧。

……

不过地球上还有一种特殊的物种不同意。它门叫做程序员——这么重复性的劳动难道不能用脚本完成吗?

就是,用 geek 的脚趾头想一想,这还用问?

于是写脚本,调试,测试,整合,两个钟

[……]阅读全文

2017 年总结

summary

一周前才家人送上飞机回国过年,这两个月要一个人安安静静呆着了,就从写一点东西回顾这个过去的 2017 开始吧。

健康

我总是把健康放在首位。就像我之前写的,健康是一个拥有它的时候不会注意到它的东西。Crohn’s Disease 时不时回来找我,但是总的来说,仅仅急性地比较严重地犯了一次,其它都还可控,比 2016 年好;抑郁症的问题也基本得到控制,虽然有时候还会头晕,特别是天气不好的时候,这也比 2016 年好。除了药物以外,时间越长我越能够理解自己的身体,总的来说我已经很满意了。当然,要是没有一个比较好的状态,我也没有办法完成面试求职这些事情。

孩子出生以后,爬山的次数明显不如 [……] 阅读全文

时间投入上的权衡

time management

时间管理被很多人忽略了。被忽略的一个原因是,我们被洗脑洗得太久,读到的鸡汤文太多,觉得一个人的主观努力程度扮演了过度重要的作用。事实上,这里有两个问题,一个是如何评价目标的达成,特别是人一生这个大的范围内的评价,鸡汤文中总把一个人在事业上的“成功”列为最大的目标,但实际我觉得这只对一部分人成立;另一个是,即便这个目标成立,主观努力依然被高估了——或者说,主观努力当然重要,而且对于大多数人来说,天赋并无法起到决定性作用,但是,许多人的主观能动力是类似的,结果却大相径庭。这里面,除了主观努力和先天天赋以外,明显还有别的因素在起作用,而时间管理就是其中之一。

几年前写过一点关于时间的 文字 ,不过都是

[……]阅读全文

Blog 安全问题小记

xmlrpc

最近 Blog 遭遇了几个安全问题,折腾了几个钟头,在此记录一下。

最大的问题是 blog 访问时不时地出现“502 bad gateway”,即便不出现,latency 也能达到接近三十秒。

于是登上 vps 去看原因,top 命令发现 CPU 都用完了。靠,十个 php-fpm 居然都在满功率工作。研究了一下,通常 php-fpm 在没有请求的时候是不应该占用那么多 CPU 资源的,而且 mysql 也高,似乎有人在访问网站,但是去 access log 里面却没找到东西:

top - 02:08:12 up 56 min,  1 user,  load average: 10.18, 9.41, 8.68

[……]阅读全文

职业生涯下一站

career

水文一篇。

在亚马逊已经呆了五年多了,想起 第一次换工作 的情形仿佛还历历在目。如今,就在我还有半年多就将迎来我第十个工作的年头,经历了 骑驴找马的面试 ,不久我将迎来第二次职业生涯的重大变更,下一站:Oracle,Oracle Cloud Infrastructure。

我的工作经历,可以用多样来形容,也可以用乱七八糟来形容。其中的原因有客观的,也有主观的。客观的原因是项目和团队的需要,本来工程师团队如同资源池,就是要去解决不同的问题,这些问题是由当时的境况和市场决定的。主观的原因是,我本来就是一个领域涉猎相对广泛的程序员,而且兴趣三年两头自己都弄不清楚,有时候这未必是好事,但是 [……] 阅读全文

LeetCode 付费题目(一)

LeetCode 300 题以内需要付费才能查看的所有题目解答。

156

157

158

159

161

163

[……]阅读全文

几个系统设计问题的解决思路

曾经写过一些系统设计方面的思考(比如 这个这个),但是最近准备面试,又接触了更多系统设计方面的问题。这里我想简单记录一些典型系统设计问题的思路。通过学习常见的系统,在心中形成一些问题解决的套路,以在思考和分析新问题的时候提供一些既定思路。很抱歉时间关系写得很简略,主要是提示一些思路和方向。

设计 Tweeter
两种常见模型的 trade off:

  • Pull on demand: merge x timelines
  • Push on change: async, read once to get them

缓存的设计,cache through

设计 Web crawl[……] 阅读全文

近期面试求职的经历和感受

好久没有更新了。回来报个到,也向关注和提醒我 blog 更新的朋友们道个歉。原因在于,最近非常忙,忙于找工作。现在下家还没有定下来,手头有几个 offer,还在考虑中,但是很快会决定下来,然后更新更进一步的信息。无论如何,blog 的更新已经恢复正轨。
通常人的一生中不会有太多属于自己的求职季节,尤其像我这样的,总觉得在一个地方需要积累,因而并不是频繁跳槽的粉丝。第一份工作在华为, 我干了三年半 ;第二份工作在亚马逊,直到现在,超过了五年半。职业生涯的前方就将是第 10 个年头。

为什么是现在?

三年半前我通过 L 签证来到西雅图,而 L 签证是不能够更换雇主的,因而自然也不用考虑工作变更的可能性。去年 [……] 阅读全文

求第 K 个数的问题

一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第 k 个是多少。假设排列的下标从 1 开始,而非 0 开始。

这个问题如此之简单而熟悉,可它却可以是很多现实问题的某一个子问题的抽象。它本身相关的问题其实就不少,而且还可以不断演进,成为不同复杂程度的问题。

关于这个问题的分析和演进,我们不妨从一左一右两条分支——堆排序或者快排,来分别进行。在不断演化问题的时候,会这两个分支之间跳来跳去,为了尽量清晰的考虑,我采用一种新方法——使用 【分支:堆排序】【分支:快排】 来标注。

Java 中快排用 Arrays.sort 就可以了,如果是堆排序需要用到 PriorityQueue。 用 Array[……]阅读全文

分布式系统中唯一 ID 的生成

其实老早就像写一点这个话题。几乎我见过的所有大型系统中,都需要一个唯一 ID 的生成逻辑。别看小小的 ID,需求和场景还挺多:

  • 这个 ID 多数为数字,但有时候是数字字母的组合;
  • 可能随机,也可能要求随时间严格递增;
  • 有时 ID 的长度和组成并不重要,有时候却要求它严格遵循规则,或者考虑可读性而要求长度越短越好;
  • 某些系统要求 ID 可以预期,某些系统却要求 ID 随机性强,无法猜测(例如避免爬虫等等原因)。

独立的生成服务

比如数据库。最常见的一种,也是应用最多的一种,就是利用数据库的自增长序列。比如 Oracle 中的 sequence 的 nextVal。有多台 application 的 h[……] 阅读全文

React+Redux 组合使用之感受

最近完成了一个使用 React+Redux 组合的项目,以前仅仅是接触了解以及学习,并未正儿八经地使用过,因此这一次可以说是第一次完整地再一个项目当中使用。因而对于认识之浅显请轻拍。

从架构和层次的层面,这个组合给我最好的感受是干净利落的解耦。有不少 JavaScript 框架尝试解决解耦问题,但是到了落实的层面上很容易出现分层分模块不容易严格控制,缺少清晰标准等问题。但是 React+Redux 的组合没有这个问题,我们把应用中 JavaScript 的部分分层为 action、client、config、constant、reducer、store、util 和 view 几个部分,其中 view 又进一步划分 [……] 阅读全文

再谈谈工程师

IMG_1989 昨天去参加了一个公司内的 expo,大致就是以团队为单位组织起来,做广告,招呼各种工程师去看,有团队介绍,产品介绍,技术介绍;有披萨、啤酒和零食;也有一些填方格的活动供参与和纪念衫可以领取。我们组也大张旗鼓地伴着各种搞笑的口号和宣传材料上阵了。挺有趣的一件事情,也是很有工程师文化的事情。

以前谈过不少关于工程师的话题,比如 这个这个这个 ,今天想再谈谈。

其实自我工作以来,软件工程师这个职位变化很大,无论是职责、技术、待遇,但是不变的是,我看到优秀的工程师至始至终非常抢手,而且需求量很大。不扯没用的,任何行业优秀的角色都受欢迎,但是就我熟悉的 IT 公司来说,软件工程师始终处于特别的存在 [……] 阅读全文

谈谈于丹

对,就是百家讲坛那个号称研究古文的“学者”于丹。

鸡汤满世界都是,我很少在意;知识分子谈论观点和看法千千万,多么奇葩有趣的都有,我很少痛恨知识分子。但是于丹是个例外。

与我而言,知识分子如果只专注分内之事,执着于学术范畴,无疑是所谓的“本行工作”,无论正误,都是无可过度指摘的。毕竟观点迭出才有万象世界,只有反复质疑才有科技与社会之进步。

还有一类知识分子,他们不甘寂寞,他们涉足传道授业,他们涉足启迪民智,通常他们更令人尊敬。因为这并非本行,当然也不可说越俎代庖,毕竟没有人专职干这个。

但是有一些人,他们传“道”,但是愚民,他们的面皮撕下来,就是一张维护统治阶级少数人的嘴 [……] 阅读全文

关于中国的学校教育,我的几点杂乱的看法

来美国工作生活已经三年了,早就过了适应期,一些酸甜苦辣也尝到了。经常和同事讨论各个国家的趣事,经常涉及到的话题是教育。事实上这也是个敏感话题,而且似乎是个永久热门的话题。我不想扯得太远,只想表达对于国内学校的课程教育,我的其中几个观点。

英语从高考中撤走?

众所周知,国内的应试教育决定了,如果高考不考,基本上课程就和放松之用的选修课差不多。无数的父辈都教育我们要把英语学好,可是每当我们跟上问一句“为什么”的时候,除了“高考要考”之外,并没有什么强有力的理由,在耳边来回倒腾的无非是“要和外国人对话”啊,“中国要国际化”啊云云自己都不太相信的鬼话。这就好像很多家长要逼着小孩子学琴一样,[……] 阅读全文

一个前端项目,到底要集成多少库和工具

最近忙于一些新做的项目,由于新入手,就想着往最佳实践去靠,也寻找一些可以借鉴的模板。其中前端的部分,有很成型的模板可以借鉴。大幅度减少了自己调查和集成的工作量。但是仔细看看,发现这里头的概念太多了,各种开源的库和工具,有人说“前端玩的是广度”是有道理的。

这个新项目并不算特别复杂,大致的技术是基于 React+Redux 的,但是大体上集成完毕以后,完成了几个 demo 的代码之后,粗粗地过了一遍,除了传统意义上的 HTML+CSS+JavaScript(遵循 ECMAScript 6 的标准)三大件,居然涉及到了那么多技术,把自己吓了一跳:

  • React: an open-source dec

[……]阅读全文

back to top