读者来信
读者来信
新订阅者之爱
我刚刚收到了我的第一期 Linux Journal,我必须说我被震撼了。事实上,我突然发现自己变得怀旧起来,因为我当时正在一本计算机杂志上阅读代码——自从八十年代以来我就没有这样做过了!但这给了我一个很棒的想法。如果有一个定期专栏专门介绍编程技术怎么样?为了获得灵感,不妨看看传奇的 Commodore 大师 Jim Butterfield 撰写的专栏。或者,如果像 COMPUTE! 杂志的时代一样,刊登完整的程序列表,供读者输入或下载,那该有多酷?当然,现在,它可以专注于 Python 和 Pygame,或者 C++ 和 Gtkmm,而不是用 Apple 或 Commodore Basic 编写。也许一些著名的开源开发者甚至会乐于逐步讲解他们特别引以为豪的代码部分,并解释它是如何工作的。
我当然很喜欢杂志中关注 Linux 世界企业方面的专题报道,但我也很想看到对纯粹的编码乐趣的赞扬。
无论如何,感谢你们制作了一本很棒的杂志!我现在唯一的困境是先读 LJ 还是 Tape Op。
—
Sean Corbett
感谢您的反馈 Sean,请继续关注——您将在即将到来的期刊中看到您提到的内容。——编辑。
简洁性
Dave Taylor 在他 2008 年 8 月的专栏中使用了以下代码行
pickline="$(expr $(( $RANDOM % 250 )) + 1 )"
虽然这段代码没错,但我更喜欢这条更简单的代码行
pickline=$(($RANDOM % 250 + 1))
—
Antoine
Dave Taylor 回复: 妙哉!谨记在心。
众口难调
我注意到 LJ 比过去发表了更多的软件文章,这也是我上个月续订的原因。当我收到编程语言特刊[2008 年 10 月]时,我想,“太棒了!终于有一期关于语言的了。” 我甚至想,“我要写信感谢他们。” 然后我注意到有人写信要求更多关于硬件的文章。我想我们真是众口难调,是吧?请继续努力(但请不要忘记语言!)。
—
Louis Juska
压缩算法
2008 年 11 月 LJ 第 72 页的技术提示使用 tar 和 netcat 在系统之间复制目录树,但特定的命令选项在局域网上通常非常慢。瓶颈在于选择的 gzip 压缩 (tar -z) 执行速度缓慢。
最好根据网络和处理器速度选择压缩算法。选择更快但效率较低的算法(如 lzop)可以加快快速连接的传输速度,而慢速但有效的压缩算法(如 lzma)则更适合非常慢的网络。
作为测试,我使用了这个技术提示和各种压缩选项,从一台旧服务器 (2.6GHz P4-HT) 传输了 4.6GB 的数据,该服务器能够以大约 30Mb/s 的速度读取 ext3 文件,而千兆网络能够以大约 85Mb/s 的速度进行 tcp 传输。
使用的命令是
[server] tar $TAR_OPT -cpsf - $dir | pv -b | nc -l 3333 [client] nc server 3333 | pv -b | tar $TAR_OPT -xpsf -
使用这些选项的结果
TAR_OPT="-z" TAR=OPT="--use-compress-program=lzop" TAR=OPT=""
分别是
gzip time 679sec, rate 6.38 MBPS lzop time 357sec, rate 12.15 MBPS (none) time 160sec, rate 27.15 MBPS
在这里,网络比文件系统 I/O 快,因此任何压缩都会减慢传输速度。对于这些系统,我计算出 lzop 在网络速度低于 62Mb/s 时会有帮助,而 gzip 在网络速度低于 4Mb/s 时会有帮助。如果计算机能够更快地压缩和解压缩,这些临界点将会增加。
我没能让自己测试 lzma,因为它比 gzip 慢很多倍,但它可能对拨号传输有用。
有关压缩算法的精细比较,请参阅 Kingsley G. Morse Jr. 于 2005 年 9 月在 LJ 上发表的文章,网址为 www.linuxjournal.com/article/8051。
—
Steve Alexander
这不是厂商问题
Bonny 先生的信[“这是厂商问题”,LJ,2008 年 11 月] 激起了我们 Linux 爱好者的愤怒。尽管如此,他提出了重要的问题。
尽管有人声称情况并非如此,但 Linux 驱动程序支持与 Windows 相当,并且比 OS X 优秀得多。然而,大多数新用户都习惯于购买预装并配置了操作系统的计算机,并可以轻松安装厂商提供的任何他们添加的小部件的驱动程序。
如今,安装 Linux 已经大大改进,在大多数情况下,它比安装 Windows 容易得多。但是,现在很少有人自己安装 Windows 了。安装第三方硬件则更具挑战性。
谷歌搜索“3 mobile broadband linux”似乎表明有 Linux 支持,如果 Bonny 先生的 56K 调制解调器没有 Linux 支持,我会感到震惊。但这并不意味着让没有 Linux 发行版开箱即用支持的硬件正常工作是普通用户的技能范围之内的。
没有操作系统是完美的。我在我的 PowerBook 上运行 Linux,因为内部 NIC 坏了,而且我找不到受支持的附加卡。我经常继承一些相当新的“坏掉的” Windows 笔记本电脑。病毒感染、间谍软件、冲突的软件安装和不稳定的硬件驱动程序导致运行缓慢且不稳定。在所有情况下,干净地重新安装都会使它们恢复到像新的一样运行。在极少数情况下,Linux 系统也会遇到同样的问题。并且在大多数情况下,问题可以清理干净,但很少有 Windows 机器在 18 个月内不需要干净地重新安装。
不幸的是,Bonny 先生和许多其他用户需要 Linux 专家和非凡的厂商支持来为他们的需求配置 Linux。但是,回报将是一个更强大的系统。此外,定期使用 Linux 几个月后,必然会产生对其他地方不存在的功能的依赖。
病毒、间谍软件、损坏的注册表、不稳定的驱动程序和 dll 冲突对大多数 Windows 用户来说并不感兴趣,他们通常通过购买新系统来解决这些问题。
—
Dave Lynch
更正
在 2008 年 11 月刊的第 51 页,Daniel Bartholomew 写道,他使用他的 /etc/resolv.conf 文件映射了他的 Popcorn 设备的 IP 地址。我猜他的意思是使用他的本地 /etc/hosts 文件将名称映射到 IP 吧?
—
Jonathan Miner
Daniel Bartholomew 回复: 您是对的。这看起来像是我的大脑想着一件事,而我的手指却打出了完全不同的东西。感谢您指出这一点!
感谢 HPC 文章
作为一名自 1994 年以来每天都使用 Linux 的数值计算科学家,让我感谢你们在 2008 年 11 月刊中发表的两篇优秀文章:Michael Wolfe 关于 GPGPU 的文章和 Joey Bernard 关于用于科学计算的 Python 的文章。Linux 不仅仅是 Web 2.0。
话虽如此,我对 Joey Bernard 使用 numpy 的矩阵乘法示例有一个小小的吹毛求疵。默认情况下,numpy 对象是数组,而不是矩阵。因此,他的示例中的 a1*a2 是逐元素数组乘法,而不是矩阵乘法。为了获得他预期的结果,Joey 应该创建显式矩阵对象,或者使用 a3 = numpy.dot(a1,a2) 或 a3 = mat(a1)*mat(a2)。
除了这个小小的批评之外,我们能看到更多像 Joey 和 Michael 的文章吗,拜托!
—
Dave Strickland
数组乘法
Joey Bernard 的文章“使用 Python 进行科学计算”,LJ,2008 年 11 月,是一篇有价值的介绍,它促使我将 Python 与我自己的语言 experix 进行比较。据我所知,experix 最重要的功能是在其他地方找不到的,它是内核设备驱动程序接口对用户命令输入的详细公开。在我在华盛顿大学的实验室里,我们正在使用 experix 对配备压电和步进电机的仪器进行设备控制和数据采集;分析和存档数据;执行荧光强度分布的解析和蒙特卡罗模拟;并将蔡司 ConfoCor 系统的光子计数记录拟合到粒子分布模型。
我发现 Bernard 的数组乘法的 exe 时间非常值得怀疑。未优化的 C 语言的时间与我在我的奔腾笔记本电脑上获得的时间接近,但其他时间(对于 -O3 和 Python)是荒谬的,除非它是通过大规模并行处理完成的。
这是一个非常人为的 experix 示例,演示了 Bernard 使用 Python 完成的大部分工作以及其他一些事情,并且以适合 40 个字符列打印的方式编写。有关信息和下载,请参阅 experix.sourceforge.net 和 sourceforge.net/projects/experix
;; load some graphics stuff &~/experix/dist/xpx/graftrix ;; make a [479,503] ramp array and ;; convert to Poisson deviate .001 479 503 2 ] ]+ ]P ;; make a [503,512] array filled ;; with sin((.00005*j+10)^2) 5e-5 503 512 2 ] ]+ 10 + .sq .sin ;; multiply these and make a scaled ;; graph of the [479,512] product ]m \2k \2k Fgsa \s Igsa \s graph/skW ;; Fourier transform; graph column 1 fft> 1 -1 [s \s\-4r graph/sTzRl \3D ;; create a file called "demo" ''of def/be ''xw of "demo" file/o ;; define a format string "w DC: %g 1Hz: %g hiF: %g %g %g" ''fm1 def/r ;; make a command to write 5 numbers ;; from an array to file, formatted { of "w %d" file/w 512 * 5 [r } { of fm1 file/wn \d } | ''L1 def/rc ;; do each array column; close file $0: ,0r L1 ,0i 479 ,0c!=$0 of file/c
—
Bill McConnaughey
民主乌托邦?
在 2008 年 11 月刊中,Doc Searls 写道技术如何最终将我们带入某种民主乌托邦。我认为没有什么比这更离谱的了。我相信托克维尔创造了“多数人的暴政”这个短语来描述几乎可以肯定的结果。
为了证明这一点,只需看看当前的事件。大量的人(很可能占多数)对一位总统候选人宣布他上任第一天就关闭电台反对者的计划没有意见。完全没问题。“人民”,实际上,太容易被左右,也太容易被欺骗。
作为许多少数群体的一员,例如“自行车通勤者”、“私人飞行员”、“滑雪者”、“电子工程师”、“纳税人”、“认为吸烟者应该可以吸烟的非吸烟者”以及其他许多群体,我痛苦地意识到我始终受制于多数人。在任何时候,某种民主的善意冲动都会剥夺另一点自由的想法太真实了。当民主开始变成民粹主义和民族主义时,历史表明事情总是会变得丑陋。
我敢打赌,如果不是大多数读者,也有很大一部分读者已经带着喜悦的热情看待“向富人征税”这句话。这让我感到一阵寒意。对我来说,富人有权享有他们的财富。我希望有一天能加入他们。认为他们是我们应该为了我们的利益而榨取的少数群体是对自由的侵犯。这意味着我们不再渴望曾经写下我们宪法的平等和正义。
有人可能会问解决方案是什么。我会说少一点民主,多一点教育——那种在我们公立学校不再教授的教育。少一点亚当·斯密,多一点卡尔·马克思。历史上,没有受过教育的人把自己投票选入了某种奴役状态。
我确实同意政府更加开放是一件好事。政客们总是躲在法律术语和含糊其辞的背后。但是惠特曼对民主的颂歌简直令人恐惧。政治 24/7?每一项互动都由群众支配?拜托,不要。只要让每项法案保持在一两页的实际英语即可。
我真的不想参与每一个需要挑剔的细节,我也真的不希望政府挑剔任何细节。我希望政府担心的是个人无法完成的大事。那些比我更聪明的人可以处理的事情。处理好它,不要打扰我,这就是我的乌托邦。我随时都愿意接受多一点智慧和自由,少一点民主。
—
Gene
绝妙的新口号
微软最近发起了一项新的广告宣传活动,使用的口号是“生活没有围墙”。我发现这很有趣。你知道如果你没有任何围墙会发生什么吗?Windows 会崩溃。
—
Alexander Pennington
每月照片
您有想与 LJ 读者分享的照片吗?请将您的投稿发送至 publisher@linuxjournal.com。如果我们在杂志上刊登您的照片,我们将免费赠送您一件 T 恤。