Hot For Coding
JavaScript复制对象误区

如果不了解JavaScript数据类型,那么也许你会以为对象的复制是相互独立的,其实它们都是一个指针,而这个指针指向存储在堆中的一个对象。复制结束后,两个变量实际上将引用同一个对象。因此改变其中一个变量会影响另外一个变量。

普通变量复制,相互独立

也就是变量只是引用,并不是真正的地址

// 声明一个变量str1
var str1 = 'Nicholas Lee';
 
// 将变量str1赋值给str2
var str2 = str1;
 
// 再改变str1的值
str1 = 'www.qttc.net'
 
// 打印str1与str2的结果
console.log('str1:' + str1 + ', str2:' + str2); // Output: str1: www.qttc.net, str2: Nicholas Lee

...

READ ALL

VPS的操作系统选择

在买VPS时,除了价格,机房,性能,带宽以外就是操作系统的选择了,如何选择适合的操作系统呢?这是许多购买VPS的站长面临的一个重要问题,以下我们就谈谈如何选择合适的操作系统。

虽然操作系统多种多样,但归根结底还是以Win平台与Linux平台为两大类别。

Win平台

full

Win平台在国内的VPS提供商里,几乎是每一家都提供的操作系统。由于微软操作系统的普及,使得许多站长在操作Win服务器操作系统的时候也容易上手,配置也快。在Win平台里最有优势的就是使用IIS+asp或者asp.net加SQLServer,全一套都是微软开发的,也只能在Win平台上运行。但这个平台的费用不低,特别是数据库价格更是让许多个人站长望而止步。但目前使用asp.net搭建Web平台的并不多了,除了某些公司的系统以外,特别是个人想使用asp.net的博客系统几乎找不到。

...

READ ALL

JavaScript函数arguments数组获得实际传参数个数

JavaScript与PHP在函数传参方面有点不同,PHP形参与实参个数要匹配,而JavaScript就灵活多了,可以随意传参,实参比形参少或多都不会报错。

实参比形参多不会报错

function say (a) {
  console.log(a); 
}
 
say('琼台博客', 'WEB技术博客'); // Output: 琼台博客

我们再来看看形参比实参多的结果

function say (a, b) {
  console.log('a 的值是 '+a+', b 的值是 '+b); 
}
 
say('琼台博客'); // Output: a 的值是 琼台博客, b 的值是 undefined

...

READ ALL

晒晒我曾经用过的杀毒软件

几乎所有玩电脑的都要接触杀毒软件,在以前的网络环境中杀毒软件是必装的软件之一。U盘autorun.exe文件,熊猫烧香,IE主页被锁广告页等等更是历历在目。每次重装系统后第一件事就是把杀毒软件给装上,感觉给电脑装了杀毒软件就像是加了一层盔甲入侵无门。后来才感觉那时太天真了,病毒从来就不走正门的。

诺顿杀毒

full

诺顿(Norton)是Symantec(赛门铁克)公司出品,国外杀毒软件。当时是我买了联想电脑后自带的,诺顿在业内口碑不错。当时好像是免费试用三个月,三个月后需要再续费才能使用,我那时比较穷所以三个月后就给卸了。现在诺顿貌似一直做的不错,还推出了网络安全特警。

...

READ ALL

Linux系统邮件查看及清空

在操作Linux命令时,时常出现以下这样一句话

You have mail in /var/spool/mail/root

这个是提示有最新的邮件,你可以使用mail命令阅读

-bash-4.1# mail 
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 383 messages 381 unread
    1 user@localhost.local  Tue Apr 10 20:09 183/7743  "[abrt] full crash report"
    2 user@localhost.local  Tue Apr 10 20:15 183/7730  "[abrt] full crash report"
    3 user@localhost.local  Tue Apr 10 20:20 183/7730  "[abrt] full crash report"
    4 user@localhost.local  Tue Apr 10 20:22 183/7730  "[abrt] full crash report"

...

READ ALL

JavaScript里弹出</script>标记出错解决方法

在JavaScript里弹出</script>会让JavaScript误以为这是一个结束标签,而出现异常。

如以下代码

<script>
alert('</script>');
</script>

我们在<script>块内使用alert弹出</script>字符串,结果被误以为是结束标签,vim还变了颜色。运行结果

full

由于把字符串里的当成了结束标签,所以就出现异常,显然这不是我们想要的结果。我们只需要把代码稍加处理一下即可实现。

<script>
alert('</scr' + 'ipt>');
</script>

...

READ ALL

设置Linux计划任务crontab容易出错的地方

Linux的计划任务可以说是最常用也实用的系统程序了,Linux的计划任务设置也很简单,但稍有不注意就会出错。

如:使用ntpdate命令每天凌晨自动对时,可能会这么写

00 00 * * * ntpdate asia.pool.ntp.org;

但这么写是出错的,你可能百思不得其解,在命令状态下执行看下结果

-bash-4.1# ntpdate asia.pool.ntp.org
25 Jul 14:00:21 ntpdate[5815]: step time server 212.26.18.43 offset 19.175301 sec

...

READ ALL

PHP判断字符串是纯英文、纯汉字或汉英混合

PHP没有直接函数来判断一个字符串是否是纯英文或纯汉字以及汉英混合,只能自己写函数。要想实现此功能就必需对字符集汉字编码占位进行了解,就目前国内比较常用的字符集当属UTF8与GBK了。

  • UTF8每个汉字等于3个长度;
  • GBK每个汉字等于2个长度;

利用以上汉字与英文的差异,我们就可以利用mb_strlen()函数与strlen()函数分别计算出两组长度数字,然后根据规律进行运算即可判断出字符串的类型了。

UTF8实例

<?php
/**
 * PHP判断字符串纯汉字 or 纯英文 or 汉英混合
 * Nicholas Lee www.qttc.net
 */
function utf8_str($str){
  $mb = mb_strlen($str,'utf-8');
  $st = strlen($str);
  if($st==$mb)
    return '纯英文';
  if($st%$mb==0 && $st%3==0)
    return '纯汉字';
  return '汉英混合';
}
 
$str = '琼台博客';
echo utf8_str($str); // Output: 纯汉字

$str = '琼台博客 www.qttc.net'
echo utf8_str($str); // Output: 汉英混合

...

READ ALL

关于博客生成HTML静态化的一些看法

这两周,忙着给自己的站点动手术,而且是大手术。五月份,我的小站写好了以后经过线上运行修修补补也已稳定,这个月我给小站生成HTML静态页一是缓解鸭梨,二是试试看。以下就总结这几天生成HTML的一些问题与分享。

采用内容生成静态方式

本来想着生成全页HTML,但由于页面上有动态信息,如随机博文与相关博文、评论以及浏览次数等,于是放弃全页HTML方式,采用部分内容生成静态方式。

当然,也许会有些人会说全页生成HTML方式比较好。如果是全页生成HTML的方式那么就需要在动态内容的地方放入<script>标签指向一个PHP页面,然后由PHP来生成JavaScript写出动态内容,但这样种方式不利于SEO。

...

READ ALL

推荐一款带左右按钮无缝图片滑动JavaScript插件

由于手上正好有一个需求,点击左右箭头可以滑动图片并且要求无缝效果,本来想自己写的但越写越发现貌似力不从心,于是从网上搜搜,结果找到了这一款插件。插件的作者以及相关信息我没有去关注,但下载过来用了一下,发现效果很不错,还支持自动滑动,非常完美的一款插件。

插件的下载地址:ScrollPic.js

使用方法

// 先加载ScrollPic.js插件后再执行以下语句
window.onload = function(){
  scrollPic_01 = new ScrollPic();
  scrollPic_01.scrollContId   = "pic"; //图片容器ID
  scrollPic_01.arrLeftId      = "left"; //左按钮ID
  scrollPic_01.arrRightId     = "right"; //右按钮ID
  scrollPic_01.frameWidth     = 840; //图片容器宽度
  scrollPic_01.pageWidth      = 210; //每张图片宽度
  scrollPic_01.speed          = 10; //移动速度(单位毫秒,越小越快)
  scrollPic_01.space          = 10; //每次移动像素(单位px,越大越快)
  scrollPic_01.autoPlay       = false; //自动播放
  scrollPic_01.autoPlayTime   = 3; //自动播放间隔时间(秒)
  scrollPic_01.initialize();  //初始化
}

...

READ ALL