مشاهدة EtherPads التي تم تحريرها مؤخرًا (لاحظ علامة جديدة "Etherpad" لرمز EtherPad Open Open من مصدرها!)

StackOverflow https://stackoverflow.com/questions/2569194

سؤال

Prescript: المذهل etherpad تم الحصول على مصادر مفتوحة مؤخرا. أحضره هنا: http://code.google.com/p/etherpad. هذا هو السؤال الأول الذي أعرفه على Stackoverflow حول رمز Etherpad. إذا كنت جزءًا من مجتمع Etherpad Open Source ، فقد ترغب في الاشتراك في تغذية RSS للأسئلة الموسومة "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 لكن هذا لا يبدو أنظف طريقة للقيام بذلك.

هل كانت مفيدة؟

المحلول

لم أكن قد اكتشفت إجابة سؤالي الأصلي ، لكنني كتبت نصًا يحقق شيئًا مشابهًا. الغرض الرئيسي هو تصدير إصدارات نصية عادية لجميع منصاتي وتخزينها على جهاز الكمبيوتر المحمول الخاص بي. كأثر جانبي ، يظهر لي أي وسادات قد تغيرت وتتيح لي رؤية فرق منذ آخر إصدار تم تصديره. كما أنه يوضح أي منها تم إنشاؤه حديثًا.

أولاً ، قم بإنشاء البرنامج النصي التالي ، 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;
} }

لرؤية مجموعة مختلفة من pad foo منذ آخر مرة جلبتها:

diff prev/foo.txt foo.txt
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top