读者来信
读者来信
计算器
感谢 Dave Taylor 在 2007 年 12 月刊 LJ 中撰写的“Work the Shell”专栏。我从中学习到了一些新知识。说实话,LJ 中的大多数文章都与我无关,但当我看到 Dave 的专栏时,我会放慢速度并认真阅读。
Dave 没有提到,但他肯定知道 calc (isthe.com/chongo/tech/comp/calc) 吧?这是一个非常强大的命令行计算器,我经常使用。
为了充分公开,Landon Curt Noll 恰好是我的私人朋友,他在我认识他很久之前就编写了 calc。请继续在 LJ 中保持您的工作。
—
Bob
戴尔 Linux 系统
戴尔 Linux 系统销量疲软,我对此负有部分责任。我刚刚购买了一台略微升级的戴尔 Inspiron 530,价格为 579.75 美元,预装 Windows XP,我将在收到它的当天重新格式化并安装 Linux。
我考虑过购买相同的 FreeDOS 或 Ubuntu 版本,但它们要贵几百美元,因为它们只提供 150 美元的折扣,而不是 Windows 提供的 360 美元折扣!
当 Linux 或 FreeDOS 机器比 XP 机器贵 210 美元时,戴尔肯定有问题。
—
Stanley Miller
感谢游戏
感谢您在 2007 年 12 月刊 Linux Journal 中刊登的三篇游戏文章。我很高兴看到 Linux 游戏领域的进步。游戏是我仍然在电脑上保留 Windows 分区的唯一原因。最好的第一人称游戏仍然只在 Windows 上 (BioShock、Oblivion 等等)。幸运的是,我最喜欢的策略游戏确实有 Linux 版本:Dominions 3 (www.shrapnelgames.com/Illwinter/Dom3/1.htm)。
—
Richard
请增加更多商业内容
我最近在 www.linuxjournal.com 上浏览了 Linux Journal 的存档文章,我注意到过去一两年,针对商业 Linux 用户的文章数量有所下降。最近的文章更多地关注家庭和教育用户以及开发人员,而不是商业管理员。
我理解在目标受众之间找到平衡是很困难的,但作为一家中型企业的信息技术部门经理,我希望更多地关注商业管理方面的内容。我正在寻找能够为我提供关于 Linux 如何以及在何处对我的组织有用的良好、详细建议的文章。阅读一篇关于瘦客户端、LTSP 以及两者如何在学校实验室环境中为学生一起使用的文章很棒,但我没有大型实验室环境,没有各种人在整天进进出出地使用相同的机器。我拥有隔间,相同的人每天都坐在相同的办公桌前,使用 Microsoft Office 和 Visual Studio 等商业应用程序。能否提供一些文章告诉我如何实施 OpenOffice.org,而不会让我的用户生气,也不会使与所有使用 Microsoft Office 的客户和供应商进行交互变得不可能?能否提供一些文章介绍将 Microsoft Access 数据库(我非常宽松地将“数据库”与“Microsoft Access”一词结合使用)迁移到带有 Web 界面的开源 RDBMS 系统的方法?重点关注企业 ERP 系统的文章?当然,我并不是建议您将注意力完全或主要地转向商业用户(除非,当然,您想另行出版 LJ),只是希望您将一些关注点带回该领域。此外,我意识到 Doc Searls 有他的“Linux for Suits”专栏,但当我读到它时,它似乎更像是报纸的社论版,而不是在商业环境中实施 Linux 的实用指南。
最后,由于我在 LJ 中读到了一些关于 Novell/Microsoft 协议的社论评论,我不得不对这笔交易发表一些看法。我理解各地 Linux 纯粹主义者对 Microsoft 的强烈反感,我意识到这当然不是理想的情况,并且我理解人们对这笔交易持谨慎态度并说:“Microsoft 这次会耍什么花招?” 这完全可以理解。但是,正如我之前所说,我管理着一个 IT 部门,Novell 正在帮助我在 Microsoft 许可方面节省大量资金,并且在不久的将来为 Microsoft 软件的替代品提供了一些非常有希望的前景,以及 Microsoft 软件和非 Microsoft 软件之间更具互操作性的系统的前景。当然,我也对 Microsoft 在这笔交易中看到了什么持谨慎态度,但我也是一位非常满意的 Novell 客户,并且看到了他们的产品在至少成为走出 Microsoft 世界并进入开源世界的门户方面的巨大潜力。
—
Nick Couchman
感谢您的评论 Nick,我们将尽快尝试收录更多以商业为导向的文章。
确定性
我喜欢 Roman Shaposhnik 在 2007 年 11 月刊 LJ 上发表的文章“Roman 定律和使用多个 CPU 核心进行快速处理”,但他对一个具有重大未来影响的问题只是略微提及。问题不是寻找使线程更具确定性的方法;问题在于我们假设计算机应该是确定性的。对确定性的依赖适用于在 8 个、16 个甚至 256 个核心上进行处理,但是 256,000 个核心呢?或者 2.56 亿个核心呢?由于错误和故障导致元素闪烁进出,这些创造物最好被想象成统计系综而不是简单的机器,无论创建了多少 OSI 类层。作为开发人员,您可以习惯于找出并行环境中出现的陷阱的方法,但如果工具和见解基于错误的基础,那么工具和见解的发挥空间就有限。在未来的某个时候,我们需要用贝叶斯置信度来代替布尔值的是或否。软件社区已经开始在像网格这样的松散耦合聚合中尝到这种滋味,但还有更多、更多的事情即将到来。
—
Jon Dunfee
困惑
多年来,我一直是 Linux Journal 的读者,并且在每期中都能找到一些乐趣。然而,我对你们在 2007 年 11 月刊中收录 Sandeep Sahore 关于他的程序 showdate 的技术技巧感到有些困惑。
尽管确定过去和未来的日期确实非常有用,但 showdate 完全没有必要,并且正如作者自己承认的那样,它存在缺陷且怪异。
请允许我介绍 GNU date,它包含在我使用过的每个 Linux 发行版中(源代码自然适用于您最喜欢的 UNIX)。为了您的读者的利益,我复制了 showdate 技术技巧中的示例,并添加了一些示例。
十年前的日期
$ date --date="10 years ago"
与上面相同,以 epoch 秒为单位
$ date --date="10 years ago" +%s
从现在起五年零两个月零 23 天后的日期,格式为 YY-MM-DD
$ date --date="+5 years +2 months +23 days" +%y-%m-%d
使用 date,当您在一个命令中组合 + 和 - 时,它会做正确的事情(与 showdate 不同)
$ date +%y-%m-%d 07-12-05 (now) $ date --date="-5 years +2 months +23 days" +%y-%m-%d 03-02-28 (2 months and 23 days after 5 years ago)
安排一个在 12 分 35 秒后运行的 at 作业
$ at -t $(date --date="+12 minutes +35 seconds" +%Y%m%d%H%M.%S)
Date 不会被大数字破坏
$ date --date="+1000 years" Sat Dec 5 16:41:40 EST 3007 $ date --date="+10000 years" Wed Dec 5 17:01:17 EST 12007
Date 也理解周
$ date --date="+3 weeks"
Date 更加灵活,例如,以下所有内容都有效
$ date --date="yesterday" $ date --date="tomorrow" $ date --date="last thursday" $ date --date="+2 weeks yesterday" (two weeks from yesterday)
公平地说,像许多 GNU 程序一样,以上很多内容仅在 info 页面(而不是 man 页面)上记录。
—
Joshua
关于技巧的另一个技巧
这是对 2008 年 1 月刊第 92 页上的技术技巧“在不丢失输入顺序的情况下删除未排序文本中的重复行”的回应。如果您安装了 Perl(大多数发行版都安装了),您可以这样做
$ perl -ne'$x{$_}++||print' /tmp/numbers
—
John W. Krahn
Bash 也能做到
我很惊讶和沮丧地看到 Dave Taylor 在他 2008 年 1 月的“Work the Shell”专栏中求助于 Perl 来将字母映射到数值。他表示 shell 不能轻易做到这一点:“如果没有付出非凡的努力,我无法想象有什么办法。”
不需要 Perl;bash 可以轻松地做到同样的事情
ordvalue=$((`printf "%d\n" "'$letter"`-96))
—
Russ Turner
Dave Taylor 回复: 酷。我不知道你可以这样做!
获得线索
Mick Bauer 在 2008 年 1 月刊 LJ 中的专栏“使用 WebGoat 获得线索”缺少一些线索。在使用 Ubuntu 7.10 进行了一些试验和错误后,我找到了所有“Gutsy”线索。Bauer 先生让我对设置 JAVA_HOME 变量感到困惑。QRG 是
$ sudo apt-get install sun-java5-jdk $ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.13 $ wget http://webgoat.googlecode.com/files/ ↪Unix_WebGoat-5.0_Release.zip $ unzip Unix_WebGoat*.zip $ wget http://downloads.sourceforge.net/owasp/ ↪webscarab-installer-20070504-1631.jar?modtime=1178324741 $ java -jar webscarab-installer-20070504-1631.jar $ java -jar "/home/username/WebScarab/webscarab.jar" $ sudo sh ./webgoat.sh start80
杀不死我的东西会让我更强大。
附注。我喜欢(希望是有意的)WebGoat 安装了 Tomcat,并且在同一期中,Alan Berg 撰写了一篇关于 Apache 和 Tomcat 效率技巧的文章,标题为“使用 Tomcat 和 Apache 将静态内容与动态内容分离”。由于我对 Tomcat 的第一次使用是 WebGoat,因此在本期稍后提及 Tomcat 让我有机会进一步探索 Tomcat。太棒了。
—
sbaker813
Iceweasel 澄清
在 2008 年 1 月刊 Linux Journal 中,Kyle Rankin 撰写了一篇关于匿名 Web 浏览的文章。尽管他的大部分内容似乎是准确的,但我注意到在关于 Knoppix LiveCD 的一个参考中存在一个相当大的错误。他将 Iceweasel 称为“Firefox 在 Knoppix 上的名称”。这是不准确的。Iceweasel 是基于 Firefox 的分支浏览器,最初由 Debian 发行版构建。Iceweasel 解决了 Firefox 浏览器中存在的非自由问题,因为如果发行版对 Firefox 浏览器进行任何更改,则无法使用 Mozilla Firefox 名称或徽标重新分发该浏览器。
—
Christer Edwards
GRUB 安全
我喜欢 Jeramiah Bowling 在 2008 年 1 月刊 Linux Journal 中发表的“Linux 安全之道”一文。但是,我确实对作者有一个小建议。他建议通过在 GRUB 配置文件中的 timeout 行下方添加以下内容来为 GRUB 引导加载程序设置密码password yourpasswordhere尽管这在技术上是准确的,但如果我们追求安全性,让我们尽量不要将密码以明文形式随意放置。
大多数主要发行版都应附带grub-md5-crypt命令,该命令允许您为 GRUB 引导加载程序生成 md5 哈希密码短语。我建议任何应用 GRUB 安全模型的人都应使用此工具生成 md5 哈希密码,并通过以下语法使用它password --md5 pasteyourmd5hashhere.
—
Christer Edwards
更多 Work the Shell 技巧
在 2008 年 1 月刊 Linux Journal 中,Dave Taylor 正在思考“如何在 shell 脚本中逐字母遍历单词”,以及后来的“如何将字符转换为相应的数字代码”。这是方法(bash)
in=linux while [ -n "$in" ]; do val=$(($(printf %d '"'${in:0:1}) - 96)) echo "... letter ${in:0:1} has value $val" in=${in:1} done
至于同一篇文章后面使用的 Perl 代码,从字符串中获取相应字节代码列表的最简单方法是使用带有 C* 或 c* 模式的 unpack。因此,以下 Perl 代码给出了他想要的结果
@values = map {$_ - 96} unpack "C*", "linux";
相应的“字母键”列表将通过以下方式生成split //, "linux";。当然,可以使用变量代替文字字符串。
—
Michal Jaegermann