• 谈谈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对象操作例子
     * 琼台博客 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 = ['琼台博客', 'www.qttc.net', 'Web技术'];
    console.log(arr.length); // Output: 3
    

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

    arr[0] = 琼台博客
    arr[1] = www.qttc.net
    arr[2] = WEB技术

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

    ...

    READ ALL

  • JavaScript复制对象误区

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

    普通变量复制,相互独立

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

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

    ...

    READ ALL