共 32 页, « 第一页 ... « 17 18 19 [20] 21 22 23 » ... 最后一页 »
本文参考了 mod_perl 的官方文档之一, 但并不是原文档的翻译。
阅读全文 »Synergy的确是一个不可思议的软件, 在此先谢谢 smalldust 的推荐。
Synergy可以算作一款远程控制软件。一般的远程控制软件都是将服务器的画面提供给客户端使用, 而Synergy的创意很独特,它将客户端的键盘和鼠标提供给服务器使用。 这样如果你有多台电脑并且每台电脑都有自己的显示器,你可以通过 Synergy 用一组键盘和鼠标控制所有电脑, 而且每台电脑的屏幕可以连接起来,就像在同一台电脑上使用多个显示器一样。 下面介绍一下使用方法,所用版本为 1.3.1。
阅读全文 »用过 del.icio.us 的人一定知道,该网站的标题栏后面有一个标签输入框, 在输入框中输入标签名即可直接跳转到想要看的标签,而不必从纷繁芜杂的标签云中去寻找。 如果你在 WordPress 中添加了标签云, 一定也想在标题栏后添加一个类似于 del.icio.us 那样的输入框吧。
这里是仿照 del.icio.us 制作的标签输入框代码。
crumb.zip
使用方法如下。
- 首先按照这个方法打开永久链接。
- 下载 prototype,然后将 prototype 和本文附带的 crumb.js
放到你的主题目录下的 js/ 目录下,然后在主题的 header.php 的 <head> 标记内加入以下代码。
<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/prototype.js"></script> <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/crumb.js"></script> - 在你想加入标签输入框的地方加入以下代码(通常是在blog的标题后)。
<h1 id="pagetitle"> <a id="top"></a><a href="<?php echo get_settings('home'); ?>/"><?php bloginfo('name'); ?></a> <!-- 上面是blog标题,下面是标签输入框的代码 --> / <span id="crumb"><?php echo single_cat_title(); ?></span> <script> if(Crumb) Crumb.go('crumb', '<?php echo get_settings('home').get_settings('category_base').'/'; ?>'); </script> <!-- 标签输入框代码结束 --> </h1> - 最后在主题的 style.css 中增加以下代码,以定义标签输入框的样式。
span#crumb input { font-size: 0.7em; font-family:verdana,sans-serif; background-color: #FFFFFF; border: solid 1px #DDDDDD; color: #808080; } span#crumb input.crumb-focus { border: solid 1px #000000; color: #000000; }
如何在Linux下创建这样一个程序,执行之后返回shell,但程序本身驻留在内存之中继续执行?其实很简单,创建一个子进程,然后父进程结束即可。例如下面的Perl程序:
#!/usr/bin/perl
exit if fork(); # 创建子进程,然后父进程退出
while (1) { sleep 1; } # 测试用死循环
不过需要考虑到一点,守护进程通常在系统启动时以root身份启动,但是由于安全问题,通常并不以root身份运行。这一点使用perl如何实现呢?可以使用下面的 sudo 函数。
sub sudo {
my ($user, $group) = @_;
my $uid = (getpwnam($user))[2];
my $gid = (getgrnam($group))[2];
($(, $)) = ($gid, "$gid $gid");
($<, $>) = ($uid, $uid);
}
所以,一个基本的守护程序应当这样写:(sudo函数代码省略)
#!/usr/bin/perl
&sudo("myuser", "mygroup"); # myuser、mygroup为启动守护进程的用户和组
exit if fork();
while (1) { sleep 1; }
| 信号 | 值 | 动作 | 解释 |
| SIGHUP | 1 | 终端线路挂断 | |
| SIGINT | 2 | Term | 键盘输入的中断命令,从终端输入 Ctrl-C 时发生 |
| SIGQUIT | 3 | Core | 键盘输入的退出命令 |
| SIGILL | 4 | Core | 错误指令 |
| SIGABRT | 6 | Core | abort(3)发出的中止信号 |
| SIGFPE | 8 | Core | 浮点数异常 |
| SIGKILL | 9 | Term | KILL信号 |
| SIGSEGV | 11 | Core | 非法内存访问 |
| SIGPIPE | 13 | Term | 管道断开 |
| SIGALRM | 14 | Term | alarm(2)发出的中止信号 |
| SIGTERM | 15 | Term | 强制中止信号 |
| SIGUSR1 | 30,10,16 | Term | 用户自定义信号1 |
| SIGUSR2 | 31,12,17 | Term | 用户自定义信号2 |
| SIGCHLD | 20,17,18 | Ign | 子进程中止信号 |
| SIGCONT | 19,18,25 | Cont | 继续执行一个停止的进程 |
| SIGSTOP | 17,19,23 | Stop | 非终端来的停止信号 |
| SIGTSTP | 18,20,24 | Stop | 终端来的停止信号 |
| SIGTTIN | 21,21,26 | Stop | 后台进程读终端 |
| SIGTTOU | 22,22,27 | Stop | 后台进程写终端 |
常用的包括 SIGHUP(服务进程重起)、SIGKILL(进程结束)等。
WordPress有个很好用的插件:Weighted Categories, 它能够将分类名显示成tag cloud,即文章数多的分类使用大号字体,文章数少的分类使用小号字体。 但是这个插件有两个问题,一是最后一个分类的链接不正确,这一点官方主页上也有人提出过; 二是各个级别的分类的样式是通过计算得出的,无法自定义样式。
针对以上两个问题,我修改了这个插件,并将其汉化。新的插件可以在这里下载。
weighted-categories.zip
使用时将 weighted-categories.php 放到 wp-content/plugins 下,然后在管理面板中激活该插件。 然后在模板中加入以下的代码以显示tagcloud。
<div id="tagcloud"> <?php weighted_categories(1, 10, ""); ?> </div>
然后需要在模板的 style.css 中加入你自己的分类级别样式定义(必须,否则各个级别显示出来都一个样)。 附带的 style-sample.css 为示例。
修改后的 weighted_categories 定义如下:
function weighted_categories($minlevel=1, $maxlevel=10, $exclude_categories) - $minlevel: 最小级别的编号 - $maxlevel: 最大级别的编号 - $exclude_categories: 不想显示的分类id,使用逗号分割,例如 "1,25"表示不显示 id 为 1 或 25 的分类
当然,为了让这些标签看起来更像真正的标签,我们需要在WordPress的选项中打开永久链接, 并在选项->永久链接的分类基础选项中填入“/tag”,这样分类的链接就会显示为 /tag/分类名。
下载并安装 httpd 2.2。
$ tar xjvf httpd-2.2.3.tar.bz2 $ cd httpd-2.2.3/ $ ./configure --enable-rewrite --enable-so $ make $ sudo make install
下载并安装 mysql-3.23。
$ sudo tar xzvf mysql-3.23.58-pc-linux-i686.tar.gz -C /usr/local/mysql $ sudo groupadd mysql $ sudo useradd -d /usr/sbin -s /bin/false -g mysql mysql $ sudo chown -R mysql.mysql /usr/local/mysql $ cd /usr/local/mysql $ sudo ./scripts/mysql_install_db $ sudo cp support-files/mysql.server /etc/init.d/mysql $ /etc/init.d/mysqld start
下载并安装 php 5.1.6。
$ sudo apt-get install flex bison libxml2-dev
$ tar xjvf php-5.1.6.tar.bz2
$ cd php-5.1.6/
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-gd
--with-gettext --with-mysql --with-zlib-dir=/usr/lib
--with-mysql=/usr/local/mysql
在 /boot/grub/menu.lst 的内核命令后加上 vga=nnn (nnn为整数)参数可以使用高分辨率的命令行界面。其值如下。
| 640x480 | 800x600 | 1024x768 | 1280x1024 | |
| 8bit | 769 | 771 | 773 | 775 |
| 15bit | 784 | 787 | 790 | 793 |
| 16bit | 785 | 788 | 791 | 794 |
| 24bit | 786 | 789 | 792 | 795 |
我们知道,在KDE中可以通过窗口管理器方便地将窗口设置为总在最前、设置出现在所有工作区等, 但是Ubuntu 6.06的Gnome中无法做到这一点。Gnome所用的窗口管理器MetaCity认为这些不是窗口管理器的任务, 因此没有实现这些功能。好在Gnome的一名开发者为我们开发了 Devil's Pie 这个程序,它能够根据预先设定的动作自动控制Gnome中的窗口。
阅读全文 »默认情况下,在bash中按 TAB 可以自动补齐,但仅能自动补齐命令名和文件名。bash-2.05及以后的版本提供了自动补齐的编程接口,通过安装 bash-completion 来使用 TAB 键自动补齐几乎任何内容,包括参数、文件、目录甚至包名称等等。例如:(<TAB>表示按TAB键)
$ rpm -<TAB> (自动补齐参数) -F -U -V -b -e -i -q -t $ man cat<TAB> (自动补齐manpage) cat catan catanf catanh catanhf catanhl catanl catch catclose catdic catgets catopen $ tar xjvf <TAB> (补齐时仅显示tar.bz2文件) gimp-2.2.13.tar.bz2 glib-2.12.3.tar.bz2
最近的发行版一般都自带bash-completion包,如果你的bash没有这个功能,可以从这里下载bash-completion包并安装。安装方法很简单,下载到的包中包含一个 bas-completion 文件,将其放在 /etc 下,然后编辑 /etc/bashrc,在 if [ "$PS1" ]; then 的判断中加入以下内容:
if [ "$PS1" ]; then
...其他内容省略,加入以下内容
# Run bash completion code
if [ -r /etc/bash_completion ]; then
# Source completion code.
. /etc/bash_completion
fi
fi
