0%

Python property动态属性

如果不希望类的某些属性被悄悄地访问、赋值或修改,希望在访问、赋值或修改时能得到一些通知,可以使用函数property。

函数原型为:

1
property([fget[,fset[,fdel[,doc]]]])

它返回新式类的一个属性,其中fget是属性被访问时执行的方法,fset是属性被赋值时执行的方法,fdel是属性被删除时执行的方法。

比如下面的例子:

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
class MyClass(object):
def __init__(self) :
self._param = None

def getParam(self):
print('get param : %s ' % self._param)
return self._param

def setParam(self, value):
print('set param : %s' % self._param)
self._param = value

def delParam(self):
print('del param : %s' % self._param)
del self._param


param = property(getParam, setParam, delParam)


if __name__ == '__main__':
myclass = MyClass()
myclass.param = 123
print('current param is : %s' % myclass.param)
del myclass.param

接下来用property来访问类的属性

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
class MyClass(object):
def __init__(self) :
self._param = None

@property
def param(self):
print('get param : %s ' % self._param)
return self._param

@param.setter
def param(self, value):
print('set param : %s' % self._param)
self._param = value

@param.deleter
def param(self):
print('del param : %s' % self._param)
del self._param


if __name__ == '__main__':
myclass = MyClass()
myclass.param = 123
print('current param is : %s' % myclass.param)
del myclass.param

两种方法效果一致,不过第二种方法更加的灵活、简单,在开发中建议使用。

清空历史,忘掉从前 - clear

.. note::
造物无言却有情,每于寒尽觉春生。
张维屏《新雷》

没有啥说的,就是放空一下自己,也清空一下终端,仅此而已。

1
$ clear

查看块设备的lsblk

lsblk 命令可以查看系统中的块设备信息

1
$ lsblk

这个命令会列出系统中所有的块设备(比如硬盘、分区和挂载点)的信息。

默认情况下,它会显示每个设备的名称、大小、类型、挂载点等信息。

如果需要显示更详细的信息,可以使用 -a--all 选项:

1
$ lsblk -a

这会显示完整的块设备信息,包括未挂载的设备。

当然,还可以根据需求,定制化输出,不过单单这个命令,足矣。

显示硬件信息的hwinfo

hwinfo 又一个用于显示硬件信息的命令。

可以获得 Linux 系统的各种硬件组件(如CPU、内存、显卡、硬盘等)的详细信息。

显示所有硬件信息

1
sudo hwinfo

列出系统上几乎所有可用硬件的详细信息。

指定特定硬件信息

1
2
3
4
sudo hwinfo --cpu
sudo hwinfo --memory
sudo hwinfo --gfxcard
sudo hwinfo --disk

通过在命令后添加 --cpu--memory--gfxcard--disk 等参数,获取特定硬件的信息。

李贤珠-白色画布

太有趣了,

主人公小米用手中的蜡笔,绘出了一片纯白的天地。在这片天地中,小米遇到了啄木鸟爷爷、熊叔叔、青蛙姑娘、兔宝宝和兔妈妈。她用手中那支神奇的画笔创造了许许多多的奇迹。

人间值得

中村恒子 奥田弘美

人生,只要能照亮某个角落就够了

我觉得解决的关键在于,在现实和自己的心情之间找到平衡点。简单来说,就是如何把人生过得值得,过得欢喜。

别人可能会给你各种各样的建议,其实到最后还是要靠自己。归根结底,不过是要弄清楚自己想如何生活,想做什么。

恒子老师的生活方式,用一句话来说就是“平平淡淡地过好每一天”。她既不潇洒,也不高效,但无论什么时候,都会做好眼前的事。在她的身上,看不到任何执念。

第1章:工作是为了什么

当自己能够自食其力,凭借自身的能力在社会上立足,就会开始被周围人认可,觉得你“可以独当一面的大人”。

当你面对“为了什么而工作”感到迷茫时,你就干脆而果断地告诉自己“工作只是为了赚钱养活自己而已”。这就是人为何要工作的根本。

至于“人生价值”“自我成长”之类,是要等自己立足安稳后,在闲暇之余慢慢思考的问题。人生很长,慢慢思考就好了。

02 在思考“这份工作不适合我”之前,先试着挑战一下。不那样的话,人就会止步不前

这份工作不适合我”之前,先试着挑战一下。不那样的话,人就会止步不前

如果被权力、地位、名誉之类的东西紧紧束缚住,在工作中一味地在意别人的眼光,很快就会疲于应对。要是这般勉强度过几十年,迟早会被工作击垮。其实,每个人都没有必要对工作期待过高。新员工也好,老员工也好,对于上司安排给你的工作,不要想太多,先试着去做

当人活到七老八十的时候,“胜利”与“失败”都毫无意义。

不要把自我价值全部建立在工作上,带着“为身边的人略尽绵力”的想法去工作,或许会更好。饮食足以温饱,有工作需要自己,其实这样的生活刚刚好。

03 即使你不喜欢工作,也没有关系,尽可能去做总比瞎想强

过多的“空闲”,有时会带来负面影响,“适当忙碌”的状态反而更好

04 工作的去留自己决定,别人无从干涉

如果工作让你一直做出巨大的牺牲,那一定要果断离开,毫不犹豫。

06 不强求改变别人,不如把心力放在“自己如何才能快乐生活”

不要试图通过改变他人来获得快乐,而是想“自己如何做才会快乐”或“怎么努力让自己在这里心情愉快地度过”,我觉得这才是应该考虑的关键。

07 即便是家人也要分清彼此,强迫他人,自己和对方都很痛苦

来则欢喜,去则放手”,这对彼此来说是最轻松的。

08 不要认为别人的给予理所当然,感谢你所得到的,并且不再奢求更多

无论在职场还是家庭,“只要是别人给予的东西,自己就应该感谢对方”。如果以这样的心态和别人相处,人际关系就不可能出现大的问题。

09 尊重别人,别人也会尊重你

如果你想让对方尊重自己,自己当然先要尊重对方。道理虽然简单,但我觉得这是非常重要的事情。

10 机会源于偶然,如果有人助力,就顺势而为

总想着得失,那么就会觉得勉强自己,甚至产生心结。与其如此,还不如率性而为,跟随心的决定。

第3章:恰到好处的人际关系

心灵的沟通,其实就是把自己放到与对方平等的位置上,倾听对方的内心世界。

12 不要小气,接受小小的请求,让微小的善意流转

人和人之间就是互相帮助的关系。如果你是一个容易接受拜托的人,那你在人际关系中的摩擦就会很少。

13 争执之后先道歉才是胜者,如果一遇事就发飙,你将无法立足

我会尽量抛弃“我才了不起”的想法,这样的话自己感到轻松,周围人也轻松。

14 交朋友要根据自己的喜好来选择,通过权衡得失来交往是不可取的

当你想要“遵从内心而活”,你就会发现自己不会被外在多余事情所困扰

15 和那个人该交往还是远离,不要急于寻找答案,调整心理的距离感就够了

生老病死另当别论,人生的一切选择,最终都是以为自己负责的态度来决定

16 就算一个人设计好自己的生活方式,也不会照着做,因此,人生没必要详细计划

只要自己存在,就要带着一种包容力让别人平和下来。让自己成为别人愿意自然而然打开心扉,找你倾诉烦恼的精神科医生。

第4章:让心归于平静

不要忽视你面前的事情,这是最重要的事情。自己的工作也好,孩子也好,家务也好,不管怎样都不能让眼前的生活过得凌乱落魄。

18 痛苦会成为今后重要的经验,所以一次也不要浪费

人生总会遇到不愉快的事。有些事能靠自己解决,而有些事我们无能为力。

人毕竟是伟大的,无论遇到什么样的环境,都有可能坚定地认为“这就是自己的人生”,然后顺其自然地走下去。

大多数事情都会得到解决,人生只能笑着走下去。

即使遇到困难,只要该吃就吃,该睡就睡,保持身体健康,坚持努力,很多问题就会迎刃而解。所有的经历都是有意义的,如果你有这种真切的感受,在关键时刻就会更努力工作。

19 接连发生不顺的时候,也不要停下脚步,停下来就无法前进

如果总也不顺利,那么你就要意识到,“人生本来就是这样”。“不顺”不只会光顾你的人生,我接触过各种各样的人,不管什么样的人都会经历不顺。这时,我们不妨学着练习“逆境中的生存之道”。

20 晚上好好睡觉,确有急事时快速处理,其他一概不管

保持心平气和的另一个有效方法,就是“工作时间以外,不考虑工作上的事”。

在非工作时间,尽量不要考虑工作上的事。

21 “没有自信”并非坏事,盲目自信才是最危险的

所谓自信,是原本做不好的事一点点取得进步。

面对没有自信的事情,一定要真诚坦率。这对于获得平静的生活是很重要的事情。

22 从悲伤或打击中走出来,要依靠“日药”而非建议

痛苦与伤心,其实也是与生俱来的东西。人活着,肯定会经历苦难。

23 人很难不与他人比较,即便健康有活力的人,未必没有烦恼

和别人比较让自己陷入失落、嫉妒中,实在毫无意义,这只会消耗你的精力。

24 不得不努力的时刻,一定会到来。所以,如果不是这样的时候,就无须太过努力

不要事事都想咬紧牙关挺过去,只要抱着“今天这样做基本就可以了”的态度,日复一日地坚持积累。

第5章:生活和工作的平衡之道

在我看来,与其追求完美而挫折不断,不如以笨拙的方式坚持下去。

26 家庭和睦比什么都重要,只要守护它,其他都会慢慢变好

父母的心情会扰乱孩子的内心,孩子的波动反过来又会反弹给父母。

无论是孩子还是家庭,不要试图追求完美,保持一种细水长流的态度,结果会更好。

27 人生常常需要忍耐,思考可以轻松忍耐的方法

生活如果没有目标,就会变得懒散。一旦决定“今天这样做”,生活一下子就会张弛有度。

28 所谓育儿,其实也是成长

提醒别人的事情,自己如果做不到,更加不好。即使是孩子,也会看穿大人的一言一行。因此,要想改变孩子,首先得改变自己。这样,通过育儿,也会注意到自己一些为人处事的方式。

育儿过程,就是让自己越发优秀的成长过程。养育孩子,也是成长。

29 对于养育孩子,比起技巧,更重要的是行动

即使你工作很忙,也要尽可能以某种形式,让孩子感受到“我一直在关心你”。如果你这样做了,孩子一定会感受到父母的用心。

即使你不心灵手巧,也没有奇思妙想,但如果有时间,就尽量亲自动手做饭;尽量多陪在孩子身边,当他们想找你聊天的时候,认真倾听;不要把孩子只当作小孩子对待,多尝试和他们一起思考,时不时问他们“你会怎么做?你是怎么想的”之类的问题。父母对孩子的爱就是这样日积月累的。令人不可思议的是,孩子能够感受到父母是真的为自己着想,而不是只停留在形式上的关爱。

30 不要阻碍别人自立,如果全面掌控,成长就会停止

对于孩子,父母该管教的时候,应该全身心地投入,孩子才会安心成长,直至独立生活。

不管怎么样,孩子既然开启了自己的人生,父母就不要贸然闯入。

31 孤独地死去非常好,担心死亡的方式毫无意义

死亡后,无论你是被称赞,还是被评论,都与死人无关,因为听不见他们在说什么。

任何事情有开始就会有结束。人只要出生,就会面对死亡。

死亡后,无论你是被称赞,还是被评论,都与死人无关,因为听不见他们在说什么。

第6章:简单生活每一天

“总之,只要活着,人生总会有办法的。能吃饱,能睡好,有一份维持最低限度生活的工作,一定没问题。即使有什么不顺心,也不要太在意。”

33 他人有他人的人生,自己有自己的人生,界限分明,冲突、压力就会减少

每天努力地生活,拼命做好眼前的工作。至于出人头地、享受奢侈人生之类的,完全没有时间考虑

在追求的过程中,一定要分清自己是自己,他人在实践他人的人生,我们不需要追寻别人的脚步。

34 人际关系的秘密在于“距离感”,不可逾越的界限,一定要保持住

越是对别人讨厌、反感,这些情绪就越容易在自己的表情和态度上反映出来,进而传达给对方。

36 事情不会马上有结果,焦虑的时候心里不要七上八下,也不要思考过去和未来,而是珍惜当下

人生的结果,不会马上显现。但是在每个瞬间,都有必须珍惜的事情。

37 不求功成名就,只要能照亮某个角落就够了

不求功成名就,只要能照亮某个角落就够了

其实,每个人都有不同的人生轨迹,没有必要和他人比较。

人做事往往凭借自己的感觉,到底“应该这样生活”还是“应该那样生活”,常常会做出片面的决定。有的人认为赚很多钱就是厉害,有的人觉得实现梦想才是伟大的。

点评

最触动的一句话 人生只要能照亮某个角落就够了!

linux 之gunzip命令

.. _linux-beginner-gunzip:

官方的定义为:

gzip, gunzip, zcat – compression/decompression tool using Lempel-Ziv coding (LZ77)

参考gunzip命令

使用的方法为:

1
$ uname [OPTION]...

常用的一些选项为:

  • -a, --all:打印全部的信息
  • -s, --kernel-name:打印内核名
  • -n, --nodename:打印网络节点hostnme,即主机名
  • -r, --kernel-release:打印内核发行版
  • -v, --kernel-version:打印内核版本
  • -m, --machine:打印机器的硬件名字
  • -p, --processor:打印processor或者unknown
  • -i, --hardware-platform:打印硬件平台或者“unknown”
  • -o, --operating-system:打印操作系统

语法

1
$ unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z]

参数

  • -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
  • -f 更新现有的文件。
  • -l 显示压缩文件内所包含的文件。
  • -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
  • -t 检查压缩文件是否正确。
  • -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
  • -v 执行是时显示详细的信息。
  • -z 仅显示压缩文件的备注文字。
  • -a 对文本文件进行必要的字符转换。
  • -b 不要对文本文件进行字符转换。
  • -C 压缩文件中的文件名称区分大小写。
  • -j 不处理压缩文件中原有的目录路径。
  • -L 将压缩文件中的全部文件名改为小写。
  • -M 将输出结果送到more程序处理。
  • -n 解压缩时不要覆盖原有的文件。
  • -o 不必先询问用户,unzip执行后覆盖原有文件。
  • -P<密码> 使用zip的密码选项。
  • -q 执行时不显示任何信息。
  • -s 将文件名中的空白字符转换为底线字符。
  • -V 保留VMS的文件版本信息。
  • -X 解压缩时同时回存文件原来的UID/GID。
  • [.zip文件] 指定.zip压缩文件。
  • [文件] 指定要处理.zip压缩文件中的哪些文件。
  • -d<目录> 指定文件解压缩后所要存储的目录。
  • -x<文件> 指定不要处理.zip压缩文件中的哪些文件。
  • -Z unzip -Z等于执行zipinfo指令。

实例

查看压缩文件中包含的文件:

1
2
3
4
5
6
7
8
9
10
11
# unzip -l abc.zip 
Archive: abc.zip
Length Date Time Name
-------- ---- ---- ----
94618 05-21-10 20:44 a11.jpg
202001 05-21-10 20:44 a22.jpg
16 05-22-10 15:01 11.txt
46468 05-23-10 10:30 w456.JPG
140085 03-14-10 21:49 my.asp
-------- -------
483188 5 files

-v 参数用于查看压缩文件目录信息,但是不解压该文件。

1
2
3
4
5
6
7
8
9
10
11
# unzip -v abc.zip 
Archive: abc.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
94618 Defl:N 93353 1% 05-21-10 20:44 9e661437 a11.jpg
202001 Defl:N 201833 0% 05-21-10 20:44 1da462eb a22.jpg
16 Stored 16 0% 05-22-10 15:01 ae8a9910 ? +-|¥+-? (11).txt
46468 Defl:N 39997 14% 05-23-10 10:30 962861f2 w456.JPG
140085 Defl:N 36765 74% 03-14-10 21:49 836fcc3f my.asp
-------- ------- --- -------
483188 371964 23% 5 files

列出系统硬件信息的lshw

lshwHardware Lister 的缩写,直面意思即列出系统硬件信息。

可以显示关于计算机硬件组件(如处理器、内存、硬盘、网卡等)的详细信息,对于系统管理员和用户来说是一个非常有用的工具。

显示所有硬件信息

任何参数都不加的话,可用,信息极多,但是可用信息不多。

1
sudo lshw

这将输出系统中所有可用硬件的详细信息,包括硬件组件的制造商、型号、驱动程序等。

查看摘要硬件信息

显示摘要信息:相对而言,这个反而好一些,简单的就是有用的

1
sudo lshw -short

这将显示硬件的摘要信息,包括设备名、类别、描述等。

查看特定硬件信息(如网络、内存、硬盘等设备)

显示指定类型的硬件信息

1
sudo lshw -C network

上述示例将仅显示网络相关的硬件信息。

比如还可以查看memorycpudisk等信息。

lshw提供了全面的硬件信息,帮助用户了解系统配置和硬件组件的细节。在查看和诊断硬件问题或了解系统配置时,它是一个非常有用的工具。

Bandpass 带通

带通指在其跨越的范围内传递频率并衰减其他的频率。

带通的常见天文应用是在射电望远镜上使用的观测频率,它必须具有有限的带宽或带通。从这个意义上说,理想的带通类似于阶跃函数,在高频和低频边界处具有完美的截止,并在其间具有平坦的响应。在实践中存在一些”band edge roll-off”,即边界处的信号衰减,但不会完全降至零。因此,射电天文学家通常会丢弃在带通边缘收集的数据,这可能会受到带边缘滚降的影响。

参考:COSMOS (swin.edu.au)

Baseline 基线的概念

在射电天文学中,基线是连接两个射电望远镜构成的矢量,主要用于干涉测量,以确定观测中某颗源”相位中心”的条纹率,一条基线对应傅里叶空间中的一个点。

对于具有N个元素的干涉仪,有N(N-1)/2个独立的基线。靠近在一起的天线对善于测量源中的大尺度结构,而长基线具有更好的分辨率和解析精细结构。

首先是“基线”,即干涉阵中两个天线所构成的矢量,它是干涉测量的基础概念,一条基线对应傅里叶空间中的一个点。基线由阵列的布局决定。

物理基线

物理基线是在三维空间中,两个天线之间的几何连接。投影基线是该三维的物理基线在二维平面上的投影,该二维平面由观测方向决定。在地面参考系(In Terrestrial Reference Frame,ITRF)中,物理基线是常数,不会变,但是投影基线却会随着地球的自转而改变,因为在天空参考系里,源固定不动,因此投影基线所在的二维平面在随时变化。

杨氏双缝实验

函数double_slit画了一个双缝实验装置, 𝑝处有一个光源(事实上,这个函数可以画多个光源,这里我们暂时只画了一个源)。蓝色点线是光轴(𝑝=0),正弦波可以看出波长(这里单位任意,因为只有跟波长相关的几何距离才会影响到结果)。黑线表示光波通过狭缝到达右边像屏的路径。右边的条纹是干涉模式,红色曲线为干涉模式横截面的光强曲线。

干涉模式随基线baseline 𝐵B (两狭缝之间的距离)和波长𝜆λ 的变化。调整下面的baseline和wavelength滑块,观察右边条纹的变化:baseline越长,条纹频率越高(间隔越窄),波长越短,条纹频率也越高。

最早的双缝实验验证了光的波动性质,光源只是被用来照亮狭缝。现在反问一下自己,如果给定一个双缝装置,我们是否能利用它获得一些光源信息?是否能利用双缝实验做成一个测量设备,也就是 干涉仪 呢?

假定移动位置,我们注意到,长基线对源的位置变化很敏感,而短基线则没有那么敏感。在第四章我们将学习到,干涉仪的空间分辨率(可以区分出的最小源间距离)由𝜆/𝐵λ/B决定,而传统望远镜的空间分辨率由𝜆/𝐷λ/D决定,其中𝐷D为天线(或者镜子)的口径。这是一件非常幸运的事实,因为长基线的造价要比大口径低很多!

然而,由于干涉模式的周期性,长基线测到的位置并不明确。相反,短基线正好能解决上述问题.

如下:

短基线的效果:

最早的visibility的出现,在杨氏双缝实验就已经使用了术语“可见度”visibility,该术语最早指的是干涉模式中亮纹和暗纹间的对比度。

现代干涉仪用的是复可见度,是复数。一个复可见度的振幅,或者可见度振幅,对应了干涉模式的亮度,可见度相位对应了相对相位(在我们的模拟实验中,指的是屏幕中央条纹的相位)。一个复数就表示了光源了所有信息,然而,双缝实验显示了整个干涉模式,屏幕上模式的变化完全取决于“盒子”(一般是用于测量的仪器)的几何规格,光源的信息内容只有幅度和相位。

现代干涉仪用的是复可见度,是复数。一个复可见度的振幅,或者可见度振幅,对应了干涉模式的亮度,可见度相位对应了相对相位(在我们的模拟实验中,指的是屏幕中央条纹的相位)。一个复数就表示了光源了所有信息,然而,双缝实验显示了整个干涉模式,屏幕上模式的变化完全取决于“盒子”(一般是用于测量的仪器)的几何规格,光源的信息内容只有幅度和相位。

到目前为止,我们仅仅只是关注了测量源的属性。显然,干涉模式对仪器的几何性质也很敏感。根据上述现象引申出了干涉仪的许多其它应用,从大地测量VLBI(通过对已知源的射电干涉探测,精确测出天线位置的变化,从而得到大陆的漂移量),到最近LIGO做的引力波探测(以激光作为光源,通过干涉模式测出由引力波引起的时空的微小扭曲,也就是干涉仪的几何改变)。

上面的双缝实验模拟器已经向我们展示了,不同基线长度,其干涉模式传递了天空的某项特定信息。在下面的例子中,对同一条基线,三个不同的“天空”却得到了相同的干涉模式,因此,一次测量无法区分它们:

但是,改变基线长度再次进行测量,得到了截然不同的干涉模式:

使用更多基线,我们能收集到足够信息,重建得到天空图像。这是因为,本质上,每条基线测得的是天空亮度分布的一个傅立叶分量(详见第4章),知道了傅立叶分量,通过傅里叶变换,就能重建出天空图像。1960年代末,计算机的出现使该技术成为可能,射电干涉仪变成了通用化的成像仪器。若非特别说明,现代射电干涉测量指的就是孔径合成。

Michelson interferometer 迈克尔逊干涉仪

完整起见,我们修改上面的函数,使之更接近现实的干涉仪。主要改了两处:

  • 把光源改为无限远
  • 按照迈克尔逊干涉仪修改光路

我们对程序做了如下改动。首先,光源位于无限远,因此我们根据入射波前的到达角度(0表示同轴,即沿垂直轴)来定义光源位置。然后用波长数定义基线长度。抵达干涉仪的两个臂的波前“相位差”完全根据到达角来定义,进入干涉仪外臂的两条“射线”指示了入射角。

在不同的position、intensity和baseline的情况下的效果如下所示:

此时用2个源来测试一下:

参考