Hot For Coding
JavaScript函数内声明变量几个坑

许多童鞋在写JavaScript的时候,在函数里声明变量对var关键字认识不深刻,这里就函数里声明变量的一点示例。

函数内使用var关键字声明变量

这种情况通常是声明的函数作为局部变量,即函数外不能使用

// Nicholas Lee www.qttc.net

function fun1(){
  // 声明变量,使用var关键字
  var str = 'Nicholas Lee';
  console.log(str); // Output: Nicholas Lee
}
 
fun1();
 
// 函数外使用变量
console.log(str); // Output: Uncaught ReferenceError: str is not defined

...

READ ALL

PHP给图片添加水印

有些站点也许是出于推广或者防盗的目的在上传图片时给图片加上一个Logo水印,我就见过有些站长直接用图片工具添加水印然后再上传,当然这样也能实现效果。但PHP中也可以完成给图片加水印的功能。就PHP函数功能这里就不再去浪费口舌介绍了,直接说下如何实现。大体有以下步骤

准备好水印图

这个水印图不限格式,gif或png或jpg都可以,大小调成合适的即可。透明度不需要,因为我们可以在PHP中灵活设置透明度。如果不会使用制图工具制作Logo可以去谷歌一下在线Logo制作,随便点击进入一个链接敲几个字即可生成,当然是免费的。

编写代码

这里重点给出以下函数名,也就是实现水印功能主要就是靠这些函数功能操作

...

READ ALL

JavaScript写的一个键盘控制人物走动Demo

其实这个示例用到了JavaScript的两个核心事件,键盘事件onkeydown,周期执行事件setInterval

full

实现效果

当按下键盘某个键时网页中的人物实现相应的动作,达到利用键盘控制走动效果

实现步骤

  • 预订键值作用:

w:向上 s:向下
a:向左
d:向右
空格:停止

  • 设置键值后,要能捕获按键事件以及判断用户按的是哪个键?

捕获键盘事件可以用onkeydown,获取键值码可以用event.keyCode

...

READ ALL

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