Cooking with Linux - 可扩展性:从简单到复杂
这是甲醇分子,弗朗索瓦。你为什么问? Non, mon ami,它可能是酒精,但它与在最崇高的液体葡萄酒中发现的酒精没有任何相似之处。那是乙醇,正如你所看到的,它的分子结构非常不同。你问我为什么要做这个?因为本期杂志的主题是内核可扩展性。你还是不明白其中的联系吗?内核可扩展性,弗朗索瓦,是一个引人入胜的开发领域。这是 Linux 未来的前沿阵地,在这个领域工作的程序员正在做着出色的工作。在我看来,似乎是因为当我们的客人到达时,我们将品尝一点葡萄酒,所以另一种可扩展性可能是有序的。弗朗索瓦,你为什么不专心听讲?
啊,我们的客人到了!欢迎, mes amis,来到 Chez Marcel,这里有精致的 Linux 佳肴、精美的葡萄酒和从头到尾的设计。弗朗索瓦和我正在讨论本期杂志的主题。请坐,你们的桌子已经准备好了,我忠实的侍者会 immédiatement 跑到酒窖去取酒。我认为 2001 年的教皇新堡葡萄酒,其浓郁的果香、诱人的质地和复杂的香气应该会很不错。你会在南翼阅读室入口旁边找到它。
在我们等待葡萄酒的时候,让我向您介绍一下今天菜单上的第一道菜。正如我告诉弗朗索瓦的那样,我觉得因为我们正在品尝一点 vin,我们的专题将探讨另一种可扩展性。正如几行代码可以对某些内核功能的性能产生巨大影响一样,几个游离的原子也可能对最终的分子产品产生巨大影响。例如,考虑一下乙醇和甲醇之间的区别。我们大多数人在多年前就抛弃了化学,除了烹饪,non?作为 KDE 套件的一部分,您可以找到 Andreas Wst 编写的一个名为 KAtomic(图 1)的小程序。它与其他的策略或益智游戏一起列在“游戏”菜单下。
如果您玩过 Sokoban,您应该会注意到这里有一些相似之处。KAtomic 的前提很简单。执行起来有点复杂。您会得到一个分子,显示在右侧窗格中,其组成原子分散在迷宫中。按下 Tab 键(或单击鼠标)会选择一个原子,然后您可以通过按一个光标键来使该原子运动。一旦运动起来,原子就会继续移动,直到撞到障碍物,无论是墙壁还是另一个原子。通过这种方式,您可以从简单中创造复杂性。这也是打发空闲时间的好方法。
正如简单的代码被用来构建越来越复杂的程序一样,我们也可以从分子转向可见的结构。今晚菜单上的下一道菜有点难以解释,我必须承认,当我第一次看到它时,我有些怀疑。它被称为 Construo,坦率地说,它被证明是一个非常容易上瘾的小程序。
Ingo Ruhnke 的 Construo 实际上是一个二维构建程序,可让您使用杆和弹簧在屏幕上构建对象,这些杆和弹簧连接在您定义的点上。然后可以运行生成的结构,这本质上意味着让现实世界的物理力作用于它。其目的是构建一个稳定的结构,但这比听起来要难得多。如果您的作品开始摇晃并最终坠落到地面,那么是时候重新思考和修改您的结构了。Construo 网站上的一份说明指出,它“目前还不是一个真正的游戏”,但我不敢苟同。要参与这个发人深省的乐趣,请访问 Construo 网站 www.nongnu.org/construo。
构建 Construo 只是提取、配置和制作的问题。是的,mes amis,这是经典的提取和构建五步法
tar -xzvf construo-0.2.2.tar.gz cd construo-0.2.2 ./configure make su -c "make install"
Runningmake install将程序安装在 /usr/local/games 中。在该目录中,您可能会找到该程序的两个版本,一个名为 construo.x11,另一个名为 construo.glut。在我测试 Construo 的 SuSE 8.2 笔记本电脑上,我发现使用 X11 版本时,图形更清晰,文本更干净(图 2)。
当程序首次启动时,您会看到一个空白的画布。在程序窗口的顶部,您会看到一些键盘快捷键。左右两侧是控制按钮。如果您在退出时中途放弃了设计,Construo 会在您下次玩时将您返回到该设计。如果像弗朗索瓦一样,从头开始的想法让您感到害怕,请单击“加载”按钮并导航到“示例”目录。在那里,您会获得许多预先构建的结构,您可以对其进行修改,直到您更有信心从头开始创建。
要添加一个点,请在屏幕上单击鼠标左键,移动到您希望对侧点(或关节)所在的位置,然后再次单击鼠标左键。要删除一个点,请单击鼠标右键。在某个时候,您应该感觉自己创造了一些相当稳定的东西。单击“运行”按钮以启动物理定律,并观察您的结构在压力下的表现。很可能,您的第一个作品会弯曲、扭曲、倾倒并最终倒塌——这可能会非常有趣。Construo 可让您设置运动中的物体(查看篮球演示)、在路径上放置障碍物(碰撞器)以及以其他方式释放您的创造力。
要修改和加强您现在已拆除的作品,请单击“撤消”,您的任何东西(或曾经是什么)都会恢复到以前的辉煌状态。当您对创作感到厌烦并准备重新开始时,请按 C 键清除场景,您将再次开始您的机械攀登,达到新的高度。
在坚实的地基上建造东西已经足够有趣了,但尝试在 3-D、零重力虚拟世界中建造它们。这就是这款 Linux 厨师曾经遇到的最奇怪的游戏之一背后的想法。该程序名为 Ensemblist,是为 2003 年巴黎游戏编码展览而创建的。这是另一个看似简单但结果却远不止于此的想法。您所要做的就是使用简单的几何形状构建屏幕上呈现给您的形状。此程序集使用简单的编程和数学原理:布尔、并集和交集。
我是否忘了提及这些形状是三维的,并且漂浮在网络虚拟空间中,可以在任何轴上旋转?这就是作者 rixed 和 dom 所称的 CSG,即构造实体几何(图 3)。
Ensemblist 以源代码形式从 www.nongnu.org/ensemblist 分发。使用以下命令解压文件后tar -xzvf ensemblist.tgz并使用以下命令切换到源目录cd ensemblist,您只需运行make。编译完成后,键入su -c 'make install'。现在,通过键入以下命令运行程序ensemblist在命令行中。Ensemblist 默认安装在 /usr/local/games 中。
接下来发生的事情第一次会有点奇怪。程序连接到 Ensemblist 网站,之后您会发现自己漂浮在流程图图表(图 4)上方,您可以在其中看到您的用户名和当前分数(为 1 分)。在该介绍框下方有两个选项:“确定”和“退出”。使用鼠标,您可以通过向上或向下移动光标来放大和缩小此场景。单击“确定”,您将被传送到游戏选项,您可以在其中选择自由游戏或选择一个战役,该战役将带您完成一些预定义的关卡。您可能想从战役开始。您可能还想请弗朗索瓦倒满您的酒杯,以稳定一下自己。
当游戏开始时,您选择的对象会显示在以分形墙壁为界限的球形空间的中心。单击右下角的“播放”图标,动作就开始了。在左下角,一个计数器在滴答作响。您需要用来创建最终形状的对象是几何图元,它们都位于左上方。这些对象之间用并集运算符分隔。单击并集运算符可以在并集(看起来像 U 形)、交集(倒 U 形)和减号(减号)之间进行选择。在右下角,会出现新图标,以便您可以查看原始形状、退出或声明胜利。
这就是全部内容。根据这些简单的规则,将形状移入和移出中心构建区域。这也是您发现简单可能有多困难的地方。Ensemblist 非常奇怪且令人上瘾。在后续游戏中,您可以在启动游戏时使用 --no-net 选项,因为现有关卡已下载到您的系统。在您下次单击“播放”之前,请注意标记为“编辑器”的框。是的,如果您觉得自己可以胜任,您甚至可以创建自己的关卡并帮助构建 Ensemblist 世界。
Mon Dieu!似乎我们已经设法结束了又一个夜晚。也许,受到应用简单思想可以产生的复杂奇迹的启发,你们这些优秀的人可能会发挥你们的才能来制造一台机器,让我们有更多的时间,non?延长时间当然可以算作将可扩展性提升到新的高度。不过,现在肯定还有时间再喝一杯葡萄酒。放松一下,完成您正在做的事情,弗朗索瓦会为您倒上最后一杯。如果您感觉有点太放松了,很高兴知道您只需要将酒杯举到嘴唇的高度即可。开个小玩笑,mes amis。享受吧!直到下次,mes amis,让我们一起为彼此的健康干杯。A votre santé Bon appétit!
Resources
Construo: www.nongnu.org/construo
Ensemblist: www.nongnu.org/ensemblist
KAtomic: games.kde.org
Marcel's Wine Page: www.marcelgagne.com/wine.html
Marcel Gagné (mggagne@salmar.com) lives in Mississauga, Ontario. He is the author of the newly published Moving to Linux: Kiss the Blue Screen of Death Goodbye! (ISBN 0-321-15998-5) from Addison Wesley. His first book is the highly acclaimed Linux System Administration: A User's Guide (ISBN 0-201-71934-7). In real life, he is president of Salmar Consulting, Inc., a systems integration and network consulting firm.