技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> dabr 架设与修改

dabr 架设与修改

浏览:1684次  出处信息

    我的 Nokia 3100 已经用了大约有四五年了,最近很有冲动要买个 iPhone,不过某人却给我买了个 E71,粉碎了我的梦想。在 Nokia 3100 退休之际,看一下它的丰功伟绩:发出的信息 10243,收到的信息 11431.

    其实 E71 我也比较满意,不买 iPhone 也省下一笔钱。先配置了一下 Share Online,让它可以把照片上传到 flickr,然后就开始整 twitter. 先试了一下 Gravity,界面挺不错的,就是不是免费软件,最关键的是听说流量耗费比较大,我试用了一会确实如此,实在想不到为什么它会用那么多。

    我一直在想自己做一个 twitter 客户端,只需要能够发布和查看与自己相关的信息(我发布的或者提到我的),几个月前曾经用 Adobe AIR 尝试过,后来因为时间问题搁浅了,也许以后有空了还会拣起来。我关心的信息就这么多,但是 Gravity 不管这些,它会定时更新默认的 timeline,一方面耗费流量,另一方面信息过载让我比较头疼。

    dabr 是个非常好的选择,后来我使用也非常喜欢,虽然它只是个 mobile web interface. 第一,它可以让我访问到 twitter; 第二,只有在你操作的情况下它才会刷新页面,产生数据流量,且流量相当小; 第三,它是开源软件,可以非常方便地修改来适应自己的需求。其实它的安装就是比普通的 PHP 程序多了个 rewrite rule,很简单。不过我的配置比较特殊,也作了些修改,所以记下来,就当是个另类的 dabr 教程。

    我的服务器上有两个 web server,lighttpd 运行着包括 qingbo.net 在内的一些 PHP 或者 python 程序,监听 80 端口,apache 监听 443 端口,是我的私人 svn repository 和 trac 的前端,只能 https 访问。由于还没有为 apache 配置 PHP 环境,所以我仍然把 dabr 的程序分配给 lighttpd 运行,但是给它单独开了一个新端口(比如 3000),且只能本机访问(请求目标地址为 127.0.0.1)。又因为 lighttpd 没有配置 ssl,就用 apache 做个 ProxyPass,指向 127.0.0.1:3000,这样外部还是只能通过 https 来访问 dabr,避免某些安全隐患。

    dabr 的 SetupGuide 没有给 lighttpd 的 rewrite 写法,其实基本上跟 Apache 是一样的。我的规则如下:

以下是代码片段:
url.rewrite-once = (
  "^/(.*)$" => "/index.php?q=$1"
)

    之后是 dabr 程序的调整:

限制 twitter 用户

    默认情况下架设一个 dabr 程序是任何人可以访问的,如果知道的人太多,可能给服务器造成比较大的负担。

    避免这个情况的方法在 dabr 的 SetupGuide 里就介绍了,把一段代码放在 config.php 里就可以。

去除不需要的菜单项

    dabr 默认在页面顶部和底部都有一长串的链接,但是很多可能是我们不需要的。它们是使用函数 menu_register 添加的,在源代码目录执行命令 "grep -r menu_register *" (Linux 系统) 即可找到所有调用了该函数的文件,然后进去找到你不想要的菜单项,注释掉即可。

    例如 index.php 一开始就调用了这个函数,"about" 一般来说没用,把它注释了。需要注意,common/twitter.php 里调用 menu_register 时的参数数组有非常多的条目,其中许多包含一行 \'hidden\' => true,,这种并不是显示出来的菜单项。

修改每页展示的 tweets 条数

    我修改了 twitter_user_page, twitter_home_page, twitter_replies_page 几个函数,给它们定义的 $request 变量 url 中增加了 count=5 这个参数

强制 text only 模式

    主要是为减少不必要流量,另外我屏幕也比较小。打开 common/settings.php, 改一下 setting_fetch 函数,当获取 \'browser\' 配置值时,总是返回 \'text\':

以下是代码片段:
function setting_fetch($setting, $default = NULL) {
  $settings = (array) unserialize(base64_decode($_COOKIE[’settings’]));
  if (array_key_exists($setting, $settings)) {
    return $settings[$setting];
  } else {
    if ($setting == ’browser’) {
      return ’text’;
    }
    return $default;
  }
}
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1