果然,年纪大了,还是改不了爱折腾的毛病。

最近又折腾一下博客的站点,想做一下压力测试,结果不测不知道,一测吓一跳,之前默认wordpress的docker镜像(apache)简直就是渣渣,我从azure云上,打了100来个并发请求,然后mysql就崩了,最严重甚至把docker搞崩了,无奈整个docker服务重启才行,于是前几天晚上熬夜改成wordpress-php-fpm+nginx的架构,150/160的并发没问题,200以上的并发只会暂时性连接失败,不会导致mysql崩掉,果然nginx是神器啊。。。

后来又不满足,看到cloudflare提供免费cdn,于是乎试了一把,果然海外加速效果明显,首页大概1M多,加载速度快了好久,原来我以为cdn配置超复杂,后来才发现都是傻瓜化操作。但是昨天开组会突然发现,连着国内学校的vpn居然访问不了自己的博客,这才意识到cloudflare可能并不靠谱,然后果断弃cloudflare,老老实实用vps吧,反正流量又不大。

继续阅读

最近想着给wordpress的docker搞增量备份,但是mac的tar的感觉就是阉割版的,不支持-g参数,同样,mac下很多命令跟linux还是有区别的,因此首先需要解决tar的问题。于是从GNU的网站下面(链接)下tar的源码来编译,不用说,照例

./configure
make

还好一切顺利,找到编译好的tar二进制包,为避免跟系统的tar冲突,影响其它功能,把这个tar改名为gnutar,试验了一下,支持-g参数,为了保证每次备份的文件名不一样,所以用时间分开。

继续阅读

前几天,突发奇想,想在左边的widget里面加一个世界时钟,显示不同时区的时间。说干就干,大致思路如下,首先取得标准时间的unix时间戳,然后把标准时间戳传递给js脚本,js计算本机时间戳与标准时间戳的差值,然后再补上差值进行显示。乍一看上还挺简单,但是一旦考虑细节就很麻烦了。

1、时区问题,js里面getDate(),getDay()…等等一系列时间函数都是本机时区的时间,而我需要的是不随时区改变的结果。因此只能以UTC时间为准,直接在时间戳上加上时区的差值,举个例子,北京时间=UTC(Timetamp)+3600*8s,得到一个假的UTC时间(实际上是某一个时区的时间),再用getUTCDate(),getUTCDay()…取得当地时间,输出给js显示。

2、夏令时问题,在美国有着美国特色的夏令时,在某一特殊日子(2019年是11月3日凌晨2点),时钟回拨一小时,此时,纽约的UTC-4就会变成UTC-5了,因此需要判断是否夏令时,而我在javascript里找了一圈,都没有合适判断夏令时的函数,而PHP里有一个函数date(‘I’,$unix_timestamp),在设置完默认时区后,判断该时区是否是夏令时,返回1是夏令时,返回0时是冬令时。因此这里时区换算用PHP来做,js只用来计算时间差,并显示时间。

3、下面就是行动了,我找到了一个可以获取标准时间的php代码(链接),又找到了感觉自己能驾驭的,简单的canvas钟表的代码(链接),然后就把他们组装到一起,就可以啦。

4、大概搞好后,在HiDPI的设备会出现显示模糊的问题,我起初以为是canvas的原因,甚至打算换成svg,折腾到最后,才发现有现成的解决方案(链接),站在前人的肩膀上,终于调好了代码。

做好的成果如下(本机运行下,因为无法运行ntptime.php,所以显示本机的utc时间),我也懒得解释代码了^_^。