linux 查看系统信息命令

下面给除了各linux发行版比较常用的系统信息查询的命令

#  man  # 使用man命令 查看命令手册

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务程序
# rpm -qa # 查看所有安装的软件包

MySQL查询时区分大小写的方法

1、一种方法是可以设置表或行的collation,使其为binary或case sensitive。在MySQL中,对于Column Collate其约定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写

###########
# Start binary collation example
###########
mysql> create table case_bin_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_bin;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO case_bin_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

###########
# End
###########

2、另外一种方法

###########
# Start case sensitive collation example
###########

mysql> create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO case_cs_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

###########
# end
###########

3、还有一种方法就是在查询时指定collation

mysql> create table case_test (word VARCHAR(10)) CHARACTER SET latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO case_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 7 rows affected (0.01 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.05 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’ COLLATE latin1_bin;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_bin;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_general_cs;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.04 sec)

要让mysql查询区分大小写,可以:

  1. select  * from  table_name where  binary  a like  ‘a%’
  2. select  * from  table_name where  binary  a like  ‘A%’

也可以在建表时,加以标识

create  table  table_name(

     a varchar (20) binary

)

来源:http://www.cnblogs.com/pinnasky/archive/2012/09/11/2680264.html

如何使mac os x支持sap的web portal

以前在Mac OS X上使用firefox访问sap 的web portal时,往往在验证用户名和口令之后,就被告知访问失败。本来以为是操作系统+浏览器的问题,直到最近windows 7也遇到此类问题,并得到完美解决之后,我才想到,Mac OS X上估计也能如法炮制。

Windows 7上的解决方案是在本地安全策略中启用kerberos验证。实际上firefox也有一个启用kerberos的过程。具体的步骤如下 :
  •  In the address bar of Firefox, type about:config to display the list of current configuration options.
  • In the Filter field, type negotiate to restrict the list of options.
  • Double-click the network.negotiate-auth.trusted-uris entry to display the Enter string value dialog box.
  • Enter the name of the domain against which you want to authenticate, for example, .example.com.
  • Repeat the above procedure for the network.negotiate-auth.delegation-uris entry, using the same domain.光有这步还不够,还需要拿到kerberos验证需要的ticket.方法如下:

    在shell下运行 kinit username@DOMAIN.NAME

    后面的域名一定要用大写,小写会导致验证失败。

    根据提示输入密码之后,就能够拿到ticket了。接下来再用firefox访问sap web portal,就没有任何问题了。

来源://blog.chinaunix.net/uid-11093116-id-180489.html

Oracle与Mysql的高级查询与难点sql

Oracle与Mysql的高级查询与难点sql
mysql查询杨凯专属频道OracleSQL
一、连接查询
1.内连接
内连接用于返回满足连接条件的所有记录。默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询都属于内连接。
Sql代码
  1. SELECT a.dname,b.ename from dept a,emp b where a.deptno=b.deptno and a.deptno=10;
在FROM子句中指定INNER JOIN选项,也可以指定内连接。
Sql代码
1. SELECT a.dname,b.ename from dept a INNER JOIN emp b where a.deptno=b.deptno and a.deptno=10;
从Oracle9i开始,如果主表的主键列和从表的外部键列名称相同,那么可以使用NATURAL JOIN 关键字自动执行内连接操作。
Sql代码
1. SELECT dname,ename FROM dept NATURAL JOIN emp;
2.左外连接
左外连接通过指定LEFT[OUTER] JOIN选项来实现。当使用左外连接时,不仅会返回满足连接条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a LEFT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
3.右外连接
右外连接通过指定RIGHT[OUTER] JOIN选项来实现的。当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件操作符右边表的其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a RIGHT JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
4.完全外连接
完全外连接是指定FULL[OUTER] JOIN 选项来实现的。当使用完全外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的所有其他行。
Sql代码
1. SELECT a.dname,b.ename FROM dept a FULL JOIN emp b ON a.deptno=b.deptno AND a.deptno=10;
相当于没连接去掉where条件
Sql代码
1. SELECT a.dname,b.ename from dept a,emp;
5.使用(+)操作符
在Oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的。尽管可以使用操作符(+)执行外连接操作。但Oralce9i开始Oracle建议使用OUTER JOIN执行外连接。语法如下:
SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1(+) = table2.column2;
当使用(+)操作符执行外连接时,应该将该操作符放在显示较少行(完全满足连接条件行)的一端。
一句话,左外连接时,(+)要放在右边表的一端。右外连接时,(+)放在左边表的一端。
左外连接:
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno=b.deptno(+) AND b.deptno(+)=10;
右外连接
Sql代码
1. SELECT a.dname,b.ename FROM dept a, emp b where a.deptno(+)=b.deptno AND a.deptno(+)=10;
二、递归查询
1.语法
Sql代码
1. Select * from …. Where [结果过滤条件语句]
2. Start with [起始条件过滤语句]
3. Connect by prior [中间记录过滤条件语句]
2.例子
Sql代码
1. Select * from company t Where t.flag=1
2. Start with t.company_id=50500000
3. Connect by prior t.company_id=t.parent_id
说明:
Sql代码
1. select [level],column,expr from table [where condition]
2. [start with] //[起点]
3. [connect by prior + 主键=外键 或 外键=主键]
a.自顶向下: 左边放主键,右边放外键。
b.自底向上: 右边放主键,左边放外键。
c.level(伪列)层次的级别,不固定值。
三、更改数据库的时间格式
1、临时更改
alter session set nls_date_format=’YYYY-MM-DD HH24:MI:SS’
2.永久更改
在注册表[HKEY_CODE_MACHINE\SOFTWARE\ORACLE]里面,加入NLS_DATE_FORMAT,值为YYYY-MM-DD HH24:MI:SS。
3、Unix下,在用户的.profile文件中增加以下内容:
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
export NLS_DATE_FORMAT
附:在SQLPLUS下,实现中-英字符集转换
Sql代码
1. alter session set nls_language=’AMERICAN’;
2. alter session set nls_language=’SIMPLIFIED CHINESE’;
四、复制表和数据
1)建表
Sql代码
1. create table test as select * from dept; –从已知表复制数据和结构
2. create table test as select * from dept where 1=2; –从已知表复制结构但不包括数据
建立视图:
Sql代码
1. CREATE OR REPLACE VIEW dept_10 AS SELECT empno,ename,job,sal,deptno FROM emp WHERE deptno=10 ORDER BY empno;
建立实体化视图:
Sql代码
1. CREATE MATERIALLIZED VIEW summary_emp AS SELECT deptno,job,avg(sal) avgsal, sum(sal) sumsal FROM emp GROUP BY cube(deptno,job);
实体化视图管理是用于汇总,预计算,复制或分发数据的对象, 在大型的数据库中使用它可以提高涉及到的SUM,COUNT,AVG,MIN,MAX等的表的查询的速度,只要在实体化视图管理上创建了统计,查询优化器 将自动的使用实体化视图管理,这特性被称为QUERY REWRITE(查询重写).与普通的视图不同的是实体化视图管理存储数据,占据数据库的物理空间的.
2)不使用列的列表插入数据:
Sql代码
1. insert into test select * from dept;
3)使用DEFAULT插入数据:如果列存在默认值,则会使用其默认值;如果列不存在默认值,则自动使用NULL.
Sql代码
1. insert into dept values(10,’市场部’,default);
4)使用子查询插入数据
将查出来的内容全部插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
将查出来的内容部分插入
Sql代码
1. insert into employee(empno,ename,sql,deptno)
2. select empno,’杨凯’,sal,deptno from emp
3. where deptno = 10;
当要装载大批量数据时,用直接装载方式:
Sql代码
1. insert /*+APPEND */ into employee(empno,ename,sql,deptno)
2. select empno,ename,sal,deptno from emp
3. where deptno = 10;
5)使用多表插入数据。从Oracle9i开始,使用INSERT语句可以将某张表的数据同时插入到多张表中。
使用ALL操作符,在每个条件子句上都要执行INTO子句后的子查询。
Sql代码
1. insert all when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
使用FIRST操作符执行多表插入,如果数据已经满足了先前条件,并且已经被插入到某表,那么该行数据在后续插入中将不会被再次使用。
Sql代码
1. insert first when deptno=10 then into t_dept10
2. when deptno=20 then into t_dept20
3. when deptno=30 then into t_dept30
4. when job=’clerk’ then into t_clerk
5. else into t_other
6. select * from emp;
五、多列子查询
多列子查询是指返回多列数据的子查询语句。当多列子查询返回单行数据时,在WHERE子句中可以使用单行比较符;当多列子查询返回多行数据时,在WHERE子句中必须使用多行比较符(IN,ANY,ALL)。
如显示与Id为10000的人员部门和岗位完全相同的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE (deptno,job)=(SELECT deptno,job FROM emp WHERE id=10000);
当执行成对比较是时,因为要求多个列的数据必须同时匹配,所以必须要使用多列子查询实现。
如显示工资和补助与部门30雇员的工资和补助完全匹配的所有雇员:
Sql代码
1. SELECT ename,sal,comm,dptno FROM emp WHERE (sal, nvl(comm,-1)) IN (SELECT sal, nvl(comm,-1) FROM emp WHERE deptno=30);
执行非成对比较时,应该使用多个多行子查询来实现。
如显示工资匹配于部门30工资列表、补助匹配于部门30补助列表的所有雇员:
Sql代码
1. SELECT ename,sal,comm,deptno FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND nvl(comm,-1) IN (SELECT nvl(comm,-1) FROM emp WHERE deptno=30);
六、相关子查询与FROM子句中子查询
相关子查询是指需要引用主查询表列的子查询语句,是通过EXISTS谓词来实现的。
如显示工作在“NEW YORK”的所有雇员:
Sql代码
1. SELECT ename,job,sal,deptno FROM emp WHERE EXISTS (SELECT 1 FROM dept WHERE dept.deptno=emp.deptno AND dept.loc=’NEW YORK’);
在FROM子句中使用子查询时,该子查询会被作为视图对待。因此也被称为内嵌视图。
如显示高于部门平均工资的雇员信息:
Sql代码
1. SELECT ename,job,sal FROM emp, (SELECT deptno,avg(sal) avgsal FROM emp GROUP BY deptno) dept WHERE emp.deptno=dept.deptno AND sal>dept.avgsal;
七、合并查询
集合操作符有UNION,UNION ALL, INTERSECT和MINUS。当使用集合操作符时,必须确保不同查询的列个数和数据类型都要匹配。
有以下一些限制:
1.对于LOB,VARRAY和嵌套表列来说,集合操作符是无效的。
2.对于LONG列来说,UNION,INTERSECT,MINUS操作符是无效的。
3.如果选择列表包含了表达式,则必须为为其指定列别名。
(一)UNION
UNION操作符用于获取两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。并且会以第一列的结果进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(二)UNION ALL
UNION ALL操作符获取两个结果集的并集,但不会取消重复值,而且也不会以任何列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 UNION ALL SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(三)INTERSECT
INTERSECT操作符用于获取两个结果集的交集。当使用该操作符时,只会显示同时存在于两个结果集中的数据,并且会以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 INTERSECT SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
(四)MINUS
MINUS用于获取两个结果集的差集。以第一列进行排序。
Sql代码
1. SELECT ename,sal,job FROM emp WHERE sal>2500 MINUS SELECT ename,sal,job FROM emp WHERE job=’MANAGER’;
八、CASE表达式和倒叙查询
通过CASE表达式,可以避免调用过程来完成条件分支操作。
Sql代码
1. SELECT ename,sal,CASE WHEN sal>3000 THEN 3 WHEN sal>2000 THEN 2 ELSE 1 END grade FROM emp WHERE deptno=10;
默认情况下,当执行查询操作时,只能看到最近提交的数据。从Oracle9i开始,通过使用倒叙查询(Flashback Query)特征,可以查看到过去某个时间点所提交的数据。注意,如果使用倒叙查询,那么要示数据库必须彩UNDO管理方式,并且初始化参数 undo_retention限制了UNDO数据的保留时间。
Sql代码
1. SELECT ename,sal FROM emp AS OF TIMESTAMP to_timestamp(‘2009-01-01 12:12:00′,’YYYY-MM-DD HH24:MI:SS’) WHERE ename=’CLARK’;
九、使用WITH子句重用子查询
从Oracle9i开始,通过WITH子句可以给子查询指定一个名称,并且使得在一条语句中可以完成所有任务,从而避免使用临时表。
如显示部门工资总和高于雇员工资总和三分之一的部门名称及工资总和。
Sql代码
1. WITH summary AS (SELECT dname,SUM(sal) AS dept_total FROM emp,dept WHERE emp.deptno=dept.deptno GROUP BY dname)
2. SELECT dname, dept_total FROM summary WHERE dept_total>(
3. SELECT SUM(dept_total) * 1/3 FROM summary);
十、oracle对记录进行去重sql
Sql代码
1. DELETE FROM [TABLE_NAME]
2. WHERE ROWID NOT IN (
3. SELECT MIN(ROWID) FROM [TABLE_NAME]
4. GROUP BY [COL1,COL2,COL3…]
5. );
统计酒店名不重复的总数
Sql代码
1. SELECT COUNT(DISTINCT(hotel_id)) FROM t_app_travel_hotel_comment;
十一、SQL排序后的NULL位置
可以把那些NULL值假想为所有内容中值是最大的,因此,升序排序后NULL值在最后,倒序排序后NULL值在最前!
当指定”NULLS FIRST”时,无论是升序排序还是倒序排序,NULL值都会排列在最前面;当指定“NULLS LAST”时,无论是升序排序还是倒序排序,NULL值都会排列在最后面。
Sql代码
1. SELECT * FROM t ORDER BY x DESC NULLS LAST;

PHP跳出多层循环

使用下面方法可以直接跳出循环(推荐):

$http = 0;

foreach($arr as $v){

    for($i=1;$i<=3;$i++){
        
        if($http == 200) break 2;

        echo $i,"\n";

        $http = 200;
    }

    echo $v,'这里不会输出';
}

echo 'END';

但是有些特殊情况使 层数不确定,或是很多层时(一般不会有这种情况):可以使用goto;

foreach($arr as $v){
    for($a=1;$a<=3;$a++)
    for($b=1;$b<=3;$b++)
    for($c=1;$c<=3;$c++)
    for($x=1;$x<=3;$x++)
    for($d=1;$d<=3;$d++)
    for($v=1;$v<=3;$v++)
    for($z=1;$z<=3;$z++)
    for($n=1;$n<=3;$n++){

//        if($http == 200) break ??;
        if($http == 200) goto end;

        echo $n,"\n";

        $http = 200;
    }

    echo $v,'这里不会输出';
}
end:

echo 'END';

打造你的php安全程序第一步:禁止掉不安全的php函数(php.ini)

为了使php程序更安全,很多站长都选择了禁用一些比较敏感的函数,那影响php安全的函数到底有哪些呢,下面我们列出了一些:
1、phpinfo()
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。
危险等级:中
2、passthru()
功能描述:允许执行一个外部程序并回显输出,类似于 exec()。
危险等级:高
3、exec()
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。
危险等级:高
4、system()
功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。
危险等级:高
5、chroot()
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式
PHP 时才能工作,且该函数不适用于 Windows 系统。
危险等级:高
6、scandir()
功能描述:列出指定路径中的文件和目录。
危险等级:中
7、chgrp()
功能描述:改变文件或目录所属的用户组。
危险等级:高
8、chown()
功能描述:改变文件或目录的所有者。
危险等级:高
9、shell_exec()
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。
危险等级:高
10、proc_open()
功能描述:执行一个命令并打开文件指针用于读取以及写入。
危险等级:高
11、proc_get_status()
功能描述:获取使用 proc_open() 所打开进程的信息。
危险等级:高
12、error_log()
功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode,
执行任意命令。
危险等级:低
13、ini_alter()
功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。
具体参见 ini_set()。
危险等级:高
14、ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。
危险等级:高
15、ini_restore()
功能描述:可用于恢复 PHP 环境配置参数到其初始值。
危险等级:高
16、dl()
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。
危险等级:高
17、pfsockopen()
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。
危险等级:高
18、syslog()
功能描述:可调用 UNIX 系统的系统层 syslog() 函数。
危险等级:中
19、readlink()
功能描述:返回符号连接指向的目标文件内容。
危险等级:中
20、symlink()
功能描述:在 UNIX 系统中建立一个符号链接。
危险等级:高
21、popen()
功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。
危险等级:高
22、stream_socket_server()
功能描述:建立一个 Internet 或 UNIX 服务器连接。
危险等级:中
23、putenv()
功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。
危险等级:高

禁用方法如下:
打开/etc/php.ini文件,
查找到 disable_functions ,添加需禁用的函数名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status

看过这些函数,站长们应该去检查一下自己的php.ini 看看这些函数是否禁用了。

当然禁止了这些可能会引起安全因素的php函数。你还必须在php.ini里,进一步把php的错误给关闭,这样才更加有针对性的排除你的php被别人利用错误信息进行攻击。
在php.ini里把
display_error = On
改为:
display_error = Off 即可;

C语言产生满足正态分布的随机数

C语言中可以通过rand函数生成满足均匀分布的随机数,但是生成满足正太分布的随机数就没有那么简单了,下面对常用的几种方法进行总结并用C++编程实现。

方法一:由均匀分布的随机数来产生

一个简单可行的并且容易编程的方法是:求12个在(0,1)上均匀分布的和,然后减6(12的一半)。这种方法可以用在很多应用中,这12个数的和是Irwin-Hall分布;选择一个方差12。但此推导的结果限制在(-6,6)之间,并且密度为12。

方法二:Box-Muller方法

Box-Muller方法是以两组独立的随机数U和V,这两组数在(0,1]上均匀分布,用U和V生成两组独立的标准常态分布随机变量X和Y:

正态分布曲线 2

方法三:由正态分布曲线图形得到的直观结果

图1 正态分布曲线

正态分布曲线

从上图可以看出,在μ附近的概率密度大,远离μ的地方概率密度小,我们要产生的随 机数要服从这种分布,就是要使产生的随机数在μ附近的概率要大,远离μ处小。算法的主要思想是:在上图的大矩形中随机产生点,这些点是平均分布的,如果产生的点落在概率密度曲线的下方,则认为产生的点是符合要求的,将它们保留,如果在概率密度曲线的上方, 则认为这些点不合格,将它们去除。如果随机产生了一大批在整个矩形中均匀分布的点,那 么被保留下来的点的横坐标就服从了正态分布。可以设想,由于在μ处的 f(x)的值比较大,理所当然的在μ附近的点个数要多,远离μ处的少,这从面积上就可以看出来。我们要产生的随机数就是这里的横坐标。

根据以上所述三种方法,编写C++测试代码如下:

#include

#include

using namespace std;

#define pi 3.1415926

#define rd (rand()/(RAND_MAX+1.0))

//区间[min,max]上的均匀分布,min和max要求传入的参数类型一致

template <<span style=”color:blue”>class T>

T rand(T min, T max)

{

return min+(max-min)*rand()/(RAND_MAX+1.0);

}

//求均值为miu,方差为sigma的正太分布函数在x处的函数值

double normal(double x, double miu,double sigma)

{

return 1.0/sqrt(2*pi)/sigma*exp(-1*(x-miu)*(x-miu)/(2*sigma*sigma));

}

//按照矩形区域在函数值曲线上下位置分布情况得到正太函数x值

double randn(double miu,double sigma, double min ,double max)

{

double x,y,dScope;

do{

x=rand(min,max);

y=normal(x,miu,sigma);

dScope=rand(0.0,normal(miu,miu,sigma));

}while(dScope>y);

return x;

}

double randn(int type)

{

//按照12个均匀分布之和减去6得到正态分布函数的x值

if (type==1)

return rd+rd+rd+rd+rd+rd+rd+rd+rd+rd+rd+rd-6.0;

//按照计算公式y=sqrt(-2*ln(U))*cos(2*PI*V)计算得到x

else if(type==2)

return sqrt(-2*log(rand()/(RAND_MAX+1.0)))*cos(2*pi*rand()/(RAND_MAX+1.0));

else

return randn(0.0,1.0,-10.0,10.0);

}

int main(int argc,char* argv[])

{

srand((unsigned)time( NULL ));

ofstream outfile(“321.txt”);

for (int i=0;i<100;i++)

{

//randn(1)、randn(2)和randn(3)效果差不多

outfile << randn(3) << endl;

}

return 0;

}

参考:

[1] http://zh.wikipedia.org/wiki/正态分布

[2] http://en.wikipedia.org/wiki/Normal_distribution

[3] http://wenku.baidu.com/view/e9de620d7cd184254b3535c9?pn=2&ssid=&from=&bd_page_type=1&uid=bd_1332071259_725&pu=sl@1,pw@1000,sz@224_220,pd@1,fz@2,lp@0,tpl@color,&st=1&wk=rd&maxpage=3

转载:http://blog.sina.com.cn/s/blog_70a14458010155b8.html

老子道德经全文

老子
道德经

《道德经》——《老子道德经》

 

老 子: 「道 德 經」: 第 一 章

道 可 道 , 非 常 道 。 名 可 名 , 非 常 名 。

无 名 天 地 之 始 ﹔ 有 名 万 物 之 母 。

故 常 无 , 欲 以 观 其 妙 ﹔ 常 有 , 欲 以 观 其 徼 。

此 两 者 , 同 出 而 异 名 , 同 谓 之 玄 。

玄 之 又 玄 , 众 妙 之 门 。

 

老 子: 「道 德 經」 : 第 二 章

天 下 皆 知 美 之 为 美 , 斯 恶 已 。

皆 知 善 之 为 善 , 斯 不 善 已 。

有 无 相 生 , 难 易 相 成 , 长 短 相 形 ,

高 下 相 盈 , 音 声 相 和 , 前 后 相 随 。

恒 也 。 是 以 圣 人 处 无 为 之 事 ,

行 不 言 之 教 ﹔ 万 物 作 而 弗 始 ,

生 而 弗 有 , 为 而 弗 恃 , 功 成 而 不 居 。

夫 唯 弗 居 , 是 以 不 去 。

 

老 子: 「道 德 经」 : 第 三 章

不 尚 贤 , 使 民 不 争

不 贵 难 得 之 货 , 使 民 不 为 盗 ﹔

不 见 可 欲 , 使 民 心 不 乱 。

是 以 圣 人 之 治 ,

虚 其 心 ,

实 其 腹 ,

弱 其 志 ,

强 其 骨 。

常 使 民 无 知 无 欲 。

使 夫 智 者 不 敢 为 也 。

为 无 为 , 则 无 不 治 。

 

老 子: 「道 德 经」 : 第 四 章

道 冲 , 而 用 之 或 不 盈 。

渊 兮 , 似 万 物 之 宗 ﹔ 湛 兮 , 似 或 存 。

吾 不 知 谁 之 子 , 象 帝 之 先 。

 

老 子: 「道 德 经」 : 第 五 章

天 地 不 仁 , 以 万 物 为 刍 狗 ﹔ 圣 人 不 仁 , 以 百 姓 为 刍 狗 。

天 地 之 间 , 其 犹 橐 钥 乎 。 虚 而 不 屈 , 动 而 愈 出 。

多 言 数 穷 , 不 如 守 中 。

 

老 子: 「道 德 经」 : 第 六 章

谷 神 不 死 , 是 谓 玄 牝 。

玄 牝 之 门 , 是 谓 天 地 根 。帛系 若 存 , 用 之 不 勤 。

 

老 子: 「道 德 经」 : 第 七 章

天 长 地 久 。

天 地 所 以 能 长 且 久 者 ,

以 其 不 自 生 , 故 能 长 生 。

是 以 圣 人 后 其 身 而 身 先 ﹔ 外 其 身 而 身 存 。

非 以 其 无 私 邪 。

故 能 成 其 私 。

 

老 子: 「道 德 经」 : 第 八 章

上 善 若 水 。

水 善 利 万 物 而 不 争 ,

处 众 人 之 所 恶 , 故 几 于 道 。

居 善 地 , 心 善 渊 , 与 善 仁 ,

言 善 信 , 政 善 治 , 事 善 能 ,

动 善 时 。 夫 唯 不 争 , 故 无 尤 。

 

老 子: 「道 德 经」 : 第 九 章

持 而 盈 之 , 不 如 其 已 ﹔

揣 而 锐 之 , 不 可 长 保 。

金 玉 满 堂 , 莫 之 能 守 ﹔

富 贵 而 骄 , 自 遗 其 咎 。

功 遂 身 退 , 天 之 道 也 。

 

老 子: 「道 德 经」 : 第 十 章

载 营 魄 抱 一 , 能 无 离 乎 。

专 气 致 柔 , 能 如 婴 儿 乎 。

涤 除 玄 鉴 , 能 如 疵 乎 。

爱 国 治 民 , 能 无 为 乎 。

天 门 开 阖 , 能 为 雌 乎 。

明 白 四 达 , 能 无 知 乎 。

 

老 子: 「道 德 经」 : 第 十 一 章

三 十 辐 , 共 一 毂 , 当 其 无 , 有 车 之 用 。

埏 埴 以 为 器 , 当 其 无 , 有 器 之 用 。

凿 户 牖 以 为 室 , 当 其 无 , 有 室 之 用 。

故 有 之 以 为 利 , 无 之 以 为 用 。

 

老 子: 「道 德 经」 : 第 十 二 章

五 色 令 人 目 盲 ﹔ 五 音 令 人 耳 聋 ﹔ 五 味 令 人 口 爽 ﹔

驰 骋 畋 猎 , 令 人 心 发 狂 ﹔ 难 得 之 货 , 令 人 行 妨 。

是 以 圣 人 为 腹 不 为 目 , 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 十 三 章

宠 辱 若 惊 , 贵 大 患 若 身 。

何 谓 宠 辱 若 惊 。

宠 为 下 , 得 之 若 惊 , 失 之 若 惊 , 是 谓 宠 辱 若 惊 。

何 谓 贵 大 患 若 身 。

吾 所 以 有 大 患 者 , 为 吾 有 身 ,

及 吾 无 身 , 吾 有 何 患 。

故 贵 以 身 为 天 下 , 若 可 寄 天 下 ﹔

爱 以 身 为 天 下 , 若 可 托 天 下 。

 

老 子: 「道 德 经」 : 第 十 四 章

视 之 不 见 , 名 曰 夷 ﹔

听 之 不 闻 , 名 曰 希 ﹔

搏 之 不 得 , 名 曰 微 。

此 三 者 不 可 致 诘 , 故 混 而 为 一 。

其 上 不 皦 , 其 下 不 昧 。

绳 绳 兮 不 可 名 , 复 归 于 物 。

是 谓 无 状 之 状 , 无 物 之 象 , 是 谓 惚 恍 。

迎 之 不 见 其 首 , 随 之 不 见 其 后 。

执 古 之 道 , 以 御 今 之 有 。

能 知 古 始 , 是 谓 道 纪 。

 

老 子: 「道 德 经」 : 第 十 五 章

古 之 善 为 道 者 , 微 妙 玄 通 , 深 不 可 识 。

夫 唯 不 可 识 , 故 强 为 之 容 :

豫 兮 若 冬 涉 川 ﹔

犹 兮 若 畏 四 邻 ﹔

俨 兮 其 若 客 ﹔

涣 兮 其 若 凌 释 ﹔

敦 兮 其 若 朴 ﹔

旷 兮 其 若 谷 ﹔

混 兮 其 若 浊 ﹔

澹 兮 其 若 海 ﹔

飂 兮 若 无 止 。

孰 能 浊 以 静 之 徐 清 。

孰 能 安 以 动 之 徐 生 。

保 此 道 者 , 不 欲 盈 。

夫 唯 不 盈 , 故 能 蔽 而 新 成 。

 

老 子: 「道 德 经」 : 第 十 六 章

致 虚 极 , 守 静 笃。

万 物 并 作 , 吾 以 观 复。

夫 物 芸 芸 , 各 复 归 其 根 。

归 根 曰 静 , 静 曰 复 命 。

复 命 曰 常 , 知 常 曰 明 。

不 知 常 , 妄 作 凶 。

知 常 容 , 容 乃 公 ,

公 乃 全 , 全 乃 天 ,

天 乃 道 , 道 乃 久 , 没 身 不 殆 。

 

老 子: 「道 德 经」 : 第 十 七 章

太 上 , 不 知 有 之 ﹔

其 次 , 亲 而 誉 之 ﹔

其 次 , 畏 之 ﹔

其 次 , 侮 之 。

信 不 足 焉 , 有 不 信 焉 。

悠 兮 其 贵 言 。

功 成 事 遂 , 百 姓 皆 谓 : 「 我 自 然 」 。

 

老 子: 「道 德 经」 : 第 十 八 章

大 道 废 , 有 仁 义 ﹔ 智 慧 出 , 有 大 伪 ﹔

六 亲 不 和 , 有 孝 慈 ﹔ 国 家 昏 乱 , 有 忠 臣 。

 

老 子: 「道 德 经」 : 第 十 九 章

绝 圣 弃 智 , 民 利 百 倍 ﹔

绝 仁 弃 义 , 民 复 孝 慈 ﹔

绝 巧 弃 利 , 盗 贼 无 有 。

此 三 者 以 为 文 , 不 足 。

故 令 有 所 属 : 见 素 抱 朴 , 少 思 寡 欲 , 绝 学 无 忧 。

 

老 子: 「道 德 经」 : 第 二 十 章

唯 之 与 阿 , 相 去 几 何 。

之 与 恶 , 相 去 若 何 。

人 之 所 畏 , 不 可 不 畏 。

荒 兮 , 其 未 央 哉 。

众 人 熙 熙 , 如 享 太 牢 , 如 春 登 台 。

我 独 泊 兮 , 其 未 兆 ﹔

沌 沌 兮 , 如 婴 儿 之 未 孩 ﹔

儽 儽 兮 , 若 无 所 归 。

众 人 皆 有 余 , 而 我 独 若 遗 。 我 愚 人 之 心 也 哉 。

俗 人 昭 昭 , 我 独 昏 昏 。

俗 人 察 察 , 我 独 闷 闷 。

众 人 皆 有 以 , 而 我 独 顽 且 鄙 。

我 独 异 于 人 , 而 贵 食 母 。

 

老 子: 「道 德 经」 : 第 二 十 一 章

孔 德 之 容 , 惟 道 是 从 。

道 之 为 物 , 惟 恍 惟 惚 。

惚 兮 恍 兮 , 其 中 有 象 ﹔ 恍 兮 惚 兮 , 其 中 有 物 。

窈 兮 冥 兮 , 其 中 有 精 ﹔ 其 精 甚 真 , 其 中 有 信 。

自 今 及 古 , 其 名 不 去 , 以 阅 众 甫 。

吾 何 以 知 众 甫 之 状 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 二 十 二 章

曲 则 全 , 枉 则 直 , 洼 则 盈 ,

敝 则 新 , 少 则 得 , 多 则 惑 。

是 以 圣 人 抱 一 为 天 下 式 。

不 自 见 , 故 明 ﹔

不 自 是 , 故 彰 ﹔

不 自 伐 , 故 有 功 ﹔

不 自 矜 , 故 长 。

夫 唯 不 争 , 故 天 下 莫 能 与 之 争 。

古 之 所 谓 「 曲 则 全 」 者 , 岂 虚 言 哉 。

诚 全 而 归 之 。

 

老 子: 「道 德 经」 : 第 二 十 三 章

希 言 自 然 。

故 飘 风 不 终 朝 , 骤 雨 不 终 日 。

孰 为 此 者 。

天 地 。 天 地 尚 不 能 久 , 而 况 于 人 乎 。

故 从 事 于 道 者 , 同 于 道 ﹔

德 者 , 同 于 德 ﹔ 失 者 , 同 于 失 。

同 于 道 者 , 道 亦 乐 得 之 ﹔

同 于 德 者 , 德 亦 乐 得 之 ﹔

同 于 失 者 , 失 亦 乐 得 之 。

信 不 足 焉 , 有 不 信 焉 。

 

老 子: 「道 德 經」 : 第 二 十 四 章

企 者 不 立 ﹔ 跨 者 不 行 ﹔

自 见 者 不 明 ﹔ 自 是 者 不 彰 ﹔

自 伐 者 无 功 ﹔ 自 矜 者 不 长 。

其 在 道 也 , 曰 : 余 食 赘 形 。

物 或 恶 之 , 故 有 道 者 不 处 。

 

老 子: 「道 德 经」 : 第 二 十 五 章

有 物 混 成 , 先 天 地 生 。

寂 兮 寥 兮 , 独 立 而 不 改 ,

周 行 而 不 殆 , 可 以 为 天 地 母 。

吾 不 知 其 名 , 强 字 之 曰 道 , 强 为 之 名 曰 大 。

大 曰 逝 , 逝 曰 远 , 远 曰 反 。

故 道 大 , 天 大 , 地 大 , 人 亦 大 。

域 中 有 四 大 , 而 人 居 其 一 焉 。

人 法 地 , 地 法 天 , 天 法 道 , 道 法 自 然 。

 

老 子: 「道 德 经」 : 第 二 十 六 章

重 为 轻 根 , 静 为 躁 君 。

是 以 君 子 终 日 行 不 离 辎 重 。

虽 有 荣 观 , 燕 处 超 然 。

奈 何 万 乘 之 主 , 而 以 身 轻 天 下 。

轻 则 失 根 , 躁 则 失 君 。

 

老 子: 「道 德 经」 : 第 二 十 七 章

善 行 无 辙 迹 , 善 言 无 瑕 谪 ﹔

善 数 不 用 筹 策 ﹔ 善 闭 无 关 楗 而 不 可 开 ,

善 结 无 绳 约 而 不 可 解 。

是 以 圣 人 常 善 救 人 , 故 无 弃 人 ﹔

常 善 救 物 , 故 无 弃 物 。

是 谓 袭 明 。

故 善 人 者 , 不 善 人 之 师 ﹔

不 善 人 者 , 善 人 之 资 。

不 贵 其 师 , 不 爱 其 资 ,

虽 智 大 迷 , 是 谓 要 妙 。

 

老 子: 「道 德 经」 : 第 二 十 八 章

知 其 雄 , 守 其 雌 , 为 天 下 溪 。

为 天 下 溪 , 常 德 不 离 , 复 归 于 婴 儿 。

知 其 白 , 守 其 辱 , 为 天 下 谷 。

为 天 下 谷 , 常 德 乃 足 , 复 归 于 朴 。

知 其 白 , 守 其 黑 , 为 天 下 式 。

为 天 下 式 , 常 德 不 忒 , 复 归 于 无 极 。

朴 散 则 为 器 , 圣 人 用 之 ,

则 为 官 长 , 故 大 智 不 割 。

 

老 子: 「道 德 经」 : 第 二 十 九 章

将 欲 取 天 下 而 为 之 , 吾 见 其 不 得 已 。

天 下 神 器 , 不 可 为 也 , 不 可 执 也 。

为 者 败 之 , 执 者 失 之 。

是 以 圣 人 无 为 , 故 无 败 ﹔

无 执 , 故 无 失。

夫 物 或 行 或 随 ﹔ 或 嘘 或 吹 ﹔

或 强 或 羸 ﹔ 或 载 或 隳 。

是 以 圣 人 去 甚 , 去 奢 , 去 泰 。

 

老 子: 「道 德 经」 : 第 三 十 章

以 道 佐 人 主 者 , 不 以 兵 强 天 下 。

其 事 好 远 。

师 之 所 处 , 荆 棘 生 焉 。

大 军 之 后 , 必 有 凶 年 。

善 有 果 而 已 , 不 以 取 强 。

果 而 勿 矜 , 果 而 勿 伐 , 果 而 勿 骄 。

果 而 不 得 已 , 果 而 勿 强 。

物 壮 则 老 , 是 谓 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 三 十 一 章

夫 兵 者 , 不 祥 之 器 ,

物 或 恶 之 , 故 有 道 者 不 处 。

君 子 居 则 贵 左 , 用 兵 则 贵 右 。

兵 者 不 祥 之 器 , 非 君 子 之 器 ,

不 得 已 而 用 之 , 恬 淡 为 上 。

胜 而 不 美 , 而 美 之 者 , 是 乐 杀 人 。

夫 乐 杀 人 者 , 则 不 可 得 志 于 天 下 矣 。

吉 事 尚 左 , 凶 事 尚 右 。

偏 将 军 居 左 , 上 将 军 居 右 , 言 以 丧 礼 处 之 。

杀 人 之 众 , 以 悲 哀 泣 之 , 战 胜 以 丧 礼 处 之 。

 

老 子: 「道 德 经」 : 第 三 十 二 章

道 常 无 名 朴 。

虽 小 , 天 下 莫 能 臣 。

侯 王 若 能 守 之 , 万 物 将 自 宾 。

天 地 相 合 , 以 降 甘 露 , 民 莫 之 令 而 自 均 。

始 制 有 名 , 名 亦 既 有 ,

夫 亦 将 知 止 , 知 止 可 以 不 殆 。

譬 道 之 在 天 下 , 犹 川 谷 之 于 江 海 。

 

老 子: 「道 德 经」 : 第 三 十 三 章

知 人 者 智 , 自 知 者 明 。

胜 人 者 有 力 , 自 胜 者 强 。

知 足 者 富 。

强 行 者 有 志 。

不 失 其 所 者 久 。

死 而 不 亡 者 寿 。

 

老 子: 「道 德 经」 : 第 三 十 四 章

大 道 泛 兮 , 其 可 左 右 。

万 物 恃 之 以 生 而 不 辞 , 功 成 而 不 有 。

衣 养 万 物 而 不 为 主 , 可 名 于 小 ﹔

万 物 归 焉 而 不 为 主 , 可 名 为 大 。

以 其 终 不 自 为 大 , 故 能 成 其 大 。

 

老 子: 「道 德 经」 : 第 三 十 五 章

执 大 象 , 天 下 往 。

往 而 不 害 , 安 平 泰 。

乐 与 饵 , 过 客 止 。

道 之 出 口 , 淡 乎 其 无 味 ,

视 之 不 足 见 , 听 之 不 足 闻 , 用 之 不 足 既 。

 

老 子: 「道 德 经」 : 第 三 十 六 章

将 欲 歙 之 , 必 故 张 之 ﹔ 将 欲 弱 之 , 必 故 强 之 ﹔

将 欲 废 之 , 必 故 兴 之 ﹔ 将 欲 取 之 , 必 故 与 之 。

是 谓 微 明 。

柔 弱 胜 刚 强 。

鱼 不 可 脱 于 渊 , 国 之 利 器 不 可 以 示 人 。

 

老 子: 「道 德 经」 : 第 三 十 七 章

道 常 无 为 而 无 不 为 。

侯 王 若 能 守 之 , 万 物 将 自 化 。

化 而 欲 作 , 吾 将 镇 之 以 无 名 之 朴 。

镇 之 以 无 名 之 朴 , 夫 将 不 欲 。

不 欲 以 静 , 天 下 将 自 正 。

 

老 子: 「道 德 经」 : 第 三 十 八 章

上 德 不 德 , 是 以 有 德 ﹔

下 德 不 失 德 , 是 以 无 德 。

上 德 无 为 而 无 以 为 ﹔

下 德 无 为 而 有 以 为 。

上 仁 为 之 而 无 以 为 ﹔

上 义 为 之 而 有 以 为 。

上 礼 为 之 而 莫 之 应 ,

则 攘 臂 而 扔 之 。

故 失 道 而 后 德 , 失 德 而 后 仁 ,

失 仁 而 后 义 , 失 义 而 后 礼 。

夫 礼 者 , 忠 信 之 薄 , 而 乱 之 首 。

前 识 者 , 道 之 华 , 而 愚 之 始 。

是 以 大 丈 夫 处 其 厚 , 不 居 其 薄 ﹔

处 其 实 , 不 居 其 华 。 故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 三 十 九 章

昔 之 得 一 者 :

天 得 一 以 清 ﹔

地 得 一 以 宁 ﹔

神 得 一 以 灵 ﹔

谷 得 一 以 生 ﹔

侯 得 一 以 为 天 下 正 。

其 致 之 也 , 谓 天 无 以 清 , 将 恐 裂 ﹔

地 无 以 宁 , 将 恐 废 ﹔

神 无 以 灵 , 将 恐 歇 ﹔

谷 无 以 盈 , 将 恐 竭 ﹔

万 物 无 以 生 , 将 恐 灭 ﹔

侯 王 无 以 正 , 将 恐 蹶 。

故 贵 以 贱 为 本 , 高 以 下 为 基 。

是 以 侯 王 自 称 孤 、 寡 、 不 谷 。

此 非 以 贱 为 本 邪 。 非 乎 。 故 致 誉 无 誉 。

是 故 不 欲 琭 琭 如 玉 , 珞 珞 如 石 。

 

老 子: 「道 德 經」 : 第 四 十 章

反 者 道 之 动 ﹔ 弱 者 道 之 用 。

天 下 万 物 生 于 有 , 有 生 于 无 。

 

老 子: 「道 德 经」 : 第 四 十 一 章

上 士 闻 道 , 勤 而 行 之 ﹔ 中 士 闻 道 , 若 存 若 亡 ﹔

下 士 闻 道 , 大 笑 之 。 不 笑 不 足 以 为 道 。

故 建 言 有 之 :

明 道 若 昧 ﹔

进 道 若 退 ﹔

夷 道 若 颣 ﹔

上 德 若 谷 ﹔

广 德 若 不 足 ﹔

建 德 若 偷 ﹔

质 真 若 渝 ﹔

大 白 若 辱 ﹔

大 方 无 隅 ﹔

大 器 晚 成 ﹔

大 音 希 声 ﹔

大 象 无 形 ﹔

道 隐 无 名 。

夫 唯 道 , 善 贷 且 成 。

 

老 子: 「道 德 经」 : 第 四 十 二 章

道 生 一 , 一 生 二 , 二 生 三 , 三 生 万 物 。

万 物 负 阴 而 抱 阳 , 冲 气 以 为 和 。

人 之 所 恶 , 唯 孤 、 寡 、 不 谷 , 而 王 公 以 为 称 。

故 物 或 损 之 而 益 , 或 益 之 而 损 。

人 之 所 教 , 我 亦 教 之 。

强 梁 者 不 得 其 死 , 吾 将 以 为 教 父 。

 

老 子: 「道 德 经」 : 第 四 十 三 章

天 下 之 至 柔 , 驰 骋 天 下 之 至 坚 。

无 有 入 无 间 , 吾 是 以 知 无 为 之 有 益 。

不 言 之 教 , 无 为 之 益 , 天 下 希 及 之 。

 

老 子: 「道 德 经」 : 第 四 十 四 章

名 与 身 孰 亲 。 身 与 货 孰 多 。 得 与 亡 孰 病 。

甚 爱 必 大 费 ﹔ 多 藏 必 厚 亡 。

故 知 足 不 辱 , 知 止 不 殆 , 可 以 长 久 。

 

老 子: 「道 德 经」 : 第 四 十 五 章

大 成 若 缺 , 其 用 不 弊 。

大 盈 若 冲 , 其 用 不 穷 。

大 直 若 屈 , 大 巧 若 拙 , 大 辩 若 讷 。

静 胜 躁 , 寒 胜 热 。 清 静 为 天 下 正 。

 

老 子: 「道 德 经」 : 第 四 十 六 章

天 下 有 道 , 却 走 马 以 粪 。

天 下 无 道 , 戎 马 生 于 郊 。

祸 莫 大 于 不 知 足 ﹔ 咎 莫 大 于 欲 得 。

故 知 足 之 足 , 常 足 矣 。

 

老 子: 「道 德 经」 : 第 四 十 七 章

不 出 户 , 知 天 下 ﹔ 不 窥 牖 , 见 天 道 。

其 出 弥 远 , 其 知 弥 少 。

是 以 圣 人 不 行 而 知 , 不 见 而 明 , 不 为 而 成 。

 

老 子: 「道 德 经」 : 第 四 十 八 章

为 学 日 益 , 为 道 日 损 。

损 之 又 损 , 以 至 于 无 为 。

无 为 而 无 不 为 。

取 天 下 常 以 无 事 , 及 其 有 事 , 不 足 以 取 天 下 。

 

老 子: 「道 德 经」 : 第 四 十 九 章

圣 人 常 无 心 , 以 百 姓 心 为 心 。

善 者 , 吾 善 之 ﹔ 不 善 者 , 吾 亦 善 之 ﹔ 德 善 。

信 者 , 吾 信 之 ﹔ 不 信 者 , 吾 亦 信 之 ﹔ 德 信 。

圣 人 在 天 下 , 歙 歙 焉 , 为 天 下 浑 其 心 ,

百 姓 皆 注 其 耳 目 , 圣 人 皆 孩 之 。

 

老 子: 「道 德 经」 : 第 五 十 章

出 生 入 死 。

生 之 徒 , 十 有 三 ﹔

死 之 徒 , 十 有 三 ﹔

人 之 生 , 动 之 于 死 地 , 亦 十 有 三 。

夫 何 故 。

以 其 生 之 厚 。

盖 闻 善 摄 生 者 , 路 行 不 遇 兕 虎 , 入 军 不 被 甲 兵 ﹔

兕 无 所 投 其 角 , 虎 无 所 用 其 爪 , 兵 无 所 容 其 刃 。

夫 何 故 。 以 其 无 死 地 。

 

老 子: 「道 德 经」 : 第 五 十 一 章

道 生 之 , 德 畜 之 , 物 形 之 , 势 成 之 。

是 以 万 物 莫 不 尊 道 而 贵 德 。

道 之 尊 , 德 之 贵 , 夫 莫 之 命 而 常 自 然 。

故 道 生 之 , 德 畜 之 ﹔

长 之 育 之 ﹔ 成 之 熟 之 ﹔ 养 之 覆 之 。

生 而 不 有 , 为 而 不 恃 ,

长 而 不 宰 。 是 谓 玄 德 。

 

老 子: 「道 德 经」 : 第 五 十 二 章

天 下 有 始 , 以 为 天 下 母 。

既 得 其 母 , 以 知 其 子 ,

复 守 其 母 , 没 身 不 殆 。

塞 其 兑 , 闭 其 门 , 终 身 不 勤 。

开 其 兑 , 济 其 事 , 终 身 不 救 。

见 小 曰 明 , 守 柔 曰 强 。

用 其 光 , 复 归 其 明 , 无 遗 身 殃 ﹔ 是 为 袭 常 。

 

老 子: 「道 德 经」 : 第 五 十 三 章

使 我 介 然 有 知 , 行 于 大 道 , 唯 施 是 畏 。

大 道 甚 夷 , 而 人 好 径 。

朝 甚 除 , 田 甚 芜 , 仓 甚 虚 ﹔

服 文 采 , 带 利 剑 , 厌 饮 食 ,

财 货 有 余 ﹔ 是 为 盗 夸 。

非 道 也 哉 。

 

老 子: 「道 德 经」 : 第 五 十 四 章

善 建 者 不 拔 ,

善 抱 者 不 脱 , 子 孙 以 祭 祀 不 辍 。

修 之 于 身 , 其 德 乃 真 ﹔

修 之 于 家 , 其 德 乃 余 ﹔

修 之 于 乡 , 其 德 乃 长 ﹔

修 之 于 邦 , 其 德 乃 丰 ﹔

修 之 于 天 下 , 其 德 乃 普 。

故 以 身 观 身 ,

以 家 观 家 , 以 乡 观 乡 ,

以 邦 观 邦 , 以 天 下 观 天 下 。

吾 何 以 知 天 下 然 哉 。 以 此 。

 

老 子: 「道 德 经」 : 第 五 十 五 章

含 「 德 」 之 厚 , 比 于 赤 子 。

毒 虫 不 螫 , 猛 兽 不 据 , 攫 鸟 不 搏 。

骨 弱 筋 柔 而 握 固 。

未 知 牝 牡 之 合 而 峻 作 , 精 之 至 也 。

终 日 号 而 不 嗄 , 和 之 至 也 。

知 和 曰 「 常 」 ,

知 常 曰 「 明 」 。

益 生 曰 祥 。 心 使 气 曰 强 。

物 壮 则 老 , 谓 之 不 道 , 不 道 早 已 。

 

老 子: 「道 德 经」 : 第 五 十 六 章

知 者 不 言 , 言 者 不 知 。

挫 其 锐 , 解 其 纷 , 和 其 光 ,

同 其 尘 , 是 谓 「 玄 同 」 。

故 不 可 得 而 亲 , 不 可 得 而 疏 ﹔

不 可 得 而 利 , 不 可 得 而 害 ﹔

不 可 得 而 贵 , 不 可 得 而 贱 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 五 十 七 章

以 正 治 国 , 以 奇 用 兵 , 以 无 事 取 天 下 。

吾 何 以 知 其 然 哉 。 以 此 :

天 下 多 忌 讳 , 而 民 弥 贫 ﹔

人 多 利 器 , 国 家 滋 昏 ﹔

人 多 伎 巧 , 奇 物 滋 起 ﹔

法 令 滋 彰 , 盗 贼 多 有 。

故 圣 人 云 :

「 我 无 为 , 而 民 自 化 ﹔

我 好 静 , 而 民 自 正 ﹔

我 无 事 , 而 民 自 富 ﹔

我 无 欲 , 而 民 自 朴 。 」

 

老 子: 「道 德 经」 : 第 五 十 八 章

其 政 闷 闷 , 其 民 淳 淳 ﹔

其 政 察 察 , 其 民 缺 缺 。

是 以 圣 人 方 而 不 割 , 廉 而 不 刿 ,

直 而 不 肆 , 光 而 不 耀 。

祸 兮 福 之 所 倚 , 福 兮 祸 之 所 伏 。

孰 知 其 极 。 其 无 正 也 。

正 复 为 奇 , 善 复 为 妖 。

人 之 迷 , 其 日 固 久 。

 

老 子: 「道 德 经」 : 第 五 十 九 章

治 人 事 天 , 莫 若 啬 。

夫 唯 啬 , 是 谓 早 服 ﹔

早 服 谓 之 重 积 德 ﹔ 重 积 德 则 无 不 克 ﹔

无 不 克 则 莫 知 其 极 ﹔ 莫 知 其 极 , 可 以 有 国 ﹔

有 国 之 母 , 可 以 长 久 ﹔

是 谓 深 根 固 柢 , 长 生 久 视 之 道 。

 

老 子: 「道 德 经」 : 第 六 十 章

治 大 国 , 若 烹 小 鲜 。

以 道 莅 天 下 , 其 鬼 不 神 ﹔

非 其 鬼 不 神 , 其 神 不 伤 人 ﹔

非 其 神 不 伤 人 , 圣 人 亦 不 伤 人 。

夫 两 不 相 伤 , 故 德 交 归 焉 。

 

老 子: 「道 德 经」 : 第 六 十 一 章

大 邦 者 下 流 , 天 下 之 牝 ,

天 下 之 交 也 。

牝 常 以 静 胜 牡 , 以 静 为 下 。

故 大 邦 以 下 小 邦 , 则 取 小 邦 ﹔

小 邦 以 下 大 邦 , 则 取 大 邦 。

故 或 下 以 取 , 或 下 而 取 。

大 邦 不 过 欲 兼 畜 人 , 小 邦 不 过 欲 入 事 人 。

夫 两 者 各 得 所 欲 , 大 者 宜 为 下 。

 

老 子: 「道 德 经」 : 第 六 十 二 章

道 者 万 物 之 奥 。 善 人 之 宝 , 不 善 人 之 所 保 。

美 言 可 以 市 尊 , 美 行 可 以 加 人 。

人 之 不 善 , 何 弃 之 有 。

故 立 天 子 , 置 三 公 ,

虽 有 拱 璧 以 先 驷 马 ,

不 如 坐 进 此 道 。

古 之 所 以 贵 此 道 者 何 。

不 曰 : 求 以 得 , 有 罪 以 免 邪 。 故 为 天 下 贵 。

 

老 子: 「道 德 经」 : 第 六 十 三 章

为 无 为 , 事 无 事 , 味 无 味 。

图 难 于 其 易 , 为 大 于 其 细 ﹔

天 下 难 事 , 必 作 于 易 ,

天 下 大 事 , 必 作 于 细 。

是 以 圣 人 终 不 为 大 , 故 能 成 其 大 。

夫 轻 诺 必 寡 信 , 多 易 必 多 难 。

是 以 圣 人 犹 难 之 , 故 终 无 难 矣 。

 

老 子: 「道 德 经」 : 第 六 十 四 章

其 安 易 持 , 其 未 兆 易 谋 。

其 脆 易 泮 , 其 微 易 散 。

为 之 于 未 有 , 治 之 于 未 乱 。

合 抱 之 木 , 生 于 毫 末 ﹔

九 层 之 台 , 起 于 累 土 ﹔

千 里 之 行 , 始 于 足 下。

民 之 从 事 , 常 于 几 成 而 败 之 。

慎 终 如 始 , 则 无 败 事 。

 

老 子: 「道 德 經」 : 第 六 十 五 章

古 之 善 为 道 者 , 非 以 明 民 , 将 以 愚 之 。

民 之 难 治 , 以 其 智 多 。

故 以 智 治 国 , 国 之 贼 ﹔

不 以 智 治 国 , 国 之 福 。

知 此 两 者 亦 稽 式 。

常 知 稽 式 , 是 谓 「 玄 德 」 。

「 玄 德 」 深 矣 , 远 矣 , 与 物 反 矣 , 然 后 乃 至 大 顺 。

 

老 子: 「道 德 经」 : 第 六 十 六 章

江 海 之 所 以 能 为 百 谷 王 者 ,

以 其 善 下 之 , 故 能 为 百 谷 王 。

是 以 圣 人 欲 上 民 , 必 以 言 下 之 ﹔

欲 先 民 , 必 以 身 后 之 。

是 以 圣 人 处 上 而 民 不 重 , 处 前 而 民 不 害 。

是 以 天 下 乐 推 而 不 厌 。

以 其 不 争 , 故 天 下 莫 能 与 之 争 。

 

老 子: 「道 德 经」 : 第 六 十 七 章

天 下 皆 谓 我 道 大 , 似 不 肖 。

夫 唯 大 , 故 似 不 肖 。

若 肖 , 久 矣 其 细 也 夫 。

我 有 三 宝 , 持 而 保 之 。

一 曰 慈 ,

二 曰 俭 ,

三 曰 不 敢 为 天 下 先 。

慈 故 能 勇 ﹔ 俭 故 能 广 ﹔

不 敢 为 天 下 先 , 故 能 成 器 长 。

今 舍 慈 且 勇 ﹔ 舍 俭 且 广 ﹔

舍 后 且 先 ﹔ 死 矣 。

夫 慈 以 战 则 胜 , 以 守 则 固 。

天 将 救 之 , 以 慈 卫 之 。

 

老 子: 「道 德 经」 : 第 六 十 八 章

善 为 士 者 , 不 武 ﹔

善 战 者 , 不 怒 ﹔

善 胜 敌 者 , 不 与 ﹔

善 用 人 者 , 为 之 下 。

是 谓 不 争 之 德 ,

是 谓 用 人 之 力 ,

是 谓 配 天 古 之 极 。

 

老 子: 「道 德 经」 : 第 六 十 九 章

用 兵 有 言 :

「 吾 不 敢 为 主 , 而 为 客 ﹔

不 敢 进 寸 , 而 退 尺 。 」

是 谓 行 无 行 ﹔ 攘 无 臂 ﹔

扔 无 敌 ﹔ 执 无 兵 。

祸 莫 大 于 轻 敌 , 轻 敌 几 丧 吾 宝 。

故 抗 兵 相 若 , 哀 者 胜 矣 。

 

老 子: 「道 德 经」 : 第 七 十 章

吾 言 甚 易 知 , 甚 易 行 。

天 下 莫 能 知 , 莫 能 行 。

言 有 宗 , 事 有 君 。

夫 唯 无 知 , 是 以 不 我 知 。

知 我 者 希 , 则 我 者 贵 。

是 以 圣 人 被 褐 而 怀 玉 。

 

老 子: 「道 德 经」 : 第 七 十 一 章

知 不 知 , 尚 矣 ﹔ 不 知 知 , 病 也 。

圣 人 不 病 , 以 其 病 病 。

夫 唯 病 病 , 是 以 不 病 。

 

老 子: 「道 德 经」 : 第 七 十 二 章

民 不 畏 威 ,

则 大 威 至 。

无 狎 其 所 居 ,

无 厌 其 所 生 。

夫 唯 不 厌 ,

是 以 不 厌 。

是 以 圣 人 自 知 不 自 见 ﹔

自 爱 不 自 贵 。

故 去 彼 取 此 。

 

老 子: 「道 德 经」 : 第 七 十 三 章

勇 于 敢 则 杀 , 勇 于 不 敢 则 活 。

此 两 者 , 或 利 或 害 。

天 之 所 恶 , 孰 知 其 故 。

天 之 道 ,

不 争 而 善 胜 , 不 言 而 善 应 ,

不 召 而 自 来 , 繟 然 而 善 谋 。

天 网 恢 恢 , 疏 而 不 失 。

 

老 子: 「道 德 经」 : 第 七 十 四 章

民 不 畏 死 , 奈 何 以 死 惧 之 。

若 使 民 常 畏 死 , 而 为 奇 者 ,

吾 得 执 而 杀 之 , 孰 敢 。

常 有 司 杀 者 杀 。

夫 代 司 杀 者 杀 , 是 谓 代 大 匠 斲 ,

夫 代 大 匠 斲 者 , 希 有 不 伤 其 手 矣 。

 

老 子: 「道 德 经」 : 第 七 十 五 章

民 之 饥 , 以 其 上 食 税 之 多 , 是 以 饥 。

民 之 难 治 , 以 其 上 之 有 为 , 是 以 难 治 。

民 之 轻 死 , 以 其 上 求 生 之 厚 , 是 以 轻 死 。

夫 唯 无 以 生 为 者 , 是 贤 于 贵 生 。

 

老 子: 「道 德 经」 : 第 七 十 六 章

人 之 生 也 柔 弱 , 其 死 也 坚 强 。

草 木 之 生 也 柔 脆 , 其 死 也 枯 槁 。

故 坚 强 者 死 之 徒 , 柔 弱 者 生 之 徒 。

是 以 兵 强 则 灭 , 木 强 则 折 。

强 大 处 下 , 柔 弱 处 上 。

 

老 子: 「道 德 经」 : 第 七 十 七 章

天 之 道 , 其 犹 张 弓 欤 。

高 者 抑 之 , 下 者 举 之 ﹔

有 余 者 损 之 , 不 足 者 补 之 。

天 之 道 , 损 有 余 而 补 不 足 。

人 之 道 , 则 不 然 , 损 不 足 以 奉 有 余 。

孰 能 有 余 以 奉 天 下 , 唯 有 道 者 。

是 以 圣 人 为 而 不 恃 , 功 成 而 不 处 , 其 不 欲 见 贤 。

 

老 子: 「道 德 经」 : 第 七 十 八 章

天 下 莫 柔 弱 于 水 , 而 攻 坚 强 者 莫 之 能 胜 , 以 其 无 以 易 之 。

弱 之 胜 强 , 柔 之 胜 刚 ,

天 下 莫 不 知 , 莫 能 行 。

是 以 圣 人 云 :

「 受 国 之 垢 , 是 谓 社 稷 主 ﹔

受 国 不 祥 , 是 为 天 下 王 。 」

正 言 若 反 。

老 子: 「「道 德 經」」 : 第 七 十 九 章

和 大 怨 , 必 有 余 怨 ﹔

报 怨 以 德 , 安 可 以 为 善 。

是 以 圣 人 执 左 契 , 而 不 责 于 人 。

有 德 司 契 , 无 德 司 彻 。

天 道 无 亲 , 常 与 善 人 。

老 子:「道 德 经」 : 第 八 十 章

小 国 寡 民 。

使 有 什 伯 之 器 而 不 用 ﹔

使 民 重 死 而 不 远 徙 。

虽 有 舟 舆 , 无 所 乘 之 ,

虽 有 甲 兵 , 无 所 陈 之 。

使 民 复 结 绳 而 用 之 。

甘 其 食 , 美 其 服 , 安 其 居 , 乐 其 俗 。

邻 国 相 望 , 鸡 犬 之 声 相 闻 ,

民 至 老 死 , 不 相 往 来 。

老 子: 「道 德 经」 : 第 八 十 一 章

信 言 不 美 , 美 言 不 信 。

善 者 不 辩 , 辩 者 不 善 。

知 者 不 博 , 博 者 不 知 。

圣 人 不 积 , 既 以 为 人 己 愈 有 ,

既 以 与 人 己 愈 多 。

天 之 道 , 利 而 不 害 ﹔

圣 人 之 道 , 为 而 不 争 。

——老子“道德经原文”结束,《道德经全文》

WordPress元老Alex King逝世 与癌症抗争两年半

wordpress alex king

WordPress初期开发者Alex King

北京时间9月29日下午消息,WordPress初期开发者Alex King昨天夜间在家中逝世。Alex King于2013年1月被诊断出癌症,与癌症抗争了两年半。

Alex King在WordPress生态系统中有着巨大的影响力,他参与了从该网站前身b2到现在的WordPress的重建,也参与构建了WordPress 第一个客户端,还建立了第一家针对WordPress的咨询机构。他为大量WordPress功能的开发奠定了基础,甚至包括如今广泛使用的“一键分享” 图标的原型。

8月24日,Alex King在博客上公布了他的遗愿,希望其他人写下对他以及他工作成就的印象,并提交给他的妻子。(李林)

高富帅们的Git技巧

Git是一个分布式版本控制系统,拥有许多神奇而易用的特性(比如:分支),这让它可以轻松适应各种工作流程。这篇文章不涉及Git的基本使用,而是介绍了一些高级却有用的小技巧。让我们一起来看看高富帅们的Git技巧,准备好逆袭吧!

以“块”形式暂存你的改动

你肯定已经很熟悉的使用git add命令来将改动暂存到暂存区(staging area)了。你可能也会偶然因为两个不同的原因而做了一次改动,却没有分别提交(仅仅提交了一次),所以,当你执行git log时,会看到诸如这样的提交信息:“修改X,改动无关的Y”。如果这看起来像是你的工作方式,交互式add将是你的有力工具。

交互式add(或者叫add块),将会一个块一个快的循环你的改动。使用命令git add -p时,你可以在每个改动“块”(即:连续的改动会被组织到一起)时进行一些选择,比如:切分当前块为更小的块、跳过一个改动块、甚至手动的编辑该块,你 可以敲入?来查看所有该命令提供的选项。

开始以“块”形式暂存改动简单到只需一条命令(括号部分替换为特定文件):

git add -p (path/file)

译者注:感觉这条命令平常用的较少,我遇到需要分别提交的情况时,都是手动来add然后提交,该命令是这种方法的高级版本。我们平常可能对提交历史的重视比较低,常常出现一些无用的、无意义的提交信息,可以试试这条命令。

切换到最后所在分支

作为一个善良的码农,当你需要快速做些修正或是清理工作时,你都应该花些时间来对待。如果你的工作流程是十分依赖分支的话(译者注:强烈建议如 此),你可能不希望无关的修正影响到现在正在进行功能开发的分支。这意味着,你应该使用git stash命令来暂时存放你的改动,然后切到master分支(译者注:或是其它啥分支,我一般是取名为fix),在那个分支进行修正。(译者注:修正完 了,可以切回正在进行功能开发的分支,执行git stash pop来弹出之前暂存的改动,继续进行开发)。在不同分支间切换很乏味,幸好这里有个快捷命令可以切换到你最后所在的分支:

git checkout -

这个语法对于使用linux的高富帅们来说一定不陌生,cd命令有个类似的缩写cd -,表示切换到你最后所在的目录。当你需要切回功能开发分支时,你根本不用关心那个分支是啥名,只需git checkout -。

译者注:感觉tab键的自动补全也挺好用的,不过这条命令可以少敲点字。有了这条命令,妈妈再也不用担心我的分支切换了。

显示哪些分支被合并了(或是哪些没有被合并)

在使用git时,你可能会创建许多分支,导致执行git branch命令列出分支时变得有些杂乱。于是,你想处理那些已经合并到master分支的无用分支,但是,当你执行git checkout -d 来删除分支时可能会遇到“麻烦”(译者注:git会拒绝删除未合并的分支并提示你),如果使用以下命令,你将不再需要三思而后删,可以自信的处理那些已经 合并了的分支。

如果你想要看看你的本地分支里哪些分支是已经合并进你当前所在的分支时,可以使用:

git branch --merged

反过来,如果需要查看哪些分支还没有合并进当前所在的分支,可以使用:

git branch --no-merged

结合高富帅的UNIX工具,你可以轻松的删除那些已经合并了的分支:

git branch --merged | xargs git branch -d

译者注:xargs是UNIX平台的一个工具,它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。如果git branch –merged显示的是a,b,c三个分支已经合并,上面的命令会转换为:git branch -d a b c。更多xargs的信息:http://zh.wikipedia.org/wiki/Xargs

从另一分支获取文件内容而不用切换分支

设想你正在进行重构,你创建了好几个分支并在各分支下进行改动。这时,你想把另一个分支里某一个文件的改动引入到当前工作的分支里,为了达到目的你 可能需要好几步:git stash你的改动;切换到那个分支;获取文件的改动;切回工作分支(当然是使用git checkout -);继续进行编辑(译者注:别忘了git stash pop)。但是,你也可以直接检出另一分支的文件,并且合并到你当前所在的工作分支,使用命令(括号部分替换为对应的分支和文件):

git checkout (branch) -- (path/file)

以最后提交排序的Git分支

想必你已经使用上面的tip处理了杂乱的分支,有一些是用–merged选项标志来清理的吧。那其它的分支咋办呢?你咋知道哪些是有用的,哪些是 完全过期无用的呢?git for-each-ref命令可以打印出一个列表,该列表显示每个分支最后一次提交的引用(reference)信息。我们可以自定义输出来包含一些有用 的信息,更重要的是我们还可以按日期排序。可以使用下面的命令来输出一个列表,该表将显示按时间先后排序的每个分支的最后提交信息、提交者等信息:

git for-each-ref --sort=-committerdate --format="%(committername)@%(refname:short) [%(committerdate:short)] %(contents)"

还可以把它定义在gitconfig里:

[alias]
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"

译者注:定义后就只需执行git latest了。注意双引号需要转义!

在玻璃房内的人们别用git blame

或者说,在玻璃房内的人们不应该直接使用git blame而不带下文的选项标志。(译者注:玻璃房内的人是完全能被别人看到的人。这里的意思应该是想说,你每一次提交的变动都会被记录到git仓库的历 史,对于git仓库来说,你就像是住在玻璃房里的人,没有任何秘密,你根本逃不过git的”责问“)git blame是很有用的命令,它就像使用科学来证明你是正确的!但是请注意,许多文件的变动是很表面的,发现问题的来源需要更多的探索。像是移除空白、移动 内容到新行、移动内容到另一文件等动作都可以使用选项来忽略掉,以便更容易的找到代码变动的始作俑者。

在你blame(责备)他人前,记得用以下命令看看结果:

git blame -w  # 忽略移除空白这类改动
git blame -M  # 忽略移动文本内容这类改动
git blame -C  # 忽略移动文本内容到其它文件这类改动

译者注:git blame用来显示一份文件每一行的最近一次提交的提交hash值和提交者。当你跟别人说“我真的没改过这个文件啊”之前,就得git blame下。

在整个git仓库提交历史中找寻内容(然后删掉它)

你有时可能需要查找一行你写的代码,但是就是无法找到。它可能安放在了一些已经被遗忘的分支,或是删除了很久,又或是就在那显而易见的地方。无论哪种方式,你都可以通过一些命令在整个git仓库的历史中搜寻特定的字符串。

首先,我们需要拿到所有的提交,然后,使用git grep来搜寻特定的字符串。如下:

git rev-list --all | xargs git grep -F '搜寻的字符串'

你可能有一个粗心的朋友不小心在仓库里提交了诸如,用户名、密码、外婆的大蒜食谱等敏感信息。首先,他们得更改用户名、密码(并向外婆道歉)。然 后,你需要搜寻这些得罪人的文件,并将他们从整个仓库的历史里抹去(这听起来好像很容易)。经过这个处理,那些执行git pull的伙计们就会发现所有提交中包含的敏感信息都被清理干净了,而那些没有合并你的远程改动的家伙还是拥有敏感信息(所以,千万别忘记先改用户名和密 码)。我们来看看怎么操作。

首先,重写每个分支的历史,移除敏感信息:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch (filename)' --prune-empty --tag-name-filter cat -- --all

然后,将记录敏感信息的文件增加到.gitignore文件,并提交(括号部分替换为对应文件名):

echo (filename) >> .gitignore
git add .gitignore
git commit -m "Add sensitive (filename) file to gitignore"

接着,由于我们改写了历史,我们需要“强制”的将改动推到远程:

git push origin master --force
# 译者注:还可以使用命令
git push origin +master

最后,这个文件还在你的本地仓库里,还需要将它完全抹除:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

你这粗心的朋友从敏感文件的危机中解脱,而你用你高超的git知识成功逆袭,成为了他的英雄!

译者注:一天,妹子叫我去她家帮她把她的三围信息从git仓库的历史里完全删除,我研究了很久不得要领。妹子说,不如我们做点其它的事吧。我觉得我的git知识被她鄙视了,坚定的说,我一定要把它删掉!然后,就没有然后了… …

忽略文件跟踪

在和他人合作时可能常常意味着你需要更改一些配置才能让应用在环境里跑起来,这时,常常会不小心把这些只对你有意义的配置文件也给提交了。为了不再 常常关注这些文件,看着它们在git status时放肆的显示“modified”,你可以告诉git忽略它们的改动。这种方式,可以看成是一种和仓库绑定的gitignore文件(括号部 分替换为对应文件):

  git update-index --assume-unchanged (path/file)

译者注:感觉,.gitignore文件更方便和好理解。

让分支的历史归零

不管出于啥理由,有时从头开始正是你需要的。也许是你接手了一个不确信能安全开源的代码仓库;也许是你要着手做些全新的事情;也许是你想创建用于其 它目的一个新分支,又希望继续在仓库里维护它(比如:github页面,项目的文档一类的东西)。上述的情形下,你可以非常简单的创建一个没有提交历史的 分支(括号部分替换为对应分支):

  git checkout --orphan (branch)

译者注:我们知道,分支只是对提交的一个引用,所以,每当从当前分支创建一个分支时,被创建的分支都会延续之前的历史,但是这种方式却不会,是一个完完全全干净的git分支,没有任何的提交!

你一定离不开的别名

不讨论能节省大量敲击时间的“git别名(git alias)”技巧的git文章一定都是在耍流氓。停止输入冗长的命令,使用超级有用的别名吧!git别名可以加到.gitconfig文件里,或是使用 命令(译者注:本质就是改写.gitconfig命令)来增加(括号部分替换为别名和对应的命令):

    git config --global alias.(name) "(command)"
  1. 在依赖分支的工作流程中,你常常要在不同分支间切换,每次敲击节约你6个字母。
    co = checkout
    
  2. 在提交前瞧瞧你将要提交的都有什么改动是一个好习惯,这可以帮助你发现拼写错误、不小心的提交敏感信息、将代码组织成符合逻辑的组。使用git add暂存你的改动,然后使用git ds查看你将要提交的改动动。
    ds = diff --staged
    
  3. 你可能十分熟悉git输出的详细状态信息了,当到达一定境界时,你可能需要忽略所有那些描述,直击问题的核心。这个别名输出将输出git status的简短形式和分支的详细信息。
    st = status -sb
    
  4. 你是否在提交后才发现忘记git add某个文件了,或是提交了才想再改动些啥?amend(修正)暂存区到最近的一次提交吧。(译者注:这个命令不太好理解,–amend是重写提交历 史,-C是重用某次提交的提交信息。场景是当你提交完了发现还有些改动没提交,又不想写什么“改动了X,再次提交”这种狗血的提交信息。重新git add并git amend后,重用上次的提交信息再次提交,替换上次的不完整提交。特别注意–amend重写了提交,如果你已经push到远程了,慎用这条命令!)
    amend = commit --amend -C HEAD
    
  5. 有时上面的修正可能不好使了,你需要undo(撤销)。undo会回退到上次提交,暂存区也会回退到那次提交时的状态。你可以进行额外的改动,用新的提交信息来再次进行提交。
    undo = reset --soft HEAD^
    
  6. 维护一个多人编辑的代码仓库常常意味着试着发现何人在改动什么,这个别名可以输出提交者和提交日期的log信息。
    ls = log --pretty=format:'%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green) [%cn]' --decorate --date=short
    
  7. 这个别名用来在一天的开启时回顾你昨天做了啥,或是在早晨刷新你的记忆(括号内替换为自己的email)。
    standup = log --since '1 day ago' --oneline --author (YOUREMAIL)
    
  8. 一个复杂的仓库可能很难用直线式的输出来查看,这个别名可以用图表的形式向你展示提交是怎样及何时被加到当前分支的。
    graph = log --graph --pretty=format:'%C(yellow)%h %C(blue)%d %C(reset)%s %C(white)%an, %ar%C(reset)'
    

译者注:我根据上面的别名进行了一些整理修改,这是我现在的.gitconfig里的别名配置:

[alias]
  st = status -sb
  co = checkout
  br = branch
  mg = merge
  ci = commit
  ds = diff --staged
  dt = difftool
  mt = mergetool
  last = log -1 HEAD
  latest = for-each-ref --sort=-committerdate --format=\"%(committername)@%(refname:short) [%(committerdate:short)] %(contents)\"
  ls = log --pretty=format:\"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]\" --decorate --date=short
  hist = log --pretty=format:\"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad\" --topo-order --graph --date=short
  type = cat-file -t
  dump = cat-file -p

via alimama mux
作者:Chris Kelly 译者:栖邀
英文原文

来源:http://segmentfault.com/a/1190000002448847

unauthenticated user mysql 原因分析

最近常出现 客户端连接远程服务器失败问题

show processlist;

出现 unauthenticated user,一直到超时;

网上查了下,到处都是互相抄袭文章,类似:

解决的方案很简单,结束这个反查的过程,禁止任何解析。

打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:

skip-name-resolve

。。。

实际上我都用IP连接的,不会出现这种问题

最后网上有个说是网络慢也会影响连接,ping 测试了下果然慢

ping liyunde.com
PING liyunde.com (112.126.64.59): 56 data bytes
64 bytes from 112.126.64.59: icmp_seq=0 ttl=51 time=41.072 ms
64 bytes from 112.126.64.59: icmp_seq=1 ttl=51 time=40.965 ms
64 bytes from 112.126.64.59: icmp_seq=2 ttl=51 time=41.036 ms
64 bytes from 112.126.64.59: icmp_seq=3 ttl=51 time=42.662 ms
64 bytes from 112.126.64.59: icmp_seq=4 ttl=51 time=41.681 ms
64 bytes from 112.126.64.59: icmp_seq=5 ttl=51 time=41.701 ms
64 bytes from 112.126.64.59: icmp_seq=6 ttl=51 time=41.859 ms
64 bytes from 112.126.64.59: icmp_seq=7 ttl=51 time=43.713 ms

网络响应过慢,配置服务器不能解决这个问题,换个好点的网络,问题自然解决。

服务器的瞬时 Diffie-Hellman 公共密钥过弱

服务器的瞬时 Diffie-Hellman 公共密钥过弱

ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY

该错误会在连接到安全 (HTTPS) 服务器时发生。 这意味着服务器正在尝试建立安全连接, 但由于严重的配置错误,连接会很不安全!

在这种情况下, 服务器需要进行修复。 为了保护您的隐私, “Google Chrome”不会使用不安全的连接。

以前可以跳过,现在不行了

方法:

1.更改服务器加密协议为TSL,chrome 45 版本后不再支持SSL v2 v3了

Firefox 可以使用 禁止dhe,不过不推荐

2.使用更高强度的证书,可以自签,也可使用免费证书(不过都有时间限制)

当然如果不差钱,可以购买一个证书,这样解决问题彻底

Beanstalkd 使用

一、安装

1、官网

https://kr.github.io/beanstalkd/

2、安装

yum install beanstalkd --enablerepo=epel

3、启动

/usr/bin/beanstalkd -l 0.0.0.0 -p 11300 -b /var/lib/beanstalkd/binlog -F

-b 开启binlog,断电后重启会自动恢复任务。

二、基本概念

1、Beanstalkd设计里面的核心概念:

  • job :一个需要异步处理的任务,是 Beanstalkd 中的基本单元,需要放在一个 tube 中。
  • tube :一个有名的任务队列,用来存储统一类型的 job,是 producer 和 consumer 操作的对象。
  • producer :Job 的生产者,通过 put 命令来将一个 job 放到一个 tube 中。
  • consumer :Job的消费者,通过 reserve/release/bury/delete 命令来获取 job 或改变 job 的状态。

2、job 的生命周期

Beanstalkd job life circle

当producer直接put一个job时,job就处于READY状态,等待consumer来处理,如果选择延迟put,job就先到 DELAYED状态,等待时间过后才迁移到READY状态。consumer获取了当前READY的job后,该job的状态就迁移到RESERVED, 这样其他的consumer就不能再操作该job。

当consumer完成该job后,可以选择delete, release或者bury操作;delete之后,job从系统消亡,之后不能再获取;release操作可以重新把该job状态迁移回READY(也 可以延迟该状态迁移操作),使其他的consumer可以继续获取和执行该job;有意思的是bury操作,可以把该job休眠,等到需要的时候,再将休 眠的job kick回READY状态,也可以delete BURIED状态的job。

正是有这些操作和状态,才可以基于此做出很多意思的应用,比如要实现一个循环队列,就可以将RESERVED状态的 job休眠掉,等没有READY状态的job时再将BURIED状态的job一次性kick回READY状态。

  • READY – 需要立即处理的任务,当延时 (DELAYED) 任务到期后会自动成为当前任务;
  • DELAYED – 延迟执行的任务, 当消费者处理任务后, 可以用将消息再次放回 DELAYED 队列延迟执行;
  • RESERVED – 已经被消费者获取, 正在执行的任务。Beanstalkd 负责检查任务是否在 TTR(time-to-run) 内完成;
  • BURIED – 保留的任务: 任务不会被执行,也不会消失,除非有人把它 “踢” 回队列;
  • DELETED – 消息被彻底删除。Beanstalkd 不再维持这些消息。

3、一些特性

优先级

任务 (job) 可以有 0~2^32 个优先级, 0 代表最高优先级,默认优先级为1024。

持久化

可以通过binlog将job及其状态记录到文件里面,在Beanstalkd下次启动时可以通过读取binlog来恢复之前的job及状态。

分布式容错

分布式设计和Memcached类似,beanstalkd各个server之间并不知道彼此的存在,都是通过client来实现分布式以及根据tube名称去特定server获取job。

超时控制

为了防止某个consumer长时间占用任务但不能处理的情况,Beanstalkd为reserve操作设置了timeout时间,如果该consumer不能在指定时间内完成job,job将被迁移回READY状态,供其他consumer执行。

三、Client Libraries For PHP

项目地址: https://github.com/pda/pheanstalk/

1、Producer 示例:向队列中添加job

$pheanstalk = new Pheanstalk_Pheanstalk('127.0.0.1');

$pheanstalk ->useTube('tubeName') ->put($jobData);

2、Consumer 示例:从队列中取出job

$job = $pheanstalk ->watch('tubeName') ->ignore('default') ->reserve();

echo $job->getData();

$pheanstalk->delete($job);

3、检查服务状态

$isAlive = $pheanstalk->getConnection()->isServiceListening(); //返回 true 或 false

4、获取某一 tube 的数据

try{
    $tubeStatus = $pheanstalk->statsTube('tubeName');
} catch (Exception $e){
    if($e->getMessage()=='Server reported NOT_FOUND'){     //tube 不存在
        $current_jobs_ready = 0;
    }
}

四、其他

1、PHP 版控制台

https://github.com/ptrofimov/beanstalk_console

2、Chrome 插件

https://chrome.google.com/webstore/detail/beanstalkd-dashboard/dakkekjnlffnecpmdiamebeooimjnipm

原文:segmentfault.com

PHP7 Support PThread

In PHP7 etc/standard/php_smart_str.h has been renamed to etc/standard/php_smart_string.h.

错误描述:

php-7.0.0beta3/ext/pthreads/php_pthreads.c:22:
./src/pthreads.h:41:10: fatal error: ‘ext/standard/php_smart_str.h’ file not
found
#include <ext/standard/php_smart_str.h>
^
1 error generated.
make: *** [php_pthreads.lo] Error 1

https://github.com/gophp7/gophp7-ext/wiki/extensions-catalog

https://github.com/krakjoe/pthreads/tree/seven

今天在github 上发现一个新的分支seven 可用在php7

下载之

使用当前最新php版本 php-7.0.0RC2

➜  /Users/liyunde/Downloads/pthreads-seven  >phpize7
Configuring for:
PHP Api Version:         20131218
Zend Module Api No:      20141001
Zend Extension Api No:   320140815

配置

➜  /Users/liyunde/Downloads/pthreads-seven  >./configure –with-php-config=php-config7 –enable-pthreads

…..

creating libtool
appending configuration tag “CXX” to libtool
configure: creating ./config.status
config.status: creating config.h

编译,安装

make -j2

make test

sudo make install

make 通过,工作正常,enjoy !

 

Excel最多可存多少行,多少列

使用Excel2007或Excel2010,在“另存为” 菜单中可以选择为“Excel 07-2003 工作薄”,从中我们可以看出,到了2007版以后,存储格式变了,简单一点从扩展名便可以看出,一个是.xls,一个是.xlsx,差异自己去体会,因为 对于我来说,Excel用得相当少。

平时多是用Number,不过一般为能用 都导出为excel格式,演示文档,内容相同的PPT2007 相对PPT2003要小很多,更方便携带。

Excel最多可存多少行,多少列?查到的资料如下:

Excel 07-2003一个工作表最多可有65536行,行用数字1—65536表示;最多可有256列,一个工作簿中最多含有255个工作表,默认情况下是三个工作表;

Excel 2007及以后版本,一个工作表最多可有1048576行,16384列;

crontab 每月最后一天

在linux中设置crontab在每月最后一天执行的两种方法:
方法一:

Linux环境:
0 23 28-31 * * [ `date -d tomorrow +\%e` -eq 1 ] && do-something
Unix,BSD,Mac环境:
0 23 28-31 * * [ `echo \`cal\` | awk ‘{print $NF}’` -eq 1 ] && do-something

方法二:
单独靠crontab判断比较复杂,所以把判断部分写到执行脚本中

#!/bin/bash
today=`date +%d`
last_day=`cal | xargs | awk ‘{print $NF}’`
if [ “$today” != “$last_day” ]; then
exit 1
fi

CRONTAB语法及应用

1:查看当前用户的定时任务

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/dev/null 2>&1

2:编辑当前用户的定时任务

可以在编辑状态修改、删除、新增一些定时任务。注释一般用#

[oracle@localhost ~]$ crontab -e

3:删除当前用户的定时任务

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

4如下所示,一般crontab文件里面的定时任务格式如下所示:

59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

crontab 文件中每个条目中各个域的意义和格式:

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列 要运行的命令

我们暂且用C1、C2、C3、C4、C5、C6代表这六列,前面五列通过组合方式来决定执行脚本的频率,最小频率为每分钟执行一次,其中Cn可以用 * ; */n ; T1-T2; a,b,c; 四种形式来表示:

当 C1 为 * 时表示每分钟都要执行脚本,C2 为 * 时表示每小时都要执行程式,依次类推…..

当 C1 为 T1-T2 时表示从第 T1 分钟到第 T2 分钟这段时间内要执行,C2 为 T1-T2 时表示从第 T1 到第 T2 小时都要执行,依次类推….

当 C1 为 */n 时表示每 n 分钟的时间间隔执行一次,C2 为 */n 表示每隔n小时的间隔执行一次,依次类推…..

当 C1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,C2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,依次类推….

下面列举几个例子供大家参考

1: 59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

表示每天23点59分执行脚本/home/oracle/scripts/alert_log_archive.sh

2: */5 * * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1

表示每5分钟执行一次脚本/home/oracle/scripts/monitoring_alert_log.sh

3: 0 20 * * 1-5 mail -s “**********” haha@liyunde.com < /tmp/maildata

周一到周五每天下午 20:00 寄一封信给 haha@liyunde.com

……………………………………….

关于 >/dev/null 2>&1 的解释:

0表示键盘输入

1表示标准输出

2表示错误输出.

我们首先创建test.sh脚本如下:

#! /bin/sh

echo “hello, everybody, now is ” `date`

date >> test.txt

然后添加作业

* * * * * /home/oracle/test.sh >/home/oracle/log.txt & 默认值为1,即和下面命令一致

* * * * * /home/oracle/test.sh 1>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt &

* * * * * /home/oracle/test.sh 2>/home/oracle/log.txt 2>&1 &

1,2将tesh.sh 命令输出重定向到log.txt, 即输出内容不打印到屏幕上,而是输出到log.txt文件中。如果你需要追加而不是覆盖,可以用 >>代替>

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件log.txt。

&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。

注意事项:

配置定时任务时,需要注意两个问题:

1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为 crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置

2: 尽量所有的文件都采用完全路径方式,避免使用相对路径。

更新到10.10.3,但是出现finder缓慢,文件夹长时间菊花问题

问题出现:

更新后,finder只要打开本次启动没打开过的文件夹,就会转很久菊花(窗口右下角状态栏),才能刷出来。
删除到废纸篓和清空都变得很缓慢 有卡顿。其它程序打开文件时调用finder 选择文件也变得很慢。

解决方案:

1,如果使用了内存盘,请关闭RamDisk
2.  去掉系统文件的ln 特别是tmp ,cache,logs,并放回原来的位置,
如果不在系统默认位置,依然会菊花很久,/var/folders/xx/乱序码/T,是放用户临时文件的地方,不能换位置,也不能放内存盘,不然就会菊花
3. 要关闭系统,再启动,用重启好像是不行地,(reboot也不行)
4.可以回复ram使用,不过依然会有些小问题,还是不要用了,对磁盘读写负担没有减少

 

同类问题: http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1591396

@liyunde

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。

Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种 就足够了。在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。在一般情况下,人们并不区分 Bourne Shell和Bourne Again Shell,所以,在下面的文字中,我们可以看到#!/bin/sh,它同样也可以改为#!/bin/bash。

利用vi等文本编辑器编写Shell脚本的格式是固定的,如下:

#!/bin/sh

#comments

Your commands go here

首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程 序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误。后续的部分就是主程序,Shell脚本像高级语言一样,也有变量赋值,也有控制语句。除第 一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上”,这个符号表明下一行与此行会合并为同一行。

编辑完毕,将脚本存盘为filename.sh,文件名后缀sh表明这是一个Bash脚本文件。执行脚本的时候,要先将脚本文件的属性改为可执行的:

chmod +x filename.sh

执行脚本的方法是:

./filename.sh

下面我们从经典的“hello world”入手,看一看最简单的Shell脚本的模样。

#!/bin/sh

#print hello world in the console window

a = “hello world”

echo $a

Shell Script是一种弱类型语言,使用变量的时候无需首先声明其类型。新的变量会在本地数据区分配内存进行存储,这个变量归当前的Shell所有,任何子进 程都不能访问本地变量。这些变量与环境变量不同,环境变量被存储在另一内存区,叫做用户环境区,这块内存中的变量可以被子进程访问。变量赋值的方式是:

variable_name = variable_value

如果对一个已经有值的变量赋值,新值将取代旧值。取值的时候要在变量名前加$,$variable_name可以在引号中使用,这一点和其他高级语言是明显不同的。如果出现混淆的情况,可以使用花括号来区分,例如:

echo “Hi, $as”

就不会输出“Hi, hello worlds”,而是输出“Hi,”。这是因为Shell把$as当成一个变量,而$as未被赋值,其值为空。正确的方法是:

echo “Hi, ${a}s”

单引号中的变量不会进行变量替换操作。

关于变量,还需要知道几个与其相关的Linux命令。

env用于显示用户环境区中的变量及其取值;set用于显示本地数据区和用户环境区中的变量及其取值;unset用于删除指定变量当前的取值,该值将被指定为NULL;export命令用于将本地数据区中的变量转移到用户环境区。

下面我们来看一个更复杂的例子,结合这个例子,我们来讲述Shell Script的语法。

1 #!/bin/bash
2 # we have less than 3 arguments. Print the help text:
3 if [ $# -lt 3 ]; then
4 cat<<HELP
5 ren — renames a number of files using sed regular expressions
6
7 USAGE: ren ‘regexp’ ‘replacement’ files
8 EXAMPLE: rename all *.HTM files in *.html:
9 ren ‘HTM$’ ‘html’ *.HTM
10
11 HELP
12 exit 0
13 fi
14 OLD=”$1″
15 NEW=”$2″
16 # The shift command removes one argument from the list of
17 # command line arguments.
18 shift
19 shift
20 # $* contains now all the files:
21 for file in $*; do
22 if [ -f “$file” ]; then
23 newfile=`echo “$file” | sed “s/${OLD}/${NEW}/g”`
24 if [ -f “$newfile” ]; then
25 echo “ERROR: $newfile exists already”
26 else
27 echo “renaming $file to $newfile ”
28 mv “$file” “$newfile”
29 fi
30 fi
31 done

我们从头来看,前面两行上一个例子中已经解释过了,从第三行开始,有新的内容。if语句和其他编程语言相似,都是流程控制语句。它的语法是:

if …; then

elif …; then

else

fi

与其他语言不同,Shell Script中if语句的条件部分要以分号来分隔。第三行中的[]表示条件测试,常用的条件测试有下面几种:

[ -f “$file” ] 判断$file是否是一个文件

[ $a -lt 3 ] 判断$a的值是否小于3,同样-gt和-le分别表示大于或小于等于

[ -x “$file” ] 判断$file是否存在且有可执行权限,同样-r测试文件可读性

[ -n “$a” ] 判断变量$a是否有值,测试空串用-z

[ “$a” = “$b” ] 判断$a和$b的取值是否相等

[ cond1 -a cond2 ] 判断cond1和cond2是否同时成立,-o表示cond1和cond2有一成立

要注意条件测试部分中的空格。在方括号的两侧都有空格,在-f、-lt、=等符号两侧同样也有空格。如果没有这些空格,Shell解释脚本的时候就会出错。

$#表示包括$0在内的命令行参数的个数。在Shell中,脚本名称本身是$0,剩下的依次是$0、$1、$2…、${10}、${11},等等。$*表示整个参数列表,不包括$0,也就是说不包括文件名的参数列表。

现在我们明白第三行的含义是如果脚本文件的参数少于三个,则执行if和fi语句之间 的内容。然后,从第四行到第十一行之间的内容在Shell Script编程中被称为Here文档,Here文档用于将多行文本传递给某一命令。Here文档的格式是以<<开始,后跟一个字符串,在 Here文档结束的时候,这个字符串同样也要出现,表示文档结束。在本例中,Here文档被输出给cat命令,也即将文档内容打印在屏幕上,起到显示帮助 信息的作用。

第十二行的exit是Linux的命令,表示退出当前进程。在Shell脚本中可以使用所有的Linux命令,利用上面的cat和exit,从一方面来说,熟练使用Linux命令也可以大大减少Shell脚本的长度。

十四、十五两句是赋值语句,分别将第一和第二参数赋值给变量OLD和NEW。紧接下来的两句是注释,注释下面的两条shift的作用是将参数列表中的第一个和第二个参数删除,后面的参数依次变为新的第一和第二参数,注意参数列表原本也不包括$0。

然后,自二十一行到三十一行是一个循环语句。Shell Script中的循环有下面几种格式:

while [ cond1 ] && { || } [ cond2 ] …; do

done

for var in …; do

done

for (( cond1; cond2; cond3 )) do

done

until [ cond1 ] && { || } [ cond2 ] …; do

done

在上面这些循环中,也可以使用类似C语言中的break和continue语句中断 当前的循环操作。第二十一行的循环是将参数列表中的参数一个一个地放入变量file中。然后进入循环,判断file是否为一个文件,如果是文件的话,则用 sed命令搜索和生成新的文件名。sed基本上可以看成一个查找替换程序,从标准输入,例如管道读入文本,并将结果输出到标准输出,sed使用正则表达式 进行搜索。在第二十三行中,backtick(`)的作用是取出两个backtick之间的命令输出结果,在这里,也就是将结果取出赋给变量 newfile。此后,判断newfile是否已经存在,否则就把file改成newfile。这样我们就明白这个脚本的作用了,Shell Script编写的其他脚本与此相似,只不过是语法和用法稍有不同而已。

通过这个例子我们明白了Shell Script的编写规则,但还有几件事情需要讲述一下。

第一个,除了if语句之外,Shell Script中也有类似C语言中多分支结构的case语句,它的语法是:

case var in

pattern 1 )

… ;;

pattern 2 )

… ;;

*)

… ;;

esac
我们再就下面一个例子,看看case语句的用法。

while getopts vc: OPTION

do

case $OPTION in

c) COPIES=$OPTARG

ehco “$COPIES”;;

v) echo “suyang”;;

\?) exit 1;;

esac

done

上面的getopts类似于C语言提供的函数getopts,在Shell Script中,getopts经常和while语句联合起来使用。getopts的语法如下:

getopts option_string variable

option_string中包含一串单字符选项,若getopts在命令行参数中 发现了连字符,那么它会将连字符之后的字符与option_string进行比较,若匹配成功,则把变量variable的值设为该选项,若无匹配,则把 变量的值设为?。有时候,选项还会带一个值,例如-c5等,这时要在option_string中该选项字母后面加上一个冒号,getopts发现冒号 后,会读取该值,然后将该值放入特殊变量OPTARG中。这个命令比较复杂,如有需要,读者可以详细参阅Shell编写的相关资料。

上面这个循环的作用就是依次取出脚本名称后面的选项,进行处理,如果输入了非法选项,则进入”?指定的部分,退出脚本程序。

第二个,Bash提供了一种用于交互式应用的扩展select,用户可以从一组不同的值中进行选择。其语法如下:

select var in …; do

break;

done

例如,下面这段程序的输出是:

#!/bin/bash

echo “Your choice?”

select var in “a” “b” “c”; do

break

done

echo $var

—————————-

Your choice?

1) a

2) b

3) c

第三,Shell Script中也可以使用自定义的函数,其语法形式如下:

functionname()

{

}

例如我们可以把上面第二个例子中第四到第十二行放入一个名为help函数体内,以后每次调用的时候直接写help即可。函数中处理函数调用参数的方法是,直接用上面讲过的$1、$2来分别表示第一、第二个参数,用$*表示参数列表。

第四,我们也可以在Shell下调试Shell Script脚本,当然最简单的方法就是用echo输出查看变量取值了。Bash也提供了真正的调试方法,就是执行脚本的时候用-x参数。

sh ?x filename.sh

这会执行脚本并显示脚本中所有变量的取值,也可以使用参数-n,它并不执行脚本,只是返回所有的语法错误。

http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html

移动端html5之IOS篇

一、在移动端head 中都会加入如下一些app专属的Meta元素

  1. <meta name=”viewport” content=”width=device-width, initial-scale=1,  maximum-scale=1, minimum-scale=1.0,  user-scalable=no”>
  2. <meta name=”apple-mobile-web-app-title” content=“iOS title”>
  3. <meta name=”apple-mobile-web-app-capable” content=”yes”>
  4. <meta name=”apple-mobile-web-app-status-bar-style” content=”black”>
  5. <meta name=”format-detection” content=”telephone=no”>
  6. <meta name=”format-detection” content=”address=no”>
  7. <meta name=”format-detection” content=”email=no”>
  8. <link href=”/images/apple-touch-icon-57×57.png” rel=”apple-touch-icon”>
  9. <link media=”(device-height:480px)” href=”startup/apple-touch-startup-image-640×920.png” rel=”apple-touch-startup-image”>


1、viewport 
width :这个还用说么,,你可以自己手动设置数值,也可等同于设置宽device-width
initial-scale :表示页面初始的缩放比例1:1
maximum-scale:表示允许用户缩放的最大比例
minimum-scale:表示允许用户缩放的最小比例
user-scalable:是否允许用户进行手动缩放(yes/no)

2、apple-mobile-web-app-title
网页默认的title 是不是太长了,可以自己定义一个类似ios app 名

3、apple-mobile-web-app-capable
添加到主屏后,点击图标启动后会隐藏导航和工具栏

4、apple-mobile-web-app-status-bar-style
这个我一直以为是隐藏手机顶部的条,好吧我面壁去了。
其实就是一个背景颜色,默认为白色,可以设置black 和灰色半透明 black-translucent
设置为“black-translucent”将会占据页面px位置,浮在页面上方(会覆盖页面20px高度,iphone4和itouch4的Retina屏幕为40px)

5、format-detection——telephone
默认为识别数字为电话号码,telephone=no 为禁止

6、format-detection——address
禁止跳转为地图 address=no

7、format-detection——email
禁止设置识别邮箱,email=no

8、apple-touch-icon 
设置保存到主屏的icon 图标,如果不设置默认为整个页面截图,亲测真的丑到爆好么。
<link href=”/images/apple-touch-icon-114×114.png” rel=”apple-touch-icon” sizes=”114×114″>
<link href=”/images/apple-touch-icon-120×120.png” rel=”apple-touch-icon” sizes=”120×120”>
图片尺寸可以设定为57*57(px)或者Retina可以定为114*114(px),ipad尺寸为72*72(px)

9、apple-touch-startup-image
为了高逼格,当然少不了启动动画,模拟的当然要真一些嘛。
<link media=”(device-height:480px)” href=”startup/apple-touch-startup-image-640×920.png” rel=”apple-touch-startup-image”>
<link media=”(device-height:568px)” href=”startup/apple-touch-startup-image-640×1096.png” rel=”apple-touch-startup-image”>
media
设备高度为480px 代表iPhone4/4s
设备高度为568px 代表iPhone5

二、一些元素技巧

10、文件上传
<input type=”file”> 单文件
<input type=“file” multiple > 多文件

11、直接呼出数字键盘
<input type=”tel”>

12、呼出email键盘
<input type=“email”>

13、打电话
<a href=”tel:12345654321″>打电话给我</a>

14、发短信
<a href=”sms:12345654321″>发短信</a>

一张感动全球的照片

一张感动全球的照片

在伊拉克,一个没有妈妈的小女孩,在孤儿院的水泥地面上,画了一个妈妈。她小心翼翼地脱下鞋子,在妈妈的胸口睡着了……真不知道该如何用人类的语言去诠释 这样的一个画面,我们还有什么资格和理由抱怨自己不够幸福?珍惜现在所拥有的,其实幸福可以很简单!默默地看着这幅画,也许你会感动掉泪……