DigitalOcean Standard SFO1 1 vCPUs 2GB Memory 50GB Disk ubench

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
FreeBSD 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC amd64
Ubench CPU: 280240
Ubench MEM: 248686
——————–
Ubench AVG: 264463

#digitalocean, #ubench

DigitalOcean Standard SFO1 2 vCPUs 4GB Memory 80GB Disk ubench

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
FreeBSD 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC amd64
Ubench CPU: 486249
Ubench MEM: 478180
——————–
Ubench AVG: 482214

#digitalocean, #ubench

《人的宗教》书摘

缘起

基于对宗教的不理解,而产生了对宗教文化学习的兴趣。

阅读这本书花了太多的毅力,古老的宗教中所描述的价值观和世界观与我自身所理解的价值观和世界观的冲突,让我中途多次想放弃,用“啃完”绝不为过。

什么时候打开这本书的,已经不记得了,只能看到它是2019年7月21日加入书库的,11月19日加了第一个书签,前天才读完它,所以应该可以认为我是用了半年时间才啃完了它。

下面是我在阅读的过程中,在书中所加的书签的位置的文字。
它们不具有连贯性,也不具有任何系统性。
它们有些是我认为需要再查阅资料深入阅读的,有些是在阅读的当时触动了我的内心的,有些是我已经不记得当时的我为什么要做这个书签了的。

宗教

宗教的六个特征:权威、仪式、玄想、传统、恩宠(信仰)以及奥秘。

佛教相关

南亚国家,包括至今仍然信仰原始佛教的斯里兰卡、缅甸、泰国和柬埔寨,都很严格地采纳了佛陀在这方面的政治信息。
然而中国人是不会在这个题目上让异族人士来教训的。因此中国摈除佛陀的政治提倡,而取其具有宇宙意味的心理——精神的成分。

“身是菩提树,
心如明镜台。
时时勤拂拭,
莫使染尘埃。”

“菩提本无树;
明镜亦非台。
本来无一物,
何处染尘埃?”

“我们不问禅的未来,却可留意到它对日本文化生活的影响是多么的巨大。虽然它最大的影响是弥漫在生活态度上,日本文化的四个成分却持久地打上了它的烙印。在水墨风景画中,禅宗和尚紧依着土地过着他们简朴的生活,在技巧和感觉的深度上已可与他们的中国老师们相抗衡了。在庭园艺术上,禅宗寺庙将之提升到了无比的完美境地。插花技术开始时是献花给佛陀,但是后来发展成了一种艺术,直到最后变成了每一位有教养的日本女孩训练的一部分。最后,就是著名的茶道,朴实美丽的摆设,几件旧瓷器,缓慢而优雅的仪式,以及一种配合着全然的平静的精神,集中体现了禅宗最好的特性和谐、尊敬、清晰和安详。”

“佛教徒把手掌合并,象征克服二元性。”

儒家相关

“你可用刺刀做任何事,却不能坐在上面。”

道家相关

“道家冥想的身体姿势和专注技术总是令人联想到“修的瑜伽”。”

伊斯兰教相关

“这个宗教的正确名称是伊斯兰(Islam),从字根s-l-m演变而来,主要的意思是“和平”,不过还有“屈从”或“顺从”的第二层意思,它的全部意义是“当一个人的生命顺从了神,和平就会降临”。世界上只有两个宗教是以其试图去修成的特性来命名的:一个是佛教,以佛为觉醒之意,另一个即是伊斯兰教;在后者,所要修成的是生命对神的完全顺服。遵循伊斯兰的人就称之为穆斯林(Muslims)。”

“神创造了世界,之后就创造了人。创造的第一个人是亚当。亚当的后代到了诺亚,他生了一个儿子名叫Shem(闪)。这就是Semite(闪族)这个字的由来;从字面上来看Semite是Shem的后裔。正如犹太人一样,阿拉伯人认为他们自己是Semite人。Shem的后裔传到亚伯拉罕(Abraham),到目前为止,我们仍然是在犹太教和基督教的传统中。
的确,正是亚伯拉罕在这个最重要的试探中的顺从——是否愿意牺牲他的儿子以撒?——为伊斯兰提供了它的名字。亚伯拉罕娶了撒拉。撒拉没有生子,因此亚伯拉罕为了延续后代,娶了夏甲做他的第二位妻子。夏甲为他生了一个儿子叫以实玛利(Ishmael),而此时撒拉怀孕了,也生了一个儿子,名叫以撒。然后撒拉就要求亚伯拉罕把以实玛利和夏甲赶出部族。此时我们来到《古兰经》与《圣经》描述之间的第一分歧点。按照《古兰经》,以实玛利就去了麦加。他的后代在阿拉伯地区繁生起来,成了穆斯林;而以撒的后代留在巴勒斯坦,是希伯来人,变成了犹太教徒。”

犹太教相关

如果我们想要更深刻地了解犹太教,我们已经到了必须停止进一步考察犹太人的观念,而要来看看犹太人实践的时候了。我们必须考察犹太人的仪式和戒律,因为一般都同意犹太教比较起来,不是一个思想正统,而是一个行为正统;犹太人得以结合起来,是通过他们的所作所为,远胜于通过他们的所思。一个证明是,犹太人从来没有颁布任何信教者必须接受的官方教条;另一方面,戒律例如男性的阉割礼,却是明确的。这种对实践的重视给予犹太教某种东方的味道;在西方,受到希腊对抽象理性爱好的影响,则重视神学和教条。在东方,则通过仪式和叙事来探讨宗教。差异是在抽象与具体之间。到底是柏拉图还是陀斯妥耶夫斯基更接近真实呢?爱到底是通过语言还是通过拥抱能够表达得更好呢?

关于仪式

“从狭隘理性的或功利的观点来看,仪式是无聊的,从任何角度来看它都觉得是浪费。”

“但是,虽然它有极大的专横性以及看似浪费,仪式在生命中所扮演的角色却不是任何别的东西可以填补的,这个角色并不只局限在宗教之内。比方,它可以让我们舒缓地度过紧张的局面和焦虑的时刻。有时候焦虑是温和的——在与人见面的时候,比方,我被介绍给一位陌生人,不知道他或她会如何反应,我不知道怎么做。我该说什么呢?我该怎么做呢?仪式掩盖了我的不安和别扭。它告诉我把手伸出去说“你好”或“很高兴见到你”。这样做的结果就在混乱中带来了形式。它应付了我需要了解如何举止的时刻。别扭过去了。我已恢复了我的平衡,而且准备尝试作比较自由的举止了。”

“死亡是尖锐的例子。被悲剧性的丧失亲友之痛所打击,如果我们只靠自己来想办法度过这个考验,我们会完全崩溃。这就是何以死亡要有葬礼和纪念仪式、守灵和坐湿婆,乃是最仪式化的跨越礼。”

“当我们受打击或者极端地欢乐时,不仅想要与他人同在,所用的方式还要使得交流的结果超过个别行为的总和——这样才能消减我们的孤独。这种行为并不仅仅限于人类。在泰国北部,当太阳最初照射树梢之际,长臂猿族集体用降半音的音阶哼唱着,手牵着手,在顶端的树枝猝降而过。”

“仪式——以准备好的歌谱来安排这一场合,在一个孤独令人不能忍受的时候,来疏导我们的行为和感受。在这过程中就柔化了受到的打击”

“在快乐的时候它能够加强快乐的经验,而把欢乐提升成为喜庆。这方面的例子是生日、结婚之喜,以及最简单的一顿家庭晚餐。在这一日最好的一餐饭中,或许这是一家人在一日中第一次轻松地聚在一起,饭前的祷告可以比赛跑的起点更重要。它能使这个场合神圣化。与沉重的负担相反,它神圣化了日常的欢乐。”

基督教相关

“基督徒之所以不受狮子的恐吓,甚至在进入斗兽场还歌唱着的原因,乃是因为耶稣的劝导“不必怕,因为我与你们同在”,对他们产生了作用。”

“信仰。信仰,在新教的概念中,并不单是指“相信”,亦即一种接受认为确定的知识却并没有建立在证据之上。”

原初宗教相关

“一位调查者与黑麋族(Black Elk)住了两年后报导说,依黑麋族人的主张,认为打猎“是”——黑麋族人没有说“代表”,报导者强调——生命所追求的最终真理;这项追求需要预备性的祈祷和献祭的洁礼。“辛勤追踪的行踪是所追逐的目标的信号和通知,最后与追踪对象的接触或认同就是真理的实现,是生命的最终目标。”

(这里让我想到敖鲁古雅使鹿鄂温克族生态移民的困境。)

最后的考察

““了解”能导致“爱”。反过来亦然,“爱”导致“了解”;两者是交互为用的。”

#religion

AirPods 第一代经过2年多,电池只能持续1分25秒了

订购日期:2017/02/08
送达日期:2017/03/24

经过了约2年多,续航时间只有大约1分25秒(右)和47分16秒(左)了。

今日 AirPods Pro 发布并于明日发售,是以记之。

#airpods

Upgrade Debian from 9 to 10

# sed -i 's/stretch/buster/g' /etc/apt/sources.list
# apt update
# apt-get upgrade
# apt-get dist-upgrade
# cat /etc/debian_version

#debian

iMac14,2 ubench

Model Name: iMac
Model Identifier: iMac14,2
Processor Name: Intel Core i5
Processor Speed: 3.2 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6 MB
Memory: 8 GB
Boot ROM Version: IM142.0130.B00
SMC Version (system): 2.15f7

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
Darwin 18.0.0 Darwin Kernel Version 18.0.0: Wed Aug 22 20:13:40 PDT 2018; root:xnu-4903.201.2~1/RELEASE_X86_64 x86_64
Ubench CPU: 2000384
Ubench MEM: 1414788
——————–
Ubench AVG: 1707586

#imac, #intel-core-i5, #ubench

利用 MySQL 自增列生成订单号

在 MySQL 里创建一个带有自增列的表,使用 MEMORY ENGINE 存储即可。
利用时间生成字符串,后面再加上自增列生成的数字,根据业务容量仅取最后几位,示例代码仅取后4位。

<?php
namespace app\api\service;

/**
 * CREATE TABLE IF NOT EXISTS `order_id_seq` (
 *     id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
 *     PRIMARY KEY (`id`)
 * ) ENGINE=MEMORY AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
 */
class OrderIdService {

    /**
     * Returns next order ID.
     *
     * @return string
     */
    public function nextId() {
        $seq = $this->nextSeq();
        $id = date('YmdHis') . sprintf('%04d', $seq % 10000);
        return $id;
    }

    /**
     * Returns next sequence number.
     *
     * @return number
     */
    private function nextSeq() {
        $db = \think\Db::connect('db_platform');
        $seq = $db->table('order_id_seq')->insertGetId(['id' => 0]);
        $db->table('order_id_seq')->where('id', $seq)->delete();
        return $seq;
    }

}

MacBook10,1 ubench

Model Name: MacBook
Model Identifier: MacBook10,1
Processor Name: Intel Core i7
Processor Speed: 1.4 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 4 MB
Memory: 16 GB
Boot ROM Version: MB101.0161.B00
SMC Version (system): 2.42f10

Unix Benchmark Utility v.0.3
Copyright (C) July, 1999 PhysTech, Inc.
Author: Sergei Viznyuk
http://www.phystech.com/download/ubench.html
Darwin 17.6.0 Darwin Kernel Version 17.6.0: Tue May 8 15:22:16 PDT 2018; root:xnu-4570.61.1~1/RELEASE_X86_64 x86_64
Ubench CPU: 1282985
Ubench MEM: 648806
——————–
Ubench AVG: 965895

#intel-core-m-processor-speed, #macbook, #ubench

FreeBSD driver for USB Ethernet adapter

# uname -sr
FreeBSD 11.1-STABLE

# usbconfig
ugen6.2:  <Realtek USB 101001000 LAN> at usbus6, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA)

# usbconfig dump_device_desc
...
ugen6.2:  <Realtek USB 101001000 LAN> at usbus6, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0210
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x0bda
  idProduct = 0x8153
  bcdDevice = 0x3000
  iManufacturer = 0x0001  <Realtek>
  iProduct = 0x0002  <USB 10/100/1000 LAN>
  iSerialNumber = 0x0006 <000001>
  bNumConfigurations = 0x0002
...

# kldload if_cdce

# ifconfig ue0
ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
...

#freebsd, #if_cdce

使用 dnsmasq 和 dnscrypt 构建一个干净的域名服务器

unbound+dnsmasq+dnscrypt

  • unbound:由于 dnsmasq 的性能可能较为低下,因此增加 unbound 作为缓存。
  • dnsmasq:通过规则将 gfwlist 内的域名的解析转发给 dnscrypt 来处理。
  • dnscrypt:穿越防火墙向 dnscrypt resolver 请求域名解析。

本文实验所使用的软件和版本

  • FreeBSD 11.1-RELEASE-p4
  • ezjail-3.4.2
  • dnscrypt-proxy-1.9.5_3
  • dnsmasq-2.78,1
  • unbound-1.6.8
  • bind-tools-9.11.2P1


使用了 ezjail 来管理 jails,dnscrypt(IP: 192.168.0.3)、dnsmasq(IP: 192.168.0.4)、unbound(IP: 192.168.0.5) 分别安装于独立的 jail 中。
bind-tools 提供了一组 DNS 工具,比如 nslookup、dig 等可用于测试。

dnscrypt 的安装与配置

pkg install dnscrypt-proxy
sysrc dnscrypt_proxy_enable=”YES”
sysrc dnscrypt_proxy_resolver=”ipredator”
service dnscrypt-proxy start

更多的 dnscrypt resolvers 可以从 /usr/local/share/dnscrypt-proxy/dnscrypt-resolvers.csv 里找到。

dnsmasq 的安装与配置

pkg install dnsmasq
sysrc dnsmasq_enable=”YES”
service dnsmasq start

修改 /usr/local/etc/dnsmasq.conf 确保其包含了下面的配置:

conf-dir=/usr/local/etc/dnsmasq.d/,*.conf

使用 gfwlist2dnsmasq.awk 定时更新 /usr/local/etc/dnsmasq.d/gfwlist.conf。在 /etc/crontab 里添加:

30      2       *       *       *       root    /usr/local/bin/gfwlist2dnsmasq.sh -h 192.168.0.3 -p 53 -S -u /usr/local/etc/user_rule.txt > /dev/null 2>&1

unbound 的安装与配置

pkg install unbound
sysrc unbound_enable=”YES”
service unbound start

/usr/local/etc/unbound/unbound.conf 内相应的位置添加如下配置:

	access-control: 0.0.0.0/0 allow
forward-zone:
	name: .
	forward-addr: 192.168.0.4

修改后的配置文件的差异如下:

root@unbound:~ # diff -ruN /usr/local/etc/unbound/unbound.conf.sample /usr/local/etc/unbound/unbound.conf
--- /usr/local/etc/unbound/unbound.conf.sample  2018-01-20 01:09:20.000000000 +0000
+++ /usr/local/etc/unbound/unbound.conf 2018-02-10 03:09:24.140462000 +0000
@@ -231,6 +231,7 @@
        # access-control: ::0/0 refuse
        # access-control: ::1 allow
        # access-control: ::ffff:127.0.0.1 allow
+       access-control: 0.0.0.0/0 allow
 
        # tag access-control with list of tags (in "" with spaces between)
        # Clients using this access control element use localzones that
@@ -807,6 +808,9 @@
 # forward-zone:
 #      name: "example.org"
 #      forward-host: fwd.example.com
+forward-zone:
+       name: .
+       forward-addr: 192.168.0.4
 
 # Views
 # Create named views. Name must be unique. Map views to requests using

pf 的配置

转发到外部 IP 地址端口 53 的请求到 unbound 的 jail,示例配置:

rdr pass on $ext_if proto tcp from any to $ext_ip port 53 -> 192.168.0.5
rdr pass on $ext_if proto udp from any to $ext_ip port 53 -> 192.168.0.5

测试

dig +short @192.168.0.5 www.google.com
216.58.207.196

参考

#dnscrypt, #dnsmasq, #ezjail, #freebsd, #gfwlist2dnsmasq-awk, #pf, #unbound