Categories

Calendar

September 2017
M T W T F S S
« Jun    
 123
45678910
11121314151617
18192021222324
252627282930  

让 Photoshop 的快捷键兼容数位板压感笔

在 Corel Painter 里快速调整笔刷的大小可以通过 Ctrl+Alt 然后拖拽鼠标来完成,Photoshop 也有类似的功能,不过快捷键是 Alt 加上鼠标右键拖拽。另外 Photoshop 一直让不少人有些不满的就是没有一个 color picker 面板,每次都要打开那个 color picker 对话框着实有些麻烦,甚至有第三方开发了 color picker 面板插件。不过新版本添加了一个叫做 HUD color picker 的东西,按 Shift+Alt 加上鼠标右键就可以打开,虽然(我个人觉得)用起来也不是很方便,不过总比没有强。不过这个功能也必须要打开 OpenGL 加速选项才有,如果显卡很破的话也用不了了。

不过本文的重点是数位板(比如 Wacom),因为 Photoshop 把这些重要的快捷键都搞到了鼠标右键上,而且还不提供修改这些快捷键的功能,数位板的压感笔上虽然说通常会有按钮可以模拟鼠标右键,但是这个时候不能把笔尖放在板子上,拖拽起来就像拿毛笔一样,甚是不方便。于是只好请快捷键利器 AutoHotkey 出马了。这个可是在 Windows 下拦路抢劫和篡改鼠标、键盘信号的利器呀,当然也是我的系统必备。脚本如下:

人手移动的数据集

有一个人手移动的数据集,就是一个人坐在沙发上,身体不动,手移动到不同的方位。在不少流形学习的论文里都用到了这个数据集,基本上都是根据图像去 predict 人手的位置。最近的实验中希望用到这个数据集,其实之前不知道什么似乎下载到了那个 video 片段,但是人手位置的 label 却一直都没有,找别人要过,也没有要到,于是索性自己来标注一下。这里把标注的结果和标注用的程序都共享一下。

数学公式识别

在电脑上输入公式一直不是一件很愉快的事情,经历过 Word 的公式编辑器时代,还有 MathType ,只能说输入不方便而且结果非常难看。LaTeX 虽然号称是“所想即所得”,书写数学公式也相对流畅,然而有时候稍微复杂的公式写出来变成一堆结构不明显的代码,实在是比较难以继续——又不是所见即所得的,LaTeX 的错误信息又是那么让人摸不着头脑,遇到复杂的公式总是忍不住写一部分又编译一下看看是不是有问题,结果弄得很麻烦。但总归 LaTeX 渲染出来的公式目前来说还是最好看的,而且所见即所得的公司编辑确实也比较难做。Office 2007 开始有了新的公式编辑器,可以使用类似 LaTeX 的语法,渲染结果也比以前的那种要漂亮许多,不过那个所见即所得的编辑实在是非常难以驾驭,经常出现的结果是写了一大坨公式想要删掉其中的一个符号却删不掉,Office 只准你把这一整坨一起删掉,实在是很恶心,而且有时候还会有一些诡异的 bug 。就目前我尝试过的解决方案来说,我个人觉得 Emacs + CDLaTeX.el 是输入起来最迅速的,各种常用的符号、加粗斜体等操作都可以迅速完成;而最好用的是 LyX ,所见即所得的 LaTeX 公式编辑,总的编辑体验比 TeXmacs 要好。

Display Equation with MathJaX

之前一直用一个 LaTeX 的 WordPress 插件来显示公式,插件的工作原理很简单,把公式用 LaTeX 编译为 dvi ,然后用 dvi2png 之类的工具转换为图片,最后根据公式的文本内容算出一个 Hash 值,作为图片的文件名,缓存起来,下次遇到需要显示同样的公式的时候,如果文件已经存在的话,就不重新生成一遍了。

Disable TRAMP on Windows

TRAMP 是 Emacs 的一个很重要的组件,可以用于无缝地处理 ssh 、ftp 等远程文件编辑(甚至远程编译、调试等),还包括本地的 sudo 编辑文件等,总之是一个很强大的组件。今天要写这篇关于禁用 TRAMP 的文章,让我一时觉得真是光阴荏苒。

第一是关于 Emacs ,因为我实际上已经好久没有用 Emacs 了,有时候发现不知为什么好像在有意无意地避开它。不过最近编辑 LaTeX 文件比较多,尝试了很多编辑器,最后还是忆起 Emacs 的 cdlatex.el 最趁手,用其他的编辑器来写 TeX 简直就是体力活,所以即使在 Windows 下,也还是决定再启用 Emacs 。第二是关于 TRAMP ,我曾经是很喜欢这个东西的,因为它确实是很好用,如果在中文 Google 上搜索 Emacs TRAMP 的话,第一条的结果依然还是我很古老的那个 blog 上 4 年前的那篇半翻译半整理的文章。

解决 Matlab MEX 编译时 GCC 版本的问题

在 Matlab 里使用 mex 来编译 C/C++ 代码失败,这个问题算是困扰了我好几个月了,主要是我的环境比较恶劣:系统是 Arch Linux ,感觉这个系统比较喜欢追求最新版本,比较无视老版本软件的兼容性问题吧。再加上系统是 64 位的,出现各种兼容性问题似乎也觉得是理所当然的,然后像 Matlab 这样的软件通常使用较老版本的 GCC ,而 GCC 更新的时候又做了一些大改动,总之结果是我每次试图编译的时候都得到类似这样的错误:

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.4.2/cc1: /opt/matlab/sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.11′ not found (required by /usr/lib/libgmpxx.so.4)

因为 GCC 新版本里把 GLIBCXX_3.4.11 这个符号去掉了,所以挂掉了。搞得我每次需要运行 mex 编译的代码都要放到另外一台 Windows 机器上跑。也 Google 了很多次都没有找到解决方案。今天一怒之下用了最暴力的方法:/opt/matlab/sys/os/glnxa64/libstdc++.so.6 其实是指向该目录下的另一个文件 libstdc++.so.6.0.9 的软连接,我将他改成指向系统里的新版本的 libstdc++:/usr/lib/libstdc++.so.6.0.13 ,结果问题解决了。那个目录下还有一个 README ,说了这几个文件是从 GCC distribution 里拷贝过来的。于是这样用新版本覆盖应该不会有太大的问题吧? 至少目前还没有出什么问题的。

Growl for Windows meets GreaseMonkey

最近学校的 CC98 论坛简直慢得令人发指,总是让我感觉又回到了蓝田时代——洗完脸刷完牙回来了一个页面还没有打开。加上考试周到了,又特别喜欢灌水,所以老是想去刷新页面看有没有新帖子,其实主要也是看的俱乐部水楼、晚安楼之类的地方,不过每次等半天页面终于出来了,发现没有新帖也觉得相当浪费时间和感情。想起 quark 之前有做过一个监视 98 的新帖子,然后用 notification-daemon 给出提示的东西,于是我想也做一个类似的东西好了,让它自己在后台刷新,网络慢点也没有关系,至少我不用一直等在那里了,有新帖的时候再关注一下好了。

不过在 Windows 下没有 notification-daemon 可以用,而且诸如 Python、Ruby 之类的脚本在 Windows 下跑起来都觉得相当别扭。记得之前看过一个叫做 Growl for Windows 的东西(这家伙的缩写真有点那个……),好像就是 Mac 下的那个 Growl 的 clone 。于是去仔细看了一下,似乎支持一套标准的协议,而且各个语言的 binding 都很全。

Duplicate Elimination in Scrapy

之前介绍 Scrapy 的时候提过 Spider Trap ,实际上,就算是正常的网络拓扑,也是很复杂的相互链接,虽然我当时给的那个例子对于我感兴趣的内容是可以有一个线性顺序依次爬下来的,但是这样的情况在真正的网络结构中通常是少之又少,一但链接网络出现环路,就无法进行拓扑排序而得出一个依次遍历的顺序了,所以 duplicate elimination 可以说是每一个 non-trivial 的必备组件之一,这样就算在遍历的过程中遇到环路也不用怕,排重组件会检测到已经访问过的地址,从而避免在环路上无限地循环下去。最简单的办法也就是每次抓取页面的时候记录下 URL ,然后每次抓取新的 URL 之前先检测一下是否已经有记录了。不过,通常我们并不直接按字符比较 URL ,因为那样通常会漏掉许多本来确实是重复的 URL ,特别是现在动态页面盛行的情况,例如在 cc98 (ZJU 的一个校内论坛)上下面几个 URL 路径是等价的:

让 trackpoint 的 middle-click 与 scroll 共存

Thinkpad 上的小红点(Trackpoint)一直是让人爱不释手的东西,使用起来非常方便,也不像触摸板那样经常会不小心碰到,另外,用 trackpoint 还可以很方便地模拟滚轮操作,在 Windows 下,只要安装了 trackpoint 的驱动,就可以在控制面板里设置滚动了,设置好以后只要按下中键,然后移动 trackpoint 就可以实现像上、下、左、右四个方向的滚动了。不过其实我一般是不用这个功能的,有些程序(比如 Firefox)本身就支持中键点击启动滚动,无论是 trackpoint 还是普通的鼠标(不过工作方式有些不同,有些时候,如在 Google Reader 页面上不太好用),当然,最大的原因还是启用了这个驱动之后原本的鼠标中键功能就丧失了。例如,在 Firefox 里可以用鼠标中键点击在后台打开新标签,或者中键单击关闭标签等,都会变得不可用。如何同时使用滚动和中键的功能,我 google 了很久都没有找到满意的答案。

不过我后来发现在 Linux 下倒是可以很方便地办到这一点,创建一个文件 /etc/hal/fdi/policy/mouse-wheel.fdi ,内容如下:

SSH tunnel tips

从我两三年前接触 SSH 的时候我就在文档上见过 SSH tunnel 相关的东西,然而当时没有怎么看明白,也就一直没有深究,直到最近需求越来越多了,才终于发现这个东西原来这么有用,于是记录在此。

SSH tunnel 主要有三种,一种是 dynamic application-level port forwarding ,可以用来作为 SOCKS proxy ,通常翻墙就是用的这种端口映射;一种是 Local Forwarding ,主要用于提供常规的加密隧道,例如让 IMAP 协议通过这个加密隧道,避免密码在网络上被人监听到;一种是 Remote Forwarding ,可以用于逆向穿透 NAT 。其实,另外还有一种专门为 X 打造的 X11 Forwarding ,一般不会用到,Linux 下远程登录通常不会需要开启 X 程序,或者有其他更好用的方法,因此我们这里并不打算介绍这个。