Arch挂了……

仔细看了看私以前的日志,发现自己是在1月22日装好的Arch linux。今日——4月16日彻底挂掉。三个月才挂掉,在私用Linux的历史上也还算比较长了,想到这里实在让人哭笑不得。也许只是因为Arch难掌握,所以在胡搞的时候稍稍用了点心吧……

故事是这样的。某日升级的时候发现Catalyst 11.3不支持xorg 1.10以后版本,但Arch的软件源里已经有1.10了,导致无法更新。于是私就打算换开源驱动试试。其实私在开源驱动和Catalyst之间换已经许多次了,都没有出现什么问题。结果这次不知怎么就无法启动X了。私以为是驱动只兼容xorg 1.10,于是就做了一次系统更新,仍旧是没有用。

然后……私做了个极其错误的决定——开testing源。重启之后,mount出错,说继续的话会造成严重数据损失,其中的“will”和“severe”还有专门的着重号。私害怕甚,没有继续,于是只读挂载,要私手动修复问题。对私这Linux万年新手来说当然是搞不定的,于是现在就挂在那里。

其实私只要耐心等待一下,等Catalyst支持新xorg,问题可能就会很容易解决……还是太不谨慎啊……

DFS解迷宫的一些想法

写在前面:私不是程序员,也不是学信科的,也只是最近开始没事的时候翻翻C语言的书。因此阁下很可能会觉得下文所述的想法很原始或是阁下早已用过了。私在此只是记录一下自己的想法。

现阶段私学C语言用的书是宋劲杉的《Linux C编程一站式学习》,里面讲深度优先搜索的时候讲的是个走迷宫问题,用1表示墙,0表示路,从左上走到右下。代码如下:

#include <stdio.h>
#define MAX_ROW 5
#define MAX_COL 5

struct point { int row, col; } stack[512];
int top = 0;

void push(struct point p)
{
    stack[top++] = p;
}

struct point pop(void)
{
    return stack[--top];
}

int is_empty(void)
{
    return top == 0;
}

int maze[MAX_ROW][MAX_COL] = {
    0, 1, 0, 0, 0,
    0, 1, 0, 1, 0,
    0, 0, 0, 0, 0,
    0, 1, 1, 1, 0,
    0, 0, 0, 1, 0,
};

void print_maze(void)
{
    int i, j;
    for (i = 0; i < MAX_ROW; i++) {
        for (j = 0; j < MAX_COL; j++)
            printf("%d ", maze[i][j]);
        putchar('n');
    }
    printf("*********n");
}

struct point predecessor[MAX_ROW][MAX_COL] = {
    {{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
    {{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
    {{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
    {{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
    {{-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}},
};

void visit(int row, int col, struct point pre)
{
    struct point visit_point = { row, col };
    maze[row][col] = 2;
    predecessor[row][col] = pre;
    push(visit_point);
}

int main(void)
{
    struct point p = { 0, 0 };

    maze[p.row][p.col] = 2;
    push(p);

    while (!is_empty()) {
        p = pop();
        if (p.row == MAX_ROW - 1  /* goal */
            && p.col == MAX_COL - 1)
            break;
        if (p.col+1 < MAX_COL     /* right */
            && maze[p.row][p.col+1] == 0)
            visit(p.row, p.col+1, p);
        if (p.row+1 < MAX_ROW     /* down */
            && maze[p.row+1][p.col] == 0)
            visit(p.row+1, p.col, p);
        if (p.col-1 >= 0          /* left */
            && maze[p.row][p.col-1] == 0)
            visit(p.row, p.col-1, p);
        if (p.row-1 >= 0          /* up */
            && maze[p.row-1][p.col] == 0)
            visit(p.row-1, p.col, p);
        print_maze();
    }
    if (p.row == MAX_ROW - 1 && p.col == MAX_COL - 1) {
        printf("(%d, %d)n", p.row, p.col);
        while (predecessor[p.row][p.col].row != -1) {
            p = predecessor[p.row][p.col];
            printf("(%d, %d)n", p.row, p.col);
        }
    } else
        printf("No path!n");

    return 0;
}

大概意思就是每次弹出一个栈,找到周围所有的合法步骤然后把它们栈压进栈区,下一轮时再弹出最后压入的栈,如果走入死路就再次弹栈,找另外一条可能路线,直到找到迷宫的解。如果栈空了就说明无路可走,打出“No path !”。
但是找到解之后就比较麻烦。如何输出路径呢?这段代码使用的方法是建立一个predecessor数组,用来表示每个点的前趋,然后从最后一个点顺藤摸瓜往前找,逐渐打印出来。但这个predecessor数组占用的空间很大,且只能从后向前找,不便于找到其中的某个特定步骤。怎么解决这一问题呢?作者宋劲杉出了一道思考题,还问读者能够想出几种方法,可见方法是不止一种的。

在正确理解这段代码之前,私一直认为栈区中至少应该存有正确路径走过的所有的点,后来才明白这个想法是有问题的。由于每个循环开始时栈顶已经弹出了,此时如果再在这一点继续向深处找,新压入的栈就会把刚才弹出的栈顶覆盖掉,这样找到最后整个栈中在极端情况下(例如整个迷宫都没有岔路)可能一个点也不剩。此外一个循环内是4个方向均会搜索,所以如果有岔路,就会压入多个点,但弹出时只会弹出一个点,所以栈中会残留错误道路的点。

怎么修改呢?其实很容易。原来每个循环会从栈顶弹出一个栈,其实找到路径之后,完全可以把这一栈再压回去,比如这样:

int main(void)
{
    struct point p = { 0, 0 };

    maze[p.row][p.col] = 2;
    push(p);

    while (!is_empty()) {
        p = pop();
        if (p.row == MAX_ROW - 1  /* goal */
            && p.col == MAX_COL - 1)
            break;
        if (p.col+1 < MAX_COL     /* right */
            && maze[p.row][p.col+1] == 0) {
            top++;
            visit(p.row, p.col+1, p);
        } else if (p.row+1 < MAX_ROW     /* down */
            && maze[p.row+1][p.col] == 0) {
            top++;
            visit(p.row+1, p.col, p);
        } else if (p.col-1 >= 0          /* left */
            && maze[p.row][p.col-1] == 0) {
            top++;
            visit(p.row, p.col-1, p);
        } else if (p.row-1 >= 0          /* up */
            && maze[p.row-1][p.col] == 0) {
            top++;
            visit(p.row-1, p.col, p);
        }
        print_maze();
    }

    int i;
    if (!is_empty()) {
        for (i=0; i<top; i++)
            printf("(%d, %d)n", stack[i]);
    } else
        printf("No path.n");

    return 0;
}

如果找到了可用的路,由于有了top++,相当于仅仅是读取到栈顶的数据(而栈没有弹出),这样在搜索路径压栈的时候就不会把原来的栈顶覆盖掉,从而保证了栈中存在所有正确路径上的点。解决残留错误道路的点的问题也很容易,只需让一个循环内如果搜索到了一条可以深入的路径就停止(用else实现),否则再搜索下一条路径。如果找到死路栈会逐个弹出,直到岔路口,所以不用担心找不到正解。到最后如果迷宫存在解的话,栈中所保存的就是正确的路径。由于例子中的“栈”是一个数组(当然您可能会反驳说这个例子中stack[]并不是真正意义上的栈,“栈”在理论上应该只能访问顶端的元素,但那只是个形式问题),于是可以很容易地访问任何一步的点,输出的时候正着打反着打跳着打均可,程序中所有和predecessor有关的内容便可以删去了。

但是事实上这个办法在程序效率上是劣化而不是优化,首先虽然不需要predecessor了,但是栈空间消耗变得更大。原本栈空间的消耗和分岔路的多少有关,现在则是和路径的长度有关而与有多少岔路无关。那么栈空间的最小值应该是多大呢?私还没考虑好,但分配为整个迷宫的大小肯定是足够的。还有个问题是原来的方式由于覆盖了之前走过的路径,只保留岔路上其他方向的点,如果找到死路,弹栈后会直接跳到另外一个可能的岔路继续搜索,而修改后的方法如果找到死路,必须沿原路一步步跳回岔路口。再加上top++所用的时间,程序效率比原来要低,而且岔路越多越深入,效率上的差距越明显。

前几天看到个好玩的推,说“情人节我玩一天连连看,消灭一对是一对”。私寻思既然学了DFS和BFS,不如自己也写个文本连连看玩玩?再说吧。

另:为嘛我Tag里写C,wordpress会给自动补全成C++?

[翻译]KDE幕后——Nuno Pinheiro

原文是KDE官方对Nuno的一篇采访。私翻译后发到了ikde。ikde规则中有一句说如果没有特殊情况,就表示遵从CC-by-SA 2.5,所以转到这里也应该没啥问题了……

译者的话:
记得当初开始用KDE的时候(4.2,那时Air和Oxygen已经释出)就被其出色的美工所吸引。后来知道了Oxygen图标的作者叫Nuno,就一直相当崇拜此人。无意间在KDE主页上看到了Nuno的采访,看过后决定翻译出来放到本站。但由于本人E文功力实在太低,不少地方都是连蒙带猜翻译的,可能会有许多错误,望读者莫怪、高手指正。

原文链接:单击这里进入原文

正文:

KDE幕后——Nuno Pinheiro

Nuno Marco Fernandes Pinheiro,他也称自己为图标和图形界面设计师、Oxygen主题协调人,KDE成员,自由战士,丈夫和追梦人(译者:dreamer,原谅我用了这个翻译,因为它音律上太匹配了)。

那么,Nuno,在您的工作和个人生活中,我提到的这些角色中哪些是最重要的,为什么?

这个……应该是追梦人,其实很难说您提到的哪个是最重要的,甚至可能扮演更多角色。做设计是一种奇异的融合。如果要我罗列要素的话,技术知识,许多日常产生想法会受到现实限制(译者:此处翻译可能有问题,盼高手指正);明白现实情况、基本的技术细节、屏幕工作的方式或是干脆问别人一些问题;实用主义,你今天要做今天能做的事情,你要努力让明天能做今天不能做的事情,让大家明白今天的局限,可能使将来不存在这种局限;梦想,我试着通过我的工作激励人们,设计许多价值观,并且我认为梦想对于为设计注入例如希望、爱和自由这样的积极的价值观是必不可少的(译者:此处可能也有问题)。

KDE SC 4.5已经发布。能对我们说一些其中您最得意的工作吗?

这个问题回答起来比较困难。我总是想做一些小玩意儿,或称图标 🙂 ,不过在干活的时候我发现最终需要设计的是KDE程序或段(segment)的工作,这就要求我去做其他的东西。即使到了本周末的时候我也不知道下周一会做些什么。 🙂 在Qt主题Oxygen上我确实做了不少工作,并且是许多,我是说许多工作。其中最好的部分是些隐蔽的地方,比如把元件移动一个像素,让Oxygen的内阴影和发光变得真实且能和不同内容相搭配。图标的工作还在继续——我已经不知道做了多少。 🙂 还有大量Plasma方面的工作。

要说我最得意的……可能并不局限于4.5,而是在项目上一路走来,比如Oxygen为社区所体验。如今设计者所看重的是整个KDE社区前进的过程,而不是最终的结果。

KDE未来之路会如何?我们会在体验初期版本的一系列新特性之后迎来一个稳定期吗?

其实,我来回答这些问题并不合适,这些未来方针之类的问题最好在一个满是KDE工作者们的会议室里提出来。令人惊奇的是不知为何,大家在一起工作得很和谐。这是一个巨大的社区——如今很多KDE的次级小组(sub-group)已经比1.x时代庞大得多了。我认为我们必须重点关注“精致”,这意味着代码的精致,程序互动与整合方面的精致,当然还有设计上的精致。从我个人来看我希望继续雕琢Oxygen的方方面面并且开始与个别程序,比如说Konqueror和k3b等的开发相协调。我也希望我能为Kontact做些工作。我们的资源是有限的,所以我们需要在某一时段做某一件事。4.6发布的时候大家会看到一套新的KDE壁纸(译者:Horos?)。我希望我们还能搞出一个新的KDM主题和飞溅动画(splash screen),并且新壁纸也通常会给KDE官网来一个小小的改造 🙂 。所以没错,我们有好多工作呢。

您为KDE做些什么?除了做图标之外,您还有什么任务呢?

眼下我正在为Oxygen项目做些协调工作,为其方方面面做着努力,通过协调使最终的效果和谐统一。我也在尝试去营造一种友善的氛围,为开发者的心态和设计者的思考方式之间架起桥梁。

您为KDE打工有报酬吗?如果有,能否告诉我们谁是您的雇主?

我为KDAB(Klarälvdalens Datakonsult AB)工作。有时候有报酬,那就是当我有机会在日常工作时间做一些Kontact相关内容的时候。比如最近我在Kontact移动接口(mobile port)方面做了不少工作。KDAB也资助我的Akademy之旅,很不错 🙂 ,而最大的报偿是我有机会和许多KDE盟友和几位最好的Qt黑客共同工作 🙂 。

好。那么让我们聊聊您的设计工具。

当我第一眼看到Oxygen图标的时候我想:“他肯定用了Adobe Illustrator”。告诉我们的读者您在设计时都用什么程序?

首先,最重要的是想象力 😀 ,很多时候我整天都在想如何去做一个图标,既包括技术层面又包括内涵层面。然后有时我会在纸上按照创意画个草图来试验一下。最后我转到Inkscape上然后实现它。我不时也会用许多其他工具,比如Blender(3D透视研究)、GIMP(绘制矢量和点阵图)、Ksnapshot(做些测试)以及许多许多一时想不起来的工具。 😀

那么Karbon呢?还不够成熟吗?

是的。它需要更多的开发者。可惜了啊,其实我真的很喜欢它的界面并且它很有潜力。 🙂

有的人感到很不满,因为在Ubuntu的新设计中使用了私有软件。您对此事怎么看?

真的吗? 🙂 我毫不在意,只要软件管用就行。我在用开源工具,但我并不想把它强加于人。随着KDE4.0发布出现的Oxygen带来了清新的气息,我们聊聊它吧。

整个小组中有多少人?

那得看情况。图标方面最近来说只有我,窗口风格方面有Hugo完成所有的代码工作,另外一个Nuno(Povoa)做些音效(顺便说,在弄一个新的呢),我们还有许多人在搞一些细节上的东西(这很重要)。这是个疯狂的班子,我们在一起很开心。

据说您在KMail的图标上花了大约5小时。您做一个图标大概要用多长时间?

那更得看情况。许多动作的图标能在20分钟内完成,但是程序图标可能要用8小时甚至更长时间。很难量化一个具体时间,特别是一个图标我可能会花上几周去琢磨,却用几分钟把它做出来。比如说一个Zanshin(一个KDE任务管理程序)的图标我考虑了很久,然后我有了一个不错的实现方法,但我草稿中的某一元素总是不完美,我暂时还没有移除它,不过未来我可能还会……不好说。

那么灵感方面呢?您是如何获得灵感的?

这个……这大概是最艰难的部分,而且还不止是灵感,还要考虑市场。很多图标同时也是软件的徽标(logo)。它们需要传递许多信息,还不能混乱。所以的确,我有时会花费大量时间来考虑图标,关注程序如何解决问题,向开发者咨询软件的核心价值等等。有时候一个灵感也没有。有时候人们会提出一个方案建议。只要最后工程完成我就会很高兴。 🙂

假如我要做像您做的那么好的图标,我需要多长时间来达到这样完美的程度?三个月?半年?一年还是两年?

看情况。首先,技术是很重要的,了解真实的艺术加工的一些基本技巧会很有帮助(比如基本的绘画、素描);其次您需要有基本的绘画技巧,特别是画矢量图;您还需要学习一些关于图标的知识(这是个慢功夫,我还在学)。根据我个人的经验,如果您会使用矢量图程序,图标制作方面入门大概一到两年就足够了。

最近您展示了许多金融方面的图标。能告诉我们它们是为哪个程序设计的吗?

不能说太多。 🙂 我只是做图标,程序开发者给我罗列了一些程序的行为(action),于是我就开始做了。如果我对某个行为有疑问的话就会去找开发者咨询,这样他可以帮助我更好地理解。我做好一个之后会给他看,如果我们都满意的话就开始做下一个。

我的新想法是未来更关注我做过的图标和界面改造。不幸的是我还有超过一千个图标需要完成并且几乎没有空闲时间。我无法完成它。我很想去完成,但……

另一话题:一些个人问题

您在闲暇时间都做些什么呢?

开源。 🙂 我也喜欢去电影院,和内人一道享受时光。我还想去旅行,了解更多的地方,结识更多的人。

我们都很好奇您使用哪个发行版,能说说吗?

当然。我使用Mandriva,一直都是(从redhat 5.1开始),但我喜欢一切有KDE的发行版 🙂 ,我喜欢他们蓬勃发展。想想我们是共同成长的,对Kubuntu有好处的也会对OpenSUSE有好处。这是一个为同一目标而共同努力的事情。在不同的发行版之间,我所见的99%都是共同的……当然最终还会有不同的。但你必须承认这些不同!

在整个KDE访谈和作为管理者的时候您说要把您想象得“邪恶”一点。(译者:好吧我承认这里我自己翻译的内容自己都看不懂。)告诉我们的读者是怎么个邪恶法?

呵呵呵……有很多邪恶的小方法…… 🙂 例如说掌控一个让大家走在一起的计划,像Oxygen之类的。

安装Arch的血泪史

首先特别感谢CS Slayer的帮助,让私的Arch之路顺利了许多。

由于实在无法承受kubuntu那问题连天的打包,再加上CS Slayer大神和woodliu仁兄的煽动(请原谅私用了这个词),私终于决定投身Arch linux的<del>大坑</del>怀抱。其实私曾经是尝试过装Arch的,而且是在虚拟机里装过之后才敢实装的。可惜装的时候因为无法识别网卡(似乎是这样,至少无法正确配置pppoe),中途放弃了。这次私用的是2010年12月打包的archboot,pppoe终于配置正确,可以使用了。

其实整个光盘(优盘)安装过程还蛮顺利的,由于有之前的经验,整个配置过程并没有受到阻碍。然而安装过后配置显卡驱动的时候就出了点问题。Arch把ATi的商业驱动移出了源,AUR又不能直接用pacman下载。后来CS Slayer仁兄给私了个有yaourt的源,装了yaourt之后下载了catalyst-hook(可自动编译内核),结果私再接着看wiki的catalyst文档之后,发现专门有个catalyst的源……

不过AUR里有很多宝藏,提前装上yaourt也蛮好。结果由于心急,装好KDE,没有测试就把kdm写进rc.conf了。于是乎一启动就黑屏,一启动就黑屏……而且是那种连背光都没有的黑屏,pkill X无效。没办法,只能盲操(那真是货真价实的盲操)进vi,搜索“DAEMONS”,移到下一行尾,再往前推算,去掉kdm和hal,最后写入,重启。之后wiki看了一遍又一遍,还是找不到解决问题的方法。

无奈之下,索性去找开源驱动。惊喜地看到Arch源里的开源驱动已经开始支持Radeon HD5000系了。于是兴冲冲地装上,运行startx,惊喜地看到漂亮的KDE登录界面,结果就在那个大大的K字时即将浮现时,惊讶地看到因为segmentation fault,X关闭……再仔细一看显卡支持列表,就是没有私这Mobility HD 5650(5600)。无奈之下,还得从商业驱动想办法。

就这样折腾了好几天。后来想到由于私装的是catalyst-hook,ATI Catalyst那篇Wiki私是从hook那里开始看的,可能前面还是遗漏了什么,于是乎从头看看吧。后来发现了很不起眼的一句……

“And add nomodeset to your kernel line in /boot/grub/menu.lst”

于是乎就是这样,问题解决了。

之后终于进了图形界面,下一步是汉化、安装输入法。结果fcitx输入法始终无效。没办法,暂且搁置,先把locale搞定。结果fcitx居然能用了。跟CS Slayer仁兄一说,才知道现在/.bashrc在图形下已经不管用了。而fcitx在zh_CN-UTF8上不用设置环境变量即可使用。

至此……基本上私的Arch已经可以用了。不过私没有装KDE4.6 RC2,反正正式版再过几天就正式发布了。另外还有无线、图形化网络连接没有搞定,不过也无伤大雅了。

嗯,算是历经艰辛投奔成功了吧……

使用wallproxy in GAE翻墙成功,在此留念……

wordpress居然整体域名被封,这官逼民反啊……本尊自认为没发什么特别反动的文章啊。

在自己的GAE帐号上搭建了个wallproxy,运行的时候提示了一句AppConfigNotFoundError,不过实验证明还是生效了的。

一天1G的流量,个人觉得完全够用……

Google万岁……

fedora14倒计时,官网大换血。

fedora官网新界面

比以前漂亮了好多,恭喜贺喜啊……主页下面还有所谓“摄像头的功用”介绍,难道fedora开始逐渐重视桌面用户了么?

而且更重要的是,子页面有中文了!我瞬间不淡定了……

不过暂时还没看到传说中把KDE作为默认的fedora14。还有5天,慢慢期待吧。

//

另外……哪位知道如何在wordpress文章里添加一段javascript?

做了个新的Fcitx主题(皮肤)——内涵帖

Fcitx新旧面板对比

Fcitx新旧面板对比

//

这个主题(也称皮肤,不过私更喜欢叫它主题,还望见谅)是在CS Slayer大神做的默认主题的基础上改的。上图中上方的那个就是原主题,最初主要是为了兼容性做成了矩形+单色。不过既然Fcitx4.x开始支持自定主题(并且不再提XFree86的事了),默认主题太寒酸的话就有点说不过去了。但是照顾到关闭kwin的时候不能启用透明,最终的设计还是矩形(其实整个布局都没有改),只是在面板的内部做了一些小修改。最后的整体效果貌似还可以,不过据ubuntu中文论坛的人说有点花哨?也许吧。但私觉得比那个啥搜狗输入法的部分所谓“简洁”主题可是好太多了。

其实说到输入法主题,私比较喜欢谷歌拼音输入法2.0默认的那个。设计简约又不乏味,明快又不张扬,实在很好。不过为了不被说太山寨,况且默认主题不能用谷歌拼音那样的阴影,所以还是不要照搬了。

这个图片本来是做成了一个宣传图性质的,后来听了CS Slayer大神的话,觉得Fcitx以前一直是以比较踏实的态度默默地前进,做得太招摇确实不太好,所以就删去了广告性质太强的语言,不过主要结构没变。另外要说的是字体,图片中新版界面用了微米黑字体,但那是需要手动指定的,所以也不能算作“默认”了,不知道这算不算虚假宣传……

//

长假将尽,回首一望,实在没做多少真正有意义的事情,大概这算一个吧,最起码还算可以拿得出手(相比之下理发店会员卡管理程序根本是小孩过家家)。这大概是这个假期做的最后一件有价值的事了,果真怅然若有所失。

//

最后想说的是开源……开源是一个信息世界的乌托邦。除去商业公司利用开源来赚钱外,它的存在可以说是一种“反常态”。程序员花了那么多时间去学习,他们也要吃饭,也要养家糊口。然而人类总还残存着某些梦想与冲动,希望构建起没有金钱、权力与勾心斗角的理想国,希望人们能永远保持最善良、本真的情感。

我们可能永远无法改变现实世界中的种种,那么,就让这个乌托邦在信息的世界中存在下去吧。

好消息——HD5000系开源驱动初现

前一阵子一直在捣鼓宕机问题,没怎么关注开源界的动向。这条新闻是CS Slayer大神(画外音:大神个p)看到并告诉私的。一年了……距离第一个Evergreen(俗称RV870)发布已经一年了。开源界终于有了自己的HD5000系驱动……这一刻私对AMD的怨和对开源的无奈都烟消云散。

新闻地址在此:http://www.phoronix.com/scan.php?page=article&item=amd_evergreen_3d&num=1

//

以下是部分原文翻译:

……

今日,距首个Evergreen图形卡发布332日,公众终有了首个支持ATI Radeon HD 5400/5500/5600/5700/5800/5900系列特定应用集成电路(Application-specific integrated circuit,ASIC)的开源驱动。此前,Radeon HD 5000用户仅有二进制ATi催化剂驱动(商业驱动)可用,该驱动尽管是注重极致性能与强大特性的用户的唯一选择,却被普遍认为尚待调试且错误连天。

当DRM(直接渲染管理器,大概是这么翻译)在Linux内核扎根以支持最新一代硬件,DDX驱动(那是什么?)终于开始提供2D(EXA)和X-视频的支持。目前,该支持处在xf86-video-ati driver的evergreen_accel分支中。开源X.Org驱动中加入了超过11000行代码来添加该适用于Radeon HD5000家族的2D/video支持。AMD的Alex Deucher贡献了这其中的大部分。在未来几周内,这些代码会被合并至xf86-video-ati driver的主线中。目前已知在使用这些加速代码时在某些情况下存在GPU挂起问题。这些代码依赖2.6.35或更高版本内核的KMS(kernel mode-setting,内核模式设定)运行。

……

让那些最终用户不悦的是(不知道怎么翻译,原话是For those end-users not comfortable building graphics drivers from source),这些代码稳定化并且进入Ubuntu10.10和其他在2010年第三季度升级的发行版已经太迟了,不过它们或许能在Ubuntu11.04和其他2011年上半年的系统中有很好的表现。

//

虽然里面说代码很快将会进入主线,但我既不用Arch也不用fedora,其他各大发行版什么时候采用最新版本的开源驱动还是个很大的问题。原文里说ubuntu10.10是没戏了,可能在11.04里加入,真是个悲惨的消息……

不日这个笔电将会送修,大概9月前能做好一切准备。

看来私的IdeaPad Y460终有一天将不悲剧。泪流满面……

伪·(伪·(伪·通向图形之路……))

就是这东西……理发店会员卡管理程序……

悲惨的图形之路

图片里已经基本上显示出所有功能了,数个星期的学习(玩)成果就是这个,啥功能也没有的图形外壳……orz

昨天想检验一些用法记没记住,就写出来了,结果发现菜单的写法还是快忘光了……

外壳是纯用文本写的,啥功能还没有呢就50行代码了。看来还是把图形和运算分开写比较好,不过很多地方都是交织的,根本不知道怎么样才能分得开……

貌似唯一的进步就是50行代码写完之后仅错了一处。

//

千言万语汇成一句话:悲剧啊……

仙剑奇侠传五的一些游戏要素……

从官方网志上看到的,有一些很有点意思……

//

操作方式符合大众习惯,键盘、鼠标操作均支持——键盘最高!(仙剑1后遗症)

战斗节奏清爽快捷,命中打击感显著——真的吗?别像仙四那样法术战斗视角狭窄还转来转去就好了,回归回合制就更好了。

攻击方式多样:仙术、绝技、合击、召唤、封印、援护等一应俱全,并带有场景破坏效果——场景破坏+1。其实仙剑1就有场景破坏了,虽然实现方式有点古朴。

超华丽的法术、技能特效展示,并有仙剑系列经典招式的全新演绎——还是想回归传统。气疗术、凝神归元、元灵归心术,咋想出来的这么多好词……

BOSS战将不再是一场场的药品消耗战,“特殊的异常状态”更保证使人大吃一惊——真希望能像仙剑、新仙剑那样跑迷宫全程不磕药啊……

可预设AI的自动战斗,既方便又人性——这个……随意吧,仙四里面AI老滥用我的药品。

丰富的支线剧情,和主线情节环环相扣——这点还不错,不过私很少能玩出支线剧情……

游戏系统丰富有趣,合成炼化、四系符咒、法术修为等等,甚至boss大招都能被我方所学——四系是哪四系?难道要舍弃五灵?不会吧?

迷宫设有各种趣味解密机关,探索迷宫不再只是单纯的打怪——这个保留意见,玩了才知道……

从初稿到建模,人物造型经过多次修改调整,除小蛮外其他角色目前依然调整提升中——造型别太花哨,仙一那样就挺好……

全屏抗锯齿技术,角色表现光滑细致——有全抗?好事啊,估计RenderWare占不满私机器的性能。

肢体动作表现得生动自然、惟妙惟肖——但愿是真的……

采用实时光影,画面表现更真实绚丽——如果能做到云之遥那样应该就算不错了。

超高品质的过场CG动画,完美展现高潮情节——支持CG的存在,期待看到华丽CG……

2D人物表情和3D表情动画完美结合,剧情表现力更强——最主要2D务必过关。

丰富的场景特效美轮美奂,并加入阴晴、雨雪、风沙等气候效果——没见到真图,只能说期待吧。

花草枝叶随风摆动,呈现自然风貌——我知道肯定比不过虚幻3,不过有比无好,关键看怎么运用。

运用法线贴图,真实展现武器、服饰、景物的纹理效果——恭喜。终于用上N-1年前的技术了。还是那句话,用什么技术不是决定因素,关键看怎么运用。

清馨动听的音乐由参与过多款知名RPG的台北资深音乐师亲力打造——一直如此,并且一直不错。

游戏可随时存档(剧情阶段除外),并具备自动存档功能——+10,泪目啊……终于回归了,激动之情溢于言表……让存盘点和“软星”(这里指存盘道具)去死吧。

//

总之说得都很好,但很多东西还是要看最终效果的。

加油……