诗盗·中年女子不如鸭

《#诗盗#·中年女子不如鸭》:一车两位富休假,三餐一线穷在加。闲mang人岂识忙xian中趣?中年女子不如鸭。

注解

  1. 一对土豪夫妻,每人一辆车,车位紧靠,车牌就差一位。最近快过年了,土豪妻子已经休假,所以土豪把车停在俩车位中间,即一车占两位。

  2. 这说的是别人……大过年的还在加班!

  3. 这些别人明明好惨啊!但他们觉得忙才有意思……

  4. 那些穷逼的中年女子真不如鸭,嘎!

Nodejs 实现监控告警

作者: UMU @ MEET.ONE 实验室

钉钉

  1. 选择要接受通知的群,群设置 - 群机器人 - 添加机器人;

  2. 复制 webhook URL,记为 webhook_url;

  3. 发送通知的代码:

1
const fetch = require('node-fetch')

fetch(webhook_url, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    "msgtype": "text",
    "text": {"content": text}
  })
}).then(function(res) {
  if (res.ok) {
    console.log('Dingtalk message sent!')
  } else {
   console.log('status = ' + res.status)
  }
})

Telegram

  1. 添加 @BotFather,发送 /newbot 命令,随提示逐步建立一个机器人,得到这个机器人的 token,记为 bot_token。

  2. 选择要接受通知的 Group 或 Channel,按以下任一方式取得 chat_id:

(1) 转发 Group 或 Channel 内的消息到 @getidsbot

(2) 通过 Web 版查看 Group 或 Channel 的 URL 中,p 参数 的值。

  • 如果是 Group,chat_id 为把 g 前缀替换为负号的负整数。比如 p=g268787210,则 chat_id = '-268787210'

  • 如果是 Channel,chatid 为 前部分,并把 c 前缀替换为 -100 的负整数。比如 p=c1383705039_968667419389618100,则 chat_id = '-1001383705039'

  1. 发送通知的代码:
1
2
3
4
const TelegramBot = require('node-telegram-bot-api')
const bot = new TelegramBot(bot_token, {polling: false})

bot.sendMessage(chat_id, text)

阿理银

2018-04-17,收到阿理面试通知邮件,开始观测。

2018-06-01,猎头和面试官都确认全部通过,只是遇到晋升季,HR 比较忙,会延迟谈 offer。稣同时还在面其它公司,所以觉得延迟点更好!

整个面试过程,亲身体会到阿理面试的专业性:有当面聊、写代码笔试、电话技术面两轮、HR 两轮。其中其它部门的技术官面试在专业上叫“交叉面试”,这是稣原公司没有的环节。另外,HR 有一票否决权,这要求 HR 的专业性要很高,否则很难服众。

2018-06-07,主面试官问能不能去杭州,稣其实早就想过这问题,他问的是能不能去 1 年,这远低于稣的预期,直接回答可以去 18 个月。稣 2010 年去过一次杭州,印象太好了,所以去几年,要是混得好,定居是没问题的。

期间,知道好多同事也面了,但他们大多选择待在厦门办事处,有些直接表示非厦门则拒。稣劝过,厦门只是个办事处,可能不长久,最好还是狠点,考虑长期利益去杭州。

2018-08-31,是在原公司最后一天。就在前一天,稣的选择还是不开竞业协议就去阿理银,开了就不去。原计划休息一个月,等 HR 把 offer 理清楚。然而由于稣太穷了,休息一个月?不可能滴,天不让!一辈子也别想休息……

整个 8 月份,现在的公司就每隔几天来催赶紧入职,直到最后一天,稣终于没有其它选项。09-04 入职,中间只休息了一天!

插播一句:现公司很豪爽,把稣的入职日算到 09-03,多发了一天工资!第一天就感动得一把鼻涕……

2018-09-10 早,杭州来电:

- 您好,我是你爸爸 HR,想和您沟通一下,阿理银的 offer。
- 哦……(心理活动:我爸爸?哦,原来是阿理爸爸)稣这个月才刚换公司,过几年吧。谢谢啊,谢谢!
- 这样啊,那不打扰您了,祝您工作顺利。

2018-10,稣了解到的厦门阿理银情况,越来越像自己预料的,混乱、军心难聚。加班太厉害,大家叫苦连天,大佬都在杭州、上海,沟通不便。

当然,稣只能看到槽点。因为如果有些人在厦门阿理银混得很好,他肯定不会找稣吐槽。不过,光看这些问题,稣完全有优势,这些都是稣善于解决的问题。

稣是说如果……厦门阿理银以后如果撤了,很可能就是因为——错过了稣。反过来,如果壮大了,那是某些人的不幸,稣是看好阿理文化的。

这次没有吓醒。

人工神经网络究竟是什么鬼?

难解释的问题,就举个简单的例子说明。PS:稣才入门,也不懂不简单的例子……

题目

有一个未知的函数 f(x1, x2),其中 x1、x2 取值和结果符合下表:

x1 x2 f(x1, x2)
0 0 0
0 1 1
1 0 1
1 1 0

求 f(x1, x2) 的表达式。

求解

人脑抢答

知道异或运算的人可以马上抢答:f(x1, x2) = x1 ^ x2,其中 ^ 是 C 语言里表示 XOR 的运算符。

很明显,这答案是准确无误的,人脑的速度还可以……

放开那个函数,让 AI 来!

人工神经网络(Artificial Neural Network,简称 ANN)解决问题的思路相对而言不太精确,大概就是——通过几个函数算出一个近似值,接近 0 就说是 0,接近 1 就说是 1。

首先,引入一个激活函数:

1
sigmoid(x) = 1.0 / (1 + exp(-x))

举个例子:sigmoid(1.777) = 1.0 / (1 + exp(-1.777)) ≈ 0.855326

类似的激活函数还有 tanh,但其实用 ReLU 更好,既简单又接近生物上的神经元。参考:在神经网络中,激活函数sigmoid和tanh除了阈值取值外有什么不同吗?请问人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function?。但是 sigmoid 比较古老,很多教材拿它举例,稣也沿用它。

我们要求的函数是这样的:

1
f(x1, x2) = sigmoid(w1 * g(x1, x2) + w2 * h(x1, x2) + w3)

其中:

1
2
g(x1, x2) = sigmoid(wg1 * x1 + wg2 * x2 + wg3)
h(x1, x2) = sigmoid(wh1 * x1 + wh2 * x2 + wh3)

最终要求的是这三对系数:

1
2
3
wg1 wg2 wg3
wh1 wh2 wh3
w1 w2 w3

通俗说法叫求 w,其中序号为 3 的系数,又叫 bias 或者 b。

函数 f、g、h 其实就是一个神经元(neuron),结构如下:

神经元结构图

神经元结构图 DOT 源文件

训练出来的一个解是:

1
2
3
-5.734 -6.029 1.777
-3.261 -3.172 4.460
-6.581 5.826 -2.444

下面我们来验证一下,举例 x1 = x2 = 0 比较容易算:

1
2
3
4
g(0, 0) = sigmoid(1.777)0.855326
h(0, 0) = sigmoid(4.460)0.988570
f(0.855326, 0.988569) = sigmoid(-6.581 * 0.855326 + 5.826 * 0.988570 + -2.444)
= sigmoid(-2.313491586)0.0900120

结论

ANN 就是数学的运用,训练就是在随机的 w 组合通过参考已知解逐渐纠正误差,逼出正解 w 组合。

打个比方,练习投篮的过程:肉眼观测,无数次调高低角度、出手力度、左右偏差,最终找到一套合适的参数,这个叫培养了球感……

机器学习也差不多是这样的过程,只是它比人快很多。

十年生死两茫茫

1. 稣为什么能在 KJ 待 10 年之久?

答:因为找不到工作。

2. 稣真幽默!

答:稣一向都很严肃,是真的找不到工作……

3. 哦,为什么呢?

答:因为稣知道的太多,一学会就忘。正常的招聘要的是经验,稣没有经验,只有智商。另外,厦门的公司能选择的不多。

4. 不尝试写下来备忘吗?

答:写了。领导不让发表,只能发点皮毛。智商这个东西也不好描述清楚。

5. 有打算创业吗?

答:一直在创,但感觉不够高大上,冒然出手可能被绑定在一个不够高大上的业务上。

6. 听说稣很有钱是真的吗?

答:是……真的……吧!但是 KJ 70-80% 的人比稣更有钱。赫赫……

7. 稣还是蛮幽默的。

答:你高兴就好。稣只是穷得没那么焦虑。

8. 十年最大的感想是什么?

答:活着很容易,活得好很不容易。

9. 稣觉得自己活得好吗?

答:好

个鬼。

10. 有什么建议给大家?

答:挨踢无情,你承受不起,奉劝各位亲朋好友——千万不要学 C++。

诗盗·卧龙小成

《#诗盗#·卧龙小成》:挨踢悟岁月,奇路游红尘。十年浑似醉,回首卧龙深。

改编自霹雳角色“北窗伏龙曲怀觞”的诗号。

天涯无岁月,
歧路有风尘。
百年浑似醉,
是非一片云。

唐朝骆宾王的《春日离长安客中言怀》:

年华开早律,霁色荡芳晨。城阙千门晓,山河四望春。
御沟通太液,戚里对平津。宝瑟调中妇,金罍引上宾。
剧谈推曼倩,惊坐揖陈遵。意气一言合,风期万里亲。
自惟安直道,守拙忌因人。谈器非先木,图荣异后薪。
揶揄惭路鬼,憔悴切波臣。玄草终疲汉,乌裘几滞秦。
生涯无岁月,岐路有风尘。还嗟太行道,处处白头新。

南吕词人张可久的《金字经·乐闲》:

百年浑似醉,
满怀都是春。
高卧东山一片云。
嗔,是非拂面尘,
消磨尽,古今无限人。

注解

工作十几年了,其中在第二个公司差几天就十年整。