Hot For Coding
Linux下编译升级PHP版本

近来,PHP布新版本比较频繁,在我写这篇博文时,PHP5.3.x系列最新版本已到5.3.135.4.x系列的已经到5.4.3。在升级PHP版本前小站使用的程序是5.3.6,已经算是老版本了。之前还听说现在还有用5.2.x版本的,无语了!最新版本做了一些重要的补丁以及安全方面的更新,所以值得升级,下面介绍如何升级PHP版本。

下载最新版本

可以到php.net这里下载最新发布的PHP版本包,目前使用VPS居多吧,常规做法是先下载PHP包到本地上,然后在传到VPS上,如果是使用VPS那么可以直接从VPS上下载即可,这样省事,而且也方便。下载时,选择适合VPS的相应节点,如你的VPS在美国就选择美国节点,这样下载速度会比其它节点要快。

...

READ ALL

NodeJS读写文件

NodeJS中读写文件基本都是用fs模块,应该是file system的缩写

读文件

读文件有两个API,差别就是一个是同步另一个异步

  • fs.readFile
  • fs.readFileSync
// Nicholas Lee www.qttc.net

// fs.readFile
var fs = require('fs'),
  path = require('path'),    
  filePath = path.join(__dirname, 'index.md');

fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
  if (!err) {
    console.log('received data: ' + data);
  } else {
    console.log(err);
  }
});

// fs.readFileSync
var data = fs.readFileSync(filePath, {encoding: 'utf-8'});
console.log('received data: ' + data);

...

READ ALL

JavaScript常用遍历循环方法

for

使用for循环是最常见的一种方式

// Nicholas Lee www.qttc.net

for (let i=0; i<1000; i++) {
  console.log(i)
}

while

while循环,比较简单

// Nicholas Lee www.qttc.net

let i = 0
while (i<1000) {
  console.log(i)
  i++
}

do while

跟while循环一样,只不过先执行一次

// Nicholas Lee www.qttc.net

let i = 0
do {
  console.log(i)
  i++
} while (i < 1000)

...

READ ALL

Linux计划任务crontab

在Linux中,也有类似Windows一样的计划任务,并且更直观,更方便

在命令状态下敲入

crontab -e

回车即可进入计划任务编辑状态。

一共分为六列值,如

*/2 * * * * echo 'Hello world!'

表示每两分钟执行一次echo命令

由此看出前五列表示时间,最后一列表示命令

第一列 分 0-59
第二列 时 0-23
第三列 日 1-31
第四列 月 1-12 (或者用jan/feb等名字)
第五列 星期 0-7 (0或7是周日,也可以用mon,tue等表示)
第六列 命令/脚本

编辑好了以后直接保存退出即可!

如每天凌晨两点执行某任务

...

READ ALL

MySQL中replace into的用法

在向表中插入数据的时候,经常遇到这样的情况:

  • 首先判断数据是否存在
  • 如果不存在,则插入
  • 如果存在,则更新

在SQLServer中可以这样写:

if not exists (select 1 from table where id = 1) insert into table(id, update_time) values(1, getdate()) else update table set update_time = getdate() where id = 1

在MySQL 中也可以先select,判断是否存在,存在则update否则insert

...

READ ALL

在PHP中用sleep导致诡异事件

近日,由于项目需求

需要用到sleep()函数定时从数据库取一堆数据出来去执行某些操作。

sleep()等待的时间至少有一个小时以上

此前做过测试

sleep()函数去完成数小时后执行的操作是可行的

可邪门的问题出来了

程序用sleep()后发现不能从数据库取到相应的信息

sleep()去掉

结果正常

郁闷中。。。

难道sleep()影响读库操作!!!

于是为了方便测试

直接来个sleep(10)十秒后执行

结果能从数据库读取信息

可为什么sleep()一个小时后不能读取信息呢?

为了测试方便我直接在sleep()语句前读库一次,sleep()后再读一次库

...

READ ALL

谈谈HTML5中的服务器发送事件Server-Sent Events

HTML5加了许多新功能,其中服务器发送事件Server-Sent Events是一个亮点,以下直接贴上代码示例

index.html

<!DOCTYPE html> 
<html> 
  <head>
    <meta charset="utf-8" />
    <title>服务器推送SSE</title>
    <script type="text/javascript"> 
      $(document).ready(function(){ 
        //检查浏览器支持情况
        if(typeof(EventSource)!=="undefined") { 
          //定义个对象,用于初始化事件源,这里用c.php这个页面实现 
          var eSource = new EventSource("c.php"); 
          //detect message receipt 
          eSource.onmessage = function(event) { 
            //将收到的数据展示到页面的ID=content元素中 
            document.getElementById("content").innerHTML += event.data+'<br />'; 
          }; 
        }else { 
          document.getElementById("content").innerHTML="没有收到服务端Server-Sent数据."; 
        }
      });
    </script>
  </head>
  <body> 
    <div id="content"></div>
  </body> 
</html>

...

READ ALL

JavaScript清除Cookie

使用JavaScript能写Cookie当然也就能清除Cookie

代码

// Nicholas Lee www.qttc.net

function deleteAllCookies() {
  var cookies = document.cookie.split(";");

  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i];
    var eqPos = cookie.indexOf("=");
    var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
    document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
  }
}

...

READ ALL

CSS3实现阴影效果原来那么简单

在CSS2中,要弄阴影效果几乎要靠图片完成

在CSS3中,阴影只需要一句话,并且文字也可以加上阴影

box-shadow

语法

box-shadow: none|h-offset v-offset blur spread color |inset|initial|inherit;

Code

div {
  box-shadow:5px 6px 3px #999;
}

以上代码即可给页面所有div加上阴影效果。现在来解析下各个参数的使用

  • 第一个参数5px,代表上下偏移,正数往下,负数往上,值越大偏移距离越大
  • 第二个参数6px,代表左右偏移,正数往右,负数往左,值越大偏移距离越大
  • 第三个参数3px,代表模糊程度,值越大,越模糊
  • 第四个参数#999,代表阴影颜色

...

READ ALL

HTML5给搜索框中加一个放大镜

小站刚加上搜索功能,由于懒惰就没有给搜索框加上样式,直接input标签了事。

昨天看HTML5相关介绍的时候发现在HTML5中的input标签有search类型,于是赶紧试用了一下

<input type="search"  />

type中的text类型改成search值后,其实也没有多大改变,只不过在搜索框右侧多了一个删除按钮,点击删除可以清楚搜索框里的内容

于是又是根据资料加了一个results属性

<input results="s" type="search" />

...

READ ALL