我记性很差。我总是忘记犯过的错误,然后再犯。

一而再也就算了,但我不想再而三。

所以我写下这篇笔记,一则警戒犯过的错误,二则为再遇到同样的问题提提供帮助,三则日后看到曾经犯过的愚蠢错误也值得一笑。大多数错误的原因是比较简单的,否则将单独作为博客来写。

Three.js

照相机

2015.06.09:记错参数顺序

正交投影构造函数是THREE.OrthographicCamera(left, right, top, bottom, near, far),我把topbottom的顺序记反了,因为left是比right小的,很自然地就以为bottomtop之前了。

观察到的结果是,所有面片都显示不出来了。

排查了一个小时,意识到这是因为照相机观察到的是面片的反面,所以给网格都设置了side: THREE.BackSide,而没有意识到是照相机的问题。再之后贴图,发现上下颠倒了,回想以前把照相机放在(0, 0, 5)这样的位置是不需要这是渲染反面的,最后怀疑是参数顺序的问题,查了一下果然如此。

坐标系

2015.06.14:WebGL 坐标系搞反了

将边缘检测功能从 Canvas 绘制修改成 WebGL 绘制时,发现三角面片的位置还是对的,但是取的颜色上下相反了。这是由于 WebGL 坐标系与屏幕坐标系的 Y 坐标是相反的,用 1 - y 表示 WebGL 下的坐标系。

谨戒之。

2015.06.23:再次把 WebGL 视口坐标系搞反了!!!

我又犯了同样的错误!!!找了四五个小时都没找到原因!最后还是沈大侠一语道破!

不想玩了啊!为什么我的记性这么差!!!

Crosswalk

Android

2015.06.23:定位超时

在 Crosswalk Embedded 模式下,用 JavaScript 对于 navigator.geolocation.getCurrentPosition 调用一直失败,测试代码在 http://jsbin.com/pifas/2。电脑上的 Chrome 能够正常获取位置,手机上的 QQ 浏览器能获取,但是嵌套在 Crosswalk 里就不行。

最后发现是由于手机没开启 GPS。:joy:

后来我又在手机的 Firefox 和 Chrome 试了一下,在关闭 GPS 开启 WiFi 的情况下,前者可以正常获得,后者显示“在 Android 设置部分开启位置信息服务。我怀疑这可能是 QQ 浏览器和 Firefox 根据 WiFi 的 IP 获得了粗略的位置信息。

环境配置

Jekyll

2015.06.15:安装 Jekyll 失败

运行 $ sudo gem install jekyll 的时候总是出现以下错误,怀疑是网络问题导致。

ERROR:  Could not find a valid gem 'jekyll' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)

结果更新了一下 gem 就好了:

$ sudo gem update --system

pip install

2015.08.06:镜像设置报错

在安装 scikit-image 的时候,由于网络问题下载速度奇慢。按照网上设置代理的方式,一直报错。

$ pip install xxx -i http://pypi.mirrors.ustc.edu.cn/simple/
The repository located at pypi.mirrors.ustc.edu.cn is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host pypi.mirrors.ustc.edu.cn'.
Could not find a version that satisfies the requirement matplotlib (from versions: )
No matching distribution found for matplotlib

正确的方法是:

$ pip install xxx -i http://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn'

速度快得感动 cry!:cry:

杂项

PhotoShop

2015.07.28:将 PS 源文件保存为后缀为 png 的图片

也不是第一次犯这个错误了,在 PS 中保存 png 图片的时候,经常忘记改图片类型而直接改了图片后缀。这就导致保存的实际是 PS 源文件,而后缀名却是 png。更坑爹的是,在 Mac 下预览完全没有问题(因为是按 PS 源文件预览的)!然后在 Three.js 里加载纹理,一直没显示出来,我还以为是 Three.js 的设置那里出了问题,没想到是图片本身!

最后我是怎么发现问题的呢?我想会不会是 png 的图片有问题,想把它在 PS 里转成 jpeg 的,但是 PS 识别不出来!后来我想起来以前好像碰到过类似的情况,所以把后缀改成 psd 再在 PS 里打开。