Hot For Coding

HTML5新增的几个Input类型

HTML5新增了几个input类型,都是比较实用的。

email类型

<input type="email" />

顾名思义,即自动验证输入的值是否是email

URL类型

<input type="url" />

同样自动验证输入的值是否是正确的URL

number类型

<input type="number" min="1" max="10" />

只接受数字类型

  • min 参数为最小值
  • max 参数为最大值

range类型

<input type="range" min="1" max="10" />

...

READ ALL

Go里JSON的解析与转换

Go里对JSON的操作提供了encoding/json这个包两个方法

  • json.Marshal()
  • json.Unmarshal()

对象转JSON,使用json.Marshal()方法

// Nicholas Lee www.qttc.net

package main

import (
  "encoding/json"
  "fmt"
)

type People struct {
  Age  int    `json:"age"`
  Name string `json:"name"`
}

func main() {
  p := People{18, "Nicholas"}

  s, err := json.Marshal(p)

  if err != nil {
    panic(err)
  } else {
    fmt.Println(string(s)) // Output: {"age":18,"name":"Nicholas"}
  }
}

...

READ ALL

JavaScript截取字符串

首先我们来看一下substring()函数使用介绍

substring

语法

string.substring(start, end)

substring()需要至少需要一个参数

  • 第一个参数为起始位置
  • 第二个参数可选,为结束位置

Example

// Nicholas Lee www.qttc.net

// 一个参数
var str = '欢迎各位童鞋到琼台博客做客';
var sub = str.substring(3);
console.log(sub); // Output: 位童鞋到琼台博客做客

// 两个参数
var str = '欢迎各位童鞋到琼台博客做客';
var sub = str.substring(3,11);
console.log(sub); // Output: 位童鞋到琼台博客

...

READ ALL

MySQL与SQLServer分页区别

之前一直用MySQL,虽然比起SQLServer这个庞大的数据库系统MySQL很轻量,但它并不逊色。以下说说这两个在数据库各自的分页区别

取出前十条

MySQL

SELECT * FROM table LIMIT 10;

SQLServer

SELECT TOP 10 * FROM table

每页十条,取出第三页

MySQL

SELECT * FROM table LIMIT 20,10

SQLServer

SELECT TOP 10 * FROM table WHERE id NOT IN(
  SELECT TOP 20 id FROM table ORDER BY id DESC
) ORDER BY id DESC;

...

READ ALL

SyntaxHighlighter语法高亮插件在Chrome下出现右侧滚动条解决方法

SyntaxHighlighter已经成为高亮插件主流,最近使用发现默认下载安装不做修改的话在Chrome下会出现右侧滚动条,特别丑

解决这个问题只需要一行代码搞定

找到shCore.css这个文件,找到下面代码

.syntaxhighlighter table {
  width: 100% !important;
}

改成以下代码

.syntaxhighlighter table {
  width: 100% !important;
  margin: 1px 0 !important;
}

搞定!即给.syntaxhighlighter类下的table加一个1px像素的外边距。

...

READ ALL

Nginx缓存静态文件

网站一经上线后,有些文件几乎都不常去更新了,比如css、js和图片等。减少HTTP请求是优化网站的最佳方案之一,我们可以利用Nginx缓存静态文件。

在Nginx中可以使用proxy_cache将用户的请求缓存到本地一个目录,当下一个请求时可以直接调取缓存文件,就不用去请求服务器了。

具体操作如下

打开nginx.conf配置文件,在http层级加入以下代码

proxy_connect_timeout 10;
proxy_read_timeout 180;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_temp_path /tmp/temp_dir;
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;

...

READ ALL

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