Blog

Thunar技巧

Thunar技巧 #

  1. 模式选择

假设你要选择文件夹中为 png 格式的所有图片,那么可以在执行 Ctrl + S 快捷键后,输入 *.png 即可。

  1. / 与 ~

在 Thunar 中,使用 / 和 ~ 可以实现特定目录的快速导航。如果导航其他目录,则可以按 Ctrl + L 快捷键打开定位对话框。

  1. 侧面板快捷键 F9 — 显示/隐藏侧面板 Ctrl + B — 显示/隐藏快捷面板 Ctrl + T — 显示/隐藏树状面板

From #

日美平均劳动薪资的变化图

Content #

把日美这段时间的变化放在一起比较,就可以画出“日美平均劳动薪资的变化图”。

日本真的整整落后美国30年。日本的员工薪资从1997年起开始往下滑落。另外,日本人的可支配收入也是自1997年开始急速减少的。

From #

《M型社会》 大前研一

中低阶层市场和主要消费群的关系

Content #

◆ 收入最高、最有余钱做选择性消费及支出的是“富裕老龄者”。处于这个部分的人在孩子都长大独立之后,解除了教育费及房贷的压力,所以在金钱的使用上最为宽裕。随着老龄化社会的来临,属于这部分的人将会持续增加。经常到国外旅行的就是这些人,现在出国不管走到哪里,都可以看到老龄者的观光团,就连不是观光胜地的西班牙乡下,也都可以看到他们的身影。

◆ 接着是“DOM”,就是“Dirty Old Man”的缩写(美国人常用这个说法,是指专门追逐年轻女孩的色老头)。处于这个部分的,是拥有高收入、对美丽年轻女性尚“不死心”的中老年男性消费群。最近流行的“不良老爹”指的就是他们。他们是不需要担心年金的一族,所以对于流行时尚、自己的嗜好常常不惜一掷千金,潜意识里希望能受到女性的青睐。

◆ 在30岁以上、有工作、没有孩子的被称为“败犬族”(年过30的未婚女子)的女性中,有一小部分女强人,拥有中上阶层的收入,但绝大多数还是从事事务性工作的中低阶层。不过和同时代需养家糊口的男性比起来,属于这一类的女性,因为不需要负担贷款及孩子的教育费用,在选择性的消费及支出上,仍然有比较大的空间。属于这个部分的女性,最擅长带着DOM一块儿去血拼名牌包,然后把自己赚的钱用在自己想做的事情上。常偕同性朋友到米兰的,就是这个部分的女性。

◆ “寄生虫”是指没有收入,必须向别人伸手拿钱作为自己支出费用的人。“未婚、有工作、没有孩子”并和父母一起居住的人,就是最典型的寄生虫。现在35岁的女性中,有35%都是未婚的,而且有35%的人和父母住在一起。在美国,年过20还和父母住在一起的话,会被认为“很恶心”;但是在日本,属于这一部分的人数却在持续增加。这些人本身的收入属于中低阶层或低层阶层,但是由于不需负担家用,三餐靠父母,所以可用于选择性消费及支出的金钱相当宽裕。处于这个部分的人口数,据推算超过1200万人,而且预计20~39岁的人在这个部分所占的比例将会越来越高。

◆ 收入少、可使用的钱也少的是“尼特族”(不工作、不上学也不参加职业培训的年经人)及“飞特族”(从学校毕业后没有固定工作,靠打工来维持生计的年经人)。这个部分的人数不断增多,也是造成日本企业生产力低落,使日本陷入长期衰退的原因之一。此外,就消费而言,属于这个部分的人还有可能是日本经济的绊脚石。

From #

《M型社会》 大前研一

book:M型社会

Content #

第一十三章 中低阶层时代已到来 #

◆ 在倍数经济下,一个只有地方规模的超市,也有可能握有资产额数千亿日元公司的经营权。销售额不满500亿日元的乐天公司,将了营业额超过3000亿日元的日本TBS电视台(东京放送)一军,也是因为在倍数经济下,股票收益率呈倍数增加的关系。以前企业的价值取决于收益、资产等“现在的价值”,但是迈入新经济时代(也就是迈入“开拓者时代”)之后,企业的价值是由可占领多少将来的“地盘”而决定的,也就是该企业在新发现的新经济大陆里,可拥有多少“土地”。因此一个企业现在虽然还没有什么价值,但是只要让人看到它未来的前瞻性,并预测其可拥有“土地”,资金即会呈倍数转动,即使目前的收益并不高,财源仍会滚滚而来。

◆ 换句话说,在新经济里,企业是可以拿“让人期待的未来”交换金钱的。

日美平均劳动薪资的变化图

中低阶层市场和主要消费群的关系

From #

《M型社会》 大前研一

book:人为什么会生病

Content #

◆ 随着体脂的增加,脂肪本身也会产生胰岛素抵抗。

第一部分 问题:胰岛素抵抗及其危害 #

胰腺中负责生产胰岛素的是β细胞

第二章 胰岛素抵抗与心血管疾病 #

◆ 血脂异常只是血液中脂质含量异常的一种状态。通常,人们将血脂异常简单地定义为脂质过多,但血脂异常其实是指血浆中各种脂质的水平发生了异常变化——可以是过多,也可以是过少。

◆ 血浆中的主要脂质成分包括甘油三酯(TG)、低密度脂蛋白胆固醇(LDL)和高密度脂蛋白胆固醇(HDL)。

◆ 如果将低密度脂蛋白胆固醇按大小和密度来分类(即所谓的“类型”),对预测心脏病的发生风险将更有指导意义。低密度脂蛋白胆固醇有两种类型——A型和B型。其中,A型体积大、密度低,B型体积小、密度高。胆固醇载体必须先从血液进入血管壁,然后才能引起疾病。

◆ B型低密度脂蛋白胆固醇占优势的人比A型低密度脂蛋白胆固醇占优势的人更容易患心血管疾病。

◆ 通过将甘油三酯的检测结果除以高密度脂蛋白胆固醇的检测结果,我们可以得到一个比值,这一比值能够比较准确地判断体内低密度脂蛋白胆固醇的数量。该比值越低,说明体积大、密度低的A型低密度脂蛋白胆固醇越占优势。反之,则说明体积小、密度高的B型低密度脂蛋白胆固醇越占优势。

◆ 胰岛素能够选择性地促使肝脏(肝脏负责制造几乎全部的胆固醇)合成B型低密度脂蛋白。随着胰岛素抵抗程度的加深,血浆胰岛素水平会逐步上升。此时肝脏会收到信号,促使B型低密度脂蛋白取得优势。[插图]简单来说,因为脂质在血管壁上的沉积和动脉粥样硬化斑块的形成会减小血管的直径,因此,血脂异常与高血压之间存在密切关联。

◆ 。当胆固醇和脂肪进入内皮时,它们是良性的——似乎不会引起不良反应。事实上,血管内皮细胞和身体的其他细胞一样,需要胆固醇和脂肪来维持健康的功能。但这些脂质可能不会长期处于良性状态,某些人体内的胆固醇和脂肪会发生一些有害变化。

◆ 在胆固醇和其他脂质被氧化后,潘多拉魔盒便被打开了。这一过程是在氧化应激水平较高时发生的。之后,被氧化的脂质会被一种名为“巨噬细胞”的白细胞吞噬,以防止其他细胞被氧化。

◆ 久而久之,巨噬细胞内便充满了氧化型脂质。由于在显微镜下呈泡沫状,所以这种富含脂质的细胞又被称为“泡沫细胞”。此时,泡沫细胞会释放蛋白质信号,通知并招募更多的巨噬细胞前来帮忙(该过程又被称为“炎症反应”)。一段时间后,新来的巨噬细胞也变成了泡沫细胞,造成问题进一步恶化。最终,这种泡沫细胞和脂质的混合物便演变成动脉粥样硬化斑块的核心。

◆ 作为一种多不饱和脂肪酸,常见于大豆油等种子油中的亚油酸是最容易被氧化的。由于其被氧化程度远超胆固醇,所以亚油酸也有可能成为动脉粥样硬化的元凶。[插图]事实上,胆固醇的氧化过程通常是亚油酸和胆固醇分子结合,[插图]就像中性胆固醇被淘气孩子(氧化后的亚油酸)骑在了背上一样。在这一过程中,同样能够发现胰岛素抵抗的身影。

◆ 是胰岛素抵抗刺激了被认为与这种病有关的两个主要变量。

◆ 胰岛素在增加B型低密度脂蛋白中的作用,B型低密度脂蛋白是问题脂肪(如亚油酸)的载体。另一个变量是氧化应激,胰岛素抵抗似乎能够提高氧化应激水平。[插图]由下文可知,胰岛素抵抗与氧化应激存在双向关系,即氧化应激也可反过来加重胰岛素抵抗。

第四章 胰岛素抵抗与生殖健康 #

◆ 。瘦素是一种由脂肪组织分泌的代谢激素。脂肪组织越多,血液中的瘦素就越多。您也许听说过,瘦素可以向大脑发出“饱腹”信号,提示身体已经吃饱了。但瘦素的作用远不止于此,它还能告诉大脑体内已经储备了足够的脂肪,可以开始性发育。从本质上说,瘦素可通过提高促性腺激素释放激素的分泌量来促使人进入青春期。这种作用极其强烈,所以给小鼠单独注射瘦素就足以诱导其进入青春期。[插图](图4-1)

◆ 胰岛素是脂肪生长的驱动剂——胰岛素水平升高可促进脂肪细胞发育和生长,同时防止储存在脂肪细胞中的脂肪分解。随着脂肪细胞的扩增,它们会产生更多的瘦素,并将其释放到血液中。瘦素和胰岛素之间的关系在青春期尤为重要,因为瘦素过量会造成青春期提前,即所谓的“性早熟”。数十年来,全球性营养过剩改变了人体内的胰岛素和瘦素水平,进而对青春期产生显著影响。

第五章 胰岛素抵抗与癌症 #

◆ 癌细胞似乎酷爱甜食——它们爱吃葡萄糖。[插图]正常情况下,细胞会源源不断地获得营养物质。由于人体不希望所有的细胞都无限制地增殖,所以我们进化出了自动控制系统。有了这套系统,健康的细胞便不会擅自吸收营养物质,除非收到了一种名为“生长因子”的物质的特别指示。在收到指示后,细胞开始吸收营养物质,并利用酶来燃烧它们,进而释放能量,为身体所用。能量的产生发生在线粒体内。但癌细胞的新陈代谢与众不同,它们能以一种特别的方式获取能量。大约在100年前,德国医生兼科学家奥托·海因里希·沃伯格(Otto Heinrich Warburg)发现,癌细胞几乎完全依赖葡萄糖作为代谢燃料。沃伯格的研究还表明,癌细胞并不利用线粒体来分解葡萄糖,该过程发生在线粒体之外,而且不需要氧气参与(即所谓的“无氧酵解”)。如今,我们将这种现象称为“沃伯格效应”。这种严重偏离正常过程的行为使得癌细胞在体内各处迅速生长,包括因血流量不足而缺乏氧气的地方。

◆ 胰岛素抵抗患者血液中的胰岛素水平会升高。如果您已经了解胰岛素抵抗的主要作用之一是促进细胞生长,那么您很容易就能理解胰岛素抵抗给癌症患者制造的困境。胰岛素的促合成代谢作用也可以促进癌细胞的生长,尤其是在癌细胞的胰岛素敏感性比正常细胞高的情况下。因此,当高水平的胰岛素向脂肪细胞发出生长信号时,任何因基因突变而对胰岛素更敏感的癌细胞都将在胰岛素的刺激下以比正常细胞更快的速度生长。

第八章 代谢综合征与肥胖 #

◆ 世界卫生组织基于以下两个主要标准来定义代谢综合征:一是患者必须有高血压、血脂异常、中心性肥胖和血糖异常中的两项;二是患者必须存在胰岛素抵抗。

◆ 胰岛素可强力促进脂肪细胞生长:它一方面阻止脂肪细胞将脂肪分享给身体使用,另一方面刺激脂肪细胞继续生长。肥胖和胰岛素抵抗的关系不但密不可分,而且出奇的复杂

◆ 事实上,大多数肥胖者体内瘦素水平会升高,而非降低。这是因为瘦素在肥胖人群中无法继续有效地调节食欲和代谢过程。瘦素的作用是抑制胰岛素分泌,从而帮助人维持苗条的身材。[插图]但如果瘦素水平长期居高不下,人体就会产生瘦素抵抗,造成瘦素抑制胰岛素分泌的能力减弱,[插图]进而导致体脂增加。更大的问题是,这会形成一个恶性循环。既然瘦素抵抗起因于长期升高的瘦素水平,那么又是什么造成了瘦素水平升高呢?答案当然是胰岛素过量。作为一种天然机制,胰岛素会刺激脂肪组织产生瘦素,所以瘦素过量是胰岛素过量的结果。

◆ 胰岛素是体脂的决定性因素——体脂随着血浆胰岛素水平的上升而增加,随着血浆胰岛素水平的降低而减少。由于胰岛素在增加体脂方面作用突出,即使摄入的热量保持不变,胰岛素水平升高也会导致体脂增加。[插图]假如A、B二人采用热量同为2500 kcal[插图]的饮食,但A的饮食能够降胰岛素,而B的饮食能够升胰岛素,那么,一段时间后,A将比B瘦。(饮食问题详见第二部分。)简而言之,胰岛素会诱导营养物质以脂肪的形式储存在体内。

第十章 胰岛素抵抗的激素成因 #

◆ :当一个过程被过度激活时,身体通常会抑制自身对刺激的反应,以平息该过程。(这与细菌对抗生素产生耐药性或咖啡成瘾者随着时间的推移渴望摄入更多咖啡因的情形类似。)如果一个细胞(如肌肉细胞和肝细胞)持续浸润在胰岛素中,它就无法直接降低胰腺分泌的胰岛素水平。但它可以自我改变,从而减轻胰岛素对自身的影响,而这种改变便是产生胰岛素抵抗。当这种情况发生在全身组织的无数个细胞中时,人体就会产生胰岛素抵抗。

...

判断软件的主版本号

Content #

有一款软件的版本号为4.6.1,现在有一个任务要通过判断软件的主版本号来确定要不要执行接下来的任务,请问ansible playbook的任务该怎么写?

- name: 主版本号为4时才进行的操作
  [task here]
  when: software_version.split('.')[0]=='4'

From #

sequential convergence

Content #

The sequence \(\{x_n\}\) converges to \(x\) if \((\forall \varepsilon)(\exists N)(\forall n)(\text{if}\ n > N\ \text{then}\ |x_n-x|<\varepsilon)\)

From #

Amdahl定律

Content #

\(S = \frac{1}{(1-\alpha)+\alpha/k}\)

\(\alpha\) 表示 part runtime / system runtime. k 表示提升部分在性能上的提升比例。 S表示系统的加速比:\(S = \frac{T_{old}}{T_{new}}\)

\(k\to\infty\) 意味着该部分运行所费时间可以忽略不计,Amdahl定律变成: \(S_{\infty} = \frac{1}{1-\alpha}\)

From #

衡量系统可靠性的三个指标

Content #

  1. MTTF (Mean Time To Failure,平均无故障时间) 指系统无故障运行的平均时间,取所有从系统开始正常运行到发生故障之间的时间段的平均值。 MTTF =∑T1/ N
  2. MTTR (Mean Time To Repair,平均修复时间) 指系统从发生故障到维修结束之间的时间段的平均值。MTTR =∑(T2+T3)/ N
  3. MTBF (Mean Time Between Failure,平均失效间隔) 指系统两次故障发生时间之间的时间段的平均值。 MTBF =∑(T2+T3+T1)/ N

很明显:MTBF= MTTF+ MTTR

From #

进程切换时load_sp0的原理

Content #

Linux内核在做进程切换的主要函数如下:

__visible __notrace_funcgraph struct task_struct *
__switch_to(struct task_struct *prev_p, struct task_struct *next_p)
{
  struct thread_struct *prev = &prev_p->thread;
  struct thread_struct *next = &next_p->thread;
......
  int cpu = smp_processor_id();
  struct tss_struct *tss = &per_cpu(cpu_tss, cpu);
......
  load_TLS(next, cpu);
......
  this_cpu_write(current_task, next_p);
  /* Reload esp0 and ss1.  This changes current_thread_info(). */
  load_sp0(tss, next);
......
  return prev_p;
}

其中load_sp0(tss, next)做了什么事情?为什么要这么做?

TSS(Task State Segment,任务状态段)结构里有所有的寄存器。做进程切换的时候,没必要每个寄存器都切换,这样每个进程一个 TSS,就需要全量保存,全量切换,动作太大了。

Linux 操作系统想了一个办法。在系统初始化的时候,会调用 cpu_init, 这里面会给每一个 CPU 关联一个 TSS,然后将 TR 指向这个 TSS,然后在操作系统的运行过程中,TR 就不切换了,永远指向这个 TSS。TSS 用数据结构 tss_struct 表示。

void cpu_init(void)
{
  int cpu = smp_processor_id();
  struct task_struct *curr = current;
  struct tss_struct *t = &per_cpu(cpu_tss, cpu);
    ......
    load_sp0(t, thread);
  set_tss_desc(cpu, t);
  load_TR_desc();
    ......
}
struct tss_struct {
  /*
   * The hardware state:
   */
  struct x86_hw_tss  x86_tss;
  unsigned long    io_bitmap[IO_BITMAP_LONGS + 1];
}

在 Linux 中,真的参与进程切换的寄存器很少,主要的就是栈顶寄存器。于是,在 task_struct 里面,还有一个原来没有注意的成员变量 thread。这里面保留了要切换进程的时候需要修改的寄存器。

...