enkore / potstats2

pOTStats 2.0, ein pOTsches Informationsportal
https://potstats2.enkore.de
European Union Public License 1.2
4 stars 1 forks source link

Brainstorming #2

Open janoliver opened 6 years ago

janoliver commented 6 years ago

Sorry, wenn ich euch mit Issues zuballere ohne selbst was zu leisten, aber Ideen habe ich immer viele bei sowas:

More to come.

enkore commented 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?

enkore commented 6 years ago

(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

enkore commented 6 years ago

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!)

enkore commented 6 years ago

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
enkore commented 6 years ago

Weiß wer, ob die Quotes in URL tags wirklich was tun ([url="http://..."]..), oder sind die rein kosmetisch?

enkore commented 6 years ago

https://github.com/enkore/potstats2/blob/8228e67502f7b116ab33bddea2d9ec90ff42a446/src/potstats2/db.py#L325-L333

An der Stelle kann man also noch mehr interessante Dinge tun, etwa, wie oft eine Seite pro $Zeit verlinkt wird.

enkore commented 6 years ago

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
...
janoliver commented 6 years ago

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

enkore commented 6 years ago

Ich hatte so eine ähnliche Erinnerung, aber es nicht direkt gefunden

enkore commented 6 years ago

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.

audax commented 6 years ago

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.

enkore commented 6 years ago

Jo, bei dem müsste man dafür eine "year" Spalte einfügen.

enkore commented 6 years ago

Gut, ein bisschen komplizierter als die Spalte einbauen und ein .filter(year=year) war es dann doch :D @ 8cb3d8d

enkore commented 6 years ago

Ggfs. kann es Sinn ergeben QuoteRelation analog zum PostLinks & LinkRelation Duo aufzuteilen.

audax commented 6 years ago

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.]

enkore commented 6 years ago

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

audax commented 6 years ago

Und im Frontend ist es auch schon eingebaut! \o/

enkore commented 6 years ago

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?

audax commented 6 years ago

Sehen sich äußerst ähnlich, jup.

enkore commented 6 years ago

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

enkore commented 6 years ago

Ich hatte so eine ähnliche Erinnerung, aber es nicht direkt gefunden

War echt schwer zu finden, in meinem PyPI-Account :D

https://pypi.org/project/mde_bbcode/