2016 年 12 月

我想一手握着知识,一手握着兴趣,开启开挂的人生。


不迷信、不盲从,不崇拜任何东西,永远对现状不满足,永远想改造世界,也永远拥抱世界的美好。

2016 年 11 月

互联网下半场对于个人而言,信息不对称以另外的方式呈现:不善于学习和不敢于尝试新东西的人会在这波被落下。也就是说,社会的平均信息水平提高,而个人信息水平与对事物的接触早晚程度关系不大,主要决定于个人的学习能力。


那些会生活的女孩总能让平淡的生活发着光
手帐少年: 微博


如果你发现你叫不醒一个装睡的人,那就别叫了。叫不醒,是因为他还有张床可以睡。若要他醒来,直接把床拆了就是了。



Lissajous 曲线,来自 Matrix67 的博客


客户是不听你解释的,他给了你钱,买了你的东西,就是要你给他解决问题。你的产品解决不了问题,那客户就有理由把你叫过去解决问题。你一边解决他一边骂你。
——《周鸿祎自述》


任何企业都可以找最强的竞争对手打,但有一个对手你是打不过的,那就是趋势。趋势一旦爆发,就不会是一种线性的发展。它会蓄积力量于无形,最后突然爆发出雪崩效应。任何不愿改变的力量都会在雪崩面前被毁灭,被市场边缘化。
——《周鸿祎自述》


中关村电子大厦的没落,源自电商冲击波。而电商之所以能冲击中关村,根子在于一些商铺不讲诚信。俗话说,一粒老鼠屎坏了一锅汤。确实如此,一些商铺不讲诚信,蒙骗顾客,导致顾客对中关村产生了坏口碑,一传十、十传百,这顶帽子一旦戴上,就再也摘不下来了
——《周鸿祎自述》


努力了不一定会成功,但是不努力一定会很轻松。

这大概就是堕落的原因。


有逻辑的大脑,真是性感得令人无法自拔。


比起对容易逝去事物的怀旧,更重要的是世事无常中的坚持。
——井上雄彦


要强又怎样呢,这个世界并不因为自己要强而公道一些。
老舍·骆驼祥子


我是对的,我便是对的。不需要和你争辩。


胡家终究还是没落了,我母亲这一辈兄弟姐妹,再没出过比肩先辈的人物。他们无论男女,都不曾做过越轨出格之事。他们身上具有鲜明的特点:忍耐,韧性,接受命运的荒诞与屠戮,但从未彻底的一败涂地过。对抗苦难,是从有记忆就开始的必修课,他们有心得,更有办法。所以不会像大姑奶奶那样用命抗争,也不会像我姥爷那样逞匹夫之勇。他们是外婆的孩子,受她教养,懂得棉比钢长久,又可温暖人生。
https://www.zhihu.com/question/19999821/answer/30964363

2016 年 10 月

真正改变我们一生的道理,都不是别人交给我们的。


作者:南宫铃
链接:https://www.zhihu.com/question/42616937/answer/126786060
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

他们所缺乏的,正是你所拥有的。

林妹妹姣花照水,可惜一身的病。放在如今,医生会让她多运动、多呼吸新鲜空气,而不是足不出户和吃药、吃药、吃药。

宝钗、探春女中英杰。如今她们可以上名牌大学,出国深造,把家族企业经营得风生水起,而不是将一身才智用于讨好嫡母和寻找一个不爱自己的丈夫。

湘云风流女英豪。走三川,跨五岳。马纵云山,杯转星河。她的命运本该是开画展,做脱口秀,给国家地理杂志当专栏记者。而不是在衰败昏暗的家族命运里老去,怀念当年烤焦的那一块鹿肉。

探春可把鸳鸯袭人讨了去当左膀右臂。酒桌上应酬完一群油头粉面的小开和老男人,姑娘们在回家的车上爆爆粗口,说一席体己话,相互慰藉。

晴雯不必死于肺结核。我们有利福平。她该平平安安活到九十五,开一家刺绣馆,三五高徒,上百门人。一辈子多少情事孽债。多年后宝玉给她的微博点个赞,她看了嗤笑一声,“当年我竟迷恋过这轻狂小子。”

妙玉开一家茶道馆。门前一株梅树,三五青柏。智能化的煮茶机,自动化的洗碗器。一流的安保系统。夜里往大洋彼岸的服务器上提交新的代码。人生的终点是土馒头,但人间仍然有这么多可爱的东西。

红楼是一部艺术悲剧。悲剧在于,书中所有人无法选择地成了鲜花着锦、烈火烹油的祭献品。但现实又太可爱。在这么多黑暗、陈腐、丑恶的事实、历史和叙说里,一代又一代的人仍在寻找新的可能,试图创造一种不成为祭牲的命运。

悲观绝望吗?就看你想活在一种确定的艺术想像里,还是学习这个世界的不确定和可能性。


我没什么才华,所以只能拼命。


欧式几何如初恋般美好。


所以谓人皆有不忍人之心者,今人乍见孺子将入于井,皆有怵惕恻隐之心;非所以内交于孺子之父母也,非所以要誉于乡党朋友也,非恶其声而然也。无恻隐之心,非人也;无羞恶之心,非人也;无辞让之心,非人也;无是非之心,非人也。


用户 = 资源
资源 = 一切附加值的开发

所以,将用户的刚需做好做强,免费提供给用户,养成用户粘性,然后不断开发附加值。
这是圈养绵羊,定期薅羊毛的节奏。


人的一生有五件事情。

  1. 争取自己的权利、实现自己的价值;
  2. 照顾好自己的家人;
  3. 帮助善良的人;
  4. 为自己的种群和同类发出声音;
  5. 为自己的民族和国家奋斗。

你这一生,做到前两件事就不错了;做到前三件事,你就是一个伟人了。但是,任何颠倒上述次序的人,都不值得信任。


德不近佛者不可为医,所以,医生不是个普通的职业。

2016 年 9 月

Protobuf 生成的符号,不同版本之间会冲突。目前没有什么好办法解决。考虑着用 objcopy 整个刷一遍,加个 prefix 之类的。不过好 hacky,而且工作量好大。

崩溃脸。


map.py
1
2
3
inIter = ['adam', 'LISA', 'barT']
regNames = lambda iter: map ((lambda inStr: inStr.capitalize()), iter)
print regNames (inIter)
reduce.py
1
2
3
inIter = [1, 2, 3, 4, 5]
prod = lambda iter: reduce ((lambda x, y: x * y), iter)
print prod (inIter)

Linux 信号与 Python 的 signal 库。

Linux 信号是一些 INT 值,用来与进程通信。进程可以选择忽略(ignore)、默认(default)和捕获(catch)三种方式处理收到的信号。常见的信号可以用 man signal 来查看。

Python 的 signal 库提供了 Linux 信号的整数定义,并提供了 signal.signal(SIG, handler) 方法来为当前进程注册捕获信号后的处理方法。


评曹操:虽有经天纬地之才,却无济世救民之心。


https://github.com/Liam0205/LaTeX_hard_way
坑开了,前言已经写好。
欢迎 star。


为什么阻塞异步是没有意义的?

老张爱喝茶,废话不说,煮开水。
出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。
1 老张把水壶放到火上,立等水开。(同步阻塞)
老张觉得自己有点傻
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。
3 老张把响水壶放到火上,立等水开。(异步阻塞)
老张觉得这样傻等意义不大
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
老张觉得自己聪明了。

所谓同步异步,只是对于水壶而言。
普通水壶,同步;响水壶,异步。
虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。
同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。

所谓阻塞非阻塞,仅仅对于老张而言。
立等的老张,阻塞;看电视的老张,非阻塞。
情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。


怎样理解阻塞非阻塞与同步异步的区别?

「阻塞」与”非阻塞”与”同步”与「异步”不能简单的从字面理解,提供一个从分布式系统角度的回答。
1.同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就得到返回值了。
换句话说,就是由调用者主动等待这个调用的结果。

而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。

典型的异步编程模型比如Node.js

举个通俗的例子:
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,」我查一下”,然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过「回电」这种方式来回调。

  1. 阻塞与非阻塞
    阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.

阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

还是上面的例子,
你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己「挂起」,直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了, 当然你也要偶尔过几分钟check一下老板有没有返回结果。
在这里阻塞与非阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。


回调函数是什么?

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。


少不入蜀,老不出川。


我有一群朋友,平时不相见——有些人甚至从没见过。但是,每一次聊起,都会发现,他们比上一次都更优秀更厉害了。这群朋友,每每激励着我往前走,让我不敢有丝毫松懈,并最终让我变成更好的人。我想谢谢你们。:)


有没有道理其实是其次,重要的是对方听起来要开心,这样你才能把事情做成。光证明自己正确,没有任何价值。

2016 年 8 月

CPU 资源宝贵,所以不能让 CPU 打盹,要做CPU 调度

最开始,叫多道程序,谁不用 CPU 就交出使用权让别人使用。缺点是有些任务需要立即响应。

后来用分时策略。缺点是如果有程序死循环,整个系统就挂了。

现在用多任务系统——各个进程相对独立,寻址空间相互隔离,操作系统有最高的优先级可以去分配 CPU 资源。现代操作系统几乎都是这种形式。


操作系统的一个主要功能是提供抽象的接口,另外一个主要功能是管理硬件资源。


计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。


维护法律本身比维护是非对错更重要。

2016 年 7 月

太平本是将军定,不许将军见太平。


礼恒敬之,心恒爱之。
——卫鞅致白雪


君有此言,白雪足矣。古人云,冬有雷电,夏有霜雪,然则寒暑之势不易,所谓小变不足以妨大节。只要心正,金钱未必不能用于官场。君之内性,强毅刚烈,疾恶如仇,初入秦国,万莫以官场瑕疵萌生退意啊。
——白雪致卫鞅


Mac 中获取 MD5/SHA-1/SHA-256 的方法

1
2
3
md5 foo
shasum -a 1 bar
shasum -a 256 baz

关于英语中表示民族的后缀:-an/-ian/-ese/-i/-man

https://www.byvoid.com/zhs/blog/londoner-parisian-milanese-baghdadi

2016 年 6 月

世界上有两种「没有bug」的代码。一种是「没有明显的bug的代码」,另一种是「明显没有bug的代码」。第一种情况,由于代码复杂不堪,加上很多测试,各种coverage,貌似测试都通过了,所以就认为代码是正确的。第二种情况,由于代码简单直接,就算没写很多测试,你一眼看去就知道它不可能有bug。你喜欢哪一种「没有bug」的代码呢?

摘自:http://www.yinwang.org/blog-cn/2015/11/21/programming-philosophy


神奇的俄勒冈人民:

http://www.kiro7.com/news/trending-now/man-on-horseback-lassos-thief-at-walmart/336152462

有个女性的自行车被小偷骑跑了,见义勇为的牛仔骑上马,用套索把小偷套住,然后一路拖回了沃尔玛,交给警察后要回套索潇洒离去……


幻灯片的英文是 slide(show),是用来做演示(presentation)的文稿。beamer 是 LaTeX 的一种文档类,可以制作 PDF 格式的幻灯片(演示文稿);PowerPoint 是微软 Office 系列的一部分,可以制作 PPT 格式的幻灯片(演示文稿)。


但凡开口便声称「中国人不靠中医早死了」的,大多数是没有生物学常识;但凡开口便声称「古人经验如何如何云云」的,大多数是循证医学不及格;但凡开口便声称「中医有千年级别经验」的,则是双通道立体式傻逼。

2016 年 5 月

什么样的能量才能支撑一个人走过人生的低谷和迷茫?

一只船孤独的航行在海上,它既不寻求幸福,也不逃避幸福,它只是向前航行,底下是沉静碧蓝的大海,而头顶是金色的太阳。
莱蒙托夫


我认为,不管碰壁多少次都不放弃的人,才有可能成功。


今天看见新闻,讲广东省人民医院的退休医生陈仲伟不治身亡。砍伤他的凶手,曾是陈医生二十余年前的病人。

今次不对陈医生和这位凶手做任何评价,因为不了解事情。然而看到一些同样不明就里的人,辱骂、污蔑、恶意揣测逝者,甚至尝试为凶手开脱、洗地,实在无法接受。因此,翻出鲁迅先生于上世纪写下的文章,摘录两条如下。

我觉得中国人所蕴蓄的怨愤已经够多了,自然是受强者的蹂躏所致的。但他们却不很向强者反抗,而反在弱者身上发泄,兵和匪不相争,无枪的百姓却并受兵匪之苦,就是最近便的证据。再露骨地说,怕还可以证明这些人的卑怯。卑怯的人,即使有万丈的愤火,除弱草以外,又能烧掉甚么呢?
——鲁迅《杂忆》一九二五年

在中国,尤其是在都市里,倘使路上有暴病倒地,或翻车捽摔伤的人,路人围观或甚至高兴的人尽有,有肯伸手来扶助一下的人却是极少的。
——鲁迅《经验》一九三三年


今天在看「食梦者」的时候,听到爷爷的一句话,瞬间哭出来。

将一件事情做到自己满意为止,因为:那是你自己选择的

「自己的选择」,重若千钧。


Cpp 中标准类型初始化的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>

using namespace std;

struct Foo {
Foo () : f () {}
int f;
int g;
};

int main () {

int a;
int b = int();
int *c = new int;
int *d = new int();
int e;
new (&e) int ();

printf ("a:%d, b:%d, c:%d, d:%d, e:%d\n",
a, b, *c, *d, e);

if (nullptr != c) { delete c; c = nullptr; }
if (nullptr != d) { delete d; d = nullptr; }

Foo bar;

printf ("bar.f:%d, bar.g:%d\n",
bar.f, bar.g);

return 0;
}

输出:

1
2
a:1624367158, b:0, c:0, d:0, e:0
bar.f:0, bar.g:0

编译器:

1
2
3
4
$ gcc -v
Apple LLVM version 6.0 (clang-600.0.45.3) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin15.4.0
Thread model: posix

推一篇 Rachael Zhang 的博文:12 篇 NLP 论文通读


本质上,我们都是在用生命换取才华,生命流逝,才华却不见涨,你是不是活该叹息?


弱者表演和平,下场必然万劫不复。


无情的现实时而如怪物一样,意图破坏我们的理想蜂拥而来。


有些人的存在就是让你不舒服的。他们出身比你好,比你有钱,水平比你高,最最关键的是还比你努力。每当遇到这种人,我就感觉自己存在的意义不啻遭到了一次粉碎性骨折。

2016 年 4 月

程序:一般是一组CPU指令的集合构成的文件,静态存储在诸如硬盘之类的存储设备上。
进程:当一个程序要被计算机运行时,就是在内存中产生该程序的一个运行时实例,我们就把这个实例叫做进程。
装载:上述从硬盘上的静态「程序」到内存中动态的「进程」之间的转变过程就叫做装载。往通俗里讲,就是启动一个进程。


孙燕姿的歌太有味道,以至于学习、工作的时候不能放燕姿的歌,否则就会跟着唱起来,完全无法进入学习工作状态。

这真是……


Linux 中的环境变量 LIBRARY_PATH 是在 gcc 编译过程中寻找库的路径;环境变量 LD_LIBRARY_PATH 则是程序运行过程中,寻找动态库(.so 相当于 Windows 里的 .dll)的路径。

将所需 .so 放在特定目录,然后修改 LIBRARY_PATH 可以解决无 root 权限时缺库无法编译的问题。

修改 LD_LIBRARY_PATH 通常是危险的。因为,如果有人在 LD_LIBRARY_PATH 下放入了植入恶意代码的重名动态库文件,那么程序运行时加载就可能出现不可预知的错误。


设计模式的存在就是为了抵御需求变更。
https://segmentfault.com/a/1190000004907985


GitCafe 被 Coding 收购了,好多东西要转移。


RSA 公钥验证和匹配的已知可信远程主机是一种有效防止中间人攻击的手段。不过在批量 scp 或者 ssh 的时候,可能会出现一水儿的 RSA 公钥验证请求。这种时候,要不然需要手工输入一长串的 yes;要不然连输入的机会都没有,就被刷屏了。

避免这种情况,可以在 scp 或者 ssh 的时候加上 -o StrictHostKeyChecking=no 即可。

例如

1
ssh -o StrictHostKeyChecking=no remotehost

Boom Boom Boom!


再见我科。


咏春中的「日字冲拳」的「日」指的是拳头握住之后,指缝形成的「日」字。


幸福如同太阳和口渴:你无法把太阳看的清清楚楚,也不能一劳永逸地解决口渴的问题。
——Aurelius Augustinus


最近在补老番:食梦者。高木和真城真是很好很好的朋友啊。

「当在低估有人以行动拉你一把,当你被人羞辱有人上去给他一拳」。这种感觉,真是好极了呢!少年の热血!


看着出身比你好、年纪比你小的人,水平比你高,还比你优秀。这种感觉,真是一刻也不敢放松自己,停下学习。

要更加努力啊!


Mac 迅雷用户拟集体诉讼迅雷公司

我也是迅雷的 Vip 用户,之前充了 2 年的会员,就为了在 Mac 上有一个好使的下载工具。然而,在 Mac 上使用迅雷可谓是磕磕绊绊,经常遇到高速通道无速度、下载进度在 90%–99% 循环的现象。我以为是个例,是我计算机或者网络环境的问题,直到在知乎上看到孙先生指出这是一个普遍现象。

哎,如果在 Mac 上不好使,那迅雷你就别搞这些名堂嘛。搞出来,然后撂挑子不干,这不是耍流氓嘛?


网站原来用的 MathJax 是 StaticFile 的 CDN。结果 StaticFile 更新 MathJax 的速度太慢了,与 Chrome 的版本更新脱节,导致数学公式在 Chrome 里总会多显示一条竖线。

现在用 BootCDN:<//cdn.bootcss.com>,用上了最新 2.6.1 版本的 MathJax,一切就正常了;它支持 HTTP 与 HTTPS 自适应,而且访问速度还比原来提高了一些。

可见 BootCDN 是个好同志。


曹晔(我不认识)在知乎上回答了一个问题,内里的说辞,我很赞同。

于是我回了一句话:挣钱和养家,是两件事情。

养家不在乎男人挣多少,而在乎男人心里是不是把这儿当家,是不是把他老婆孩子当家人。


Right-BICEP 法则是一个有关「单元测试」的标准。其中 Right 指程序的正确性,BICEP 每个字母代指一个测试的方面。具体来说:

  • Right: 传入程序单元期待的参数、数据,是否能够得到正确的结果。
  • Boundary Conditions: 程序单元是否能够正确处理所有的边界条件。
  • Inverse relationships: 反向测试。比如你写了一个求平方根的函数,那么它的反向就应该是求平方。因此,你需要验证 $x = (\sqrt{x})^2$。
  • Cross-check: 交叉测试。比如你写了一个求平方根的函数,那么你可以用你的函数产生的结果与系统库里对应函数产生的结果做对比。它们应该得到相同的结果。
  • Error-condition: 异常情况。你应该验证在发生异常情况时,你的程序能够正确处理。比如:硬盘满了、当前目录无写入权限、网络通讯中断了等等。
  • Performance: 性能。你应该检查,在程序有大量输入的情况下,程序是否正常运作。

一颗心


一个不是 58 同城的神奇的网站

嗯,用来搜各种整数序列的。


CCTV2 以前有个节目叫赢在中国,节目组出些题目考一些想创业融资的创业者一些情景问题,创业者回答,一些商业大佬做嘉宾点评。

有一期给创业者出的题目是出现了公关危机怎么办。有个选手上来大谈危机其实是竖立形象,宣传营销的好机会,要利用危机证明企业其实是个优质企业云云。

作为当期嘉宾的马云点评说:「在我看来抱有这种想法就是蠢,出现危机了第一件事就应该是反思自己,把造成危机的原因解决掉。你处理的好了,才有可能谈竖立形象宣传营销,哪些都是后面的事。」


正难则反的另一种解释:

Matrix 67 描述了一个很有意思的问题

这个问题从正向证明十分困难,因为我们很难罗列所有可能的面积小于 1 的图形,也很难找到这些图形有什么规律可以描述。于是,我们可以转而证明:对于任何面积小于 1 的图形,我们总能找到某种画网格的方式,使得所有的网格交点巧妙地绕过该图形。

热评文章