2007年4月 归档

被怱略的文件权限

| 暂无评论 | 暂无引用通告
  搭建Twiki的过程中需要使用到CGI::Session这个模块,于是我通过ssh登陆到服务器端,简单的运行cpan CGI::Session成功安装了此模块,再次运行TWiki配置脚本,可是脚本依旧提示找不着模块!跳转到perl5/site_perl目录可以找到新安装的模块产生的文件,有点莫名其妙,还以为TWiki的配置文件有问题,折腾了好久偶然间发现模块文件的权限为700,这才想起通过ssh登陆后用脚本或命令才生的文件默认权限为700! 特此记下备忘.

斯芬达克斯谜语

| 暂无评论 | 暂无引用通告
Sphinx

  在金字塔畔一块露出的巨大岩石头地雕刻着一个匍伏的狮身人面石雕,据说它就是传说中的斯芬达克斯。关于它还有一个猜谜故事。

  这个狮身人面怪盘踞在一条通往开罗的必经之路上兴风作怪,凡遇到的人他都要提出一个谜语,凡是猜不着的,都作了它的美餐。但那条谜语非常奇特,没有人能够猜着,所以人们都不敢再走那条路了。要去开罗有非常急事的人都只好绕千里而去,或者干脆不去。

  有一天,一位年轻的公子听说了这件事,他决定去试一试,别人都劝他不要去,因为去无异于送死。但他抱着为民除害的坚定信念执意要去。

  斯芬达克斯一见有人来了,非常地高兴。看来又有一餐好吃,他照例出了那条谜语:“什么东西早上是四条腿,到了中午是两条腿,当太阳落山时又变为三条腿?”

  “这个……”年轻人确实感到难猜。

  “快点!”说着他就张开那血盆大口。恨不得一口把年轻人吞下。但他想这一顿是跑不了,还是看一看这小子有什么办法。

  “是人。”

  “什么!”他感到万分的惊慌,但仍不死心,“那是为什么?”

  “因为人刚生下来还不会行走,所以他两手在地爬着走,这不是四条腿吗,当人长大些学会了走路,不是两条腿吗,当人老年迈之时走路必须拄着拐杖,这不就是三条腿吗。”

  斯芬达克思被气得哑口无言,只得承认答对了,由于羞愧难当,他举手自尽了。从此这条路又恢复了往日的繁华。

cpan的配置

| 暂无评论 | 暂无引用通告

配置文件/usr/lib/perl5/5.8.8/CPAN/Config.pm

如果第一次运行cpan命令

cpan提示进行交互的进行配置

当然我们根据自己的需要也可以手动的编辑此文件

以下是我系统中 /usr/lib/perl5/5.8.8/CPAN/Config.pm的内容:

# This is CPAN.pm's systemwide configuration file. This file provides
# defaults for users, and the values can be changed in a per-user
# configuration file. The user-config file is being looked for as
# ~/.cpan/CPAN/MyConfig.pm.

$CPAN::Config = {
  'build_cache' => q[10],
  'build_dir' => q[/root/.cpan/build],
  'cache_metadata' => q[1],
  'commandnumber_in_prompt' => q[1],
  'cpan_home' => q[/root/.cpan],
  'dontload_hash' => {  },
  'ftp' => q[/usr/kerberos/bin/ftp],
  'ftp_passive' => q[1],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'histfile' => q[/root/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[/root/.cpan/sources],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'make_install_make_command' => q[/usr/bin/make],
  'makepl_arg' => q[],
  'mbuild_arg' => q[],
  'mbuild_install_arg' => q[],
  'mbuild_install_build_command' => q[./Build],
  'mbuildpl_arg' => q[],
  'ncftp' => q[],
  'ncftpget' => q[],
  'no_proxy' => q[],
  'pager' => q[/usr/bin/less],
  'prerequisites_policy' => q[ask],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'tar' => q[/bin/tar],
  'term_is_latin' => q[1],
  'term_ornaments' => q[1],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[http://cpan.linuxforum.net/]],
  'wget' => q[/usr/bin/wget],
};
1;
__END__
 

另见文章perl命令行从中了解CPAN中的常用指令

perl中的"格式"的使用

| 暂无评论 | 暂无引用通告

页顶格式

在初始页的开头或每一新面的顶部发出。与之相关的变量: $= 页长 $-  剩下行数 随着write的使用$-会不段的减少。

定义一个页顶格式

format MYFORMAT_TOP=

PAGE @>

$#

--------------------------------------------------------------

.

此处的页顶格式与文件句柄MYFORMAT相关联

 

将格式指定到标准输出:

format STDOUT=

The  magic word is "@<<<<<<"

$word

.

format STDOUT_TOP=

Page @>>

$#

----------------------------

.

对于主格式可省去STDOUT

对于其他文件句柄确定与指派格式

此处涉及到的两个特殊变量:

$~ 当前格式

$^  当前页顶格式

设置格式时只要设置这两个变量就行了:

$topform=$^;

$^='MYFORMAT_TOP';

write;

$^=$topform;

注意保存原用的页顶格式

如果设置其他文件件句柄的格式可如下操作:

$oldfh=select MYHANDLE;

$~='MYFOMAT';

$^='MYFORMAT_TOP';

select $oldfh;

先将默认的文件句柄保存,并将MYHANDLE设为当前文件句柄,设定当前文件句柄的格式及页顶格式使用完后保存.

 

 

 

未完 

脚本如下: 

#!/usr/bin/perl
#evalformat.pl
#与STDOUT文件句柄相关联的动态计算的格式
use warnings;
use strict;

my @values=qw(first second third fourth fifth sixth penultimate utimate);

my $width=0;
foreach (@values){
        my $newwidth=length $_;
        $width=$newwidth if $newwidth > $width;
}

my $definition = "This is the \@".('<'x($width-1))." line\n".'$_'."\n.\n";

eval "format STDOUT=\n$definition";
write foreach @values;

运行结果: 

[root@supersun text]# ./evalformat.pl
This is the first       line
This is the second      line
This is the third       line
This is the fourth      line
This is the fifth       line
This is the sixth       line
This is the penultimate line
This is the utimate     line

 分析脚本:

  • 计算数组中元素的字串长度
  • 将格式赋值给变量
  • 用eval进行二次计算实现格式的定义
  • 打印到标准输出

知识点:

定义一个格式:

format MYFORMAT=

this is a @<<<< justified field

"left"

.

注意格式的定义以 "."结束

将格式到印到与格式一样名称的文件句柄中

write MYFORMAT;

如果想将格式打印到标准输出可以用以下语句

$~='MYFORMAT';

write;

或上面脚本中的定义一个与STDOUT相关联的格式

 变量赋值时表达式的使用

 $definition = "This is the \@".('<'x($width-1))." line\n".'$_'."\n.\n";

eval的使用

格式中变量的使用

红烧肉的做法

| 暂无评论 | 暂无引用通告

    彼人颇喜吃火烧肉,下班后回家无事,尝试着按此法试了一次,感觉还行,因作料未准备齐,味道不是我所期望的那种,一个人凑合着吃吧,下次改进,呵呵!

原文链接:http://www.baise365.com/bbs/viewthread.php?tid=72901





  将肉切成麻将牌大小正方形的块,肉不要切得太小,太小易缩易碎,没有卖相了。切完后,用冷水浸没,水中放半杯料酒。放在水中浸,可以浸去毛细血管中的 血水;水中加酒易于肉纤维吸收,去除肉腥。肉不宜多浸,多浸则鲜味尽失,一般浸十五分钟左右即可。                                                                                                                              





Net::Ping的简单使用

| 暂无评论 | 暂无引用通告

#!/usr/bin/perl
use warnings;
use strict;

use Net::Ping;

die "$0: 需要指定主机列表 " if !@ARGV ;
my $conf_file=shift;
my ($icmp,$udp,$tcp,$win32);
my @hostlist;

$win32 = $^O eq 'MSWin32';

$icmp=Net::Ping->new('icmp',3);
$udp=Net::Ping->new('udp',3);
$tcp=Net::Ping->new('tcp') if !$win32;

open FD,"$conf_file";
@hostlist=<FD>;

print "ICMP     UDP     TCP     主机    描述\n";
foreach my $i (@hostlist){
        chomp $i;
        my ($host,$comment)=split /\s+/,$i;
        printf "%-8s",$icmp->ping($host) || 'undef';
        printf "%-8s",$udp->ping($host) || 'undef';
        printf "%-8s",$win32 ? '不可用' :($tcp->ping($host) || 'undef');
        print "$host\t";
        print "$comment\n";
}
$icmp->close;
$udp->close;
$tcp->close if !$win32;

主机列表文件格式:

127.0.0.1       本机
xxx.xxx.xxx.xxx   网关
xxx.xxx.xxx.xxx   ISP接口
[root@supersun network]# ./netping.pl file
ICMP    UDP     TCP     主机    描述
1       1       1       127.0.0.1       本机
1       undef   1       xxx.xxx.xxx.xxx   网关
1       undef   1       xxx.xxx.xxx.xxx   ISP接口
 

使用-d选项进行perl脚本试调

| 评论(2) | 暂无引用通告

h  显示帮助信息

h command  显示command的信息如:

  DB<5> h x
x expr        Evals expression in list context, dumps the result.

p expr 相当于print函数

x [max-dep] expr 假设expr产生的结果为列表,并比较人性的将其打印出,如:

  DB<11> x map $_,(1..5)
0  1
1  2
2  3
3  4
4  5
打印二维数组设定打印深度为2

  DB<16> x 2 ([1,2,3],[4,5,6],[7,8,9])
0  ARRAY(0x8fbb83c)
   0  1
   1  2
   2  3
1  ARRAY(0x8fc4ebc)
   0  4
   1  5
   2  6
2  ARRAY(0x8f50a6c)
   0  7
   1  8
   2  9

 

从网上下载的mp3文件的文件名命令方式各式各样,有的是数字命名,有的是拼音命名,平时用起来不是很方便。如果动手一个个的更改又太麻烦,下面的脚本通过模块MP3::Tag提取的歌曲和歌手标签来确定文件名。

前一段时间我将系统(fedora core 6 codepage:gb2312)中的mp3文件复制到移动硬盘(fat32)上,所有的中文文件名全乱了挂载t移动硬盘命令(mount -t vfat -o iocharset=cp936 /dev/sda1 /media)好象没错。

如:

[root@supersun music]# ls
125206413.mp3           new.pl                 ysdmh.mp3    实馨.睾.mp3
1997cmp-10holes-15.mp3  numb.mp3               一..mp3      小.咏.mp3
2005929152321527.mp3    OneStepCloser.mp3      一夜.mp3     慊?..mp3
65541180.mp3            ouruola.mp3            一夜.谢.mp3  殖.mp3
a                       papercut.mp3           业陌.一.mp3  水俸.mp3
BeyondTheHorizon.mp3    PointsOfAuthority.mp3  之..mp3      睾-寓.mp3
BreakTheHabit.mp3       porunacabez.mp3        值..mp3      硕要..mp3
Crawling.mp3            pushing_me_away.mp3    前..mp3      碌..mp3
delid3.mp3              ruguodeshi.mp3         卤一堑.mp3   职..mp3
faint.mp3               simpleid3.pl           同..mp3      蔚某.睾.mp3
HitTheFloor.mp3         somewhereIbelong.mp3   园芫.mp3     虏..mp3
id3iconv-0.2.1.jar      tag.pl                 坦..mp3      要薷.??.mp3
InThenEnd.mp3           te.pl                  失.mp3       觳?.强.mp3
LyingFromYou.mp3        wget-log               女..mp3      魔.藕.mp3
mp3id3.pl               xs.mp3                 始..mp3

现在我们来运行脚本:

[root@supersun music]# for i in *.mp3 ;do ./tag.pl $i;done

简单的cgi脚本

| 暂无评论 | 暂无引用通告

通过脚本打印出环境变量:

#!/usr/bin/perl -T
#environment.cgi
use warnings;
use strict;

print "Content-Type: text/html\n\n";
print "<HTML><HEAD><TITLE>Environment</TITLE></HEAD>\n";
print "<BODY><ul>";
foreach (sort keys %ENV){
print "<li>$_:$ENV{$_}</li>\n";
}
print "</ul></body></html>\n";

将其放置于cgi目录中增加其执行权限:

 chmod 755 environment.cgi

运行结果如下:

  • DOCUMENT_ROOT:/var/www/html
  • GATEWAY_INTERFACE:CGI/1.1
  • HTTP_ACCEPT:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  • HTTP_ACCEPT_CHARSET:gb2312,utf-8;q=0.7,*;q=0.7
  • HTTP_ACCEPT_ENCODING:gzip,deflate
  • HTTP_ACCEPT_LANGUAGE:zh-cn,zh;q=0.5
  • HTTP_CACHE_CONTROL:max-age=0
  • HTTP_CONNECTION:keep-alive
  • HTTP_HOST:192.168.1.107
  • HTTP_KEEP_ALIVE:300
  • HTTP_USER_AGENT:Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
  • PATH:/sbin:/usr/sbin:/bin:/usr/bin
  • QUERY_STRING:
  • REMOTE_ADDR:192.168.1.174
  • REMOTE_PORT:49270
  • REQUEST_METHOD:GET
  • REQUEST_URI:/cgi-bin/environment.cgi
  • SCRIPT_FILENAME:/var/www/cgi-bin/environment.cgi
  • SCRIPT_NAME:/cgi-bin/environment.cgi
  • SERVER_ADDR:192.168.1.107
  • SERVER_ADMIN:root@localhost
  • SERVER_NAME:192.168.1.107
  • SERVER_PORT:80
  • SERVER_PROTOCOL:HTTP/1.1
  • SERVER_SIGNATURE:
    Apache/2.2.0 (Fedora) Server at 192.168.1.107 Port 80
  • SERVER_SOFTWARE:Apache/2.2.0 (Fedora)

 下面对脚本做一点改进:

待续 

top500 part1 的功能:解析出百度top500的排名数据

top500 part2 的功能:根据传给脚本歌手名 歌曲名从百度获得数据并解析出mp3文件的下载地址

而part3的功能就是检测这些链接的有效性,及文件的大小以获得完整的歌曲文件。

 

#!/usr/bin/perl
#验证文件的类型和大小
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Request;

my $url=shift;
#建立一个请求对象
my $request= new HTTP::Request ( HEAD => $url );
#建立一个用户代理
my $ua= new LWP::UserAgent;
$ua->agent("Perl_client/1.0(perl $],libwww-perl-$LWP::VERSION,$^O");

简单的web客户机

| 暂无评论 | 暂无引用通告

和这个脚本 查看一个页面的修改时间 基本一样的

#!/usr/bin/perl
#一个简单的web客户机
use warnings;
use strict;
use IO::Socket;

my @urls=@ARGV;

foreach my $url (@urls){
$url =~ m|(http://)?(.*?)(:(\d+))?(/.*)|;
my $remote_host=$2;
my $remote_port=$4?$4:80;
my $uri=$5;
print "host:$remote_host\nport:$remote_port\nuri:$uri\n";
my $socket = IO::Socket::INET->new
( PeerAddr => $remote_host,PeerPort => $remote_port,Proto => 'tcp',Timeout => '10',Type => SOCK_STREAM,) or die "Connect to $remote_host:$remote_port  : $@\n";
print $socket "GET $uri HTTP/1.0\n\n";
my $response;
$response.= $_ while(<$socket>);
print $response;
close($socket);
}

英语学习

| 暂无评论 | 暂无引用通告
Great minds think alike. 英雄所见略同。
So far,so good. 目前还不错
I have no idea what that is. 我不知道那是什么。
It is Just what I need. 这正是我所需要的。
As soon as possible! 越快越好!
A: How about going out for a walk? 出去散步怎么样?
B: Great! 太好了!
I’ll give her your message as soon as possible. 我将尽快地转达尼的留言给她。
How are things going? 事情进展得怎样?
May I ask you to postpone the meeting until the day after tomorrow?
可以要求你将会面时间延到后天吗?
Let me call back later again. Thank you. 我稍后再打电话来。谢谢你。
The view is great. 景色多么漂亮!
I'll fix you Up. 我会帮你打点的。
We have a party tonight. Would you like to come? 我们晚上有个派对,你来吗?
        I'd love to. 我很愿意来。
 Hold consultations with the organizations concerned.同有关单位磋商

简单的行计数

#!/usr/bin/perl
while(<>){
        $count{$ARGV}++;
}
foreach $file (sort keys %count){
        print "$file has $count{$file}\n";
}

注意点:巧妙的使用hash

运行结果

[root@rs1 root]# ./count.pl statistics tcp_deny.txt nohup.out serverstatistics
nohup.out has 3346
serverstatistics has 11
statistics has 22
tcp_deny.txt has 1

 

a:hover{
background-color:pink;
color:gray;
}

将其写到样式文件中

本地下载:linuxexplore 0.95

主页:http://www.holdpc.com

非常好用的小工具,在widnows下查看linux的ext3分区。

 linuxexplore

由浅入深漫谈margin属性

| 暂无评论 | 暂无引用通告

作者:blankzheng 时间: 2007-03-19

blankzheng的blog:http://www.planabc.net/

margin在中文中我们翻译成外边距或者外补白(本文中引用外边距)。他是元素盒模型(box model)的基础属性。

一、margin的基本特性

margin属性包括margin-top,margin-right,margin-bottom,margin-left,margin,可以 用来设置box的margin area。属性margin可以用来同时设置box的四边外边距,而其他的margin属性只能设置其自各的外边距。

margin属性可以应用于几乎所有的元素,除了表格显示类型(不包括 table-caption, table and inline-table)的元素,而且垂直外边距对非置换内联元素(non-replaced inline element)不起作用。

或许有朋友对非置换元素(non-replaced element)有点疑惑,稍微帮助大家理解一下。非置换元素,W3C中没有给出明确的定义,但我们从字面可以理解到,非置换元素对应着置换元素 (replaced element),也就是说我们搞懂了置换元素的含义,就懂了非置换元素。置换元素,W3C中给出了定义:

引用:
“An element that is outside the scope of the CSS formatter, such as an image, embedded document, or applet”

从定义中我们可以理解到,置换元素(replaced element)主要是指img,input,textarea,select,object等这类默认就有CSS格式化外表范围的元素。进而可知,非置 换元素(non-replaced element)就是除了img,input,textarea,select,object等置换元素以外的元素。

margin始终是透明的。

电脑病毒基础知识

| 暂无评论 | 暂无引用通告
很多时候大家都会发现用杀毒软件查出自己的机子中出现了像Backdoor. RmtBomb.12 、Trojan.Win32.SendIP.15等这些带有一串英文和数字的病毒,这时有些人就懵了,那么长一串的名字,我怎么知道是什么病毒啊?

  其实只要我们掌握一些病毒的命名规则,我们就能通过杀毒软件的报告中出现的病毒名来判断该病毒的一些公有的特性了。

  世界上那么多的病毒,反病毒公司为了方便管理,他们会按照病毒的特性,将病毒进行分类命名。虽然每个反病毒公司的命名规则都不太一样,但大体都是采用一个统一的命名方法来命名的。

  一般格式为:<病毒前缀>.<病毒名>.<病毒后缀>

  病毒前缀是指一个病毒的种类,他是用来区别病毒的种族分类的。不同的种类的病毒,其前缀也是不同的。比如我们常见的木马病毒的前缀 Trojan ,蠕虫病毒的白菏?Worm 等等还有其他的。

服装选购知识

| 暂无评论 | 暂无引用通告

要想买到称心如意的服装,在购买时应注意以下几个方面:

   选择面料 不同的面料,其质地、价格各不相同。消费者在购买时,如能懂得一点面料知识,就能既根据自己的需求选择相应面料的服装,又能防止上当。选择面料时,首先看有无明显瑕疵、有无色差以及虫蛀、鼠啮等。若有,则不符合质量要求。

    绸面料既有轻盈飘逸、凉爽透气的品种,适宜做衬衣、连衣裙,也有厚实庄重、光华富贵的品种,适宜做棉衣外套、旗袍等。真丝织品,手感光滑、轻柔,将面料互 相摩擦时,会发出清脆的声响,称为丝鸣或绢鸣,缩水率一般在5—10%;假丝绸手感粗硬,易起皱,颜色艳丽,缩水率一般小于5%;真麻织品,布面细洁光 亮,带有自然的小疙瘩,手感粗而硬,表面容易起毛,易出折痕;假麻织品,抗皱性好,但是吸湿性较差,穿着时感觉比较闷气。老年人在选择衣料时,要考虑衣料 的吸湿性、散热性、保温性和透气性。内衣质地宜用棉布或棉织品;外衣的质地则应厚挺;夏季的衣料应舒适凉快;冬季的衣料宜选用松软、厚实和保暖性好的面 料。

   查看做工 仔细查看针脚是否均匀,熨烫是否平整,领、袖、口袋是否对称,衣袖、裤腿长短肥瘦是否一致等。

   检查商标 正规的商标,应该注有规格、型号、厂名、厂址等内容,只笼统地冠以“北京服装”、“上海服装”等字样的,多是冒牌货。

    核对规格 目前,服装的规格型号基本上是统一的,“号”是指人的身高,它影响的部

还有这样玩鸡蛋的

| 暂无评论 | 暂无引用通告

 

 

学着使用简短的Perl命令

| 暂无评论 | 暂无引用通告

who |perl -ne '@F=split;print "$F[0]\n";'

开关n指的是对于输入逐行执行

开关e指执行后面的代码

split函数默认从$_中获得输及以/\s*/作表达式分隔字串

进一步简化命令

who |perl -ane 'print "$F[0]\n"';'

开关a 实现使用split分隔$_给数组@F

who |perl -lane 'print "$F[0]";'

开关l相当于 $\=$/将输入域分隔符的值赋给输出域分隔符

who |perl -lape '$_=$F[0]'

开关p相关于语句print打印默认输出并进行循环

看下面的代码

        #!/usr/bin/perl
$\ = $/; # from -l
while (<>) { # from -p
chop; # from -l
@F = split; # from -a
$_ = $F[0]; # argument to -e
print; # from -p
        }

 当需要定义输入域分隔符时使用选项 -F

perl -aF: -lne 'print $F[0]' /etc/passwd

 

原创脚本:top500 part2

| 评论(2) | 暂无引用通告

更改后比原来脚本批量下载歌曲TOP500更简洁一些

脚本第一部分为top500 part1

此部分对不提供歌手名情况的处理比直接使用if语句更舒服一些

#!/usr/bin/perl
#脚本功能:通过传入的歌名和歌手名,从百度搜索引擎的结果中解析出歌曲的下载地址
#use warnings;
use strict;
use LWP::Simple;

my ($song,$singer) = @ARGV;
my $url = defined $singer ? "+$singer" : "";
$url = 'http://mp3.baidu.com/m?f=ms&tn=baidump3&ct=134217728&lf=&rn=&word='.$song.$url.'&lm=0';
my $content = get $url;
my @links;

localtime的用法

| 暂无评论 | 暂无引用通告

演示:

[root@supersun perl]# ./localtime.pl
时间: 10:32:2
日期: Apr 12,2007
星期: Thursday
一年中的第101天
现在是白天

脚本的内容:

#!/usr/bin/perl -w
#localtime的输出:秒 分 时 日 月 年(相对于1900年的天数) 星期 the day of the year(0..364) 白天(0)/黑夜(非0)
use strict;

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime;

$year+=1900;
my @month=qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @week=qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday);
print "时间: $hour:$min:$sec\n日期: $month[$mon] $mday,$year\n星期: $week[$wday]\n一年中的第$yday天 现在是",($isdst?"晚上":"白天"),"\n";

 

一. 谁是救世主

相信看过《黑客帝国》系列的朋友都不会对主人公尼奥感到陌 生,这位闯入虚拟世界的程序员一次又一次演绎了“救世主”的角色,保护了城市居民,其形象早已深入人心。而离开电影后,我们广大的计算机用户要面对的又是 另一种亦真亦假的数字虚拟世界——网络,这里同样潜伏着许多危险,同样存在“黑客帝国”,但这里却没有尼奥这个人的存在,我们能看到的,只有形形色色的安 全厂商和他们所提供的安全工具,除此之外,似乎已经没有别的选择。

于是乎,许多用户把各种安全工具看成了这个世界中的“救世主”,我们看 到许多关于安全工具的广告,我们购买市面上流行的防病毒软件,我们在听闻每周一次的“新病毒预警”时赶紧升级病毒特征库,我们每周都对电脑进行一次漫长的 病毒扫描……许多人都这样做,许多人不得不这样做,因为我们把一切都交给杀毒工具了,我们什么都不需要做了,我们只管肆无忌弹的上网聊天看电影下软件,因 为我们有杀毒工具,这些工具都具备一个“实时监测”的功能,它每时每刻都会检查我们刚下载的文件,我们感到自己很安全,我们以为这就是网络中的防御。


灰鸽子远程监控软件分两部分:客户端和服务端。黑客操纵着客户端,利用客户端配置生成出一个 服务端程序。服务端文件的名字默认为G_Server.exe,然后黑客通过各种渠道传播这个服务端(俗称种木马)。种木马的手段有很多,比如,黑客可以 将它与一张图片绑定,然后假冒成一个羞涩的MM通过QQ把木马传给你,诱骗你运行;也可以建立一个个人网页,诱骗你点击,利用IE漏洞把木马下载到你的机 器上并运行;还可以将文件上传到某个软件下载站点,冒充成一个有趣的软件诱骗用户下载……,这正违背了我们开发灰鸽子的目的,所以本文适用于那些让人非法 安装灰鸽子服务端的用户,帮助用户删除灰鸽子 Vip 2005 的服务端程序。本文大部分内容摘自互联网。

   G_Server.exe运行后将自己拷贝到Windows目录下(98/xp下为系统盘的windows目录,2k/NT下为系统盘的Winnt目 录),然后再从体内释放G_Server.dll和G_Server_Hook.dll到windows目录下。G_Server.exe、 G_Server.dll和G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端,有些灰鸽子会多释放出一个名为 G_ServerKey.dll的文件用来记录键盘操作。注意,G_Server.exe这个名称并不固定,它是可以定制的,比如当定制服务端文件名为 A.exe时,生成的文件就是A.exe、A.dll和A_Hook.dll。

Debian GNU/Linux4.0下载地址

| 评论(4) | 暂无引用通告

Mandriva 2007的下载地址

| 暂无评论 | 暂无引用通告

很想试试Mandriva了,速度还可以。

32位和64位DVD,1张光盘(1张光盘可供两种架构使用,安装时自动选择,也可手动选择)

32位和64位CD,1张光盘(1张光盘可供两种架构使用,安装时自动选择,也可手动选择,注意只包含最基本的软件包,默认不支持中文)

32位和64位KDE版本,1张光盘,包含部分非开源软件,支持中文

32位和64位GNOME版本,1张光盘,包含部分非开源软件,默认不支持中文

32位和64位KDE版本,1张光盘,全部为开源软件,默认不支持中文

32位和64位GNOME版本,1张光盘,全部为开源软件,默认不支持中文
下载:安装版32位CD,4张光盘
下载:安装版64位CD,4张光盘
下载:32位和64位DVD,1张光盘
下载:Mini版本(只包含基础软件包)
下载:32位和64位KDE版本 包含部分非开源软件
下载:32位和64位GNOME版本 包含部分非开源软件
下载:32位和64位KDE版本 全部为开源软件
下载:32位和64位GNOME版本 全部为开源软件

别忘了关闭网卡虚拟接口

| 暂无评论 | 暂无引用通告

如果你的第二块网卡上绑了一个虚拟接口如:

eth1      Link encap:Ethernet  HWaddr 00:D8:71:F8:6B:Q1 
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:88570611 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17127317 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3042900165 (2901.9 Mb)  TX bytes:105310762 (100.4 Mb)
          Interrupt:26

eth1:0    Link encap:Ethernet  HWaddr 00:D8:71:F8:6B:Q1
          inet addr:192.168.5.13  Bcast:192.168.5.255  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:88570611 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17127317 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3042900165 (2901.9 Mb)  TX bytes:105310762 (100.4 Mb)
          Interrupt:26

 那么使用命令ifconfig eth1 down 或service network restart是并没有将接口eth1:0关闭

要关闭它我们只能明确的指定它的接口名

ifconfig eth1:0 down 

原创脚本:top500 part1

| 暂无评论 | 暂无引用通告

之前写的脚本批量下载歌曲TOP500太烂,闲着没事,改一改

#!/usr/bin/perl -w
use strict;
use LWP::Simple;

my $url="http://list.mp3.baidu.com/topso/mp3topsong.html?id=1?top2";
my $content=get($url);
my @utils=split qr(>[0-9]+?.</td>),$content;
shift @utils;
my @songdata;
for my $i (@utils)
{
        my @song;
        $i =~ s|<a .*?>(.*?)</a||;
        $song[0]=$1;
        if($i =~ m^<[A|a] .*?>(.*?)</[A|a]^){
        $song[1]=$1;
        }
        else{
        $song[1]="";
        }
        push @songdata,\@song;
}
for (0..$#songdata){
        print "$_\t$songdata[$_][0]\t$songdata[$_][1]\n";
}
重新写了一部分,对页面中数据的处理采用新的思路觉得比原来好了许多,

 此处的要点主要在对于匹文配的提取直接使用圆括号编号变量,而不再使用$&(匹配字串)$`(匹配之前字串)$'(匹配之后字串)也不再使用通过函数substr()及变量$-[0]最近一此成功匹配的最前指针位置 $+[0]最近一次成功匹配的最后指针位置

如 substr($test,$-[0],$+[0]-$-[0])就可以提取出匹配的文本

另外此处使用了二维数组 ,注意点在二维数组的创建和数组中元素的使用

脚本的第二部分:top500 part2 从百度搜索引擎的结果中解析出歌曲的最终下载地址

Doing many things, like pings

| 暂无评论 | 暂无引用通告

原 文:http://www.stonehenge.com/merlyn/UnixReview/col41.html

中文版:http://www.perlchina.org/archive/archive.php?action=archive&page=44

完整的脚本:

#!/usr/bin/perl 

sub ping_a_host {
my $host = shift;
`ping -i 1 -c 1 $host 2>/dev/null` =~ /0 packets rec/ ? 0 : 1;
}
my %pid_to_host;
my %host_result;

sub wait_for_a_kid {
my $pid = wait; #wait的返回值为子进程进程ID
return 0 if $pid < 0;
my $host = delete $pid_to_host{$pid} #从hash中删除已回收子进程的键值对
#注意到此处的delete的返回值是已删hash元素的值 
or warn("Why did I see $pid ($?)\n"), next;
warn "reaping $pid for $host\n";
$host_result{$host} = $? ? 0 : 1;
1;
}

my @hosts = map "10.0.1.$_", "001".."254";

for (@hosts) {
wait_for_a_kid() if keys %pid_to_host > 10;
#如果子进程数超过10,就开始回收子进程 
if (my $pid = fork) {
#在父进程中$pid的值为子进程的进程ID
## parent does...
$pid_to_host{$pid} = $_;
warn "$pid is processing $_\n";
} else { # child does
## child does...
#子进程中$pid的值为0
 exit !ping_a_host($_);    #子进程ping一台主机
 }
}

## final reap:此处回收所有子进程
1 while wait_for_a_kid();
#打印结果,此处的print的语句中嵌入表代式是一个小的知识点,注意用法 
for (sort keys %host_result) {
print "$_ is ", ($host_result{$_} ? "good" : "bad"), "\n";
}

 

作者:sanandi 来源:赛迪网技术社区

进程结构

进程是操作系统中的一种机制,它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。

ORACLE实例有两种类型:单进程实例和多进程实例。

单进程ORACLE(又称单用ORACLE)是一种数据库系统,一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行,所以ORACLE的代码和用户的数据库应用是单个进程执行。

在单进程环境下的ORACLE 实例,仅允许一个用户可存取。例如在MS-DOS上运行ORACLE 。

多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分 ,对于每一个连接的用户都有一个进程。

在多进程系统中,进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序,如PRO*C程序或一个ORACLE工具(如SQL*PLUS),为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于

处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行, 而不再通过网络,一般将用户进程和它相应的服务器进程组合成单个的进程,可降低系统开销。然而,当应用和ORACLE运行在不同的机器上时,用户进程经过 一个分离服务器进程与ORACLE通信。它可执行下列任务:

对应用所发出的SQL语句进行语法分析和执行。

从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。

将结果返回给应用程序处理。

避免Tomcat列出目录

| 暂无评论 | 暂无引用通告
    缺省情况下,如果你访问tomcat下的一个web应用,那么如果你输入的是一个目录名,而且该目录下没有一个可用的welcome文件,那么tomcat会将该目录下的所有文件列出来,如果你想屏蔽这个缺省行为,那么可以修改conf/web.xml文件,将其中的:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
修改为:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

JSP

| 暂无评论 | 暂无引用通告

作者:Jackie 来源:赛迪网Java论坛

    JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

    在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段 (Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片 段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无 Plugin,无ActiveX,无Java Applet,甚至无Frame。

    JSP的优点:

·    对于用户界面的更新,其实就是由 Web Server进行的,所以给人的感觉更新很快。

·    所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。

·    客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。

什么是Servlet

| 暂无评论 | 暂无引用通告

作者:未知 

    servlet是用java编写的server端程序,它与协议和平台无关。servlet运行于java-enabled web server中。java servlet可以动态地扩展server的能力,并采用请求-响应模式提供web服务。
    最早支持servlet技术的是javasoft的java web server。此后,一些其它的基于java的web server开始支持标准的servlet api。servlet的主要功能在于交互式地浏览和修改数据,生成动态web内容。这个过程为:
     客户端发送请求至服务器端;
     servlet生成响应内容并将其传给server。响应内容动态生成,通常取决于客户端的请求
     服务器将响应返回给客户端
     servlet看起来像是通常的java程序。servlet导入特定的属于java servlet api的包。因为是对象字节码,可动态地从网络加载,可以说servlet对server就如同applet对client一样,但是,由于 servlet运行于server中,它们并不需要一个图形用户界面。从这个角度讲,servlet也被称为faceless object。
     java servlet的优势:
     servlet可以和其他资源(文件、数据库、applet、java应用程序等)交互,以生成返回给客户端的响应内容。如果需要,还可以保存请求-响应过程中的信息。

 

前 言

  杀毒软件风靡全球的今天,各式各样的病毒仍然在网络上横行,其形式的多样化,自身之隐蔽性都大大的提高。其中,网页病毒、网页木马就是这个新型病毒大军中 危害面最广泛,传播效果最佳的。之所以会出此篇,也是在考虑到太多的人都在网页病毒中“应声倒下”,却不知自己是如何中毒,以及中毒后如何去处理。就此问 题,我们开始以下,对网页病毒、网页木马这一“新概念”做个详细的剖析。
注:为什么会用这么大的篇幅去介绍网页病毒、网页木马的常识和运行机理,而非机械地去介绍如何如何做,大家在通读全文后便有个新的了解。


第一章 恶意网页的基本常识



perl特殊变量:输入输出

| 暂无评论 | 暂无引用通告

$.    最近一次执行read操作、seek操作、tell操作的当前行数

$/    输入记录分隔符

$\    输出记录分隔符

$|    进行写操作时是否进行缓冲

$,    输出字段分隔符

$"    双引号字符串中列表分隔符

$;    表示多维数组计算的下标分隔符

关于此归档

这里是2007年4月的所有日记,它们按照时间从新到老排序。

上一篇日记2007年3月

下一篇日记2007年5月

首页归档页可以看到最新的日记和所有日记。