Open janoliver opened 6 years ago
Ich hab mal die Hillbilly-Version von 1) in 0867c02 und 76d77fc gebastelt, dass läuft selbst mit "Ich update jetzt mal die Status-Anzeige für jeden Post" mit gut ~5000 Posts/s durch
Wie visualisiert man sowas am besten? So eine Art gewichteter Graph, oder?
(Meckpom+Linux-Forum Dataset)
potstats2=# SELECT quoter.name AS quoter_name, quotee.name AS quotee_name, count
potstats2-# FROM quote_relation
potstats2-# JOIN users AS quoter ON quoter.uid = quoter_uid
potstats2-# JOIN users AS quotee ON quotee.uid = quotee_uid
potstats2-# ORDER BY count DESC LIMIT 20;
quoter_name | quotee_name | count
-----------------+--------------+-------
Traxer | ./hoschi | 342
./hoschi | csde_rats | 306
Traxer | csde_rats | 300
./hoschi | Traxer | 268
Traxer | Rufus | 212
./hoschi | teK | 199
[KdM]MrDeath | YT | 184
flying sheep | csde_rats | 180
Traxer | teK | 166
Traxer | flying sheep | 157
[KdM]MrDeath | ./hoschi | 153
flying sheep | Traxer | 151
Rufus | csde_rats | 146
[KdM]MrDeath | Traxer | 145
SwissBushIndian | ./hoschi | 139
Rufus | ShinyDoofy | 136
Traxer | OliOli | 136
Rufus | teK | 135
Rufus | OliOli | 135
./hoschi | YT | 134
(20 rows)
Time: 2.528 ms
:D
Da fällt mir direkt auf, dass aktuell die erste Instanz eines Usernamens gespeichert wird (Usernamen in Postings in der XML-API scheinen nicht aktualisiert zu werden -- siehe ./hoschi, OliOli?). Das sollte man vielleicht noch ändern... (... oder Tracken, bigdata, mehr data ist mehr gut!)
8228e6750
potstats2=# SELECT users.name, domain, count
potstats2-# FROM link_relation
potstats2-# JOIN users ON users.uid = link_relation.uid
potstats2-# ORDER BY count DESC LIMIT 20;
name | domain | count
--------------+---------------------+-------
./hoschi | www.heise.de | 138
csde_rats | github.com | 68
YT | www.heise.de | 54
[KdM]MrDeath | www.heise.de | 39
csde_rats | www.abload.de | 33
./hoschi | www.golem.de | 30
flying sheep | github.com | 30
teK | forum.mods.de | 26
teK | www.youtube.com | 23
Schalentier | www2.saout.de | 23
./hoschi | stackoverflow.com | 23
ShinyDoofy | www.abload.de | 22
./hoschi | www.computerbase.de | 21
csde_rats | www.heise.de | 21
csde_rats | www.golem.de | 19
./hoschi | www.pro-linux.de | 19
B0rG* | github.com | 19
./hoschi | www.amazon.de | 19
golloza | www.heise.de | 18
T0X!C | www.gnu.org | 18
(20 rows)
Time: 2.379 ms
potstats2=# SELECT domain, sum(count)
potstats2-# FROM link_relation
potstats2-# GROUP BY domain
potstats2-# ORDER BY sum(count) DESC LIMIT 20;
domain | sum
-------------------------+-----
www.heise.de | 418
www.abload.de | 201
github.com | 195
forum.mods.de | 150
www.youtube.com | 112
www.golem.de | 110
en.wikipedia.org | 106
de.wikipedia.org | 83
wiki.ubuntuusers.de | 77
www.pro-linux.de | 72
stackoverflow.com | 62
www.amazon.de | 59
forum.counter-strike.de | 51
wiki.archlinux.org | 48
blog.fefe.de | 42
www.gnu.org | 41
www.google.de | 37
www.spiegel.de | 36
www.phoronix.com | 34
twitter.com | 32
(20 rows)
Time: 2.022 ms
Weiß wer, ob die Quotes in URL tags wirklich was tun ([url="http://..."]..
), oder sind die rein kosmetisch?
An der Stelle kann man also noch mehr interessante Dinge tun, etwa, wie oft eine Seite pro $Zeit verlinkt wird.
Oder auch
SELECT substring(url FROM 'http://forum.mods.de/%TID=#"[0-9]+#"%' for '#') AS tid
FROM post_links
WHERE url LIKE 'http://forum.mods.de/%';
Etwas weiterentwickelt ~>
potstats2=# SELECT
potstats2-# CAST(substring(url FROM 'http://forum.mods.de/%TID=#"[0-9]+#"%' for '#') AS INTEGER) AS linked_tid,
potstats2-# referer.tid AS referer_tid
potstats2-# FROM post_links
potstats2-# JOIN posts AS referer ON referer.pid = post_links.pid
potstats2-# WHERE url LIKE 'http://forum.mods.de/%';
linked_tid | referer_tid
------------+-------------
106775 | 106319
106319 | 106319
129991 | 126696
135751 | 126696
90254 | 139196
142868 | 126696
126696 | 142868
...
Der bbcode parser von Potdroid war ursprünglich in Python, ich glaube von Nicht_Noch_ein_Kamel oder sowas. Es wäre vermutlich hiflreich, einen rihctigen Parser zu haben. Vielleicht komme ich dazu irgendwann mal. :o
Ich hatte so eine ähnliche Erinnerung, aber es nicht direkt gefunden
DNS wurde gerade gefixt (Danke geht raus an 'fus); die Instanz unter http://potstats2.enkore.de/api/ sollte also gleich wieder von außerhalb erreichbar sein.
Ich könnte CORS anmachen für die API, dann kann man das Frontend gegen eine externe API basteln und brauch die nicht selber aufsetzen, macht vielleicht Dinge für @audax etwas leichter, weil der "Installation" Abschnitt in der Readme jetzt doch nicht mehr so ganz kurz ist (postgres ist toll, aber eben auch mehr Installationsaufwand als SQLite).
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
oder so sollte funktionieren. Dann müssten XHRs auf die API von einem lokalen Entwicklungsserver "einfach funktionieren".
[x] Done.
Da potstats ein wenig die Tradition haben jährlich getaktet zu sein, sollten wir die imho beibehalten, jedenfalls optional. In der GUI gäbe es dann einfach nur nen globales Select für das Jahr mit einem extra 'Any'-Key. Also darauf achten, dass alle Endpoints year=
verstehen.
Gerade aufgefallen ist mir, dass der social graph das nicht kann und der social graph das in der DB auch nicht auslesen kann.
Jo, bei dem müsste man dafür eine "year" Spalte einfügen.
Gut, ein bisschen komplizierter als die Spalte einbauen und ein .filter(year=year)
war es dann doch :D @ 8cb3d8d
Ggfs. kann es Sinn ergeben QuoteRelation analog zum PostLinks & LinkRelation Duo aufzuteilen.
Dann finde ich hoffentlich bald Zeit fürs Frontend. Zumindest eine rudimentäre Fassung sollte ich recht flott hinbekommen. Seit ich mir den Krams zum letzten Mal angeschaut habe gab auch schon wieder ne neue Major Version von Angular ;) [Immerhin mit wirklich guten Änderungen, das muss man ihnen lassen. Sie polieren diesen Haufen Mist der sich Frontend Development nennt so gut es irgendwie geht.]
Ich hab jetzt für die poster-stats Pagination eingebaut, mittels Keyset/Bookmark-Technik. Damit kann man einen "Load moar"-Button / "Load-moar-on-scroll" haben, anstatt Excel-like Seiten (...wobei Excel eigentlich seit $immer unendliches scrollen hat...)
Ich illustriere das mal kurz: http://potstats2.enkore.de/api/poster-stats?limit=10&order=asc http://potstats2.enkore.de/api/poster-stats?limit=10&order=asc&following_uid=924&following_ob=1 ... und die echte Fortsetzung wäre entsprechend http://potstats2.enkore.de/api/poster-stats?limit=10&order=asc&following_uid=6379&following_ob=1
Edit: Eigentlich könnte ich ja auch die "Fetch moar!!" URL von der API erzeugen lassen. Das klingt nach einer guten Idee™
Edit2: Tadaa, das war einfach: dc38028
Und im Frontend ist es auch schon eingebaut! \o/
Bin ich irgendwie farbenblind oder haben bei dieser bunten Leiste von Programmiersprachen in der Projektübersicht "Python" und "Typescript" so ähnliche Farben, dass das wie ein einzelner Balken aussieht?
Sehen sich äußerst ähnlich, jup.
Im bB gibt es Nutzer, die es "nicht gibt". Also, es gibt Postings von denen. Aber die Accounts existieren nicht wirklich. Und dadurch passiert dann sowas:
potstats2=> SELECT * from users WHERE name = 'Gott';
uid | gid | name | account_state | last_seen | locked_until | online_status | registered | tied | user_profile_exists
-------+-----+------+---------------+-----------+--------------+---------------+------------+------+---------------------
66508 | 3 | Gott | | | | | | |
0 | | Gott | | | | | | |
Außerdem gibt es noch die lustige Eigenheit, dass sowohl my.mods.de/Name und my.mods.de/UID funktionieren - aber numerische Nutzernamen sind ja nicht verboten. Siehe: http://my.mods.de/21 (UID=1166212).
Was diese nicht-existierenden Nutzer angeht, ich vermute ganz stark, dass in der Posts-Tabelle vom Forum Nutzer als username
und uid
abgebildet werden/wurden (deswegen auch die alten Nutzernamen in alten Posts). Wenn die Abfrage dann per Outer Join auf die User-Tabelle läuft, gibt es entsprechende NULLs für nicht-mehr existierende Nutzer.
Hach, dieses Forum <3
Ich hatte so eine ähnliche Erinnerung, aber es nicht direkt gefunden
War echt schwer zu finden, in meinem PyPI-Account :D
Sorry, wenn ich euch mit Issues zuballere ohne selbst was zu leisten, aber Ideen habe ich immer viele bei sowas:
More to come.