Das längste Thema

  • Je mehr ich hier über Jitsi lese, desto weniger möchte ich so ein Teil irgendwo administrieren müssen!


    (Muss ich zum Glück auch nicht. Und werde ich freiwillig auch nicht machen.)

    Och naja, man muss erstmal seinen Ekel überwinden, dann geht es eigentlich... :P

    Das Ding hat gefühlt n Eigenleben - wenn man das halbwegs verstanden hat, hat man das Ding auch recht angenehm unter Kontrolle. ^^

  • Je mehr ich hier über Jitsi lese, desto weniger möchte ich so ein Teil irgendwo administrieren müssen!

    Man kann es zum Glück wie nen Docker Container behandeln, da es keine Nutzdaten gibt. Wegreißen und neu installieren wenns nen Update gibt. Die einzig wirklich funktionierende Strategie IMHO. Und der Grund wieso ich so viel Arbeit in eine Ansible Role gesteckt habe.

  • hat jemand was dagegen etwas an Stelle von

    if ((b == 0xC9) || (b == 0xCA) || (b == 0xCB) || (b == 0xCD) || (b == 0xCE) || (b == 0xCF)) { ... }

    einfach nur so

    if (((b & 0xF8) == 0xC8) && ((b & 0x03) > 0x00)) { ... }

    zu machen?

    f. beide gilt: _uint8_t b;

    Grüße / Greetings

    Walter H.


    RS 1000 SAS G8 xRAM; RS 500 SSD G8; S 1000 G7; VPS 200 G8 Akt.; Webhost. 1000 m. 75%

  • Ich würde den abgedeckten Wertebereich in diesem Fall in einen Kommentar übernehmen, um es Menschen mit "Hexadezimalschwäche" einfacher zu machen (ich zum Beispiel erfasse den Wertebereich der ersten Zeile deutlich schneller als ich ihn aus der zweiten Zeile herausrechne). Macht es beim Lesen dann nicht viel kürzer; interessante Frage wäre, ob moderne Compiler solche Optimierungen nicht bereits ebenfalls beherrschen.

  • Ob es überhaupt eine Optimierung im Sinne kürzerer Laufzeit ist, hangt ja auch davon ab, welche Werte die Variable b wie oft annimmt. Ist b =0xC9 zu 99%, dann dürfte die erste Abfrage sogar deutlich effizienter sein, weil zu 99% nach dem ersten Vergleich das Ergebnis bereits feststeht.

  • das gleiche würde man auch mit folgendem erreichen

    Code
    1. switch ( b ) {
    2. case 0xC9 :
    3. case 0xCA :
    4. case 0xCB :
    5. case 0xCD :
    6. case 0xCE :
    7. case 0xCF : {
    8. ...
    9. }
    10. }

    davon weiß ich, dass es compiler gibt, welche aus einer switch-Anweisung eine Tabelle bauen und darüber eine Schleife laufen lassen;


    tab klar, wenn ( b == 0xC9 ) sehr oft wahr ist, dann ist die erste Abfrage besser, dafür aber wenn die komplette Abfrage falsch ist,

    umso schlechter; weil ja alle Vergleiche ausgeführt werden müssen, um zu erkennen, daß keiner wahr ist;


    an einer anderen Stelle im Programm, habe ich ein paar Werte mehr, welche b annehmen kann ...

    Code
    1. if ((b == 0xC0) || (b == 0xC1) || (b == 0xC2) || (b == 0xC3) || (b == 0xC5) || (b == 0xC6) || (b == 0xC7) ||
    2. (b == 0xC9) || (b == 0xCA) || (b == 0xCB) || (b == 0xCD) || (b == 0xCE) || (b == 0xCF)) { ... }

    wobei hier kann man dem Optimizier etwas unter die Arme greifen, indem man nicht wie hier

    Code
    1. // 0xC0, 0xC1, 0xC2, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xCB, 0xCD, 0xCE, 0xCF
    2. if ((((b & 0xF0) == 0xC0) && ((b & 0x03) > 0x00)) || (b == 0xC0)) { ... }

    sondern wie hier klammert;

    Code
    1. // 0xC0, 0xC1, 0xC2, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xCB, 0xCD, 0xCE, 0xCF
    2. if (((b & 0xF0) == 0xC0) && (((b & 0x03) > 0x00) || (b == 0xC0))) { ... }

    warum?

    ist ((b & 0xF0) == 0xC0) falsch, kann (b == 0xC0) auch nur falsch sein;

    Grüße / Greetings

    Walter H.


    RS 1000 SAS G8 xRAM; RS 500 SSD G8; S 1000 G7; VPS 200 G8 Akt.; Webhost. 1000 m. 75%

  • Kann man unter Linux (Debian) ein Verzeichnis so "konfigurieren", dass darin erstellte Verzeichnisse User und Gruppe vom Verzeichnis annehmen?


    Also angenommen ich habe ein Verzeichnis mit user:staff

    Wenn user jetzt darin was erstellt, hat es von Haus aus user:user gesetzt. Es soll aber user:staff bekommen. (Und das bitte ohne ein zusätzliches chown)


    Habe das Problem gerade ehrlich gesagt zum ersten mal - wie macht man das? ^^

  • Mit dem setgid-b

    Wenn das Verzeichnis User und Gruppe user:staff hat dann einfach (sudo) chmod g+s darauf anwenden. (setzt das setgid bit)

    Neu darin angelegte Dateien und Unterverzeichnisse haben dann automatisch staff als Gruppe

  • Mit dem setgid-b

    Wenn das Verzeichnis User und Gruppe user:staff hat dann einfach (sudo) chmod g+s darauf anwenden. (setzt das setgid bit)

    Neu darin angelegte Dateien und Unterverzeichnisse haben dann automatisch staff als Gruppe

    Göttlich. Funktioniert, ich danke dir! :)

  • Auf meinem alten RPi 1, der von Wheezy auf Buster aktualisiert wurde, habe ich ein seltsames Problem: Der swappt plötzlich deutlich mehr, als er sollte X/


    RAM ist andauernd genug frei. Ursprünglich kam vm.swappiness=0 zum Einsatz, das habe ich mittlerweile auf 1 gesetzt. Ändert aber nichts, dass das Teil laut Munin andauernd Pages aus-/einlagert.


    Beim Kernel 3.x funktionierte das immer einwandfrei, dass er den Swap nur nutzt, wenn er den OOM-Killer starten müsste. Beim Kernel 4.19.97+ scheint das irgendwie nicht mehr zu klappen. Übersehe ich da irgendeine Änderung?

  • Ähnliches habe ich auf meinen Servern beim Umstieg von Stretch auf Buster gemerkt. Irgendwo wurde da mal im Kernel was geändert...


    Seitdem habe ich Swap nur noch da an, wo ich ihn auch unbedingt brauche.

  • Seitdem habe ich Swap nur noch da an, wo ich ihn auch unbedingt brauche.

    Das ist jetzt genau mein Problem: Einerseits hätte ich den schon gerne als Notreserve bei weniger als 500MB RAM. Aber ich will um jeden Preis vermeiden, dass mir die Swappartition die SD-Karte schrottet…


    Als Notlösung habe ich den Swap deaktiviert <X