Benutzer:Smurf/SpecialContributions.php

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Benutzerbeiträge[Bearbeiten | Quelltext bearbeiten]

Wie funktionieret die Liste mit den Benutzerbeiträgen[Bearbeiten | Quelltext bearbeiten]

Aus den beiden Artikel-Tabellen cur und old werden jeweils die n letzten Beiträge des Benutzers rausgesucht. Aus diesen beiden werden dann die letzten Beiträge zusammengestellt. Die beiden Tabellen enthalten die Artikel, eigentlich.

cur(auszugsweise): Titel, Text, Letzter Autor, Datumswerte
old(auszugsweise): 'alter' Titel, alter Text, alter Autor, alte Datumswerte

Wobei in cur ein bestimmter Artikel immer nur einmal vorkommt (sollte;), und in old jeder Artikel mehrmals auftauchen kann (pro Änderungen ein Eintrag, nur die neuste natürlich nicht).


Probleme[Bearbeiten | Quelltext bearbeiten]

Aufgrund der Vorauswahl aus den Tabellen kann es sein, dass das Ergebnis Fehler enthält in Bezug auf die Vollständigkeit. Das Nachdenken warum möglicherweise was fehlt wenn ein Nutzer insg. 45 mal in cur und insg. 156 mal in old auftaucht, sei dem Leser als Denksportaufgabe überlassen (oder er schaut sich unten die Lösung an). Die Lösung wäre eine Tabelle wo alles drinsteht, was natürlich ganz schön stressig für die Datenbank wäre. Das Problem lösen wir wenn entweder MySQL Views kann, oder einer das Wikiwiki hier auf PostgreSQL umgebaut hat. Dann macht man eine view in der Datenbank die die beiden Tabellen vereinigt, und schwupps klappts auch mit den Benutzerbeiträgen.

Weitere Informationen[Bearbeiten | Quelltext bearbeiten]

Für eine genaue Beschreibung der Tabellen empfieht es sich in den Source auf SourceForge zu schauen.

Lösung Denksportaufgabe[Bearbeiten | Quelltext bearbeiten]

Offene Fragen[Bearbeiten | Quelltext bearbeiten]

und auch in Bezug auf die Vollständigkeit!?
Kannst Du die Tabellen interessehalber noch mal genauer erklären? Sind das jetzt 2 Tabellen pro Benutzer, die die ganze Zeit schon vorliegen? Thx. --Olaf1541 11:03, 20. Mai 2003 (CEST)
Hi, nur noch mal interessehalber, so wie ich es jetzt verstanden habe, gibt es über die gesamte Wikipedia 2 Listen, eine mit alten Revisionen und eine mit (top). (Ich hatte nämlich schon mal gedacht, es gäbe 2 Listen pro User, wo jeweils die Artikeledits (also nur wann welcher Artikel) des Benutzers drinstehen, da hätte aber eine extra-(top)-Liste nicht viel Sinn gemacht...) Ja gut, ich glaube, es ist jetzt klar, besonders wenn ich mir die Unterschiede zur vorherigen Revision von hier nochmal ansehe :-) --Olaf1541 13:51, 20. Mai 2003 (CEST)
Wenn du der Meinung bist, dass der Text oben präzise genug ist, dann sollte man die Diskussion hier wegwerfen, IMHO. Sonst wirds wieder unübersichtlich --Smurf 14:01, 20. Mai 2003 (CEST)


Hi, schön fand ich ja auch die Formulierung aus Beobachtete Fehler: Da alte und neue (top) Artikel in getrennten Tabellen liegen, werden bei einem Limit von z.B. 50, jeweils die ersten 50 Einträge aus jeder Tabelle genommen, d.h. insgsammt 100 (mal davon ausgehend das genügend Beiträge da sind). Und die werden dann zeitlich einsortiert, aber halt nur 50. Irgendwo gehen 50 verloren. Schlecht für diese Abfrage, aber für sehr genaue und vollständige Ausgaben muss mal das Limit sehr hoch wählen. Wenn Du diesen Text vielleicht noch einbaust? Ansonsten ack. Genauso vielleicht die Diskussion aus Beobachtete Fehler dann weg, dafür einen Link dort auf diese Seite (weiss nicht, ob Du sie noch verschieben willst).

Ich versuche nochmal zusammenzufassen, soweit ich verstanden habe.

Angenommen, jemand hat 300 Artikeledits. Davon sind noch 70 (top) und 230 alte Revisionen. Man läßt sich die Benutzerbeiträge anzeigen in 250er-Schritten. Es werden aus der (top)-Liste 250 genommen (effektiv die 70 vorhandenen) und 250 aus der mit den alten Revisionen (effektiv die 230 vorhandenen). Diese werden sortiert und 250 davon angezeigt. Beim Schritt nächste 250 wird in beiden Tabellen bei einem Offset von 250 angefangen (bzw. gar nicht mehr, da die Suche vorher schon am Ende war, da sie die 250 nicht voll bekommen hat bzw. ansonsten an der Stelle, wo vorher die n-Einträge erreicht waren), und da aber in beiden Tabellen jeweils unter 250 Einträge liegen, wird nichts mehr gefunden. 50 Einträge fallen unter den Tisch.

Bei derselben Konstellation, nur mit 50er-Schritten, wird es noch schlimmer, beim ersten Schritt fallen gleich 50 Einträge weg, beim zweiten noch 20.

Ich habe auch noch einen Vorschlag für einen Workaround, der den Server auch nicht mehr belasten sollte (Bsp. 50er-Schritte): Statt 50 Einträge zu verwerfen, sollten die einfach mit angezeigt werden :-). Dann stimmt nur die Anzahl der ausgegebenen Artikel nicht mehr (sind dann statt 50 zuerst 100 und auf der zweiten Seite noch 70) und die Reihenfolge stimmt nicht (ein evtl. älterer (top)-Artikel steht eine Seite vorher vor neueren alten Edits eine Seite später, aber das ist ja jetzt wohl auch schon so (sagst Du, ich habe eben nochmal nachgesehen, falsche Reihenfolge habe ich nicht, nur fehlende Einträge, falsche Reihenfolge ist momentan eigentlich auch nicht möglich, wenn ich mir das richtig überlege)). Verfeinerung dieser Idee: nur noch je 40 Einträge aus beiden Listen nehmen, alle anzeigen, dann ist der Unterschied zu gewünschter Anzahl (50) zu Maximum (80) und Minimum (40) tatsächlich angezeigter nicht so groß. (Naja, schön isses so auch nich, aber fehlende Einträge machen mich irgendwie hibbelich ;-)))

Oder zweite Idee: Aus beiden Listen Einträge entnehmen (in zeitlicher Reihenfolge), bis die Maximalanzahl voll ist. Für die nächste Seite wiederum in beiden Listen anfangen mit Suchen ab dem Datum, von welchem vorher der letzte Eintrag war. Dies sollte weder fehlende Einträge noch falsche Reihenfolge liefern. (naja, vermutlich umständlich zu coden und etwas rechenzeitintensiver)

Zum Punkt falsche Reihenfolge: Ist momentan eigentlich nicht möglich. Bsp 50er-Schritte: 50 Einträge aus beiden Listen. Sortierung, bei 50 abgeschnitten. Nächste Seite: wieder a 50 Einträge aus beiden Listen. Es wird wieder sortiert. Evtl. stehen jetzt gar keine (top)-Einträge mehr in der Liste, da die jetzt alle viel älter sind, da in der Liste mit den alten Revisionen viel mehr Einträge vorhanden sind. Dazwischen fehlen Einträge, sowohl (top) als auch alte Revisionen. Aber keine falsche Reihenfolge. --Olaf1541

Was passiert wenn bei 50 Angeforderten aus jeder Liste nur die Hälfte angefordert wird, ist auch spannend. Dann werdens möglicherweise weniger, oder? Du hast das aber wunderschön aufgedröselt - mach ne Überschrift Lösung Denksportaufgabe und schreibs nach 'oben'. Das mit der falschen Reihenfolge ist, da hast du recht, falsch. --Smurf 15:59, 20. Mai 2003 (CEST)

Hallo, ich habe die Meldung dieses Fehlers auf Wikipedia:Beobachtete Fehler#Eigene Beiträge mal etwas konkretisiert, damit schon dort deutlich wird, worum es geht, und auch andere Benuzter, die diesen Fehler beobachtet haben die Meldung des Fehlers, und damit diese Seite leichter entdecken. Ich hoffe, meine Kurzdarstellung auf der Fehlermeldungsseite ist korrekt, vielleicht kann nochmal einer drüberschauen (und evtl. korrigieren), der das Problem genauer durchschaut hat, und der Meldung mit seiner Signatur Relevanz verleihen. --SteffenB_ 15:21, 20. Jun 2004 (CEST)

der Bug ist laut auskunft der entwickler gefixed, ich hab den report entfernt. --Elian Φ 17:04, 14. Aug 2004 (CEST)