phpfreechat中一个啼笑皆非的Bug

因为觉得所有在线聊天工具要经过人家的服务器不够把握,所以在自己的服务器上架设了phpfreechat。
这款在线聊天室,有着不在服务器储存任何聊天记录的优点。

然后有一天,我试图在上面发送一个数字 0
没有任何反应。
习惯性的按了下F12,发现phpfreechat提供了控制台输出。

readyState: 4, responseText: "{ "error": "Wrong message format (must be a JSON string)" }", status: 400, statusText: "error"}

哦?必须是个Json?
又去下了一份源代码,查找报错内容 “Wrong message format (must be a JSON string)”。
顺利定位到唯一一本代码,channels.php中的如下代码片段。

  // check that request content contains a message
  $data = json_decode($req->getBody());
  if (!$data or !is_string($data)) {
    $res->status(400); // Wrong message format
    $res['Content-Type'] = 'application/json; charset=utf-8';
    $res->body('{ "error": "Wrong message format (must be a JSON string)" }');
    return;
  }

如果我在第二行传入了一个0,$data仍然等于0。
在第三行,死在了!$data上。!$data是个很诡异的判断。
在PHP中,非0即true,0即false,”0″是false,’0’也是false。
就因为我写了一个0,便中了招,进入了报错代码块。

我们再来看一下第三行代码的意图: 如果非(false/0/null/未初始化/””/…) 或者 不是字符串的话,报错。
可是我单独打一个0,并不应该被算作非法输入。
那么改成什么好呢?

Salesfroce更新了Summer 16′ 版本的ForceIDE v37.0

官网地址:https://developer.salesforce.com/page/Force.com_IDE_Installation
更新日志:https://developer.salesforce.com/page/Force.com_IDE_Release_Notes

我在Eclipse Neon上已经成功更新。
本次更新的最大变更是。。。。更改了插件安装地址。没错。
还有提供了Lightning单独的开发组件。

另外,值得一提的是,启用了Java早就有的Open Type功能。

重点来了,打断点! Debug调式!没错!像个堂堂正正的Java程序员那样!
不过我还没试验这个新功能,之后会更新。

Owncloud8以后版本如何直接从后台放文件

在Owncloud还年轻的时候,直接从后台上传文件到Owncloud的文件目录,会自动的归纳到文件系统里,并显示到网页上。
但自从Owncloud升级到高版本之后,这个特性就消失了。就是你可以放,但是人家就是不收录。

这个急坏了我了,因为有些文件通过正规上传功能就是死活上传不上去。这样我只能通过FTP先传到服务器上。
经过千辛万苦的尝试,有办法了。

第一种是执行Owncloud的CLI命令。具体位置是在Owncloud根目录,有个文件叫OCC,实际调用的是console.php,是个PHP脚本。通过命令 PHP OCC fils:scan –all即可重新扫描文件目录下的所有文件了。代价是所有文件的ID会重置,导致同步的桌面客户端会认为都是新文件,继而全部重新下载。不过,我不用同步客户端。。。。
在使用这种方法的时候我遇到了问题,因为Owncloud的Base.php使用了PHP5.4特性,虽然我在godday的管理页面选择了5.4,但在SSH中使用PHP命令的时候,仍然提示为PHP 5.3(Fxxk Godday)。

既然此路不通,我研究了下代码,发现了一个更简单的方式——–
[truncate oc_filecache;]命令
由于我使用的是MySql作为Owncloud的后台,就给了我操纵表的机会。。。执行之后,重新登录,文件都出来了。

// Update 1
答记者问,truncate命令要进入MySQL后台执行,truncate掉OwnCloud的oc_filecache这张表。之后重新登录OwnCloud,Owncloud系统会自动重新填充数据。

瑕疵

世界上没有完美的东西
世界上没有毫无瑕疵的东西

如果基因遗传体系是完美的,将不会有进化。
生物不会如此多样。

如果力学是完美的,原子核不会结合。
宇宙仍是一团雾气。

而我们在软件工程或者生产线生产中却在极致的追求无瑕疵。