分类
生活记录

买了一副羽毛球拍

今天,有两件好的事情值得记录一下。

第一件事情,胸前的带状疱疹要好了,剩下的是毛囊炎,抹点药膏就好了。

第二件事情,给儿子买了一副羽毛球拍。这件事情是昨天答应儿子的,说到做到,今天就去买了。

感觉买羽毛球拍这件事情比较有意义,既能锻炼身体,又可以培养一种兴趣爱好,没事的时候,和孩子一起打打羽毛球,还能增进亲子感情,我们大人也可以打一打活动一下,真是一举多得。

再说一说带状疱疹这事。前段时间胸前起了几个小小的疙瘩,去皮防站问了一下,说是带状疱疹(虽然到现在我也比较怀疑到底是不是),是由于免疫力降低引起的。于是就按医生的办法进行治疗,吃药、抹药。今天去看,说没事了,剩下的就是带状疱疹的地方有毛囊炎,然后给开了一管药膏就回来了,其实我也是将信将疑,但没办法,谁让咱不懂呢,就按医生的办法来吧。

说实话,这么多年来,一直都没有把锻炼身体当回事,都是一直在心里想,但却没有实际行动。随着年龄的增加,是时候该去锻炼身体了,不要等到身体出状况的时候,再去后悔就晚了。

分类
WordPress

去掉WordPress5.4仪表盘中站点健康状态面板

昨天升级到WordPress5.4,发现仪表盘中新增了“站点健康状态”面板,如果不想要,可以这样去掉,在functions.php里添加以下代码:

// 从仪表盘中去掉相关面板
function remove_dashboard_meta() {    
    remove_meta_box( 'dashboard_primary', 'dashboard', 'side' ); // 去掉wordpress活动及新闻
    remove_meta_box( 'dashboard_site_health', 'dashboard', 'side' );  // 去掉站点健康状态
}
add_action( 'admin_init', 'remove_dashboard_meta' );
分类
生活记录

博客升级至WordPress5.4

刚刚在给客户做网站,在刷新后台页面时提示有更新。然后打开看了下,发现是WordPress5.4发布了。

于是就打开我的博客,然后开始升级,升级过程十分顺利,一键完成。自带的2020年默认主题也升级到了1.2版本。升级后,古腾堡区块编辑器使用上感觉更细腻、更顺手了,其它倒没感觉到什么特别的变化 。2020主题1.2版本也没什么视觉上的变化。

由于主题没做什么改动,所以可以直接升级。一些小调整使用的是“额外CSS”来添加的,所以不受影响。就是Google统计需要在页脚重新添加一次,不知道有没有一劳永逸的办法可以解决这个问题。

postscript:刚才在编辑文章的时候,发现剪切后再粘贴,被粘贴的字两边已经没有空格了,在上一个版本中,每次粘贴后都要手动把两边的空格去掉,看来这个BUG已经修复。

分类
Laravel

Laravel 从反向代理获取真实IP地址

本文针对Laravel7.3.0测试通过。

背景:由于使用了反向代理,导致Laravel在获取客户端的IP地址时,错误的获取到了反向代理服务器的IP地址,而非真实客户端IP地址。此问题的解决方案如下:

打开 app/Http/Middleware/TrustProxies.php

protected $proxies;
改为
protected $proxies = '*';

获取IP地址使用Laravel自带的函数:request()->ip();

要注意 Nginx 反向代理的location部分要做如下配置:

location / {
	proxy_pass http://qd-aliyun-8002;
	proxy_redirect default;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Real-Port $remote_port;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_set_header X-Forwarded-Port  $server_port;
	proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
}
分类
生活记录

做了个搬瓦工库存监控

这个想法已经在我的to do list里面存在了有一段时间了,一直没有去做这件事情,昨天又突然看到了,于是顺手就注册了域名 bwgstock.com,然后就开始了敲码的过程。

整个开发过程还是很顺利的,没遇到什么问题。这个项目分两个部分,一个是采集程序,用来定时采集搬瓦工官方的库存数据;另一个就是网站了。网站采用的是Laravel框架+MySQL,这个也没啥,就是把采集到的数据展示出来就可以了。

从注册域名到完成,不过一天的时间。实现了这个想法之后,却突然不知道后面应该干啥了,应该怎么推广,或者挂在网上,让它自生自灭?但是又一想,这毕竟只是一个玩票性质的项目,没必要投入太多的精力去做这个。先这么挂着吧,挂上一年看看能否赚回本钱(域名55元)。

分类
SQL Server

我为什么选择SQL Server 2014 SP3

背景:

最近部署了一台Windows服务器,由于要安装微软的SQL Server数据库,不知道选择哪个版本好,所以有了这篇文章。

通过最近几天的思考查阅,我认为应该尽量选择SQL Server 2014 SP3。

原因:

  • 支持Windows Server 2008 R2,这是能支持WIN2008 R2的最高版本。完整的OS支持列表如下:
    Windows 10, Windows 8.1, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2012 R2
  • 现在很多服务器都还是Windows Server 2008 R2,所以支持这个操作系统很重要。
  • 已经到了SP3,SP3于2018/10/30发布,稳定性和性能优化已经非常好,并且有很多大型成功案例,可以稳稳的使用。 注意:SP3是积累更新包,包括了以前的所有更新,只要打SP3就可以了,打完后的版本应该是12.0.6024.0。
  • SQL Srever 2014 还修复了 2012版本的“自增ID不连续”问题,在SQL Server 2012 (包括SP4)中,每当数据库服务重启或重启机器时,自增ID就会间隔1000,这个问题在最新的SP4中仍存在。虽然可以通过加入启动参数 -T272解决,但感觉这并不是最好的方案,加入这个启动参数相当于回到了SQL Server 2008的自增ID处理方式,没有新版本的优势了

综上,所以要选择SQL SERVER2014 SP3版本,最好搭配 Windows Server 2012。以后做项目,尽量给客户推荐这个组合。

先用上几年再说,以后如果有条件,可以升级到Windows Server 2016 + SQL Server 2016的组合。

如果你也有同样的困扰,可以参考。

分类
生活记录

春天到了

不知不觉,已经是春天了。

昨天出去,突然间发现小草都已经长的很高了,翠绿的叶子尽情的伸展着,仿佛在向这个世界宣誓着它那幼小而顽强的生命。是啊,对于一棵小草来说,生命一年只有一次,它当然要尽可能的抓住这仅有的一次生命绽放的机会。

春天不知不觉的来临,我也要有所行动了,一年之际在于春,不能浪费了大好的时光。小草犹如此,人何以堪?

分类
生活记录

解决OneNote无法删除最近笔记本列表的问题

最近发现一个问题,就是OneNote的“最近的笔记本列表”里的笔记本删除不掉,不管做什么操作,都没有任何反应。就是下图这个地方:

红框里的最近打开的笔记本列表删除不掉,这张图是删除之后截取的。

昨夜睡不着觉,突发奇想,意识到删除不掉的笔记本都是存在以前的文件夹里的。由于我的OneNote在OneDrive里存放的位置改过一次路径,是不是由于改路径引起的这个问题呢?

起床吃过早饭之后,打开电脑,开始验证我的想法:如果我的想法是对的,那么只要还原笔记本的路径和名字,就应该可以删除了。

于是,我在OneDrive里面新建了一个和原一样的路径,并且新建了几个和原来相同名字的空笔记本,一比一复现了原来的路径结构。建完之后再去删除,果然可以删除掉了!!

总结:以后要更改OneNote的存放路径或文件夹,一定要先把“最近打开的笔记本”列表清空,再做变更路径的操作。

分类
Web

HSTS引发子域名HTTP强制跳转HTTPS

由于当前这台服务器带宽和流量比较充足,CN2线路质量还算可以,所以打算建一个子域名,专门用来中转下载。

域名使用的是本站的一个二级域名,但是建好后,却发现子域名始终强制跳转到https协议。经过排查和查询资料,发现原来是HSTS(HTTP Strict Transport Security)在作怪。当初在配置本站的ssl证书时,在nginx配置中加了这样一句话:

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

这句话在http响应头中添加一条Strict-Transport-Security信息,意思是告诉浏览器当前网站支持HSTS,即当使用HTTP协议访问本站时,将强制跳转到HTTPS协议。对于chrome浏览器来说,当发现网站支持HSTS时,会把这个域名加入浏览器内部维护的一个支持HSTS的网站列表中。这样,第二次使用HTTP访问这个网站时,将不经过服务器跳转,而是直接通过浏览器进行跳转,跳转的HTTP状态码是307。查询资料得知,这种跳转比301和302跳转更安全,而且由于少了一次服务器请求,还可以减轻服务器的压力。

很明显,在这个配置中includeSubDomains的意思是对子域名也进行跳转,所以才会出现新部署的子域名强制跳转HTTPS的问题。

找到了原因之后,本来想去掉includeSubDomains这一项,但一想,去掉之后,就只有裸域可以使用HSTS跳转了,对于www还是要用301跳转,不如干脆全部使用301好了。所以就禁用掉了主站的HSTS。在add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";前面加#注释掉。

禁用之后,清空浏览器缓存,刷新网站,果然可以了。只有主站使用301跳转HTTPS协议,子站仍然可以使用HTTP协议,问题解决。

补充知识:

chrome浏览器可以通过chrome://net-internals/#hsts页面的Query Expect-CT domain这一项来查询某网站是否被加入了chrome内部的HSTS网站列表。如果想删除,可以通过最下面的Delete domain security policies这一项来删除,输入域名,然后点击Delete按钮就好了。如下图:

chrome浏览器的HSTS配置页面
分类
生活记录

在V2EX上接了一单

昨天没事闲看V2EX,偶然间发现有人发了一个“送钱改MFC程序”的帖子,大体看了下应该可以做,于是就加了发帖人的微信,联系上了。

做的过程还算顺利,本来想利用厂家提供的SDK,参考厂家的DEMO重新写个,但无奈厂家的文档不怎么详细,遇到个断线的问题折腾了2个小时也没解决。最后和发帖人协商,直接在厂家DEMO上修改,最后才实现了功能。从开始沟通到做完,加上吃饭的时间,一共用了9个多小时。

做完的时候,邀请了发帖人远程观看演示,看完之后,对方就直接给我打钱了。最后又按对方提供的数据库表结构,调整了一下写数据库的代码,就算完成了。

从沟通到交付,整个过程都很愉快。


下面简单记录一下关键点:

关于MFC操作MySQL,一开始想使用MySQL官方提供的C++ API接口,但是怎么尝试都没有成功。Connector/C++ 8.0.19是用于连接MySQL8的,我下载的Connector/C++ 1.1.13这个版本竟然还需要boost库。最后下载了Connector/C++ 1.0.5,这个可以用,但是程序运行的时候提示缺少libmysql.dll,到MySQL安装目录下找了一个,结果打开程序直接崩溃。最后无奈之下,下载了Connector/ODBC 5.3.14,因为程序是32位,一开始装了32位的ODBC驱动,结果安装失败,又下载了64位ODBC驱动才行。配置好之后,又查了一下MFC使用ODBC操作数据库,竟然十分简单。

总结:MFC操作MySQL,直接使用ODBC,简单方便省时省力。

由于多年不做C++/MFC开发了,没想到做起还是可以,感觉又有了当年的激情。