快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门24小时0524_龟发之家论坛



您可以把精力集中放在高产量的办事器端编程上,而无意偶尔仍旧可选择使界面更漂亮。此外,轻量级对象箱(例如 Perl/Tk)使这样做成为可能并且使您不必付出更为惹人注目的 GUI 措施的价值。

对象箱纵览

价值是什么?一样平常来说,与 GUI 的对应的面向敕令行的亲戚比拟,GUI 的编程、测试、移植和支配更为艰苦。人们广泛认可 Microsoft Visual Basic(VB)对 GUI 构造的简化。然而,VB 实际上被伶仃在 Windows 天下中,作为一门编程说话,它显得有点简陋,这些问题约束了 VB;假如您想具体懂得这些毛病,请参阅本文末真个 参考资料。虽然 Java、GTK+ 和 Qt 已被人们吸收并用于 Linux 和相关的开放源代码开拓,然则为了开始应用它们,您必要花去很多光阴来进修并编写很多行代码;它们的“进入门槛”阻碍了从面向字符编程向 WIMP(windows-icons-menus-pointers,窗口-图标-菜单-指针)编程的悄然转变。

虽然用户交互的 Web 模型过于简化,但对付许多小义务来说,它已足够了。事实上,我的大年夜部分 GUI 编程是关于 Web 利用法度榜样的。

然而,无意偶尔候 Web 的模型是不敷的。您必要更成熟的可编程性或不合的安然性模型。无意偶尔候,您只是必要“另一个源”;Web 办事器的基于 Web 的节制面板会使系统太脆弱。无意偶尔候,Web 的模型太 大年夜了:常见的办事器和客户机应用很多内存并必要设置设置设备摆设摆设。

然则,我有好消息。请维持高产量的系统编程习气。请应用轻量级高档说话绑定(例如澳门24小时0524 Perl/Tk 或 Tkinter)。您将获得您已开拓的法度榜样的可移植的、可掩护的、“GUI 化”的版本,这些版本澳门24小时0524能够优越地运行,您将对此认为惊奇。

无论您喜好的说话是 Ruby 照样 Fortran,精确的附件都将给您类似的时机。下面是一个已认识 Perl 的法度榜样员成功的例子。

筹备进修 Perl/Tk

您懂得 Perl。它很简洁,而且这种简洁是奇妙的,这使您能在五分钟内编写申报天生器、收集探测、文本过滤器和进程监视器,假如应用其他说话的话需一天的光阴才能完成。

然而,您可能不知道,只要再加几行代码,您就能把 Perl 利用法度榜样变为体现出色、漂亮的 GUI 澳门24小时0524利用法度榜样。在 developerWorks上有一篇 Teodor Zlatanov 的文章(请参阅 参考资料,此中有这篇文章的链接),这篇文章描述了 cfengine 和相关的 Perl 实用法度榜样,还为您演示若何编写易用的对象,例如关闭所有 inetd 进程的短小的脚本:

清单 1. kill_inetd.pl 的源代码

use Proc::ProcessTable;

$t = new Proc::ProcessTable;

foreach $p (@{$t->table}) {

# note that we will also kill "xinetd" and all processes

# whose command line contains "inetd"

kill 9, $p->pid if $p->cmndline =~ 'inetd';

}

假如您必要关闭几个有问题的 CGI 进程,怎么办?或者,假如您必要比相称残酷的“kill 9”更得体地发送旌旗灯号,怎么办?假如您不在的时刻您的老板或后备职员必要应用这个脚本,怎么办?传统的谜底是打开编辑器、把 inetd 调换成 cgi 等,然后从敕令行再次运行 perl kill_inetd.pl 。

然而,请把第一个清单转换成清单 2:

清单 2. 改动后的 kill_inetd.pl 的源代码

use Proc::ProcessTable;

use Tk;

sub kill_them {

$t = new Proc::ProcessTable;

foreach $p (@{$t->table}) {

kill $signal, $p->pid if $p->cmndline =~ $keyword;

}

$result_text = "Signal $signal sent to all '$keyword' processes.";

}

$main = MainWindow->new();

$main->Label(-text =>

"Control panel for killing processesn  enter keyword here")->pack();

$main->Entry(-textvariable => $keyword)->pack();

$radiobutton_frame = $main->Frame->pack();

$radio澳门24小时0524button_frame->Radiobutton(-text => "KILL",

-variable => $signal,

-value => 9)->pack(-side => left);

$radiobutton_frame->Radiobutton(-text => "TERM",

-variable => $signal,

-value => 15)->pack澳门24小时0524(-side => left);

$main->Button(-text => "Send kill signal to named processes",

-command => &kill_them)->pack();

$main->Label(-textvariable => $result_text)->pack();

# Set reasonable defaults.

$keyword = "inetd";

$signal = 9;

MainLoop();

Perl/Tk 还有不错的可伸缩性。全天下天天正在应用大年夜量的 Perl/Tk 利用法度榜样,包括生化模拟器、舆图绘制法度榜样、航班治理系统等。表达大年夜规模的 Perl/Tk 编程的感到是艰苦的。以上的示例演示了经由过程添加几行 Perl 来“GUI 化”是多么的轻易。假如您想更充分地体会“大年夜规模”的 Perl/Tk 编程的感到,请参阅下面的 参考资猜中的参考书并自己钻研更为繁杂的法度榜样的源代码。

一个我还没写的法度榜样(虽然我已写了这个法度榜样的原始的原型)是 Zlatanov 的遗传算法模拟器(请涉猎他在 developerWorks颁发的文章中有关这个模拟器的内容,这篇文章被列在 参考资猜中。)的图形版本。作为演习,读者可以编写一个更令人知足的版本。我自己的实验暗示这将是本专栏所保举的措施的典型:当它的批处置惩罚要领的操作在易用的 Perl/Tk Canvas 小窗口上被可视化时将变得确凿很活跃。

假如您在几年前就试用过 Perl/Tk 且 Perl/Tk 没给您留下深刻的印象,那么现在是再给 Perl/Tk 一次时机的时刻。近来 Perl/Tk 的处置惩罚器有了很大年夜的改进。对付 Perl/Tk 的初学者来说,在盛行的平台上安装二进制文件的历程被大年夜大年夜地简化,Windows 的可移植性也有了改良,最新的发行版的质量更高。有关 Perl/Tk 的书越来越多,这一点大概更为紧张。O'Reilly 在七月推出了 Perl in a Nutshell的第二版,此中有宝贵的 Perl/Tk 的参考资料。最好的消息是 O'Reilly 在 2002 年头?年月出版了由 Nancy Walsh 和 Stephen Lidie 编写的 Mastering Perl/Tk。假如您筹备较长光阴的应用 Perl/Tk,那么 Mastering Perl/Tk是一本您必要购买的参考书。

停止语

在系统法度榜样员和治理员看来,GUI 事情可能有点神秘。它类似于专业的事情,这种事情不包括我们一样平常在“办事器诊所”中进行的那些开拓。

然而,它不必是那个样子。类似 Perl/Tk 的今世的 GUI 对象箱供给了不错的机能和功能以及本专栏常常强调的高产量和易学性。请您在这个月花一两个小时,给 Perl/Tk 一次帮您包装法度榜样的时机以使法度榜样更有吸引力。

您可能还会对下面的文章感兴趣: