乌合之众
周末终于挣扎着看完了勒庞写的《乌合之众》,一本言过其实的书。基本观点无非就是:群体会弱智化,即使这个群体是由精英组成。相比之下,大前研一的作品思考更深入、也更广泛一些,我更喜欢大前研一的书。
由于基本观点是群体性弱智,因此顺势就能推导出议会制的无效和荒谬。作者显然也意识到这点,因此最后一点章节又费力地硬拗,看得实在是替作者尴尬。
还是鲁迅说得对:看书就应该看二十年前,甚至一百年前的书。
周末终于挣扎着看完了勒庞写的《乌合之众》,一本言过其实的书。基本观点无非就是:群体会弱智化,即使这个群体是由精英组成。相比之下,大前研一的作品思考更深入、也更广泛一些,我更喜欢大前研一的书。
由于基本观点是群体性弱智,因此顺势就能推导出议会制的无效和荒谬。作者显然也意识到这点,因此最后一点章节又费力地硬拗,看得实在是替作者尴尬。
还是鲁迅说得对:看书就应该看二十年前,甚至一百年前的书。
默认情况下,SSH服务器会启用各种尽可能的加密算法,其中包含一些很弱的加密算法,这确保了客户端广泛的接入,但是的确会引入一些风险。企业环境中设备是可控的,因此可以去掉弱加密算法而只保留特定的强加密算法。
Linux环境中查询以下帮助,可以了解包含算法在内的各项配置信息:
man 5 sshd_config
修改/etc/ssh/sshd_config文件,指定Ciphers采用强加密算法即可,例如,将下列语句直接加入到该文件后面:
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes256-cbc
当然,最后要重启ssh服务才能使配置生效。
基本上两篇RFC文档是传承的关系,RFC7463场景应用比RFC4235要详细很多,一些旧的SIP设备未必支持7463。
在兼容性方面,对于SIP-SUBSCRIBE消息,两篇RFC文档采用了不同的Event,rfc4235中定义“dialog”,而rfc7463中定义“dialog;shared”。rfc4235限定在只订阅SIP呼叫对话的状态,因此在dialog-info中,要求必须填充dialog元素,其中就包含call-id,remote-tag以及local-tag等典型呼叫参数。
而rfc7463不仅仅是关注呼叫,更关注“状态呈现”,因此凡是与“状态”相关的消息,都尽量进行了定义。比如在“11.1. Registration and Subscription”章节中,就定义了终端注册的状态呈现。在注册流程中,就没有dialog的信息。
呈现信息多,对用户当然有好处,对VoIP系统也很有意义,尤其是在企业应用场景中。但是需要注意的是这也大大增加了VoIP系统的负荷,实际部署中要慎重考虑。
与往年有个显著的不同:需要到交警的网站上先预约,包括时间和年审地点等。我不知道这个变化,直接开车到年审地点,幸亏现场车不多,于是在一位工作人员的帮助下,现场扫描二维码预约,当时就给办理。明年估计车辆会比较多,需要提前做好预约。
事先检查交通违约情况,有的话赶紧先处理掉。
年审需要携带的资料包括:(1)汽车行驶证(2)身份证。这次没检查我的交强险保单,似乎电脑里已经联网检查了。现场看到有些人提交了交强险保单,不知道是什么情况。建议还是带上交强险保单。今年费用是230元。
检查似乎比以前严格了,比如要求打开汽车前盖进行检查。我以前从来没打开过前盖,不知道怎么操作,现场一度手忙脚乱,后来也是在工作人员的帮助下打开的。
今年很赞的是:检查完后十分钟即可拿到新证件,往年一般要到下午或者第二天才能拿到。另外,不再发单独的绿标,只有一个年检通过的标。
看到一个redis新版本发布的新闻,注意到其中的内存管理采用了jemalloc,替代标准gcc中的malloc。搜索了相关的信息,感觉jemalloc是个相当不错的内存管理模块,尤其在碎片化管理方面很吸引人。作为需要长期运行的服务器软件,内存管理方面的确是需要慎重考虑,jemalloc 有facebook这样的大厂支持,又有redis做背书,值得我们尝试。
在Debian系统中可以直接安装jemalloc的dev库:
sudo apt install libjemalloc-dev
安装后,头文件在以下目录:
/usr/include/jemalloc
库文件在以下目录(X86系统):
/usr/lib/x86_64-linux-gnu
或者以下目录(Raspberry Pi):
/usr/lib/arm-linux-gnueabihf
这两天费了老大劲查一个linux系统下的问题,最终查出了原因,其中用到一些日常不太使用的命令,记录一下,以免以后忘记。
strace -e trace=write -p 1234
这个命令是获取进程(进程ID是1234)的输出信息。
cd /proc/1234/fd
ls | wc -l
检查进程1234打开的句柄数。
perror 24
显示errno的提示信息。上述例子显示“errno=24”时的具体提示信息。
ulimit -a
检查用户的各项资源配置,比如句柄数、进程数等。通常这些资源数配置在 /etc/security/limits.conf 文件中。
uname -a
查询内核版本。
另外,Debian 7是在tty7上启动xwindows,而初始信息是输出到tty1上,用组合键 Ctrl+Alt+F1/F7 即可进行切换。
在表中对多个列建立联合索引,比如(a, b, c),这种情况下实际建立了三个索引:
因此,如果对b或者c列进行查询,就需要另外建立索引进行优化。当然,不是索引越多越好,毕竟对插入、更新数据(实际也就是I/O)会有影响。
过往在升级Debian (Testing版本)时,总是以root身份进行操作,例如:
apt update apt upgrade
最近使用同样的命令升级时,总是提示错误,意思大约是“找不到ldconfig”文件或者无权执行。这是很奇怪的问题,毕竟当前用户是root,而且ldconfig显然就在‘/sbin’目录下,肉眼可见。
检查了root用户的env,发现Path的设置为:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
确实没有包含‘/sbin’目录,因此root用户的确无法直接执行ldconfig命令。再次检查‘/etc/profile’文件,在路径设置时进行了以下判断:
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" fi
当然,可以直接修改该文件,或者修改root用户的.bashrc文件,将’/sbin’目录将入路径当中。
然而根据profile文件的判断条件,也可以不做任何修改,只是执行命令时,加上‘sudo’即可。例如上述更新命令修改为:
sudo apt upgrade