《青铜时代的蕨类战争》读书笔记

 

蕨类战争这本书里有很大篇幅描述的是人类早期的发展历程,当然是更侧重于描述在黄河流域这片土地上的人类。如果要放眼整个人类的历史发展,我觉得你一定要去看一看《人类简史》,当然这个后面等一段时间我一定会再写一写。

“附宝”生黄帝是一个有趣的历史传说,但是作者告诉我们,这个神话故事反应了在遥远的古代,女性在社会中处于核心地位,孩子只知其母,不知其父的社会现象。这种观点就是告诉我们要回到历史环境中,站在当时人的角度去看待这些传说,我们就会得出很多有趣的推论。

(来自黄土原野的)黄帝和炎帝合作击败了来自东夷(今天山东一带)的蚩尤,确定了他们华夏文明的先祖的地位。到了现当代,我们说东夷基本都是特指日本。

尧舜也不算主动禅让,基本都是被后面的接任者和平夺权。

大禹、子契、后稷、伯益作为舜帝时期治水的F4组合,因为治水成功,得到了舜帝的封赐。因为有母亲吞吃薏苡这种植物而降生的说法,大禹就被赐姓“姒”(sì);子契(多音字qì/qiè/xiè,此处读xiè)则因其母亲吞了玄鸟之子(即蛋)而生下他,被赐姓为“子”,并受封到商丘;后稷被赐予姬姓;伯益赐嬴姓。分别成为了夏、商、周、秦四个朝代的祖宗先人。

但是从网络上搜索+维基百科来看,并没有说伯益是此时被赐嬴姓的;但是伯益的确是被认为是春秋战国时代秦国、赵国王室的祖先。

夏桀和商纣并不一定时昏君,暴君,后世如此说他们有两点原因:

  1. 政治需要。本书后面有内容反复说到,比如孟子为了宣传自己“仁者无敌”的思想,经常会“伪造”一些事实;韩非子为了宣传自己的法家思想也经常炮制一些莫须有的历史。
  2. 随着时代的发展,一些社会风俗在不断变化,但是后人却在以后人所在时代的眼光看待/评价古人的行为。
    1. 比如:商朝重刑,周朝重礼。所以描述商纣对犯人施以重刑的行为在商人看来不一定是暴行。即使在重礼的周朝,刑罚也是非常残酷的。
    2. 比如:现在考古发现商朝墓穴里夫妻合葬的现象比较少,所以推测很多商人都是不结婚的。男女一生中可能都没有固定异性伴侣。所以商纣的酒肉林池也可能是一个符合“当时主流社会价值观“的东西,关键是要看是否太过奢华。
    3. 夏商周这几朝都是分封制的社会,夏朝统治者(不知道怎么称呼),商王,周天子都和郡县制时期的皇帝不一样,他们相当于只是一帮诸侯里的老大,地盘大一点,军队强大一点。而且其他诸侯也不一定每次都听他们的,商汤和周武王都是拉拢一帮诸侯和当时的诸侯老大干了一架,确定了自己的新老大的地位的。至于这里面谁好水坏,并不一定重要;放到21世纪的今天,大家看到这么战争,估计也是同样不清。但是每当我们提起历史时,却总是要说正义战胜邪恶等惯用语,这个也是很有趣的事情。

P193: “上帝“这个词在中国早就有了,商朝的甲骨文里经常有”上帝“,是级别最高的神,人们的祭祀对象。……后来明朝传教士汤若望先生,为了让基督教在”顽固“的中国人之间流行,就从古书里翻出”上帝“这个已于接受的中国吃,来译他那个God。

潇水的《青铜时代》

潇水,本名张守春,清华大学电机系毕业,美国新泽西州立大学人力资源管理学硕士。著有《青铜时代》系列、《秦殇:谁杀死了秦帝国》、《楚汉争霸启示录》、《先秦很可爱》、《刘邦项羽争上游》、《陈胜吴广同花顺》、《秦朝一梦》、《三国演义——潇水版》……

《青铜时代》全套共5本,用诙谐的语言讲述了从远古时代东周末年秦国统一六国这一阶段的历史。

全套图书大纲如下:

青铜时代的蕨类战争
第一章 上古神迹(46亿~约5000年前)
第二章 黄帝蚩尤(约5000年前)
第三章 尧风舜雨(5000~4000年前)
第四章 虚无大夏(公元前1994~前1600年)
第五章 商祖烈烈(公元前1600~前1045年的青铜时代)
第六章 周虽旧邦(公元前1045前后)
青铜时代的恐龙战争
第一章 大周天子(约公元前1000年~前700年)
第二章 大哉强齐(公元前700年~前645年)
第三章 江汉新贵(公元前770年~前645年的楚国)
第四章 秦晋之“好”(公元前768年~前645年的晋国)
第五章 晋文践土(公元前645年~前628年)
第六章 独霸西戎(公元前628年~前620年)
第七章 赵氏孤儿(公元前620年~前607年)
第八章 问鼎中原(公元前607~前590年)
青铜时代的蜥蜴战争
第一章 强哉骄,大晋风流(公元前600年~前580年)
第二章 “三郤“之难(公元前580年~前575年)
第三章 悼公三驾(公元前574年~前555年)
第四章 外宁内忧(公元前555年~前545年)
第五章 细腰之王(公元前545年~前529年)
第六章 专诸鱼肠剑(公元前529年~前515年)
第七章 阖庐五站(公元前515年~前505年) –吴王阖闾(有些地方也写做阖闾)
第八章 家臣乍起(公元前505~前496年)
第九章 勾践吞吴(公元前496年~前473年)
青铜时代的鳄鱼战争
第一章 三家分晋(公元前475年~前425年)
第二章 大魏文侯(公元前425年~380年)
第三章 孙膑庞涓(公元前380年~338年)
第四章 商鞅变法(公元前355年~前338年)
第五章 合纵连横(公元前338年~318年)
第六章 稷下学宫(公元前318年~312年)
第七章 张仪欺楚(公元前313年~前307年)
第八章 扬子雄鳄(公元前307年~前296年)
青铜时代的终结战争
第一章 胡服骑射(公元前307年~前295年)
第二章 盛名之下(公元前294年~前293年)
第三章 苏秦之死(公元前288年~前279年)
第四章 完璧归赵(公元前279年~前273年)
第五章 布衣卿相(公元前273年~前264年)
第六章 纸上谈兵(公元前264年~前260年)
第七章 邯郸之难(公元前259年~前251年)
第八章 吕氏春秋(公元前251年~233年)
第九章 破韩灭赵(公元前244年~前229年)
第十章 六国毕一(公元前229年~前221年)

这套书买来应该有两年多了把,一直没有下决心看完。当时是“罗辑思维”公众号推荐这套书,恰好我也比较感兴趣,就下单了。到手后看了一部分(其实第一本看了不到一半吧),后面就一直在吃灰。这次因为各种原因,终于把TA纳入阅读最高优先级任务,夜以继日的连续奋战几个星期,得以全部读完。

总的来说,这是一本非常值得阅读的人文历史类读本。我觉得我们不用太过于关注这本书的历史事件的准确性,而是要通过作者诙谐的语言去探索和还原一段与现代社会不一样的历史。尝试自己穿越千年回到过去,在当时的社会环境中看待这些历史事件的起因、经过、结果,去思考有些历史是否被后人误解、扭曲。

总之,这是一本趣味历史读本,但是有很多观点即使放到今天依然可以作为很好的参考,我将在后面几篇文章一一道来。

拒绝语言暴力

语言的杀伤力到底有多可怕?

“堂堂七尺躯,莫听三寸舌。舌上有龙泉,杀人不见血。”

自我要求:

 我们用一年时间学会说话,却应该用一生学会闭嘴。

对待别人:

在不了解一个人的时候,我们越应该正面看待每一个人。

在网络便捷的现代社会,每个人面对了太多的信息,自以为掌握了真相。但是当你去评价某个人时,很可能你并不完全了解TA,你看到的听到的都只是TA的一部分,可能是好的,可能是坏的。慎言!

References:

为什么越来越多人在朋友圈戒掉了情绪?

《植物知道生命的答案》读书笔记

去年就已经看完了,一直没有找空写下点记录,这次借着过年的空儿,在农历新年之前暂时记录点内容,跟这本书告个别。

书的目录如下:

植物能看到什么

植物能嗅到什么

植物能感受到什么

植物能听到什么

植物如何知道身在何处

植物能记住什么

看这本书有点回忆高中生物的感觉。光谱,光合作用,生长激素,向光性,向地性,顶端优势,……

当然也学到不少新的知识。

光周期现象(“短日照”植物(需要短日照才能开花) VS “长日照”植物(需要长日照才能开花))。植物测量的不是白昼的长度,而是连续的黑暗时期的长度。

植物的嗅觉

如果一片叶子被昆虫或者细菌侵害,它会释放气味,警告兄弟叶保护自己免受迫在眉睫的侵害。临近的同类植株也会从中得到信息。

植物的触觉

植物被外面触碰时,植物细胞中的钙离子浓度会徒升徒降。这种脉冲可以影响细胞膜上的电量,但它也能使钙离子作为“第二信使“——把信息从专门的受体传递到专门的输出端的中介分子——直接影响多种细胞活动。

春化

很多植物依赖于冬季的低温才能获得收成。很多果树只有在寒冷的冬天过去之后才开会结果,莴苣和拟南芥的种子只有在睡个冷觉之后才会萌发。春化在生态学上的好处是显而易见的,它保证在冬季的寒冷过后,植物可以在春季或者夏季,而不是一年里光照和温度不可以支持植物生长的其他时候发芽或开花。

《解忧杂货店》读后感

前几周看了电影,觉得有必要看下原版小说。难得春节有比较长的假期,所以一回来,坚持每天看点,刚刚终于看完了。

小说的内容果真要比电影要多一些,女运动员的故事,浩介(藤川博)的故事。

小说更清楚的展示了丸光园的纽带作用。皆月晓子和浪矢雄治的故事应该是最早的剧情。然后感觉书中所有向浪矢先生求助的人在生活中都有相遇过,他们通过杂货店或者丸光园都发生了联系。

感觉要说的在之前观影感言里都有提到,没有更多的要说了,列几条语录吧。

其实所有纠结做选择的人心里早就有了答案,咨询只是想得到心里内心所倾向的选择。最终的所谓命运还是自己一步步走出来的。

其实很久以前我就知道自己应该怎样选择,只是一直无法下决心舍弃梦想。到现在,我依然不知道怎样才能做到这一点。打个比方,这就如同单相思的感觉,明知恋情不会有结果,却还是忘不了对方。

人与人之间情断义绝,并不需要什么具体的理由。就算表面上有,也很可能只是心已经离开的结果,事后才编造出的借口而已。因为倘若心没有离开,当将会导致关系破裂的事态发生时,理应有人努力去挽救。如果没有,说明其实关係早已破裂。

 

References:

https://www.zhihu.com/question/27568787/answer/138635279

《前任3:再见前任》观影感言

其实上个月就和老婆去电影院看过了,一直想写点东西,结果一直拖到现在。

很早以前看过前任攻略,当时觉得是一部有美女但据情一般的片子。这次前任3,宣传抓住了关键点,“现任变前任”的宣传语让不感冒的人都十分好奇电影的内容了。

电影开头的一些场景太high了,完全不是普通人的生活。作为观众,意淫下就行了,不用多说。我是对剧中人设和据情发展比较感兴趣,而且对最后的结局表示十分理解和认同。孟云和女友林佳最终分手,而余飞与女友丁点最终却复合,我认为最重要的是性格,男女之间的性格如果能够互补,那么感情是很大可能长久的。比如外向配内向,一般的争执、分歧就不容易发展为猛烈争吵或者冷暴力。

当然林佳的总结也是另一个因素,她觉得她没有跟上孟云的成长,变得越来越依赖孟云。但是生活了这些年,经历了这么多事,回头来看,林佳的看法很对,但是也是一种不幸福的观点。情侣、夫妻不是那种可以无限支持对方追求梦想的朋友关系,支持彼此追求梦想是一个态度,但是如果其中一人因此而牺牲另外一人的梦想、尊严,我不认为另外一个人的牺牲是有意义的。情侣、夫妻之间经常是在小事情上有牺牲的,比如老公不牺牲工作,让老婆全职呆着家里带小孩,如果双方能够达成一致,同时老公要能够规划一定的时间配老婆孩子,另外老公要支持老婆参与一些与社会保持节奏的活动,那么老婆在全职在家这个事情就是有意义的,家庭成员的感情在加强,夫妻双方都有一定的牺牲,但是也都满足了一部分当下的愿望。这种场景下的牺牲我才认为是有意义的。所以回过头来看这部电影,我觉得孟云和林佳最大的问题是孟云没有支持林佳去追求一些感情之外的东西,林佳的危机感孟云要负很大一部分责任(剩余的大部分当然就是林佳的无底线的对孟云的支持把……)。

“懂得这么多道理,却依然过不好自己的生活“。是的,知道却做不到,有太多的固执,自我原则让我不愿意去“牺牲”,去平衡生活。爱情是不足以支撑婚姻家庭的 ,彼此互补的性格,能够为整体适当牺牲的价值观,才能造就一对贫时相濡以沫的夫妻,富时执手偕老的夫妻。

 

HTTP访问控制(CORS, Cross-Origin Resource Sharing)

简单来说,CORS请求分为简单请求(非术语)和预检请求(Preflight Request)。

某些请求不会触发 CORS 预检请求。本文称这样的请求为“简单请求”,请注意,该术语并不属于 Fetch (其中定义了 CORS)规范。若请求满足所有下述条件,则该请求可视为“简单请求”:

使用下列方法之一:

GET

HEAD

POST

Fetch 规范定义了对 CORS 安全的首部字段集合,不得人为设置该集合之外的其他首部字段。该集合为:

Accept

Accept-Language

Content-Language

Content-Type (需要注意额外的限制)

DPR

Downlink

Save-Data

Viewport-Width

Width

Content-Type 的值仅限于下列三者之一:

text/plain

multipart/form-data

application/x-www-form-urlencoded

与前述简单请求不同,“需预检的请求”要求必须首先使用 OPTIONS   方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。”预检请求”的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响。

 

当请求满足下述任一条件时,即应首先发送预检请求:

使用了下面任一 HTTP 方法:

PUT

DELETE

CONNECT

OPTIONS

TRACE

PATCH

人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。该集合为:

Accept

Accept-Language

Content-Language

Content-Type (but note the additional requirements below)

DPR

Downlink

Save-Data

Viewport-Width

Width

Content-Type 的值不属于下列之一:

application/x-www-form-urlencoded

multipart/form-data

text/plain

对于预检请求,浏览器会先发送一个预检请求给服务端,服务端正常响应(服务器是否同意客户端继续请求)后才会发送实际请求。

References:

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

《浪矢解忧杂货店》观影感言

电影根据东野圭吾的同名原作改编,原作之前已经非常有名了,而且之前国内也有改编为电影并且上线,所以这次日本版的电影在大陆一经上线,就和老婆一起去看了。(当然还有一个真相是老婆喜欢的小鲜肉有出演一个角色)

电影开头是有点莫名奇妙,内容很突兀,只有逐渐追随几个故事的发展,才会逐渐了解故事发展的主线,明白人物关系及事件的因果关系。所以对于一个没有看过原著的人来说,据情理解还是有点费心的。而且从全局来看,故事的背景设定有点儿戏,感觉有点纯粹科幻的感觉(主要是故事情节最大的需要:现在和过去的通信)。

但是我仍然要说,这是一部很好的电影(或许应该把这个赞美献给原著)。中日基于相同的文化的发展起来,到现在虽然有很多差异,但是我觉得还是有很多共性,更重要的有很多相似的认同感。很多有名的日剧/电影都有着我们的文化里非常认可的奋斗、励志的形象。而这部电影里的很多场景,很多任务面临的选择都是如此的贴近我们的生活,非常能够触动我们的内心。浪矢雄治给陌生人的回信,是传递了自己的信仰,自己对人生的理解。3个小孩后面给几十年前的人回信也一样,希望收信的人的能够幸福,避开自己的不信,追求自己的梦想,找到适合自己的幸福。当然这碗鸡汤让很多收信人十分不爽,继续写信辩解,让他们自己更加清晰的知道自己需要的是什么,同时这让据情越发的真实了,不是一碗强给的鸡汤。

剧中的一些点是容易获得我们的共鸣: 3个小孩告诉武藤晴美(迷途的幼犬),去炒房炒高尔夫会员卡炒股……让我们这一代人感觉是那么的真实,房价这个这几年迈不开的砍,绕不过去的故事,实时提醒这我们……

影片也提醒了关于小孩教育,赡养老人等方面的一些问题,但不是重点,我也就不展开了。

 

php.ini中的cgi.fix_pathinfo选项

PHP里经常要获取当前请求的URL路径信息。一般可以通过环境变量$_SERVER[‘PATH_INFO’]获取,而配置文件中的cgi.fix_pathinifo选项则与这个值的获取相关。而$_SERVER[‘PATH_INFO’]中的key PATH_INFO是一个CGI 1.1的标准,经常用来做为传递参数给后端的CGI服务器。

被很多系统用来优化url路径格式,比如对于很多框架,下面这个网址:
http://www.test.com/index.php/test/my.html?c=index&m=search
我们可以得到
$_SERVER[‘PATH_INFO’] = ‘/test/my.html’
$_SERVER[‘QUERY_STRING’] = ‘c=index&m=search’;

我们再说下php.ini中的配置参数cgi.fix_pathinfo,它是用来对设置cgi模式下为php是否提供绝对路径信息或PATH_INFO信息。没有这个参数之前PHP设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME,没有PATH_INFO值。设置cgi.fix_pathinfo=1后,cgi设置完整的路径信息PATH_TRANSLATED的值为SCRIPT_FILENAME,并且设置PATH_INFO信息;如果设为cgi.fix_pathinfo=0则只设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME。cgi.fix_pathinfo的默认值是1。
nginx默认是不会设置PATH_INFO环境变量的的值,需要通过正则匹配设置SCRIPT_FILENAME,但这样会带来安全隐患,需要把cgi.fix_pathinfo=0设置为0。但是一旦关闭这个这场,PHP就获取不到PATH_INFO信息,那些依赖PATH_INFO进行URL美化的程序就失效了。
关于安全隐患的问题,请看 http://www.laruence.com/2010/05/20/1495.html

网上给出了一些方案,在关闭cgi.fix_pathinfo时使依赖PATH_INFO美化url的程序能够正常工作。
1.可以通过rewrite方式代替php中的PATH_INFO
实例:thinkphp的pathinfo解决方案
设置URL_MODEL=2
location / {
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?s=/$1 last;
}
}
2.nginx配置文件中设置PATH_INFO值
请求的网址是/abc/index.php/abc
PATH_INFO的值是/abc
SCRIPT_FILENAME的值是$doucment_root/abc/index.php
SCRIPT_NAME /abc/index.php
旧版本的nginx使用如下方式配置
location ~ .php($|/) {
set $script $uri;
set $path_info “”;

if ($uri ~ “^(.+.php)(/.+)”) {
set $script $1;
set $path_info $2;
}

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$script;
fastcgi_param SCRIPT_NAME $script;
fastcgi_param PATH_INFO $path_info;
}
新版本的nginx也可以使用fastcgi_split_path_info指令来设置PATH_INFO,旧的方式不再推荐使用,在location段添加如下配置。
location ~ ^.+.php {

fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

}

通过上面的描述,我们似乎得出了一个结论:为了安全要关闭掉cgi.fix_pathinfo设置。
但是我们来看看php.ini的配置及说明

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1

设置cgi.fix_pathinfo=1才符合cgi标准。那么有什么办法可以在保持cgi.fx_pathinfo默认设置的情况下,保证系统安全吗?

好消息,新版本PHP(我验证至少PHP5已经有了这个参数)的fpm配置里新增了一个额外参数(php-fpm.d/www.conf),
security.limit_extensions = .php .php3 .php4 .php5 .php7

专门用来限制PHP脚本引擎只支持解析哪些扩展名的文件

; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; execute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7

所以在使用nginx+php-fpm时,可以不用修改系统默认的cgi. fix_pathinfo=1设置了。

References:
http://www.laruence.com/2010/05/20/1495.html

nginx下支持PATH_INFO详解

https://serverfault.com/questions/627903/is-the-php-option-cgi-fix-pathinfo-really-dangerous-with-nginx-php-fpm

PHP的print

有这样的一题:

echo ‘2’.print(2)+3;

问输出是多少?

运行结果是……(下面有分析过程及答案,提前预告:正确答案不是224,此题并不涉及运算符优先级https://secure.php.net/manual/en/language.operators.precedence.php

print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。

print(2) <=> print 2

print (2)+3 <=> print 2+3

所以 echo ‘2’.print(2)+3;  ==> print 2+3先输出5,echo ‘2’.1 输出“21”,所以整体输出521 。

 

类似的情况

echo ‘2’.print(2)+3; //521

echo ‘4’.print(2)+3+1*7; //1241

echo ‘1’.print(2)+3+1*7,33; //121133 注意:逗号会分隔print的参数作用范围