Code

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

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

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

网络上有种主流方法是用代码,可是需要记住一大串天书一样的代码,而且还需要重启电脑,不胜其烦。经过不断寻找,终于找到一个便捷无风险的办法——使用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/文件夹即可。

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

简单粗暴绕过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=’https://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调试

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记录。

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