推荐《Hymn to life》

推荐一首音乐,一共11分钟多的音乐,前半段是Timo的音乐,后半段是卓别林在《大独裁者》中的演讲。

《大独裁者》是卓别林自导自演的一部电影,演讲呼吁人类消灭独裁和统治,追求幸福和自由,消灭国家之间的界限,鼓励士兵不要听命于愚蠢的统治,不要收体制的禁锢,鼓励进步,但是不要被机器占据了内心。

音乐链接:http://music.163.com/#/m/song?id=19275252

演讲搬运:

《Speech by Charlie (Charles) Chaplin (1889-1977) from The Great Dictator movie (1940)》
查理·卓别林(1889-1977)在《大独裁者》(1940)中的演说

I’m sorry but I don’t want to be an Emperor – that’s not my business
很抱歉,我不想做统治者——我对此毫无兴趣

I don’t want to rule or conquer anyone.
我不想统治任何人,也不想征服任何人

I should like to help everyone if possible, Jew, gentile, black man, white.
如果可以的话,我愿意帮助每一个人,不管是犹太人,非犹太人,黑人,还是白人

We all want to help one another, human beings are likethat.
我们都乐意相互帮助。这是人类的天性

We want to live by each other’s happiness, not by each other’s misery.
我们都乐意生活在他人的幸福之中,而不是眼看着他人痛苦

We don’t want to hate and despise one another.
我们都不愿互相仇恨,互相歧视

In this world there is room for everyone and the good earth is rich and can provide for everyone.
在这个世界上,有足够的空间让每个人得以生存,而土地是丰饶的,可以使每一个人都丰衣足食

The way of life can be free and beautiful.
生命可以是自由的,美好的

But we have lost the way.
但我们失去了这样的生活

Greed has poisoned men’s souls – has barricaded the world with hate;
贪婪毒害了人类的灵魂——它把世界锁在仇恨当中

has goose-stepped us into misery and bloodshed.
它操纵的军队迈着正步,将我们领入痛苦与杀戮

We have developed speed but we have shut ourselves in:
我们发展了速度,却孤立了自己

machinery that gives abundance has left us in want.
机器为我们提供了更多可能,却给我们带来了更多欲望

Our knowledge has made us cynical, our cleverness hard and unkind.
学识把我们变得刻薄,才智把我们变得冷酷无情

We think too much and feel too little: More than machinery we need humanity;
我们思考得太多,感受得太少;然而我们需要的是人性,而不是机械性

More than cleverness we need kindness and gentleness.
是温和友善,而不是才智

Without these qualities, life will be violent and all will be lost.
少了这些品质,生命将陷于暴戾,而我们将丧失一切

The aeroplane and the radio have brought us closer together.
飞行机和收音机将我们联系得更加紧密

The very nature of these inventions cries out for the goodnessin men,
这类发明的性质本身就在呼唤人类的善良

cries out for universal brotherhood for the unity of us all.
呼唤全世界的友爱团结

Even now my voice is reaching millions throughout the world,
就像现在,我的声音传向世界各地无数人们的耳中

millions of despairing men, women and little children,
传向无数的绝望的人们:男人,女人,孩子

victims of a system that makes men torture and imprison innocent people.
所有在这个折磨和禁锢无辜者的体制下承受牺牲的人们

To those who can hear me I say Do not despair.
所有能听到我声音的人们,请听我说,不要绝望

The misery that is now upon us is but the passing of greed,
我们现在所承受的不幸,仅仅是来自一部分人的贪婪和痛苦

the bitterness of men who fear the way of human progress:
他们害怕的是当今人类的进步

the hate of men will pass and dictators die, and the power they took from the people,
人们的仇恨终会消逝,独裁者也注定会死去,而他们从人民手中掳走的权利终

will return to the people and so long as men die, liberty will never perish…
将交还给人民,只要我们不畏牺牲,自由就永远也不会消失

Soldiers – don’t give yourselves to brutes, men who despise you,
战士们!别听命于残暴的畜生——他们蔑视你们

enslave you – who regiment your lives, tell you what to do, what to think and what to feel,
奴役你们,控制你们,告诉你们怎样行事,怎样思考,甚至怎样感受

who drill you, diet you, treat you like cattle, use you as cannon fodder!
他们训练你们,供养你们,像牲口似的对待你们,把你们视如炮灰

Don’t give yourselves to these unnatural men, machine men, with machine minds and machine hearts!
别听命于这些变态的人——这些有着机器头脑、机器心脏的机器人

You are not machines! You are not cattle! You are men!
你们不是机器,不是牲口,你们是人

You have the love of humanity in your hearts.
你们心里拥有的是人性之爱

You don’t hate – only the unloved hate – the unloved and the unnatural.
你们心里没有仇恨,只有得不到爱、丧失理性的人才会心怀仇恨

Soldiers – don’t fight for slavery, fight for liberty!
战士们!不要为了奴役而战!要为自由而战!

In the seventeenth chapter of Saint Luke it is written the kingdom of God is within man –
《路加福音》第十七章里写着,上帝的国度属于人类

not one man,
它不属于某一个人

nor a group of men – but in all men – in you!
不属于某一个集团,它属于全人类!属于你!

You the people have the power, the power to create machines, the power to create happiness!
人民啊,你们拥有权力,你们能创造机器,创造幸福!

You the people have the power to make this life free and beautiful,
人民啊,你们能活得自由活得美好

to make this life a wonderful adventure!
能享受生命这一场奇妙的旅程!

Then in the name of democracy let us use that power – let us all unite!!!
因此,让我们以民主的名义行使这种权力,让我们全体团结起来

Let us fight for a new world, a decent world that will give men a chance to work,
为一个崭新的世界而战,那是一个美好的世界,

that will give you the future and old age and security.
它使壮有所用,少有所求,老有所安

By the promise of these things, brutes have risen to power,
正是因为许下了这样的承诺,一群野蛮人窃取了人民的权力

but they lie!
但他们完全是在撒谎!

They do not fulfil their promise, they never will!
他们根本没能履行那些承诺!并且永远不会!

Dictators free themselves but they enslave the people!
独裁者只是让自己享受自由,却奴役他的人民

Now let us fight to fulfil that promise!
现在就让我们自己起来战斗,来兑现承诺

Let us fight to free the world, to do away with national barriers, to do away with greed,
让我们起来战斗,解放全球!

with hate and intolerance!
去消灭国家的界限!去消灭国家的界限!消灭贪欲,消灭仇恨,消灭蔑视!

Let us fight for a world of reason,
让我们为一个理性的世界而战

a world where science and progress will lead to all men’s happiness.
让科学与进步为全人类造福

Soldiers – in the name of democracy, let us all unite!!!
战士们,让我们以民主的名义团结起来!

 

两个美食家

在德国的时候,某天心血来潮跟欣说,我们把劳特林根的餐厅都去吃一次吧。最后发现,原来这个地方不大,却有那么多好吃的地方,直到最后也没有全部去过。

小镇上有座叫Achalm的小山,我们经常去爬,山脚下有一家中餐厅。有次下山的时候太累了,就在那里吃的。餐厅的老板是个中国人,告诉我们他接手这个餐厅不久,在我们的学校旁边坐4路车可以直接到这里,欢迎我们以后常来玩。我们俩觉得他话太多了,而且菜不也是很好吃,不是很正宗的中餐。以后就再也没有去过。

还有一次下山的时候,路过一个河边的餐厅,紧靠岸边,看起来非常漂亮,就想下次来这里吃吧。后来发现,这原来是一家非常传统的德国餐厅,有很正宗的烤肉和黑啤,配土豆泥。餐厅装修很好,也很大,门口的位子靠河岸,景色不错。里面进去是一个很大的餐厅,还有酒吧。价格也偏高一些,两个人要40欧。烤猪肉比较好吃,一人份刚好吃的很饱。烤肉吃过一次,还有次来这里点了黑啤,还有一次来这里点了个披萨,这里的披萨是方形的,放在一个板子上,很神奇,味道不好。

在德国吃到味道不错的中餐比较难,一般的中餐馆味道跟我们学校的餐厅差不多。不过有一家不错,在sdattmitte,叫做“银座”,听起来像日本餐厅,其实也卖寿司,不过是中国人开的。餐厅分两层,不是上下两层,是平行的两层,一层高一层底而已。高的上面是回转寿司,貌似是15欧,下面的可以点中国菜。水煮鱼特别好吃,记得好像是15欧。第一次吃好像是和欣去法国旅行之前,那时候心情比较浮躁,就像快点出发。不过这个火锅鱼让人即使在烦躁的心情也能吃的下去。稍有点辣,肉很多,点着一个菜够两个人吃的。两个人冲着火锅鱼去吃了好几次。还有一次去尝试了回转寿司,我觉得不是很新鲜,欣倒是吃的很起劲,一边吃一Bianc边算自己已经吃了多少钱的,很可爱。那次不好吃也吃的很撑。

在一起一个月的时候,去了一家西班牙餐厅,朋友推荐的。惊讶的发现,这么小的一家餐厅,并且仅此一家的餐厅,竟然有自己的网站!其实后来发现这并不是一家正规意义的餐厅,更像是一个酒吧,提供叫做tapas的东西,反正最后也是吃饱了,感觉味道还好,啤酒不错。以后也没去过。

就写到这里吧,一年前创建的草稿了,今天才想起来写完。其余还去了很多,都记不太清了。

刚在一起的时候,我说以后每天给你做早饭,这一年来都没下过厨了。十月一搬新家,重新开始下厨吧,菜谱一点一点记下来。

 

解决在readthedocs编译PDF含中文的问题

readthedocs.org编译项目的时候默认打开pdf和epub选项,中间貌似是基于LaTex的,字体问题非常头疼,之前都是在readthedocs.org项目中的高级选项选择把pdf编译禁掉,才会build pass。

最近在网上找到了解决办法:https://github.com/JuliaCN/julia_zh_cn/blob/master/conf.py

conf.py中修改latex_elements即可:

这里要注意的是,这段代码是配置LaTex,所以这些字符串必须加r,不要让pyhton解释。

所以务必检查一下几项:

  1. 不要全局导入__future__.unicode_literals,这会让这段代码编程unicode解释,readthedocs编译的时候会出字符问题。
  2. 检查项目中全局替换的部分(例如rst_epilog),如果修改到源文件,那么务必手动添加u前缀,否则会出现编码错误。

目前我只遇到这两个问题,解决之后readthedoc.org就编译通过了。不过好像编译出的pdf并不是特别美观。

 

《猩球崛起3》:套路式的电影

最近看了《猩球崛起3》,感觉受到了满满的套路。猩猩们在丛林里幸福地生活着,突然有一天,人类过来打他们,凯撒不想挑起战争最后还是打起来了,最后猩猩获得了胜利,猩猩们在丛林里继续幸福的生活……

最近几年的作品太多走这种套路式了。可能大家都不想冒险去搞新的世界观,新的创意。既然现有的东西能赚很多钱,为什么不稳一点捞几笔钱呢?

《变形金刚》,汽车人低调地生活在地球上,突然有一天出现了一种神秘的力量足以摧毁地球,于是汽车人不知道为什么和人类打起来了,或者汽车人之间打起来了。最后汽车人胜利了,擎天柱配着背景音乐总结了一番,然后汽车人又低调地继续生活。

《神秘海域》,我的老天爷,加上最近的这一部,同样的套路来了六次了!我从1开始玩的,德里克听说了某个地方有宝藏,于是在一个手下有很多士兵的反派的跟踪下(如果没有手下有很多反派的士兵,你在游戏里面的抢是干啥用的),一路走哪儿哪儿塌终于找到了宝藏,宝藏有时候是香格里拉有时候是别的,不过这不重要,重要的是这个宝藏一定会被反派抢走,然后反派要毁灭人类,这就是你最终的Boss,然后你杀了他,明白了这个宝藏原来被藏起来是有原因的,于是你毁了宝藏,游戏结束。完完全全同样的戏路啊!而且就连每一部都会有一个老烦的女人不断需要你救或者来救你都一模一样!

我要恨死这些套路作品了。不过好像真有一些人,只要看到汽车人变形然后打起来了就挺开心的。

话说回来,虽然有些作品除了一部又一部,不过一部比一部强。比如说《战神》解秘从来没有敷衍过,设计者绝对是花了心思的。还有漫威的系列,上个周看了《蜘蛛侠》发现真的不过,除了有些地方逻辑不太好,但是剧情,搞笑以及动作方面都挺满意的,塑造人物个性方面也很成功(话痨)。还有GTA,从一个反响一般的作品开始,慢慢的成长到了《罪恶都市》,然后《圣安地列斯》,然后《GTA5》。不一样的故事,不一样但是完整且完美的剧情。每次都有点担心,这一部游戏都已经这么好了,下一部该不会令人失望吧。

 

 

《Effective Python》小记

Effective Python 59 SPECIFIC WAYS TO WRITE BETTER PYTHON 这本书终于读完了。从这本书里学到不少经验,以及之前忽略的知识。书中部分内容也是库的内容(这么说有失公允,大部分属都会有抄库文档的嫌疑的,因为文档包含了最多的信息),也有很多内容基本上是常识,比如七八章合作和产品的东西。这些内容,看了书也不会,不看书实践一下不会也得会。是“纸上得来终觉浅”的东西。

下面按照目录记一下有用的东西。划掉的是垃圾,加粗或者颜色的是干货。

Chapter 1: Pythonic Thinking
Item 1: Know Which Version of Python You’re Using
Item 2: Follow the PEP 8 Style Guide
Item 3: Know the Differences Between bytes, str, and unicode
Item 4: Write Helper Functions Instead of Complex Expressions
Item 5: Know How to Slice Sequences
Item 6: Avoid Using start, end, and stride in a Single Slice
Item 7: Use List Comprehensions Instead of map and filter
Item 8: Avoid More Than Two Expressions in List Comprehensions
Item 9: Consider Generator Expressions for Large Comprehensions
Item 10: Prefer enumerate Over range
Item 11: Use zip to Process Iterators in Parallel
Item 12: Avoid else Blocks After for and while Loops
Item 13: Take Advantage of Each Block in try/except/else/finally

第一张虽然是Pythonic Thinking,却提出了很多不提倡使用的Python特性。但是我觉得书中这些条条框框没有必要必须遵守。比如6,为了可读性不要在一个切片操作上用3个数字,以及12,避免使用while-else,也是为了可读性。但是我认为,用了也不一定破坏了可读性。但是初衷是好的。我觉得只要不是写的太复杂,能保持一眼看明白或者多看一眼也能看明白,甚至看三眼也看不明白但是看看注释能看明白,也是可以的。本章中我觉得3和4非常有价值,4可以极大提高可读性。从这里我们知道不一定是非要为了重用才将代码封装成函数,为了可读性进行封装也可以。毕竟,函数的名字比注释要“优雅”的多。

Chapter 2: Functions
Item 14: Prefer Exceptions to Returning None
Item 15: Know How Closures Interact with Variable Scope
Item 16: Consider Generators Instead of Returning Lists
Item 17: Be Defensive When Iterating Over Arguments
Item 18: Reduce Visual Noise with Variable Positional Arguments
Item 19: Provide Optional Behavior with Keyword Arguments
Item 20: Use None and Docstrings to Specify Dynamic Default Arguments
Item 21: Enforce Clarity with Keyword-Only Arguments

14,15,16是干货,抛出一个有时候我们希望错误打断函数运行(如果出错之后后面的代码没有价值了的话),这样更好调试。对于调用出也可以使用try-except处理,而不是罗列一些if-else。有关闭包是一个重点知识。以及迭代器,不过这里感觉也并不是太深入。有关yield我还得多花点时间研究下。后面几条基本上是为了可维护性做的一些惯例。

Chapter 3: Classes and Inheritance
Item 22: Prefer Helper Classes Over Bookkeeping with Dictionaries and Tuples
Item 23: Accept Functions for Simple Interfaces Instead of Classes
Item 24: Use @classmethod Polymorphism to Construct Objects Generically
Item 25: Initialize Parent Classes with super
Item 26: Use Multiple Inheritance Only for Mix-in Utility Classes
Item 27: Prefer Public Attributes Over Private Ones
Item 28: Inherit from collections.abc for Custom Container Types

本章是面向对象的内容。Python很好入门,但是很多人将他当做一门面向过程的语言,项目都用函数组织。其实Python是纯正的面向对象的语言。就连函数也是一等的object。目前我们公司的项目都是以函数的形式组织的,我觉得很多地方都可以使用class,重用性会更好。

Chapter 4: Metaclasses and Attributes
Item 29: Use Plain Attributes Instead of Get and Set Methods
Item 30: Consider @property Instead of Refactoring Attributes Item 31: Use Descriptors for Reusable @property Methods
Item 32: Use __getattr__, __getattribute__, and __setattr__ for Lazy Attributes
Item 33: Validate Subclasses with Metaclasses
Item 34: Register Class Existence with Metaclasses
Item 35: Annotate Class Attributes with Metaclasses

这一章比较好,主要讲了Python获取属性的过程。这里的内容我觉得大多数和Python有关的书都讲不到。关于获取属性的部分我结合文档写了这篇博客。有关metaclass的部分我总结了这篇博客。都是干货。

Chapter 5: Concurrency and Parallelism
Item 36: Use subprocess to Manage Child Processes
Item 37: Use Threads for Blocking I/O, Avoid for Parallelism
Item 38: Use Lock to Prevent Data Races in Threads
Item 39: Use Queue to Coordinate Work Between Threads
Item 40: Consider Coroutines to Run Many Functions Concurrently
Item 41: Consider concurrent.futures for True Parallelism

这章涉及并行,进程、线程、协程等概念。目前用到的不太多,所以没有深入研究。这部分内容要结合操作系统的知识。以后再深入了解吧。

Chapter 6: Built-in Modules
Item 42: Define Function Decorators with functools.wraps
Item 43: Consider contextlib and with Statements for Reusable try/finally Behavior
Item 44: Make pickle Reliable with copyreg
Item 45: Use datetime Instead of time for Local Clocks
Item 46: Use Built-in Algorithms and Data Structures
Item 47: Use decimal When Precision Is Paramount
Item 48: Know Where to Find Community-Built Modules

Chapter 7: Collaboration
Item 49: Write Docstrings for Every Function, Class, and Module
Item 50: Use Packages to Organize Modules and Provide Stable APIs
Item 51: Define a Root Exception to Insulate Callers from APIs
Item 52: Know How to Break Circular Dependencies
Item 53: Use Virtual Environments for Isolated and Reproducible Dependencies

Chapter 8: Production
Item 54: Consider Module-Scoped Code to Configure Deployment Environments
Item 55: Use repr Strings for Debugging Output Item 56: Test Everything with unittest
Item 57: Consider Interactive Debugging with pdb Item 58: Profile Before Optimizing
Item 59: Use tracemalloc to Understand Memory Usage and Leaks

第六章将build-in函数,不如文档详细。甚至有点过时。

第七八章是开发经验,可以参考一下。不过没有应用的话都是纸上谈兵。

就写这些吧,下一步准备结合源代码和文档研究一下常用的函数、数据结构和库。