工程提议
这里存放一些新工程的提议/点子, 以筹集更多想法或者筹集人手预备立项.
post spamfilter
- 问题: 许多 web app 允许 user post 内容的却不支持 spamfilter, 结果导致大量人工 or 自动 spam, 维护麻烦.
方案: 在服务器端针对 post 内容进行反向代理, client --post--> spamfilter proxy --post--> real webserver
- 改进: 为了避免要求 spamfilter proxy 接受过大压力, 可以采用其他 proxy frontend 来指定规则只将 post 转给 spamfilter而其他频繁度更高的 GET 请求等直接 proxy 给 real webserver
- 典型案例: lighttpd 1.5, 匹配 request-method == post and client ip != 127.0.0.1, 转 post spamfilter proxy (fcgi or http), 裁决通过则再转回同一个 lighttpd 进程, 这个时候因为 client ip 是 127.0.0.1 不匹配规则则不走 post spamfilter 而按照原有方式, 交给 php/perl/python 等 fcgi 进程处理.
- 周边功能
- web 界面管理配置
- log
- 纠正裁决结果(基于 log, 记录完整的提交). 比如当时判定为 spam, 后期管理员发现后纠正则自动模拟原用户完成提交操作. (session timeout 是个问题)
- 用人工纠正结果来训练 bayes
output split redirector
split console into windows, and redirect app output into each window. 把程序输出重定向到 console 的下的多个窗口.
$ make (全部输出都以行为单位交叉在一起) $ sredir -n3 make (stdout/stderr 分别输出到2个切分窗口上)
脚本
if ! echo >&4 ; then exec 4>&2; fi if ! echo >&5 ; then exec 4>&3; fi if ! echo >&6 ; then exec 4>&2; fi echo test2 echo test3 >&3 echo test4 >&4 echo test5 >&5 echo test6 >&6
执行效果:
$ ./test.sh (全部输出都以行为单位交叉在一起) $ sredir -n6 ./test.sh (stdout/stderr/4/5/6 分别输出到对应窗口)
- 限制条件: 基于 sh/c/c++/python 等系统常用工具都行. 最好选择基于 *nix 命令行常见部件/环境来写, 比如尽量避免使用 java/c#/mono 之类
- 改进/注意要点
- 增加 -a 参数多开一个窗口同时包含所有输出夹杂在一起 便于比较上下文
- 256 or 88 色支持
- 尽量实现基本的 terminal 功能, 识别字符颜色等控制对实际显示宽度的影响
- 支持 scoll buffer (sroll back). 意味着先要支持切换光标当前窗口才能针对特定窗口进行 scollback