bookmark_borderb站300万播放量视频《深扒衡水中学5宗罪》观后感

先放视频链接。再说我对视频作者各种观点的看法。

1. 视频作者认为衡水模式很贵,学校赚了很多钱,他们打着拯救穷苦人家的幌子,实质上是万恶的资本家。

这好像是衡水最近特别招黑的主要原因。毕竟他们学校内卷已经卷了十多年了,没理由今年开始突然被人骂。

连教育开销都已无力支撑的家庭越来越难靠教育获得拯救,这已经不是什么秘密了。

寒门再难出贵子

按视频作者的说法,包括食宿在内衡中每年的费用至少2万起步,复读生根据高考成绩阶梯式收费,分数越低越贵,最高收费可达3万5一年。

我听完的第一反应是“好像可以接受啊,这个价位换这个产出太值了”。毕竟高考在中国实在是太重要太重要了,对绝大多数普通人家来说,提高一档的高考成绩带来的可能是整个人生轨迹的改变,而这总计6万多的学费在你之后人生中的任何时间都不太可能带来比这更高的回报了。除非你炒比特币。

我甚至怀疑国内是不是对私立学校有不得以营利为目的之类的约束,不然衡中完全有机会提出更高几十倍的学费,彻底把自己打造成面向中高收入家庭的高考保险级学校,而不是每年只收2万多包吃住。

2. 视频作者认为衡中吸收了最好的教师和学生资源,对其余学校不公平。

这里我有个疑问,那至今为止各地的重点中学吸收最高分的学生,招募最优秀的教师,是不是也对其他非重点高中不公平?

如果是,那各个高中应该不设录取分数线,所有考生随机分配到一个学校去读书,彻底杜绝重点高中的存在。
各校老师也应该统一工资标准,工资只和自身有关,和所在学校和所教学生无关。(这一点听说日本已经做到了,不过也仅限公立学校)。
做到这个制度改革之后就可以问罪衡水中学了。

如果不是,那么对衡水中学的这一指责就不成立了。

3. 视频作者认为衡中模式导致高考内卷化,对所有人都有害无利。

我很惊讶,原来你认为高考比的并不是内卷能力吗?

一位衡水中学女生保存自己从高一到高三所做过的卷子,加起来足足有2.41米,她最后考上了香港大学。

在我看来,高考学的东西本来在之后的人生中用处就趋近于0,高考只是为了看你卷到极致能到达什么高度而已。

更严格的环境让你在高考中展现出了更接近你最大内卷潜力的能力,留下更少遗憾。

其他人因为你的遗憾少了而被挤到了更低的排名,那么有两种可能。一是他也尽力了,但是他的最大潜力不如你,技不如人没办法,高考就是为了把你和他区分出来的。二是他过得比你轻松了,没有卷出自己的最大潜力,他留下了遗憾。

无论哪种情况,被别人卷下去都是一件很残酷的事实。但只要高考考察内卷极限的目的不改变,增强内卷力的教育趋势就不可避免。

作者觉得这是无效内卷,我觉得有效,至少对目前的高考来说这才是残酷的正确选择。

4. 照这么说那是不是工作上的内卷也是无可厚非的呢?

这就不一定了。

毕竟工作的目的不是考察内卷能力,而是创造价值的能力。

现在人们抱怨工作内卷,是担心公司之间达成垄断的默契,让本来没有内卷价值的工作岗位也被迫内卷。

为了留在阿里华为,你内卷着拼命加班,最后付出的比别人多终于留住了,这一切都是值得的。

但一家平稳运作工资普通的小公司为了搭上内卷大潮的顺风车,也要求员工必须签奋斗者协议放弃加班工资和调休,却没有任何可以匹敌华为的经济奖励,那就是无效内卷了。

我想大家不想看到的是后者,而对前者我只能说一句佩服。

有人说阿里员工跳槽到微软还在拼命加班,还被其他同事排挤,嘲讽他是奋斗b,好像是担心他破坏外企轻松的工作工作氛围。对这一点,我个人觉得奋斗b没错。

我所在的公司虽然比不了欧美外企,但比国内的工作压力或者说内卷水平是低得多的。很多在我看来扔到国内连工作都很难保住的人在日本公司里也能稳稳当当干一辈子。

待在这样的环境里我感觉很轻松,也很焦虑。

轻松是因为工作真的很轻松(汗),焦虑是我觉得现在的轻松只是因为高内卷地区的竞争者们还没有机会出来而已。如果哪天我不得不在日本和国内的同行们同台竞技,我还能保得住现在这样的清闲工作吗?

这种危机感也许和我的焦虑症有一定关系,但作为一种居安思危的意识,不失为一种好的焦虑。

bookmark_border韩寒:我们这个民族似乎特别容易被侮辱

在 s1 看到对标题上的那篇10多年前的文章的转载,下面是对这篇转载的评分。

s1论坛用户对这篇转载的评分

我一时竟分不清这是缸中之脑策略的成果,还是其他人怕被牵连导致的沉默的螺旋。
会这么想,显然我也认为当前的”辱华”标准过低,甚至比韩寒这篇文章刚出世的那个年代更低了。

唉,想了很久,改了半天,最后还是全删掉了。
虽然我没有审核的压力,但还是有身为国人以本人身份输出非主流观点的压力的。
在陈年录播,微博,文章,作品,经历都可以被翻出来定罪的年代,想不用担心留下把柄地表达观点,只有靠匿名小号了。
自保功夫不到家,还是别说话算了。

bookmark_border“技术”重要还是”作品”重要?

今天重温 LoL 10 年来的经典名曲,有感而发。


BGM 就用这首 《透体圣光》叭~ 取自 LoL 官方 youtube 账号

我不时会被某些作曲人或作画人的惊人产能震撼,然后感慨一番好想变得高产呀云云。但回到现实生活,比起做出作品,我却总是更沉迷于提升所谓的“技术”,和在这个过程中获得的成就感。

以程序为例,我的程序人生起步于在大学时期想做一个手机游戏的朦胧热情。

当时我的技术——或许都不配称作技术——实在有限,但热情持续了很久,支撑着我写了一版,又推倒重新写了一版,最后又推倒重新写了一版。

期间我的各项相关技能得到了极大的提升,但遗憾的是每一版游戏都没有完成,甚至是差得很远。

我不在意,毕竟我学到了技术。

我本以为随着我的技术提升,做项目的速度会越来越快,最终总有一天能在热情熄灭前完成一个项目,然而现实是虽然我已经比大学时的我强上了千百倍,却再也没有完成过任何一个个人项目。

我的 github 私有仓库里有无数的烂尾楼,每一个都让我有了一定的技术成长。

是的,我获得了技术,获得了大量的技术,可以在同事面前收获尊重的技术,可以在某些领域自我满足的技术。

但是我没有作品。

没有作品就像没有孩子,随着年龄的增长,它越来越让人焦虑。(好吧,其实我对没有孩子反倒没那么焦虑)

我想着这种事随着能力提升水到渠成就好,但这也许只是我的一种拖延和逃避。

今天听 LoL 又让我向往起了这种能在历史中留下自己痕迹的方式,创作。

在历史中留下痕迹这话有点大了,应该是想在自己的一生中留下些什么吧,或者是一种总结?具体为了什么我还不是很清楚,但我很清楚我很想要它。

bookmark_border《批评官员的尺度》读书笔记(一)

本来想等读完了再写读书笔记的,可惜我读得实在是太慢了,看的又是纸质版,怕看到后面再想找前面觉得有意思的地方再搜不到了,所以就边看边写一些笔记吧。

我觉得书名叫做《美国言论自由简史》比较贴切

首先这本书名翻译的比较迷惑,虽然原书名《Make no law》对我来说也够不知所云的了。。

以我目前看到三分之一的进度来理解,这应该是一本讲美国言论自由相关的历史的书。不过不是按时间顺序写的历史书体,而是通过讲述在言论自由的判决倾向变化过程中受到影响,或者影响过判决走向的相关人群的一个个微型个人传记。

用无数的个体经历组成一段历史,我特别喜欢这种体裁的历史书。以前读过的《心外传奇》,《量子理论》和《众病之王》都是这种写法,让我特别迷恋。我曾经想过如果我能读透前面的某一本书,然后把其中的故事口述出来讲给别人听,那场面,太帅了!

说回这本书,书的副标题是“《纽约时报》诉警察局长沙利文案”,书里也确实是以这个案件开篇,但之后作者很快开始放飞自我,讲起了历史。到现在,我已经有大约 80 多页没读到过“纽约时报”这几个字了。

另外一个印象比较深刻的地方是,这本书的译者非常喜欢加译注。有些是介绍原作者提到的书在国内已经引进了,书的译名译者出版年份之类,有些则是对原文内容的有趣补充。比如原文说到一战期间美国社会避提德国,源自德语的东西都要改个名字避嫌。比如德国泡菜(sauerkraut)在当时就改叫了自由泡菜(liberty cabbage)。到这里我已经觉得很搞笑了,一看下面译注更离谱,原来当时的汉堡包(hamburger)也改叫了自由三明治(liberty sandwich)。看来自由(liberty)自古以来就是美国的政治正确啊哈哈哈!

bookmark_border比起开放世界,我更喜欢令我安心的有限规则

在五一黄金周大连休里,我靠着每天晚睡一点点,终于又一次把生物钟扳回到理想位置啦!

日本也有五一黄金周哦

上次回调生物钟后生活质量得到了极大提高,可惜只持续了一两周就退回去了。这次我又增加了睡前拿走手机,吃完安眠药后只在台灯下读纸质书这个环节,希望可以坚持到比上次更久!
好了,现在是上班前的清晨,趁着头脑清醒,写一下交换日记。

突发奇想,来聊聊我一直很在意的开放世界类游戏的问题。
先说结论,我不喜欢开放世界类游戏 O_o

看到这类画面就会引起身体不适

等等,别生气!这里的不喜欢可以理解为不愿意主动去碰,但开放世界类游戏其实各有各的特色,有些在我接触之后还是很上瘾的,比如环世界这种。
只是当我看到一个游戏是开放世界类的时候,第一感觉是不知道要做什么。也许有人会说做你想做的任何事啊!可我自己想不出能让自己玩得开心的事啊。
在有限规则的游戏里,我只需要关注技术层面,在策略方面我要做的只有”选择”。选择是很容易的,说白了我可以瞎JB选,然后专心在自己的游戏操作上。这类游戏本身也以游戏操作过程中的直观趣味性为主要卖点,你的宏观选择也许决定了你游戏的胜负,但操作过程的乐趣让你即使输了也很尽兴,当然赢了更爽。

我的17连败黑历史。人菜瘾大就是我!

举例来说,我曾经沉迷过的 象棋,打扑克,弹玻璃球(它是有规则的!),CS,魔兽,拳皇,街机释厄传,合金弹头,暗黑破坏神,到现在的LOL,都是靠游戏规则让我觉得很有趣。
这么一列,我又发现了他们的另一个共性,就是可重玩性非常高。难怪我一直很抵触只能玩第一次的体验类游戏。

这黑棋还不赶紧投降?

说到开放世界,我就泛起一阵不舒服,生理性的。可能和未知使我痛苦相关。
我喜欢充分了解自己当前处境时的那种安心感,像在家一样。所以想到独自出门旅游,甚至出门本身都让我很不舒服,我也无法享受它们的乐趣。(如果有人带队,我跟着混一下还可以= =)

跟公司旅行去了一次富士山,挺高兴的,时常回味

我能挑战的未知,是脚踏在坚实的已知基础上,可以安全地探索的未知。对程序这块我现在已经感觉比较安全了,所以我可以享受各种新鲜的技术成果,就像喜欢旅游的人可以享受世界一样。
但在需要自己探索的开放世界类游戏里,对整个系统运作方式的不了解让我举步维艰。所以我玩一款新游戏一般都是先在网上云一个别人的游戏流程,看过别人玩了,知道大概怎么回事之后再去玩就能安心不少。说来惭愧,我是那种有攻略一定会查攻略,然后按着攻略一步步走的小白玩家,甚至可能读攻略比玩游戏本身更上心。所以玩仙境传说的时候我虽然常看17173,也买了无数本攻略,但自己实际上到最后连人物2转都没打到。

————————————————————————

写到这儿突然发现我是不是之前写过这个话题?虽然没搜到,但是这种感觉还是让我挺不舒服的。这就是既视感吗?
好像跟朋友聊天时把一段经历重复讲了几遍,有种自己翻来覆去只有这点东西的羞愧感。

我脑中比较成型可以自恰的思想确实不多,有些还很混沌朦胧的思路会靠写日志一边写一边理清。所以写在这里的东西有时候前言不搭后语,同一篇日志中观点直接前后冲突什么的都是有可能的,我在磨合它们。

之前我也想过只把整理好的清晰的观点输出类文章发出来,后来我决定这里就是给自己整理思路用的地方,自用优先不考虑阅读体验,所以发文频率增加,而逻辑性下降了。

反正是一年都没几个游客的地方,管他的呢!让阅读体验见鬼去吧! >_<

bookmark_border我写博客,不就是在搞交换日记?

交换日记

回完黑马君的评论之后突然想到,每次都是我们俩互相评论,我们写的也都是自己生活中的琐事,这种形式不就是传说中的交换日记?!

交换日记这种形式我在高三的时候就体验过了。当时正是博客开始流行,韩寒的博客被人印成书拿出来卖的时候。当时还没有智能手机和移动互联网,联网的电脑也不是家家都有,学校里最流行的娱乐方式还是在横格本上画方格然后用铅笔橡皮玩五子棋和打飞机,高级一点的也就是用文曲星玩RPG游戏罢了。但是在那个时候,突然有一个同学开始拿一个新的本子写日记,然后被周围的同学传阅和口头评论。后来这个传阅范围越来越广,大家开始在上面手写留言评论再传回给作者看。现在看来,这就是原始版的博客啊!

文曲星上的rpg

后来我也跟风写起了自己的传阅日记,只在小范围内和朋友们分享。我和那个最初写传阅日记的同学关系比较好,会互相分享自己喜欢的人的程度,所以我们俩会互相看对方的日记并评论,那就是我人生中第一次交换日记的经历了。

高三是一个很敏感又很迷茫的时期。虽然平时会和很多同学聊天,一起吃饭一起踢球一起上厕所,但有些深入的思考和有点撒娇博安慰式的任性话是不适合在人面前直接说出来的。这时候交换日记横空出世,把我们很好奇但没有途径深入交流的内心想法写成文字,大家在自己的座位上默默地读,之后写下自己的看法,有种一直隔着衣服挠不到的地方突然被人舒舒服服狠狠地挠了个爽的满足感。

转眼到了现在,博客和RSS一起走过了他们的辉煌,再次回归小众个体。我眼见他们平地起高楼,宴宾客,楼塌掉,并参与了其中每一个阶段,不由得感叹沧海桑田。

说回交换日记,重点在交换,毕竟想看评论嘛。

现在就一个稳定读者,所以我每次写完都在想,是不是有点强迫黑马君给我评论的感觉?黑马同学会不会很有压力?毕竟我写日记的频率越来越高,比起看他的博客,读我这边的负荷越来越大了。

the 黑马

以前在百度空间时代,为了得到更多的评论,我经常去其他用户的空间串门留言。那时候好像有个好友日志更新提醒,反正加到的好友越多,日志越容易被看到,得到评论的机会就越高。独立出来之后我几乎不怎么给别的博客留言了,不知道这是一种怎样的心态变化= =。

其实出去串门主动结实新朋友挺好的,我的好几个最终发展到线下相识的网友都是博客时期认识的。隐私方面,还是以前的想法,把这个号,linkedin级别的实名号,还有没有任何人认识我的小号各自区别开来就好啦。会社死的内容就发小号好了,哼哼。

bookmark_border我学习新技术的能力下降了

我学新技术的能力下降了。

或者说,绝对理解能力方面我比学生时代强了很多,但相对于我的年龄,我比业内同龄人的学习热情和学习效果的优势没有五六年前高了,甚至是差了很多。

我的理解能力强了,但长时间使用我的理解能力去理解全新技术的耐心没有了。产出 = 理解能力 x 使用能力的总时长,被乘数增加,乘数降到0,目前就是这样一个状态。

也许这就是业内淘汰 35 岁以上程序员的原因,是生物随年龄增长的必然趋势。也许是我五六年前开始的强烈焦虑症状让我无法长时间集中精神,精神药物打破了我脑内原本对学习有利的化学平衡。

当我受焦虑症状煎熬的时候,我劝自己放弃对能力的贪念。如果我的身体条件确实不支持自己在这条路上继续领先,那就转而享受生活,培养生活情趣,准备安度余生吧。

享受生活

可我实在是个没有所谓生活情趣的人,没什么能特别取悦我的事。

我喜欢玩竞技类游戏,但并不擅长。尤其长时间游戏后会有浪费时间的负罪感,我对这种情绪还没有完成自洽,不能畅快地享受游戏。

我喜欢画画,至少曾经很喜欢。这个月我甚至认真研究了一下在日本报名通信制美术大学的方法,可惜它要求提供本科成绩单毕业证和大使馆公证过的翻译件等等我很难简单集齐的手续,只好作罢了。

通信制美术大学

画画的乐趣对我来说和编程很接近,它们都是过程比较漫长而且有些枯燥,但完成一件作品提供的满足感十分充实而且可以反复回味很多年。但这里有一个前提,就是完成的作品本身有一定的水准,至少自己能够满意。

我对自己的临摹能力十分满意,包括临摹画稿和临摹3维物体,就是画静物石膏像之类的。后来我对仅仅是临摹已经不能满足,想开始原创,这时候我震惊地发现我的原创作品水准是如此之低,以至于我非但无法从画画中获得乐趣,反而让自己对画画产生了抵触情绪。几次尝试原创效果都非常糟糕以后,我停笔不再画画,至今已经八九年了。

说回培养乐趣,安度余生。

在我无法提升程序能力之后,我回顾了一下自己的人生,曾经为什么事情非常高兴过?好像每次出门和别人线下玩耍都非常开心满足充实,不过现在疫情期间,这个方向就不谈了。第二个让我真的非常快乐的事情,是学习。中学高中大学包括在画室学素描水粉,那种沉浸下来按部就班让自己的某项能力渐渐增长的生活真的很不错。

我喜欢这种有监督的只要按照指定步骤学习,就一定可以有所成长的标准学习生活。对下棋或者玩游戏,体育运动之类几乎没有标准教材,主要靠自己体会自己感悟到诀窍靠身体去学习的项目非常不在行。所以我的游戏玩得很烂,从FC时代就总也通关不了游戏,LoL玩了十年十年都是黄金段位,体育课永远学不会颠球和抽射(也永远学不会追女生谈恋爱= =)。所以成体系的有指导的学习是我的乐趣来源。

万年黄金,大神求带

想充实,想快乐,怎么办?去报班学习吧!现在网课这么多。

说到网课这件事,一个是我前面提到的想报名美术大学系统地学画画,另一个是和一个国人同事聊到的想买一个 coursera plus 年度会员,学网课顺便赚些证书贴在 linkedin 上。

最理想的情况是在 coursera 上直接学画画,可惜我搜了一圈也没找到适合我的美术方面的课程。coursera 毕竟是理论课为主,上面顶多有些艺术鉴赏课,美术史,艺术设计理论之类形而上的东西。所以学 coursera 和学美术还是得分开搞。

国内有很多美术在线教育,我记得以前查到一个饭糕学院,最近又找到一个轻微课,都还可以的样子。费用方面真是不便宜,国内学画画有种越来越贵的趋势,现在报名学习要 5000 rmb 左右了。这里涉及到一个我的人民币和日元互不兼容的价格观的问题。一个东西卖 5000 rmb 我会觉得非常贵,贵到心痛。但换算成 8w 日元的话就只是有点贵,有些犹豫的感觉了。我还记得刚到日本的时候什么东西都要换算成 rmb 才能对它的价格有一定概念,而换算过后大多数东西都贵得承受不了。现在日元对我来说有点像游戏货币的感觉,花多了也心疼,但就是 wow 里花金币程度的心疼吧。可能因为我在国内一生都受到没有钱的限制,所以对 rmb 非常敏感。而到了日本之后即使再穷的时候账上也有至少 100w 日元的余额,所以并没有真的为钱苦恼过,当然这和我没什么生活乐趣不怎么花钱的生活方式也有很大关系。

5k rmb = 8w jpy

写到这儿再抬头看看标题,好像完全没得关系啊。

行吧,反正这个日志主要是帮助我整理思路的,本来也没什么文学性。像上面这些内容是我最近经常思考的东西,但在脑内只能有个很混沌的大概感觉,不能把每件事捋清楚说明白。写字的过程让我可以把脑内的思考 dump 出来,一方面让自己也第一次真正看清我这些天的思考得到的暂时结论是什么,另一方面可以让自己不用担心忘记思考结果而让大脑得不到放松。现在可以放空自己,开始思考其他事情了。

bookmark_border又一次体会到国内强势的信息封锁

作为一个没有备案且服务器在海外的个人网站,写这种敏感内容大概会被墙吧。为了不连累我所寄宿的服务器上的其他站长,我尽量写得隐晦点好了。

起因是刚才看日本的雅虎新闻看到这样一条新闻: 「武漢のコロナ惨状伝えた市民記者の弁護人 当局が弁護士資格はく奪」。大意是之前有一个市民记者向外界宣传了武汉的疫情惨状被告了,当时有两个人给这个市民当律师。最近这个市民被判了4年刑,两个律师呢被吊销了律师执照。

我想这事肯定要掀起一股评论热潮了,就去微博搜了搜这里其中一位律师的名字,为了方便起见以下简称牛律师。搜索结果显示整个微博最近完全没人谈论这个名字,按时间顺序显示最新一条和这个名字相关的微博还停留在2016年!那知乎呢?不出意料完全搜不到。b站呢?想都不用想,没有。虎扑?肯定没有啦。百度?欢迎来到2016年。

事先声明我在今天之前完全不知道牛律师这个人,也完全没有为他鸣不平的意思,甚至他到底是无辜还是有罪我都还没有去了解。我只是感慨完全靠国内信息来源生活的年轻一代,会不会意识到自己已经是缸中之脑了。

有时候在微博上看官方披露一个信息,下面都是批判官方的评论,仿佛我们才没有被蒙蔽,官方的舆论引导根本敌不过人民意志的汪洋大海。被港台同胞喷被洗脑的时候我也会很不屑地想,你们根本不知道这届群众抗洗脑能力有多强,我们才不是外界想象的那么无知。

可会不会其实,这些都是官方设计好的?一切可以拿出来讨论的东西才会被发出来,哪怕是那些禁止转载关闭评论的新闻,也都是官方放出的被逼至窘境的假象而已?

对于真正想封锁的内容,哪怕是这位牛律师一般无足轻重的小人物,也能让你的一切信息从墙内完全消失。

我是从墙还不存在时就开始上网的一代人,对信息封锁只有厌恶。看着墙一层层累高的时候我还曾不屑地想,用这种拙劣的方式对抗科技的进步,真是外行才会用的蠢主意啊。想不到现在已经到了微博里都是「幸好有墙在,不然外面那些妖魔鬼怪都放进来,这批愚蠢的网民根本应付不了」的评论的地步了。有一次我看到微博里有人玩64的梗,下面有人特别着急地问,你们说的64到底是什么事件?我完全搜不到啊?有没有好心人给解释一下?我看了一下这个人的个人介绍,似乎是个普通的大学生。这样的身份不可能对网络陌生到无法查找资料,我只能认为他获取信息的全部手段都被操控了。他看到的世界是别人设计好的世界,但这个设计对他本人来说是无感知的,真的好像缸中之脑,楚门的世界。

抱怨就发到这里为止吧,毕竟我还没到想要揭竿而起的地步,只是偶尔想起来感觉有点恶心,憋在心里不吐不快罢了。

下面说一下我能想到的反制方法:定期看一些海外媒体的新闻。(需翻墙)

我之前可能说过,我除了每天看日本的雅虎新闻以外,还有一个专门收集海外媒体新闻的 rss 文件夹。以前我试过订阅英文媒体的 rss,但读英语毕竟还是过于痛苦了,所以现在我的海外新闻里全是海外中文媒体。这里列一下我的相关订阅源:

BBC Chinese – 主页

BBC News 中文网

新闻 – 美国之音

日经中文网

法广_头条新闻-RFI

澳洲新闻网

华盛顿手记

纽约时报中文网

这里有些 rss 源不是官方的,有些只订阅了某个子分类,反正不是很正式,只能说凑合看看,权当抛砖引玉了。

另外读这类新闻主要是为了平衡看国内新闻过多造成的偏见,并不是说这里的报道就可以全信。事实上这里有相当多反华立场的媒体,我自己也是本着屎里淘金的精神来浏览的。对一些过于离谱的报道,还是要综合国内外多方面的报道,只相信各方信息的交集部分比较好。

 

bookmark_border无断点,不编程

我对开发环境的基本要求之一是可以下断点单步调试。这很基础,却很重要。

代码自动补全和断点调试功能二选一?
我选断点。

点击函数或变量自动跳转到声明处和断点调试功能二选一?
我选断点。

静态类型推导,编译时类型检查和断点调试功能二选一?
嗯,是个难题。

这样讲应该足以解释断点调试能力在我心中的地位了吧。

为什么突然想起说这件事呢,是因为昨天晚上我为了给我的 php 开发环境安装 xdebug 折腾了一宿,有感而发了。

按说给 php 安 xdebug 能有多难呢?确实不难,我在公司和个人环境里也安过很多次了,基本没遇到过太大困难。可昨天的情况比较特殊,甚至堪称极端,真的是把一个简单的问题拔高到了面试题的水平。

事情的起因是,我想在元旦假期里学习一下 laravel。最新的 laravel 框架要求 php 版本在 7.2 以上,外加一些其他的依赖项。我这个博客是运行在一个 web hosting 服务器上的,想动服务器配置并不容易。我常用的 vps 是朋友买的,我本身是借宿在那里,也不想太破坏他的环境。最终我选择在 vps 上用 docker 实现一个满足 laravel 要求的开发环境,而这正是噩梦的开始。

在 docker 里跑 php,这个 php container 暴露给外界访问的端口就不能是 80 了。假设暴露给外界访问的端口是 8080,我访问这个 docker 内的 php 文件的方式就是 http://my.vps:8080/path/to/file ,看起来有点丑不是么。为了美化这个 url,我修改了 vps 本机的 apache 设置,给这个 8080 端口配置了一个转发用的子目录 docker,这样我可以通过 http://my.vps/docker/path/to/file 的 url 来访问 docker。怎么样,好看多了吧,哈哈!

到这一步做完,我才开始配置 xdebug,而这时,我的 IDE 和目标 php 服务之间已经隔了两层了。

 

冷静!仔细想想,就算不给 apache 配置 ProxyPass,它到 php 之间也是会隔一层的呀,所以这不算是增加难度。呃,但是算上 ProxyPassReverse 设置,我的 http header 在中间被改来改去的,还是增加了不稳定因素。反正先试试再说吧。

一试果然不行,连不通。

那就不着急了,先从头捋一遍通信流程吧。附上我最喜欢的 xdebug 通信流程图。

看样子浏览器到 php/Xdebug 这部分通信时没问题的,问题出在 xdebug 想回拨给我的时候。

查了一下,我用的 PhpStorm 的文档里有远程调试 php 时的指导方案

ssh -R 9000:localhost:9000 username@hostname

思路是让 xdebug 回拨的时候访问服务器端的 9000 端口,同时把服务器端的 9000 端口反向代理到我的 PhpStorm 所在本地主机的 9000 端口,这样服务器端 xdebug 的回拨可以最终被在本地监听 9000 端口的 PhpStorm 接收到,很合理。

不过我的环境里还涉及到了 docker,怎么让 docker 容器内的 xdebug 的连接请求转发到外部宿主上呢?因为我是用 docker-compose 创建的 docker,所以我首先尝试用 docker-compose 自带的 container 到主机的端口映射方法

ports:
  - 9000:9000

结果在 docker 启动时 ssh 的反向代理无法绑定到服务器端的 9000 端口,这招不行。为了确认原因,我在 docker 容器内和宿主服务器上分别用 tcpdump 测试 9000 端口上的通信内容。结果显示 docker 容器内的 9000 端口上确实有通信,但宿主服务器的 9000 端口上没有任何通信。看来 docker-compose 的 ports 是专门用来让宿主访问容器使用的,反过来行不通。

sudo tcpdump -i any port 9000

我知道 mac 版的 docker 容器访问宿主 ip 有一个 docker.for.mac.localhost 的 hostname ,但是在 linux 环境里对应的 host.docker.internal 不知道为什么没有被定义。

算了暴力点直接拿 ip 吧!我在 docker 里做了一个显示请求方 ip 的 php 页面,类似于下面这样:

<?php
echo $_SERVER[REMOTE_ADDR];

取到的 ip 是 172.19.0.1 。之后反复重启 docker 试了几次,ip 没变,应该是问题不大了,就它吧。

用这个配置测了一下,结果 PhpStorem 还是连不上 xdebug。。什么情况!

用 tcpdump 看了一下远端宿主服务器的 9000 端口已经有流量了,但本地用 wireshark 却看不到本机 9000 端口上的流量。PhpStorm 行不行啊,有没有在监听 9000 哦?用 360 流量防火墙看了一下,确实启用 PhpStorm 的监听模式后程序会开始监听 9000 端口,关闭监听模式后程序对 9000 端口的监听也会停止。

会不会是 PhpStorm 没听懂呢?下一个 xdebug 的命令行客户端试了试,没反应。行不行啊?又下了个 linux 版的在服务器上执行 ./dbgpClient -p 9000 ,能收到 xdebug 的回拨,进入调试状态。看来问题出在服务器的通信没有转发给我的本地主机。

为什么呢?没头绪啊。。敲个 sudo netstat -natpl | grep 9000 研究了一下,看到 127.0.0.1:9000 这里突然想起来,ssh 的反向代理默认只接受来自本地的通信,docker-compose 的容器默认是创建一个独立的内网 ip 用来通信的,反正不是 127.0.0.1 。会不会因为这个,所以 ssh 的反向代理没有受理来自 docker 的通信?

google 了一下,修改 ssh 的设置为 GatewayPorts clientspecified 可以让客户端决定服务器端绑定的端口可以接收来自哪些 ip 的通信。于是打开 ssh 配置文件,发现没有 GatewayPorts 的设置,那更好,直接添加在文件末尾,然后重启 ssh 服务。

 sudo vi /etc/ssh/sshd_config
 sudo systemctl restart ssh.service

之后在本地主机上重新执行 ssh 反向代理,这次要设置为允许接收来自外部 ip 的通信:

 ssh -R 0.0.0.0:9000:localhost:9000 username@hostname

这次,终于调通了。

下面是技术总结(太累了就贴张图吧 orz):

补充:

1. 为什么我在本地的 window 主机上可以使用 ssh 命令?
因为用的 Cygwin

2. 对所有 ip 开放端口访问会不会有安全隐患?
确实。应该可以把最后的 0.0.0.0 改成 docker 容器的 ip,如果他有固定 ip 的话。不过我只会在自己需要调试 php 的时候才会创建这个反向代理,我没在用的时候这个安全隐患不存在,我在用的时候有其他人入侵这个端口应该相对比较容易察觉到。这里确实是防范意识不足,偷懒了。之后会采用更安全的连接方式的。

3. apache 的端口代理到子目录会影响 xdebug 调式吗?
不会。无论访问子目录还是直接访问端口,设置在 PhpStorm 里的断点都可以正确生效。

bookmark_border“冷漠” “冷血”还是“冷静”?

标题说的是我自己啦。

从小我就发现我没有别人那么容易兴奋,或者说不容易投入生活?

小时候的表现是和家属院儿里的小朋友一起踢球捉迷藏什么的大家开玩笑似的想耍赖的时候会找我评理,因为我比起胜负心,通常表现得更看重规则吧。

在学校里的表现是我从不使用哪怕本人也认可的有调侃或贬义的外号称呼别人,印象中没有开过别人包含调侃或贬义性质的玩笑,同样也很反感别人对我开这样的玩笑。

呃,这样看起来,似乎只是个不合群的人而已。但我还挺喜欢凑热闹的啊,离不合群还是有些距离的,算小透明吧。

到这里为止,似乎和冷漠冷血没什么关系,但在我看来这里的逻辑都是一样的。我内部处理事情的方式就是让事情符合一个我认可的道理。当这个道理是大多数人也认可的道理时,我就是冷静的,当这个“道理”不是一个主流正能量的观点时,我就是冷漠和冷血的。

比如我曾经在公司午休的时候和中国人同事严肃地分享我认为法律应该允许把小于一定年龄(比如2岁)的婴儿以动物对待的看法。其内在逻辑是,很多人因为意外怀孕生育打乱了自己的人生,不得不想方设法遗弃或杀死自己的孩子然后被发现毁掉人生。有的人家本身愿意养育一个孩子,但当孩子落地时自带了整个家庭倾家荡产也难以治愈的遗传疾病时,受限于法律无法放弃这个孩子重新孕育第二胎,结果整个家庭陷入绝望。牺牲了这些父母和他们的家庭所带来的,是这些婴儿的免死金牌。从公利的角度来讲,他们父母为社会带来的利益的期望远大于为了保护这些婴儿生存社会所付出的代价的期望。从私利的角度来讲,这个家庭放弃这些无法承受的婴儿是对他们最好的选择。完全放弃婴儿的权益也不合理,但婴儿的权益应该附属于他的监护人,类似于宠物。我的设想是,在婴儿未满2岁之前,可以赋予父母对婴儿的处置权,类似于对宠物的限制,不可以虐待,但条件符合的话允许安乐死或出让。对父母之外的人,只要父母要求,婴儿仍然享有人类级别的权利,被外人伤害可以追究伤害人类级别的责任。

这是对我而言可以自洽的道理,但看一起吃午饭的其他人的反应,这似乎并不是受大多数人认可的方案,可以归入冷血范畴了。

最近又开始考虑这个问题,因为我刷微博时发现自己对很多社会新闻并不能产生和下面主流评论一样的愤慨。尤其在经历过很多新闻反转之后,我对我的愤怒更加的谨慎使用了。

有些新闻的事实比较清楚,但属于我的价值观里可以接受其存在的部分,这时候看到评论里一致的批判就会感觉很孤独。我想象如果我有了另一半,我们的宗教政治历史观或者部分其他价值观不完全兼容(which 几乎必然会发生),那我们还能有一个温馨和睦稳定轻松的家庭生活吗?理想的相处方式是求同存异,比如我不相信宗教,但不介意她是基督徒。我不会强迫她接受世界是物理的之类的科学观点,只要她不会在明知我的理性价值观的前提下依然用非理性理由对我进行宗教劝诱。反正互相尊重对方的存在吧,只要不造成损失和伤害。比如我可以接受她信基督,但不能接受她信传销。