2010-04-02 3 views
3

Prescript: Удивительный etherpad был недавно открыт. Получите его здесь: http://code.google.com/p/etherpad. Это первый вопрос, который я знаю о StackOverflow о коде etherpad. Если вы являетесь частью сообщества с открытым исходным кодом etherpad, вы можете подписаться на the RSS feed for questions tagged 'etherpad' на всякий случай, если это поймает!Просмотр недавно отредактированных простейших эфиров (обратите внимание на новый тег «etherpad» для открытого кода 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" 

Это удобно, однако на самом деле lastWriteTime обновляется каждый раз, когда кто-то так много, как рассматривает площадку в браузера. Я бы предпочел отсортировать подушки, когда они были в последний раз отредактированы. Вероятно, есть фантастический запрос SQL, включающий соединение с другой таблицей, которая будет показывать фактическое время последнего редактирования. Кто-нибудь знает, что это? Кроме того, у вас может быть сценарий, который замечает, когда изменяется headRev, но это не похоже на самый чистый способ сделать это.

ответ

1

Я не совсем понял ответ на свой вопрос, но написал сценарий, который достигает чего-то подобного. Основная цель - экспортировать текстовые версии всех моих пэдов и хранить их на моем ноутбуке. Как побочный эффект, он показывает мне, какие пэды изменились, и позволяет мне видеть diff с последней экспортируемой версии. Он также показывает, какие из них были недавно созданы.

Во-первых, создайте следующий скрипт, padlist.pl, на сервере, на котором размещен экземпляр EtherPad:

#!/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; 
} } 

Чтобы увидеть диф блокнота обув с момента последнего я извлекаться его:

diff prev/foo.txt foo.txt