分类
开发者

WP app文章发布失败的问题

莫名其妙的最近发现手机上的wordpress app无法发布文章了,其他功能都完好:更新、从草稿箱发布等。但是无法保存草稿或者发布新文章。

查了一大圈,有说xml rpc的问题的,有说REST API的问题的,又是改代码又是搞插件都没有解决。

最终参考这个链接,从wordpress.com上删除了application后在手机上重新登录wordpress.com的账号后居然神奇的就解决了,amazing以为记

分类
开发者

WordPress on docker issue

原wp是在主机A上的docker里的容器,后迁移到主机B上。迁移方式为直接 scp 挂在的本地目录。

迁移过去后访问域名显示 “Unable to create a file in the directory! Please check your server settings.“

参考救命稻草 stackoverflow解决问题:WordPress on Docker: Could not create directory on mounted volume – Stack Overflow

经过验证,重点是(在容器内:不一定)执行如下两句:

RUN find /var/www/ -type d -exec chmod 0755 {} \;
RUN find /var/www/ -type f -exec chmod 644 {} \;

分类
开发者

WordPress启用SSL后的问题

注意:我的服务器配置是docker上的nginx 和 docker 上的wordpress,所以其他情况不一定适用。

我的域名是在阿里云注册的,直接使用阿里云提供的免费的ssl证书,按照手册生成证书,上传到服务器,修改nginx的配置文件。注意,nginx如果没有预留443端口,可能需要rm掉重新添加个容器。

重启ngxin后发现只有首页启用了https并且主题都没了,而且不是全站https。网上找了一些教程改来改去,一会儿too many redirects,一会儿502/404/500错误。

经过半天测试发现两个关键的修改点(不要修改.htaccess文件):


1. nginx的配置文件中的 listen 80那个server 修改为:

server {
     listen 80;
     server_name domain2.com www.domain2.com;
     return 301 https://$server_name$request_uri;
 }

2. 在wp-config.php的行首添加如下四行,其他任何多余的都不要改了:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_CONTENT', true);

分类
开发者

比较老的Mac如何重装系统

手上有个2011年的MacBook Air,要给妹妹上网课用,想着恢复一下出厂设置。重新安装一下系统再给她。结果没想到试了好久都是提示 “can’t download the additional components needed to install Mac OSX” (“无法下载安装 Mac OS X 所需的其他组件“)。

苹果官网有关于创建U盘启动器的手册:https://support.apple.com/zh-cn/HT201372。 当我按照手册指示试图从另一台安装了macOS Catalina的电脑上下载macOS High Sierra时,却提示“所请求的macOS版本不可用”。看来该方法无法在高版本的macOS上使用。

最终通过v2ex上一位网友的帖子,找到了绕过app store下载macOS的方法。详见:https://www.v2ex.com/t/575410

如果制作好启动U盘后,插入启动却发现看不到电脑硬盘,只能看到启动U盘。这种情况是因为在抹掉磁盘创建分区的时候没有选择GUID分区图,切记切记。而如果较老的Mac发布时预装的是High Sierra之前的系统:如我的11年MBA预装的是OS X Lion。此时如果抹掉磁盘后,按command+r进入恢复系统时,试图加载的是Lion的系统,而磁盘工具也是Lion的。由于Lion已经不再维护,肯定是无法升级的。此时应该使用command+option+r,进入“最新兼容的系统恢复”即 High Sierra,使用其磁盘工具重新抹掉磁盘的时候,可以看到GUID分区的选项。勾选后抹掉磁盘,使用之前做的High Sierra启动优盘即可成功安装系统了。

简言之,旧Mac抹掉重装要注意如下几点:
1. 使用command+option+r的磁盘工具抹掉磁盘,记得勾选GUID分区 //不要用command+r
2. 如果无法网络安装,可以使用脚本绕过app store下载macOS

分类
开发者

An neglectful issue of gRPC(protobuf)

在使用gRPC在C和Python之间传输二进制数据的时候发现,明明客户端发送的都是等长的二进制bytes,服务端收到的却是长短不一的bytearray。

基于对著名框架的信赖,只考虑可能输入数据的问题。浪费了一天时间后突然意识到也没有可能是本身通讯框架的问题?

用谷歌检索了英文网站发现果然有人提到了类似的情况:https://stackoverflow.com/questions/47373976/why-is-my-protobuf-message-in-python-ignoring-zero-values,即 “0” 被忽略了!

也就是说如果一个10 bytes长的字节流是 0123456789 (此处为简单理解,对二进制数据使用十进制表示法),那么只能收到 123456789。如果0出现在首尾还好说,如果出现在中间那就彻底破坏了二进制流的结构。尽管protobuf解释了自己这样设计的缘由是为了节省通讯资源,但是为了解决这个问题,我不得不使用更多的资源……因为我需要将二进制的bytes转写成string,反而增加了数据量。

由于对gRPC的涉猎较浅,不确定该问题是否有更通用的解决方法,如果对该问题有了解,欢迎指正。