如何编写 nginx+PHP 配置文件

配置 nginx + PHP 的文章网上一搜一大把,很多教程通常都是把很大的篇幅给了如何下载源代码,如何编译等内容,对配置文件的编写一笔带过,一般就是给一个现成的配置文件了事。由于Linux发行版众多,而且时间跨度非常大,所以网上搜到的配置文件有不少都存在过时甚至错误的内容,有的放到现在的环境下根本无法运行,有的则会留下一些隐患。

其实,对于绝大多数普通用户来说,使用包管理工具来安装nginx + PHP已经可以满足需求,不必自己下载源代码包进行编译,但是对于配置文件的编写却会有一些五花八门的需求。因此,学习nginx的配置文件编写才是整个过程中的重中之重,直接复制粘贴教程里的现成配置代码通常后患无穷。

笔者这里就简单说说该如何去编写一份正确的 nginx + PHP 配置文件。
继续阅读如何编写 nginx+PHP 配置文件

重返二战的时空之旅—USS鳕鱼号潜艇(上)

太平洋战争是二十世纪当中一段令人难忘的历史,美日双方都将数量巨大的战舰和潜艇投入了这场战争。战争结束后,这些战争机器的下场各不相同,有的载着无数英灵长眠在太平洋海底;有的带着战争留下的伤痕被送进了拆船厂;有的带着战败者的耻辱被当成靶子;有的带着胜利者的荣耀停泊在港口供人们瞻仰、纪念;然而,还有一些则是默默的停靠在一些不起眼的角落,静静的向人们诉说着那一段充满了荣耀和死亡的时光。

我们今天要聊的鳕鱼号潜艇,就是这么一艘潜艇。

继续阅读重返二战的时空之旅—USS鳕鱼号潜艇(上)

CarSim、Adams、Cruise和Simulink四款仿真软件的对比

CarSim、Adams、Cruise和Simulink都是进行车辆动力学仿真时常用的仿真工具,这里简单说说它们各自的功能特点和应用范围。

1. CarSim。
CarSim是Mechanical Simulation Corporation推出的一款整车仿真软件,主要从整车角度进行仿真。这个软件比较“傻瓜化”,其本质上是一个模型库+参数库+求解器+后处理工具+配置界面。也就是说,这个仿真软件自身已经自带了相当数量的模型,并且这些模型都有一些“比较靠谱”的参数,用户免去了繁杂建模和调参数的过程,只要将已有模型“拼”在一起,调整参数即可进行仿真。

继续阅读CarSim、Adams、Cruise和Simulink四款仿真软件的对比

C#实现系统托盘(system tray)刷新

最近在写一个程序的时候需要刷新系统托盘里的图标,想了好久也没有思路,搜索一番之后在http://www.dotnetsurfers.com/blog/2011/02/16/refreshing-the-windows-system-tray-programmatically找到了一个不错的解决方案。这个方法思路很巧妙,就是在系统托盘位置发送一个鼠标事件,这样系统便会刷新系统托盘,就像我们把鼠标放到系统托盘上会引起它刷新一样。经过测试,这段代码在中文版Windows 7、Windows 8、Windows 10上都可以使用。

继续阅读C#实现系统托盘(system tray)刷新

iTunes 12 备份时卡住的解决方法

注意:本文所描述的bug出现在iTunes 12.3.3.17 for Windows x64上,笔者不确定其他版本的iTunes也存在这个bug。

最近笔者的iPhone 5的触摸屏出了点问题,需要升级到iOS 9来开启触摸屏调节功能。不过,不知为何笔者在iPhone上进行更新时,手机总是提示下载失败,无法进行升级,只好在电脑上安装iTunes然后通过电脑进行升级。

笔者首先在Apple的官网上下载了最新版的iTunes,安装完成后顺利与设备建立连接,并且顺利的下载了升级所需要的文件。但是在升级的第一步,也就是备份设备内容的过程当中,进度条卡在中间不动了,而且卡了数个小时也没任何进展。进度条卡住时,iTunes并没有失去响应,手机也没有死机。反复尝试了几次,问题依旧。

继续阅读iTunes 12 备份时卡住的解决方法

在Windows电脑之间搭建SSH反向隧道进行内网穿透

不少人肯定和笔者一样都有从外网访问内网服务器的需求,比如从外网访问学校的内网或者是企业的内网,这样我们在离开工作场所的地方依然可以方便存取上面的数据。但是内网服务器往往只具有一个内网IP,而且作为普通用户的我们往往没有权限在NAT网关上配置端口转发,这就使得访问内网成为一项难题。

为了解决这个问题,有些学校和企业会提供VPN给学生和员工来使用,但是据我所知这样做的学校和企业并不是绝大多数,所以很多时候还是需要依靠我们自己来寻找访问内网服务器的方法。

继续阅读在Windows电脑之间搭建SSH反向隧道进行内网穿透

CarSim 与 MATLAB/Simulink 联合仿真中 MATLAB 版本切换方法

在CarSim与MATLAB/Simulink联合仿真时,经常能遇到兼容性问题,往往需要安装特定版本的MATLAB/Simulink才能完美兼容CarSim。但是CarSim并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,之前我只是发现CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,但是当时并不知道这背后的原因。

在新版的CarSim文档中提到CarSim是通过COM接口来实现对MATLAB/Simulink进行调用的,所以我们只要将特定版本的MATLAB/Simulink注册到COM服务,就可以让CarSim调用了。

继续阅读CarSim 与 MATLAB/Simulink 联合仿真中 MATLAB 版本切换方法

MoTeC CAN 总线协议解析

目前,越来越多的FSAE车队采用MoTeC的M84、M800等产品作为赛车的发动机ECU。MoTeC的ECU与其他同类产品相比拥有很多优势,但是与其兼容的原厂仪表板(dashboard)的价格让很多车队望而却步。虽然有一些第三方厂商推出了兼容MoTeC ECU的仪表板和数据记录仪(data logger),但是价格也并不便宜。其实我们通过一段非常简单的代码就可以在单片机上完成对MoTeC CAN总线数据流的解析,之后便可以在此基础上自行开发各类兼容MoTeC ECU的仪表板和数据记录仪。

由于笔者只能接触到MoTeC M84这一款ECU,故本文的全部内容都是基于MoTeC M84的CAN总线报文来完成的。实际上MoTeC各款ECU的CAN报文之间几乎没有差异,因此在针对其他MoTeC ECU进行开发时也可以参照本文来进行。

继续阅读MoTeC CAN 总线协议解析