« 2005年10月 | 首页 | 2005年12月 »

2005年11月30日

2005年的第一场雪

记得去年肉麻过一次,
http://blog.vetcafe.net/2004/11/2004_faint.html
今年再麻一次吧。
这第一场雪确实来的晚了一些。
让我甚至有些怀疑这是否是沈阳的冬天。
温暖的办公室,寂寞的玻璃窗。
看着夜幕里灯光映出的片片雪花,
萌生出一丝淡淡的思念,
你还好吗?那片如雪花般飘舞的柳絮!



引用:

对你的思念
是一天又一天
孤单的我
还是没有改变
美丽的梦
何时
才能出现
亲爱的你
好想再见你一面
秋天的风
一阵阵的吹过
想起了去年的这个时候
你的心
到底在想些什么
为什么留下
这个结局让我承受
最爱你的人是我
你怎么舍得我难过
在我最需要你的时候
没有说一句话就走
最爱你的人是我
你怎么舍得我难过
对你付出了这么多
你却没有感动过

2005年11月29日

在网页上显示google talk online status(在线状态)

有个哥哥写了这个东西http://www.jonburrows.co.uk/PermaLink,guid,7f963879-524e-44b3-ac84-7f7550c3de04.aspx
只要加gtalkonlinestatus@gmail.com为好友。
然后就可以用

Code:
<img src="http://www.jonburrows.co.uk/gtalkstatus.aspx?User=???">

在你的网页上显示你的在线状态。
这个哥哥好像还写了一个gtalk的机器人。
jons.bot@gmail.com
不过开始这两个东西好像在我这里都没有工作。
原来加好友之后需要一段时间才会有反应的啊。
点击查看全图

2005年11月28日

孤单的飞鸟

萧瑟的风吟唱最初与最后的韵律
飘飘的凋零在雨幕中飘摇
修长的孤单迷蒙在你的眼底
俯仰间
巡礼百转千回
沐浴千丝万缕
寂寥的冥想
无悔的奢望
是鸟枪下的坠落
或是击于电上的飞扬
下一段枯枝
会是驿站
还是有他守候的家乡

生成sitemap让google搜索我blog的动态页面。

一直以来google一直按照我blog上的日历把n年前和n年后的链接都给索引了,
但就是不按文章题目进行索引,所以我这里的流量主要来自baidu.
看到google出了新的办法让站长们自己提供一个map提交给google索引。
https://www.google.com/webmasters/sitemaps/
于是就尝试一下啦。
上面说直接可以提交RSS2和ATOM的,可我用的这个程序都老掉牙了,因为虎翼的php引擎太老无法升级新的版本,这个blog程序只有RSS 1.0提供,又懒得自己写。
于是按照google推荐的格式
https://www.google.com/webmasters/sitemaps/docs/en/protocol.html
在bo-blog里自己笨笨地加了个脚本来生成这个站点地图(sitemap)文件。
刚刚提交了,但愿google能给面子索引一下。
脚本如下:
希望对和我一样同样使用老版本bo-blog的朋友能有些帮助。
生成的sitemap.xml就是地图了。

Code:


<?php
require("global.php");
ob_start();
echo '<?xml version="1.0" encoding="UTF-8"  ?'.'>';
echo '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">';
$all=@file("$dirblog/list.php");
for ($i=0; $i<count($all); $i++) {
$tmp=explode("|", $all[$i]);
$theurl="$weburl/blog.php?job=art&amp;articleid=$tmp[1]";
$timestamp=filemtime("$dirblog/$tmp[1].art");
$lastmodified=date("Y-m-d",$timestamp);
echo "<url>";
echo "<loc>";
echo $theurl;
echo "</loc>";
echo "<lastmod>";
echo $lastmodified;
echo "</lastmod>";
echo "</url>";
}
echo "</urlset>";
$xml_file = fopen("sitemap.xml", "w");
fwrite($xml_file, ob_get_contents());
fclose($xml_file);
ob_end_clean();
header("Location:blog.php");
?>

2005年11月25日

Smarty和Backbase凑合在一起用php返回ajax数据的尝试

对于smarty(一个php模板类库)和backbase(www.backbase.com 一个ajax类库)我都是知道一点点,因为backbase的response file一般为xml格式,而老版本的php里没有生成xml的方法,一般都是连接一个个的标签与变量到一个buffer里,把这个xml输出出来的,看得比较头疼。于是想了个馊主意,现把xml文件写好,里面放上模板变量。用模板的方式来实现xml文件的输出。

本例子测试地址。

http://www.vetcafe.net/vtt/

index.html
如下,使用了backbase的一些自定义标签,详细内容参考官方文档。
jykp.php返回xml文档,id为dataviewer层为返回的xml树的容器。

Code:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:b="http://www.backbase.com/b" xmlns:s="http://www.backbase.com/s">
<head>
<title>jykp</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<script type="text/j avascript" src="/Backbase/3_1/bpc/boot.js"></script>
</head>
<body onload="bpc.boot('/Backbase/3_1/');">
<xmp b:backbase="true" style="display:none;">
<s:event b:on="construct" b:action="show" />
<div align="center">
<form method="get" b:destination="id('dataviewer')" action="jykp.php">
姓名:<input type="text" name="name" /><br/>
性别:<input type="text" name="gender" /><br/>
籍贯:<input type="text" name="camefrom" /><br/>
<b:button>
<s:event b:on="click" b:action="submit" b:target=".." />
提交</b:button>
</form>
<div id="dataviewer" />
</div>
   </xmp>
</body>
</html>


Template.php
自定义继承smarty类
config_inc.php中定义了APP_BASE_DIR为脚本程序的物理磁盘路径
Code:


<?php

/*
* Created on 2005-11-25*
* Author:sleetdrop@gmail.com
*
*/


require_once ("config_inc.php");
require_once ("Smarty/Smarty.class.php");

class Template extends Smarty {

function Template() {
// Class Constructor. These automatically get set with each new instance.
$this->Smarty();
$this->template_dir = APP_BASE_DIR.'templates';
$this->compile_dir = APP_BASE_DIR.'templates_c';
$this->config_dir = APP_BASE_DIR.'configs';
$this->cache_dir = APP_BASE_DIR.'cache';
$this->left_delimiter = '{ ';
$this->right_delimiter = ' }';
//$this->debugging = true;
$this->caching = false;
}

}
?>


xml的模板文件
jykp.xml
里面的变量会被smarty替换。
Code:

<div xmlns="http://www.w3.org/1999/xhtml" xmlns:b="http://www.backbase.com/b" xmlns:s="http://www.backbase.com/s">
<b:box b:style="width:150px">您录入的数据为</b:box>
<b:spacer b:height="30px"></b:spacer>
<b:detailviewer>
<b:property b:label="姓名">{ $name }</b:property>
<b:property b:label="性别">{ $gender }</b:property>
<b:property b:label="籍贯">{ $camefrom }</b:property>
</b:detailviewer>
</div>


实现和服务器交换的jykp.php脚本
sleep三秒是为了体会loading,哈哈。

Code:

<?php

/*
* Created on 2005-11-25
* Author:sleetdrop@gmail.com
*
*/
require_once("./libs/Template.php");
$tmp = new Template();
$tmp->force_compile = true;
sleep(3);
$tmp->assign('name',$_REQUEST['name']);
$tmp->assign('gender',$_REQUEST['gender']);
$tmp->assign('camefrom',$_REQUEST['camefrom']);
$tmp->display('jykp.xml');
?>



最后列一下文件的目录结构。
backbase



用perl解两个BAIDU试题。

不是什么新奇的东西,自己也比较笨,前些时候贴在朋友的坛子里的,但他的坛子一向容易风云变幻,在这里备份一下吧。

百度之星程序设计大赛试题-1

第一题:连续正整数

题目描述:一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:

15=1+2+3+4+5
15=4+5+6
15=7+8

请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

输入数据:一个正整数,以命令行参数的形式提供给程序。

输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合要求的序列,输出“NONE”。

例如,对于15,其输出结果是:
1 2 3 4 5
4 5 6
7 8
对于16,其输出结果是:
NONE

评分标准:程序输出结果是否正确。

今天无事用perl解第一题,俺比较笨想了好半天,看来是老了。
记得他们是要求必须能通过gcc的,呵呵,可要用C代码会变长,我比较懒惰。

Code:

#!/usr/bin/perl
##########################
#        by sleetdrop
#        sleetdrop@gmail.com
##########################
print "Please input the number:";
chomp($number = <STDIN>);
for($i=2; $i<$number; $i++)
{
   for($j=1; $j<$number; $j++)
   {
           if(($i*$j+$i*($i-1)/2)==$number)
           {


           for $x ($j..($j+$i-1))
           {
               push @tmp, $x;
            }

           push (@result, [@tmp]);
           @tmp = ();
            }

    }
}
print "The result is here:\n";
if(@result)
{
       while(@result)
       {
               $outword=pop(@result);
               print "@$outword";
               print "\n";
        }
}
else
{
       print "NULL";
}





第二题:重叠区间大小

题目描述:请编写程序,找出下面“输入数据及格式”中所描述的输入数据文件中最大重叠区间的大小。

对一个正整数n,如果n在数据文件中某行的两个正整数(假设为A和B)之间,即A<=n<=B或A>=n>=B,则n属于该行;如果n同时属于行i和j,则i和j有重叠区间;重叠区间的大小是同时属于行i和j的整数个数。
例如,行(10 20)和(12 25)的重叠区间为[12 20],其大小为9;行(20 10)和(12 18)的重叠区间为[10 12],其大小为3;行(20 10)和(20 30)的重叠区间大小为1。

输入数据:程序读入已被命名为input.txt的输入数据文本文件,该文件的行数在1到1,000,000之间,每行有用一个空格分隔的2个正整数,这2个正整数的大小次序随机,每个数都在1和2^32-1之间。(为便于调试,您可下载测试input.txt文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印出输入数据文件中最大重叠区间的大小,如果所有行都没有重叠区间,则输出0。

评分标准:程序输出结果必须正确,内存使用必须不超过256MB,程序的执行时间越快越好。



首先个人感觉第二题的题目有毛病。因为数学不好,所以没敢断言是错题。
前提是这样的。


引用:

对一个正整数n,如果n在数据文件中某行的两个正整数(假设为A和B)之间,即A<=n<=B或A>=n>=B,则n属于该行;如果n同时属于行i和j,则i和j有重叠区间;重叠区间的大小是同时属于行i和j的整数个数。


但它给的例子中
引用:

行(20 10)和(12 18)的重叠区间为[10 12],其大小为3



不可理解。
如11就属于行(20 10)里,而不属于行(12 18)
我的理解重叠区间应该是[12 18],其大小是7

我真没弄明白,如果哪位给我讲讲,我可以重新写下面的代码了。

首先这里没提供input.txt文件的下载。
我自己写了一个生成程序。如下:


Code:

#!/usr/bin/perl

srand();
open INPUTTXT, ">input.txt";
$max = 2**32 + 1;
$line = 1_000_000; #要生成的行数的多少.
print "generating data...\n";
for($i=1;$i<=$line;$i++){
       print INPUTTXT int(rand($max))." ". int(rand($max))."\n";
}
print "\n";
print "finished!";
close INPUTTXT;




如果真的生成1000000行大约能生成一个20多M的文本文件。

下面是解答题目的代码,有些地方比较愚蠢,是因为本人智商有限并且比较懒惰,比如开始就把全部的数据读入内存,读近来大约150多M吧,还没超过256M的限制,还有程序的循环和判断也是比较耗费cpu的。所以如果用上面的程序生成的input.txt,会跑好长时间,事实上我自己都没耐心跑完过,呵呵。还有由于c/c++的流毒作用,所以perl代码写的不伦不类。




Code:

#!/usr/bin/perl
######################################
# by sleetdrop
# sleetdrop@gmail.com
######################################
open INPUTTXT, "< input.txt";
print "loading numbers into memory...\n";
@lines = <INPUTTXT>;
print "caculating...\n";
while(@lines)
{
       ($a, $b) = split /\s+/, pop(@lines);
       if($a>$b)
       {
            $tmp=$a;
            $a=$b;
            $b=$tmp;
        }

       for(@lines)
       {
           ($c, $d) = split /\s+/, $_;
           if($c>$d)
           {
               $tmp=$c;
               $c=$d;
               $d=$tmp;
            }
           next if($b<$c or $d<$a);
           $tcnt = $b-$c+1 if($b>$c and $b<$d and $a<$c);
           $tcnt = $b-$a+1 if($a>=$c and $b<=$d);
           $tcnt = $d-$c+1 if($c>=$a and $d<=$b);
           $tcnt = $d-$a+1 if($a>$c and $a<$d and $b>$d);
           $tcnt = 1 if ($b==$c or $d==$a);
        }
       $cnt = ($cnt<$tcnt)?$tcnt:$cnt;

}
print "the result is:\n";
print $cnt if($cnt) or print "0";


2005年11月19日

用perl按目录名批量更改文件名

提供测试文件目录结构以及perl脚本打包下载。
http://www.vetcafe.net/blog/up/1132403634.gz
下载后扩展名更改为tar.gz解压缩。

需求:
原来目录里的格式为:

Code:

[root@centos chmov]# ls -R
.:
电影  电视

./电影:
动作  爱情

./电影/动作:
方大玉  黄飞鸿

./电影/动作/方大玉:
1.rmvb  2.rmvb

./电影/动作/黄飞鸿:
1.rmvb  2.rmvb

./电影/爱情:
纯真年代  薰衣草

./电影/爱情/纯真年代:
1.rmvb  2.rmvb

./电影/爱情/薰衣草:
1.avi  2.avi

./电视:
中国  韩国

./电视/中国:
大宅门  红楼梦

./电视/中国/大宅门:
1.wmv  2.wmv  3.wmv

./电视/中国/红楼梦:
1.avi  2.avi  3.avi

./电视/韩国:
浪漫漫屋

./电视/韩国/浪漫漫屋:
1.rmvb  2.rmvb  3.rmvb


现在要根据目录名吧 1.rmvb 2.wmv这样文件改成路径名加上原来的文件名如:
电影_爱情_纯真年代1.rmvb
电视_中国_大宅门2.wmv
让每个文件拥有完全的信息,方便在emule里被索引。

解决问题的perl脚本:
Code:

[root@centos chmov]# cat chmov.pl
#!/usr/bin/perl
####################################################
#### sleetdrop@gmail.com
#### change the files name from it's original
#### name to pathname plus it's original name.
#### put this script in the beginning dir and run
####################################################


@paths=();
sub chmovname{
       for $file (glob "*"){
               if(-d $file){
                       push @paths, $file;
                       chdir $file;
                       &chmovname;
                }
               if(-f $file){
                       $newfile=join "_", @paths;
                       $newfile.=$file;
                       rename $file, $newfile;
                }
        }
       chdir "../";
       pop @paths;
}
&chmovname;



执行结果:
Code:

[root@centos chmov]# ./chmov.pl
[root@centos chmov]# ls -R
.:
chmov.pl  电影  电视

./电影:
动作  爱情

./电影/动作:
方大玉  黄飞鸿

./电影/动作/方大玉:
电影_动作_方大玉1.rmvb  电影_动作_方大玉2.rmvb

./电影/动作/黄飞鸿:
电影_动作_黄飞鸿1.rmvb  电影_动作_黄飞鸿2.rmvb

./电影/爱情:
纯真年代  薰衣草

./电影/爱情/纯真年代:
电影_爱情_纯真年代1.rmvb  电影_爱情_纯真年代2.rmvb

./电影/爱情/薰衣草:
电影_爱情_薰衣草1.avi  电影_爱情_薰衣草2.avi

./电视:
中国  韩国

./电视/中国:
大宅门  红楼梦

./电视/中国/大宅门:
电视_中国_大宅门1.wmv  电视_中国_大宅门2.wmv  电视_中国_大宅门3.wmv

./电视/中国/红楼梦:
电视_中国_红楼梦1.avi  电视_中国_红楼梦2.avi  电视_中国_红楼梦3.avi

./电视/韩国:
浪漫漫屋

./电视/韩国/浪漫漫屋:
电视_韩国_浪漫漫屋1.rmvb  电视_韩国_浪漫漫屋2.rmvb  电视_韩国_浪漫漫屋3.rmvb



我知道这个很幼稚,但自己记性不好,留在这里做存根,说不定以后还需要参考。

2005年11月18日

Normal Guy\'s Life

早上起来轻度的腹泻让我很恼火,连续去了好几次。
刮胡子的时候不小心弄破了一个小的粉刺,出了点血。
热了两个昨天剩的的豆沙包,配着咸菜吃了点。
最近几天睡眠一直不好,晚上睡不着,早上5点多就会醒。
白天却昏昏沉沉,本来又到了还助学贷款的日子,
可这几天工作有些忙,自己也不舒服,懒得去,
终于周末了,明天去把钱存上吧。
沈阳东陵这边真是偏僻,最近的工商银行都要做好一阵子的公车。

2005年11月10日

文摘-solaris下nfs设置。

想使用slackware linux的网络安装,但发现slackware只支持nfs网络安装。
slackware.vetcafe.net的slackware current镜像服务器是solaris的,所以找到这篇文章,学习架设了nfs服务器。
留在这里备查。

原文《测试在Solaris系统下NFS使用手册 》地址:
http://www.chinaitlab.com/www/news/article_show.asp?id=35971

1、理解nfs服务器和客户端功能。

nfs是sun公司来建立来使用tcp/ip协议以及sun的远程调用和外部数据表示规范的产品。nfs的使用非常方便,也比较可靠。他具有在不同操作系统之间共享文件的能力。

nfs服务器可以使用nfs来让其他远程机器共享它的本地资源。nfs客户机是访问nfs服务器的共享资源的机器。其实在实际工作中,一台主机即可以是nfs服务器,也可以是nfs客户机。他们可以互相共享和访问。

只要你能理解nfs服务器和nfs客户机之间的不同。剩下的就很easy了。

2、 nfs服务器和nfs客户机区别。

2、1 solaris使用分布式文件系统或dfs命令公享资源。公享资源可以手动和自动设置。

nfs服务器运行两个守侯进程:mountd 和 nfsd。

用到的文件是:
/etc/rc3.d/S15nfs.server
/etc/dfs/dfstab
/etc/dfs/sharetab
/etc/rmtab
nfs服务器使用命令是:share unshare shareall unshareall

nfs客户机上运行的守侯进程是:statd 和 lockd。

用到的文件是:
/etc/vfstab
/etc/mnttab
nfs客户机使用命令是:mount umount mountall umountall

2、2 nfs服务器设置

nfs服务器需要运行两个守侯进程mountd和nfsd来工作。当nfs客户机试图访问一个远程的nfs服务器资源。nfs客户机通过mount命令请求与 nfs服务器的mountd守侯进程进行连接。当nfs服务器响应客户机时候,返回给可户机一个信息。客户机把这个信息写到本地的/etc/mnttab文件中。这个信息是服务器中共享文件和目录的信息。它是资源信息的编码:磁盘设备号、节点生成号、节点号等。这个是唯一的。

一旦可户机得到请求信息,nfs服务器上的mountd进程就会在服务器本地的/etc/rmtab文件中添加一条信息。这是为了保持对当前加载可户机上文件的跟踪。这个文件为每一个被加载资源添加一个条目,格式是:
remote hostname: local filename name

注意:mountd每一次重新启动和可户机发一个卸载请求,都会更新服务器的/etc/rmtab文件中的旧条目。

2、3 共享设置命令。

明白了以上的道理,下面说具体的操作了。nfs服务器使用/usr/sbin/share命令为客户机共享资源。

命令详解:

# share ---显示所有可以安装的资源,不管它是否已经被安装。
# share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource
---指定共享文件。
* -F file system type 指定被公享的文件系统类型。
* -o options 指定客户对资源访问的类型。
* -d description 功享资源的简单描述。当你share命令不带任何参数运行,他就会被显示。
* pathname-to-resource 在服务器上共享的资源名字。
------------------------------------------------------
*-o 指定了允许客户访问共享资源的用户也权限。具体如下:
rw 表示用户可读/写,是默认植。
rw=client1:client2 指定用户可以有读/写权限。可以有很多用户,用冒号分隔。
ro 表示只读。
ro=client1:client2 指定用户client1和client2只读。client1可以是用户名,也可以是ip地址,或者一个网段。例如:ro=@202.99.88.0/24
root=client:client2 指定client1和client2上的root用户对共享资源有超级用户的权限。但是,他的优先级小于nfs服务器的本地权限。

例如:用户peng有个目录/exprot/home/games要共享。
# share -F nfs -o rw=lnx3000:race , ro=@202.88.99.0/24:sune450 ,root=mmmmn -d "i love MM !" /export/home/peng/games
运行结果:共享/exprot/home/peng/games目录,名字是lnx3000和race的两台主机有读/写权限;202.88.99.0这个c类网的机器和sun450这个主机只有读的权限;mmmmn这台主机的root用户可以对共享资源有超级用户访问权限。但是声名一点,要是我给共享目录/exprot/home/peng/games目录只读,mmmmn的root权限也没有用,只能只读。因为服务器本地权限大于任何share的权限。。

取消share资源。
# unshare [ -F nfs ] path-to-resource
* -F nfs 指定系统类型,默认。
* path-to-resource 指定共享路径。
例如:
# unshare /export/home/peng/games
取消这个共享资源了。

2、4 开机自动共享资源。

以上的命令方法,在机器重新启动的时候,设置消失。如何保留和开机自动启动nfs共享。我们可以用/etc/dfs/dfstab文件来实现自动共享文件。只要主机启动进入运行级别3,nfs资源共享自动启动。

1、编辑/etc/dfs/dfstab文件,添加:
share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource
-----这个和命令行是一样的。。。

2、# /etc/init.d/nfs.server start
这样就ok了。

3、手工快速命令。
# shareall --共享所有列在/etc/dfs/dfstab中的共享资源。
# unshareall --取消所有列在/etc/dfs/dfstab中的共享资源。

2、5 资源查看。
# dfshares
用以查看服务器的共享资源 。输入格式如下:
resource server access transprot
* resource 可被远程调用的资源的主机和路径名。
* server 指定资源的系统名称。
* access 服务器指定的权限,默认是rw,显示为“-”。
* transport 指定共享资源的端口。

# dfmounts命令
显示服务器上查看共享资源被利用的状况,输出格式如下:
RESOURCE SERVER PATHNAME CLIENTS
* resource 共享资料名称。
* server pathname 共享资料目录。
* client 连接的客户端。

# nfsstat
看nfs的全部状态

3、nfs客户机设置。

安装好nfs服务器后,就可以用客户端使用共享资料了。首先要检测nfs服务器,然后安装。

3、1 检测nfs服务器。
# showmount [ -ade ] <hostname>
* -a 显示已经已经使用的资源和来自哪个nfs服务器。
* -d 显示已经被远程安装的资源。
* -e 显示可以被安装的可以资源。一般用-e来查看远程主机的可以资源。

3、2 建立共享。
# mount [ -F nfs ] [ -o options ] path-to-resource path-to-local-mount-point
* -F nfs 指定共享文件系统,默认的。没必要指定。
* -o options 指定选项,例如权限。默认rw,可读/写。也可以ro--只读。
* path-to-rescource 指定nfs服务器的主机名和共享资源路径。
* path-to-local-mount-point 指定共享资源在本地的mount点。

例如:
# mkdir /export/home/games
# mount peng:/export/home/peng/games /exprot/home/games
共享远程主机peng的/export/home/peng/games目录,可读写,挂接在本地的/exprot/home/games目录上。

3、3取消共享。
# umount [-F nfs] remote-path-to-resource path-to-local-mount-point
* -F nfs 默认的文件系统。
* remote-path-to-resource 远程主机和共享目录路径,主机和共享目录路径用冒号分隔。
* path-to-local-mount-point 本地主机挂点。

例如:
# umount peng:/export/home/peng/games /export/home/games
取消远程主机peng上的/exprot/home/peng/games这个目录的在本地/export/home/games上的共享。

3、4 系统开机自动共享。
修改/etc/vfstab文件,格式如下:
device to mount device to fsck mount point FS type fsck pass mount at boot mount options

* device to mount 指定远程服务器名和共享路径。远程服务器名和共享路径用冒号分开。
* device to fsck 这个是空的。从来不从客户机进行文件检测。
* mount point 指定本地的mount点。这个目录必须是已经存在的。
* FS type 对于nfs资源系统来说,当然是nfs了。
* fsck pass 这个也是空的。表示不从客户机进行文件系统检测。
* mount at boot 选择yes or no,yes就是启动时自动安装。
* mount options 用逗号分隔的mount命令的列表。

例如:
# vi /etc/vfstab 添加:
peng:/export/home/peng/games - /export/home/games nfs - yes soft,bg

表示开机自动把远程主机peng的/export/home/peng/games目录自动挂到本机的/export/home/games下。soft选项是目录不能安装,产生一个错误。bg选项,系统启动过程中安装在后台。
关于mount options的参数,请用 man mount 自己看看吧。

3、5 手工调试命令。
# mountall
不带任何参数,安装所有列在/etc/vfstab文件中mount at boot中为yes的资源。
# mountall -r 只影响远程文件
# mountall -l 只影响本地文件

# umountall
不带任何参数,谢载已经安装的资源。不包括/ 、/proc、/usr、/var。另外,系统忙,也可能不会卸载。
# umountall -r 只影响远程文件
# umountall -l 只影响本地文件

小节:

到这里我想应该没有什么问题了。

大家只要注意一下客户端和服务器端的区分。

nfs服务器端运行守侯进程mound、nfsd

nfs服务器端使用文件/etc/dfs/dfstab、/etc/dfs/sharetab、/etc/rmtab

nfs服务器使用命令是:share unshare shareall unshareall

nfs客户端运行守侯进程statd、lockd。

用到的文件是/etc/vfstab、/etc/mnttab

nfs客户机使用命令是:mount umount mountall umountall

知道这些,就ok了。

FAQ :

1、运行mount命令不能得到共享资源,得到信息:“nfs server not responding”。

answer:确信服务器上nfsd和mountd已经运行,资源已经用共享命令正确共享。

2、当我企图共享到本地磁盘时,错误为:“mount:/tmp_mount not found”.

answer: 你有没有在本地创建mount点。。。

2005年11月08日

MAC OS for X86 美丽的等待

最近网上漏出MAC OS X的X86版本,和以前使用pear pc等模拟器完全不同,这次是真正的可以跑在PC上的mac os,可能这是苹果决定使用intel的cpu之后开发出来的版本,开始的时候大家还推测就算使用X86而放弃使用多年的risc的power pc处理器,也应该是让intel为其开发专有的处理器和其他pc应该是不兼容的,但看到网络上一些介绍的文章,确实有人已经在pc和本本上跑起来了那些泄露出来的版本,虽然还不算完美,但却是一个完整的可用的系统。对于MAC我一直欣羡的不得了,看着同事的苹果很是喜欢。这次应该是一个有希望的等待,等正式版本出来的时候我要装装的。因为我现在没有多余的硬盘暂时不当大白鼠了。如果哪位有兴趣,可以在这里下载
http://lib.verycd.com/2005/10/23/0000070785.html

2005年11月07日

Windows Live VS Google IG


http://www.live.com/
http://www.google.com/ig
热闹的是战场,新奇的是体验,难道这就是我们的web未来。
1.0到2.0应该算是一个革新,还是换汤不换药的游戏呢。
但确实大家都在炒作追捧,连我自己都在这里写Blog.
想想曾经email irc news才是我们的最爱。
生活总是在不知不觉中变化,真不知道是自己在追随潮流,
还是潮流引导了自己,快乐的活着或许才是意义的全部。

衰老的开始

睡眠不好,晚上失眠,白天浑浑噩噩。饭量变小,做一锅饭,如果同寝室的同事出去办事,就要在热三顿之后扔掉一部份。记忆力不好,眼前的事情都会忘掉,帮人尝试配置网络,每次都要问人家的ip是多少,重复问五六次还是记不住。生产力几乎为零,一个程序写了一年还没有结果。
好可怕的自然规律啊,力不从心是否可以理解为可望而不可及,那么习惯于幻想的我应该更容易早衰吧。

2005年11月01日

拜金之吾也爱刀($) via AdSense

今天把google的广告条顶到脑袋上来了,
因为我刚刚发现我在AdSense居然已经有1.5个dollar了。
当初看到我弟弟(http://www.xnovo.com)拿到支票的时候确实挺羡慕的,
我把google广告放到上面也就是玩玩罢了,
从来没奢望我这个每天独立ip不过二三十个访问量的blog能突破一个刀。
呵呵,以前广告那么靠下还有朋友帮着去点,真是给面子。
同时还加了meta标签和博客联盟的反向链接。
因为这个blog程序是动态页面的,所以很多的大搜索引擎都不是给面子。
在做一些努力能让站点被索引的更完全。

Code:

<META NAME="ROBOTS" CONTENT="INDEX,FOLLOW">

Code:

<script type="text/j avascript" language="Javascript" src="http://data.booso.com/referbooso.cgi"></script>

同时让RSS列出全部的纪录而不是以前的最近十条纪录,当然效率不高。
呵呵,其实做这些不过是想贴补一下域名和空间的费用。
我本市井小民。