Posted by bianbian on 2008-04-09 11:13
本文Tags: JSON, struct
上次讨论了C的struct结构体与JSON交互,并提出了能否自动把struct转为JSON的问题。
今天我总算解决了这个问题,虽然中间也想过传参数给一个函数集中处理,不过都是比较麻烦。我写了一个脚本,自动生成把struct的成员插入json_object的函数,底下页面有演示:auto generate function of C struct to JSON:
标签:
JSON,
struct遵守创作共用协议,转载请链接形式注明来自
http://bianbian.org 做人要厚道
相关日志
Posted in C/C++, Technology | 3 Comments »
Posted by bianbian on 2008-04-07 01:28
本文Tags: BBS, Firefox, IE, JavaScript, 脚本
最近发现个别网友访问小百合BBS会出现如下提示:
见到此文字可能是由于浏览器禁用了活动脚本或者脚本有误
请启用脚本支持后刷新本页;若仍有问题,请点击这里提问
原理:使用Javascript动态输出框架结构(好处是能缓存静态化网页,区别guest用户和登录用户)。因此,一旦这步出现错误,框架结构未建立成功,那么就会显示body里的提示内容。
原因:
(1)浏览器版本不支持。目前小百合BBS支持IE5.5(不保证全部功能有效),完美支持IE6+、Firefox 2.0+、Opera 9+等。如果您的浏览器不在此列,并且测试正常,欢迎反馈。
(2)浏览器脚本引擎未启用。您可以点击这里测试:如果能弹出“脚本启用”,那说明这项没有问题;否则,请修改设置如下:
Firefox:
IE:
(3)脚本有误。可能性不是很大,除非刚好碰到更新的脚本确实存在错误。基本上我都会测试以后才放上去。不过万一你怀疑是这个问题,可以telnet方式到sysop版看看,如果其他人都没问题那基本就只是您的问题了。
(4)浏览器缓存内的脚本版本过旧。因为浏览器缓存脚本文件(这样不需要每次都下载,加快速度),如果服务器端已经更新了脚本文件,而您的浏览器缓存因为各种原因没有更新,可能也会导致这个问题。请清空浏览器缓存后刷新测试:
Firefox:
IE:
(5)校内用户访问BBS请关闭代理服务器。
(6)浏览器或系统部分DLL(动态链接库)功能因为病毒或木马的原因失效(Windows系统),请点此下载修复程序,保存后运行,然后重新打开浏览器测试。
如果还有问题,请留言将您的操作系统、浏览器(基本是IE出问题)及版本、杀毒软件等告知。另外推荐使用Firefox:
标签:
BBS,
Firefox,
IE,
JavaScript,
脚本遵守创作共用协议,转载请链接形式注明来自
http://bianbian.org 做人要厚道
相关日志
Posted in JavaScript, Technology | 28 Comments »
Posted by bianbian on 2008-04-06 16:01
本文Tags: BBS, memcached, 优化
尤其是点击率,是网站静态化最麻烦的地方之一:每个用户的每次点击都会改写.DIR文件,也是负担
而且除了看一眼没有其他用处,而且没有办法保证不作弊(blog点击率作弊尤其多)
我想了个办法:tmpfs+数据库(比如MySQL)
1)把所有点击率以日志的形式记录到tmpfs(ramdisk)某文件log.tmp(点一次存一行)
格式:bbs BoardName FileName UserId IP
blog BlogUserId FileName UserId IP
an Path UserId IP
因为是内存操作,非常快
2)10分钟crontab把log.tmp改名log.10,然后另外启动程序分析log.10
去除UserId和IP相同的重复记录(10分钟内同ip同id重复点击只算一次)
把结果一次insert到MySQL,因为是multi insert,即使log很大,其实是非常快的
3)进入数据库以后就好办了,可以出各种统计:
1小时内热门,12小时内热门,24小时内热门,本周热门。。。。。。
这块统计(数据挖掘)其实是目前基于文件系统的BBS最缺的地方,自己写会很辛苦
这块结果输出可以用memcached优化,10分钟从数据库跑一次SQL即可
这样.DIR就不需要改变,而且可以把.DIR部分cache到内存里,结合libevent,有数据改写reload一次
唯一的缺点是显示的时候要从数据库内取,必须memcached,而且10分钟才会更新一次
不过比起带来的好处来看,是微不足道的
针对其他日志的数据挖掘:除了能出各种统计图表外,对于遍历试密码的可以直接从iptables过滤
我准备等我忙完毕业的事情好好实现一下。
标签:
BBS,
memcached,
优化遵守创作共用协议,转载请链接形式注明来自
http://bianbian.org 做人要厚道
相关日志
Posted in Technology | No Comments »
Posted by bianbian on 2008-04-06 13:36
本文Tags: AJAX, Firefox, JavaScript, XMLHttpRequest, 二进制, 数据
译者注:原来想用JS直接处理C丢过来的struct数据,具体可以查看:[原] C的struct和JSON交互。
经过千辛万苦的查找,找到了这篇文章(作者应该比我更辛苦):Downloading Binary Streams with Javascript XMLHttpRequest
把关键点翻译如下(不过我还没有测试):
利用XMLHttpRequest的overrideMimeType方法设置charset为x-user-defined。
- //fetches BINARY FILES synchronously using XMLHttpRequest
- load_url = function(url) {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
- var req = new XMLHttpRequest();
- req.open('GET',url,false);
- //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
- req.overrideMimeType('text/plain; charset=x-user-defined');
- req.send(null);
- if (req.status != 200) return '';
- return req.responseText;
- }
-
- var filestream = load_url(url);
- var abyte = filestream.charCodeAt(x) & 0xff;
IE不支持overrideMimeType方法,不过有评论者说VBScript可以实现:
- Dim xhr
- Set xhr = CreateObject("Microsoft.XMLHTTP")
- xhr.Open "GET", "folder.bin", False
- xhr.setRequestHeader "Accept-Charset", "x-user-defined"
- xhr.setRequestHeader "Content-Type", "application/pdf"
- xhr.send Null
标签:
AJAX,
Firefox,
JavaScript,
XMLHttpRequest,
二进制,
数据遵守创作共用协议,转载请链接形式注明来自
http://bianbian.org 做人要厚道
相关日志
Posted in JavaScript, Technology | No Comments »
Posted by bianbian on 2008-04-04 14:22
本文Tags: BBS, memcached
libevent
http://www.monkey.org/~provos/libevent/
memcached
http://www.danga.com/memcached
libmemcached
http://tangent.org/552/libmemcached.html
memcachedb (新浪博客技术团队,赞一个)
http://memcachedb.org/
ncache (同上)
http://code.google.com/p/ncache/
标签:
BBS,
memcached遵守创作共用协议,转载请链接形式注明来自
http://bianbian.org 做人要厚道
相关日志
Posted in C/C++, Technology | No Comments »