Du bist nicht eingeloggt! Möglicherweise kannst du deswegen nicht alles sehen.
  (Noch kein mods.de-Account? / Passwort vergessen?)
Zur Übersichtsseite
Hallo anonymer User.
Bitte logge dich ein
oder registriere dich!
 Moderiert von: Atomsk, Maestro, statixx, Teh Wizard of Aiz


 Thema: pOT-lnformatik, Mathematik, Physik XXIII
« erste [1] 2 3 4 5 ... 26 nächste » letzte »
erste ungelesene Seite | letzter Beitrag 
Oli

AUP Oli 21.12.2018
Das hier ist *nicht* der Informatiker helfen PC-Neulingen Thread!



Hier tummelt sich alles, was mit Informatik, Mathematik oder Physik zu tun hat. Bei Fragen, Diskussion und gegenseitigem Schulterklopfen bis Trösten, das über den Erklärbär hinaus geht, wird hier geholfen. Oder verwirrt. Oder beides.

Wenn Hilfe gegeben wurde, die über bloßes Nachrechnen hinaus geht, freut man sich hier auch gerne, wenn das irgendwo genauer gelöst wurde (Übungen, Vorlesungen, Bücher, ...) und der Beholfene davon erfährt.

Die Wahrscheinlichkeit, nichts zu verstehen, steigt mit jedem Post logarithmisch. Der Aufwand, das zu ändern, ist o(Life). Weiterlesen geschieht auf eigene Gefahr und riskiert die persönlichen sprachlichen und sozialen Fähigkeiten. Zu den Nebenwirkungen gehören Versuche, um 5:00 morgens vorm Schlafengehen noch P=NP zu zeigen, die Goldbach-Vermutung zu beweisen oder das Axino zu finden.

Grundlegende Hilfen zur Diskussion:
n-1 - Der Alte.
n+1 - Der Nächste.
- Wer TeX im Forum braucht, kann das jetzt auch über [tex][/tex]
Spoiler - markieren, um zu lesen:

Online-TeX - Alte Lösung: Wenn man mal eben eine Formel im Forum nicht in ASCII-Art darstellen will.

Detexify - Um das Gekritzel aus der Vorlesung mit obigem Link nutzbar zu machen. (Zeichnung->TeX-Symbol)
LaTeX - Für alles, was über das Forum hinausgeht (und man sich in was anderes als Office einarbeiten will/muss)
XKCD - Unsere Bibel
PHD Comics
Abstruse Goose - Weiterer Zeitvertreib (nicht mehr weitergeführt seit 2013 oder so)
Geek and Poke - Webcomic für Codetipper
Wikipedia - Eine gute erste Anlaufstelle. Für fast alles.
arXiv - Eine zweite Anlaufstelle mit doofer Suche
Wolfram Alpha - Der praktische Rechnerersatz
Unspeakable Vault of Doom - In Ermangelung eines passenderen Bildes für den Thread wird erstmal das für Foren gedachte Bild vom UVOD verwendet.)

-----------------

verwandte Threads:
Studienthread
(Hobby-)Astronomie

-----------------

IRC-Channel:
#potpimp auf freenode.net
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 05.04.2020 16:39]
05.04.2020 8:59:44 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Ich hab was gebaut: http://bbdb.jomx.net/

Eine Volltextsuche fürs pOT.

- Scraper->PostgreSQL->elastic search
- Django, django-elastic-dsl, bootstrap, gunicorn
- Hetzner cloud INstanz mit 4GB RAM, 2vCores, 40GB Platte

Das ganze Forum sind ca. 25GB in der DB, elastic braucht erstaunlich nur ca. 5GB.

Im Textfeld ist folgende Query Syntax möglich:

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html

/e: Den Code will ich erstmal nicht veröffentlichen, sonst fängt jeder an zu scrapen und das FOrum ist bei mir schon ein bisschen hakelig geworden. Bei Interesse, PM.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Oli am 05.04.2020 9:04]
05.04.2020 9:03:12 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Wraith of Seth

wraith_of_seth
...
Eine Volltextsuche fürs Forum? Früher gepostet? Der hier soll's sein!

Und ich glaube, wir hatten noch nicht die really habitable zone und die neue Raumtemperatursupraleitung. 'Tis the season on ArXiV.

The morality of work is the morality of slaves, and the modern world has no need of slavery.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Wraith of Seth am 05.04.2020 11:51]
05.04.2020 11:48:48 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Vorhang

Arctic
Oli, ich glaub, du musst den Link zum Alten (von Danzelot aufgemacht) noch aktualisieren.

https://forum.mods.de/thread.php?TID=217266
05.04.2020 16:36:35 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Danke, ist geschehen.
05.04.2020 16:39:27 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Vorhang

Arctic
Und gleich noch 'ne Frage interessehalber hinterher: Wenn du solche Projekte machst (Potdroid war ja auch schon eins), sprichst du das dann mit der Forenleitung im Vorhinein ab, oder bist du einfach mit (halbwegs vernünftigem Rate Limiting) hergegangen und hast einmal das ganze Forum gescraped?

// Danke! Das ist sehr geil.
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Vorhang am 05.04.2020 17:24]
05.04.2020 16:42:56 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
pOTDroid war nicht abgesprochen, das macht ja nichts böses, vor dem scrapen habe ich enos gefragt.
05.04.2020 17:02:22 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Lightspeed

AUP Lightspeed 20.06.2011
In wie fern fällt die IP-Adresse in die DSGVO, wenn ich anhand der IP-Adresse die Sprachauswahl der Seite durchführen will. (IP aus DACH = Deutsche Seite, sonst Englische Seite).
Muss man da was besonderes beachten?
06.04.2020 11:46:47 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
Wenn du sie nicht speicherst ist die dsgvo irrelevant, oder nicht? Speichern solltest du sie eh nicht.
06.04.2020 11:47:45 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
b4ckspin

tf2_medic.png
Ich möchte gerne bewerkstelligen, dass wenn ich im Terminal in einen Ordner wechsle und dieser ein git repo ist, automatisch ein git pull ausgeführt wird.

Bisherige Versuche mit alias binds haben alle in nicht git repo Ordnern Output produziert den ich nicht haben will.

-> alias cd = "cd & touch .git & git pull"
-> alias cd="cd $@ & ls .git 2>&1 > /dev/null & git pull"
und Variationen

--
Benutze OSX + zsh

Habs Breites Grinsen
add-zsh-hook -Uz chpwd (){ [ -d ".git" ] && git pull;}
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von b4ckspin am 06.04.2020 15:20]
06.04.2020 14:40:29 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
Ich versuch gerade mit Spring mein erstes Projekt zusammenzubauen und scheitere gerade den Login von Android aus zu verwenden.

 
Code:
StringRequest request = new StringRequest(Request.Method.POST, "http://192.168.0.249:8080/login", response -> {
                ...
            }, error -> {
                ...
            }) {
                @Override
                protected Map<String,String> getParams(){
                    Map<String,String> params = new HashMap<>();
                    params.put("username", usernameEditText.getText().toString());
                    params.put("password", passwordEditText.getText().toString());
                    return params;
                }
            };


Den Request setze ich per Volley von Android aus ab.
Aus mir unerfindlichen Gründen, triggert das allerdings immer die GET-route von "/login", was im Debug mode auch geloggt wird:

 
Code:
2020-04-08 10:52:21.392 DEBUG 8398 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet        : GET "/login", parameters={}
2020-04-08 10:52:21.393 DEBUG 8398 --- [nio-8080-exec-8] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.web.servlet.ModelAndView grocery.controller.LoginController.login()
2020-04-08 10:52:21.393 DEBUG 8398 --- [nio-8080-exec-8] o.s.w.s.v.ContentNegotiatingViewResolver : Selected '*/*' given [*/*]
2020-04-08 10:52:21.397 DEBUG 8398 --- [nio-8080-exec-8] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2020-04-08 10:52:24.409 DEBUG 8398 --- [io-8080-exec-10] o.s.web.servlet.DispatcherServlet        : GET "/login", parameters={}
2020-04-08 10:52:24.410 DEBUG 8398 --- [io-8080-exec-10] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.web.servlet.ModelAndView grocery.controller.LoginController.login()
2020-04-08 10:52:24.411 DEBUG 8398 --- [io-8080-exec-10] o.s.w.s.v.ContentNegotiatingViewResolver : Selected '*/*' given [*/*]
2020-04-08 10:52:24.413 DEBUG 8398 --- [io-8080-exec-10] o.s.web.servlet.DispatcherServlet        : Completed 200 OK


Mit dem Browser per Formular tut der ganze Login.
Was mich zusätzlich verwirrt: Im Android Network Profiler wird der ausgehende Request als POST angezeigt. Die Antwort kommt aber von der GET-Route.

Was genau überseh ich hier? Fehlen da irgendwelche Header(außer der Method), damit Spring das Ding auch als POST frisst?
08.04.2020 10:59:35 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[smith]

AUP [smith] 29.07.2010
Hmhm, so direkt sehe ich keinen Fehler. Rein persönliche Erfahrung: Browser sind seeeehr clever und fehlertolerant geworden und haben mittlerweile sehr viel Magic, die Fehler gelegentlich verstecken.

Wenn du es nicht noch nicht probiert hast: Macht es einen Unterschied, den Content-Type explizit zu setzen, wie etwa hier: https://stackoverflow.com/questions/33573803/how-to-send-a-post-request-using-volley-with-string-body/42053866#42053866 ?

Ansonsten, ist es möglich ein größeres Code-Beispiel zu teilen?

Hier gibt es aber bestimmt auch Spring-Java-Android Cracks, ich bin sehr von akka-http verwöhnt Breites Grinsen
08.04.2020 12:09:35 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
Ich lass mal den Android Faktor raus, das ganze tut z.B per Insomnia auch nicht.

Das ist der Log, wenn ich den POST request abschicke, was auffällt ist, dass auf GET /login redirected wird ... und ich hab kein Plan woher die Logik kommt.

 
Code:
* Preparing request to [URL]http://192.168.0.249:8080/login[/URL]
* Using libcurl/7.67.0 OpenSSL/1.1.1d zlib/1.2.11 nghttp2/1.29.0
* Current time is 2020-04-08T10:10:44.671Z
* Disable timeout
* Enable automatic URL encoding
* Enable SSL validation
* Enable cookie sending with jar of 1 cookie
* Too old connection (219 seconds), disconnect it
* Connection 10 seems to be dead!
* Closing connection 10
*   Trying 192.168.0.249:8080...
* TCP_NODELAY set
* Connected to 192.168.0.249 (192.168.0.249) port 8080 (#11)

> POST /login HTTP/1.1
> Host: 192.168.0.249:8080
> User-Agent: insomnia/7.1.1
> Cookie: JSESSIONID=C2D7687F8C55026D36B4AB28A6BA9747
> Content-Type: application/x-www-form-urlencoded
> Accept: */*
> Content-Length: 49

| username=tobsucht%40tobsucht.de&password=tobsucht

* upload completely sent off: 49 out of 49 bytes
* Mark bundle as not supporting multiuse

< HTTP/1.1 302 
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Location: [URL]http://192.168.0.249:8080/login[/URL]
< Content-Length: 0
< Date: Wed, 08 Apr 2020 10:10:44 GMT


* Connection #11 to host 192.168.0.249 left intact
* Issue another request to this URL: 'http://192.168.0.249:8080/login'
* Switch from POST to GET
* Found bundle for host 192.168.0.249: 0x155045cb5e40 [serially]
* Can not multiplex, even if we wanted to!
* Re-using existing connection! (#11) with host 192.168.0.249
* Connected to 192.168.0.249 (192.168.0.249) port 8080 (#11)

> GET /login HTTP/1.1
> Host: 192.168.0.249:8080
> User-Agent: insomnia/7.1.1
> Cookie: JSESSIONID=C2D7687F8C55026D36B4AB28A6BA9747
> Content-Type: application/x-www-form-urlencoded
> Accept: */*

* Mark bundle as not supporting multiuse

< HTTP/1.1 200 
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Content-Type: text/html;charset=UTF-8
< Content-Language: de-DE
< Transfer-Encoding: chunked
< Date: Wed, 08 Apr 2020 10:10:44 GMT


* Received 1084 B chunk
* Received 5 B chunk
* Connection #11 to host 192.168.0.249 left intact


Was er eigentlich machen sollte ist ein 302 auf "/" und ein Set-Cookie mit einer validen Session-id.
08.04.2020 12:16:26 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
[smith]

AUP [smith] 29.07.2010
Machst du den Redirect denn selber irgendwo im Code oder ist das genau die Logik, die du suchst?

302 ist halt so ein Statuscode, der eigentlich die Methode und den Body nicht ändern sollte, aber nicht jeder Client mag das. Siehe etwa hier:
- https://developer.mozilla.org/de/docs/Web/HTTP/Status/302
- https://tools.ietf.org/html/rfc7231#section-6.4.2

Kannst du das ändern auf z. B. 307?

Also im Moment scheint es mir so, dass du keinen Fehler im Client-Code hast, sondern der Server sich unerwartet verhält. Evtl. ist das ja nur eine Config-Sache.
/e: oder dein Client verarbeitet halt 302er unerwartet. Gibt es dazu evtl. Tickets oder Bugs?
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von [smith] am 08.04.2020 12:35]
08.04.2020 12:34:33 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Vorhang

Arctic
Nur zur Sicherheit: Bekommst du _irgendeinen_ POST valide durch den Server und die entsprechende Antwort? Falls ja: Was unterscheidet den geposteten Request von dem, der funktioniert. Wenn das auch nicht geht, würde ich vermuten, dass das Problem gar nicht bei deinem Request, sondern einer Fehlkonfiguration der Gegenstelle zu suchen ist.
08.04.2020 12:35:09 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
 
Zitat von [smith]

Machst du den Redirect denn selber irgendwo im Code oder ist das genau die Logik, die du suchst?



Ne, die muss irgendwo in Spring vergraben sein.

 
Zitat von Vorhang

Nur zur Sicherheit: Bekommst du _irgendeinen_ POST valide durch den Server und die entsprechende Antwort? Falls ja: Was unterscheidet den geposteten Request von dem, der funktioniert. Wenn das auch nicht geht, würde ich vermuten, dass das Problem gar nicht bei deinem Request, sondern einer Fehlkonfiguration der Gegenstelle zu suchen ist.



Ja, per Browser (form) tuts.

Das hier ist der Request aus dem Browser heraus:


Wie man sieht kommt auch ein 302 allerdings auf "/" und der Session cookie wird gesetzt.
08.04.2020 13:28:34 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Vorhang

Arctic
Ich glaube (ich hatte ein ähnliches Problem vor zwei Tagen mit einer REST-API), ich würde an deiner Stelle den Request, der funktioniert, genau so aus Firefox/Chrome (Entwicklertools) rauskopieren, wie er funktioniert (dazu in FF bspw. auf "Netzwerkanalyse"gehen, den Request abschicken und den ersten Eintrag ganzen Recordings mit Rechtsklick kopieren) und dann sukzessive den Header so lange im Code an dein initiales Beispiel annähern, bis es nicht mehr funktioniert, wie es im Browser funktioniert.

Abkürzen würde da noch gehen, in dem du sofort 50% der änderbaren Sachen änderst und schaust, ob es sofort nicht mehr geht. Dann weißt du, dass das Problem bei den 50% Änderungen dabei sein muss. Und so rekursiv weiter, bis du es eingegrenzt hast.
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von Vorhang am 08.04.2020 13:46]
08.04.2020 13:38:18 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
missmutig gucken
Oh wow.

Ich Idiot hab vergessen, dass die CSRF protection an ist und ich da nix mitschicke.

Wieviel Zeit ich für den Scheiss jetzt verplämpert hab...

Danke euch!
08.04.2020 13:54:27 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
Wie handelt man denn am Besten nen CSRF-Token in einer Android App?

Ich würde gerne nen Mechanismus haben wie im Cookie-Manager, der mir den Cookie automatisch aus dem Request rausholt und beim Abschicken von Requests wieder reinschiebt.

Der Standardmechanism in Spring erwartet, dass ich entweder einen "_csrf" Parameter oder einen "X-CSRF-TOKEN" bereitstelle. Gibts da was, um diese Parameter transparent füllen zu können, ähnlich wie beim Cookiemanager?

Bei der Suche nach einer Lösung bin ich dann darauf gestoßen, dass man in Spring das Tokenrepository selbst implementieren kann bzw. es gibt auch eine weitere Standardlösung. CsrfTokenRepository speichert den Token direkt im Cookie, wodurch man natürlich gar nix mehr unter Android machen müsste. Aber dann umgehe ich doch den gesamten Sicherheitsmechanismus des Tokens? Der Cookie wird ja automatisch z.B im Browser mitgeschickt, wenn mir jemand einen bösartigen Link unterschiebt ... wo steckt da der Sinn dahinter?

/Ist es am sinnvollsten für Apps eine eigene Auth Methode ins Backend zu integrieren, um diesen Quatsch zu umgehen?
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Renga am 08.04.2020 21:37]
08.04.2020 21:11:01 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
PutzFrau

Phoenix Female
Meine Ahnung wovon ihr talkt: 0

09.04.2020 0:20:09 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
FuSL

AUP FuSL 06.06.2009
 
Zitat von Renga

/Ist es am sinnvollsten für Apps eine eigene Auth Methode ins Backend zu integrieren, um diesen Quatsch zu umgehen?



Was auch immer du tust, nicht 'n Token hartcodiert hinterlegen, der einfach direkt der Admin-Token für das Backend ist, nur um ein paar read-only-API-Abfragen zu ermöglichen. Breites Grinsen

Das hab ich im vergangenen Jahr mal in einer App gesehen. Das ist nicht unbedingt die optimale Lösung. Hab ich gehört. Breites Grinsen

/fakeedit

Das hilft dir überhaupt nicht weiter, aber ich konnte mir's nicht verkneifen /o\
09.04.2020 0:56:37 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

Deutscher BF
(Ohne Gewähr)

CSRF funktioniert ja eigentlich nur, wenn jeder Request, der vom Browser verschickt wird, automatisch authentifizier wird. Der Grund dafür ist, dass ich als Skript auf evilcorp.net einen POST-XHR an "forum.mods.de/delete-my-account.php" schicken kann -- ich komme lediglich nicht an die Response (wegen Same-origin Policy). Der POST tut aber nur deswegen etwas, weil mein Browser hilfreicherweise meinen Login-Cookie mitschickt.

Wenn du dagegen z.B. eine REST API bastelst, und ein Auth-Token manuell über einen Header oder Parameter mitschickst, dann würde das gar nicht funktionieren und CSRF ist kein Problem. Letztendlich machen CSRF-Tokens genau das.
09.04.2020 20:35:17 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
 
Zitat von FuSL

 
Zitat von Renga

/Ist es am sinnvollsten für Apps eine eigene Auth Methode ins Backend zu integrieren, um diesen Quatsch zu umgehen?



Was auch immer du tust, nicht 'n Token hartcodiert hinterlegen, der einfach direkt der Admin-Token für das Backend ist, nur um ein paar read-only-API-Abfragen zu ermöglichen. Breites Grinsen




Äh, das ist klar. Breites Grinsen

 
Zitat von csde_rats

(Ohne Gewähr)

CSRF funktioniert ja eigentlich nur, wenn jeder Request, der vom Browser verschickt wird, automatisch authentifizier wird. Der Grund dafür ist, dass ich als Skript auf evilcorp.net einen POST-XHR an "forum.mods.de/delete-my-account.php" schicken kann -- ich komme lediglich nicht an die Response (wegen Same-origin Policy). Der POST tut aber nur deswegen etwas, weil mein Browser hilfreicherweise meinen Login-Cookie mitschickt.

Wenn du dagegen z.B. eine REST API bastelst, und ein Auth-Token manuell über einen Header oder Parameter mitschickst, dann würde das gar nicht funktionieren und CSRF ist kein Problem. Letztendlich machen CSRF-Tokens genau das.



Die Funktionsweise von CSRF ist grundsätzlich schon klar, meine Frage ging eher darum, wie man unterschiedliche Clients an so eine Backend Applikation andockt.

Nach einiger Recherche ist es denke ich am einfachsten für meine REST-API eine eigene Auth per Token anzubieten. Für Browser Zugriff hab ich aktuell noch den Standard Session Ansatz. Den will ich zwar auch noch rausschmeißen, aber erst später.

Zu den ganzen Authentication Möglichkeiten hab ich auch noch ne Frage, aber ich muss da erst nochmal konkret drüber nachdenken. Breites Grinsen
10.04.2020 18:58:40 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
SwissBushIndian

AUP SwissBushIndian 07.11.2011
JWT?
10.04.2020 19:36:24 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
 
Zitat von SwissBushIndian

JWT?



Ja genau, das ist der Plan.
11.04.2020 12:11:15 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

Deutscher BF
 
Zitat von Oli

Ich hab was gebaut: http://bbdb.jomx.net/

Eine Volltextsuche fürs pOT.

- Scraper->PostgreSQL->elastic search
- Django, django-elastic-dsl, bootstrap, gunicorn
- Hetzner cloud INstanz mit 4GB RAM, 2vCores, 40GB Platte

Das ganze Forum sind ca. 25GB in der DB, elastic braucht erstaunlich nur ca. 5GB.



Ich komme bei beiden auf nur so ca. die Hälfte - 11 GB im Postgres und ~3.5 GB Elastic. Fehlt da bei mir was? Breites Grinsen

Beim Elastic liegt es evtl. daran, dass ich iirc nur die Post-Texte und Thread-Titel indiziere und der deswegen weniger Daten speichern muss. Aber der große Unterschied beim Postgres wundert mich ein bisschen peinlich/erstaunt

SELECT COUNT(*) FROM posts; -> 15534188
SELECT COUNT(*) FROM threads; -> 187732
11.04.2020 18:32:35 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Oli

AUP Oli 21.12.2018
 
Code:
class BBUser(models.Model):
    uid = models.PositiveIntegerField(unique=True)
    member_since = models.DateTimeField(null=True)

class Username(models.Model):
    user = models.ForeignKey(BBUser, related_name="usernames", on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

class Bender(models.Model):
    user = models.ForeignKey(BBUser, related_name="benders", on_delete=models.CASCADE)
    aid = models.PositiveIntegerField(unique=True)
    url = models.CharField(max_length=255)

class Category(models.Model):
    name = models.CharField(max_length=255)
    cid = models.PositiveIntegerField(unique=True)

class Board(models.Model):
    name = models.CharField(max_length=255)
    category = models.ForeignKey(Category, related_name="boards", on_delete=models.CASCADE)
    bid = models.PositiveIntegerField(unique=True)

class Topic(models.Model):
    name = models.CharField(max_length=255)
    subtitle = models.TextField()
    hits = models.PositiveIntegerField(null=True)
    board = models.ForeignKey(Board, related_name="topics", on_delete=models.CASCADE)
    tid = models.PositiveIntegerField(unique=True)
    firstpost = models.OneToOneField('Post', related_name="firstpost_of", null=True, on_delete=models.CASCADE)

class Post(models.Model):
    topic = models.ForeignKey(Topic, related_name="posts", on_delete=models.CASCADE)
    board = models.ForeignKey(Board, related_name="posts", on_delete=models.CASCADE)
    title = models.CharField(max_length=255, null=True)
    pid = models.PositiveIntegerField(unique=True)
    text = models.TextField()
    time = models.DateTimeField()
    user = models.ForeignKey(BBUser, related_name="posts", on_delete=models.SET_NULL, null=True)
    quotes = models.ManyToManyField("self", related_name="quoted_by")
    edited_count = models.PositiveIntegerField()
    icon_id = models.PositiveIntegerField(null=True)
    username = models.ForeignKey(Username, null=True, on_delete=models.SET_NULL)


Im Elastic steht bei jedem Post noch topic, board, user mit drin, inklusive IDs und Namen/Titel.
11.04.2020 20:26:17 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Wraith of Seth

wraith_of_seth
traurig gucken
John Conway ist wohl an COVID-19 gestorben.

Deren Long Read über ihn ist durchaus empfehlenswert.

I am the terror that flaps in the night!
12.04.2020 8:20:16 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
csde_rats

Deutscher BF
Ich habe ne Theorie, wieso die bei mir so viel kleiner ist... ich hab vor einer Weile postgres geupgraded und nen Haufen Versionen übersprungen, deswegen per pg_dumpall und Dump neu einlesen. Wenn man Tabellen nach und nach befüllt und verändert, erzeugt das Overhead, der verschwindet, wenn man das aus einem Dump wiederherstellt. Ich hatte die auch als schonmal größer in Erinnerung gehabt, 15 oder 18 GB oder sowas.
12.04.2020 17:13:36 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
Renga

AUP Renga 18.12.2007
 
Zitat von SwissBushIndian

JWT?



Wie lassen sich diese Tokens denn in einem Client verwenden, der mit klassisch serverseitig gerenderten HTML templates arbeitet?

Jedes Tutorial, das ich finde, ist auf ein Reactive-Framework zugeschnitten. Da wird das Token eben bei jedem API-Call in den Request reingelegt und per zusätzlichem Refresh Token wird das Token periodisch erneuert.

Wie handhabt man jetzt z.B einen Link der einen GET Request inklusive Page Reload einleitet? Wie kann ich den Client authentifizieren?
13.04.2020 10:40:23 Zum letzten Beitrag
[ zitieren ] [ pm ] [ diesen post melden ]
 Thema: pOT-lnformatik, Mathematik, Physik XXIII
« erste [1] 2 3 4 5 ... 26 nächste » letzte »

mods.de - Forum » Public Offtopic » 

Hop to:  

Thread-Tags:
pimp 
Mod-Aktionen:
05.04.2020 13:23:20 red hat diesem Thread das ModTag 'pimp' angehängt.

| tech | impressum