给编辑的信

作者:Various
代码示例

有没有可能把 LJ 代码示例放到网站上,这样我就不用自己输入了?特别是像 2 月 '97 期第 6 页的 PGP 补丁这样复杂的东西。谢天谢地。真的,我觉得这会很棒。—Peter Watkins Washington, DC peterw@clark.net

我们也认为这是一个好主意,从本期开始,示例代码可以在 ftp://ftp.linuxjournal.com/lj/listings/issue##/ 找到。这些文件是 tar, gzip 文件,每个文章一个,命名为 article##.tar.gz。每篇包含列表的文章都会有一个脚注,告诉你文章编号。

缩略语使用

我的第一个问题是,“CGI 代表什么?” 第二个问题是,“为什么编辑们从不确保在杂志中至少定义一次这个缩写?” 这种不定义缩略语的做法让我非常恼火,因为计算机世界充满了缩略语。这种环境下的缩略语也非常依赖上下文——以至于像这样的术语定义应该在任何地方出版的每篇文章中都是强制性的。—Mac Bowles Senior Software Engineer Lockheed Martin Astronautics kbowles@claven.mmc.den.com

首先,CGI 代表 Common Gateway Interface(通用网关接口)。其次,我同意随意使用缩略语而不定义它们是很烦人的,并计划在未来更加小心。

学校中的 Linux

我读了 Jack McGregor 先生写给Linux Journal的信,他正在推动学校使用哑终端(低成本)。我是一名 Linux 顾问。但是,我不是在推销哑终端,而是在推销使用旧 386 和 486 PC 的基于 Linux 的 X 终端。我对低端 486 的经验表明,它们确实非常快速且有趣,可以操作主要的桌面软件包(WordPerfect、Netscape、Applixware 和 StarOffice 是我尝试过的一些)。它们也可以运行游戏(例如,Doom)。

我的客户转向这种解决方案不是为了省钱,而是为了获得原始速度。例如,有人使用双 Pentium Pro 200MHz 搭配 192MB 内存作为 10 个用户(C++ 开发人员)的服务器。所有用户的所有内容都一直存在于内存中。在加载软件或搜索目录等方面,这胜过任何网络。在一个案例中,他们通过共享同一服务器而不是更标准的 Windows 到服务器关系所获得的速度提升接近 10 倍。

虽然 X 对于某些人来说是一项旧技术,但 Linux 正因其低成本而将其变成一场革命。—Jacques Gelinas jacques@solucorp.qc.ca http://www.solucorp.qc.ca/linuxconf/

Red Hat 安装问题

我已经使用 Slackware 3.0 发行版(1.2.13 内核)一年多了。我想升级到 2.0 内核,并决定新的 CD-ROM 发行版会很方便。在阅读了 LJ 读者选择奖中关于 Red Hat 4.0 的报道以及 InfoWorld 的评论,该评论将 Red Hat 4.0 选为 1996 年两个最佳操作系统版本之一(另一个是 NT 工作站)之后,我决定订购。

我的安装(大约十几次尝试)都受到了随机的段错误、堆栈转储和重启的困扰。Red Hat 支持团队按照宣传的那样做出了回应,并暗示硬件(即 CPU、RAM、缓存、主板)导致了我的问题。Red Hat 技术人员将我指向 RAM 或缓存,因为我刚刚安装了一个全新的主板,并且他认为主板或全新的缓存不是问题。最后,Red Hat 技术人员建议

“Red Hat 有时无法(出于未知原因)在某些可以运行 Slackware 的硬件上运行。”(来自 Red Hat 支持的电子邮件。)

我让一家当地的计算机维修店诊断了我的 RAM,该店有一位硬件技术人员,他也是一位 Linux 大师。RAM 没有报告任何问题,但技术人员无法重现我的安装症状。

最后,我有点茫然,并且仍然怀疑 RAM,我购买了一些额外的 RAM。我最后一次尝试安装,只使用了新的 RAM——我仍然无法成功安装 Red Hat 4.0。唉,我又回到了 Slackware 3.0,并且为 Red Hat 损失了 60 美元。

我真的很失望我无法让 Red Hat 4.0 工作。似乎 Red Hat 在配置、安装等方面为新的 Linux 用户提供了很多。但是,正如微软可以证明的那样,任何商业发行版都很难支持每种 PC 配置。我的 PC 就是证据。

不过,一切都没有丢失。作为我们软件制造公司的网站管理员,我负责内部网网页。我们需要一个新的内部网络服务器,我坚决要求它在 Linux 机器上运行。也许 Red Hat 发行版可以承担这个任务。但对于我的 PC 来说,我还是坚持使用 Slackware。—Jeffery C. Cann Software Engineer jcann@intersw.com

购买 Linux

Cory Plock 想知道为什么他在当地软件商店的货架上找不到 Linux 发行版(LJ 1997 年 2 月)。也许他只是生活在一个技术落后的地区。我刚刚查看了我在魁北克市最近的购物中心电脑商店:他们有 6-CD InfoMagic 包和 4-CD Walnut Creek 发行版,都是最新的并且价格具有竞争力。附近的一家商店有几本关于 Linux 的书。发行机制一定存在——鼓励当地经销商使用它们。—Don Galbraith dsg@clic.net

在线 Linux 用户组

您好。我一直是 LJ 的长期读者,它对我帮助很大,我相信这对 Linux 社区的许多人也适用。现在,我和我在网络上的朋友也为 Linux 做了一些贡献,我认为您会感兴趣并且对您的读者有帮助。这是创建一个在线 Linux 用户组,供那些有兴趣了解更多关于 Linux、为其他 Linux 用户提供帮助和推广 Linux 的人使用。我们的网址是:http://www.linuxware.com/。—Peter Lazecky peteri@linuxware.com

自动挂载文章评论

我正在使用 Red Hat 4.0 自带的 amd 版本。NFS 主机正在运行 SunOS 4.1.4 和 Solaris。我发现关于 amd 相对没有 bug 的说法是不正确的。在使用它的头几天,我发现了两个重要的 bug。第一个是它混淆了一台机器的节点名称和另一台机器的 IP 地址。也就是说,我在 /net 目录中找到了来自一台机器的目录,但名称却是另一台机器的。我经历过的第二个 bug 已经发生过几次了。如果一个目录被卸载,amd 似乎不知道如何在几分钟后挂载它。这两个 bug 都会导致目录消失——包括我的主目录。当存在这些主要的类型问题时,很难证明使用 Linux 是合理的。

正如你所看到的,这对我来说是一个大问题。我在 dejanews 中看到了几个帖子,提到了 amd 的其他问题。我希望看到更多的支持,但在这一点上,我发现很少有关于 amd 大多数问题的答案。无论如何,感谢这篇文章。—David Uhrenholdt duhrenho@vette.sanders.com

Larry Wall 文章评论

今天上班路上我读了 Larry Wall 关于 Perl 的文章。我的工作涉及 C、Korn shell 和 Perl。我确信 Perl 是一种了不起的语言。Wall 先生的文章支持了这一点。

我理解创造力是大量调色板的功能(……方法不止一种……)以及“形式追随功能”的理论。我的结论是,Perl 作为一种开发工具是不可接受的,因为我无法支持它。即使那个人是我,也需要花费太长时间才能发现(收集、弄清楚、猜测、推敲)原始开发者使用了哪种无数种可能的方法。我将继续编写 Perl 以获得乐趣,并为重要的系统使用更可记录、可支持的语言。

我也想知道,如果 Wall 先生不在每段都试图变得有趣,他的写作是否会更有效。他在语言上相当于那些咄咄逼人的图形,这些图形阻止了许多人阅读那本非常时尚的旧金山流行文化杂志。—Brandon Sussman #VATAcc70713@vantage.fmr.com

多边形的另一种算法

1997 年 2 月 5 日:我喜欢 Bob Stein 在您三月刊中关于判断点是否在多边形内的算法的有趣文章(“关于多边形的一个点”)。可惜 Bob 不熟悉 WN 网络服务器中使用的算法(参见 http://hopf.math.nwu.edu/),因为它与他描述的算法相比,有一些有趣的相似之处和不同之处。像 Stein 的算法一样,它使用整数(实际上是长整数)算术而不是浮点数。

我第一次在 1995 年 7 月发布的 WN 版本中使用了这个算法。与 Stein 的算法一样,我们首先进行平移,因此测试点位于原点。不是计算与正 Y 轴交叉的次数的奇偶性,而是计算实际的有符号交叉次数(我使用了正 X 轴而不是 Y 轴,但这无关紧要)。更准确地说,如果一条边以正斜率穿过正 X 轴,则算法计数 +2,如果它以负斜率穿过正 X 轴,则计数 -2。如果一条边结束在正 X 轴上,则根据斜率,它仅获得 +1 或 -1 的计数。如果边完全位于正 X 轴中,则计数为 0。如果原点(测试点)实际上在任何边上,我们声明该点在多边形内并退出。在所有边都被计数之后,我们声明测试点仅当总计数为零时才在多边形外。

WN 中的实现大约是 Stein 实现的三倍长,这主要是因为我希望即使在实践中它们并不重要,也能正确处理所有特殊情况。特别是,如果测试点在一条边上,它始终被声明在多边形内。此外,只有两条边的多边形或退化多边形(如点)也能正常工作。

当多边形不是简单多边形(即自相交)时,这两种算法的行为方式存在一个非常大的差异。想象一下以通常的方式绘制的五角星,而无需将笔从纸上抬起。使用奇/偶计数,只有星形的五个三角形“尖端”中的点将被视为在内部,而五边形中心区域的点将被视为在外部。另一方面,WN 算法将计算所有这些点,尖端和中心,都为“内部”。事实上,这就是我选择这种方法而不是奇/偶计数的原因。

造成这种差异的原因并不难理解。想象一下,多边形是一根拉伸的橡皮筋,用图钉固定在桌子上,每个顶点都用图钉固定。在测试点,我们竖起一根垂直于桌子的柱子。现在移除所有图钉,让橡皮筋收缩到柱子上。它可能会围绕柱子正向或负向(即逆时针或顺时针)缠绕若干次,或者它可能根本没有钩在柱子上。奇/偶算法正在计算它缠绕的次数是偶数还是奇数,而 WN 算法正在计算完整次数。

如果多边形不自相交,则实际数字只能是 0、+1 或 -1,因此奇/偶算法可以正常工作。对于五角星,如果柱子放在中心区域,则橡皮筋会缠绕两次,因此算法会给出不同的答案。

如果有人对 WN 实现感兴趣,只需下载发行版,并在 wn/image.c 文件中查找函数 dopoly()segment()。该发行版可以在 http://hopf.math.nwu.edu/ 找到。—John Franks john@math.nwu.edu

加载 Disqus 评论