分类目录归档:Code

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

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

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

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

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

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

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

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

简单粗暴绕过http劫持

小区宽带有http劫持的行为,严重影响网站访问,具体情况是这样。试了几个办法,均没有效果,有些方法甚至直接导致很多加载jquery库的网页无法访问。向工信部投诉?你懂的。工信部还是踢回给地方部门,地方的电信单位给我打电话,就说不是他管辖范围,无能为力。一声叹息。

不过,至少我能让自己的网站在劫持中独善其身吧!经过简单的测试,我发现这里的http劫持方法很简单,就是会劫持HTML页面中的一个加载的jquery库,其实就是劫持的一个js库。针对这种劫持,最简单的方法就是伪造一个js库给他“吃”就可以了。

怎么样,简单粗暴!

那wordpress来说,有两种方法:

(前提:新建一个空js文件,放到相应目录。例子里我放在根目录,文件名为“fuck_you_http_hijacked.js”)。

  1. 直接在模板header.php文件<head></head> 标签中添加:<script type=’text/javascript’ src=’http://fxpai.com/fuck_you_http_hijacked.js?ver=4.6.1′></script> 即可。一定要添加在所有js文件之前。标准的wp模板,只要放在wp_head(); 之前就可以了。
  2. 上面第一种方法显得没有格调。而且,后台界面的劫持也没有解决,写文章、发博客一样无法进行。那么,wp的插件钩子登场。在主题的functions.php文件中,加入如下代码:
    //处理部分地区http劫持,导致的jquery加载不正常
    function fuckHijacked(){
    wp_register_script( 'fuckHijackedjs', get_bloginfo('wpurl').'/fuck_you_http_hijacked.js' );
    wp_enqueue_script( 'fuckHijackedjs' );
    }
    add_action('init','fuckHijacked', 1);

    要注意的是,add_action(); 函数第三个参数一定要尽量小,保证伪造的js库加载到所有js库之前。

至此,前台后台都可以无障碍访问了。但是,页面的“小广告”却没有根治,还要配合CSP设置进行内容保护。CSP全称Content Security Policy,具体介绍。我的csp设置是:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' *.duoshuo.com *.googleapis.com *.twitter.com *.baidu.com; frame-src 'self' *.weibo.com">

可根据自己网站的情况更改。


坦率地说,上面的方法,无论是伪造劫持目标文件还是csp,都不是非常“优雅”的方法。除了上面的方法,其实还有终极解决办法:给网站购买设置独立IP,然后安装ssl加密。但是,那不是得增加费用么,而且我的可怜小站是自己当日记本和业余爱好用的,搞那么高端明显没必要。

就这样吧。

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

近两年做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就行了。

就这样吧。

WordPress 4.6 诚意更新

说实话,WP更新算是比较频繁,但已经很久提不起我的兴趣了。属于安全方面的更新必不可少,默默无闻我也心存感激。但功能上的更迭缓慢,还是让我有点失望。

今天打开后台,发现系统又双叕更新了,还是习惯性的点击(同时在想,之前说好的静默更新呢?),update完成后,同样出现新功能介绍。不同的是,这次增加的新功能,让我感觉一股清流迎面而来。

  1. Streamlined Updates
    这个可以直译为“顺滑更新”吧,说穿了就是让更新功能用上了ajax,不用在更新过程中把页面跳来跳去了,着实高大上啊。
  2. Native Fonts
    woo,终于想开了,不在后台使用google open fonts了,这个太影响后台相应速度了。之前我还啪啪地忙着用各种方法禁用open fonts呢。而且,theme里我也不建议用google fonts,除非特殊展示页。汉语页面好像没什么人用特殊字体,除非有专业的字体美工,或提取固定字段的特殊字体后再加载(例如,非学派的logo字体)。
  3. Editor Improvements
    第一个编辑功能是“Inline Link Checker”,翻译过来就是“编辑模式链接检查”功能(抱歉没做到信达雅),这个功能可以让作者在编辑过程中检查链接有效性,避免了添加链接失误且难以检查的问题。
    第二个功能是“Content Recovery”,翻译过来就是“本地文章内容恢复”功能(不要吐槽我的翻译),强调本地恢复,就是利用浏览器本地存储特性实现内容恢复,避免因为网络原因导致文章数据丢失,使文章内容可靠性更高。

同时,历年的官方theme也同步更新了,具体更新了什么我并不关心,因为反正我也不用。

关于开发者部分和其他功能更新,可以看这篇文章link

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

之前记录了把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版本