Hot For Coding
PHP警告date() It is not safe to rely on the system

近来总是有系统邮件提示,开始没在意,后来不断提示就看了一下。提示以下信息

PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in /data0/htdocs/www.qttc.net/function/function.php on line 542

...

READ ALL

谈谈Web目录部署的一些观点

本文所针对的对象是那些热爱WEB技术,喜欢动手建站的朋友们。使用PHP框架,开源程序的不推荐,当然Smarty模板的可以留下看看。

为什么

也许,这个问题都是很多刚学习的程序员喜欢问的一个问题。如果你没有独立建过一个完整的网站,或者没有应对上千万PV压力的站点经营管理过那么你就不会感觉到目录部署的至关重要。可能很多童鞋认为只要程序写的好,目录都不是问题,程序才是核心。

其实Web项目目录部署也算是程序设计的一个重要部分,一个好Web目录部署不仅在维护、管理、拓展方便都灵活,对于数据量多的站点更是一种程序设计思想。因此在开始一个Web项目之前,目录的部署应该是首要考虑的。

...

READ ALL

JavaScript位置location对象操作例子

在JavaScript中,使用location对象可以通过很多方式来改变浏览器的位置。看看W3C上的描述location的一句话

Note: There is no public standard that applies to the location object, but all major browsers support it.

大意是location对象没有标准定义,但主流浏览器都支持

看看以下例子看你掌握了几种

/**
 * JavaScript位置location对象操作例子
 * Nicholas Lee www.qttc.net
 */
 
// 假设初始URL为 https://www.qttc.net/lee/
 
// 将URL修改为 https://www.qttc.net/lee/#top
location.hash = '#top';
 
// 将URL修改为 https://www.qttc.net/lee/?q=php
location.search = '?q=php';
 
// 将URL修改为 https://www.lizhong.me/lee/
location.hostname = 'www.lizhong.me';
 
// 将URL修改为 https://www.qttc.net/dir/
location.pathname = 'dir';
 
// 将URL修改为 https://www.qttc.net:8888/lee/
location.port = 8888;

...

READ ALL

MySQL替换函数replace

一般对于博客程序来说,使用替换语句也许是最有用的一种维护方式了,特别是对于所有博文内容里有统一修改的地方。由于我的博客站点在upload图片上传目录下需要按年建目录,这倒不是什么难点,可是之前上传的图片都要移动到相应的目录里,这样的话博文里所有的图片URL都要改变。

比如图片a.jpg原来在upload路径下,博文里的地址是

https://www.qttc.net/static/upload/a.jpg

现在要把a.jpg移动到upload下的2012文件夹里,那么博文里的地址就需要改变成

https://www.qttc.net/static/upload/2012/a.jpg

...

READ ALL

JavaScript私有变量

JavaScript没有私有变量这一说,所以实际在开发过程可能很容易就出现变量被破坏是常有的事

但我们可以通过闭包的方式来解决这个问题,如以下例子

var instance = (function(){
  var private = {}

  return {
    setValue: function(key, val){
      private[key] = val
    },

    getValue: function(key) {
      return private[key]
    }
  }
})()

// Usage
instance.setValue('name', 'qttc')

var name = instance.getValue('name')

console.log(name) // Output: qttc

...

READ ALL

JavaScript闭包

JavaScript最有意思的就是闭包,很简单,闭包的出现就是解决变量作用域的问题

看看这个例子

for (var i = 0; i < 2; i++) {
  (function(n){
    console.log(n);
  })(i)
}

// Output:
//  0
//  1

以上例子就是需要在for循环中能够接收到每一个变量,于是有些朋友就说了,直接console.log不就好了吗?

for (var i = 0; i < 2; i++) {
  console.log(i);
}

// Output:
//  0
//  1

...

READ ALL

七月流量1.4G!

记得六月的时候我的流量不到1G,当时觉得实现一个月1G流量算是最大的心理安慰了,今天统计了一下7月流量,结果使用了1.42G。

虽然也有一些图,但都是压缩过的,流量占比应该不大,所以流量应该算是有点增加了!

上图 (七月的)

full

六月的

full

虽说相对于200GB的月额定流量来说,还不到一个百分点,但相对于六月来说,实现了翻倍,不过也有可能是7月发布的博文带图的略多一些。看来那些大神说一天用30G,估计都是高清壁纸之类或者电影下载站了。否则博客站点以文字为主要内容的页面要达到30G一天,先不说PV有多少,就是光复制粘贴文字得有多大量的文字才能实现这个目标啊?那一定世界排名第一了。

...

READ ALL

zsh command not found rvm-prompt

zsh确实是一个非常好用的命令终端,特别是提供的多皮肤样式更容易装逼

但最近zsh老是提示

zsh: command not found: rvm-prompt

这个错误大意是说找不到rvm-prompt,解决这个问题也非常简单,安装rvm-prompt让它找到不就好吗?

curl -sSL https://get.rvm.io | bash

如果你是Mac操作系统的话,记得加sudo

sudo curl -sSL https://get.rvm.io | bash

如果成功安装,那么再此打开命令终端,应该不会再提示zsh: command not found: rvm-prompt之类的了

...

READ ALL

JavaScript中switch匹配容易混淆的一个细节

switch语句与if语句的关系最为密切,也是其它编程语言中普遍使用的一种流程控制语句,但switch的匹配是全等模式,如果不注意这个细节则写程序时往往会出错。

var n = '5';
switch(n){
  case 5:
    console.log('执行case分支');
    break;
  default:
    console.log('执行default分支');
}

// Output: 执行default分支

可能很多人会误以为以上程序会走case分支,结果却走了default分支。难道它们两个不相等吗?我们使用if语句看看。

...

READ ALL

JavaScript巧用length属性增删数组

在JavaScript中可以利用length计算数组元素个数,但length并不是只读的,通过改变length的值可以实现数组的增删功能。

var arr = ['Nicholas Lee', 'www.qttc.net', 'Web技术'];
console.log(arr.length); // Output: 3

声明了一个数组arr,分别给了三个元素。分别是

arr[0] = Nicholas Lee
arr[1] = www.qttc.net
arr[2] = WEB技术

数组arr的length元素值是三个,我们把length的值改成2。

...

READ ALL