分类: 读书

  • 中国通史读书笔记

    总结

    历史不是一直是被分为近代史和非近代史嘛,钱老开篇便将历史划分为铜器、铁器、电器和原子能时代,开篇就被震撼到了,钱穆老先生的格局就是在人类大局观上,我们口中的“近代史”只是原子能时期生活的人将自己时代和古代划分开的一个说法。

    然后就进一步想,为什么没有把通信方式纳入呢,原子能跨时代,计算机和无线通信也是跨时代的。我猜可能是这些只是提高了信息交换的速度,改变了获取信息的方式,会极大地改变人类的生活,但信息只是媒介。能推动人类历史的还是核心资料的生产:粮食,能源这些。

    而且,历史原来是一件很主观的事情,历史上发生了什么可以是一件客观的事情,但对这些事情的评价,其结果是偶然的还是必然的,这件事情是极其主观的。

    笔记

    粗体是我自己的感悟,其余皆是摘抄
    序

    中国为世界上历史最完备之国家,其特点有三:一者悠久,二者无间断,三者详密。

    第一篇

    有文字记载以前的历史,叫作史前史

    一般来说,这是第一期的石器时期。这第一期又可分成两个时期:(一)旧石器时期,(二)新石器时期。古人懂得用石头,也不把它磨光削尖,就拿来用,此之谓旧石器;而把石头加以磨光削尖等处理后才加以运用的,便是新石器了。

    开篇就被震惊到,直接跨过了所谓的近代和现代,直接以工具和能源的使用划分历史时期。

    第二期便是铜器时期。此时期已有文字。
    第三期则是铁器时期。铁之发现是在铜器之后。
    第四期是电器时期。
    第五期是原子能时期。使用原子能是人类历史的新观点。

    第二期便是铜器时期。此时期已有文字。第三期则是铁器时期。铁之发现是在铜器之后。第四期是电器时期。第五期是原子能时期。使用原子能是人类历史的新观点。

    第七章 春秋时期

    故今日需要有一个人出来讲一句话打开时代的僵局。只要能发明一句,便是大政治家。

    第三篇

    旧势力崩溃,新势力平民阶级兴起,故秦统一中国,并非打倒六国,乃是平民社会希望统一。故汉朝是新兴的平民政治,这就是古代封建社会结束了。

    第十章 西汉时期

    汉高祖刘邦以平民为天子是中国历史上的创举。

    汉高祖刘邦再行封建,此乃为了巩固政权。此举汉高祖实不如秦王高明。

    管不到的人和地方就有封建势力。

    读书人带兵是理想,但带兵人做领袖则不合理想。秦相李斯是文人,故秦始皇是大政治家。秦始皇虽然只做了十三年,但历史不能以成败论英雄,失败的并不一定是不好。汉高祖的王朝长久,这是历史的大趋势。

    第十三章 东汉之士风

    曹操对下属说:“各为其主,不要追他。”这就是曹操为人的优点。小说上关羽过五关斩六将是假的。

    第十四章 东汉末年

    曹操之所以不能统一中国,纯因众人不服所致。

    第四篇

    佛有“佛、法、僧”三宝,“佛”指已死的,“法”指道理,“僧”是指生的人。

    如照基督教讲法,“佛”是上帝,“法”是耶稣,“僧”是牧师。

    如诸葛亮,是琅琊人

    诸葛亮逃到襄阳隆中,但其兄弟一在吴,一在北方跟从曹操,均是了不起的人物。

    中国今日之社会少了一个封建,无团结之庄园,故受人欺辱,因为是分开的、个人的,故吃了不封建的亏。今日中国社会只有政治势力,并无封建势力了。

    第十六章 北朝

    满、蒙族人,跑进中国,均代表其各自的政权,故称部落政权,我们当他们是兄弟,但他们没有把我们当兄弟。

    第十七章 五胡汉化

    魏孝文帝的理想并不错,但为时只有五年,后人只学到生活的享受,却没有学到孔孟之道。今日我们学欧洲人的长处是可以的,但只学到坐汽车、穿西装、吃西餐,却是太肤浅了,应该同时学习他们优秀的地方才好。

    隋代在中国最富,赋税也最轻。只要乡里中有一线,便是一光明,一扬开,光明就来了,谓之一线曙光。

    第十九章 宗教信仰

    印度气候暖,觉天地丰富,故信仰多神;阿拉伯是海边沙漠,觉天地很简单,故选一神教。宗教之缘起,实由环境不同而生。

    耶稣说:上帝的事上帝管,恺撒的事该恺撒管

    任何人生理论哲学,先要人生无意义,才可入门。大家希望的有什么价值呢?要取消一般人的想法。人忙的是什么?

    天亦有轮回,诸天听释迦讲法,如何超出轮回,即取消作业,并非要不朽,要永生,看世界皆空,最好不要做什么,慢慢消业,最后业完。不再轮回,摆脱社会,入空门,什么都不做,这是小乘佛教。取消轮回,叫涅槃。

    第五篇

    中国以汉、唐两代最好。汉代之前有短的秦朝十五年,唐代之前有短的隋朝三十八年,唐有二百九十年,连隋共三百多年。这是中国第二复兴时期。

    隋代富,是中国历史上最富的朝代。到隋兴起,其潜在的元气慢慢升起而扩大,此乃中国民族内力之恢复,不能以数字来作统计。社会的力量在于优秀的民族性。

    第二十一章 唐代政经状况

    原来自治州和特区是古而有之。

    羁縻府州

    第二十二章 唐玄宗

    安史之乱为唐代由强转弱之转折点,亦可说是中国历史之转折点,此外之明、清诸朝再也无法有开元时期之盛况矣。

    唐之亡并非亡在贵妃身上,实因安禄山之权委实太大,杨贵妃进宫时,天下之大乱早已造成了,故不能责怪贵妃

    第二十三章 唐代衰落

    首先是藩镇割据:节度使掌管人民之财政军事,多在边疆,唐恢复二京后,安史乱将被杀,但其部下降唐并未彻底,仍安排安史旧部担任节度使于原地,即在边疆的军队,后来演变成藩镇。其中最严重的是河北三镇,即成德、卢龙及魏博三镇,均为安史余孽,均是胡人。

    宦官太监为中国特有,此是污点,但也是中国独有的制度。

    唐代政治尚有一弊。中国一有党,就容易出毛病:东汉有党锢之狱,唐代有朋党之乱,宋有新旧党争,明则有东林党。今日英美有政党,多有争吵,也不好。

    第二十四章 唐代异族之乱

    德宗时,回纥已不行了,因他们财产太多,生活腐化,此即民族在都市文明达到最高最盛时往往易于堕落。

    太平天国军之失败在于攻打北京,其毛病在攻城,而不要地方,故失败。

    唐由统一政府而变成五代十国,中有流寇作乱。

    第二十五章 五代十国

    尚有一问题,即五代十国建都,没有一国建都长安的长安是自古以来的天府之国,因当时长安残破。此后的长安,在历史上不占重要地位了,即长安的比重从唐代以后下降了。但此是重要地区,应重新去收拾一番才好。

    总计,五代十国时有四大问题:一是北方黄河流域之衰败。二是长江、珠江流域之像样。三是西北长安之没落。四是东北方即十六州在异族统治下,大敌易于侵入。

    第六篇

    大辽之五京为:(一)上京热河(二)中京热河(三)东京辽阳(四)南京北京(五)西京大同

    第二十七章 宋代

    八国联军时,大沽不准有炮台,北宁铁路是国际线,故无国防线,外国军队可直达北京,北京东交民巷可有英法军,这极不合理,欺人太甚。所以西方之所谓文明文化,上帝、公道、法律、科学……不能使人佩服。

    宋代大人物寇准说,不可逃避,主张御驾亲征,到澶渊渡黄河北,后双方讲和,叫澶渊之盟,自此不再打仗。

    秋收时节,大掠一番,烧屋抢粮,不让农村人口繁荣集中,称“打草谷”。

    太祖奖励读书,但一两天短期内无法造就人才,要到仁宗一百年后才有人才,所谓“十年树木,百年树人”。

    有时历史只能讲时代的局部与形势,有时只能讲人物,人物改造形势,形势限制人物。讲到人物的历史是光明的,讲到形势局面的历史是黑暗的。今天是黑暗的,因今天的世界没有人物。今日的英、美、俄诸国都没有出什么大人物。

    我们不知汉武帝之高矮肥瘦,但可知其脾气、理想、性格……在座之同学不会知道我是如何之人,何况历史上的人物?没有读过王安石和范仲淹的作品,如何会认识他们呢?如何可提出打倒历史呢?真是无聊。

    第二十八章 宋代之文艺复兴

    唐后是门第社会,与贵族封建不同。宋有统一政府,而无世袭贵族。唐之宰相可有世系,一个家族可出十多位宰相。

    南北朝至隋唐有佛教传入,出家是最高第一等人,簪缨是仕宦之家,此非人生真理,但做官不算高,不出家即做居士,皇帝入佛教,封为国师。唐僧即自大门第出家,很伟大。唐僧取经回国,太宗亲迎。社会上和尚称师,社会上之先生,一种是教小孩子,一种是大人在家受学,平民无资格入学,读了书可以做官,做大了官,再跟和尚研究佛法或做居士。

    送儿子出家尚须出大部分家产,故和尚寺很像样。

    今日是耶稣与马克思在争一日之短长,孔子与释迦是差了,因国家没有办法。

    今日之人,“忧者一身,乐者一身”。

    范仲淹开创好的政治风气,负责任,有人格。

    第二十九章 太祖与仁宗

    范之“十事疏”如下:(一)明黜陟(二)抑侥幸(三)精贡举(四)择官长(五)均公田(六)厚农桑(七)修武备(八)减徭役(九)覃恩信(十)重命令

    第三十章 王安石变法

    讲说中国古代制度的有两本书:一本是唐代杜佑的《通典》,一本是宋代马端临的《文献通考》。

    王安石变法之根本毛病是易有流弊,因为这是与民争利。王安石只在法上想,而欧阳修、司马光等人连推行的人也想进去了。总之,政府不应权太大。

    第三十三章 南宋与金之交往

    秦桧以下之南宋,相臣均不济事,国力不振如旧。时女真金国已衰,至成吉思汗伐金,宋亦甚为弱势。金、宋已同趋弱势,已无力抗蒙矣!

    第七篇

    元自成吉思汗至忽必烈灭宋,凡历五世,历时七十四载。

    当时之中国,分宋、金、夏三部,元人用兵,亦先灭金,再平定夏,再取金黄河之南岸,再得长江及南方之地,灭了宋。

    元代世祖最初管治中国之三十多年,几乎每年均用兵,计元世祖十六年灭南宋,此下尚有十五年,而元政府以武力夺取财物,于文治鲜有成绩。且元代帝位之传承并无完美之系统,全靠诸王大臣之拥护,故易生纷争。

    故其来中国,只专注于中国之物阜民富,而不重视文治。统治中国各省之大臣,无一通中国之文墨。治理手法,迥异于中国传统之政制。

    要而言之,元人对汉人、南人持歧视态度,亦不思整顿文治,故亦并非善用汉人、南人,所用悉属坏人,亦不思有好之文治,只求防制反动及征敛赋税两项而已。

    第三十五章 元代税收与经济政策

    元代又行钞法,北宋时,蜀人已有用“交子”,至南宋又用“会子”,金人则推行钞法。元承金制,专行钞法而废钱矣。

    第三十六章 元代军政及军民争地

    最高等级的一种是蒙古军,其次是由蒙古族人担任用来镇守边境的探马赤军,再其次是由中原汉人担任的汉军,最后的一级是由南方宋人担任的新附军。

    第三十七章 元政府赐田及设官政策

    看这本书才知道汉族在元代这么惨,在元朝时蒙古人入侵算是外族入侵罢,但又会与汉人胡人回人的文化产生反应并且融合,现在中国又是56个民族的中国。
    所以当我们谈历史谈传承时,我们在谈什么。自己的民族吗,还是我们在的这片土地。
    每个民族和文化都有应该自己的历史、发展和进化,土地只是民族在历史那个时刻的一个居所。

    汉、回两民族在待遇上有种种的不平等。

    蒙古人之统治有点像古代贵族封建的统治。他们缺少精神生活之陶冶,只有一种宗教的迷信。

    第三十八章 元代之宗教信仰

    在世祖六年之前,蒙古尚是一没有文字的蛮族。到世祖六年时,国师八思巴才创造文字,这之前他们需用文字时,则借用畏兀儿文。

    第三十九章 元代之科举制度

    总之,元代统治中国,历时一百余年,他们对秦汉以来的传统文治政权意识,始终未能接受,其政治意识,始终有封建武装之气味。蒙古人虽曾雄霸欧、亚两洲,却在汉人反抗下,退让出对中国的统治。

    第八篇

    明太祖朱元璋是中国历史上以平民崛起为皇帝的第二人。首位是汉高祖刘邦。

    明代共十六帝,历时二百七十七年,如加入南明三帝,则共有十九帝,达二百九十四年,近三百年矣。

    明代政府对大臣滥用刑杀,其惨酷无理,为有史以来所仅见。

    宋太祖鉴于唐代中期开始武人跋扈,因此积极扶植文官。明太祖则认为自元代没落后,功臣宿将多已诛杀,兵卒多已还乡归田,于是认为社会上唯一可怕的只有读书人。但处理政务一定要用读书人,于是一面推行封建,以扩大王室力量;一面废除宰相,由王室管理国政。但又不能不任用读书人士人,因此用严刑峻法威慑之,使士人在王室的积威下臣服。

    第四十一章 明代之政事

    明代的大臣,如内阁大学士,不易见到皇上。如宪宗成化以后,一直到熹宗天启,前后共一百六十三年,其间只有孝宗弘治在位数年曾经延访过大臣,而世宗、神宗二十余年来并不视朝,大臣也从未见过皇帝。

    明代中叶的帝王多数不见群臣,赵翼的书中也有记述。所以明代中叶,各君王与大学士诸大臣很少相见,相见也不过视朝数刻,君或不识臣,臣或不与君王交一言,君臣之间只是“章奏批答相关接,刑名法度相维持而已”。总之,明代君王昏惰,明代政情安得不乱也。

    制度初创时也许因为有彪悍的身体,初还能实施,但对于组织而言,制度的完善与合理>个人能力,才能维持稳定。

    明代君王昏惰,明代政情安得不乱也。

    第四十二章 明代太监弄权

    即使是为皇上信任权重一时的张居正,当时亦不得不交结太监冯保。

    第四十四章 明代之教育制度

    有现代教育的影子了

    生员如不入学则不得参加科举考试,即是学校与考试两制度融合为一,比唐宋时期更为进步。明末时,此制度已渐废坏,实在十分可惜。

    生员如不入学则不得参加科举考试,即是学校与考试两制度融合为一,比唐宋时期更为进步。明末时,此制度已渐废坏,实在十分可惜。

    都层层选拔了,还是逃不开出生吗…可怜可悲

    凡有出身优异者

    第四十五章 明代之吏治

    故明代之吏治,实超越唐宋之上,几乎有两汉之风也。即使到明代晚年之英宗、武宗时期,仍然民心安定,亦少贪渎之吏使然。

    第四十六章 明代之政制

    由于明代世局平静,武备军事相应松懈了。军政尽归兵部统管,边疆遇有骚扰,调兵拨饷统由兵部主理。

    以上数端,使王室欠缺禄米,卫所缺月粮,边疆缺军饷,各省缺俸银,且冗官日多,募兵日增实减,因此民穷财尽,遂成亡国致命之伤。

    第九篇

    唐代中叶安史之乱以前,中国经济之支撑点偏重于北方的黄河流域。

    丝织业到了明初,从北方移向南方,因此绢税也变成三与一比,即南方多于北方两倍矣。

    至唐代以前,北方输绢给政府日少,南北比例到了八比一的程度,即南方多于北方七倍了

    第四十九章 南方水利农业之发展

    总言之,唐中叶之北方财富,到明时已转到南方,但南方人之生活已较唐代之北方人为苦,亦即显示明代国运不及唐代了。此时财富集中于江南之富豪,小民则水深火热。

    第五十章 宋元明三代之学术

    宋明时期的学者,既非贵族,亦不出世,也不讲功业、礼教。他们讲的是接近平民生活的人生、社会、国家等各方面,而不讲佛老的出世长生之道,亦不讲霸道的君相事业。

    第五十二章 南明之兴亡

    总之,元、明、清三代无藩镇专制之忧,以致平日无准备,而无法禁息乱民之平地突起也。

    封吴三桂为平西王,居云南。封尚可喜为平南王,居广东。封耿精忠为靖南王,居福建。

    第五十三章 清代之政制

    清代十主,共二百六十八年。

    三藩之乱平后,各省钱粮有余者,悉数缴到中央收藏,不准地方存留,因此地方无建设可言。

    雍正以后,更收紧地方银饷,地方更无余款。

    清室对汉人管制甚严,但对蒙古、西藏、青海地区人民,则按旧俗松弛管辖。并不让汉人任职理藩院,以免汉、蒙两族人有交接联络,则自然易于统治管理也。

    第五十四章 清代之军事

    乾隆好大喜功,所耗军费庞大,遂至清代之衰运来临,不可避免。

    第五十五章 明末遗民与清初学风

    首先,北方之士大夫与清政府妥协。但清政府颇用手段,一面照旧制保持汉人习俗,一面严行剃发令,要汉人文化上屈服。

    士大夫之笃实学风与坚贞志气保持数百年之久直至清末。此股力量,使清以武力夺得政权以后,不得不考虑应维护人心之安定。

    康熙由青年时勤学以致咳血而仍不放弃苦读,即使三藩乱起,仍勤读不辍,终于到达无不通晓之境地。而在委曲求全下之中国士人,亦以明末遗民为榜样,因此在参与吏治方面亦甚用心而踏实,遂使清初政况稍胜于明代中叶

    第五十六章 清代之政风与洪杨之乱

    康熙宽仁为怀,到雍正虽治政精明,却刻薄;乾隆则好大喜功,但国富民强。康乾时期相当于唐代贞观与开元、天宝。

    清室之衰落,除帝王日衰外,还加上满官之贪污放肆。如乾隆晚年之和珅为相二十年,贪污达八万万两,相当于国库十年以上之岁入,于是遂有“和珅跌倒,嘉庆吃饱”之谚语。

    地方官吏,已不顾及民生,而只是横加赋敛,刮民脂民膏以利己殃民。此时期户口激增,而民间经济日坏。遂至乾隆末年,民变频频发生。

    洪杨革命最重要之一点,是他们能明白举起种族革命的旗号。

    第五十七章 咸同中兴

    洪杨之失败,并非不能够推翻清政府,而是不能推翻中国社会固有的道德信仰与传统习惯。

    曾、左、李加胡林翼,同为同治中兴之人物,但他们能平乱,却不能办治事。又因清政府猜忌汉人,故不能推诚大用。

    第五十八章 晚清之政局

    道光十八年,政府派林则徐赴广州禁鸦片,终于不敌洋寇,于二十二年订立《南京条约》,割香港给英国,并许五口通商,称为鸦片战争。

    废弃了隋唐以来的科举制,而以学校为替代。于是有“中学为体,西学为用”之理论出现。

    第五十九章 晚清之政治改革

    戊戌政变历时百日,故又称百日政变,或称百日维新。此政变实际上历时九十八天,其失败之原因,在于政变人士依靠皇帝而发动,而皇帝并不可靠。光绪易冲动而机警、严毅不足。当他读到康有为的《波兰亡国记》及《突厥亡国记》时,涕泗横流,富感情而不够严毅沉着。

    出版说明

    钱穆先生乃一代通儒,尤以治史闻名。其与吕思勉、陈垣、陈寅恪并称为“史学四大家”,《国史大纲》风行至今。

  • Unix编程艺术 读书笔记

    1 哲学

    • 性能—时间的指数曲线对软件开发过程所引发的结果,就是每过18个月,就有一半的知识会过时。Unix并不承诺让你免遭此劫,只是让你的知识投资更趋稳定
    • 策略相对短寿,而机制才会长存
    • 对于程序员和开发人员来说,如果完成某项任务所需要付出的努力对他们是个挑战却又恰好还在力所能及的范围内,他们就会觉得很有乐趣。
    • 那些毫无动力、松松垮垮而且薪水微薄的程序员们,能在短短期限内,如同神灵附体般造出稳定而新颖的软件——这只不过是经理人永远的梦呓罢了。
    • 让每个程序就做好一件事。如果有新任务,就重新开始,不要往原程序中加入新功能而搞得复杂。
    • Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。
    • 你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。
    • 估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度。

      所以实际投入使用的排序算法,都是分层的,在n小时用冒泡,复杂的时候才考虑快排或者并归。

    • 花哨的算法在n 很小时通常很慢,而n通常很小。花哨算法的常数复杂度很大。除非你确定n总是很大,否则不要用花哨算法(即使n很大,也优先考虑原则2)。
    • 其中一种压力就是来自技术上的虚荣心理。
    • 在设计中,你应该主动将代码的复杂度转移到数据之中去。
    • 还不知道瓶颈所在就匆忙进行优化,这可能是唯一一个比乱加功能更损害设计的错误。
    • 先制作原型,再精雕细琢。优化之前先确保能用
    • 如果可能,用C编写前,先用解释性语言搭建原型
    • 看到该做的就去做——短期来看似乎是多做了,但从长期来看,这才是最佳捷径。
    • 一旦某人已经解决了某个问题,就直接拿来利用,不要让骄傲或偏见拽住你又去重做一遍。永远不要蛮干;要多用巧劲,省下力气到需要的时候再用,好钢用在刀刃上。善用工具,尽可能将一切都自动化。
    • 软件设计和实现应该是一门充满快乐的艺术,一种高水平的游戏。

    2 历史——双流记

    现代操作系统虽然很复杂,但确实也就是一个分时系统,在任何时间段让程序独立的运行而已。

    • 如果有足够多眼睛的关注,所有的bug都无处藏身
    • 距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。

    3 对比:Unix哲学同其他哲学的比较

    • Unix系统拥有抢先式多任务(preemptive multitasking)能力。在Unix中,时间片由调度程序来分配,这个调度程序定期中断或抢断正在运行的进程而把控制权交给下一个进程。几乎所有的现代操作系统都支持抢占
    • 多用户的概念除了多进程还需要一套权限隔离的系统来维护。
    • 因为Windows没有处理好程序库的版本控制问题,所以长期备受被称为“DLL地狱(DLL hell)”配置问题的折磨,在这个问题中,安装新程序可以任意升级(或降级)现有程序运行依赖的库文件。专用的应用程序库和厂商提供的系统库都存在这个问题:应用程序和特定版本的系统库一起发布非常普遍,一旦没有特定的系统库,应用程序就会无声无息地垮掉。
    • MVS的统一性理念是:一切皆批处理。

    4 模块性:保持清晰,保持简洁

    • 软件设计有两种方式:一种是设计得极为简洁,没有看得到的缺陷;另一种是设计得极为复杂,有缺陷也看不出来。第一种方式的难度要大得多
    • 一些最有能力的开发者,一开始总是定义接口,然后编写简要注释,对其进行描述,最后才编写代码——因为编写注释的过程就阐明了代码必须达到的目的。
    • 假设其它所有因素(如程序员能力)都相同,200 到 400 之间逻辑行的代码是“最佳点”,可能的缺陷密度达到最小。这个大小与所使用的语言无关——这个结论有力支持了本书中其它地方提出的建议
    • 紧凑性就是一个设计是否能装进人脑中的特性。
    • C++是反紧凑性的——该语言的设计者已经承认,他根本不指望有哪个程序员能够完全理解C++。
    • 合理对待紧凑性,设计中尽量考虑,决不随意抛弃。

    5 文本化:好协议产生好实践

    • 当你很想设计一个复杂的二进制文件格式,或一个复杂的二进制应用协议时,通常,明智的做法是躺下来等待这种感觉过去。
    • 使用二进制协议的唯一正当理由是:如果要处理大批量的数据集,因而确实关注能否在介质上获得最大位密度,或是非常关心将数据转化为芯片核心结构所必须的时间或指令开销。
    • 这件事很浅显很正确,却是违反直觉的。设计一个精良的二进制结构存储效率可能不如明文+压缩。

      创建一个简单的工具来做好压缩,要比仅对文件某些部分进行特别压缩更有效,原因在于,压缩工具可以扫描所有数据,然后找到信息中的所有重复部分进行压缩。

    • 创建一个简单的工具来做好压缩,要比仅对文件某些部分进行特别压缩更有效,原因在于,压缩工具可以扫描所有数据,然后找到信息中的所有重复部分进行压缩。
    • 因为网络带宽要比存储昂贵得多,所以需更加重视事务处理的经济性。但如今的宽带费用都很低了。

    6 透明性:来点儿光

    • 透明性和可显性对用户和软件开发人员都很重要。但是重要性体现在不同的方面。用户喜欢 UI 中的这些特性,是因为这意味着学习曲线比较平缓。
    • 这个说法我好喜欢,优雅的代码除了一种自我实现感还有很重要很基础的一点是程序就是面向代码的。

      软件开发者喜欢代码本身(用户不可见部分)的这些品质,因为他们经常需要对代码有很好理解后才能进行修改和调试。

    • 软件开发者喜欢代码本身(用户不可见部分)的这些品质,因为他们经常需要对代码有很好理解后才能进行修改和调试。
    • GCC由一系列处理阶段组成,并由一个驱动程序将其紧密结合在一起。它们是:预处理器、解析器、代码生成器、汇编器和链接器。
    • 要追求代码的透明,最有效的方法很简单,就是不要在具体操作的代码上叠放太多的抽象层。
    • Unix 程序员学到了一种品性,就是宁愿抛弃、重建代码也不愿修补那些蹩脚的代码

    7 多道程序设计:分离进程为独立的功能

    • 总的来说,线程不是降低而是提高了全局复杂度,因此,除非万不得已,尽量避免使用线程。
      -这本书真的好反感使用线程啊,不过想想确实也有合理性。

      通常,你可以发现避免使用线程是可能的。

    8 微型语言:寻找歌唱的乐符

    • 对软件错误模式进行的大量研究得出的一个最一致的结论是,程序员每百行代码出错率和所使用的编程语言在很大程度上无关。[1]更高级的语言可以用更少的行数完成更多的任务,也意味着更少的bug。
    • 美是抵御复杂的最后武器。

    9 生成:提升规格说明的层次

    数据比程序逻辑更易驾驭。

    10 配置:迈出正确的第一步

    -如果有绝对最优解,就不必让用户选择

    首先,对于能够可靠地进行自动检测的东西,就不要提供配置开关。

    • 首先,对于能够可靠地进行自动检测的东西,就不要提供配置开关。

    11 接口:Unix环境下的用户接口设计模式

    • 我们将使用五种度量标准对接口风格进行分类:简洁、表现力、易用、透明和脚本化能力。
    • 当人们说一个用户接口是直观的,他们的意思是(a)它是可显的,(b)用法是透明的,(c)遵循最小立异原则
    • 在Unix传统中,已经形成了良好的接口设计模式,可以完成以上讨论的权衡。
    • 理由三:垃圾信息是对用户带宽的无谓消耗。在屏幕上,这又增加了一个分心的来源,往往让人们不得不在处理更重要的前台工作(例如同他人的交流)的同时耗费心力。

    12 优化

    • 通常,指令加载要比执行花费的时间更多。
    • 例如,在3D图形引擎中,优化旋转操作的sin(x)函数表在现代机器中占据365×4字节的空间。在处理器缓冲速度没有内存查询快时,这显然是个速度优化。但是现在,比起函数表产生的附加缓存击不中的可能开销,每次重新计算可能更快。
    • 实际上,经验法则是尽可能低的时延设计,和忽略带宽成本

    13 复杂度:尽可能简单,但别简单过了头

    • Unix程序员已学到了一种世界观:简单即美即雅即善,而复杂即丑即怪即恶。
      Gabriel 在更关注接口简单性的“MIT”哲学和更重视实现简单性的“New Jersey”哲学之间进行了比较,然后提出,尽管MIT哲学能够引导软件在抽象上做到更好,但New Jersey模型(差者)更具传播特质。
      -原来很多库接口的设计还有这样的考虑

      在MIT哲学中,应该暂停系统调用,伺中断处理完成之后自动恢复之——这较难实现,但接口更为简单;而在New Jersey哲学下,系统调用会返回一个错误表明已被中断,用户必须重新执行——这实现起来非常简单,但编程接口却较难使用。

    • 他所采用的简单实现就是允许“404:Not Found”可以作为一个响应,这使得万维网非常轻便,并获得了广泛的传播和巨大的成功。
    • 重点划一下

      在理想世界,Unix程序员只愿意手工打造小巧完美的软件宝石,每个都那么小巧、那么优雅、那么完美。然而现实中很不幸的是,太多复杂问题需要复杂的解决方案。仅仅十行的程序,再优雅也无法控制喷气客机。

    • 计算资源以及人类的思考,同财富一样,不是靠储藏而是靠消费来证明其价值的
    • 作为vim的信徒必须捍卫,你凭啥这么说!!

      比较而言,vi 看起来相当臃肿而不紧凑。

    14 语言:C还是非C

    • 我语言的极限便是我世界的极限。
    • 这一点确实如此,用C/C++高效但开发维护成本高,但很多时候主要的消耗还是在io和网络

      使用脚本语言的性能损失对真实世界的程序来说经常微不足道,因为真实世界的程序往往受I/O事件等待、网络延迟以及缓存列填充等限制,而非CPU的自身效率。

    • 使用脚本语言的性能损失对真实世界的程序来说经常微不足道,因为真实世界的程序往往受I/O事件等待、网络延迟以及缓存列填充等限制,而非CPU的自身效率。
    • 非常非常认同,因为开发的本质是硬件设备,所有的高级语言虽然屏蔽了硬件体系,但如果要优化还是逃不开的

      即使更高级的语言能够满足编程的要求,我们仍然要学习C,其中一个充分理由就是C能帮助我们学会在硬件体系层次上考虑问题。

    • 即使更高级的语言能够满足编程的要求,我们仍然要学习C,其中一个充分理由就是C能帮助我们学会在硬件体系层次上考虑问题。
    • 总结:C 语言最佳之处是资源效率和接近机器语言。而最糟糕的地方是其编程简直就是资源管理的炼狱。
    • 总结:C++的最佳之处是编译效率以及面向对象和泛型编程的结合。最糟之处是它非常怪异复杂,往往鼓励过分复杂的设计。
    • Java编程语言的设计目标是“write once,run anywhere(一次编写,到处运行)”

    15 工具:开发的战术

    • 作为通用法则,程序90%的执行时间都耗费在10%的代码上。

    19 开放源码:在Unix新社区中编程

    • 多数人在发布自己的项目之前,都是从修补他人的软件而开始接触开源软件开发的。
    • 如果档案文件都是类似GNU风格的名称,主干前缀全小写且只包含字母和数字,后接连字号,后再接版本号、扩展和其它后缀,对大家都有帮助。

    20 未来:危机与机遇

    • Plan 9还有许多其它值得推荐的地方,包括一些问题重重Unix系统调用接口的再造、摒弃了超级用户概念的,以及许多其它有趣的再思考。它的血统没有污点,设计优雅,而且揭露了Unix设计中的一些严重错误。
  • 量化炼金术:中低频量化交易策略研发

    回测

    真实的回测非常重要

    推进分析

    看着很像机器学习的交叉验证,但是实际上不是。

    这个是相当于把分析拆分成多段,类似于用1~ 60跟K线决定第61根k线上操作的一些系数,根据2~ 61根K线决定第62根K线上操作的系数。

    file

    例如按照市值持仓,那每一个周期,就要更新持仓股票占比。

    择时策略

    1. 双均线趋势策略,短线均线>长线均线,看多,否则看空
    2. 双均线反转策略,短线>长线看空,否则看多
    3. 自回归:通过线性回归
    4. 推进分析双线趋势策略
    5. 推进分析双线反转策略
    6. 推进分析混合策略

    择股策略

    1. 市值
    2. 上个月收益反转因子
    3. 推进分析市值

    风险

    风险度量

    在研发量化策略时,由于要使用各种数量化手段来进行模型构建和策略描述,因此选定一个精确的风险度量方式是必须进行的工作。

    对于收益不确定性描述最为清晰的应该是收益率的概率分布,分布情况这种风险度量方式有其优点,但是一般不作为优化函数,而仅仅出现在策略时候的风险分析中。

    方差是一种更简洁但有效的风险度量,可以同时满足风险表征和事后风险描述。

    另外一个指标就是最大回撤。

    最大回撤的计算可以使用自回归计算,把时间如此分批:
    file

    求每个时间段的回撤,然后计算平均值,为该策略的年化最大回撤率。

    最大回撤和年华最大回撤主要是用在事后分析,方差和标准差是可以直接用在策略中的。

    还有

    1. 最大亏损率和年化最大亏损率:从起始点为1开始算的小于1的历史最低点
    2. 半方差和半侧标准差:只计算亏损部分的方差,就是半方差
    3. 目标半方差:将半方差中均值收益率改为目标收益率
    4. 风险价值:给定时间长度范围,设定概率P%,风险价值R使得策略收益小于-R的概率为P%。
    5. 预期损失,预期损失率:跟风险价值差不多。

    风险与收益

    夏普比率= \frac{R - r_f} {\sigma}

    R是交易策略或投资资产的收益率,rf是无风险收益率;σ是交易策略或者投资资产的收益率标准差。这是一个常用的风险调整后收益指标。

    信息比率=\frac{R-r_b}{\sigma (R-r_b)}

    R是交易策略或投资资产的收益率,rb是基准收益率;σ(R-rb)是交易策略或者投资资产的收益率标减去基准收益率后,所得到的新收益序列的标准差。

    索提诺比率=\frac{R-r_f}{\overline \sigma}
    \overline \sigma 是半侧标准差

    除法本身是一个很好的,分子端是收益正面效果,分母端是风险负面效果,符合研判直觉,另外除法保持两者的量纲是一致的,使指标具有较强的逻辑内涵和数学特性。

    止损

    止损是交易行为,在量化交易策略的组成部分中与买卖行为的性质等同。但是脉脉是为了盈利,止损却是为了控制风险。

    止损分为两种,一种是针对单次交易,如果损失大于多少,就强制清仓。

    第二种是针对策略,如果策略损失到了一定程度,则终止该策略的运行。

    作者并不推荐止损的方式,而是认为止损是一个次于仓位决策的风险控制行为。

    仓位决策

    现在的我也意识到,仓位控制是大于择时控制的决策。

    凯利公式

    凯利公式是最著名的仓位决策方法。

    推导太复杂,就当做看懂了吧,整体表达的就是在某个概率读博,已知胜率以及奖励和惩罚的时候,每次应该付出当时多少的本金比例能最小化风险的算法,公式如下:

    f = \frac{pb-q}{b}
    其中胜率是p,押错的概率是b,押中退还押金的b倍,压错就输掉押金
    f是每次赌客的押注比例

    凯利公式有两大核心内涵:

    1. 凯利公式试图规避风险,只要赌局对于赌客而言在概率上有利,赌客就具备将资金增值的潜在能力。凯利公式通过固定比例的押注方式,实现了不会一次性出局的目标,固定比例是该公式的一个核心设置
    2. 凯利公式追寻的目标是,经过多次赌局后,实现赌客资金量的最大化。在推导过程中,最大化往往针对的是收益的期望,这是一个更数学化也更容易处理的做法。

    其他

    还有一种倍赌的押注方法,简单形式就是输了加倍本金,类似于夸张的网格。

    对于凯利公式一定要学会分析,并且把概率用统计算出来对应的参数,然后求导计算。

    实用的仓位决策方法

    仓位决策依赖买卖决策,也依赖于策略对风险的控制。

    无论是实用什么仓位决策,都是在买卖决策已经建立的前提下。

    凯利公式是可能损失100%本金的,我们通过使用风险度量指标,调整仓位设置,使其风险不超过某一个具体水平。

    凯利公式导出的仓位决策更看重收益,风险度量指导出的仓位决策更看重风险。两者侧重不同,是一组比较互补的仓位决策方式。

    一个简单的办法就是仓位f

    f = \min\{f_{凯利}, f_{风险}\}

    结合推进分析,可以让每个交易日进行一次买入卖出的决策,同时变更仓位。

    结合前文的双均线趋势策略,整个决策流程是这样:

    file

    投资组合决策

    上面的部分只考虑择时和仓位控制,没考虑选股。

    马科维茨的最优投资组合理论是业内比较认同的量化交易策略的开端,这一经典模型又被成为均值方差理论,均值方差优化模型、现代投资组合理论等。

    方差和协方差的引入是最优投资组合理论最大的突破所在,通过协方差矩阵来刻画资产间同涨同跌的程度。

    马克维茨的最优投资组合理论

    假设目前有N个风险资产,研究者的目标是基于这N个风险资产,决定投资于各个资产上的具体金额比例,从而最终得到最优的投资组合。

    设N个风险资产的资金占比分别为w1,s2,…wN,各个资金占比均不小于0.研究的目标就是决策出最优的n维向量W,其中

    W=(w_1, w_2,..., w_N)

    由于是投资整体,所以满足:

    \sum_{i=1}^Nw_i=1

    假设构建的投资组合在某一段时间内持有,我们需要知道这段时间内N个风险资产的预期收益率,分别设为r1, r2, …, rN,同时我们也需要知道这段时间内N个风险资产之间的预期协方差矩阵,设为:

    \Sigma = \left( \begin{matrix}
       \sigma_{11} & \sigma_{12} & ... & \sigma_{1N}  \\
       \sigma_{21} & \sigma_{22} & ... & \sigma_{2N}  \\
       ⋮ & ⋮ &  & ⋮  \\
       \sigma_{N1} & \sigma_{N2} & ... & \sigma_{NN}  \\
    \end{matrix} \right)

    其中σij是资产i和资产j之间的预期协方差,σii就是资产i的预期方差。

    基于这些信息,可以计算得到这段时间内整个投资组合的预期收益与预期风险,由于可加性,投资组合的预期收益Rp实际上就是N个风险资产预期收益的线性组合,Vp是投资组合整体的方差,通过选取一个合适的“收益/风险”组合,就可以通过最优化得到最终的资产配比结果,就把配置问题变成了一个优化问题。

    预期收益:
    R_p=\sum_{i=1}^Nw_ir_i
    预期风险:
    V_p=W'\Sigma W
    最优化问题,固定收益的情况下的: \min_W W'\Sigma W
    约束条件:
    \sum_{i=1}^Nw_ir_i=R_M, \sum_{i=1}^Nw_i=1, w_i \ge 0(i=1, 2, ..., N)
    其中R_M是需要提前确定的投资组合收益水平

    这是一个带有多个约束条件的二次最优化问题,提出问题就好,解答就看其他书就行。

    组合投资领域还有另外一种最优化问题,在固定投资组合整体风险的基础上,最大化投资组合的整体收益,数学描述如下:

    优化问题:\max_W\sum_{i=1}^Nw_ir_i
    其中约束条件: W'\Sigma W=V_M, \sum_{i=1}^Nw_i=1, w_i \ge0(i=1, 2, ..., N)
    V_M是需要提前确定的投资组合方差水平。

    还有一种最优化问题是将风险和收益相结合的方式,把他们组合成一个最优化问题,用数学描述如下:

    优化问题:\max_WW'R-\lambda W'\Sigma W
    约束条件: \sum_{i=1}^Nw_i=1, w_i \le0(i=1, 2, ..., N)
    其中R=(r_1, r_2, ..., r_n)',\lambda 是一个用以描述投资者风险偏好的参数,应该为正。

    就把组合投资的问题变成了一个统计和一个假设,统计是能够计算出如何根据做出做优的组合,假设是资产的收益和风险水平不变,这个组合可以推向未来。

    使用的组合优化方法

    如果只依赖数学,可能会产生不切实际的偏差,例如:

    • 某些资产配置为0,另外一些比例会过高
    • 最优配置可能是非常大规模的空头仓位
    • 甚至可能退化成简单的单一性投资

    要解决马科维茨最优投资组合理论的这些缺陷与问题,研究人员提出了很多方法

    带约束的最优投资组合理论

    增加约束条件,例如希望每项都持有一定份额,

    Black-Litterman模型

    这个模型可以人为地增加一些干预来调整数学模型,

    它有一个重要条件是,假设市场上所有大资产所占的份额都是均衡的。

    其过程就是假设所有资产份额均衡的,从而通过逆向马科维茨优化得到均衡情况下不同资产的收益率,这时可以认为调整各个资产的收益率,再正向计算投资占比,整体如下图:

    file

    评价

    收益和风险两个维度

    历史收益率,实操收益率,最大回撤等。

    还包括交易次数这些。

    书的参考文献

    1. 股票作手回忆录
    2. 统计套利
    3. 海龟交易法则
    4. 打开量化投资的黑箱
    5. 主动投资组合管理
    6. 交易策略评估与最佳化
    7. 如何建立自己的算法交易事业

    思考

    1. 这本书写的挺烂的,几乎所有的例子的时间点都是停留在2015年中,同时所有策略的收益在2015年之前又都是基本未盈利的,都是在2015年开始暴涨到2015年年中结束,然后得出结论#$%#$%^#$%。可是2015年谁不知道啊,15年之前买哪只股票不会暴涨呢?年中之后不是一地鸡毛?平时不挣钱,2015年到年中能挣一大波,就能得出结论?所以这本书对于实操部分真的很烂。但是吧,这本书本身给出的两个择时策略就是矛盾的,所以它本身可能也不是想给出具体的策略方法,而是想建立框架,这个角度来说这本书又还不错。给了我挺大的启发,可能是读的第一本量化交易相关的书,关于回测的一些坑位介绍的不错,关于仓位控制也是我之前从未想过的,极大地优化了我自己的交易框架系统,并且给出的双均线策略虽然在市场上无用,但我发现无用是用钱证明的,因此对我来说,这是我第一个执行的策略。
    2. 这是第九章之前对这本书的看法,第九章之后觉得这本书真的还是非常棒的,对于风险和配置的讲解真的让我觉得很厉害,风险把资产仓位问题变成求导的数学过程,还最佳配置变成了一个最优化问题。受益良多。
    3. 别说,最后一章还真不错,把整本书的脉络讲得很清楚,一层一层的如何推进的,如何一点一点把更多的因子加入系统:
      file
    4. 双均线是一个很好地衡量当前价格趋势的指标,可以抓住大涨大跌,但是本身方向性的震荡过于强烈,如果作为主指标来计算,需要更多这个相关的指标来避免方向性反复震荡。但是避免了方向性的震荡必然就会延后上车的概率,感觉对于忽然的爬升和下砸双均线是一个非常好的指标。
  • Python高性能编程 读书笔记

    主题

    在当python的函数越短,通常意味着性能越高!

    这不是笑话,在不改变算法的情况下,同一个功能是一定存在一个最短指令集的,当python代码变短意味着指令码变少,那多的指令码就在底层以CPU指令码的形式转移了。

    这叫做同算法指令集数量守恒。 ——本人

    第二章 通过性能分析找到瓶颈

    python可用的分析工具:

    • cProfile:自带的运行分析工具,可以计算函数的执行次数和时间;
    • runsnakerun: 可视化cProfile的内容;
    • link_profile: 分析的更加细致,但是执行效率会变慢,要增加修饰符;
    • memory_profiler:诊断内存的用量
    • heapy:调查堆上的对象
    • dis模块:生成CPython字节码

    heapy模块

    • guppy.hpy() – 获得heapy对象,作为操作接口。
    • heap() – 获得堆中的可见对象(reachable and visible),这些对象并不包含guppy库使用和创建的对象。
    • setref() – 设置一个参考点,下一次调用heap()函数会计算这个参考点之后创建的。
    • heapu() – 获得不可见(循环引用)的对象的状态和列表,heapu()返回一个状态(guppy.heapy.Part.Stat)标明不可见对象。

    dis模块

    获得python的字节码

    def myfunc(alist):
        return len(alist)
    
    >>> dis.dis(myfunc)
      2           0 LOAD_GLOBAL              0 (len)
                  3 LOAD_FAST                0 (alist)
                  6 CALL_FUNCTION            1
                  9 RETURN_VALUE
    
    >>> import math
    >>> def myfunc(x):
    ...     return math.sin(x)
    ...
    >>> import dis
    >>> dis.dis(myfunc)
      2           0 LOAD_GLOBAL              0 (math)
                  2 LOAD_ATTR                1 (sin)
                  4 LOAD_FAST                0 (x)
                  6 CALL_FUNCTION            1
                  8 RETURN_VALUE
    >>> from math import sin
    >>> def myfunc(x):
    ...     return sin(x)
    ...
    >>> dis.dis(myfunc)
      2           0 LOAD_GLOBAL              0 (sin)
                  2 LOAD_FAST                0 (x)
                  4 CALL_FUNCTION            1
                  6 RETURN_VALUE

    默认值不能用可变类型

    >>> def B():
    ...   def A(x=[]):
    ...     x.append(2)
    ...     return x
    ...   return A
    ...
    >>> import dis
    >>> dis.dis(B)
      2           0 BUILD_LIST               0
                  2 BUILD_TUPLE              1
                  4 LOAD_CONST               1 (<code object A at 0x7febe7e5de40, file "<stdin>", line 2>)
                  6 LOAD_CONST               2 ('B.<locals>.A')
                  8 MAKE_FUNCTION            1
                 10 STORE_FAST               0 (A)
    
      5          12 LOAD_FAST                0 (A)
                 14 RETURN_VALUE
    
    
    构建了一个函数,是B.<locals>.A,并且list作为默认值一开始就存进去了
    >>> def X(x=[]):
    ...   return x
    ...
    >>> X.__defaults__
    ([],)

    第三章 列表和元祖

    python使用魔法函数eq和lt来进行对象的比较。

    bisect模块是二分查找模块

    通用代码会比某个特定问题设计的代码慢很多。

    blist是比默认的list在存在大量修改的list场景下实现更快的数据结构。

    第四章 字典和集合

    python在va == vb的判断内部调用的是eq方法。

    可以被散列(哈希)的对象是同时实现了hash的魔法函数以及eq或者cmp两者之一的类型。

    这里一定要实现eq或者cmp为了防止两个对象的hash相同,那样就需要判断两个对象是否相等,如果相等则是同一个,不然则是不同的。

    python对dict本质就是一个hash表,底层对hash冲突的处理方式是开放寻址法

    同时在python的dict到达容量的2/3时会发生扩容,扩容的复杂度是O(n)的,需要将所有的对象都重新hash一次。

    每当python访问一个变量、函数或模块时,首先会查找locals()数组,其内保存了所有本地变量的条目,如果不在本地变量里那么搜索globals()字典,最后如果对象也不在则搜索builtin对象。这里可能为了搜一个函数或者变量要搜好几个dict。

    第五章 迭代器和生成器

    代码每次运行到yield该函数就会“发射”出一个值,然后外部代码需求另一个值时该函数才会继续运行(上下文会保存)。

    使用python的内置函数iter来创建迭代器,iter函数会返回对象的iter属性:

    # python的循环
    for i in object:
        do_work(i)
    
    # 等价于
    object_iterator = iter(object)
    while 1:
        try:
            i = object_iterator.next()
            do_work(i)
        except StopIteration:
            break

    如果只是计算满足某个条件的列表数量,这样可以节省一笔内存

    # 不要写:
    [i for i in xrange(n) if i % 3 == 0]
    # 要用:
    sum((1 for i in xrange(n) if i % 3 == 0))
    
    ----------------------
    项目里一些代码的鞭尸:
    level_aver = float(sum([member.rank_level for member in self.member_dict.values()])) / self.size
    
    total_num = sum([abs(value) for value in pop_result.itervalues()])
    
    sum([mgr.busy_count for mgr in self.combat_mgr.itervalues()])
    
    # 这里每次+可能会增加一次内存分配和复制
    # 用list(chain()) 在1000*1000的对象上操作要快396倍
    task_list = reduce(lambda x, y: x + y, task_level_list)
    
    # 而且原场景其实不需要这个list,拼接了之后只是一次性使用直接返回迭代器即可

    python里一些表达式:

    • 列表表达式: [f(xx) for xx in rr if xx else f(xx)]
    • 生成器表达式: (f(xx) for xx in rr if xx else f(xx))
    • 字典表达式: { key_expr: value_expr for value in collection if condition }
    • 集合生成器: {f(xx) for xx in rr if xx else f(xx)}

    在这里记录一下。

    标准库中的itertools库提供了内建函数map, reduce, filter和zip的生成器版本(分别是imap, ireduce, ifilter和izip),以及其他很多有用的函数,特别是:

    • islice 允许对一个无穷生成器进行切片
    • chain 讲多个生成器链接到一起
    • takewhile 给生成器添加一个终止条件
    • cycle 通过不断重复将一个有限生成器变成无穷

    顺便记录一下上面几个函数的功能:

    • map(function, iterable, …): 将参数以函数执行的生成器
    • reduce(function, iterable[, initializer]): 跟map类似,不过f的参数是两个,先对迭代器中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
    • filter(function, iterable): 对迭代器的对象执行f来进行过滤,为True才会返回
    • zip([iterable, …]): 将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    • any(iterable), 如果 iterable 的任一元素为真值则返回 True。
    • all(iterable), 如果 iterable 的所有元素都为真值则返回 True。

    第六章 矩阵和矢量计算

    原生python并不支持矢量操作,主要的核心原因是python的列结构存储的内容是指向对象的指针,其次python的字节码没有对矢量操作做优化。

    result = 0
    for i xrange(num_iterations):
       result += i * sin(num_iterations)
    return result
    
    # 下面这个快过上面那个,虽然是废话,但是很实用
    result = 0
    for i xrange(num_iterations):
       result += i
    return result * sin(num_iterations)
    
    # -------------------------------------
    # damage_system
    for ratio in reduce_ratio_list:
        damage *= ratio
    
    # 比上面要快16%
    damage = reduce(operator.mul, reduce_ratio_list, damage)
    
    # -------------------------------------

    书中用numpy去优化一段代码,带来了40倍的效率提升,但是神奇的事情是,禁用矢量指令集优化,性能依然有极大的提高,用perf分析发现矢量操作近带来了40倍中的15%,剩下的是内存问题导致的效率低下。

    perf是一个进程级别的分析工具。

    numexpr

    将python能够分析执行顺序,非常大程度的优化矩阵,可以自动地利用多CPU的优势,并且考虑到CPU缓存的问题,会特意移动数据让各级CPU缓存拥有正确的数据。

    如果numpy可以将速度快几倍,那使用numexpr可能可以将速度提升至几十上百倍。

    但是如果矩阵特别小,会有负优化的效果。

    第七章 编译成C

    Cython、Shed Skin和Pythran是纯粹的基于C的编译方式,凭借Numba的基于LLVM的编译方式,还有替代虚拟机的pypy,内置了一个即时编译器(JIT)。

    无论使用哪条路线,都要在适用性和团队效率上作出权衡,

    image

    优化是永无止尽的,但是对一个模块的优化是有限的。

    顺便一提,pyc只是py编译成的python机器码,并不包含优化。

    对python的优化

    Cython

    可以直接把python代码编译成so,可以先用Cython在服务端优化一轮,顺便提前把模块化做好。

    Shed Skin

    将python翻译成C++的编译器,会自动去猜测类型,可以直接被import,不像Cython需要显式指定类型。

    Shed Skin会将python的list拷贝成Shed Skin环境的变量,这个是会花时间的,

    numba

    llvm编译器的python脚本编译,只需要在需要编译的函数增加@jit()修饰符即可,执行速度非常快

    Pythran

    有点像Numba和Cython——我注解函数的参数,接着它接管进一步的类型注解和代码特化,它会利用OpenMP的并行化可能性。

    pypy

    底层换了虚拟机,提供了JIT,执行时编译,所以第一次会很慢,编译好之后再执行非常快!

    pypy和CPython的垃圾回收机制不同。

    任何纯python的库pypy都能直接安装运行,但是有C扩展库的就可能无法工作。

    内存消耗比cpython多。

    写C/C++程序的优化

    ctypes

    C++只写一些函数,然后通过ctypes来”import”进python,需要在python层将所有的调用对象都转化成ctypes对应的C类型,然后执行。

    这里在使用list或者dict的时候,会非常非常消耗。

    cffi

    相比ctypes方便很多,并且支持一些很便利的语法糖。

    CPython模块

    我们项目里目前是用的模块,会很繁琐,很简单的代码也要写几十行来兼容,但是好处是控制颗粒度非常高,从无视GIL到引用计数,一切都可以直接去修改,但是对程序的要求也会高一点,因为需要了解python的一些细节。

    在大部分情况下,书中的建议是不使用这种方式。

    第八章 并发

    时间循环有两种方式:回调或者future。

    回调会带来很长的调用链,future+asyncio是一个很好的,不过我们用python2是永远没机会用了。

    分别使用了gevent,tomado和asyncio

    第九章 multiprocessing模块

    可以让程序基于进程和线程的并行处理,multiprocessing.Pool的功能感觉很强!

    对于使用这个模块,需要解决的问题:

    • 把工作拆分成独立的工作单元
    • 考虑是否能随机化工作序列
    • 尽量让同时在处理的任务数量和CPU数量相同

    第十章 集群和工作队列

    一个容易调适的系统可能胜过一个更快的系统。

    • 启动组件:cron任务,Circus或supervisord
    • 测试容灾的组件:ChaosMonkey
    • 部署系统:Fabric、Salt、Chef或Puppet

    下面几个都是集群化的方案

    Parallel Python模块

    • 几乎没有依赖性,接口简单;
    • 不是很强大,缺少通信机制

    Ipython Parallel

    IPython作为shell做并行任务控制,依赖ZeroMQ。

    NSQ

    是一个可随时投入生产的队列系统,有持久性和扩展性。

    其他集群化的工具

    • Celery
    • Gearman
    • PyRes
    • 亚马逊的简单队列服务(SQS)

    第十一章 使用更少的RAM

    基础对象开销高:100000000项的list要消耗760MB的内存,可以替换成array,array是连续的内存块,而且array可以直接传递给C++层不需要额外的转换。

    python3对字符串的存储效率相比python2提高了很多。

    image

    高效地存储文本,trie树和有向无环图 (DAWG)(双trie树结构)单词图:

    通过允许概率误差来减少数据集需要的内存空间:

    • Morris计数器
    • 布隆过滤器
    • loglog计数器

    End.

  • 一本书读懂TCP/IP 读书笔记

    TCP/IP是什么

    互联网包含因特网,因特网包含万维网。

    物理层

    物理层解决最基础的传送通道,涉及问题主要是建立、维护和释放物理链路所需的机械的、电气的/光学的、功能的和规程的特性

    数据链路层

    在相邻的网络节点之间提供简单的、传输以帧为单位的数据,同时它还负责数据链路的流量控制、差错控制。大家要理解,这条链路不具备任何路径选择和转发功能,你可以把它仅仅理解为“一条封闭的路”,除了两端,没有额外出入口。

    本层要提供一定的差错检验和纠正机制。以太网就属于这一层。所以你会经常听到“以太网帧”这一术语。

    传统IP技术就是无连接服务,而改造为MPLS(多协议标签交换)网络后,就属于面向连接的服务了。

    网络层最知名的协议就是IP。

    大名鼎鼎的TCP和UDP就属于传输层。

    表示层就处理通信进程之间交换数据的表示方法,包括语法转换、数据格式的转换、加密与解密、压缩与解压缩等。

    OSI是哲学,而不仅仅是技术!

    以太网是IP通信中数据链路层最常见的形式,除此之外还有PPP、HDLC等。10Gbit/s以下的以太网一般应用于局域网,而PPP、HDLC则应用于广域网范围内居多。

    TCP是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP还要处理端到端的流量控制。UDP是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。

    由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭

    令牌环网的设计

    高效利用率,但是容错不行,通过抢夺一个令牌互相发言

    以太网的设计点,直接发言,冲突了就随机等待,

    以太网的优点:简单,灵活

    以太网的缺点,不能控制流量和优先级,

    ip层

    ip层以下只认识mac地址,所以局域网内的查找需要先广播一次,然后记住ip对应的mac地址。

    一般查找dns的顺序是dns缓存->hosts文件->dns服务器

    端口:有两种,一种是硬件的路由的端口这种,另一种是应用层的逻辑端口,例如www是80端口。

    在基础层 无连接的技术 > 有链接的技术

    局域网中枢——以太网交换机

    通常情况下,网络中实际的数据流特性与人们在局域网普及之前的估计不同,如果要花大力气去研究数据流特征并用复杂的方案去应对每个细节,不如用一些简单的技术体制来满足大部分的要求。谁最简单?当然非以太网莫属喽!

    今天的全球以太网市场上,三巨头鼎力:思科网络、华为、惠普。

    这一设计简单、便捷、灵活性强,随时可以添加、删除主机,方便非专业人士组网。

    CSMA/CD(载波侦听多路复用-冲突检测),这是以太网的精髓所在!

    当今的以太网大都以以太网交换机为核心来进行网络连接和组织,这样,以太网的拓扑结构就成了星型。

    交换机记录的是每个mac地址的物理接口是哪个,路由器则是用路由表 二层交换机

    因此有人把VLAN称为“广播域”。

    在一个以太网内的主机,如果被划分在不同的VLAN里,他们之间的通信,必须经过路由设备(路由器或者三层交换机)进行

    勤奋的引路者——路由器

    路由器是组成IP网络最主要的选路设备

    路由器专门执行各种路由协议(后面章节将专门介绍路由协议),并进行数据包的转发工作。

    每台路由器都可以按照一定规则动态更新它的记忆,也就是更新自己的路由表(这叫动态路由)。

    核心路由器(也可称作“骨干层路由器”,CR)、汇聚路由器(有人称作“分发层路由器”,BR)和接入路由器(又称“访问层路由器”,AR)

    一般要采用控制部件热备份、双电源热备份、双数据通路等技术保障硬件可靠性。

    信息大脑——主机

    在IBM创立之初,该公司的主要业务是商用打字机、员工计时系统、磅秤(雷倒!)、自动切肉机(再次雷倒!),而后转为文字处理机、穿孔卡片设备等。第二次世界大战期间,IBM甚至还造过武器。 今天的IBM是一艘工业企业的超级航母,在多个领域都有很高造诣。

    不可否认的是,当前主流的操作系统都包含了大量的应用程序,Windows就自带各种游戏、记事本、写字板、网页浏览器(Internet Explorer)等,这些都是商业运作的需要,而非操作系统的初衷。

    人们按照数据模型原理,将数据库系统分成网状数据库、层次数据库和关系型数据库三类。

    IP世界的道路构成

    为了区分单模光纤和多模光纤,人们把单模光纤外套做成黄色,而多模光纤做成桔红色或者灰色。

    TCP/IP经营管理者

    世界上没有绝对的自由。哲学家说:自由是相对的,不自由是绝对的。 世界上没有绝对的开放。IP专家说:IP的开放是相对的。

    关键规则之一:以太网编码规则

    MAC地址长度为48位二进制,前24位由设备商标识符,后24位是设备商自行分配的序列号,常表示为12位的十六进制数。

    关键规则之二:IPv4地址的定义

    不带子网掩码的IP地址是无效的IP地址。

    10.0.0.0/8:10.0.0.0~10.255.255.255; 172.16.0.0/12:172.16.0.0~172.31.255.255; 192.168.0.0/16:192.168.0.0~192.168.255.255。

    关键规则之十一:安全法

    不安全是绝对的,安全是相对的。

    传输层的TCP协议被用来提供IP的可靠传输,但并非安全传输。

    安全问题和效率问题,都是相对的。网络建设者需要把握其中的尺度,避免造成资源浪费和用户体验度的降低。而之所以设计三层安全机制,就是从安全和效率两方面综合评估而制定的。

    关键规则之十二:网络地址转换法

    NAT英文全称是“Network Address Translation”

    LAN概述

    VLAN所指的LAN是广播域,即广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。

    常见中继设备介绍

    一个数据包从一台网络设备到另一台,端口号、源和目的IP地址在过程中不会改变,MAC地址会随之发生变化。

    三层交换就是二层交换技术+三层转发技术

    路由协议

    路由协议是为了满足路由器获取路由表的需要而制定的标准化协议

    应用

    移动互联网——为内容而战

    游戏、导航、音乐、视频、图片、电影、图书、管理软件……在应用商店里应有尽有。 苹果的创造性激发了全行业的思维模式的解放。步后尘的企业一个接着一个。

    PTV、OTT TV网络电视技术

    不论是IPTV还是OTT TV对广电冲击很大,原本电脑、手机、互联网都是工信部的天下,而电视屏幕、各种内容是广电总局的地盘,两者井水不犯河水,现在大家都看好客厅电视屏幕这一块市场,电信运营商搞IPTV,互联网公司搞“盒子”,吃肉吃到广电总局碗里来了,它当然坐不住了,绞尽脑汁,维护自己的利益。先是下发文件,要求:互联网电视集成平台不能与设立在公共互联网上的网站进行相互链接,不能将公共互联网上的内容直接提供给用户。互联网电视集成机构所选择合作的互联网电视终端产品,只能唯一连接互联网电视集成平台,终端产品不得有其他访问互联网的通道,不得与网络运营企业的相关管理系统、数据库进行连接。按照这个规定,盒子不能提供优酷、土豆、Youtube……的内容,甚至连上网浏览都是打擦边球。

    IPRAN分组传送技术

    人们白天在工作区上班,使用手机连上B基站上网(友情提醒,上班时候上网违反劳动纪律)

    云计算

    SaaS: 软件即服务,用户无需安装软件,而是用标准客户端(浏览器)即可使用软件服务,如Google Docs。

    IaaS: 基础设施即服务,用户无需购买硬件,而是租赁云计算提供商的基础设施,部署自己的OS,进行自己的计算,这里的用户一般是商业机构而不是终端消费者。IaaS最有名的提供商是亚马逊的AWS。

    PaaS:与IaaS类似,只是用户不再控制OS,而是利用云计算提供商提供的OS和开发环境做开发。

    物联网

    物联网(Internet of Things)是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网连接起来,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。

    SDN软件定义网络

    SDN的本质就是软件定义网络,也就是说希望应用软件可以参与对网络的控制管理,满足上层业务需求,通过自动化业务部署简化网络运维,这是SDN的核心诉求。

    其他思考

    对于这些知识,要了解到什么样的深度呢。取决于阅读的目的,或者是需要解决的问题,现在我就不需要详细阅读每一个实现的标准细节,但是又要了解具体的过程细节。

    我的目的就是解决游戏卡顿,了解网络标准的细节。

  • 不要和你妈争辩

    点评

    这本书真的很可爱,作者有非常有趣的想象力。在是孩子的时候,恋爱的时候和有小孩的时候读起来感觉应该不同的。真的是很温柔一本读物。 孩子应该要知道父母并不是生来就是父母,他们在相遇之前都有自己的人生,在某一刻之前也不相识相爱,他们组成家庭生了“你”是一场不亚于你和某个男孩或者女孩相爱的一场冒险。

    摘抄

    关于菲莉西亚的妈妈为什么讨厌我

    人人都说“直到你自己有了孩子,你才会喜欢孩子”。这是胡说八道。有孩子以后,我只对你这一个孩子感兴趣。其他孩子依然很讨人嫌。

    关于组建乐队 交友这件事当然没有什么硬性规定,但既然我们刚好聊到这儿了,还是立两条规定吧:真正的朋友不会抢你暗恋的姑娘。真正的朋友不会在“魔兽世界”里黑你的装备。

    有时候你可能想要一个打架的时候会为你出头或者和你一起穿越北极圈的朋友。但真正的生活中,你更需要的是周二晚上能喊出来一起去吃个汉堡的朋友。

    关于爱

    所以我不知道该如何告诉你什么是爱。有人说我们先要了解自己,才能了解他人。这或许是对的。

    不过,如果你的小小身体里还有一点我的基因痕迹,那你可要准备好,在接下来的九十年或者更多年里,你总会觉得很饿。最好现在就做好准备。生命不止,食物不息。想着吃的,梦见吃的,找吃的,做吃的,点吃的,等待吃的,讨论吃的,质疑没得吃……我看菜单的时候,从来不想“哪个看起来更好吃”,只关注“哪个分量最大”。

    我对爱了解不多的原因是,我只爱过一个女人。但和她在一起的每一天,都像是在一个遥远的魔法国度里当海盗,充满了无尽的冒险和无尽的宝藏。逗她笑就像是穿着一双大大的雨靴,跳进深深的水坑那样快乐。我总是率直、尖锐、黑白分明。而她就是我全部的缤纷色彩。

    当我紧紧握住你的小手

    我希望你能够读一读,听一听。因为爱上文字的体验是如此特别。那些词句和思想像是血管中振翅的蝴蝶,像是脑海中呼啸而过的旋风,像是直指眉心的一记重击。

    很少有人能准确说出确信要和另一半共度余生的那一刻。而我三生有幸。 (在食堂排队看到这一句话,眼泪一下就溢出来了)

    你妈妈说,当护士领着她上下楼梯,走过长长的走廊,突然打开那扇门的时候,她的心碎了一地。我躺在担架上,浑身都是血。而我只知道,当我转过头看到她的那一刻,我的心要从胸腔里跳出来。我一辈子都会记得那种感觉。就是在那时那刻,我确信我会陪伴她到宇宙毁灭。

    我人生中最大的成就除了给你贡献了一半基因之外,就是留住了她。

    如果你想知道为什么我总说配不上你妈妈,原因有千千万万。那些难熬的夜晚只是其中的万分之一。

    她才是真正挨了一枪的那个人。永远别忘了这一点。

    为什么紧紧地握住你的手,或者久久地握住你的手。大部分人永远不会意识到,人不是永生不死的。

    你和你的母亲是我这辈子最伟大、最美妙、最令人提心吊胆的历险。我每天都很惊讶你依然允许我跟在你身后。所以永远记住:每当我不可理喻、令你难堪、让你觉得不公平的时候,想想你就是不告诉我你到底把车钥匙藏哪儿去了的那天。别忘了,是你先挑事儿的!

    致我的儿子

    当你生我气的时候,我希望你记得,在我眼中,你永远是那个还没长牙的一岁小男孩,紧紧抱着毛绒狮子,光着屁股站在走廊里咿咿呀呀地对我笑。

    关于浴室感应灯

    你可以问问所有刚有孩子的父母,天哪,有娃的第一年,整个生活简直就是围绕着便便打转!

    “准备出发?好嘞!拉了吗?啊?你说什么?还没有?可恶!好好好,保持冷静,不用惊慌。几点了?我们还要接着等吗?要么现在就出发,希望一路上能挺住?行嘞,赌一把吧!不行?万一路上拉了怎么办?你说的也对。好吧。别吵,让我好好想想!万一一直不拉,我们就在这儿干耗时间怎么办呢?冒个险,现在就走呗?那万一路上拉了,咱们肯定得互相埋怨‘上帝啊,要是当时直接出发,而不是吵来吵去的,肯定就不会拉在半路上了!’”

    你肯定会想我干吗现在提这件事。我只是想让你知道,生活中的一切都是相辅相成的。你看,便便是世界的一部分。鉴于环境问题和可持续发展变得至关重要,你有必要了解便便在人类的宏伟蓝图中扮演的角色,以及便便对现代科技的重要意义。

    我觉得要小孩只是因为从远古就刻在骨子里基因。要小孩且强迫他优秀不是目的。他健康会爱人,我觉得就足够过好一生了。

    我们希望你成为比我们更好的人。如果我们的孩子长大后没有成为更好的一代,那繁衍后代还有什么意义呢?为了让你更善良、更聪慧、更谦逊、更慷慨、更无私,我们竭尽所能地为你创造最好的环境。

    我们开始在意环境,因为地球并不是我们从上一代人那里继承下来的,而是从下一代人手中暂时借来的

    但是你要明白,我已经尽了最大努力。这是有据可查的——我绞尽脑汁、全心全意、调动了我的全部智慧——反正我拼命在网上查了。

    关于宜家

    不过还有一个小小的建议就是,第一张沙发别买宜家的,买二手货就行了。

    因为你迟早会坠入爱河。从那一刻开始,每换一次沙发都将是一次漫长的拉锯战。

    但是相信我,当一对结婚十年的夫妇在宜家的书柜区开战的时候,他们吵架的原因绝对跟他们面前的那个柜子半毛钱关系都没有。

    不管你爱上的女人有多少缺点,我敢保证你的缺点一定比她多。所以不要找一个爱你优点的姑娘,找一个能够包容你缺点的姑娘吧。

    所以尽情玩耍,尽情学习,尽情长大。找到热爱的事,找到值得爱的人,然后为了他们全力以赴。在需要的时候释放善意,在必要的时候展现强硬。和朋友们在一起。

    关于足球

    在你眼中,足球大概意味着二十二个发胶硬邦邦、文身花里胡哨的百万富翁在草地上疯跑,动不动就像中弹了似的扑倒在地……

    我知道所有的孩子总有一天会突然意识到,爸爸们并不是超级英雄。我不傻,我只是希望那一天来得晚一些,再晚一些。我希望我们至少能够在每个周日下午,分享一些只属于咱们两个人的事情,一些我擅长的事情。我不怕告诉你“我爱你”,但其他的事儿让我觉得有点害怕。

    关于商品

    要知道,一生之中我们会拥有无数东西,所以不要太依赖任何一个物品。这不健康。因为商品无穷尽啊。

    我以为自己会成为最酷的年轻爸爸,永远云淡风轻,从不情绪失控。结果我站在婴儿食品货架前,看着七种不同的代乳食品,只想一屁股坐在地上哭号。

    关于男子气概

    假设第三次世界大战爆发,核武器摧毁了整个世界,仅存的人类从地下防御基地里探出头,只看到荒无人烟的严酷废墟。幸存者们决定找到他们之中最聪明、最强悍、最有能力的人领导人类的重建。那完了,没人会来找我们这一代人。 普普通通却占了所有的好处…

    我是受过高等教育的西欧白人异性恋男性,并且有工作,听上去把所有好处都占全了。

    关于上帝和机场

    这里就是机场啦,飞机们生活的地方。

    当爹的意义就是向你解释这个世界是怎么一回事

    我永远不会告诉你到底应不应该有宗教信仰,或者要不要相信上帝的存在。这是上帝和你之间的事情。只要你对你妈好,不偷抢拐骗,不支持曼城队或者做其他更可怕的事情,我就不在乎你的道德信仰来自圣书还是果酱甜甜圈。但如果你问我我是如何理解这个世界的,那就绕不开宗教这个话题。

    关于你那只会唱歌的塑料长颈鹿

    你大概还不知道,老爸多希望你现在就了解货币制度,这样我就可以给你一百块钱让你闭嘴,好让我踏踏实实睡一会儿。

    成为她的男孩真是上天赐予的好运。每一天,我们都应该证明我们配得上这份福气。因为和她在一起的每一天,都像是充满阳光暖意和咖啡香气的周日清晨。

    等你长大以后,我猜这样的夜晚大概也是我最珍贵的回忆。我不会记得此刻的头疼和抱怨,只会记得我们一起玩的火车。

  • 欧洲宗教改革

    看了这个视频总结的几个小历史知识点:
    https://www.bilibili.com/video/BV1254y1W7Do?t=732

    斯堪的纳维亚半岛
    亚平宁半岛
    巴尔干半岛
    比利牛斯半岛、伊比利亚半岛
    欧洲几个大半岛的名称和位置。

    以及简单的历史:

    马丁路德一纸“九十五条论纲”将千年罗马教廷一分为二,一半忠于教皇,一般要求变革;希望革除陈弊,改革教会之人自称为新教徒。

    天主教不允许将圣经翻译成他国语言,马丁路德却在三年后将其翻译成德文,让更多德国的普世大众可以对圣经有自己的理解,进一步削弱了天主教的权威。

    1529年马丁路德的思想形成新的教派,称为路德宗(信义宗):心中有耶稣就行,不需要遵循戒律善工。

  • 娱乐至死 读书笔记

    摘抄:

    1. 在他看来,人们会渐渐爱上压迫,崇拜那些使他们丧失思考能力的工业技术。
    2. 奥威尔担心我们憎恨的东西会毁掉我们,而赫胥黎担心的是,我们将毁于我们热爱的东西。
    3. 深入一种文化的最有效途径是了解这种文化中用于会话的工具。
    4. 媒介的形式偏好某些特殊的内容,从而能最终控制文化。
    5. 芒福德总结说:“钟表是一种动力机械,其产品是分和秒。”在制造分秒的时候,钟表把时间从人类的活动中分离开来,并且使人们相信时间是可以以精确而可计量的单位独立存在的。自从钟表被发明以来,人类生活中便没有了永恒。
    6. 尼采说过,任何哲学都是某个阶段生活的哲学。我们还应该加一句,任何认识论都是某个媒介发展阶段的认识论。真理,和时间一样,是人通过他自己发明的交流技术同自己进行对话的产物。
    7. 那时还没有国际版权法,“盗版”书四处泛滥,大众对此绝无微词,那些被视为名人的作者也不能有所抱怨。1842年狄更斯访问美国的时候,他所得到的待遇简直可以同现在我们对电视明星、体育明星和迈克尔·杰克逊的崇拜相媲美。
    8. 印刷机不仅是一种机器,更是话语的一种结构,它排除或选择某些类型的内容,然后不可避免地选择某一类型的受众。
    9. 从16世纪的伊拉斯谟[插图]到20世纪的伊丽莎白·爱森斯坦,几乎每个探讨过阅读对于思维习惯有什么影响的学者都得出一个结论,那就是阅读过程能促进理性思维,铅字那种有序排列的、具有逻辑命题的特点,能够培养沃尔特·翁所说的“对于知识的分析管理能力”。
    10. 他们认为,虽然民主有种种的好处,但它无疑形成了一种助长不受约束的个人主义的危险。他们希望在美国通过“建立理性的法律”来拯救文明。
    11. 你心里有很多想法,但除了把这些想法提供给记者制造更多的新闻之外,你无能为力;然后,面对你制造的新闻,你还是无能为力。
    12. 谎言没有被定义成真理,真理也没有被定义成谎言。真正发生的是公众已经适应了没有连贯性的世界,并且已经被娱乐得麻木不仁了。
    13. 很多散文可以成功地从一种语言翻译成另一种语言,但我们知道诗歌很难做到这一点,我们也许能够大致了解一首译诗,但其中一定有什么东西已经丧失了,特别是赋予诗歌美感的那种东西。通过翻译,它已经成为另一首诗歌。还有一个例子:我们也许发现送一张安慰卡给失去亲人的朋友是一件很容易的事,但如果我们认为卡片能够表达我们当面哽咽着说出的话的相同意思,那就是自欺欺人了。
    14. 不论是释迦牟尼、摩西、耶稣还是穆罕默德、路德,从来没有哪个伟大的宗教领袖会给人们他们想要的东西,他们给的是人们应该具备的东西。
    15. 电视广告把企业从生产有价值的产品引向了设法使消费者感觉产品有价值,这意味着企业的业务已经成为一种伪疗法,消费者成了信赖心理表演疗法的病人。
    16. 但是建国者们没有预见到政府的专制可能被另外一种问题所取代,也就是说,公司国家通过电视控制了美国公众话语的流动。
    17. 在教室里,娱乐不过是达到目的的一种手段,而在电视上,娱乐本身就是一种目的。
    18. 约翰·杜威[插图]曾经说过,课程的内容是学习过程中最不重要的东西。
    19. 像字母和印刷机一样,电视通过控制人们的时间、注意力和认知习惯获得了控制人们教育的权力。
    20. “从电视上获得的意义往往是一些具体的片断,不具备推论性,而从阅读中获得的意义往往和我们原来储存的知识相关,所以具有较强的推论性。
    21. 有两种方法可以让文化精神枯萎,一种是奥威尔式的——文化成为一个监狱,另一种是赫胥黎式的——文化成为一场滑稽戏。
    22. 在赫胥黎的预言中,“老大哥”并没有成心监视着我们,而是我们自己心甘情愿地一直注视着他,根本就不需要什么看守人、大门或“真理部”。
    23. 我担心我们的哲学家在这方面没有给过我们任何指导。他们往往针对众人皆知的人性恶习提出一些明确的思想,而目前出现在美国的问题却无法归入任何思想体系。

    总结:

    1. 文章的第一部分提到了全书的主要观点,电视媒介会让人们崇尚娱乐。但第一部分主要的内容是在论述二百年前铅字印刷对美国从生活习惯到民众喜好的全方面影响,通过现在无法想象的读书率和能看六七个小时的政治辩论。最终为了证明信息媒介是能够筛选排除内容和受众的。
    2. 但作者并不是想表达娱乐不好,应该只是想表达一个现状,电视的出现会让民众娱乐至死。
    3. 虽然是一句废话,但是同样的内容,媒介不同确实接收人感受到的内容是不同的。当面说是一个效果,写在纸上是另一个,录个视频也是一个,用电脑或者手机又是一个。
    4. 赫胥黎式的未来是给民众巨大的信息量,将所有的信息娱乐化,奥威尔式则是控制民众的信息量。
    5. 对于学习来说非常重要的几点就是书中说不能让电视节目作为教育的原因,1、知识体系是循序渐进的,需要有足够的知识储备;2、体系的知识一定是有大量的论述的;3、一般会让学习的人困惑。

    End.

  • 十分钟冥想 读书笔记

    笔记:

    1. 作者第二个师傅告诉作者,冥想的过程会产生很多平时不会有的想法不是冥想的错,而是你自己没有意识到,冥想只是一道光,把你从忙乱中抽出来,去看到内心纷繁的想法。
    2. 冥想并不是让自己去把所有的想法都喊停的时刻,想法是自然产生的,冥想的的过程更像是在路边观察马路上的车流,冥想做的并不是让车停下,而只是观察。
    3. 观察的过程可能会发现一辆车很有趣,就跟着车跑到了马路上,某个时刻忽然意识到自己被车带跑了,于是又坐回路边,不需要把车拦下来,因为这些代表想法的车都是转瞬即逝的。这样观察的过程就是冥想。
    4. 总言之,第二个师傅告诉作者冥想要做的事情就是坐在路边,注意到人站在马路中间了就再坐回马路边。随着时间的推移,这个过程会更加轻松。
    5. 读到这里,书里把心灵比作马路,蓝天和烈马,我进行了第二次冥想。刚开始马路上有很多车,有很多想法,慢慢地马路上就没几辆车了,然后当我注意到的时候,已经有点心无杂念了。我的整个呼吸很自然地变成了深呼吸,甚至我觉得我在用全身来呼吸,在吸气的时候脖子,头和肩膀情不自禁地抬起来了,呼气的时候又自然地放下去。这次冥想的感觉真的很好。
    6. 我用脑内的声音制止住我去跟踪某个刚冒出来还在大脑里读出声的想法的时候,有一种挺独特的感觉,就是我那个想法朗读到一半被打断了,到剩下一半没说出的话没声地就进入了我的脑海。
    7. 9.4凌晨冥想到第五分钟我发现我就坐不住了…………
    8. 作者认为一天最适合冥想的时间是早上起床之后。
    9. 原来冥想不是阻止自己乱想,而是让自己集中注意力观察自己,不要被心灵的想法带偏。尝试每天在做冥想,第一二天效果特别好,甚至在生活里有些欲望在出现的时候就被捕捉到了,但后面有两天有一些焦虑,书最后也有提到改变思考角度的应对,继续坚持试试!

    摘编:

    1. 这些我们非常努力想要压制、想要去除、想要完全制止的想法,很大程度上是突然自动出现的,对不对?我们倾向于觉得自己控制着大脑,控制着思维的转换,但如果这一切是可行的,你就不会绕半个世界跑到这里来寻求我的建议了。
    2. 天空总是蓝的。云相当于我们的思想,当心灵忙于这些想法的时候,蓝色的天空就暂时被遮蔽了。
    3. 冥想不是需要努力去创造一种人为的心境,冥想不是努力把阴云赶走,而是:搬把椅子到花园里,坐看云卷云舒。
    4. 你的想法会决定你的感受方式吗?或者,你的感受方式会决定你的想法吗?
    5. 正念指的是愿意在自然觉醒状态下安定下来的意愿,它抗拒诱惑,拒绝对出现的任何情感做出评判,并因此既不反对某种情感,也不会被某种情感所冲散。冥想仅仅是一种练习,它为你练习对这些情感保持正念提供最佳条件。
    6. 头脑空间并不意味着摆脱任何情感,而是指一个地方,在这个地方,无论出现了什么情感,你都会安然自在。
    7. 闭上眼睛,刚开始的时候,注意一下自己的身体有什么感受。这样做会非常有用,因为它会给你线索,让你知道你的深层情感是什么。你觉得这种情感是沉重的,还是轻盈的?你身体中有种宁静感还是不安感?你有没有一种局促感或者豁朗感?不要急于确定,调动你那适度的好奇心,每个问题花上二三十秒的时间去回答。你的呼吸带给你什么体验——快还是慢,深还是浅?不要试图去改变它,只花一点儿时间去留意一下它所带来的感觉。
    8. 你自己采用的方法的特性往往反映了你的成长背景和你的性格。有些特性可能是你喜欢的,你觉得有用的,还有一些则可能会使你觉得不舒服,让你觉得没用。如果你能往冥想里面添加点真实的吸引力和好奇心,那么这些特性究竟是什么,就都不重要了。这是因为它们会成为冥想中的一部分,会成为被观察对象中的一部分。
    9. 从大局上来说,也没造成什么实质的伤害,但是对我而言,它代表着我们有时候竭力去坚持的生活方式,即竭力想达到一切事物的终点,却对过程毫不在意。
    10. 无论哪种冥想都离不开专注(一般指平静)和澄澈(一般指洞察)。
    11. 冥想不是去心灵深处乱翻,发掘以往的记忆,陷入分析并努力理解一切。那不是冥想
    12. 是对方说话的方式引发了我的怒火,但是从那之后,都是我自己的事了。我这么说并不是为那个僧人的态度辩护,而是我要为自己在延续的愤怒中扮演的角色负起责任来。
    13. 事实上,愤怒的根本原因只是我没得到我想要的东西。我想,这可以称为一种依恋,如此想得到一种东西以至于当你得不到的时候,你会抗拒,会挣扎。
    14. 但是不要觉得一定得拿这次的冥想跟另一次的比一比,或者更糟的是,拿自己的跟别人的冥想体验做比较——冥想就是它此刻的样子。
    15. 然而重要的是你要记住,这些不适早在你坐下来之前就已经存在了。冥想所做的不过是照了一道觉醒之光在其上,因此你能够更清楚地看到它们。最初的时候,这可能听起来像是坏消息,但是事实上,这是非常好的消息,因为我们需要更清楚地看清情况,然后才能对之放手。
    16. 他开始注意到,自己执着于努力控制焦虑,这反而导致了焦虑。

    End.

  • 故事 – 读书笔记

    《故事》是2014年天津人民出版社出版的图书,作者罗伯特·麦基,该书集结了罗伯特·麦基30年的授课经验,对《教父》《阿甘正传》《星球大战》等经典影片的详细分析中,清晰阐述了故事创作的核心原理。
    语录:

    1. 正如评论家肯尼斯·伯克所言,故事是人生必需的设备。
    2. 日复一日,我们寻求亚里士多德在《伦理学》中提出的那一古老问题的答案:一个人应该如何度过他的一生?人类一直基于四大学问——哲学、科学、宗教、艺术——来寻求亚里士多德问题的答案。随着我们对传统意识形态的信仰日益消减,人们转而寻求我们依然相信的源泉:故事的艺术。
    3. 作家总要围绕着一种对人生根本价值的认识来构建自己的故事——什么东西值得人们去为它而生、为它而死?什么样的追求是愚蠢的?正义和真理的意义是什么?在过去的几十年间,作家和社会已经或多或少地就这些问题达成了共识,可是我们的时代却变成了一个在道德和伦理上越来越玩世不恭、相对主义和主观主义的时代—— 一个价值观混乱的时代。例如,随着家庭的解体和两性对抗的加剧,谁还会认为他能真正明白爱情的本质?即使你相信爱情,那么你又如何才能向一群越来越怀疑的观众去表达?
    4. 我们必须深入地挖掘生活,找出新的见解、新版本的价值和意义,然后创造出一个故事载体,向一个越来越不可知的世界表达我们的解读。
    5. 主情节难以自圆其说,充斥着方便的巧合和脆弱的动机。
    6. “好故事”就是值得讲且世人也愿意听的东西。
    7. 故事是生活的比喻。
    8. 如果要在讲得精彩的琐碎素材和讲得拙劣的深奥素材之间进行选择的话,听众总是会选择讲得精彩的琐碎故事。
    9. 故事事件创造出人物生活情境中富有意味的变化,这种变化是用一种价值来表达和经历的,并通过冲突来完成。
    10. 就一部典型的电影而言,作者将要选择四十到六十个故事事件,或者换个常用的说法,叫做场景。小说家也许需要六十个以上,戏剧作家则很少达到四十。
    11. 故事场景称为故事事件,他不是一个镜头,而是一系列要表达这个故事事件的镜头。每个场景的设置是为了解说,要表达有关人物,世界观或者历史的意义,但更重要的是表达的价值一定要包涵转折,例如情绪的,价值观的正负反转。只是解说的场景可以把场景被设置到其他片段里去。理想是没有不含转折的场景。
    1. 节拍是人物的动作或者镜头,一个或多个节拍构成一个场景。
    2. 一个或多个场景构成序列,序列是故事中,每一个真正的场景都会对人物生活中负荷价值的情境进行转折,而一个序列表示更大的不可逆转的转折。
    3. 一系列序列构成更大的结构:幕。
    4. 一系列的幕便是故事。
    1. 在一个理想的世界里,艺术和政治绝无任何瓜葛。但现实中,它们彼此不可能相安无事。
    2. 故事三角:大情节,小情节,反情节
    1. 美国人是从死水一潭的文化藩篱和一成不变的等级制度中逃脱出来的,对变化具有一种天然渴求。我们不断求变,试图找到救世之方,如果有的话。在编织好一张投入亿万美元的“大社会”安全网之后,我们现在又要将它撕得粉碎。相反,旧世界已经从数百年的惨痛经验中学会了畏惧这种变化,认为社会转型将不可避免地带来战争、饥荒和混乱。
    2. 写爱情故事时,我们要问的最重要的问题是:“什么东西会阻止他们?”也即,爱情故事中的故事到底在哪儿?
    3. 压力是根本。在没有任何风险的情况下做出的选择意义甚微。
    4. 无论激发写作的灵感是什么,都不一定要保留在作品之中。前提并非稀世珍宝。如果它有助于故事的进展,则可保留,如若故事讲述意图偏转,则应舍弃那一原始灵感,顺应故事的发展轨迹。关键问题并不是如何开始写作,而是如何保证能够继续写下去并不断刷新灵感。
    5. 说教根源于一种天真的热情,认为虚构作品就像手术刀一样可以用来切除社会的毒瘤。
    6. 因为即如玻璃是一种光媒,空气是一种声媒一样,语言仅仅是故事讲述的一种媒介,事实上还是多种媒介之一。在故事的心脏跳动的,是比纯粹的言语更为深奥的东西。
    7. 故事的艺术不在于讲述中间状态,而在于讲述人类生存状况的钟摆在两极之间摆动的情形,讲述在最紧张状态下所经历的人生。
    8. 这里有一道简单的测试题,适用于任何故事。问:风险是什么?如果主人公得不到他想要的东西,他将会失去什么?更具体而言,如果主人公不能达成其欲望,将会发生在他身上的最坏的事情是什么?
    9. 无论我们如何试图铲除不平,运用各种各样的平等主义理论,人类社会却总是那样顽固,在权力安排上呈现其固有的金字塔格局。换言之,这便是政治。
    10. 讲故事就是许诺:如果你注意听我讲,我就给你惊奇,接下来便是发现生活的喜悦,在你从未想象过的层面和方向探知生活的喜怒哀乐。
    11. 笑声是我们对自己所认为荒唐或无耻之事所做出的批评。它可以产生于任何情感之中,从恐惧到爱情。而且我们的笑声总是伴随着解脱。笑话具有两个部分:系包袱和抖包袱。
    12. 人类的行动只能趋善而从是,只不过是根据自己所相信或推断出的善恶是非标准来行动而已。
    13. 我们永远不可能完全表达出自己的真情实感。因为我们很少真正了解它们。
    14. 经典的反讽故事:
      1. 他终于得到了他一直想要的东西……但是已经太晚,他不可能拥有它。
      2. 他被推到离他的目标越来越远的地方……结果却发现事实上他已被引导到他的目标。
      3. 他抛弃了他事后才发现的对他的幸福不可缺少的东西。
      4. 为了达到某一目标,他不知不觉地采取了一些背道而驰的步骤。
      5. 他采取行动想要毁灭某一事物,结果却适得其反,搬起石头砸了自己的脚。
      6. 他得到了某种他坚信会给他带来厄运的东西,想方设法要摆脱它……结果却发现那是一份幸福的厚礼。
    15. 即使前面两种用途都不适用,所有的影片都需要一个结局场景以表示对观众的尊重。因为,如果高潮已经打动观众,如果他们笑得不能自禁,被恐惧惊呆,充满着一种社会义愤,还在擦拭眼泪,那么银幕突然变黑,片尾字幕开始滚动,将是非常不礼貌的。因为这是催促他们离开的信号。
    16. 我们绞尽脑汁想猜出到底是谁或者怎么回事,但是,我们还是希望作者的侦探大师要比自己想象的更高明。
    17. 戏剧作家享有一项银幕剧作家所没有的特权——可以写出常人绝不可能说出口的对白。他不仅可以写出诗歌般的对白,而且还可以像莎士比亚、T.S.艾略特和克里斯托弗·弗赖伊一样用诗歌本身作为对白。
    18. 银幕剧作家确实可怜,因为他不能当诗人。他不能使用明喻和暗喻、谐音和头韵、节奏和尾韵、提喻和转喻、夸张法和弱陈法以及大转义。相反,他的作品必须具备文学的一切实质,但又不能文学化。一部文学作品本身就是一个完成品,而一部银幕剧本还得等待摄影机来将它完成。
    19. 从本质上而言,是主人公创造了其他人物。其他所有人物之所以能在故事中出现,首先是因为他们与主人公的关系。
    20. “他已经在那儿坐了很长时间”是拍不出来的。所以我们会不断地用这一问题来约束我们的想象:我在银幕上看到的是什么?然后只描写那些可以拍摄出来的东西:或许可以用“他掐灭了第十支香烟”、“他焦躁地看了一下表”,或者“他打着呵欠,尽量不让自己睡着”来暗示等了很长时间。

    心得:

    1. 豆瓣的分不是崇洋媚外,好莱坞每年四百到五百部作品,我们能引入和看到的寥寥自然是浪淘沙出来的。
    2. 作者吐槽纯特效大片,打着故事的幌子显示技术,其实是很不会被流传很容易遇冷的,会喧宾夺主,但是商业上会取得成功。严厉,打击范围也有点大,不好评价这句话的对错。
    3. 对于影片结尾,人物对生活的价值没有任何变化的电影,并不是在故事,而是叙事影片。在作者看来,用高超的技巧讲述一件事和用高超的技巧讲述一个故事是不同的。两者都可以拥有高超的技巧,让人感动欢笑,如果是叙事的结局稍加修改就能升华主题,那么一定是创作者刻意为之,要么是有必须要遵守的事实,要么就是在刻意讽刺。作者应该是因为这个原因,将故事和叙事拆开成两件事儿。
    4. 有次坐滴滴遇到一个白发爷爷,脑补了一些他生活的场景,觉得自己很聪敏,就自信开心地和别人分享了…看这个书才意识到,作家经常就是会去思考如果xxx将会发生什么来创作,我这点顺着想的内容确实没什么可被人称赞的…
    5. 忽然觉得和人沟通也是一样,你有一翻你认为正确或者重要的话想说,讲述方式以及和谁讲述都很重要,但更核心的事他们能不能理解,能不能同意,就是书中的共情是需要设计产生的,而在和人沟通的时候就是和人说人话和鬼说鬼话。
    6. 接上,而一个人产生共情的核心是要观众自己,这个是不是这就是之所以大部分作品开场白总会用一些镜头讲述普通人的形象来介绍主角。
    7. 故事很重要但可能不曾提及的事,是他是如何工作的,世界的政治是如何的,这些会体现在细节里的信息和故事本身同等重要。
    8. 忽然觉得所谓的艺术都是创作,通过特定的技法表达特殊的情绪,世界,观点,来感染观众。而故事作为一种艺术形式,最重要的技法不是文笔,而且冲突,裂痕,选择等角色之间的情绪纠葛。
    9. 观众永远是期待一个好故事的,不能让故事的发展和观众心里的预计相同。
    10. 所有故事里的反派应该都是很有魅力的角色,因为他在做的是在某些角度或者多数人看来不正确的事情,作者必须赋予反派足够的爱而不是也恨这个角色。反派只为了反衬主角的好不是一个好故事,好故事是一定要带有冲突的合理性的。