代码

关于编程的技术,包括Autolisp,JavaScript、CSS、PHP、Python 等。

阿里云+宝塔+WordPress避坑记录

写在前面

随着云服务器的价格越来越亲民,越来越多的博客爱好者希望通过架设自己的服务器,以便拥有更加自由的操作空间和更加灵活地主机配置。但是,购入了一台云服务器就相当于自己架设了一台网络主机,涉及到关于主机系统的安装和维护,这些工作对小白用户非常的不友好,甚至对专业用户来说,也是非常浪费时间和精力的。如果只是想架设一个Wordpress博客或者其他网站,安装一个主机面板是一个非常好的选择。

首先,说说我的主机,作为业余爱好者,主机稳定、便宜为最好,阿里云时常便宜到啥程度呢?我感觉每年主机花费在千元左右都是可以接受的,这还是虚拟主机的情况下,几百块的虚拟主机我学生时代也用过,连存储空间都不够。现在的阿里云ECS有时候几百块一年,甚至便宜到一、二百一年,这简直是做慈善啊。

当然,国际版正常情况下好像没这么便宜,国内线路主机需要域名备案。代价是抽出一点时间来配合阿里云的流程,好处是国内主机速度要好很多。

准备工作

一台云服务器,下载宝塔面板(免费的),WordPress主程序(或者你需要迁移的文件和数据),一点耐心。

第一步 配置云主机

云主机配置不写了,都是简单操作。

这里说一下aliyun的营销问题,刚购买完相关产品,营销电话救过来了,还冒充技术人员,我交流了两句,发现技术一窍不通,然后拼命让我买其他产品什么的。

千万别信这个,他们根本就不了解你的需求,配置还是量力而为

我除了ECS最低配的主机之外,仅激活了弹性公网IP,而且是后付费的,用多少交多少,一般个人博客的流量远用不着包年或包月(大牛博客例外)。

第二步 安装宝塔

根据宝塔面板官方的安装说明操作即可。

注意:

  1. 关于主机的最低要求,官方最新版6.X的要求,内存512m以上,经我亲测,主机内存至少1G以上。否则就算安装面板没有出现问题,后续安装pHp7.0以上版本时,也会报错,安装进程直接被kill了。
  2. aliyun安装完成宝塔面板后,第一件事就是该云主机安全策略。这里的安全策略说白了就是端口配置,把宝塔需要开通的端口都开通就行了。ssh,ftp,phpmyadmin这些都有特殊的端口,宝塔面板自身也有8888端口需要使用。我配置成功后基本端口如图1:
  3. 安装宝塔完成后的所有用户名和密码,都要保存好,自动生成的登录地址和用户名密码都很复杂,肯定记不住。
图1:阿里云ECS宝塔面板端口配置图

第三步 配置宝塔运行环境,安装拓展

第一次打开宝塔会提示安装一键包,有LNMP和LAMP两种选择,个人习惯apache,选择后者。

安装完毕后可以安装不同版本的php、Mysql,还需要独立安装ftp服务方便上传文件,其他的拓展视情况安装。

注意:

  1. php7.0以上版本我安装的时候出现了杀进程的状态,因为主机的内存太低了,512m肯定不够用,升级1G内存就正常了。
  2. 建议先在程序管理里面先卸载Memcached服务,如果不在这里先先卸载,在php扩展管理里面安装Memcache会报错。这个应该是bug。

第四步 安装/迁移Wordpress

新安装WP实在没啥可说的,已经傻瓜化了。

迁移就涉及到比较多的问题,我主要遇到的问题是数据库导入的事情,我原来的数据库是UTF8mb4格式的,导入的时候没有注意,选择了UTF8格式,结果文章内容全都导入失败,这一点千万注意。关于两种格式的区别和关系请自行百度。

此外,宝塔也自带了SSl功能,一件启用很好用。建议开启宝塔自带的图片防盗链功能,节省流量。

第五步 WordPress加速问题

根据大牛们的测试,wp开启Memcached+Batcache加速功能会极大的提高运行速度,降低主机负载。这个过程中涉及到安装Memcached拓展的问题,这里再一次重点提示一下,宝塔面板里需要先卸载程序里面的Memcached扩展,然后再进入php的扩展模块进行安装才能够安装成功。

我利用我爱水煮鱼大神的wpjam-basic插件开启了Memcached功能,然后,又安装了wp-super-cache插件。后者似乎自带了Batcache功能。两者配合使用,使网站确实加速了不少。

这里有个坑要注意:如果同时在宝塔里安装了两个WP站点,即两个域名指向同一个弹性公网IP的情况下,两个网站的数据库前缀名不能够相同,例如:默认安装两个站点数据库前缀都是“wp_”,这种情况下启用Memcached相关服务会产生问题,可以改为自己喜欢的例如“wpfxp_”或其他。

此外,我还顺便对我的主题上的图片使用了lazyload技术,配合Masonry布局和ajax加载,使网站整体上感觉很操作比较流畅。有时间也想写篇文章讲一下Lazyload+masonry+ajax这三个功能的整合问题。

写在最后

这篇文章简单记录了我在整个过程中遇到的坑,其实都不是什么大问题,更详细的安装教程网络上一搜一大片,我就不复制粘贴了,没啥意思。只给要入手的同学提供一个壁坑记录,仅供参考。


宝塔一键全能管理服务器,1分钱体验525.6元的插件,还有专业版奖励,立即一起来组队https://www.bt.cn/team.html?MTI0NjYweno=

巧用MacroDroid及Auto.js实现DingDing自动打卡


​先甩锅:本操作属于试验性质,不建议在实际工作和生活中使用;另外,方法很简单,高手请绕行,且此方法仅适用于能够开启自动打卡,且不需要刷脸打卡的组织;再者,此方法需要一个旧的Root过的Android手机,没有也可以关闭页面了。


​钉钉打卡是一项普通员工人见人厌的万恶软件,作为人生赢家的老板们却很乐于使用它。于是,在长期的控制与被控制的博弈和斗争过程中,发生过很多可歌可泣的感人故事。然而,很遗憾的是,到目前为止,曾经成功欺骗过软件的各种方法,大多数都已经宣布阵亡了。钉钉软件的超强防作弊能力,令很多仁人志士都望而却步。

今天我说的这个方法,不是为了让你们反抗纪律,也不是为了投机取巧。只是能够让生活更加自动化一些,尽量减少忘记打卡的危险,让工作时间少一项无意义的动作,也避免了向老板解释忘记打卡原因的窘迫时刻。

甩锅完毕,开始正题。

准备工作:一台root过的安卓手机,Macrodroid app,Auto.js app,钉钉软件(能够开启自动打卡且不要求刷脸),一点耐心。

第一步:在已经root的Android手机上安装Macrodroidauto.js,并允许其获得管理员权限。具体root方法请自行搜索。

第二步:编写auto.js代码,实现自动解除手机锁屏功能,包括但不限于解锁屏幕,解除锁屏,输入密码等等。我自己的简单代码如下图:​

​第三步:依次设置Macrodroid中的任务,保证程序正常进行。我自己的设置如下图。​

​经过几天的使用,成功率100%。没有出现过异常。
几点说明:

  1. 此方法基本上完全模拟手动操作,理论上软件不会识别为作弊手段。当然,不排除今后钉钉会有新的识别方法。另外,建议不要升级钉钉最新版本,因为打卡功能是不能回滚旧版本使用的。
  2. 手机是一直插电的,而且打卡时段我是基本不使用手机的。
  3. auto.js的代码为js代码,其实很简单,看看文档就会了。我的代码里包含了手机解锁和输入密码功能。不同的手机需要自己用不同的方法实现,没有统一的代码。
  4. Macrodroid里面的设置可以参考,因为都差不多。
  5. 高手可能会说了,macrodroid好像有点多余啊,直接都用auto.js实现不就行了?这一点我也想过了,并且试了几次,auto.js的定时启动功能完全就是个摆设,失败率太高。
  6. 又有高手会说了,那我只用macrodroid也可以实现啊,你问出这种问题说明你不是什么高手,自己用一下就明白了,这个软件不能实现自动解锁屏幕。
  7. 我的整体思路就是macrodroid负责启动自动任务,auto.js仅负责解锁屏幕和输入锁屏密码。

哪位有更好的办法,欢迎交流!

临时禁用笔记本键盘的简单方法(非代码)

经常使用笔记本工作,中间不时会穿插查阅技术手册和规范,如果桌子空间太小或者杂物太多,那么实体书就无处安放,非常别扭。直接放在笔记本键盘上?好办法!不过键盘被误触,打出一大堆字符。禁用键盘吗,大笨蛋都想得到,那么到底怎样做才优雅?

网络上有种主流方法是用代码,可是需要记住一大串天书一样的代码,而且还需要重启电脑,不胜其烦。经过不断寻找,终于找到一个便捷无风险的办法——使用AutoHotKey代码。AutoHotKey简单的是就是一个能够完全自定义电脑快捷键的开源工具,是通过用户自己编写代码实现的,有心人已经写好了相关代码Lexikos,但是执行代码需要先安装AutoHotKey环境,对于仅适用一个功能的用户来说显得没有必要。于是,又有热心人把功能代码打包成了.exe可执行文件,这样,只要双击就能实现禁用键盘的功能啦。

简单,有效。

把代码分享到国内网盘,便于取用:

链接: https://pan.baidu.com/s/1fQYEeh-WCXsUIo-I78_14A 密码: x4i6

今天开始AutoLisp项目的研发项目工作,第一段完整代码下线。在这之前准备工作做了有一段时间了,这是一个好的开始。争取今年10月到来之前,拿出完整的东西来。

高分辨率屏幕chm格式文件查看问题

手里有个15寸4k高分屏笔记本真是太让人苦恼,各种界面过小的问题。最近需要经常查阅chm文件,发现chm里有些内容都出现字体重叠等现象,完全无法使用。

解决方法其实和AutoCAD界面字体过小的办法是一样的。

第一步改注册表,方法同上面链接。

第二步下载这个文件:链接: http://pan.baidu.com/s/1nvbMCBJ 密码: wtc2

放入C:/Windows/文件夹即可。

不知道微软啥时候能把高分屏的问题解决掉。

快速搭建简单办公网络手记

近两年做EPC项目,经常需要现场办公,由于设计院项目部通常比较微型,没有独立配备网络管理员的能力,需要自己动手搭建办公网络,方便大家办公。

现场设计人员和管理人员中,我的电脑水平相对较高,这个任务由我来完成。

整理一下现场的现有办公设备,一台二手Cannon打印复印一体机(无网络打印功能),几台HP打印机(无网络打印功能),一台2013年配置的HP服务器,好几个旧路由器,一箱子网线。还有十几台笔记本电脑。这所有的设备中,那台HP服务器可算是最为高级的了,据说是当年计划设置现场OA和现场BIM而规划设计的,价格不菲。

想了一下主要办公需求,发现没什么特别的,主要就是共享打印机,要是能有个共享文件的方法就更好了。这需求太简单了好么。

本着物尽其用的原则,我直接把HP服务器架上了,安装了一个Windows Server 2008 r2系统,用网线连接路由器,设置为固定IP,例如:172.16.0.200,方便其他服务设置。

然后,将没有网络功能的打印机由USB接口连接到服务器上,设置打印机共享。在服务器系统中设置Guest账户开启,在各同事的笔记本电脑端设置开启“网络发现”和“文件与打印机共享”,搜索网络打印机,安装即可使用。如果自动安装驱动程序失败,还需要在客户机上另行安装一遍打印机驱动。

由此,共享网络打印机就实现了。

这是,大家提出了更高的要求,能不能设置一个文件共享功能?之前所有的文件都上传到QQ群中,网速又不快,文件大小还有限制。我想过直接在服务器系统里设置个共享文件夹就行了,不过试了一下,使用体验太差。那么只能有请FTP服务器登场了。

我选择了Server 2008 r2自带的ftp建站服务。需要先增设系统IIS功能,而后在IIS里面建立FTP站点。过程很简单,baidu上教程一搜一大堆。由于没有外人使用,所以干脆直接设置一个FTP账号、一个文件夹,开放所有权限就行了。

为了方便同事使用,避免向没用过校园FTP的同事解释什么是FTP这个恼人的过程,我直接下载了一个开源绿色FTP软件,把账号设置好,拷贝给各位同事使用就行了。使用效果非常好,上传下载速度都能达到十几M/s。

这时候,其实任务已经完成了,在同事们的夸奖声中,我飘飘然起来,想着这么好的服务器怎能如此浪费?还能做些什么呢?对了,就是建一个网站。我给它起了个名字叫做“项目信息发布系统”,顿时高大上起来。

方案也非常简单,我直接采用了WAMP+WordPress组合。在服务器系统中安装WAMPserver64,更改端口为8080,避开IIS占用的80端口,配置apache的虚拟机,以便于网络中的其他同事访问。在WAMP中安装WordPress最新版本,禁用GOOGLE FONTS(后来发现新版本已经没有GOOGLE FONTS了),在内网通过172.16.0.200:8080即可访问。

这时候可以说已经超额完成任务了。

但是,都做到这个程度了,我怎能轻易罢手!有同事问我:能不能在外网(即Internet网)访问这些服务呢?我当然不会敷衍,立即回复说“可以”。因为,早就有成熟的解决方案了。业界最为著名的当然要数“花生壳”了,什么?你在路由器设置里见过?那就对了,它就是搞“内网穿透”用的。

在花生壳注册一个账号,免费申请一个他们二级域名。在服务器端安装花生壳客户端(不需要在路由器里设置),登录,将一个域名解析到本地ip和端口上,我这里当然就是172.16.0.200和8080,然后将使用外网80端口选项勾选。注意,这时要记得更改Wordpress设置里的网址选项,改为这个二级域名。如果已经无法访问WordpPress,那么只能到phpmyadmin里面修改数据库了。这时,外网访问这个二级域名,就可以看到这个网站了。

又有人问了,FTP可以外网使用么?当然可以,原理是一样的。不过有个问题,就是目前花生壳免费的解析流量只有1G/月,很快就用完了,基本承担不起网页以外的服务。想要实现也简单,那就向花生壳交钱呗。

至此,这个服务器在我看来已经不算浪费了,而且整个过程也没花多长时间,工作之余抽空搞一搞就行了。还方便了大家使用,何乐不为?

需要说明一下,如果没有服务器,使用旧电脑也可以实现这所有功能。不安装Server 2008 r2系统也可以,安装Win7或Win10就行了。

就这样吧。

wamp本地解析域名进行wordpress调试

update 2018.7.17:这样太麻烦,还容易出问题。看无痛方法


之前记录了把wordpress站点移植到本地进行调试的过程。其实,还有可以改进的地方。之前要实现wp在本地顺利访问,需要修改远数据库中的site_url和home值为localhost/xxx。改完之后,文章里的链接和媒体的链接,都还是原来的域名,虽然可以通过使用插件或者直接写sql语句完成替换,但这样一来数据本身发生了变化,无法回用到站点上进行部署,还可能会产生意外错误。

那么最完美的解决方法就是在本地对域名进行解析,达到完全模拟线上运行的目的。

  1. 找到apache系统的httpd.conf文件(不同的部署方式位置会有所不同),确保

    LoadModule vhost_alias_module_modules/mod_vhost_alias.so

    语句生效(语句前没有#)。

  2. 找到apache系统的xxx/extra/httpd-vhosts.conf文件(位置视部署方式而定),增加配置,例如:
    <VirtualHost *:80>
    	ServerName fxpai.com
    	DocumentRoot D:/wamp/www/wp/
    	<Directory  "D:/wamp/www/wp/">
    		Options +Indexes +FollowSymLinks +MultiViews
    		AllowOverride All
    		Require local
    	</Directory>
    </VirtualHost>

    域名和目录按照实际使用情况填写。

  3. 找到系统hosts文件,例如windows系统一般在c:/windows/system32/drivers/etc/目录下。打开文件添加解析域名,例如:
    127.0.0.1 fxpai.com

    ,域名视具体情况填写。

  4. 重启wamp或其他apache系统。
  5. windows系统打开cmd命令行,输入ipconfig /flushdns刷新dns记录。

访问你解析的域名,就可以正常访问本地网站了。

我的wordpress必备插件

用wordpress写博客很久的了,用过的插件不计其数。中间也有想不开的时候,将功能统统写到主题的functions里面。后来还是觉得维护和使用都不方便而作罢。况且,有人做好了轮子免费给你用,何必再自己造轮子?

下面是我一直到现在仍然在使用的plugins:(排名不分先后)

  1. Clean Archives Reloaded
    虽然已经2年没更新了,但是这么简单实用的功能谁在乎更新呢?效果请点击顶部menu > catagories > archives 归档 [all of articles]。
  2. Crayon Syntax Highlighter
    代码高亮插件,类似的插件有很多,这个算是功能很全的一个了。可能会产生些额外的样式和JS文件,但是现在网速这么快了,为了代码展示的漂亮一点,增加几十k又怎样!
  3. Delete-Revision
    删除多余的文章版本,这个功能对个人站长应该有用处吧。当然,经常改完文章就找后悔药的同学还是不要使用这个功能了。反正我从来都是写完就不管了,然后定期删除所有自动保存的文章版本。有人说现在主机也不贵,而且容量不低,何苦节省这点数据库?那我的回答就是:宝宝就是想要把垃圾删干净,然后心里爽。
  4. Google XML Sitemaps
    生成XML文件,有利于SEO(搜索引擎优化)。其实,我并不在乎这个事情,但是大家都会做一些优化,我也做吧。带google这个词的东西,就算没有用,拿出来秀一下也挺有面子的呗。
  5. My Category Order
    顾名思义,就是给自己的分类进行排序,用在侧边栏上还是很方便的。wp本身是没有这个功能的。很奇怪这个插件在wp官方网站上找不到了,后台链接的是作者自己的页面。也有很多类似功能的插件吧,但是我用习惯了,懒着换。当然,现在我把类别放到菜单里,就用不上这个了。
  6. My Link Order
    还是这个人写的插件,还是order功能的插件,只不过order的是友情链接。这个功能太有用了好不好,原版wp链接管理没有排序功能,反而搞了一大堆链接关系什么的,搞不清是怎么想的。这个插件在官方也没有了,只能从作者网站页面下载。
  7. WP Slug Translate
    对英文渣来讲(虽然我不太愿意承认),这个插件可以代替你生成漂亮的文章固定链接,使用的是bing的机器翻译api,翻译效果差强人意。但是固定链接就是简短一点就可以啦,实在不行动手修改一下,也不用费心去翻英汉词典了(sorry,现在已经没有人翻英汉词典了吧,估计都是手机翻译软件)。
  8. WPJAM TOC
    中国wp大牛我爱水煮鱼写的插件,自动根据文章标题生成目录。很像维基百科的页面目录样式。跟维基百科一样就是好的好吧,不要犹豫!
  9. 多说
    国产社会化评论系统。功能没得说,团队维护,使用更放心。关于国产社会化评论系统,我很久以前写过一篇评测:评测,仅供参考。
  10. 微信机器人高级版
    现在做微信的人好多,把微信和wp结合起来的也有几个,甚至已经有完整商业化的服务。这个也是我爱水煮鱼的作品,目前还是收费的,不过定期会搞一些活动免费获得。这个不知道是不是最好的,但是用起来没什么问题。用它自己架设一个微信订阅号平台,实现基本的功能分分钟的事情。好处就是网站内容和微信内容统一管理,数据安全性也有保障,不会被微信莫名其妙删掉。本站当然也有微信订阅号啦:
    微信订阅号二维码
  11. Force Regenerate Thumbnails
    来介绍这个插件,大概是我最喜欢的插件了。它的功能很简单,一次性重新生成所有图片媒体。有什么用?如果你曾经换过一些themes,或者用过一些不靠谱的themes,那你真的应该打开ftp,去服务器上看看,图片上传的文件夹里有多少用不上的图片尺寸。以前我的每张图片上传后,都会自动生成7~8张不同尺寸的图片。更换主题或者在后台更改三个媒体尺寸以后,以前的图片是不会重新生成的。当然,这么做是绝对正确的。但是对于不需要将图片外链的个人站长来说,这完全就是浪费空间。用完以后,虚拟主机都可以降低一个档次了!但有一点需要提醒用户,使用这个插件的时候,最好在本地测试好,确保不会发生意外事件,使用的时候一定要关闭所有的其他插件,注意,是所有其他插件。这个插件的破坏力太强了,谨慎使用。
  12. 还有两个插件就是disable google fonts插件和replace google fonts插件,都是国人开发的,用来避免google fonts服务无法使用而造成的网页加载缓慢的问题。但是现在我已经不再使用了,因为google fonts在国内已经恢复访问了,而且replace那个插件,使用的是360的公共库,最近也不太稳定,索性禁用掉就行了。另外,我之前还写过一篇优化wordpress访问速度的文章,仅供参考。

以上就是我目前在使用的插件,如果你还用过什么好的插件,也可以推荐给我。

Minecraft1.8 Python编程整合包

前些天,一本书的发布轰动了Minecraft游戏圈——《零基础学MineCraft编程》。这本面向11~15岁青少年的游戏编程教程,一下子成了MC信众们心中的宝贝,众多人纷纷表示,为了信仰,一定要把书里的内容学完。

可惜的是,我已经不是11~15岁的少年了(虽然是实话,但是说出来还是显得有些臭不要脸)。其次,我根本算不上信仰,只是对这么值钱的一款游戏感到好奇(微软花了25亿美金把它给收购了)。而我就是在游戏世界里用手撸树、盖“火柴盒”的那种毫无存在感的小绿人。

去年底,一名知乎上的建筑大神在出版的新书里也推荐过这款游戏,他认为这是跟建筑有关的游戏里很神奇的存在。另外,这是一款开源游戏,有着丰富的mod和插件,甚至还有官方的API接口。Minecraft已经不是一款游戏了,而是以游戏形式存在的3d设计软件和一个程序开发包。

所以,我觉得这个游戏还是值得体验一下。买书当然是一时冲动,书里的编程内容太过基础,没有太大参考价值。当然,如果你是刚入门也无伤大雅,边学边玩就是了。

闲话完毕,进入正文。书中所用的craftbukkit服务器版本为1.6.4,太悠久了好么,到官网上去看了一眼,竟然没有下载链接了,新旧版本都没有,是因为一个什么声明,懒得研究了。好在有镜像并且作者一直在更新。树莓派插件也在更新,没什么问题。其他的mcpi,anyio好像没有变化。把几个东西整合了一下,按照书中给出的方法做了1.8版本的安装包,懒得重新做包的同学们拿走就是了。

下载《零基础学MineCraft编程》配套编程包1.8版本