Browsed by
Author: YI

Javascript 模板字符串

Javascript 模板字符串

在编写 JS 代码时(例如我们的小网站、或者 miniSIPServer 的 web 管理界面),拼接字符串是件很头疼的事情,尤其是字符串本身又可能包含单引号(‘)或者双引号(“)的情况时,简直头晕眼花。

显然,这样的痛苦不是仅仅一小部分人才有,因此有人(ES6规范?)聪明地引入了“模板字符串”这么一个语法糖,顺利解决了问题。在 JS 文件中,采用反单引号“`”,即键盘左上角那个引号,和“${}”即可完成拼接,如以下示例:

<div>`My name is ${usrName}`</div>

修改 root 用户的PATH

修改 root 用户的PATH

最近工作需要安装了一台运行 Debian 11 系统的电脑,不知道是不是很久没安装 Debian 系统的原因,惊讶地发现 root 用户的路径少了很多,比如 /sbin, /usr/sbin 路径等。这些路径都是一些系统管理员级命令所在,不清楚什么原因没有加入 root 的默认路径。

不想影响其他用户,因此只要单纯修改 root 用户 HOME 目录下的”.bashrc”文件,在该文件尾加入以下语句即可:

export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
打第二针疫苗

打第二针疫苗

打第一针疫苗的社康不再打疫苗了,不知道什么原因,导致我有点措手不及。加上最近这段时间似乎都是安排北京生物的疫苗,有人说可以混打、有人说最好不要混打,心里嘀咕半天,决定还是等等,不混打疫苗。网上的预约总是预约不到,只好每天去临时接种点咨询一下(电话一直忙)。

非常幸运,今天蛇口临时接种点有科兴疫苗,非常顺利接种了第二针。现场人非常多,秩序非常好,感谢现场的医护、志愿者、以及维护秩序的各位社区、保安等工作人员。

打疫苗

打疫苗

我们一起打疫苗,一起喵喵喵喵喵

这是深圳宣传打疫苗的口号,非常上头。打疫苗免费,太好了,感谢政府!

现在各社康中心都可以打疫苗,经过附近的社康中心时,经常看到大家排队打疫苗的情况。不过似乎供应还不够充分,因此社康往往断货,搁几天才能排队打疫苗。今天早上跑完步后,看到社康中心又开始排队,估计又有一批疫苗到货了,想到自己还没打一针,赶紧拿上身份证去排队。

实际上我先前在网上已经登记过信息,只是网上老是预约不到,甚至还出现一次预约到某社康,结果跑过去发现,这个社康中心已经一个多月不能接种疫苗了(系统为啥还有这个社康呢?)。

我因为是第一针,排队时和周围的朋友聊了聊,大部分选择灭活疫苗(似乎有北京生物、北京科兴两种),附近的社康中心科兴比较多些,因此我也选择了科兴疫苗。

过程非常简单、顺利,打针也很快,实际上太快了,感觉”嗖“的一声就打完了。留观30分钟,然后溜达回去,心理上觉得特别安全,似乎可以直接手撕病毒了。

定时清理释放内存

定时清理释放内存

家里有台 Raspberry Pi3, 日常做点小任务,比如做 samba 服务器当 NAS、做 web 的功能测试、学习点 Linux 知识等,基本都是一些负荷不大的任务。不过由于我是死忠的 GUI 党, 因此总是喜欢进入 Pi 那个巨丑无比的界面里进行操作,这也导致 Pi3 的内存会逐渐显得有些捉襟见肘,时间长了,就不得不使用 swap 。这可能会有损 microSD 卡的寿命,因此希望 Pi 能定时清理、释放内存。

网上搜了搜,也比较简单,而且效果比较明显。简要记录一下:

在 /etc/cron.daily 目录下,创建一个 gilson-clearcache 文件,内容如下:

#!/bin/sh
sync
echo 3 > /proc/sys/vm/drop_caches

将这个文件设置为可执行文件即可:

sudo chmod +x ./gilson-clearcache

设置为可执行文件后,可以手工执行一下,可以看到 “free -m” 显示的结果里,“buff/cache available”等项有明显的改善。

不过考虑到 Pi3 可怜的 1GB 内存,这种内存回收方面的改善,估计不能从根本上解决问题,上 Pi4 (2GB或者4GB)或许更好。后续继续观察一下,如果实在不行,就换 Pi4 或者等 Pi5 吧。

巴菲特致股东的信(1977-1997,英文版,PDF)

巴菲特致股东的信(1977-1997,英文版,PDF)

这是早期的一些公开信,收集、综合到一个 PDF 文档中,以便下载、打印、学习。请点击此处下载

目前在伯克希尔官方网站上,公开的信件是从 1977 年开始的,其他更早年份的信,虽然可以在网络上搜索到,但是没有官方的认证,很难辨识。因此以官方提供的资料为准,没有收录 1977 年之前的公开信。

这些信件受制于当时的排版、网络等技术,采用了非常粗糙的 HTML 格式,极为不方便打印,这也是我收集并整理成一份 PDF 文件的初衷。同时,将原 HTML 文档中晦涩的表格,转换成了 word 的排版方式,会更有利于阅读。

1997 年之后的公开信都提供了 PDF 文档,已经很适合阅读和打印,因此暂未收入这之后的公开信。后续如果有时间,再考虑整理成一份 PDF 文件。

本次只整理了英文原版信件,后续将陆续整理中文版信件。老实说,我低估了整理的工作量。先前整理、翻译 2020 年信件时,以为每年大概就15页左右的内容,加上一、两个小表格,轻率地决定着手前面这些年信件的整理工作。事实证明我还是太年轻。四十几年前,巴老就已经是“话痨”了,而且热衷于变着花样弄表格进行炫耀……

PDF 文件里可能会有一些错误,毕竟整理了太多表格后,我时不时会头晕,并产生错觉:“我是谁? 我在哪里?我在干什么?” 如果有朋友发现了错误,请联系我进行修改,谢谢!

巴菲特 2021 年致股东公开信

巴菲特 2021 年致股东公开信

原文链接,请点击这里

新浪网翻译链接,请点击这里

个人的吐槽、更新:

我一直很奇怪这信(英文版)的排版格式,例如段落没有顶格、各种奇怪的分割符、字体严重过小(这是为了把 S&P500 对比表格完整放在一页内吗?)。 信的内容当然毋庸置疑的珍贵,就是有点太不讲究格式了。

“Two strings to our bow”在新浪的翻译文中,简单粗暴地翻译为“我们弓上有两根弦”,太硬邦邦了。另一位译者翻译成“两条盈利的线路”,稍好一些。但其实更合适的翻译,应该是“两手准备”的意思。老巴在这节中主要想表述伯克希尔对待好的商业、好的企业的两种方式(1)100%控制 (2)非控制地拥有部分权益。两种方式都很好,关键是企业本身,而是否完全掌控这些企业则不重要。

2021-03-01 更新: 关于英文版的格式,老巴的秘书应该是采用英式的格式,即每段开始处都缩格。数了一下,正好是缩进 8 个字符。从 IT 人员的视角分析,这位秘书是用 Tab 键进行缩进。更有可能她以前习惯用打字机,这大概能解释其他古怪的格式 ……

2021-03-06 更新:这周抽时间阅读了原英文版,并根据网络的一些现有翻译,整理出了一份PDF格式的中文版,方便打印出来学习,也欢迎同学们来信斧正。谢谢!

计算复合增长率

计算复合增长率

这个其实不算复杂,但是经常看到一些小白对此有很大的误解。比如某天在雪球上看到一位朋友,宣称自己从2017年到2020年,四年间收益增长了160%,因此年复合增长率是40%(160%/4,就是这么简单粗暴)。

当然这样是错的。小朋友都知道“国王和棋盘”的故事,第一个格子放一粒米、第二个格子放两粒米、第三个格子放四粒米…… 这样才叫复合增长,计算公式是:

(1+x)^N

其中,x就是增长率, N是计算周期值(例如年份数、格子数)。在小朋友的故事中,x=1,N=棋盘格子数(难怪最后国王要斩了狡诈的棋士)。

对于上述朋友的示例,其实是知道计算结果(即总值 2.6=1+1.6),N=4(年份数),反过来计算 x 是多少。可以用 windows 自带的计算器快速计算,如图采用”科学“面板计算:

科学计算器
科学计算器

由于这位朋友的收益率是160%,总量最后是 2.6,年份数是4年,在计算器面板操作如下:

输入2.6,点击xy,输入4,点击1/x,然后点击=,得到1.27 (这就是开根号的过程)。

然后 1.27 – 1 = 0.27。

即,这位朋友四年的年复合增长率是 27%,远远低于40%。不过从投资角度讲,能做到 27% 的年均增长率,也很厉害。如果后续仍然能保持这个增长率,那就相当惊人了。