Browsed by
Category: 学习

学海无涯

Apache 日志分析工具:goaccess

Apache 日志分析工具:goaccess

如果统计、分析网站日常的访问情况,无疑优选 Google Analytics。不过由于众所周知的原因,访问稍显麻烦,而且有时候希望了解更细节一些的东西,因此最好直接检查 Apache 的日志来获取相关信息。日常维护时,同步检查日志也有助于尽早发现问题。

推荐采用一个非常小巧的工具:goaccess,这个工具基本不依赖第三方库(似乎有一个地理位置信息的库),Debian 系统自带,使用也非常简单,呈现的信息足够丰富、有序。

使用以下命令安装:

sudo apt install goaccess

可以直接读取 Apache 的日志文件进行分析,例如:

goaccess /var/log/apache2/access.log

Apache 的历史日志都保存为 .gz 格式,可以直接重定位方式进行分析,例如:

zcat -f /var/log/apache2/access.log*.gz | goaccess --log-format=COMBINED

goaccess 还有其他一些很棒的功能,例如实时显示、html格式等,有兴趣的话可以进一步了解。日常维护则上述命令足以。

公共 DNS 服务器

公共 DNS 服务器

在路由器配置中,通常可以指定 DNS 服务器,如果不单独指定,那默认就是运营商给定的 DNS 服务器。考虑到国情在此,建议指定 DNS 服务器。

国内有很多家服务商能提供公共 DNS 服务,例如腾讯(DNSPod)、阿里等。综合这几年的使用情况看,采用腾讯和Cloudflare 两家的 DNS 服务器作为主备,对于我(坐标:深圳电信)是个比较好的选择。

通常,我设置 Cloudflare 家的 DNS 服务器作为主服务器,腾讯家的 DNS 服务器作为备用服务器。这两家也都支持 IPv6 以及 DoH 等,充分满足需要,下面列示这两家的信息。

Cloudflare:

IPv4: 1.1.1.1
IPv6: 2606:4700:4700::1111
DoH:  https://cloudflare-dns.com/dns-query

腾讯:

IPv4:119.29.29.29
IPv6: 2402:4e00::
DoH:  https://doh.pub/dns-query

如果使用 Firefox 浏览器并采用 DoH,默认就是 Cloudflare 的 DoH,无需额外配置。

Firefox 中的 DoH 配置
DoH in Firefox

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
定时清理释放内存

定时清理释放内存

家里有台 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% 的年均增长率,也很厉害。如果后续仍然能保持这个增长率,那就相当惊人了。