代码

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

用Tiny Tiny RSS搭建属于自己的rss阅读器

写在前面

曾经盛极一时的Rss技术,已经很少有人用到了。它逐渐演化成了一个极客、小众的技术。然而,直到现在,老派还固执的认为,Rss的易用性和开放精神比当前那些自我封闭,整天想着拉用户、涨流量的XX号、XX平台要强太多了。

从这一点上来讲,我并不觉得互联网这些年有了多大的进步,开放性这个东西早已被大家抛之脑后。不开放的互联网只是资本的游乐场而已,根本没有表面那么繁荣。这一点从近年来最火爆的编程语言来看也是成立的,最受欢迎的语言排行逐渐被开源社区强大的Python、JS等新兴语言所占据。自我封闭并不是互联网的未来。

当然,rss这个东西的消亡也有其原因,那就是替代品太多,互联网平台化发展使得大家获取信息的渠道逐渐单一化。可对于有特殊需求的人来说,rss还是有不可替代的作用。例如,老派我就是信息流的洁癖患者,我非常不喜欢公众号、微博、朋友圈的氛围和那些恶心app的垃圾推送。我想看的东西,不是你们说给就给的!

什么是TinyTinyRSS?

用官网上的话说:

Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator

它是一个开源的新闻阅读器(RSS/ATOM)和聚合器。

其功能类似于之前已经关闭了的Google Reader服务,国内的鲜果等rss订阅服务。 Google reader已经阵亡,国内的rss服务现状也惨不忍睹。圈内比较流行的是国外的inoreader服务,奈何免费版限制太多,专业版每年几十$的费用也不是谁都愿意出的。

对于熟悉web开源程序,或者喜欢建站的朋友们,与其花费大量的金钱购买服务,还不如自己搭建一个平台来的划算。对于有自己服务器的朋友,还能够借此充分利用服务器资源,避免浪费。

准备工作

有一台自己的服务器,aliyun、腾讯云或者什么其他的什么云,或者国外的什么vps都可以;到官网上下载tt-rss安装包

然后,深吸一口气,准备遇到各种坑……

步骤

  1. 在宝塔面板里新建一个网站;同时自动新建一个数据库和ftp账号;记录号这些账号密码。
  2. 绑定一个域名,或者二级域名也可以。
  3. ftp连接网站空间,上传解压tt-rss文件。
  4. 直接访问域名,自动跳转/install访问页面。
  5. 填写页面所要求的信息,包括数据库用户名、密码等等。
  6. 安装完成,登录界面,新建订阅源,或者导入opml文件。

好了,休息一下!是不是感觉已经大功告成了? Too Young !

不出意外的话,这时候你试一下,会发现

根!本!用!不!了!

这就是tt-rss不太方便的地方,如果不进行设置,tt-rss是默认不自动更新的。按照官网的说法:

You will also need to decide on the method tt-rss uses to update feeds. This is a separate topic, outlined in UpdatingFeeds.

好的,很多好学的同学都会点开那个链接,然后一脸蒙圈。弄啥嘞这是!

好吧,简单解释一下就是,你需要通过服务器的命令行添加一个守护进程,来定时运行tt-rss的自动更新程序。啥是守护进程?管他呢,想试一下的朋友可以尝试一下在非root用户下执行crontab -e命令,然后在打开的配置文件中加入类似这样的代码:

*/30 * * * * /usr/bin/php /path/to/tt-rss/update.php --feeds --quiet

里面的时间、php命令目录、update文件目录都要自己确定。而且最崩溃的是,这个过程要用到vim编辑器,反正我是不想学也不想用。

其实,如果用宝塔面板,就不用这么麻烦。宝塔面板自带定时执行任务的功能:计划任务。只要在宝塔面板里新建计划任务,然后shell代码里输入类似如下代码就可以:

su -m www -c "/usr/bin/php /www/wwwroot/fxrss.fxpai.com/update.php --feeds"

代码中的www你要替换成自己的服务器账户名称,注意,不能是root账户。后面引号中的代码分别替换为你自己服务器php目录和tt-rss update.php文件目录。这样设置以后,你的rss阅读器就可以按时自动更新了。

如果这个办法你也实在是搞不定,还有个更简单的办法,就是更改config.php文件中的SIMPLE_UPDATE_MODE常量为true,当你打开浏览器的时候,所有rss源就会自动更新,稍等一会儿就可以了。

需要注意的问题

一定要把config.php中的ENABLE_GZIP_OUTPUT常量改为true,改了这个以后,读取速度有肉眼可见的提升,非常明显。对服务器的消耗可以忽略,反正我的aliyun乞丐版没有什么负载增加。

另外,经过我的测试,不能够通过直接开启宝塔ssl证书的方法来开启全站https。会不停报错,自动更新功能也无法实现
是我域名设置的问题,不是tt-rss的问题。域名设置好就没问题了。可以正常使用全站https。

在为rss站点设置二级域名的时候,碰到了一点问题,不过这个和tt-rss没有什么关系。宝塔的二级域名绑定有点让我迷糊,如果有其他朋友遇到类似的问题,欢迎讨论。

拓展

tt-rss另一个吸引人的地方就是官方的Android应用(没有ISO系统的),可以从GooglePlay市场获得,专业版需要花3.9$买个unlocker。从网页后台打开偏好设置>>允许外部客户端通过 API 来访问该账户,打钩。手机端app输入用户名密码即可连接。使用起来速度很快。总体感觉不错。

除此之外,tt-rss有不少插件和theme,使用方法也都很简单,再次不再赘述。

实在没时间截图。不好意思。

以上。

关于Google fonts、Gravatar、Fontawesome的那些事儿

WordPress爱好者们都知道,如果刚安装完wp代码,或者刚换了个新的theme,再或者安装了一些插件后,网站访问速度突然变慢了。那么一定是标题里这些个东西在搞事情。

这种情况出现的最主要的原因是google的字体服务器、gravatar的图片服务器、fontawesome文件服务器远在美利坚,访问速度或多或少会受到影响。

另外,你的网站使用到字体和图片的数量也有关系。引用越多,页面越卡。

其实,还有一种情况,就是当你第一次访问引用资源的页面时会比之后再次访问相比,肯定要慢一些,当然,是在不清空浏览器缓存的情况下。这也是缓存的好处,对于公共引用库,只要在某个网站加载一次,其他网站可以在缓存中共用。

前几年,老派为了保证访问速度,干脆安装disable google font插件,全局禁用了google font字体,再把fontawesome文件加载到本地服务器然后调用,gravatar换成duoshuo的api。这三大板斧下去,效果显著。

但是,全部禁用和本地化也不是没有缺点。没了google字体,后台英文显示惨不忍睹,后来wp官方在后台管理界面里禁用了外部字体,而是使用了优先使用系统自带字体的方法,这一做法收到了中国用户的好评,终于不用担心后台访问速度和英文显示效果了。

可好景不长,近期的wp更新了古腾堡编辑器,又把google字体给“请”了回来。不过,这时候就要区别看待了,因为有个好消息可能很多人都不知道,那就是google fonts的服务器已经迁址到北京海淀区了,国内服务器访问不成问题。利用外部加载反而在一定程度上缓解了服务器的压力。

相比较而言,gravatar和fontawesome就没那么幸运了。不过,也不是没有办法。

首先,经测试Gravatar不是不能访问,但是速度堪忧,常用的办法有禁用、替换国内api、缓存。前两个方法不推荐,因为禁用影响体验,国内api自己也挂了,剩下的办法就是利用wp的缓存插件,定时或者在加载网页的同时将gravatar头像图片存到本地服务器上,以便随时调用。

对于fontawesome图标库,我也有两个办法,到官网下载库文件放到本地服务器上,再用functions.php里面的代码调用。或者使用国内的fontawesome服务,以.cn为后缀网址的那一个,但是国内的版本是自发组织的,不保证以后会不会挂。除了这两个办法,还有个不是办法的办法,那就是使用wordpress自己的图标库,wp的图标库在后台界面已经广泛使用了,我们只需要在前段调用就行。常用图标的形状差不了太多,我觉得wp自带的就很不错了。

说了这么多,总结一下就是处理好这三个东西,你的网页才不会龟速。其实,对于一般访问量的网站,处理好他们就足够了,页面访问会很快。拥有更大访问量的网站速度优化,涉及到静态缓存和memchromed等等设置,不属于本文讨论范围。

最后,老派祝大家都能愉快的玩耍wordpress。

阿里云+宝塔+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记录。

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