header("Content-type:text/html;charset=utf-8"); 
//-------------------------------------------------------------------------------- 

date_default_timezone_set('Asia/Shanghai'); 

echo '<br>';
echo '今天:',date('Y-m-d'),'<br>';
echo '昨天:',date('Y-m-d',strtotime('-1 day')),'<br>';
echo '昨天:',date('Y-m-d',strtotime('yesterday')),'<br>';
echo '明天:',date('Y-m-d',strtotime('+1 day')),'<br>';

echo '一周后:',date('Y-m-d',strtotime('+1 week')),'<br>';     
echo '一周零两天四小时两秒后:',date('Y-m-d G:H:s',strtotime('+1 week 2 days 4 hours 2 seconds')),'<br>';     
echo '下个星期四:',date('Y-m-d',strtotime('next Thursday')),'<br>';     
echo '上个周一:',date('Y-m-d',strtotime('last Monday')),'<br>';     
echo '一个月前:',date('Y-m-d',strtotime('last month')),'<br>';     
echo '一个月后:',date('Y-m-d',strtotime('+1 month')),'<br>';     
echo '十年后:',date('Y-m-d',strtotime('+10 year')),'<br>';

echo '昨天:',date('Y/m/d H:i:s', strtotime('1 days ago')),'<br>';
echo '前天:',date('Y/m/d H:i:s', strtotime('2 days ago')),'<br>';

$time_yes=localtime(time()-24*60*60, true); 
$time_b_yes=localtime(time()-2*24*60*60, true);
echo '<pre>localtime(time()-24*60*60, true):';print_r($time_yes);echo '<br>';
echo '<pre>localtime(time()-2*24*60*60, true):';print_r($time_b_yes);echo '<br>';

echo '昨天:',date('Y/m/d H:i:s',mktime(0,0,0,date('m'),date('d')-1,date('Y'))),'<br>';
echo '明天:',date('Y/m/d h:i:s',mktime(date('h'), date('i'), date('s'), date('m') , date('d')+1, date('Y'))),'<br>';

//先得到今天的UNIXTIME,然后减去一天或两天的秒数,把减后的UNIXTIME格式化成日期。
echo '昨天:',date('Y/m/d h:i:s',time()-24*60*60),'<br>';
echo '前天:',date('Y/m/d h:i:s',time()-2*24*60*60),'<br>';

开启此功能有两个种方法:

  1. 修改my.conf, 去掉 auto-rehash的#号
    [mysql]
    auto-rehash
    
  2. 在mysql启动时加参数auto-rehash
    mysqld_safe --user=mysql --auto-rehash &

复制整个表
create table new_table select * from old_table;

复制,不复制数据
create table new_table select * from old_table where 0;

  1. 进入php源文件目录

  2. cd php-5.2.8/ext/openssl

  3. /usr/local/bin/phpize

  4. 查看openssl目录下有个config.w32和config0.m4,把config0.m4改名为config.m4。

mv config0.m4 config.m4

  1. /usr/local/bin/phpize

    1. ./configure —with-openssl —with-php-c
  2. make;make install

    提示成功后,在php.ini里加入extensi

重启php-fpm

时区设置:

一. 在php.ini里设置
`date.timez

二.在php里设置
date_default_timezone_set("Asia/Kolkata");

时区列表: http://php.net/manual/zh/timezones.php

查看SVN日志的时候会报:svn出现问题E220001: Item is not readable

这个主要是因为没有授权,我们要对 authz 文件做些简单修改:

[/]
* = r
@admin = rw

今天在项目当遇到的问题.

function foo($a){

 var_dump($a);

 return true;
}

$res = foo();
echo '你妹!' . var_dump($res);;

上面的方法反回的结果:
NULL 你妹! bool(true)

首先,调用方法其实是成功了.只报了一个Warning,而没有终止本次调用.

var_dump($a) 是null,这样一来, 后var_dump($a) 后面的程序当中使用$a的时候,都会根据上下文件恩为相应类型.也许就会造成结果一混乱.所以应该在接下来的业务当中根据业务返回值,而不应该直接写 return true; 其实这种写法还很恐怖的.

var_dump($res); 这个结果就直接会造成接下来的业务全部出现混乱. 按理来说, 执行 $res = foo(); 不有传 $a 参数.最好的结果是不再继续往下执行.但php还是执行下去了. 坑啊.

如何避免这种情况呢? 目前没好办法.也许Exception能解决.有待继续探索.

ps -ef | grep ^username | cut -c 10-15 | xargs kill -9

杀掉某个用户的所有进程

ps x|grep gas|grep -v grep |awk '{print $1}'|xargs kill -9 
ps -ef|grep /im/msg_d.php | grep -v grep | cut -c 9-15 |xargs kill -9

运行这条命令将会杀掉所有含有关键字”LOCAL=NO”的进程,是不是很方便?

下面将这条命令作一下简单说明:

管道符”|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

“ps -ef” 是linux里查看所有进程的命令。这时检索出的进程将作为下一条命令”grep LOCAL=NO”的输入。

“grep LOCAL=NO” 的输出结果是,所有含有关键字”LOCAL=NO”的进程。

“grep -v grep” 是在列出的进程中去除含有关键字”grep”的进程。

“cut -c 9-15” 是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -9” 中的 xargs 命令是用来把前面命令的输出结果(PID)作为”kill -9”命令的参数,并执行该命令。”kill -9”会强行杀掉指定进程。

其它类似的情况,只需要修改”grep LOCAL=NO”中的关键字部分就可以了。

1.领导能力

2.技术能力

3.沟通能力

4.规划能力

5.外交能力

6.财务能力

/etc/rc.local是linux环境下,系统启动完以后会执行的一个脚本,一般来说自已写的一些维护脚本需要开机执行的基本就搁在了。那么OSX系统上有没有这样的文件呢,自已去/etc找了一下,发现一个rc.common的东东很可疑,网上查了一下发现了在OSX系统上添加rc.local的方法具体如下:

1.编辑文件/etc/rc.common
sudo vim /etc/rc.common

尾部添加内容:

if [ -f /etc/rc.local ]; then
sh /etc/rc.local
fi

2.创建文件/etc/rc.local
sudo touch /etc/rc.local

然后就可以像Linux一样使用/etc/rc.local了。
/etc/rc.local示例:

#!/bin/bash
/usr/local/bin/nginx

一. 基本语法:

var part = new RegExp(pattern,modifiers);
var myfunc = new Function([name],’alert(“Hello” + name)’);
var patt = /pattern/modifiers;

二. 正则表达式中的modifiers

前面已经提到了modifier,它主要用来指明模式是否对大小写敏感以及是否全局搜索。
i: 用来指明是否对大小写敏感。
g: 用来指明是否进行全局搜索。(即匹配所有符合模式的字符串而不是搜索到第一个就停止)
m: 用来指明是否进行多行匹配。(即遇到转义换行符\n是否还继续搜索)
经常用到的是前面两个i和g,m不是很常用。

三. JavaScript正则表达式对象的方法

1.compile()。它将编译一个正则表达式。该方法已经在JavaScript version 1.5中被弃用。
2.exec()。该方法将对一个字符串进行匹配。并返回第一个匹配项目。例如:

var patt1=new RegExp(“e”);
patt1.exec(“The best things in life are free”);

结果将返回e,即第一个匹配到的项目。

3.test()。该方法对一个字符串进行匹配。并根据匹配结果返回true或false。例如:

var patt1=new RegExp(“e”);
patt1.test(“The best things in life are free”);

结果将返回true。因为字符串中含有能匹配上的项目e。
4.toString()。该方法将正则表达式对象转换为一个字符串。例如:

var patt = new RegExp(“Hello World”,”g”);
patt.toString();

结果将返回一个字符串’/Hello World/g’。

/// string

  1. match()
    var str = “Do you know if there is all there is?”;
     var patt1 = /[is]/gi;
     s= str.match(patt1);
     console.log(s);
    

结果: [“i”, “i”, “s”, “i”, “s”]

  1. stringObj.search(rgExp)

返回与正则表达式查找内容匹配的第一个子字符串的位置(偏移位)。

  1. stringObj.replace(rgExp, replaceText)

返回根据正则表达式进行文字替换后的字符串的复制

四. 正则表达式中的括号

1.[abc] 这是最基本的一种用法,它用来查找方括号中出现的任何字符,可以是一个或者多个,并且和顺序没有关系。

var str = “Do you know if there is all there is?”;
var patt1 = /[is]/gi;1.
2.
如果用patt1来匹配str,那么我们根据上面的定义很容易知道会匹配到str中i和s字母,并且由于patt1中指明了全局匹配和对大小写不敏感,所有的i和s字母无论大小写都会被匹配到。

2.[^abc]。这种写法用来查找任何不属于方括号中出现的字符,下面是一个例子:

var str = “Do you know if there is all there is?”;
var patt2 = /[^is]/gi; 1.
2.
如果使用patt2来匹配str,很明显,字母i和字母s以外的字符都会被匹配到。

3.[0-9]。这种写法用来查找某个区间中的字符。下面是一个例子:

var str = “There are 3 child”;
var patt3 = /[a-z]/ig;1.
2.
使用patt3匹配str,其中所有的a到z的字母,也就是所有英文字母,无论大小写,都会被匹配到。

4.[^0-9]。这种写法用来查找不属于某个区间中的字符。下面是一个例子:

var str = “There are 3 child”;
var patt4 = /[a-z]/ig;”1.
2.
使用patt4来匹配str,所有a到z的字母,也就是所有英文字母,无论大小写都不会被匹配,因此只有数字3会被匹配到。

5.(x|y)。这种写法用来从匹配几种(可以不止两种)情况中的任意一种。下面是一个例子:

var str = “re, green, red, green, gren, gr, blue, yellow”;
var patt5 = /(red|green)/g;1.
2.
如果使用patt5来匹配str,str中所有的red和green都会被匹配到。再来一个多中选择的例子:

var str = “01234567890123456789”;
var patt6 = /(0|5|7)/g; 1.
2.
使用patt6来匹配str,str中所有的数字0、5、7都会被匹配到。

世界上最好用的快捷键组合

本文是针对Mac OS而言.如果是windows, 用alt键代替command 一样可以达到很好的效果.

所有标签切换:

公共:
command + 1 上一个标签
command + 2 下一个标签
command + ~ 第一个标签
command + 3 最后一个标签
command + q 退出程序
command + w 关闭标签页,这个是系统自带
command + tab 窗口切换
command + shift + 5 截图拍照
chrome
command + t 打开新标签页
command + r 刷新页面
command + shift + r 强制刷新页面
command + g 打开审查素功能
command + 4 查看源代码
Zend

command + g 定位到行
command + e
command + shift + r 打开文件
command + shift + t 打开类

本教程干什么我就不说了.

  1. 搞一台国外的vps,只要能正常上被墙网站的就可以.

  2. SSH连接到国外服务器,

       2.1  安装gcc
    

yum -y install gcc1.
2.2 安装openssl及相关

yum install zlib zlib-devel openssl openssl-devel prce prce-devel1.
2.3 生成证书

openssl req -new -x509 -days 365 -nodes -out ${FILE_NAME}.pem -keyout ${FILE_NAME}.pem

${FILE_NAME}.pem是自定义生成的安全证书的名字,其他各个参数的意义如下:
-new:生成新的密匙
-x509:生成X509安全证书
-days 365:有效期1年
-nodes:不设置密码
-out:生成的文件名
-keyout:存放密匙的文件名
1.
2.
3.
4.
5.
6.
7.
8.
9.
2.4 安装squid

CentOS 安装方法
yum -y install squid
配置 sudo vi /etc/squid/squid.conf
清空文件(做好备份), 替换成如下内容
acl all src all
acl CONNECT method CONNECT
http_access allow all

http_port 3128

https_port 443 cert=/root/server.crt key=/root/server.key
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid3

dns_nameservers 8.8.8.8

cache_mem 64 MB
重启 squid restart1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
2.5 安装stunnel

wget 下载stunnel
tar zxvf stunnel-4.29.tar.gz
cd stunnel-4.29
./configure
make
make install
make install后会要生成一个stunnel.pem文件, 会问你一写国家城市之类的东东, 相应的填写即可.
配置 sudo vi /usr/local/stunnel/etc/stunnel/stunnel.conf
1 client = yes
2 [https]
3 accept = 127.0.0.1:8088
4 #c
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
2.6 安装 SwitchySharp chrome 插件

          情景模式里新建一种模式

          名称随便写

          选手动配置

          HTTP代理 127.0.0.1 端口8088

         对所有协议均使用相同的代理服务器 打上勾
css

#menu {  
    font: 12px verdana, arial, sans-serif;  

}  

#menu,#menu li {  
    list-style: none;  
    padding: 0;  
    margin: 0;  
}  

#menu li {  
    float: left;  
}  

#menu li a {  
    display: block;  
    /* 如果是中英文混排的文字,建议用固定宽度 width:150px; height:30px; line-height:30px; text-align:center; */  
    padding: 8px 50px;  
    background: #3A4953;  
    color: #fff;  
    text-decoration: none;  
    border-right: 1px solid #000;  
}  

#menu li a:hover {  
    background: #146C9C;  
    color: #fff;  
    text-decoration: none;  
    border-right: 1px solid #000;  
}  

#menu li a.last {  
    border-right: 0; /* 去掉左侧边框 */  
}
 HTML {
 scrollbar-base-color: #666;   

 scrollbar-3dlight-color: #666;   
 scrollbar-highlight-color: #666;   
 scrollbar-highlight-width: 2px;
 scrollbar-track-color: #FFFFFF;   
 scrollbar-arrow-color: #FFFFFF;
 scrollbar-shadow-color: #666;   
 scrollbar-dark-shadow-color: #666;
}  

/* chrome */
::-webkit-scrollbar { width: 5px; height: 3px;}   
::-webkit-scrollbar-track-piece { background-color: #ffffff;}   
::-webkit-scrollbar-thumb{height: 50px; background-color: #666; -webkit-border-radius: 3px;}
.custom-scroll-bar::-webkit-scrollbar{

 background:-webkit-linear-gradient(left,rgba(202, 202, 202, 0.07) 0%,rgba(229, 229, 229, 0.07) 100%);

 width:10px;
 -webkit-box-shadow:0 0 1px 0 rgba(0,0,0,.15) inset,0 1px 0 0 #fff;

 box-shadow:0 0 1px 0 rgba(0,0,0,.15) inset,0 1px 0 0 #fff;

 background-color:#E5E5E5;
}
.custom-scroll-bar::-webkit-scrollbar, .custom-scroll-bar::-webkit-scrollbar-thumb{
 overflow: visible;
 border-radius:4px;
 border:solid 1px #A6A6A6;
}
.custom-scroll-bar::-webkit-scrollbar-button{
 background-color:transparent;height:0px;display:block;
}
.custom-scroll-bar::-webkit-scrollbar-thumb:hover{
 background-color: #fff;
}

#topNav { 
 background-color:#096; z-index:999; position:fixed;
 bottom:0; left:0; width:100%; _position:absolute; /* for IE6 */
 _top: [removed]documentElement.scrollTop + documentElement.clientHeight-this.offsetHeight); /* for IE6 */
 overflow:visible; 
}
$(document).ready(function(){

      $("input[type='text']").each(

      function(){
         $(this).keypress( function(e) {

                 var key = window.event ? e.keyCode : e.which;

                 if(key.toString() == "13"){

                     alert('Please click respective submit button as Enter key is disabled');
                     return false;
                 }
         });
    });
});

这是一篇介绍windows 版chrome 修改快捷键的方案.

首先下载:Resource Hacker 这个软件(有中文版),

然后, 我们进入Chrome的默认安装路径,在当前版本号的文件夹里找到文件chrome.dll,

Win7下该文件在:系统盘:\Users\用户名\AppData\Local\Google\Chrome\Application\当前游览器版本号\,XP应该是大同小异。

在解析出来的chrome.dll文件里我们可以找到快捷键的配置项( 类似下边的配置 )

101 ACCELERATORS
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
 VK_P, 35007, CONTROL, SHIFT, VIRTKEY 打印当前页面
 VK_LEFT, 33000, ALT, VIRTKEY 后退
 VK_BACK, 33000, VIRTKEY 下拉
 VK_D, 35000, CONTROL, VIRTKEY 添加到收藏夹
 VK_D, 35001, CONTROL, SHIFT, VIRTKEY 修改收藏夹
 VK_DELETE, 40013, CONTROL, SHIFT, VIRTKEY 清除游览数据
 VK_F4, 34015, CONTROL, VIRTKEY 关闭当前标签页
 VK_W, 34015, CONTROL, VIRTKEY 关闭当前标签页
 VK_W, 34012, CONTROL, SHIFT, VIRTKEY 关闭全部标签页
 VK_F, 37000, CONTROL, VIRTKEY 打开"在网页上查找"框
 VK_G, 37001, CONTROL, VIRTKEY 查找与您在"在网页上查找"框中输入的内容相匹配的下一个匹配项
 VK_F3, 37001, VIRTKEY 查找与您在"在网页上查找"框中输入的内容相匹配的下一个匹配项
 VK_G, 37002, CONTROL, SHIFT, VIRTKEY 查找与您在"在网页上查找"框中输入的内容相匹配的上一个匹配项
 VK_F3, 37002, SHIFT, VIRTKEY 查找与您在"在网页上查找"框中输入的内容相匹配的上一个匹配项
 VK_D, 39001, ALT, VIRTKEY 突出显示网址
 VK_L, 39001, CONTROL, VIRTKEY 突出显示网址
 VK_F10, 39003, VIRTKEY 不明
 VK_MENU, 39003, VIRTKEY 打开选项?
 VK_F6, 39004, VIRTKEY 突出显示网址
 VK_F6, 39005, SHIFT, VIRTKEY 突出显示网址
 VK_K, 39002, CONTROL, VIRTKEY 地址栏搜索
 VK_E, 39002, CONTROL, VIRTKEY 地址栏搜索
 VK_T, 39000, ALT, SHIFT, VIRTKEY 不明
 VK_B, 39006, ALT, SHIFT, VIRTKEY 不明
 VK_RIGHT, 33001, ALT, VIRTKEY 前进
 VK_BACK, 33001, SHIFT, VIRTKEY 不明
 VK_F11, 34030, VIRTKEY 全屏
 VK_F1, 40019, VIRTKEY 帮助
 VK_I, 40003, CONTROL, SHIFT, VIRTKEY 审查元素
 VK_J, 40004, CONTROL, SHIFT, VIRTKEY 审查元素
 VK_C, 40022, CONTROL, SHIFT, VIRTKEY 审查元素
 VK_F12, 40003, VIRTKEY 审查元素
 VK_N, 34001, CONTROL, SHIFT, VIRTKEY 隐身模式
 VK_T, 34014, CONTROL, VIRTKEY 新建标签页
 VK_N, 34000, CONTROL, VIRTKEY 打开一个新的游览器并新建标签页
 VK_O, 40000, CONTROL, VIRTKEY 打开...
 VK_P, 35003, CONTROL, VIRTKEY  打印
 VK_R, 33002, CONTROL, VIRTKEY 刷新
 VK_R, 33007, CONTROL, SHIFT, VIRTKEY 刷新
 VK_F5, 33002, VIRTKEY 刷新
 VK_F5, 33007, CONTROL, VIRTKEY 刷新
 VK_F5, 33007, SHIFT, VIRTKEY 刷新
 VK_HOME, 33003, ALT, VIRTKEY 回到主页
 VK_T, 34028, CONTROL, SHIFT, VIRTKEY 新建标签页
 VK_S, 35004, CONTROL, VIRTKEY 另存为
 VK_9, 34026, CONTROL, VIRTKEY 转到第九个标签
 VK_NUMPAD9, 34026, CONTROL, VIRTKEY 转到最后一个标签
 VK_TAB, 34016, CONTROL, VIRTKEY 下一个标签
 VK_NEXT, 34016, CONTROL, VIRTKEY 下一个标签
 VK_TAB, 34017, CONTROL, SHIFT, VIRTKEY 上一个标签
 VK_PRIOR, 34017, CONTROL, VIRTKEY 切换到第一个标签?
 VK_1, 34018, CONTROL, VIRTKEY 切换到第一个标签
 VK_NUMPAD1, 34018, CONTROL, VIRTKEY 切换到第一个标签
 VK_2, 34019, CONTROL, VIRTKEY 切换到第二个标签
 VK_NUMPAD2, 34019, CONTROL, VIRTKEY 切换到第二个标签
 VK_3, 34020, CONTROL, VIRTKEY 切换到第三个标签
 VK_NUMPAD3, 34020, CONTROL, VIRTKEY 切换到第三个标签
 VK_4, 34021, CONTROL, VIRTKEY 切换到第四个标签
 VK_NUMPAD4, 34021, CONTROL, VIRTKEY 切换到第四个标签
 VK_5, 34022, CONTROL, VIRTKEY 切换到第五个标签
 VK_NUMPAD5, 34022, CONTROL, VIRTKEY 切换到第五个标签
 VK_6, 34023, CONTROL, VIRTKEY 切换到第六个标签
 VK_NUMPAD6, 34023, CONTROL, VIRTKEY 切换到第六个标签
 VK_7, 34024, CONTROL, VIRTKEY 切换到第七个标签
 VK_NUMPAD7, 34024, CONTROL, VIRTKEY 切换到第七个标签
 VK_8, 34025, CONTROL, VIRTKEY 切换到第八个标签
 VK_NUMPAD8, 34025, CONTROL, VIRTKEY 切换到第八个标签
 VK_B, 40009, CONTROL, SHIFT, VIRTKEY 显示收藏夹
 VK_O, 40011, CONTROL, SHIFT, VIRTKEY 打开收藏夹
 VK_J, 40012, CONTROL, VIRTKEY 打开收藏夹
 VK_H, 40010, CONTROL, VIRTKEY 历史记录
 VK_F, 40020, ALT, VIRTKEY 打开小扳手
 VK_E, 40020, ALT, VIRTKEY 打开小扳手
 VK_M, 40034, CONTROL, SHIFT, VIRTKEY 不明
 VK_ESCAPE, 33006, VIRTKEY ESC
 VK_ESCAPE, 40005, SHIFT, VIRTKEY 打开任务管理器
 190, 42500, CONTROL, SHIFT, VIRTKEY 不明
 VK_U, 35002, CONTROL, VIRTKEY 查看网页源代码
 189, 38003, CONTROL, VIRTKEY 不明
 189, 38003, CONTROL, SHIFT, VIRTKEY 不明
 VK_SUBTRACT, 38003, CONTROL, VIRTKEY 缩小网页
 VK_0, 38002, CONTROL, VIRTKEY 不明
 VK_NUMPAD0, 38002, CONTROL, VIRTKEY 不明
 187, 38001, CONTROL, VIRTKEY 不明
 187, 38001, CONTROL, SHIFT, VIRTKEY 不明
 VK_ADD, 38001, CONTROL, VIRTKEY 放大网页
 192, 34018, ALT, VIRTKEY 波浪键,第一个标签
 VK_1, 34016, ALT, VIRTKEY 下一标签
 VK_2, 34017, ALT, VIRTKEY 上一标签
 VK_3, 34026, ALT, VIRTKEY 最后一个标签
}

今天发现Chrome的菜单栏变成这般糟糕模样,很是不爽,于是重新安装,发现只要安装后启动一次并保持几秒,

重启后就会菜单栏间距就会变大,好吧,通过修改时间定位文件,最后锁定在了Local State文件上。废话到此,下面说方法:

1.将你的Chrome各项设置都设置好,并关闭Chrome,这一步很重要,因为之后要锁定文件。

2.打开user data文件夹:

a.Win7/8 C:\Users\用户名\AppData\Local\Google\Chrome\User Data

b.WinXP C:\Documents and Settings\用户名\Local Settings\Application Data\Google\Chrome\User Data

3.用记事本打开里面的Local State文件,Ctrl+F查找”variations_seed”,可以看到它下面一行引号内有一长串加密的字符串,如下图

5.保存文件,并设置属性为只读(也可以设置NTFS权限,非必要)

至此,大功告成,目前正常用中,尚未出现问题。可预测的问题是如果某些设置会改写该文件,会写入失败,但不至于崩溃,

这时只需要取消只读(或恢复权限),设置保存后再重复上述操作即可。