《沦落人闲居》正式搬迁至 ukyoi.info


沦落人闲居已正式搬迁至 ukyoi.info

为获得对自己网志的绝对控制,我早已有意将网志搬迁至自己的VPS上。目前VPS和域名已经准备妥当,文章的迁移也基本完成,故决定正式搬迁。未来如无意外,ukyoi.wordpress.com将不再更新。

本网志一直以来技术含量不高,更新也不频繁,故没有什么人会看。在此要感谢所有浏览过该网志的诸君,忍受不得志的我自怨自艾的无聊唠叨。如果因此而耽误了诸君的宝贵时间,请允许我在此口头道歉。

右京样一 (Ukyoi)

VPS购买与配置记


买VPS是我琢磨了很久的事情了,以前一直没有付诸实践,一是有点舍不得这个钱,二是自知水平与精力都实在有限,即便买了,也不能发挥其真正的能力。最近在现实生活中混得很不得意,于是乎某种愚蠢的勇气占了上风,心一横,决定当做玩具买了。

服务器是从Arch Linux中文社区的管理员之一——凤凰君(@phoenixlzx)手中买的最低端方案(网站在此),就我未来一段时间可能玩的东西来说应当是足够了。

我目前的网志在wordpress.com上,所以服务器启动之后我做的第一件事是先搭个wordpress出来然后迁移网志。最开始我为了用较新的软件包,选的系统是OpenSUSE 12.1,后来发现用OpenSUSE做服务器的相关资料非常少,而且折腾配置麻烦,于是乎作为一个彻头彻尾的小白,我最后采纳了凤凰君的建议,换了Debian 7.0 Wheezy,发现软件也还蛮新的。

得益于强大的apt包管理系统,Debian上面Apache、phpMyAdmin、mySQL的配置都相当方便(而且有文档)。源里也可以直接装wordpress(不过为了日后升级时不混乱,还是直接从官网拉下来装的)。在此有一个经验——千万不要相信宣传中所谓的5分钟安装一类的措词,那都是在对LAMP/LNMP有充分了解的情况下才能做到的。而对小白来说,会面临这样那样的许多问题,需要逐一地查找资料解决,能在5个小时之内彻底地配置好就很不容易了。

虽然我以前完全没了解过Apache和php,不过东拼西凑查找了下资料,再加上一些人的帮忙,目前网志已经正常运转了(ukyoi.info)。至于以后的计划……科学上网自不必提,这个十一我准备学学基本的html、Javascript知识,写的小东西也可以放在上面。鉴于我的网志根本没什么人来,200G的流量再搭个OwnCloud什么的应该也不错。另外据说Apache负载会比较大?改天研究研究换成Nginx吧。

最后要感谢一下凤凰君。他的“售后服务”做得相当的尽心到位,耐心解答了我的很多问题。

岂不冤哉


譬如勇士,也战斗,也休息,也饮食,自然也性交,如果只取他末一点,画起像来,挂在妓院里,尊为性交大师,那当然也不能说是毫无根据的,然而,岂不冤哉!

——鲁迅:《且介亭杂文二集·“题未定”草(六至九)》,《鲁迅全集》第六册,人民出版社1981年版,第422页

自制快速调节鼠标灵敏度的小玩意——SimpMouse


介绍:

这是我最近弄的小玩意,可以识别连接的鼠标,并分别调节每个鼠标的“减速系数”(Constant Deceleration)。

代码托管在Github上:
https://github.com/ukyoi/simpmouse (点此进入项目页面)
欢迎fork和贡献(虽然我觉得应该没什么人fork)。

功能上,选中要调节的鼠标,然后拖动滑杆或输入数值,就可以改变鼠标灵敏度。由于减速系数取值是1到正无穷(应该是正无穷吧……),所以滑杆那里我取了个倒数,左端对应数值为16。直接输入的话则可以接受任何有效的数值。

另外,虽然有Refresh、Apply和Cancel三个按钮,不过这些都是半年前构想中的功能,现在统统用不了,当然更无什么记忆功能。总之只是个很简陋的半成品。

主要用到的东西:Qt做界面、C++、Qt做基本功能(使用qmake进行构建)。
通过运行 xinput list 和 xinput list-props 获取鼠标信息,并用 xinput set-prop 写入Constant Deceleration数值。

关于这个程序的一些废话:

最初想法源于半年前跟人联网用wine玩星际。KDE的鼠标调节功能比较残,指针加速那里即使调到最低,我的鼠标也还是太灵敏(xfce的鼠标调节就很好,可以每个鼠标独立调整,项目也多)。网上查到用xinput可以对鼠标行为进行精细调节,我就打算写个方便的图形工具来用。结果一下拖到现在,星际自然是早就不打了,程序也变成了练手(自娱自乐)之作。至于程序名……由于这个程序对多数人来说实在是没啥大用,请原谅我没在上面花什么心思。

我本以为如此小程序,不会有什么代码量,然而最终代码量却出乎我的意料。当然回报也是有的,我的最大收获大概在于对如何组织程序的结构有了一些经验。我之前只是看过一些编程语言的教材和简单的算法,而对哪怕一个很小的程序应该如何设计和组织则全无经验。通过边写这个程序边进行重构,我对代码该怎么划分、怎么组织都有了一些粗浅的了解。虽然程序本身很小,但我自认为带来的收获还是可观的吧。

C/C++ 包含顺序引发的错误一例


这个错误是我最近在写一个Qt小程序的时候出现的,觉得有一定价值,打算写出来。由于我水平实在太弱,故若高手们看了之后觉得浪费了自己的生命,还请轻拍。

假如我的程序除了main.cpp之外还有3个.h/.cpp组,这里用A.h、B.h、C.h代替:

// main.c
#include "A.h";
// Do something...
return 0;
// A.h
#ifndef A_H
#define A_H

#include "B.h";
#include "C.h";

#endif
// B.h
#ifndef B_H
#define B_H

class A_Class;

#endif
// C.h
#ifndef C_H
#define C_H

#include "A.h";
void a_function(A_Class an_arg);

#endif

可以看出,C.h的一个函数中要用到B.h中声明的一个叫做A_Class的类。由于A.h包含了C.h和B.h,而C.h又包含了A.h,因此看上去C.h可以通过A.h包含B.h,从而用上B.h中声明的类。

之后通过qmake等等自动写makefile的工具生成makefile,进行编译。然而在编译的时候,编译器却会给出错误,说A_Class没有被声明。而如果把A.h中包含的顺序调换一下,先包含B.h,再包含C.h,编译就能够通过。

问题主要就出在A.h和C.h的相互包含上。A.h先包含了C.h,根据生成的makefile,编译器会先开始处理C.h,而在C.h被处理完毕之前,B.h是不会被处理的,因此编译器会说找不到B.h中声明过的类。而如果把A.h中包含的顺序调换,在处理C.h之前,B.h已经被处理好了,就不会出现找不到声明的情况。

因此为了避免这类问题,最好把头文件间的关系理清,不要出现这种“互相包含”的情况。如果非要用到彼此的东西,可以使用前向声明(但这种方法实际操作起来是很麻烦的)。另外,既然有了#ifndef的保护,凡是要用到的东西统统在头文件里包含一遍,这样也可以确保所有需要用到的东西在用到之前都是准备好的。

沉迷


这篇文章是我在看过《新世纪福音战士》(EVA)之后想要写的,所以可以算作是EVA的“观后感”,然而又并非一般意义上的观后感。

想必每位作者都希望自己的作品能为人所喜欢,每位读者/观众也希望能够在他人的作品中找到点共鸣。然而代入感太强却也能给人增添不少烦恼。每每看到喜欢的作品,我都觉得故事中的世界正是我所处的世界,甚至里面的角色就是我本人。于是无论故事真实与否,都不由地随着故事中的角色神游其间,沉浸其中,难以自拔。而当目光终于从显示器或书本移开,却又感到“现实世界”不真切而可疑,往往要许久才能调适过来,而在这之后的某个时候自己的思绪又往往不由地转回到作品中,出神良久。

看EVA的时候再次体会到了这样的感觉。明知道其中的不合理之处,却还是追了下去;明知道旧剧场版结尾是故意留下的悬念,却还是希望有个明确而圆满的结局;明知道整个故事纯属虚构,在知道新剧场版剧情与之前不同后却还固执地为哪个才是True Story而踌躇不已。为了逃避之后的怅然若失之感,也因为害怕看到“结局”的临近,我还没有看目前最新的《新剧场版:Q》,至少要等头脑冷却下来再说吧。

据说庵野秀明曾表示EVA的TV版“结局”的目的是教育社会适应不良者,告诉他们滚回现实才是正道。不知道他取得了多大的成功,但至少在我身上绝对是失败了。或许在多数人看来我本人对社会还算是适应的,然而毕竟人与人之间的联系千丝万缕,相互支持与制衡,很多时候这种适应状态只是一种伪装罢了。本学期恰好学习了医学心理学,其实EVA讲的就是一群心理障碍者的故事,其中如明日香对自己的厌恶、碇真嗣心中的矛盾等等我都深有感触,而对碇源堂这种为达目的不惜一切(不择手段)的冷血作风甚至还颇为羡慕和崇拜。

“抛弃您的情感,走向理性的道路。”

这是小松老师在高中物理课上常讲的话。我本以为碇源堂就是这样的一个标杆,然而他的最终驱力只是想要再见到碇唯,从这一角度上说他的情感之强烈甚至超越其它所有角色。这里我似乎混淆了情绪情感和驱力的概念,看来我已经在非理性的道路上越走越远了。

其实EVA从头到尾都非常的反常识,根本不够作为科幻的资格。我本以为我自己不会喜欢上这类作品,却没想到深深沉迷其中,竟逻辑混乱地写了这么多东西,还带着我一直很看不顺眼的精神分析学派的自由联想的风格。莫非自己的无意识中真的带有反智主义的倾向?如果是的话,又是个令自己失望的结论。那么就先到此为止吧。