flashnfantasy: Wiki-Test in JavaScript

Beitrag lesen

Hi,

Heute brauche ich einfach nur Feedback zu dem fertigen Produkt.

Es ist ein recht schwaches Argument. Du hast Glück, das keiner der entspr. Damen und Herren da ist ;-)

Da bin ich halt egoistisch, zudem - ich bin sicher, daß Twilo sich das nicht angeschaut hätte, wenn das Posting an der moralisch richtigen Stelle gestanden hätte.
Und so hätte ich den Fehler nicht bemerkt.

In den Funktionen domIns() und domDel() wird ein Blockelement benutzt dem nachträglich per CSS ein Inlineverhalten aufgepropft wird. Das macht hier wenig Sinn.

Eine andere Methode ist mir dazu nicht eingefallen.
Klar, ich hätte eine Klasse definieren können und dann den Klassennamen setzen können, aber das ist für meinen Geschmack nur genauso gut.

Und warum hast Du nicht einfach direkt ein Inlineelement genommen?

Auch da hätte ich die CSS-Eigenschaften verändert. Bei beiden die Farbe und beim Ins hätte ich das Underline rausgenommen.

Eigentlich habe ich bisher sehr gute Erfahrung gemacht, DIVs zu 'inlinen', in allen Browser die ich nutze (Opera, Mozilla, IE).
Ich weiß das ist pfui - aber es klappt überall anstandslos, also scheint es zumindest akzeptiert zu werden.
Also was spricht dagegen ?

zu replaceAll habe ich keine Alternative gefunden.

Es funktioniert mit normalen Regexen.
Was hast Du denn probiert, das es nicht funktioniert hat?

reguläre Ausdrücke brauchen länger - ich vermeide sie halt, wo ich kann.

innerHTML ist einfacher (und auch browserübergreifend).

Naja, "browserübergreifend" ist aber schon recht optimistisch, oder?

Funktioniert auf Mozilla, Opera und IE, damit habe ich 99.9% meiner User erreicht.

Klar könnte ich den ganzen Text mit DOM zusammenbasteln, aber das wäre dann etwas langatmig geworden.

Es hält sich in Grenzen.

Wahrscheinlich mache ich das, wenn es ernst wird.
Es war mit innerHTML halt einfacher.

removeAllChildren() geht auch eleganter.

wie ?
denn der Algorithmus frisst nämlich viel Zeit !!!

function removeAllChildren(arnold){
  var adam   = arnold.cloneNode(false);
  arnold.parentNode.replaceChild(adam,arnold);
}

ok, das ist tricky, daran hätte ich jetzt nicht gedacht

Und wird dort das Problem nicht gelöst, man kann immer nur auf den neuesten Artikel aufsetzen, aber alle Artikel gegeneinander vergleichen.

Und das ist keine Lösung? Im Kontext mit der Administration gesehen ist das durchaus eine akzeptable Lösung.

Bin so ein Schwarzmaler, der glaubt, daß jetzt alle Leute den denkbar kompliziertesten Fall wählen.

Was bei meinem Algorithmus mir wichtig ist, daß er sich durch einen komplett umgestellten Text sich nicht aus der Fassung bringen lässt

Das tut er aber, siehe Twilos Posting.

Der Algorithmus war nicht falsch, die Ausgabe hat etwas zu früh abgebrochen. Der Fehler ist jetzt behoben.

i.e. Selbst wenn man einen Absatz an eine ganz andere Stelle kopiert und dann dort was einfügt, erkennt er die eingefügte Änderung.

Einen Absatz an eine ganz andere Stelle zu verschieben kann bereits den Sinn verändern. Zudem handelst Du Dir völlig unnötig Komplexität ein, denn wenn Du das ganz durchziehst landest Du am Ende und Worst Case bei O(n^m) (m sei die Anzahl der Versionen).

Die Komplexität wächst mit dem Faktor O(nn) = Feststellen der Worthäufigkeit, das Zuordnen mit dem Faktor O(n).
Ich glaube nicht, daß es einen Alg unter O(nn) gibt.
Müsste aber mal testen, was du mir genannt hast.

Klar ! - eine Verschiebung ändert den Sinn. Also sollte man sie schon feststellen. Wichtiger ist aber noch, daß man gelöschte und hinzugekommene Wörter unabhängig von der Verschiebung erkennt.
Letztlich muß man sich den Text sowieso nochmals durchlesen, um zu sehen, ob er iO ist.

Bei Text wird normalerweise ein zeilenweises Diff gezogen. Nicht verschachtelt, sondern ganz normal.
Normal heißt hier: Einfügen und Löschen, Vertauschen wird selten benutzt.
Für die genauen Algorithmen siehe diff

Ja, wird meist so sein. Es kann aber auch Austausch von Daten sein (aus Alt mach neu), denke ich mal.
Es ist einfach so gewesen, daß ich bei der ersten Änderung einfach zuviel gestochert hätte, bis ich wieder auf einen gemeinsamen Text hätte aufsetzen können.
Meine Idee mit den Ankerpunkten kommt vom einem Alg namens SIFT (Scalable Invariant Feature Transform), der beeindruckend gut gleiche Bildteile auf verschiedenen Bildern erkennt.

Auch was das mutwillige Zerstören von Artikeln angeht habe ich sowas wie einen Maßstab gefunden: die Anzahl der 'Ankerpunkte' von Version zu Version.
Diese Anzahl ändert sich nicht wesentlich bei Korrekturen oder Ergänzungen, sie ändert sich aber wesentlich bei einem ganz anderen Text oder bei einer Löschung.
Somit habe ich auch dort meine Alarmglocke.

Eine ziemlich teure Alarmglocke.
Aber gut, hast Du ja schon, bräuchtest Du nicht noch extra zu erzeugen.

Geht so, ich habe Schillers Glocke und die Bürgschaft getestet, auch gegeneinander, und es hat jeweils ne Sekunde gedauert, bis das Ergebniss vorlag.

videntur,

"videre" bedeutet im Passiv etwas anderes als im Aktiv. In diesem Zusammenhang hier könnte ich das fast schon als Affront nehmen! ;-)
(Du wolltest wahrscheinlich "man sieht sich" o.ä.?)

Dachte ich eigentlich, daß es das heißt ???
cu,
Mathias