版本号的小陷阱

ps.本文所有红色的文字均为错误观点。

首先提出一个问题,php5.3.3和php5.3.21哪个版本高?perl5.1和perl5.01的版本哪个高?

perl中有时候可以看到这么一段代码:

use 5.010

这其中5.010就是perl的版本号。如果写成这个样子呢?

use 5.1

那么这回就不好玩了,perl会认为你要的是5.100,因为perl的版本号是3位小数的。

最近在搭lnmp环境,看到有的文章说PHP5.3.3以上的版本可以支持[HOST=xxx]这样的php.ini写法(via LNMP下防跨站、跨目录安全设置,仅支持PHP 5.3.3以上版本)。于是跑去php官网看,发现最新的php版本才5.3.21。我下意识的觉得,5.3.21要比5.3.3低(php5.3.30>php5.2.21)。于是直接升级到了php5.4.11。可是升级之后,GBK编码的DiscuzX的短消息全部成了空白。于是一脸悲剧的重装php到5.3.21,以为那个防跨站方法无缘了。但是实际测试发现,php5.3.21也能支持那样的写法。

于是这是怎么回事呢?PHP的版本号命名,其实是由3段数字组成的:主版本号、次版本号、发行次数。

因此,php5.3.21的意义是“5.3版本第21个发行版本”,而php5.3.3呢,则是“5.3版本的第3个发行版本”。显而易见的,21>3,所以php5.3.21比php5.3.3新也是理所当然的了,而不能错误的认为,php5.3.3比php5.3.21高

哦,对了,文章前面问题的答案呢?自然是perl 5.1和php5.3.21的版本要高了。

百度开发者中心BAE服务收费通知——又一个免费服务的终结

都打算睡觉了,邮箱收到噩耗:

尊敬的开发者,您好, 为了给您提供更加简单可依赖的应用托管服务,防止资源的恶意滥用,百度开发者中心计划于2012年12月25日起,对BAE(百度应用引擎)进行收费。

不过,BAE这次收费不是完全开始收费,还是有一些免费额度的。

具体邮件如下:

Google Apps 客户通知——只有免费,没有永久免费

从今天起,我们不再接受 Google Apps 免费版本(即您当前正在使用的版本)的新帐户注册申请。由于您已经是我们的客户,因此这一更改不会对您的服务产生影响,您可以继续免费使用 Google Apps。

 

Google Apps曾是最受欢迎的免费企业邮箱之一。从一开始的自由服务,提供登录页面和最大用户数目为2000的企业邮箱,到后来取消了登录页面,但是保留了2000用户,然后在09年的时候取消了初始页,也没有了2000用户,变50了。

当年的截图:(2000个用户的样子)

当年的域名1314.fr.cr和2323043.cn呢……有点怀念的感觉。

是2000个用户,很不错的样子,有初始页,各种功能很开放……然后……到了09年的时候,我再申请,已经没有办法申请到2000个用户了。

免费的服务质量终究要降低吧……Google毕竟是商业机构,不是慈善机构嘛……50个用户其实也很够的样子。然而今天……

好吧,好在之前申请的还能用……

百度应用引擎(BAE)短信服务暂时关闭的通知

亲爱的开发者您好,
       
      为了配合国家相关政策,我们将暂时关闭百度应用引擎(BAE)的短信服务,并进行系统升级。

      非常感谢您一直以来对BAE的支持,我们会尽快完成升级,并为您提供更加优质的服务。给您带来的不便,敬请谅解。
 
 
                                                                                             百度开发者中心

                                                                                             2012年10月25日
 

喜迎**大。

疑难杂症+乱七八糟的论坛手札

这几天一直在忙这个该死的DiscuzX搭建的卡院论坛,乱七八糟的事情好多好多……所以都没能更新博客个说。

于是今天有空上来写写遇到的一些琐碎的事情。

首先是免费CDN。本来我用的是Incapsula的CDN系统,只需要更新cname的那个。后来ivmm说Cloudflare更好,于是我就去换了CloudFlare。结果呢?……我自己测试结果,感觉速度一般般,和Incapsula差不多,会员们不乐意了,在群里翻腾说连不上。找了一两个典型用户让他们协助测试,结果CloudFlare很多地方没法访问到ns。虽然可以替换NS,但是懒得折腾了。

然后就是“个性签名”不显示的问题。这个大部分DZX用户可能没有碰到过,但是我确实碰到这种诡异的问题,用户中心无法修改个性签名。百度了很多,就是没有解决办法。偶然翻到“用户栏目”这个管理项目才发现不知道什么时候用户栏目中的“个性签名”被我取消掉了。于是勾上,修复完毕。

最后……我在写论坛管理方案,于是又是很久不能更新博客个说……

innerTEXT,outerHTML,outerTEXT和firefox

Firefox 不支持 DOM 对象的 outerHTML innerText outerText 属性……这是个一直困扰大家(包括我)很久的问题,网上也有不少的解决方法,这里摘录如下,收藏备用。(源链接:http://www.w3help.org/zh-cn/causes/SD9017)

解决方案

在 Firefox 中,可通过扩展 HTMLElement 的原型 (prototype) 来实现相关属性。

  1. 扩展 Firefox 中 DOM 元素的 outerHTML 属性:

    if (typeof(HTMLElement) != "undefined") {
       HTMLElement.prototype.__defineSetter__("outerHTML", function(s) {
            var r = this.ownerDocument.createRange();
            r.setStartBefore(this);
            var df = r.createContextualFragment(s);
            this.parentNode.replaceChild(df, this);
            return s;
        });
       HTMLElement.prototype.__defineGetter__("outerHTML", function(){
            var a = this.attributes, str = "<" + this.tagName, i = 0;
            for (; i < a.length; i++)
                if (a[i].specified)
                    str += " " + a[i].name + '="' + a[i].value + '"';
            if (!this.canHaveChildren)
                return str + " />";
            return str + ">" + this.innerHTML + "</" + this.tagName + ">";
        });
    
        HTMLElement.prototype.__defineGetter__("canHaveChildren", function(){
            return !/^(area|base|basefont|col|frame|hr|img|br|input|isindex|link|meta|param)$/.test(this.tagName.toLowerCase());
        });
    }
  2. 扩展 Firefox 中 DOM 元素的 innerText 属性:

    if (!!document.getBoxObjectFor || window.mozInnerScreenX != null) {
        HTMLElement.prototype.__defineSetter__("innerText", function(sText) {
            var parsedText = document.createTextNode(sText);
            this.innerHTML = "";
            this.appendChild(parsedText);
            return parsedText;
        });
        HTMLElement.prototype.__defineGetter__("innerText", function() {
            var r = this.ownerDocument.createRange();
            r.selectNodeContents(this);
            return r.toString();
        });
    }
  3. 扩展 Firefox 中 DOM 元素的 outerText 属性:

    if (!!document.getBoxObjectFor || window.mozInnerScreenX != null) {
        HTMLElement.prototype.__defineSetter__("outerText", function(sText) {
            var parsedText = document.createTextNode(sText);
            this.parentNode.replaceChild(parsedText, this);
            return parsedText;
        });
        HTMLElement.prototype.__defineGetter__("outerText", function() {
            var r = this.ownerDocument.createRange();
            r.selectNodeContents(this);
            return r.toString();
        });
    }

kilu.de部分服务器被wall

啥?你说我怎么发现的?

因为我发现这两天best33.com打不开了,我的best33.com是挂在kilu.de上做了个301到这里的。

但是前两天best33.com打不开,我ping了下看到通畅,于是继续放心使用。

今天我挂dl发现best33.com能打开 撤掉以后打不开了,于是……我什么都明白了。

换了xxxxxhost的空间做301。这个空间以前被wall过很多次……希望不要再wall了。(逼我换000还是youh是吧?)

蜘蛛我求您了别来爬了……

昨天卡院的Incapsula的周报来了,一看流量我吓了一跳:2.1G!作为一个小型论坛,这个数字是很不正常的。于是登录Incapsula来到控制面板,发现80%的流量都是搜索引擎蜘蛛产生的!

这个论坛是《龙族》主题论坛,因为书里面提到过,所以基本没有搜索引擎流量,而是手动输入/书签为多。所以我来到了Incapsula的控制面板,屏蔽了大部分蜘蛛:

屏蔽没用的蜘蛛流量

目前的卡院服务器只有10G的流量,Incapsula也只有寥寥50个G而已,所以……蜘蛛啊,您就别爬了,行不?