说明:惊人的etherpad最近是开源的。到这里来:http://code.google.com/p/etherpad。这是我在stackoverflow上知道的关于etherpad代码的第一个问题。如果您是etherpad开源社区的一员,您可能希望订阅the RSS feed for questions tagged 'etherpad'以防它流行起来!
我的实际问题是,假设您在自己的服务器上安装了etherpad:
首先,下面是查看最近编辑的焊盘的查询:

SELECT id,lastWriteTime,creationTime,headRev
  FROM PAD_SQLMETA ORDER BY lastWriteTime, headRev;

或者,如果要在unix提示符下运行:
mysql -u root -pPASSWD etherpad -e "select id,lastWriteTime,creationTime,headRev
  from PAD_SQLMETA order by lastWriteTime, headRev"

这很方便,但是每次有人在浏览器中查看pad时,都会更新lastWriteTime。我宁愿按上次编辑的时间来分类。可能有一个奇特的sql查询涉及到与另一个表的连接,该连接将显示实际的上次编辑时间。有人知道那是什么吗?或者,你可以有一个脚本,当headrev发生变化时会注意到,但这似乎不是最干净的方法。

最佳答案

我还没有完全弄清楚我最初问题的答案,但我写了一个脚本,实现了类似的东西。
它的主要目的是导出所有pad的纯文本版本并将它们存储在我的笔记本电脑上。
作为一个副作用,它告诉我哪些焊盘已经改变,并让我看到一个差异,自从上次导出的版本。
它还显示了哪些是新创建的。
首先,在承载etherpad实例的服务器上创建以下脚本padlist.pl

#!/usr/bin/env perl

$list = `mysql -u root -pPASSWD etherpad -e
         "select id from PAD_SQLMETA order by lastWriteTime DESC, headRev DESC"`;

$list =~ s/^id\s*\n//s;  # get rid of the column header mysql adds.
print $list;

然后在本地计算机上运行以下脚本fetchall.pl
它会把你所有护垫的快照都记下来,告诉你哪些已经改变了,哪些新出现了。
#!/usr/bin/env perl

use LWP::Simple qw(get);
$| = 1;  # autoflush.
$server = "server.com"; # the server that hosts your etherpad instance.

$pads = `ssh $server etherpad/padlist.pl`;
@padlist = split(/\s+/, $pads);

$neednewline = 0; # printing "." for each pad where nothing to be done.
for(@padlist) {
  $ep = $_;
  $localfile = "$ep.txt";
  if(-e $localfile) {
    $localexists = 1;
    $localcontent = do {local (@ARGV,$/) = $localfile; <>};
  } else { $localexists = 0; }
  $livecontent = get("http://$server/ep/pad/export/$ep/latest?format=txt");
  if($livecontent ne $localcontent) {
    if($neednewline) { print "\n";  $neednewline = 0; }
    if($localexists) {
      print "CHANGED: $ep\n";
      open(F, ">prev/$localfile") or die "Probably need to create 'prev' dir.";
      print F $localcontent;
      close(F);
    } else { print "NEW:     $ep\n"; }
    open(F, ">$localfile") or die;
    print F $livecontent;
    close(F);
  } else {
    print ".";
    $neednewline = 1;
} }

要查看上一次获取pad foo后的差异:
diff prev/foo.txt foo.txt

关于sql - 查看最近编辑过的etherpads(注意开源的etherpad代码的新'etherpad'标签!),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2569194/

10-09 03:46