0%

一句话解释

gRPC 是一个框架, 这个框架通过HTTP/2.的协议实现了RPC API.

Read more »

Python2 和 Python3

最近在面试, 遇到了几个同样的问题, 就是 “python2 和 python3 具体有哪些区别”? 遇到这个问题的时候, 我每次都懵逼, 因为确实除了语法糖以外的区别, 我一个都说不出来. 所以回来之后查了一下资料, 总结出几个主要的区别, 记录下来.

Read more »

全村的希望

这是一个在面试的时候遇到的问题. 题目描述是这样的.

输入是一个村子的人. 编号 0 到 n-1.
有一个函数, 叫knows(a, b), 用来检测村民a是否认识村民b
目标是在村民里找到一个"全村的希望"
如果要作为"全村的希望", 那么他必须满足:
1. 全村里的人都认识他
2. 他不认识村里的任何一个人
Read more »

一道有意思的算法题

实现一个数据结构, 要求

  1. key - val 形式
  2. 插入的时间复杂度是 $O(1)$
  3. get()的时间复杂度是 $O(1)$
  4. delete()的时间复杂度是 $O(1)$
  5. getRandomVal()的时间复杂度是 $O(1)$
Read more »

原因

最近朋友圈一直在流行一个叫 “我要猫咪的小程序”,主要玩法就是用罐头买猫咪。两只一级猫咪合成一只二级猫咪。每次购买猫咪会导致下次再次购买的时候价格上涨。
罐头主要的主要来源是分享到朋友圈,或者微信聊天群,然后获得罐头。每只猫咪每一秒都有固定的罐头产出。一开始升级很快,但是随着级别的升高和猫咪价格的上涨, 解锁新的猫咪变得越来越困难。

而网上的很多的攻略都是说建很多很多个所谓的“刷猫群”,通过不断的分享来获得足够的罐头。这个方法不是不行,而是太繁琐了。
所以我开始去想,有没有什么方法可以一步满级省去天天挂机的烦恼。

Read more »

原文链接

Post Agile: embracing asynchronous processes

作者信息

Jilles Van Gurp

后敏捷开发时代

就像我们这个行业里(软件开发)很多跟我年纪相仿的人一样, 我记得在internet和敏捷开发概念之前, 事情是怎么被完成. 那时候, 写代码意味着使用昂贵的工具, 要查很多很多的书. Google 和 StackOverflow 还未存在. 办公室里有网络也不是特别常见. 我用买commodore 64时附送的Basic手册来学习编程. 那时候, 并没有敏捷开发.

从那时候开始, 事情起了变化, 这些变化大部分是好的变化. 我对Kent Beck的书Extreme Programming 抱有非常大的热情. 在那个时候, 我正在攻读软件工程的博士学位. 在我2003年的博士论文当中, 我甚至引用了这本书的一些内容. 敏捷开发在开发这个事情上做了很多革命性的改变.

不好的敏捷开发

最近这些年, 每个人都在强调又或者在假装他们正在使用敏捷开发. 所以”敏捷开发”这个词变得有点无意义了. 所有银行, 卖保险的, 还有一些外包小作坊都在使用”敏捷开发”. [Captial A Agile of course because they are doing things “by the book”]. 只要有敏捷开发知识的任何人, 都会知道这个不是一个正确的行为. 我曾经在一些研讨会, 讲座上碰到过敏捷开发宣言的签署者讲出这个事情. 敏捷开发事实上是一套工具, 可以让你用和改变成合适你的样子. 照本宣科是开始, 而不是结束. 如果你不了解任何敏捷开发的事情, 你才应该照本宣科.

原文链接

How many lines of code is Candy Japan?

湾区日报短评

这是每月交$29,寄一盒日本零食给你的电商。Python + App Engine,集成 PayPal 与 Recurly 收钱,还有一些自动化的代码用来优化打印送货地址、退货的流程等。总共 8000 多行 Python 代码。
他是 2011 年开始做的,本文写于 2016 年。如果是 2018 年从头开始做的话,可以不用写这么多代码,有很多现成的 API 几行代码就能搞定了。

Read more »

系列回顾

什么是DNS

DNS是 Domain Name Service 的缩写, 中文译作计算机域名系统. 它主要应用于域名的IP地址查询. 举个简单的例子来说, 如果你要访问google.com, 系列之前的文章提到过, 进行网络通信一定需要IP地址, 所以当敲下回车那一下, 首先就是需要通过DNS查找到google.com的IP地址, 然后才是建立TCP连接.

Read more »