黑历史

‘伪学术’ 分类的存档

轨迹球自用感受

2010年9月2日 囧三 已经被 2 次吐槽

之前有人跟我说,想用轨迹球,让我给点意见。于是就有了这么一个帖子。

过往

作为一个完整的帖子,还是有必要科普一下什么是轨迹球的。说实话这些东西,都是从百度/维基百科上抄来的。
用容易理解的话说,轨迹球是鼠标的一种。从结构上看,轨迹球就像以前那种带滚球的鼠标打个翻以后的样子。

但是用一个种更靠谱的观点,上面那些话都是扯淡。事实上,轨迹球的出现比鼠标还要早10多年。据说在机械鼠标的年代里,轨迹球还是挺有优越感的,因为传说中它的操控性能会更加精确。其实我不这么觉得,不过这是后话。

后来呢,鼠标发展出了激光定位的技术,轨迹球的优越感一下子就被干掉了……从此一蹶不振。
不过现在的轨迹球也发展出了光电技术。但是……从我的使用感受来说,还是有些问题……这个也是后话

市场

再说说现在市场上能买到的轨迹球。如今能买到的只有双飞燕、罗技和肯辛通了。
哦,微软也有一些没卖掉的尾货/洋垃圾。

另一方面,不思进取的双飞燕和罗技已经很久没有推出过新的型号了。只有肯辛通还在孜孜不倦的推出些新的我根本买不起的球……

从价格上看,双飞燕的最便宜,100不到。我说,你们不要看不起双飞燕!A4tech也算是国际品牌!
罗技只有3个球,木星200不到,火星200多,水星国内没卖的,好像要500以上
肯辛通的 低端orbit 200不到,中端专家球600多,最贵的SB(SlimBlade)1k,貌似。
猛击阅读全文 >>

分类: 伪学术

爱撕衣挂分器V0.11【更新了一下界面】

2010年7月8日 囧三 已经被 10 次吐槽

软妹 : 死瑞啊,有观众说,要你介绍一下我……
死瑞 : :004: 你有什么好介绍的……不过是我脑补出来的妹子罢了……
【更多可以看这里 http://bbs.saraba1st.com/2b/viewthread.php?tid=564087】

软妹 : 那你这次更新是干嘛的?
死瑞 : 这不是有人说,界面做的太不友好么……就随手改了一下,加了两条杠杠……更多的,看最底下的说明好了……

========= 上面是更新 =========

软妹 : 你是谁?
死瑞 : 我是死瑞,爱撕衣的潜水党。我最崇拜的人是孙鸭子,因为听说他可以从楼上睡到楼下……还专门写过他的同人小说……
(被按住暴打……)

软妹 : 好,我们继续……你做的这个是什么?
死瑞 : 如标题所写,爱撕衣的挂分器。

软妹 : 挂分器?我听说以前圈叔写了一个啊。而且听说官配也写过?
死瑞 : 呃……这个问题是这样的。圈叔的版本自从爱撕衣2b以后,就跪了。而且现在圈叔每天就知道陪妹子,再也不关心爱撕衣了!至于官配么……听说他能窃取到你挂在它的服务器上的帐号密码哦~你放心么?

软妹 : 对哦……但是,为什么我们要相信你不会窃取我的密码?
死瑞 : 是这样的……我这个是一个客户端程序,所有操作都在你的本机完成。而我要获取别人的密码,除了一定技术之外。还要有一个稳定的服务器。很显然,这二者我都没有……

软妹 : 不过话又说回来了……你的账号又不值钱……反正是挂马甲,可以用通用密码12345去挂,然后用的时候再改回来嘛。
死瑞 : 呃……我们能谈点别的么……譬如技术层面的内容……
猛击阅读全文 >>

分类: 伪学术

贴图不说话

2010年4月12日 囧三 只有1人吐槽!

附SVG格式图片下载:

下载

分类: 伪学术

【游戏】这就是这个周末的成果

2010年3月21日 囧三 只有1人吐槽!


嗯哼,如标题所述,这就是我这个周末的蛋疼成果。
美其名曰,是个游戏。

下面是传说中的用户手册……

  1. 规则说明
  2. 游戏棋盘是一个【井】字格,游戏者分红、黑两方。每一方有3枚棋子,一次编号1、2、3。
    走子顺序为:红1,黑1,红2,黑2,红3,黑3,红1,黑1……如此循环。

    初始布局为:所有棋子均不在棋盘之上。
    行子时,每枚棋子必须放入棋盘空置的格子中,而不能原地不动,或覆盖其他棋子。

    当棋子不在棋盘上时,可自由放入棋盘的空格中。
    而当需要走的棋子已经在棋盘上时,它必须移动到棋盘的某一空格中,而自己原来占据的位置成为空格。

    胜利条件:当某一方落子之后,自己的所有棋子位于一条线上(纵、横,或者对角线),则该放获胜,至此游戏结束。

  3. 操作说明
  4. 走子:在9宫格中点击鼠标左键即可。双方依次落子。

    左上角三个方框N,B,F……不是【牛逼否】的意思……
    N是new game,开始新一局游戏。
    B是back,及悔子一步
    F是foward,悔子后,若无新落子,可恢复到悔子前的状态。

    简而言之,就是浏览棋局历史……
    哦对了……补一句,这个历史……只能记录最多100步……
    为什么会这样呢……因为我比较懒……或者说这么写比较省事……超过100步的话……我也不知道会出现什么奇怪的结果……

    一方达成胜利条件后,顶端会显示【YOU WIN】
    至于,具体是谁赢了……分不清的,请和我交往!!
    猛击阅读全文 >>

分类: 伪学术

【ZT】“西厢计划”原理小解

2010年3月15日 囧三 已经被 2 次吐槽

早上起来看到一篇帖子,4G的,正好无聊,转来仅供大家一睹。

首先是来源:
http://blog.youxu.info/2010/03/14/west-chamber/

之后是全文转载:

猛击阅读全文 >>

分类: 伪学术, 非原创

C语言中高维数组与一维数组的相互折叠

2010年2月20日 囧三 已经被 3 次吐槽

毫无疑问,C语言里,最麻烦的地方,就是指针和数组的互相转换问题了。因为,它俩实质上就是一个东西。

今天要说的是,如何将简单的一维数组多位数组互相转换。

我们知道,在C语言的申明中,我们可以申明一个2维数组,形如:
int a[2][5]

从申明的含义上,a是一个有2个元素的数组,它的元素,我们记为t。而t怎是一个有5个int元素的数组。
从参数的解释上,事实上 int a[][]int **a是一样的。
而从内存空间的分配上,int a[2][5]和 int b[10]一样,是占用10个连续的int空间。其顺序是:a[0][0],a[0][1]…a[0][4],a[1][0]…a[1][3],a[1][4]

有了上面这些内容,我们就可以像折叠一样,把一串很长的一维数组,给一层一层的折叠成高维数组。下面是我随手写的一段样例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main (void) {
	int a[20];
	int (*b)[5];  // 申明很猥琐,见最后红字
	int i,j;
	for (i=0; i<20; i++) {
		a[i]=20-i;
	}
 
	b=a;
	for (i=0; i<4; i++)
		for (j=0; j<5; j++)
			printf ("%d  ",b[i][j]);
      return 0;
}

这样做有什么意义呢?
本质上说,确实没有什么太大的意思。而且很多时候,我们可以很轻易的将一个高维数组里的(i,j,k)位置映射到顺序存放的一维数组里。

譬如说对于int a[p][q][r]中的位置(i,j,k)事实上,对应于int a[p*q*r]中的:
i*q*r + j*r + k
(而且事实上,在计算机内部,也就是这么做的。)

反过来,我们也可以通过模、除运算,将一个线性空间中的位置换算成高维空间的位置。式子比较奇怪,就不写了。

如果非要说什么这样通过折叠的方式,重叠指针的好处的话……那就是如果一组数,我们既需要顺序的方位,又希望可以通过指定行列的方式来获取的话……可能会比较方便。(当然,我觉得把上面那个 i*q*r + j*r + k 写成一个宏,也是未尝不可的。但是,总觉得,乘法什么的,交给编译器去做,会不会比我写的要快些?)

最后,再给一个很牵强的应用代码。

描述是这样的,我有4组数据,每组包含5个int数。
然后,我希望以行为基本单位排序,排序的依据是,某一列的数值大小。

下面是样例代码:

#include <stdio.h>
#include <stdlib.h>
int col=0;
int cmp (const void *x, const void *y) {
	return  *((int*)x+col) - *((int*)y+col);
}
 
int main () {
	int a[20]= {
		11,41,41,21,31,
		22,32,22,42,12,
		33,23,13,13,43,
		44,14,34,34,24};
 
	int (*b)[5];
	int i,j;
 
	b=a;
	printf ("sort by col 1:\n"); // 注意一下,col1 不是第一列,是第二列。从0开始!
	qsort (b,4,sizeof(b[0]),cmp);
	for (i=0; i<4; i++) {
		for (j=0; j<5; j++)
			printf ("%3d  ",b[i][j]);
		printf ("\n");
	}
 
	printf ("*************\n");
	printf ("sort by col 2:\n");
	col=2;
	qsort (b,4,sizeof(b[0]),cmp);
	for (i=0; i<4; i++) {
		for (j=0; j<5; j++)
			printf ("%3d  ",b[i][j]);
		printf ("\n");
	}
      return 0;
}

最后多说几句,这里比较麻烦的是qsort的使用。

在qsort的cmp函数中,传入的两个参数分别是要排序数组的每个元素的地址。
换句话说,如果要排序a[],那么每次传入的参数就是 &a[i]

高维数组事实上就是折叠过得一维数组。也就是说,在事实上,对于2维数组b[][],我们有 (void*)&b[0] == (void*)&b[0][0]。而这两者的区别,也只是类型的不同而已。这也就是我在取值符前面,强制转换为void*的原因。

由此,我们在写cmp函数的时候,切莫将x强制转换为int**,而只需要转换为int*就好。

红字醒目

int (*b) [5] 和 int *b [5] 是不一样的。

int (*b) [5] 表示:b是一个指针,它指向一个含有5个整数的数组
int *b [5] (没有括号!)表示:b是一个有5个元素的数组,它的每个元素是一个指向整数的指针。更易懂的写法是 int* b[5]

int (*b) [5] 中,如果b是x的话,那么b+1就是x+5*int
而在没有括号的版本中,b+1其实是&b[1]

分类: 伪学术

用草稿纸构造12球问题的解

2010年1月14日 囧三 已经被 2 次吐槽

12球问题,大家都知道吧?
不妨再描述一下题目:
12个球中,11个好的,1个坏的。坏球的质量和好球不太一样,偏轻或者偏重。
现在要求用一台天平,称3次,找到这个坏球。如果可以的话,并告知这个球是偏轻还是偏重。

很早以前就看过这个题目,解法很是诡异,反正是一边4个球,然后怎么组合一下……从来没有记住过。当时一直以为发现这个解法的人是一个绝对的天才。

不过,今天从一本书上看到了这个解法的构造方式。换句话说,这个问题,其实并不是什么灵光一闪的结果,或是推理帝的神作。

下面就来介绍这种从一张空白草稿纸开始,看上去有些机械化的的解法构造。

==========分割线==========
数学内容
不喜勿入
==========分割线==========
猛击阅读全文 >>

分类: 伪学术

[TAOCP]神数据结构一则

2009年12月25日 囧三 竟不知该如何吐槽

按惯例,先说点废话,调节一下气氛。等我磨叽完,再来说那则神数据结构

说最近每天就是去自习室战TAOCP,愈发的感到TAOCP不愧位列【20世纪人类12神学术】之席。之前看Knuth的【推倒计算机娘必读】的时候,感到的是喜感和高老头无处不在的神吐槽。而最近看TAOCP,无处不见的就是,神。

说TAOCP牛逼之处,它是一本教科书,但不像具体数学那样,只是一本教科书;它是一本参考手册,又不想APUE那样只能做参考手册;它充满了精妙的习题,却超越CLRS,提供了占全书1/3篇幅的完整解答……

总之,如同编程珠玑里说的那样,你需要在家里和你工作的地方(或者说所有你会出现的地方),各备一套TAOCP。
如果说缺点,那只能说,太厚太重,不像珠玑那样,可以捧在厕所里阅读。

好了,下面进入正文,不想猛击就算了吧……

猛击阅读全文 >>

分类: 伪学术

Internet有中心么?

2009年11月20日 囧三 竟不知该如何吐槽

今天这个帖子,是一个讨论帖。
对于标题上的题目,我没有自己的结论,或者说只有一个自己的倾向,而无法论证。
而且,下面的内容,更多的是一些思维的碎片,而缺乏一个系统的逻辑组织。
其实,我现在最大的感受就是对Nixie君的羡慕,羡慕一个机会吧。

说回正题,互联网,是否存在这么一个中心的概念。
对于这个问题,我的观点是:是的,它是有中心的。

话说,在互联网刚刚被设计出来的时候,是为了避免通讯网络的某个关键节点的通讯被破坏后,导致整个网络的破碎,或者说最大程度的保持原有完整性。(注意!即便是原有的电话体系,被破坏了中心,也不会导致彻底的崩溃!)

有上面的目的看来,似乎Internet上的每个节点,或者说每个接入Internet的计算机,都是平等的。它是没有中心的。(否则话,我们只要破坏了这个中心,就应该可以导致网络的破碎)如果硬要说中心的话,那就是每个节点都是中心,可是这和没有中心又有什么区别呢?

关于内容可以参考Andrew S. Tanenbaum的计算机网络(Computer Networks )1.5.1节.Internet的更多历史,5.2节.路由算法

但是,这仅仅是就通讯层面而言的。我们现在使用的互联网通讯早已超越了单纯的点对点通讯,而更多的(全部的?)是一种由他人提供的【服务】。(请注意,qq、email之类的通讯不是一个点对点的通讯,我下面会再说。)

似乎有点消费主义的味道,那么我简单分析几种我们上网的活动,来看看我们是如何以一个消费者的身份出现的。
这里,我要先强调一个信息论意义上的守恒概念。我们上网看到的一切东西,都是网络某一端的人告诉我们的!这些信息,不会凭空而来!否则,我们完全可以抛开这个网络,而获得这些信息。
猛击阅读全文 >>

分类: 伪学术

电子书的实体化(1)

2009年11月15日 囧三 竟不知该如何吐槽

电子书的实体化

——或者叫实体书的电子化?



早在许多年前,我就和别人讨论过这样一个问题:电子书,早晚有一天要战翻纸板书。其实,这也不是什么大逆不道、礼乐崩坏的事情。或者,你又怎么看待纸板书战翻学富五车的竹简,更或者我们仅仅是出于动物保护主义,才停止使用龟甲的?

我知道,在E-ink电墨技术和Amazon的kindle即将烂街的今天,再来说这个事,有着太多事后诸葛亮的味道。但是,还是说说吧,权当记忆整理了。



首先,我要描述一个我创造的术语:意识书

意识书,是一个相对于实体书而言的概念。它与实体书的差异在于:意识书没有一个具体的形态,同时也是不可读的,而实体书是看得见摸得着的。

某种意义上说,意识书,有点类似于柏拉图所说的“理念”。不过,我这里并不使用柏拉图的善恶概念,也就是说,我并不认为:意识书比实体书更善,或者说更完美。

相反,这两者是可以相互转换的。意识书,存在于每个人的头脑、意识之中。如果,我们将自己的意识付诸笔端形成文字,意识书就凝固成了实体书。而我们阅读其他实体书的时候,就会融化这本书,成为意识书存放于我们的意识之中。



接下来,我将要讨论“电子书”这个概念,到底处在意识书到实体书这个变化过程中的那个部分。

很多人简单的将纸板书与实体书等价起来,我认为这是不妥当的,当然在日常语境中的语义混用不是我这里讨论的重点。其实,电子书和纸板书,从某种意义上来说,是相似的。他们只是充当了一个媒介的作用。

我之前说了,意识书付诸笔端,就成了实体书。而我现在敲击着键盘,不可否认也是一个意识凝固成实体的过程。

我们读纸板书,其实看到的是纸张和一些油墨印刷的特殊符号。通过大脑的解读和翻译,形成意识再存于大脑之中。(其实,我倾向于使用一个抽象性的词汇“意识”来取代“大脑”这个物理的概念。但是为了避免“意识”这个词的语义过载,只好这样了。)这个大脑的翻译过程是非常重要的。同样是书,我看到阿拉伯文的书,心里就只有一条条的蝌蚪,而看到汉字,却能准确的意识化。

而阅读电子书也有一个类似的过程。一个程序将0101001翻译成我们可读的符号,或汉字或英文(或乱码……),并把这些符号显示在终端上。然后,我们像阅读纸板书一样,阅读这些符号。

总结一下,传统的纸板书是将油墨印刷在纸上,形成符号。而电子书是将0101翻译成符号,显示出来。然后,阅读、理解符号的过程就一样了。



重复一下,我的观点:

电子书也好,纸板书也罢,竹简龟甲羊皮古卷什么的,都不过是意识书实体化的工具而已。他们之间只有形式的差异,没有本质的区别。而从现在的情况看去,电子书肯定是要战翻纸板书,成为标准的。

=======分割线========
很抱歉,没写完,只说了电子书与纸板书的共同点。后面计划继续说差异。
一来还有点别的事要作,二来也没有组织好完整的结构。
so,就这样先太监着吧……回头考试结束再来补完。

分类: 伪学术