0%

CentOS8

最近碰到的问题:

System BootOrder not found. Initializing defaults.
Creating boot entry “Boot0002” with label “CentOS” for file /EFI/centos/shimx64.efi

问题的解决很简单:
在BIOS里面把secure chip给禁止掉即可正常启动。

在文件开头插入一行或一段文本

假定文件hello.txt的内容如下所示:

1
Hello World!

源文件为:

.. literalinclude:: ../../src/hello.txt

现在有一个诉求就是,如果在文件的行首增加一行文本,比如Hello letsProgramming!

解决方法有两个,如下:

通过sed进行便捷操作

1
$ sed  '1s/^/hello letsProgramming! /' hello.txt > hello_new.txt

执行完后的内容如下所示:

此时文件hello_new.txt的内容如下所示:

1
2
Hello letsProgramming!
Hello World!

源文件为:

.. literalinclude:: ../../src/hello_new.txt

增加多行内容的方法

假定希望把一下的内容增加到行首:

1
2
3
4
5
6
7
8
Hello letsProgramming! 1
Hello letsProgramming! 2
Hello letsProgramming! 3
Hello letsProgramming! 4
Hello letsProgramming! 5
Hello letsProgramming! 6
Hello letsProgramming! 7
Hello letsProgramming! 8

.. literalinclude:: ../../src/content.txt

此时可以使用如下的方式:

1
{ cat content.txt ; cat hello.txt; } > hello_multi.txt
1
2
3
4
5
6
7
8
9
10
$ cat hello_multi.txt 
Hello letsProgramming! 1
Hello letsProgramming! 2
Hello letsProgramming! 3
Hello letsProgramming! 4
Hello letsProgramming! 5
Hello letsProgramming! 6
Hello letsProgramming! 7
Hello letsProgramming! 8
Hello World!

.. literalinclude:: ../../src/hello_multi.txt

git中使用GPP来提交到github

If you do not have an GPG key, you can generate a new key by using gpg to use in git commit and tags to identify that it’s absolute you did it.

生成一个新的GPG key

以MacOSX系统为例.

1
2
3
4
# first install gpg on MacOSX
$ brew install gpg
# then gpg-suite to save passwd in MacOSX chains
$ brew cask install gpg-suite

生成key

1
$ gpg --full-generate-key

列出GPG key

1
2
3
4
5
6
7
8
9
$ gpg --list-secret-keys --keyid-format LONG

/Users/<userid>/.gnupg/pubring.gpg
----------------------------------
sec rsa4096/ABCDABCDABCDABCD 2015-11-17 [SC] [expires: 2020-11-15]
SASASASASASASASAASASASASASASASASASASASAS
uid [ultimate] Username (userid) <email@address.com>
ssb rsa4096/ABCDABCDABCDABCD 2015-11-17 [E] [expires: 2020-11-15]

or

1
2
3
4
5
6
7
8
# or for SHORT format
$ gpg --list-secret-keys --keyid-format SHORT
/Users/<userid>/.gnupg/pubring.gpg
----------------------------------
sec rsa4096/ABCDABCD 2015-11-17 [SC] [expires: 2020-11-15]
SASASASASASASASAASASASASASASASASASASASAS
uid [ultimate] Username (userid) <email@address.com>
ssb rsa4096/ABCDABCD 2015-11-17 [E] [expires: 2020-11-15]

The different between LONG and SHORT is the .

将GPG keys添加到Github

If you want show a Verified label in Github, now you should add a GPG key in github setting.

Using the following command to get a ASCII-armored format of GPG then paste it in Github,
following Settings -> SSH and GPG keys -> New GPGP key

1
2
3
4
5
6
$ gpg --armor --export <key ID>

-----BEGIN PGP PUBLIC KEY BLOCK-----

<ASCII armored PGP Public Key Block (exported to a *.asc file)>
-----END PGP PUBLIC KEY BLOCK-----

the is ABCDABCD when using LONG or SHORT.

在git终端中配置

GPG sign签名默认情况下是禁用的,可以通过以下设置来使能这个功能。

1
2
3
4
5
6
$ gpg --list-secret-keys --keyid-format SHORT

#if no key found then generate new one
# replace the ABCDABCD using your own key ID
$ git config --global user.signingkey ABCDABCD
$ git config --global commit.gpgsign true

Some post said that you should do export GPG_TTY=$(tty),
I am not encounter this problems fortunately.

使用SourceTree来提交签名

在SourceTree中的 “Enable GPG key signing for commit” 一直是灰色的,并且终端中支持提交前,而SourceTree无法push成功,此时主要是以为gpg程序没有设置,执行下面的命令,然后重启SourceTree即可解决。

1
2
3
4
$ which gpg
/usr/bin/gpg

$ git config --global gpg.program /usr/bin/gpg

其中的gpg路径不同的操作系统可能不同,需要根据具体情况来设置。

error: gpg 数据签名失败

在提交的时候,出现

1
2
error: gpg 数据签名失败
fatal: 写提交对象失败

解决方法,在zshrc中加上一句export GPG_TTY=$(tty),然后重启gpg-agent就可以了

重启命令为

1
$ gpgconf --kill gpg-agent

吃掉那只青蛙:博恩·崔西的高效时间管理法则(原书第3版)

博恩·崔西

1)人生一定要有梦想,因为它一定会实现。梦想再大也不嫌大,追梦的人再小也不嫌小,每年年初给自己做一个梦想板,把今年的梦想或目标可视化,激励自己每天向它靠近。(2)人生不在于做多少事,而在于把重要的事做到极致。事情是永远做不完的,我们只能有选择地做最重要的事。每天挑出最重要的3件事优先完成,每天花80%的时间和精力吃掉3只青蛙,然后花20%的时间和精力处理杂事,这就是能让我们人生快速出成果的二八法则。(3)没有愿景,一切都是空想;没有行动,一切都是噩梦。行动力是我们获得成功的关键:烂开始、好开展、好结果。把一个巨大的目标分解成可以马上行动的一个个小步骤,一步一步地迈进,最终就能走到你想到达的地方。(4)精力管理是时间管理的基础,身体健康才能保证做事高效,所以为了确保自己每天都有充足的精力应对挑战,我倡导大家一定要养成“3+1”的人生基础习惯:早睡早起、健康饮食、运动健身+正念·冥想。

前言

你永远不可能完成所有事情,也永远无法完成你要做的所有任务。对你来说,完成所有任务,然后全身心地放松、享受休闲时光,似乎是一个遥不可及的梦。

你只有学会放弃,把时间和精力放在那些能够改变你生活的重要事情上,才能有效地安排你所要面对的那些事情。

集中精力去完成最重要的事情,彻底地完成它们,并把它们做好,这是人一生取得巨大的成功、成就,赢得受人尊重的社会地位,获取幸福感的关键所在。

成功的关键在于行动,这些原理可以帮助你快速地实现个人绩效的增长,完成可预测的结果,你越快掌握这些技巧和原理,并把它们运用在实际的工作和生活中,你在职业道路上就会进步得越快,比别人更早地突破职业天花板

引言

曾经有一句谚语说的是,如果你每天早上醒来做的第一件事情是吃掉一只活的青蛙,你就会欣喜地发现,在这一天接下来的时间里,将没有什么比这个更糟糕的事情了。这只“青蛙”就意味着你最艰巨、最重要的任务。如果你不对最艰巨的任务立刻采取行动的话,很可能你会因为它耽误很多时间。吃掉你的“青蛙”也可能会对你目前的生活产生最大的积极影响。

为了养成专注的习惯,你需要具备3种品质:决定(decision)、自律(discipline)和决心(determination)

首先,下定决心养成做事有始有终的习惯。其次,约束自己反复练习那些想要学习的原则,直至完全掌握为止。最后,无论做什么事情,都要坚定不移,直至养成这种习惯,并使之成为你性格中不可分割的一部分。

要想更快成为你理想中的高效能人士,这里有一种特殊的方法。你可以不断地在大脑中想象:你已经是一个踌躇满志、马上行动、处事果断、专注的人,你的回报和收益将会如何。你要经常把自己想象成为一个挑大梁的人,而且总是能够迅速而又圆满地完成你的各项工作。在大脑中为自己勾画的蓝图,会对自己的行为产生至关重要的作用。因此,一定要把自己想象成为你理想中的人。你在内心为自己刻画的形象,以及你对自己的评价,在很大程度上决定着你的外在表现如何。你能看到什么样的人,你就会成为什么样的人。事实上,每个人学习新技能、培养新习惯、挖掘新能力的潜力都是无穷的。如果能通过反复练习,培养自己克服拖延、迅速完成最重要任务的习惯,你就将进入工作和生活的快车道,踏上成功的加速器。

书面目标的魔力

一个人对自己的目标越明确,对实现目标的步骤越清晰,就越容易克服拖延的弊病,

茫然、思维混乱、态度模糊……比如一个人不知道自己应该做什么、应该先做什么后做什么、为什么做这些事情,都是造成他拖延和缺乏积极态度的主要因素。只有积极地寻找更明确的目标和任务,才能克服这些常见的问题。如果一个人对自己想要什么非常明确,他会更清楚地知道如何才能实现自己的目标,会更容易克服拖延的弊病,实现目标。

把目标写在纸上。

研究表明:大约只有3%的成年人拥有明确的目标,并把目标用书面化的方式记录下来。但在受教育程度和能力相等的条件下,那些写下自己目标的人,比没有写下自己目标的人的成就高出5~10倍。

有一个方法对设定并实现自己的目标非常有效,你也可以在自己的生活中运用这一方法。该方法包括7个简单的步骤。

第一步:明确你究竟想要什么。你可以自己决定自己究竟想要什么,也可以和你的老板坐下来,就你为自己设定的目标进行讨论,直到你彻底弄清楚自己应该做些什么,应该按照什么顺序来做这些事情为止。

最糟糕的利用时间的情形之一,是把根本不需要做的事情做得很完美。

第二步:把你的目标写下来。也就是说,将你的想法付诸笔端。一方面,当你把目标写在纸上以后,你为自己制定的目标就清晰化、具体化了。你为自己创造了一个能看得见、摸得着的东西。

第三步:为你的目标设定一个完成的最后期限;在必要的情况下,设定出子目标的期限。一个目标或者决定如果没有应该完成的最后期限,就没有紧迫性,没有真正的起点和终点。如果没有一个最后期限,以及相应的应该完成的任务,你做起事情来就会不由自主地拖延,

第四步:为了实现目标,把你所能想到的、所有要完成的事项都列在一个清单上。只要你一想起新的活动,就添加到清单上。然后不断地完善你的清单,直到把所有事项罗列完整为止。这样的一份清单能够将你的目标和任务具象化。

第五步:进一步梳理整个清单,使之成为一份计划。根据优先级顺序来整理计划。请你花一点时间,决定什么事情要放在其他事情之前做,什么事情应该先做,什么事情可以往后放。这里还有一个更有效的方法:你需要在一张单页纸上,把计划中的任务用一系列具象的方框或圆形的流程符号表示出来,然后用直线和箭头把每个任务连接起来,标明相互之间的关系。

第六步:根据计划马上采取行动。你应该马上做点什么事情,做什么都行。即使这个计划平淡无奇,只要你充满激情地按照计划执行,就好过制订一份出色的计划,却无任何行动。

第七步:每天解决一部分问题,向前推进主要目标的实现。你需要在每日行动表中列出一天的活动。

明确的书面目标对你的思想有不可思议的影响力。它能激励你不断地采取行动,它能像其他要素那样,激发你的创造力,释放你的能量,帮助你克服拖延症。

现在就拿出一张纸来,列出你明年最想实现的10个目标。在写下这些目标的时候,设想着明年已经过去,这些目标已经实现。

然后,检查你前面列出的10个目标,并从中挑出一个,设想一下如果这个目标实现了,就会对你的生活产生最大程度的积极影响。无论这个目标是什么,都把它写在另外一张纸上,给这个目标设定一个实现的最后期限,然后制订一份计划,并针对计划采取相应的行动,而且坚持每天都做一些有助于你实现这一计划的事情。坚持去做,这项练习会改变你的生活。

提高回报率

你在脑海中思考如何行动,制订出计划并做出决定,是你克服拖延症、提高生产力的最有效的手段。这些行动可能包括明确目标、制订计划、采取行动,所有这一切会决定你的生活轨迹。对如何行动进行思考,并进行周密计划的过程会释放你心智中的潜能,激发你的创造力,增强你精神和身体的力量。

计划制订得越周密,你就越容易克服拖延症、迅速行动、吃掉青蛙,并能不间断地保持行动的状态

据观察,每拿出一分钟制订计划,在行动时将会节省出相当于制订计划10倍的时间。所以,每天你只要拿出10~12分钟来制订计划,就能节省出将近两小时的时间(约为100~120分钟)。

不管你是借助最先进的掌上电脑、最复杂的电脑程序,还是借助时间管理器来工作,原理都是一样的:在开始工作之前先坐下来,把你要做的每一件事情都逐条写出来。

无论你准备做什么,都应该先列出一份清单。每次想到什么新的事项,在开始做之前都先把它加在清单上。如果你一直坚持先列出清单再开始工作,那么,从一开始你的生产力就能提高25%,相当于每天节省出两小时。当前一天的工作结束以后,要开始制订第二天的计划。把尚未完成的事项、需要在第二天完成的事项,都写在第二天的计划上。当你在前一天晚上制订了计划之后,即使你入睡了,你的潜意识也会围绕这个计划转。通常情况下,当你第二天早上醒来时,你的脑海中就会涌现出灵感,从而使你能更快、更好地完成工作。在制订必须完成的工作计划上,你提前花费的时间越多,你的工作效率、工作的有效性就越高。

你需要针对不同的目标制订不同的计划。首先,你必须拟订一份总计划,在这份计划上,你把能想到的、未来能做的每一件事情都写下来。在这份总计划上,你要写下脑海中想到的所有任务以及相应的职责。之后你可以对计划中的事项做进一步整理。其次,你应该在每个月月末,为下一个月要做的工作制订一份每月计划。其中的某些事项可以是从总计划上分解到这里的。再次,在每周工作开始前,你要提前制订一份每周计划,来计划一周的工作。每周计划是基于你对整周工作的统筹而制订的。

不论你要完成什么项目,都应该在行动之前先制订一份计划,在这份计划上把你要完成的工作、所需要执行的每一步工作都写下来,然后根据它们的重要程度安排先后顺序。

个人高效能工作的最重要的法则之一是10/90法则,即整个工作的前10%的时间用于制订计划、组织工作,那么在实际完成工作的过程中将节约90%的时间。

  1. 从今天开始,你要对每个月、每一周、每一天的工作提前制订计划。请拿出一个记事本或一张白纸(也可以用你的电子助手或手机上的软件),把未来24小时内要做的所有事情都列在上面。当你随时想起需要添加的事项时,就把它们写进去。把所有关系到你未来的重大项目写下来,放在一个单独的清单里。2. 把每一项主要目标和任务都写在计划上,然后根据优先级和时间顺序,把最重要的和需要最早完成的排在前面。然后安排次重要的,并以此类推。最后以计划的终点倒推工作的起点。

任务的数量vs任务的重要性

80/20法则是时间管理与生活管理方面最有用的概念之一。

通常来讲,如果在一张项目计划上列出10项任务,其中一项你必须完成的任务远比其他9个剩下的任务更有价值。那么这项任务就是你应当最先吃掉的青蛙

很多人的拖延清单中最多的就是能产生最大价值的最重要的10%~20%的项目,这些项目是“极重要的少数”。人们忙碌于那些不重要的80%的项目部分,在对回报没有太大影响的“不重要的多数”工作上花了很长时间。

你常常能够看到有的人终日忙忙碌碌,但几乎看不到工作的结果。这几乎可以全部归因于:他们忙碌的是一些低价值的任务,但对某项重要的活动却一再拖延。如果他们能又快又好地完成这些重要的活动,无论对公司还是他们个人的事业都会产生实质性的、重大的影响。每天你能完成的最重要的任务通常是最艰难、最复杂的任务,但是,圆满地完成这些任务所带给你的回报和奖励也是巨大的。鉴于此,如果你还有最重要的20%的工作没有完成,你必须坚定地拒绝做重要性很低的那80%的工作。

抵制诱惑,不被小事所引诱。你要记住,不管你选择先完成什么任务,久而久之都会形成一种固化的习惯。如果你选择每天先做低价值的任务,你将很快养成先做低价值任务的习惯。这一定不是你希望养成或保持的习惯。你要在一开始就处理重要的任务中最难的部分。一旦你开始处理最有价值的任务,你才会很自然地有兴趣继续往下做。如果你在思想上愿意为了有意义的任务来忙前忙后地工作的话,那么你会看到完全不同的结果。然后你要通过不断地以这种思维工作,进一步强化头脑中的这种意识

如果你在脑海中设想一下,开始完成重要的任务以及完成了重要的任务的场景,你就能以此激励自己,战胜拖延症。事实上,完成一项重要的工作所需要的时间与完成一项不重要的工作所需的时间通常是一样的。区别是你完成重要的、有意义的工作能获得极大的自豪感和满足感。然而,当你完成一项低价值的工作时,即使耗费了同样多的时间和精力,你也只能得到很少的满足感,甚至一点满足感也得不到。

  1. 制订一份计划,在上面列出今天你所有关键的目标、活动、项目、生活上的责任。有没有可能在这些任务中,最重要的10%~20%代表了或可能代表了你80%~90%的结果?2. 今天就来解决这个问题:对于可以改变你的人生和事业的少数活动,你应该花费越来越多的时间;对于不会影响你的人生和事业的低价值的大量活动,你花费的时间应该越来越少

对时间的配置做出更好的安排

成功基于个人对于时间的态度,不论是工作还是生活,成功人士在做每天、每周、每月的活动规划时,都会用长期的观点去考量。

你对时间的处理态度、你的“投资回报期”会对你的行为和选择产生重大的影响。与没有长期时间观念的人相比,能够运用长期时间观念规划生活和职业前途的人似乎能对自己的时间和活动做出更好的决定。

成功人士是那些懂得延迟满足感,愿意做出短期牺牲来追求长期高回报的人。

不断地鼓舞自己,激励自己。如果一项活动或行为会对你的生活产生重大的、积极的影响,那么一旦你清晰地锁定目标,你会不断地被激励,从而有动力克服拖延症,并迅速把它做好。然后,持续地启动、完成那些能对你的公司和未来产生重大影响的任务,你会集中精力、勇往直前。

经常思考你做出的选择、决定和行为是否能产生积极的发展前景及对未来的影响,这是确定你的工作和个人生活中的优先级顺序的最好方法之一。

强迫效率法则的详细解释是:“时间有限,任何人都无法做完所有的事情。但只做那些以后能获得正面效果的工作,做与完成最大目标有关的工作,你的时间是足够的。”换句话说,你无法吃掉池塘里的所有蝌蚪和青蛙,但是在当下,你能吃掉最大、最丑陋的那只就够了。

一个人如果在最后期限的压力下工作,通常他会不由自主地拖延,也会承受更大的压力、犯更多的错误,比无压力状态下的返工率更高。

如果你想专注地完成计划上最重要的任务,每次要问自己3个固定的问题。第一个问题是,“我的最高价值的工作是什么?

第二个问题:“我只有把哪件事情做好了才会产生非凡的影响?

第三个问题是:“在此时此刻,对我来说最有价值的事情是什么

第三个问题是时间管理的核心问题。能否正确地回答这个问题,是一个人克服拖延症、成为一个高效率的人的关键。每一天中的每个小时,你当时完成的任务,代表着你利用那段时间的最大价值。你要反复问自己第三个问题,要不厌其烦地一次次地重复问自己,不管答案是什么,都要不断地着手处理它。

  1. 回顾一下你的相关任务、活动、项目。不断重复地问自己:“在工作或个人生活中,我出色又及时地完成哪一项项目/活动,会给我带来极大的正向回报呢?”2. 每天的每个小时,你要决定这个时间单元最重要的事情是什么,然后约束自己不断地将时间用在最有价值的工作上。思考下一步最重要的事情又是什么,如此循环。不管接下来要做的工作是什么,都把它设定为一个目标,为此制订一项计划,并立刻行动去完成这项计划。记住歌德的那句名言:“只有找到能够吸引你、让你燃起内心激情的部分,并马上投入其中,你才能完成你的工作。”

优先级高低之分

每天都抽出时间推进那些艰巨任务的实施。提前计划好一天的工作量,用最高效的时间完成最重要的工作。每天早晨先挑选出一些最紧迫的简单工作,继而直接开始完成大任务,专注地去做,一直到完成为止。

事实上,每个人都不可能做完所有的事情。你必须有选择地去延迟完成一些事情,一些简单任务不立刻去完成,而是实行创造性拖延。也就是说,有些事情必须向后拖延。选出一些较小、不太丑的“青蛙”,向后推迟一段时间再吃。把那些最大、最丑的“青蛙”安排在第一时间吃掉。先处理最艰难、最复杂的任务

当你不再去做那些低优先级的工作时,你的时间和生活才能完全掌握在自己手中。

大多数人都会无意识地拖延,人们的拖延往往是没有经过周密考虑的结果。这会导致人们拖延工作量浩大的、高价值的、重要的任务,从长期来看,这些任务将对他们的事业和生活产生重大的影响。因此,你必须想尽一切办法,避免这些跟别人趋同的规律发生在你身上。你的任务就是,对那些优先级低的任务进行拖延,从而可以腾出更多的时间来做那些改变你的工作和生活的任务。

  1. 在生活的各个方面,你都可以应用归零思考法(zero-based thinking)来思考问题。不断地问自己:“如果我还没有开始做这件事情,而且我已经知道做完的后果,今天我还会如此这般再做一次吗?”如果答案是否定的,那么这件事就应该创造性拖延或取消。2. 根据你目前的状况,重新审视、评估你工作和生活中的活动,挑出其中至少一项,立刻放弃,或者创造性拖延,直到你完成那些更重要的事情为止。
    一边思考,一边把你思考的结果写在纸上

成功的第一定律是专注,是把所有精力聚焦在一点上,然后向着这一点的目标努力推进,不要瞻前顾后。

在开始处理一项工作之前,你在制订计划、设定优先顺序方面投入得越多,你所做的事情就越重要,一旦开始工作,你的效率就越高。你所从事的工作越重要、越有价值,你克服拖延症、全力投入该工作的劲头也就越足。

  1. 现在,回顾你的工作计划,然后在每一项任务或工作之前标上A、B、C、D或E。选择标记为A-1的工作或任务,然后立即动手处理,切记必须在完成这项工作之后再开始做其他工作。2. 在接下来的一个月,每天都练习使用ABCDE法来处理每一项工作。这样坚持一个月以后,你就会养成先处理优先级最高的任务的习惯,你的未来就会尽在掌握之中!

管理和销售工作中的7大要素

关键结果领域是你工作成功所必须取得的结果。它是完全由你负责的工作领域。如果你不把它做好,那么没有人代替你完成。关键结果领域是在你控制下的活动。它是你工作的产出,同时也会成为别人工作的输入或有用的因素。

管理的关键结果领域是计划、组织、配备人员、授权、监督、检查和报告。

无论从事什么工作,你都必须掌握完成工作所必需的知识和技能。对知识和技能的要求是不断变化的。你只有提高核心竞争力,才能很好地完成你的工作。但是,关键结果领域永远是你工作的中心并决定你工作的成败。

提高生产力的起点是,首先搞清楚你工作的关键结果领域。你可以同领导讨论这些关键结果领域。列出你的产出责任并确保你的领导、同级和下级都同意你所列出的产出责任清单。

  1. 找出工作中的关键结果领域。这些职责是什么?把它们写下来。找出自己在每个环节内的优劣势。然后,确定一种技能,如果你在这方面优势突出的话,那么它将对你的工作有极大的帮助。2. 带着这张清单去拜访你的领导,并与他讨论清单上列出的工作。请他做诚实而中肯的评价。只有虚心听取他人提出的建设性意见,才能不断地完善自己并取得进步。此外,还要与你的同事、爱人进行探讨、交流。在你以后的职业生涯中,应该养成定期进行分析的习惯。不断强化这种习惯,这个决定本身就能改变你的生活。

每天只做一项工作

请你在30秒之内,把生活中最重要的3个目标写下来。”通过这个练习我们发现,如果只给人们30秒钟让他们写下3个最重要的目标,他们的答案非常准确,结果跟经过30分钟或3小时思考的一样。

80%的人的3个目标是一样的:第1个目标是经济和事业方面的;第2个是家庭或人际关系方面的;第3个是健康或身体方面的。

学习时间管理技巧的一个主要目的是,从现在开始,你可以去做那些真正重要的工作,并腾出更多的时间去做那些生活中能给你带来最大的幸福感和满足感的事情。

生活中有85%的幸福感来自与他人的和谐的关系,尤其是与那些和你关系最密切的人,以及家人的关系。决定你人际关系质量的关键因素是,你与爱人相处时间的长短。学习时间管理的目的在于提高效率,这样你会有更多的时间去陪自己爱的人,有更多的时间去做那些能最大限度地给自己带来快乐的事情。

  1. 找出工作中最重要的1项任务。你可以问自己:“如果我每天只能完成1项任务,哪项任务对我的工作贡献最大?”然后重复两遍同样的问题。按照这种方法找到工作中最重要的3项任务之后,每天把所有的精力全部放在这3项任务上。2. 确定生活中最重要的3个目标,然后根据优先级别进行排序。针对这些目标制订相应的计划,然后全力以赴去实现。持续几个月至若干年之后,你会为自己取得的成就感到惊讶。

创造舒适的工作空间

不管与生俱来的能力是高是低,你的潜力永远大于你一生所表现出来的能力

克服拖延、提高工作效率最好的方法之一,就是在开始工作之前做好充分准备。如果你的准备工作做得很充分,那么开始工作的时候你就会像满弓上的箭一样,蓄势待发,只需要一点点动力,就能着手处理最重要的工作了

将所有与完成工作有关的信息、报告、详图、文件等资料收集在一起,全部放在手边,当你需要的时候,不需要起身或离开座位去找它们。确保你收集齐了所有的书面资料,包括登录信息、密码、邮箱地址,以及从工作开始到完成所需的都已经准备妥当。

  1. 认真地检查你家中和公司的办公桌,然后问自己:“哪个类型的人会在这种环境中工作?”你的工作环境越干净、整洁,你就会越积极、高效、自信地投入工作。2. 下定决心,今天就把办公桌和办公室收拾得干干净净、整整齐齐,这样你会感觉每次都能高效地开始工作。

穿越撒哈拉沙漠

  1. 任意选择一个曾经被你拖延的目标、任务或项目,从现在就开始迈出第一步。有时候,要开始一件事情并不难,你只需坐下来,把所有必要的步骤都列出来就足够了。2. 接下来,马上从第一步开始,一步一步、循序渐进地去做这件事情。最终你会惊讶地发现自己取得的成就非凡。

学无止境

所有成功都有共通的意义,无论你的任务是什么,坚持更多、更好地付出,都是确保你获得成功的不二法门。

成为大师的3个步骤

首先,每天至少阅读1小时,以了解行业最新动态。每天早晨尽量早一点起床,阅读30~60分钟的图书或杂志,其中应包含有助于你提高生产力和工作效率的信息。

其次,参加有助于你提高工作技能的每一堂课程和讲座。参加行业内的研讨会和专业会议。更不要错过任何高水平的培训和讲习。坐在前排认真做笔记,并购买活动的音像和影像资料。下决心把自己培养成业内知识最渊博、最有竞争力的人。最后,一边开车一边收听你购买的音像资料。

  1. 找出能够帮助你更快更好地实现目标的、最有效的关键技能。决定你必须具备哪些核心竞争力,这些核心竞争力能够在未来让你在专业领域脱颖而出。不管这些能力是什么,你都要设定目标、制订计划、开始构建和提升该领域的能力。在自己能力所及的范围内做到最好。2. 为了出色地完成最重要的任务,你应该制订一项个人计划,让自己充分地做好准备。专注于那些你具有特殊天分,并且非常感兴趣的领域。这是打开个人潜能的钥匙。
    找出限制因素

  2. 现在就确定你生活中最重要的目标。这个目标是什么?一旦实现这个目标,是否会对你的生活产生极大的积极影响?你工作中的哪项成就会对你的职业生涯产生非常积极的影响?2. 一旦明确了自己最重要的目标,你可以问自己这些问题:“是什么制约了我实现这个目标?为什么我还没有实现自己的目标?是什么制约着我的进步?”找到答案后,立刻行动起来解决这些问题。你想做什么都可以,但必须要行动起来。

成为业内的领军者

成功的第一要素是:必须全身心地做一件事情,决不能有任何懈怠。

只有约2%的人能在完全没有监督的情况下工作,这样的人可以说寥若晨星。我们称这些人为“领导”。只要你愿意,并且下定决心做一个能自我监督的人,那么你一定能成功。

有一个最好的办法能帮助你克服拖延症:假设距离完成最重要的工作的最后期限只有一天。

  1. 为自己的每一项任务和活动设定最后期限和各个阶段的最后期限。自己制定一个“强制系统”。不断提醒自己设定的最后期限,不让自己有丝毫的松懈。一旦设定最后期限,就严格执行,力争提前完成工作。2. 在开始最重要的工作前,把你的每一个步骤都写下来,然后确定每一步需要用多长时间。在你一丝不苟地完成这些工作的过程中,让自己不断与时间赛跑,并尽量提前完成工作。可以把这个当作一项游戏,让自己胜出。

控制你跟心灵的对话

你对自己的评价、自爱、自尊的程度,在很大程度上决定你工作时自我激励的程度,及能否坚持不懈地工作

维克多·弗兰克尔(Viktor Frankl)在畅销书《活出意义来》(Man’s Search for Meaning)中所写的那样:“人类的终极自由是在现有的任何一种环境中选择做自己的态度

“乐观”的性格是事业成功、生活幸福的最重要的品质。几乎在生活中的方方面面,乐观的人的做事效率都更高。

乐观主义者有4个显著的特征,而这些特征都是通过反复实践学来的。第一个特征,乐观主义者在任何情况下都会去看事情好的一面。无论出现什么状况,他们都会努力寻求有益的一面。第二个特征,乐观主义者总是能从挫折和苦难中总结经验,吸取教训。他们相信,“困难的出现不是为了挡住去路,而是为了指明出路”。他们相信,每一个挫折和障碍中都蕴含着有用的教训,他们会从中吸取教训。第三个特征,乐观主义者总是极力找出问题的解决方法。出现问题的时候,他们不是指责他人或不停地发牢骚,相反,他们总是尽自己的最大努力去寻求解决问题的办法。他们提出的问题是:“解决这个问题的方法是什么?我们现在应该怎么做?下一步应该怎么做?”第四个特征,性格积极、乐观的人会不断地思考和谈论他们的目标。他们总是在思考自己究竟想得到什么,如何得到他们想要的。他们所想所说的是未来,是他们想要实现什么样的目标,而不是过去曾经得到过什么。他们总是向前看,而不是向后看。

  1. 控制自己的思想,让自己总是保持积极的态度。记住,你会成为你想成为的那个人,所以,只说你想说的,只做你想做的。2. 勇于面对现实、承担责任,使自己保持积极的心态。无论遇到什么事情,都不要去批评、埋怨、指责别人。去改善,而不是责怪。集中思想和精力向前看,不要理会其他。

你要有所选择

“每天我会定时查看两次邮件。当我看到您的消息后,会尽快回复。如有紧急事宜,请致电我的手机。”

  1. 在日常生活中,给自己留出一部分独处的时间。每天上午和下午各安排一个小时,在这段时间里,把所有的通信设备都关掉。你会惊讶地发现,没有什么区别!2. 每周都给自己安排一整天时间。在这一天里,不开电脑,不用手机,也不使用任何方式与外界联系。到一天结束的时候,你会发现自己的心灵异常平静,思路格外清晰。当你腾出时间重塑精神能量之后,你吃青蛙会更有效率。

掌控你的通信

  1. 今天就痛下决心,推掉所有的通告,只给自己留下一个处理紧急情况的渠道。为你最重要的任务创造一个数字化生活的特定空间。2. 下决心研究、安装一个软件或App,让它帮你变得更加高效和专注。
    上瘾

生命完全是一场专注力的修行,你专注于哪里,你的生命就在哪里。

处理完网络上的一个突发事件后,人们通常需要花费7分钟才能完全将注意力从前一件事情上转回到原来的任务中,然后继续工作。

已经被各行业的高效能人士广泛采用。第一,清晨不要检查邮件,这样才会避免新邮件刺激大脑,释放出全天的多巴胺,分散注意力。让你的设备仍处于关闭的状态。第二,如果由于特殊原因,你需要查看邮件,那么你需要尽快切换到邮件处理状态,然后迅速地结束。关掉电脑的声音提示音,让你的手机处于“震动”状态。停止刺激和触发多巴胺的释放,停止其他不断引发注意力中断的刺激。第三,下定决心每天查看两次邮件,把时间定在上午11点和下午3点半,处理完之后就关闭邮箱。给他人提供一个在紧急情况下可以找到你的电话号码。不论你是跟别人一对一开会,还是给更多人开会,都采用上述的协议。把电子设备关掉。不要打断别人与你的在线合作,或者中途接听第三人的来电,因为这些举动对对方而言都是不礼貌的。一定要为对方100%地专注。这一条协议也适用于在家里发生的情况。

第一,每天提前制订一整天的计划,选择出你最重要的任务,然后开始完成该任务,直到全部结束为止,在彻底完成该任务之后,再开始做其他的工作。第二,持续不间断地连续工作90分钟,期间不要有任何的干扰和注意力的分散,然后让自己休息15分钟。第三,投入全部精力再次开始下一个90分钟的工作。第四,完成了为期三小时的工作后,你终于可以奖励自己查看邮件,刺激多巴胺冲击你的大脑了。当你建立了这一习惯,在每天上午首先抽出连续3小时完成重要工作后,你将让你的生产力提升到两倍,并能够克服全天不定期查看邮箱的陋习。你将会全面掌控自己的生活。

  1. 在大脑中保持对成功目标和高效生产力的追求。在你开始做任何事情之前,都要先问问自己,“这会帮助我达成最重要的目标吗,还是仅仅是一个干扰而已?”2. 拒绝成为各种警报声和提示音的奴隶,这些只会使你从即将真正改变人生的任务中分心。让你的通信设备处于关闭的状态。

设定强制关闭机制

吃掉那只青蛙1. 立刻将这些技巧付诸实践。选择一项你拖延的复杂而艰巨的任务,无论是用“香肠工作法”还是“奶酪工作法”,都去立即着手处理这项任务。2. 把自己变身为“行动派”。高效能人士有一个共同点,每当他们听到一个好点子,就会立刻行动。所以他们学得更多,学得更快,并能得到更好的结果。不要迟疑。今天就试试这种方法!

为整块时间制订时间表

如果你把全部精力集中于一组有限的目标上,那么你的未来将不可限量。

许多重要任务都要花费大块的时间不间断地完成。你能否找到大块的、可利用的时间,关系到你能否在工作、生活中取得大的成就。

许多人把每天晚上睡觉之前的15分钟用来阅读精品图书。

很多高效能人士都是这样做的,他们总是提前安排每一天的工作,安排特定的时间段来处理特定的事情。他们的目标是一次完成一项重要工作,并根据这一原则来规划自己的职业生涯。

在这段工作时间之内,你关闭手机,不受任何来自外界的干扰,不间断地进行工作。最好的工作习惯之一就是每天早早起床,然后在家里工作几个小时。在这段时间里,没有人打搅你的工作。而在忙碌的办公室里,你的周围可能人满为患,电话也狂轰滥炸地响个没完没了。相比之下,你在家里可以完成3倍的工作量。

  1. 多思考和尝试用各种不同的办法来节约、安排或创造大块的时间。用这些时间去处理那些重要的、长期能产生重大影响的任务。2. 充分发挥每一分钟的价值。提前计划并做好准备,从而能够持续不断地、不受干扰地进行工作。最重要的是,把精力集中在你负责的最重要的工作上。

进入最佳状态

不要盲目地等待,时机永远不会“恰到好处”地到来。从你现在的位置开始工作,运用你需要的、能找到的任何工具。在前进的过程中,你还会找到更好的工具。

生产力高的人愿意花费时间去思考、制订计划、确定事件的优先级。然后,他们就行动迅速、意志坚定地投入工作,朝着自己的理想和目标前进。他们从容不迫地、循序渐进地工作,在一般人盲目地社交,浪费时间,从事那些无谓的、低价值回报的工作的时候,他们却完成了不计其数的工作。

当你精力充沛、活力四射地投入自己的工作的时候,你会觉得自己的大脑进入了一种充满激情的状态。几乎每个人都有过这样的经历。而真正的成功人士,体验到这种状态的频率要比普通人高得多。这种状态是一个人在工作生产力和效能方面所表现出来的最佳状态。在这种状态下,你的思想和情感通常会发生一些近乎奇迹的事情。在这种状态下,你会感到自己头脑清醒,工作热情高涨,无论做什么事情都既有效又精准。你会觉得自己兴高采烈、充满活力。你会觉得自己做事有条不紊,工作效率非常高。

好的结果是,你行动的速度越快,你的能量就越大;你行动的速度越快,你完成的工作就越多,你的工作效率就越高;你行动的速度越快,你积累的经验就越多,学到的知识也越多;你行动的速度越快,你的工作能力就越强,才能就越出众。

  1. 从现在开始,无论做什么事情都要培养一种紧迫感。选择一个自己可能会拖延的领域,决定在这个领域内养成马上行动、决不拖泥带水的习惯。2. 当你看到一个机会或者发现一个问题时,应当立刻采取行动。当你接受了一项任务或承担了某个责任时,应当迅速完成并及时向领导汇报结果。你应当在生活的重要领域快速地行动。当这一切成为习惯之后,你的感觉会更好。

一旦开始,全力以赴

力量的真正秘密在于此。学习如何使用资源,然后在特定的时刻把它集中使用在特定的事情上。这一习惯要通过反复实践才能形成。

全力以赴地投入一项工作的要求是,一旦开始做这件事情,就全身心地投入进来,不受外界干扰,不转移注意力,直到100%地完成工作。每当你想停下来,或想要做其他事情的时候,你要不断对自己重复“继续工作”这句话,然后敦促自己不断前进。只要你能全身心地投入对你最重要的事情,就能把完成工作所需要的时间缩短50%甚至更多。

在应该做某件事情的时候,约束自己去做那件事情,无论自己当时想做还是不想做”。归根结底,在任何一个领域内,要想获得成功,都需要极强的自律能力。自律、自制是一个人性格塑造和高效能的基石。

  1. 立刻行动!现在就确定对你来说最重要的工作和任务,然后立刻全身心地投入这项工作。2. 一旦开始工作,就约束自己在工作过程中心无旁骛,不受外界干扰,也决不分散自己的注意力,直到工作100%完成,把这个当作一项测试,看自己是否能做出决定并完成。一旦开始工作,就坚持到底,直到全部完成为止。

后记

  1. 明确目标:确定自己究竟想要什么。目标清晰至关重要。在每天开始工作之前,把你的目标全部写下来。
  2. 每天提前做计划:一边思考,一边把你的想法写在纸上。你花费在准备工作上的每一分钟,都将使你在工作过程中节约5~10分钟。
  3. 将80/20法则用于你的所有任务:你的所有任务中,其中有20%的任务能产生80%的结果。因此,尽量把你的精力集中在那20%的任务上。
  4. 考虑效果:你最重要的、优先级最高的事情是那些将对你以后的生活或工作产生最重要影响的事情,无论其影响是正面的还是负面的。你应当最优先处理这些事情。
    5.“创造性拖延”练习:既然你没有时间去安排所有的事情,你就必须学会推迟处理那些没有什么意义的工作,从而腾出时间来处理那些少数的、重要的工作。
  5. 持续不断地练习使用ABCDE法:根据自己列出的任务计划,在开始工作之前,先抽出一点时间,根据优先级对这些事情进行安排,从而确保你先处理最重要、最有价值的事情。7. 聚焦关键结果领域:要想圆满地完成自己的工作,你必须具备哪些能力和技能?找出答案,然后日益精进,解决上述问题。
  6. 遵守“3个”定律:找出你的工作中的最重要的3件事情,你对公司90%的贡献都来自这3件事情。无论如何,都先把这些事情做好,然后,你才能腾出更多的时间来安排个人的家庭和生活。
  7. 做好充分准备再行动:开始工作前,先把一切都准备就绪,包括所有的资料、信息、工具、材料,以及你需要的数据,然后,你就可以全身心地工作了。
  8. 每次到达下一个油桶:如果你每次能阶段性地推进下一步工作,那么你就能完成最艰巨、最复杂的工作。
  9. 升级核心技能:你在自己的关键领域内知识越全面,技能越娴熟,你动手就越快,任务完成得就越早。
  10. 找到最关键的限制因素:确定影响你实现目标的瓶颈和主要障碍,无论是来自外部还是内部,然后集中精力消除这些障碍。
  11. 自我设定压力目标:假设你即将离开所在的城市,外出一个月,离开之前必须把所有重要的工作都处理完。
  12. 激励自己将理想转化成行动:做你自己的啦啦队队长。在任何情况下,都寻求事情积极的一面。把精力集中在如何解决问题上,而不是问题本身。要保持乐观向上的态度。
  13. 技术是一个可怕的主人:把你的时间收回,不要让各种技术分散你的注意力,停止做技术的奴隶。学着经常把手机设备关机,并放在一边。
  14. 技术是一个非常优秀的仆人:用技术工具帮你自己处理最重要的工作,把自己从最不重要的工作中解放出来。
  15. 集中注意力:停止不断地打扰和分心,影响你正在完成的最重要的工作。
  16. 奶酪和香肠工作法:把复杂而又艰巨的大任务分割开来,变成许多部分,每次只处理一小部分。
  17. 创造整块的时间:为自己安排一份日程表,然后留出大块的时间来处理对你来说最重要的事情。
  18. 保持紧迫感:养成迅速处理关键任务的习惯。把自己培养成一个能迅速、圆满完成工作的人。
  19. 单独处理每一项任务:根据事情的优先级安排优先处理哪些事情,然后立即着手处理最重要的、必须优先处理的事情,全心全意地去做这件事情,决不中途停止,直到100%完成为止。这是工作高效、个人生产力最大化的关键所在。

评论

这是一本值得常读常看的书籍

每天最重要的3件事 – 张永锡 李瑞文

“Just do it”是幸福行动家们在实践相关内容时的真实案例和经验。

第一个习惯是“先吃掉那只青蛙”,第二个习惯是“清空收件夹”,第三个习惯是“每日重开机”

第一部分 先吃掉那只青蛙

时间管理不是让人变得一味忙碌,而是让人变得轻松,有时间享受生活。

如果每天早晨你先做最有挑战性的事情,一天中其他的事情都会显得无比轻松。

高效的人并不是每天做很多小事,而是把时间花在最重要的几件事情上

A代表“Action List”,英文中的行动清单。把今天要做的事情列成清单,之后就专注地一项一项做完。每天早上花点儿时间,列出包含13只青蛙、57只蝌蚪的每日行动计划。青蛙之后的其他任务就是“蝌蚪”,就是我们所说的琐事或小任务,相对来说不是非常重要的事。蝌蚪意味着如果今天做不完可以适当舍弃。这份清单除了自己使用,还可以和团队共享,让队员互相了解彼此的进度。

S是“Slice”的缩写,代表切成小片。有些青蛙,不是一口能吃完的,需要分成几天甚至几周才能吃完,那么就需要切成小片。
第二章 F吃青蛙:要事为先的三个关键

进入心流状态四步法:

  • Step1:热身时间先做一些容易的工作,轮替一下不同的小事,这就好像典礼开始时的暖场。
  • Step2:专注青蛙进入每天最重要的事(吃青蛙)本身。别忘了一口一口吃的技巧,心如止水,顺流而下。
  • Step3:适时休息记得要在疲倦之前就休息。我在后面的章节会讲到番茄工作法,番茄工作法使我们每25分钟就有一次休息的时间。
  • Step4:每日检视我会在第二天早晨写日记检视,从检视中找出哪些做法可以改善,下次要吃类似的青蛙时,可以有更好的方法。

挑战最难的事情,正是生活中最有趣的部分。

我会回顾昨天在笔记上记录下来的事情。把需要执行的部分移到行动清单中,剩下的保存在笔记资料库中。

一封信一封信地依次检视,每看完一封信,你可以选择存档、立刻回信、授权他人处理,或者转寄到行动清单作为下一步行动。

我写晨间日记的习惯已经坚持了将近十年,每天记录前一天发生的事情或心情,对于了解自己有莫大帮助。

推荐四个数字化清单应用除了把清单写在笔记本上,现代人应该懂得善用“数字化清单”工具,这里我先做一个简单推荐。OmniFocus是老牌又专业的清单工具,效率非常高,美中不足的是只能在Mac和iOS系统下使用,没有PC版。Wunderlist,又称奇妙清单,有很漂亮的界面与亲切的使用流程,目前属于微软旗下的服务。滴答清单,基础功能免费,比较符合大陆用户的使用习惯,可以语音输入,还可以把微信的内容直接复制到清单里。
第五章 T训练自己的时间感知能力

番茄工作法的基本原则是最高强度地专注于一件事情上25分钟,例如看书、背诵、写作、思考或进行各种工作任务,然后让自己精神放松5分钟,例如站起来走走、刷网页、聊聊天。只要一直重复这个循环过程,可以让自己掌控时间并维持最佳专注力

所以,通常我会利用上午的时间来吃青蛙,这是我一天中工作效率最高的时段。到了下午,我的精神已经疲惫,不适合吃青蛙,就处理一些比较轻松的工作,这样才能劳逸平衡

番茄土豆:结合任务清单与番茄钟,有各平台的APP与网页版,是很适合吃青蛙的番茄钟工具。Focus:有Mac和iOS版,好处是可以列出待办事项。Focus Booster:有Windows与Mac版本,可以在桌面上使用的番茄钟计时工具。

我们需要顺应身体的节律,集中注意力、休息放松,保持规律的生活、充足的睡眠。保持节律,只靠大脑是不够的,我们还需要一个闹钟。现代人习惯用手机、电脑、实体倒计时器作为闹钟。这些形态的闹钟都可以使用,更重要的是如何有效地用好它们。

电脑上的计时软件我是用Due做电脑上的计时软件。Due是一个专业的闹钟APP,可以快速输入几个自己需要的闹钟,或设定倒计时,整个过程行云流水,更棒的是可以同步到iOS设备,就算离开电脑也能够提醒自己。

FAST原则除了可以帮你个人完成一天的重要任务,其实也可以管理一个团队的工作流程。F,就是找出团队专案里最重要的事情有哪些。A,就是列出整个团队专案的进度清单。S,就是分配任务、切割任务,根据每个团队成员的能力去分配工作。T,就是分配专案时间,让每个团队成员有时间去完成任务。
第八章 清空收件夹:将杂事加工成行动

这个世界上的信息固然非常多,但终会被信息组成者宰制,这些人能在对的时间点,归纳整合正确的信息,批判性地思考,明智地做出重要决定。—— 哈佛大学教授 爱德华·奥斯本·威尔森(Edward Osborne Wilson)

清空收件夹

清空收件夹分三步:收集杂事、将杂事加工成行动、贯通收件夹与行动提示系统。

学习好“清空收件夹”的三个流程,就是练习三个基本功:首先,管理好杂事收件夹系统;其次,架构好行动提示系统;最后,清空收件夹,贯通从杂事到行动的高速铁路。让杂事有明确可以放置的地方,有明确的流程让杂事变成行动,最后做事的速度与质量因为有良好的行动提示系统而得到提升,这就是清空收件夹的目的。

人生中一半的麻烦源于答应得太快,拒绝得太慢。——格雷戈·麦吉沃恩(Greg Mckeown)

重新开机

重开机(Reboot):使用时间管理系统帮助我们推进任务,久而久之,系统会产生一些“阻力”,需要定期重开机,清空CPU及RAM内存,让时间管理系统恢复应有的速度。

Schedule,日程表我每天早上检查日程表,确认自己一天的行程。每周在做检视时,也会确认自己上一周与下一周的各项任务,并列出任务清单,安排执行任务的时间,并设定闹钟自动提醒。Task,任务现代知识工作者会同时进行许多任务,有的耗时短,几天可以完成,有的耗时长,需要数周或数月才能完成。任务分个人及组织的任务,有的是独立完成,有的要和团队成员协作才能完成。要对任务做好适当的规划,借此了解整个任务的全貌,这样执行时才能够持续推动,减少边想边做出现的状况。

若是能管控好下周要推动的任务清单及下一步行动,这样时间管理的功力就很不错了。Action,行动每天都需要推动许多行动,有些是单独的行动,有些则是和某个任务相关的行动。行动不容易推动有两方面原因,一方面是没能做好任务规划工作,一直找不到关键行动;另一方面就是今天有太多可以做的行动,需要花时间厘清先后次序。

因此每天要先列出三只青蛙,几只蝌蚪,努力推动,当有杂事进入收件夹,迅速加工确认是否必须今天做。可能的话尽量不要安排在今天,而是安排特定日期来做该行动。这样才能顺利推动今天的青蛙,吃完青蛙和蝌蚪,拥有高效的一天。Reference,参考资料库为了持续做好时间管理,需要建立参考资料库,例如之前提过的晨间日记,爱画画及拍照的人会建立图片资料库,讲师会有幻灯片资料库,上班族则有Office文件管理。这些资料可以帮助我们将任务执行得更好。
第十九章 晨间日记:为检视自己而写

每天清晨,我会打开印象笔记,开始写晨间日记,在窗帘透进来的曙光中,只聆听键盘敲击及内心对话这两种声音。而每周每年的坚持检视,帮助我归纳整合信息,做批判性的思考,不断升级自己的人生操作系统。每一次阅读日记,都会觉得好像面对一个不太熟悉的自己。有时发现,自己生命中的每一天都是如此认真地活,这些体验是如此地真实生动。有些时候,也会有点懊恼,为何当初没有好好对待那件事情。日积月累,人生变得更加丰润成熟

一年一次的深度检视,仿佛在一条长路中,停下来歇歇脚。回看之前的轨道,依稀看出形成一条直线,再一转头,望向未来的目标,就知道如何修订生活与工作的角度,向目标继续前进,拥有一个值得拥有的人生

1.选一个早晨自己可以接受的起床时间。2.选一件没有压力,但是可以让自己振奋精神的事,当成早晨起床的第一个动力。3.不急着行动,从晨间日记的每日检视开始。4.选一件对自己具有“高价值”的工作开始做,让自己在早晨就感受到强大回馈。
第二十章 每周检视:提升时间管理高度

每周检视的一小时,是一周168小时中最珍贵的一小时。这一小时让我得以从高空俯瞰生活的全局,这样充分地检视后,我的头脑才能获得真正的宁静。

如果你已经下定决心做好每周检视,可以按照如下流程进行:先清空收件夹检视晨间日记本下周日程表思考下周任务检视年度计划

1.设定每周某一固定时段进行每周检视。2.练习快速完成检视。3.每周检视的目的先从找到下周目标开始。4.执行几次后,在每周检视中找到未来计划。

点评

★★★☆☆
重要的事,琐事如何排序 还有定时日记,自己重开机都是很好的习惯!

MacOSX Docker服务器如何分配硬盘空间大小?

打开电脑上的docker。

点击菜单栏上的图标,点击Dashboard打开面板。

打开后,点击上方的设置图标。

点击左边的Resources,资源设置项。

找到下方的Disk size的设置项,就是设置硬盘大小的。


设置好后,点击下方的apply按钮,完成设置。

Git svn项目转移到git

git-svn用于Git和SVN的转换,可以把Git仓库迁移成SVN仓库,反之亦可

安装git-svn

1
$ yum install -y git-svn

创建一个空目录

1
2
3
$ mkdir /opt/git

$ cd /opt/git

创建svn用户和git用户对应表

vim userinfo.txt

格式如下

svn用户=git用户<邮箱地址>

例如

1
Linus=Linus<linus@linux.com>

导出 svn 工程

1
$ git svn clone /the/path/of/svn/repo --authors-file=userinfo.txt

如果出现

Author: XX not defined in userinfo.txt file

那就在userinfo.txt里面添加一个XX用户

重新执行git svn clone命令

其中userinfo.txt的内容可以通过下面的命令获得:

1
cat log.txt | awk -F '|' '{print $2}' | sort -u | awk '/./{print}' |awk '{print $1 " " $1 " <" $1"@mail>"}' > users.txt

其中log.txt为svn log的内容

上传到 git 服务器

1
2
$ cd svn_repo
$ git remote add origin /the/path/of/git/repo

用git push命令推送全部的分支和标签信息到git服务器上面

1
$ git push origin master --tags

登录到gitlab/github,查看更改记录是否存在.

git submodule 的使用

项目中经常会使用到第三方的 git 库, 将三方库整合到项目中最简单的办法就是复制粘贴, 但是如果这个库升级了一个很酷炫的功能, 你要怎么整合进来呢?(其实就是 git 版的包管理器)

这就是 git-submodule 的功能, 直接把第三方的版本库合并到自己的库中.

添加第三方库

比如自己开了两个库做测试, 主库叫 main, 另一个库叫 sub

首先在本地的main库中添加sub

1
2
3
$ git clone https://www.github.com/username/main.git
$ cd main
$ git submodule add https://www.github.com/username/sub.git <directory_name>

这时查看下状态会多两个文件

1
2
3
4
5
6
7
8
9
➜  main git:(master) ✗ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: .gitmodules
new file: sub

这就多了一个 sub的库, 和一个.gitmodules的文件, 现在提交一下

1
$ git commit -am "add sub"

在其他地方使用合并后的版本库

本地提交了版本之后可以提交到远程试一下

1
$ git push

这时去远程库中看的话库中的内容是这样的

这里有个奇怪的 sub @ 2b79b47, 明明是没有的啊?
点一下原来是一个快捷方式, 直接给连接到了 sub库的地址, 版本库中不会存第三方引入库的实体文件, 而是通过 .gitmodules的方式存储三方的联系方式, 当下载到本地运行的时候才会再拉取文件

而且这个时候在其他的地方安装main这个库的时候直接运行 git clone 是生成不了完整的文件的, 缺少了 sub库的文件
因为这个时候的 main/sub目录是空的需要多走一步, 这时为什么呢? 我们下面会讲到原因

1
2
3
4
5
$ git clone the/path/of/main.git
$ git submodule init && git submodule update

#下面这一句的效果和上面三条命令的效果是一样的,多加了个参数 `--recursive`
$ git clone the/path/of/main.git --recursive

这时才是一个完整的库

将三方库同步到主线

之前的一些步骤其实还不完整, 因为 main/sub 这个目录中的文件并没有和主线在一条线上, 这也是为什么在远程库的 sub 目录是空的, 因为在 master 分支里面它确实是空的, 文件是在另一个分支上, 我们先去看一下

1
2
3
4
cd path/to/main/sub
➜ sub git:(2b79b47) git branch
* (HEAD detached at 2b79b47)
master

别的文件的分支都是 master 到这个文件的时候就是 2b79b47分支了, 其实这个值也是 sub库当前的 commitId
而且如果不把第三方的库纳入自己的主线的话会非常的危险, 因为你对项目中的三方库发生的任何改动都不会对主线产生任何影响, 被主线遗忘了, 因此我们还需要接下来的操作

1
2
cd path/to/main/sub
git checkout master

更新第三方库

这里有个问题就是如果main/sub发生了更新就首先在这个文件中提交一个commit, 然后在main这个目录下再 commit一次
第一次 commit 是为了更新 sub的版本控制, 第二次更新是更新main的版本控制, 同时更新 sub库在main的指针

如果更新的比较多, 可以运行

批量更新第三方库

假设你的项目当中引入了 100 个第三方的库, 你需要同步的时候难道还要每一个都要执行:

1
2
3
$ cd module-dir/
$ git checkout master
$ git pull

这些东西 git 早就帮你想好了
具体操作可以看一下git help submodule有相关的介绍的

1
2
3
git submodule foreach <command>
比如:
git submodule foreach git checkout master

这条命令就会按照 .gitmodules会根据path寻找所有的三方模块, 并在每一个模块中都执行 foreach 后的命令,
比如你想批量更新模块到最新的时候就:

1
git submodule foreach git submodule update

怎么删除 submodule?

在当前 git 版本1.7.8之前, 删除指定的 submodule 的命令是

1
git rm <submodule-name>

在新版的 git 下, 则是运行以下命令

1
2
3
4
$ git submodule deinit -f — mymodule
$ rm -rf .git/modules/mymodule
$ git rm -f mymodule

查看本地有哪些三方模块可以查看 .gitmodules

1
2
3
4
➜  maint  git:(master) cat .gitmodules
[submodule "sub"]
path = sub
url = the/path/of/sub.git

拉取所有子模块

git submodule foreach git pull

git submodule foreach –recursive git submodule init

git submodule foreach –recursive git submodule update

1
$ git submodule add <url> <path>
  • url:替换为自己要引入的子模块仓库地址
  • path:要存放的本地路径

执行添加命令成功后,可以在当前路径中看到一个.gitsubmodule文件,里面的内容就是我们刚刚add的内容

如果在添加子模块的时候想要指定分支,可以利用 -b 参数

1
$ git submodule add -b <branch> <url> <path>

未指定分支

1
$ git submodule add https://github.com/tensorflow/benchmarks.git 3rdparty/benchmarks

.gitsubmodule内容

1
2
3
[submodule "3rdparty/benchmarks"]
path = 3rdparty/benchmarks
url = https://github.com/tensorflow/benchmarks.git

指定分支

1
$ git submodule add -b cnn_tf_v1.10_compatible https://github.com/tensorflow/benchmarks.git 3rdparty/benchmarks

.gitsubmodule内容

1
2
3
4
[submodule "3rdparty/benchmarks"]
path = 3rdparty/benchmarks
url = https://github.com/tensorflow/benchmarks.git
branch = cnn_tf_v1.10_compatible

使用

当我们add子模块之后,会发现文件夹下没有任何内容。这个时候我们需要再执行下面的指令添加源码。

1
$ git submodule update --init --recursive

这个命令是下面两条命令的合并版本

1
2
$ git submodule init
$ git submodule update

更新

我们引入了别人的仓库之后,如果该仓库作者进行了更新,我们需要手动进行更新。即进入子模块后,执行

1
2
3
4
5
6
7
8
9
$ git pull
或者在根目录执行
# 远程仓库更新以后
# fatal: Needed a single revision
# fatal: Unable to find current revision in submodule path 'xxx'

$ git pull --recurse-submodules
#或者
$ git submodule foreach git pull origin master

进行更新。

删除

  1. 删除子模块目录及源码
1
$ rm -rf 子模块目录
  1. 删除.gitmodules中的对应子模块内容
1
$ vi .gitmodules
  1. 删除.git/config配置中的对应子模块内容
1
$ vi .git/config
  1. 删除.git/modules/下对应子模块目录
1
$ rm -rf .git/modules/子模块目录
  1. 删除git索引中的对应子模块
1
$ git rm --cached 子模块目录

TO-read

Using submodules in Git - Tutorial (vogella.com)

Using submodules in Git - Tutorial

Lars Vogel (c) 2009-2022 vogella GmbHVersion 5.8,10.08.2015

TABLE OF CONTENTS

-

\1. Submodules - repositories inside other Git repositories

-

\2. Working with repositories that contain submodules

-

\3. Creating repositories with submodules

  • \4. Links and Literature

This tutorial explains the usage of submodules with the Git version control system.

Learn more in the Learning Portal. Check out ourGit Online Training priority_high

1. Submodules - repositories inside other Git repositories

1.1. Using Git repositories inside other Git repositories

Git allows you to include other Git repositories called submodules into a repository. This allows you to track changes in several repositories via a central one. Submodules are Git repositories nested inside a parent Git repository at a specific path in the parent repository’s working directory. A submodule can be located anywhere in a parent Git repository’s working directory and is configured via a .gitmodules file located at the root of the parent repository. This file contains which paths are submodules and what URL should be used when cloning and fetching for that submodule. Submodule support includes support for adding, updating, synchronizing, and cloning submodules.

Git allows you to commit, pull and push to these repositories independently.

Submodules allow you to keep projects in separate repositories but still be able to reference them as folders in the working directory of other repositories.

2. Working with repositories that contain submodules

2.1. Cloning a repository that contains submodules

If you want to clone a repository including its submodules you can use the --recursive parameter.

1
git clone --recursive [URL to Git repo]

2.2. Downloading multiple submodules at once

Since a repository can include many submodules, downloading them all sequentially can take much time. For this reason clone and submodule update command support the --jobs parameter to fetch multiple submodules at the same time.

1
2
3
4
5
# download up to 8 submodules at once
git submodule update --init --recursive --jobs 8
git clone --recursive --jobs 8 [URL to Git repo]
# short version
git submodule update --init --recursive -j 8

2.3. Pulling with submodules

Once you have set up the submodules you can update the repository with fetch/pull like you would normally do. To pull everything including the submodules, use the --recurse-submodules and the --remote parameter in the git pull command.

1
2
3
4
5
# pull all changes in the repo including changes in the submodules
git pull --recurse-submodules

# pull all changes for the submodules
git submodule update --remote

2.4. Executing a command on every submodule

Git provides a command that lets us execute an arbitrary shell command on every submodule. To allow execution in nested subprojects the --recursive parameter is supported. For our example we assume that we want to reset all submodules.

1
2
3
git submodule foreach 'git reset --hard'
# including nested submodules
git submodule foreach --recursive 'git reset --hard'

3. Creating repositories with submodules

3.1. Adding a submodule to a Git repository and tracking a branch

If you add a submodule, you can specify which branch should be tracked via the -b parameter of the submodule add command. The git submodule init command creates the local configuration file for the submodules, if this configuration does not exist.

1
2
3
# add submodule and define the master branch as the one you want to track
git submodule add -b master [URL to Git repo]
git submodule init
adds a new submodule to an existing Git repository and defines that the master branch should be tracked
initialize submodule configuration

If you track branches in your submodules, you can update them via the --remote parameter of the git submodule update command. This pulls in new commits into the main repository and its submodules. It also changes the working directories of the submodules to the commit of the tracked branch.

1
2
3
# update your submodule --remote fetches new commits in the submodules
# and updates the working tree to the commit described by the branch
git submodule update --remote

3.2. Adding a submodule and tracking commits

Alternatively to the tracking of a branch, you can also control which commit of the submodule should be used. In this case the Git parent repository tracks the commit that should be checked out in each configured submodule. Performing a submodule update checks out that specific revision in the submodule’s Git repository. You commonly perform this task after you pull a change in the parent repository that updates the revision checked out in the submodule. You would then fetch the latest changes in the submodule’s Git repository and perform a submodule update to check out the current revision referenced in the parent repository. Performing a submodule update is also useful when you want to restore your submodule’s repository to the current commit tracked by the parent repository. This is common when you are experimenting with different checked out branches or tags in the submodule and you want to restore it back to the commit tracked by the parent repository. You can also change the commit that is checked out in each submodule by performing a checkout in the submodule repository and then committing the change in the parent repository.

You add a submodule to a Git repository via the git submodule add command.

1
2
git submodule add [URL to Git repo] 
git submodule init
adds a submodule to the existing Git repository
initialize submodule configuration

3.3. Updating which commit your are tracking

The relevant state for the submodules are defined by the main repository. If you commit in your main repository, the state of the submodule is also defined by this commit.

The git submodule update command sets the Git repository of the submodule to that particular commit. The submodule repository tracks its own content which is nested into the main repository. The main repository refers to a commit of the nested submodule repository.

Use the git submodule update command to set the submodules to the commit specified by the main repository. This means that if you pull in new changes into the submodules, you need to create a new commit in your main repository in order to track the updates of the nested submodules.

The following example shows how to update a submodule to its latest commit in its master branch.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# update submodule in the master branch
# skip this if you use --recurse-submodules
# and have the master branch checked out
cd [submodule directory]
git checkout master
git pull

# commit the change in main repo
# to use the latest commit in master of the submodule
cd ..
git add [submodule directory]
git commit -m "move submodule to latest commit in master"

# share your changes
git push

Another developer can get the update by pulling in the changes and running the submodules update command.

1
2
3
4
5
6
# another developer wants to get the changes
git pull

# this updates the submodule to the latest
# commit in master as set in the last example
git submodule update
With this setup you need to create a new commit in the master repository, to use a new state in the submodule. You need to repeat this procedure every time you want to use another state in one of the submodules. See Adding a submodule to a Git repository and tracking a branch for tracking a certain branch of a submodule.