Linux 的文件属性的数字表示

Linux 文件或目录的属性的二进制表示:

<?php
$f
= $argv[1
];
echo
sprintf(‘%016s’,decbin(fileperms($f))) ."\n"
;
?>

每个二进制位代表特殊的含义:

从高到低:

1 说明是文件, 否则是目录

1 如果是文件,说明是sock文件

1 不知道

1 如果是文件,说明是pipe文件

1 属主的s位

1 属组的s位

1 粘着位t

1 属主可读

1 属主可写

1 属主可执行

1 属组可读

1 属组可写

1 属组可执行

1 其他用户可读

1 其他用户可写

1 其他用户可执行

将数字转换成字母的形式,php

 

<?php
define
("S_ISUID",04000
);
define("S_ISGID",02000
);
define("S_ISVTX",01000
);

define("S_IRUSR",0400);
define("S_IWUSR",S_IRUSR >> 1
);
define("S_IXUSR",S_IRUSR >> 2
);
define("S_IRGRP",S_IRUSR >> 3
);
define("S_IWGRP",S_IRUSR >> 4
);
define("S_IXGRP",S_IRUSR >> 5
);
define("S_IROTH",S_IRUSR >> 6
);
define("S_IWOTH",S_IRUSR >> 7
);
define("S_IXOTH",S_IRUSR >> 8
);

$mode fileperms($argv[1]);
echo 
strmode($mode) ."\n"
;
function 
strmode($mode
) {
        
$str 
;
        
$str .= $mode S_IRUSR ‘r’ ‘-‘
;
        
$str .= $mode S_IWUSR ‘w’ ‘-‘
;
        
$str .= ($mode 
S_ISUID
                        
? ($mode S_IXUSR ‘s’ ‘S’
)
                        : (
$mode S_IXUSR ‘x’ ‘-‘
));
        
$str .= $mode S_IRGRP ‘r’ ‘-‘
;
        
$str .= $mode S_IWGRP ‘w’ ‘-‘
;
        
$str .= ($mode 
S_ISGID
                        
? ($mode S_IXGRP ‘s’ ‘S’
)
                        : (
$mode S_IXGRP ‘x’ ‘-‘
));
        
$str .= $mode S_IROTH ‘r’ ‘-‘
;
        
$str .= $mode S_IWOTH ‘w’ ‘-‘
;
        
$str .= ($mode 
S_ISVTX
                        
? ($mode S_IXOTH ‘t’ ‘T’
)
                        : (
$mode S_IXOTH ‘x’ ‘-‘
));
        return 
$str
;
}
?>

还没写完呢,还会更新呢

具体代码参考coreutils-6.10\lib 下面的如下文件:filemode.h  filemode.c sys_stat.h  ,具体写起来也很复杂的,主要是不同的系统就不一样

关于粘着位

在Linux下,/tmp是一个存放临时文件的目录,要求是对所有用户可写。但每个用户都只能删除自己拥有的文件。这种情况下,就可以把目录加一个粘着位。

  [root@yaoyao /]# ls -l |grep tmp
  drwsrwsrwt 9 root root 4096  8月7 10:50 tmp

  注意第是个字符“t“,它代表了这个目录被设置了粘着位。

  我们自行建立一个abc的目录,使之具有和/tmp相同的特点

  chmod 777 abc
  chmod +t abc

  上述的个两个命令组合等同于下边的一个命令:

  chmod 1777 abc

  用ls –l 看abc 目录的属性如下:

  [root@yaoyao test]# ls -l

  总用量 4

  drwsrwsrwt 2 root root 4096  8月 7 11:32 abc

  和/tmp目录相同的需求往往在ftp服务器的upload 目录中也存在。可以用相同的方式处理。
此信息出自广州北大青鸟:<a href=’http://www.gz-benet.com.cn’>http://www.gz-benet.com.cn</a>

 

你需要知道的

   1,事业永远第一
  虽然金钱不是万能的,但没有钱是万万不能的,虽然这句话很俗,但绝对有道理,所以30岁之前,请把你大部分精力放在你的事业上.
  2,别把钱看得太重
  不要抱怨自己现在工资低,银行存款4位数以下,看不到前途,现在要做的就是努力学习,即使你文凭再高,怎么把理论运用到实践还是需要一个很长的锻炼过程,社会永远是一所最博大的大学,它让你学到的知识远比你在学校学到的重要得多,所以同样,你也别太介意学历低.30岁之前靠自己能力买车买房的人还是极少.
  3,学会体谅父母
  别嫌他们唠叨,等你为人父了你就知道可怜天下父母心,在他们眼里你还是个孩子,但他们真的老了,现在得你哄他们开心了,也许只要你的一个电话,一点小礼物,就可以让他们安心,很容易做到.
  4,交上好朋友
  朋友对你一生都影响重大,不要去结识太多酒肉朋友,至少得有一个能在关键时刻帮助你的朋友,如果遇到这么一个人,就好好把握,日后必定有用,不管他现在是富还是穷.
  5,别太相信爱情
  心中要有爱,但请别说也别相信那些琼瑶阿姨小说里面的山盟海誓,世上本无永恒,重要的是责任,但女人心海底针,心变了,一切都成枉然,你要做的就是该出手时就出手,该放手时别犹豫.30岁之前的爱情不是假的,但只是大多数人都没有能真正把握好的能力,所以学会量力而行.
  6,别担心至今还保留初吻
  爱情不在多而在精,别以为自己20多岁还没碰过女孩子就害怕自己永远找不到老婆.以后你会有很多机会认识女孩子,要知道这个社会虽然男人多于女人,但现实是女人其实比男人更担心这个问题.男人30一枝花,你在升值而不是贬值,成熟的爱情往往更美丽更长久,所以不要像疯狗一样看到女孩就想追,学会品味寂寞.
  7,不要沉迷于任何东西
  所谓玩物而丧志,网络游戏是你在出校门之前玩的,你现在没有多余的时间和精力花费到这上面,否则你透支的东西以后都得偿还.一个人要有兴趣,爱好,但请分清楚轻重.
  8,年轻没有失败
  不要遇到挫折就灰心,年轻人要时刻保持积极向上的态度.失败了,重来过;失去了,再争取别的。错过了,要分析,下次来,要把握;幼稚了,下次,成熟点。不要紧,会好的,哪怕到了极点,也不要放弃,相信一定可以挺过去。不要消极,会好的。曾经的错,过去了,总不能回味在过去。现在的,很好,累完了,很舒服。不要伤,总会有人在支撑你。
  9,不要轻易崇拜或者鄙视一个人
  人都有偶像,但请拥有你自己的个性.不要刻意去模仿一个人,因为你就是你,是唯一的,独一无二的,要有自信.也不要全盘否定一个人,每个人是有价值的,如果你不能理解他,也请学会接受.
  10,要有责任心.
  不管你曾经怎样,但请从现在开始做一个正直的人.男人要有责任心,无论是工作还是生活上,一个有责任心的人才能让别人有安全感,才能让别人觉得你是一个值得信赖的人.我们不要懦弱,但请不要伤害爱你的人和你爱的人,尤其是善良的女孩,因为这个世界善良的女孩不多了,即使不想拥有,但也请让她保持她美丽的心.
  11,男人的外貌并不重要.
  不要为自己的长相身高而过分担心,一个心地善良,为人正直的男人远比那些空有英俊相貌,挺拔身材但内心龌龊的男人要帅得多.如果有人以貌取人,请不要太在意,因为你不用去为一个低级趣味的人而难过.
  12,学会保护身体
  不要以为现在抽烟喝酒,熬夜通宵也没什么事.那是因为你的身体正处于你一生的黄金时段.30岁以后你就能明白力不从心这个词的意义了,身体是革命的本钱,没有好的身体什么也做不了,所以要尽量让自己过有规律的健康生活.
  13,别觉得一事无成.
  你现在还没有资格谈成功,当然如果你有千万资产的除外.一开始太固定的职业并不一定是好事,或许在不断的改行当中,你会学到更丰富的知识,而且可以挖掘出自己的潜能,找到最适合你的工作.
  14,请认真工作
  即使你现在的工作再怎么无聊再怎么低级,也请你认真去对待,要知道任何成功人士都是从最小的事做起,或许你现在学不到多么了不起的知识,但起码你要学会良好的工作态度和工作方法,这对以后很重要.
  15,请认真对待感情.
  不要羡慕那些换女人像换鞋一样的花花公子,逢场作戏的爱情只是让你浪费时间浪费精力,一个人最痛苦的不是找不到爱人,而是心中没有了爱,当你把我爱你3个字变成你最容易说的一句话时,那么你在爱情的世界里已经很难找到真正的幸福了.爱情没有公平,总有一个人比对方付出得多,即使没有结果,也别觉得不值,因为你的付出不光是为了她,也是为了你自己的爱,为爱付出是很可贵的,赞自己一下.
  16.请留一点童心
  在内心深处,哪怕只是一个很小的角落里,请保持一份童心,不是幼稚,但有的时候单纯一点会让你很快乐.所以不要太计较得失,生活本无完美.
  源于网络

让file_get_contents() 函数也做post

原来一直以为file_get_contents() 函数大概只能在请求一个url时做get操作,其实还有下面用法,可以让file_get_contents() 函数也做post:

 

 

注意:这里设置了使用post方法,却没有设置Content-Type: application/x-www-form-urlencoded ;因为PHP给自动添加了该http头,如果没有该http头,则server端的PHP不会将post数据解析到$_POST数组中。

 

arptable and routetable

arptable和routetable比较类似的是都是存在内存中的一个表格
arptable:  /proc/net/arp
routetable: /proc/net/route

下面对两个文件做简单的介绍:

[junjie2@ljj ~]$ cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
10.218.19.91     0x1         0x0         00:00:00:00:00:00     *        eth0
10.218.19.1      0x1         0x2         00:1D:A1:A7:13:CC     *        eth0
10.218.19.23     0x1         0x0         00:00:00:00:00:00     *        eth0
10.218.19.172    0x1         0x2         00:11:43:47:25:FE     *        eth0
10.218.19.81     0x1         0x0         00:00:00:00:00:00     *        eth0
10.218.19.71     0x1         0x0         00:00:00:00:00:00     *        eth0

IP address : 这个就不说了
HW type : 硬件类型 ,0x1 代表以太网卡
Flags   : 0x0 表示未完成(imcomplete),看紧挨着的HW address发现硬件地址都是0,那是因为想找这台机器没有找到,所以Flags为0x0
HW address: 硬件地址了
Mask : IP地址的掩码
Device: 路由中对应的网卡

 

[junjie2@ljj ~]$ cat /proc/net/route
Iface   Destination     Gateway         Flags   RefCnt  Use     Metric  Mask            MTU     Window  IRTT                                                      
eth0    0013DA0A        00000000        0001    0       0       0       00FFFFFF        0       0       0                                                                              
eth0    0000FEA9        00000000        0001    0       0       0       0000FFFF        0       0       0                                                                              
eth0    00000000        0113DA0A        0003    0       0       0       00000000        0       0       0                                                                              
[junjie2@ljj ~]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.218.19.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         10.218.19.1     0.0.0.0         UG    0      0        0 eth0
[junjie2@ljj ~]$

       Ref    Number of references to this route. (Not used in the Linux kernel.)

       Use    Count  of  lookups  for the route.  Depending on the use of -F and -C this will be either route cache misses
              (-F) or hits (-C).

       Iface  Interface to which packets for this route will be sent.

风中的承诺

音频:http://www.whx.gov.cn/ForumImages/20071212134157540.mp3

视频:http://union.bokecc.com/flash/pocle/player.swf?siteid=BAE881EF590B10D9&vid=A5CCA179D6941DB8&autoStart=false

 

歌词:

昨夜的雨
惊醒我沉睡中的梦
迷惑的心
沾满着昨日的伤痛
冷冷的风
不再有往日的温柔
失去的爱
是否还能够再拥有
漫漫长路
谁能告诉我
究竟会有多少错
何处是我最终的居留
曾经在雨中对我说
今生今世相守
曾经在风中对我说
永远不离开我
多少缠绵编织成的梦
多少爱恨刻划的镜头
为何一切到了终究还是空

跟美女上床和次贷危机

有一天,一位其貌不扬的男士,带着一位十分艳丽的OL,来到Causeway Bay一家LV店。他为OL选了一价值6万5元的LV handbag。
  付款时,男士掏出支票本,十分潇洒地签了一张支票。店员有些为难,因为这对夫妇是第一次来店购物。
  男士看穿了店员的心思,十分冷静地对店员说: "我感觉到,您担心这是一张是空头支票,对吗?今天是周六,银行关门。我建议您把支票和handbag都留下。等到星期一支票兑现之后,再请你们把 handbag 送到这位小姐的府上。您看这样行不行?"
  店员放了下心来,欣然地接受了这个建议,并且大方的承诺,递送handbag的费用由该店承担,他本人将会亲自把这件事情给办妥。
  星期一,店员拿着支票去银行入账,支票果真是张空头支票!愤怒的店员打电话给那位顾客,客户对他说: "这没有什么要紧啊!你和我都没有损失。上星期六的晚上我已经同那个女孩上床了!哦,多谢您的合作。"
 
这个故事揭示了次贷危机的本质。人们在对未来收益充满良好预期的时候,对于可能加大风险缺乏防范意识。美女认为周一六万多LV就到家了,自然也就放松了警惕,认为ONS的投资是值得的,对于投入产出的预期是建立在一个具有巨大不确定风险的情况下的。而对未来收益预期的包装则是这些投资机构最擅长的事情。中国的股民大多跟这个美女一样,所以亏钱基本上是活该,没有这些人,股市赚谁的钱呢。而媒体和分析家们,往往在其中扮演了LV店员的配合角色。

密码复杂度检查代码

function CharMode(iN){
  if (
iN>=65 && iN <=90
//大写字母
  
return 2
;
  if (
iN>=97 && iN <=122
//小写
  
return 4
;
  else
  return 
1
//数字
}
//计算出当前密码当中一共有多少种模式
function bitTotal(num
){
  
modes=0
;
  for (
i=0;i<3;i
++){
    if (
num 1modes
++;
    
num>>>=1
;
  }
  return 
modes
;
 }
//checkStrong函数 返回密码的强度级别
function checkStrong(sPW
){
  
Modes=0
;
  for (
i=0;i<sPW.length;i
++){
    
//测试每一个字符的类别并统计一共有多少种模式.
    
Modes|=CharMode(sPW.charCodeAt(i
));
  }
  var 
btotal bitTotal(Modes
);
  if (
sPW.length >= 10btotal
++;
  switch(
btotal
) {
    case 
1
:
      return 
"<table width=’130′ class=’pswstrong’><tr><td bgcolor=’#FE707E’><strong>弱</strong></td><td><span style=’color:#666;’>中</span></td><td><span style=’color:#666;’>强</span></td></tr></table>"
;
      break;
    case 
2
:
      return 
"<table width=’130′ class=’pswstrong’><tr><td bgcolor=’#FCFA93′><span style=’color:#666;’>弱</span></td><td bgcolor=’#FCFA93′><strong>中</strong></td><td><span style=’color:#666;’>强</span></td></tr></table>"
;
      break;
    case 
3
:
      return 
"<table width=’130′ class=’pswstrong’><tr><td bgcolor=’#BDFEA6′><span style=’color:#666;’>弱</span></td><td bgcolor=’#BDFEA6′><span style=’color:#666;’>中</span></td><td bgcolor=’#BDFEA6′><strong>强</strong></td></tr></table>"
;
      break;
    default:
      return 
"<font color=’#33CC00′>强</font>"
;
  }
}
function 
ShowStrong(obj,oMsg,status
){
  var 
obj oo(obj
);
    if(
status==1
){
    
obj.innerHTML 
oMsg
  
}else{
    
obj.innerHTML 
""
  
}
}

如何撰写pod

简介

pod(Plain Old Documentation), 是一种简单而易用的标记型语言(置标语言),它经常用于在perl程序和模块中的文档书写。

在pod中,用段类型可分为三种,普通段落,字面段落(Verbatim Paragraph)和命令段落。

三者的区分非常简单,以=pod|head1|cut|over等指示字开始的段落为命令段落,以空格或制表符(\t)等缩进字符开始的段落为字面段落,其余的就是普通段落。

pod中有其独特的格式代码来表现粗体,斜体,超链接等。

在pod中,对于字面段落的文本,是从来都不进行格式代码转义的。pod2html时用<pre >将其包围。所以字面段落非常适合在引用语言与代码块时运用。

当然,值得注意的是,对于pod2xxx脚本来说,段落意味着前后各有一个空行

下面我们要介绍的pod,都是用于pod2html这项功能的。

命令指示字

=head1

=head2

=head3

=head4

上面的四个指示字产生指定级别的标题。在pod2html时,用他们各自对应的

..

来包围此段落,并且自动生成a的命名/name和索引/index.

一个简单的例子:

pod2html后NAME的标签为h1, 而后面的那段为p。

=pod

=cut

=pod 只告诉编译器pod文档开始了,而=cut则是pod文档的结束。

一个简单的例子:

=over NUMBER

=item SYMBOL

=back

上面三个标签是连在一起的。=over后面必须要跟一个=back,而这两者之间最少要有一个=item,同时不能有=head1至head4。

pod2html时依据item后面的SYMBOL不同将其转化为<dl><ol><ul>中的一种。

当SYMBOL为数字时使用ol, SYBMOL为*时使用ul, 其余的使用dl.

而=over后面的NUMBER只是用来确定缩进中的空格。不同的格式器(pod2xxxx)对于NUMBER有着不同地处理,另外有些格式器对此则进行忽略。默认的NUMBER为4。

=item 能自动生成a的命名,但不参加索引/index(与head不同)。

一个简单的例子:

此例子摘自perlcn.pod

=for format text =begin format =end format 此指示字的作用是对此段落使用特殊的格式/format(如html, text等)。 =for与=begin+=end作用相同。区别在于=for只处理一个段落,而=begin+=end却能处理它们中间的多个段落。 format为html时,可以用于增加“命令指示字和格式代码”都不能实现的特殊格式。如<img或其它html标签。

一个简单的例子:

pod2html时会原文拷贝此段代码。

=encoding

用于制定文档的编码,默认为不指定。

格式代码

格式代码可以用于除字面段落外的所有段落,包括命令段落。

        

  • I<text> 用斜体表示text, 效果如text
  •     

  • B<text> 用粗体表示text, 效果如text
  •     

  • C<code> pod2html时用<code>包围。
  •     

  • L<text|name/sec> 超链接。 其中name可以为模块名,也可以为一个网址。pod2html时,当name为模块名时,转化为module/name.html.name为a里href参数的内容其中text为连接所显示的内容,若没有text,name为模块名时,显示 the module::name manpage;name为网址时,不允许存在text。pod2html时转化为<a>和</a>之间的东西。    

    sec参数当name为模块名时指向该模块名的sec部分,没有name时指向当前页的sec部分。这些sec部分一般被=head或=item所定义。pod2html时转化为href里的#部分。

        

        

  •     

  • E<escape> 字符转义。    
              

    • E<lt> – <
    •         

    • E<gt> – >
    •         

    • E<verbar> – |
    •         

    • E<sol> – /
    •         

    • 更多的请参考perldoc perlpod
    •     

        

  •     

  • 更多的如F<filename>, S<text>等请参考perldoc perlpod

实例

最后给出一个简单的例子,用以使大家加深对pod的印象。

perldoc & pod2html

pod可以转化为n多种格式。在bin目录下以pod2开头的工具有很多,也有2pod的工具。但最常用的是perldoc和pod2html.

perldoc用于在命令控制台下查看pod文档,而pod2html则把pod转化为html格式。

pod2html

你可以通过pod2html—help来查看pod2html的所有参数。因为所有的参数都是很容易看懂的,也就不多加解释了。

将上面的例子保存为examples.pod, 然后进入控制台/console:

All is Done.

参考

🙂 have fun.

 

相关链接:http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlpodspec.pod