Das ist ja noch nicht mal ein Jahr, also praktisch gestern!
ist ja auch nicht sonderlich wichtig - die Ausgabe der Version steht ja noch nicht mal in der Manpage (abgesehn davon zeigts apt-show-versions ja an) ![]()
Gruss
Das ist ja noch nicht mal ein Jahr, also praktisch gestern!
ist ja auch nicht sonderlich wichtig - die Ausgabe der Version steht ja noch nicht mal in der Manpage (abgesehn davon zeigts apt-show-versions ja an) ![]()
Gruss
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.
Je mehr ich hier über Jitsi lese, desto weniger möchte ich so ein Teil irgendwo administrieren müssen!
Wir haben unseren Jitsi-Server wieder komplett platt gemacht und nutzen nun andere Tools. Allenfalls zwischendrin mal einen der öffentlichen jitsiserver (mit denen sich ja dann deren Admins rumärgern müssen
)
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;
Alles anzeigenhat 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;
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
switch ( b ) {
case 0xC9 :
case 0xCA :
case 0xCB :
case 0xCD :
case 0xCE :
case 0xCF : {
...
}
}
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 ...
if ((b == 0xC0) || (b == 0xC1) || (b == 0xC2) || (b == 0xC3) || (b == 0xC5) || (b == 0xC6) || (b == 0xC7) ||
(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
// 0xC0, 0xC1, 0xC2, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xCB, 0xCD, 0xCE, 0xCF
if ((((b & 0xF0) == 0xC0) && ((b & 0x03) > 0x00)) || (b == 0xC0)) { ... }
sondern wie hier klammert;
// 0xC0, 0xC1, 0xC2, 0xC3, 0xC5, 0xC6, 0xC7, 0xC9, 0xCA, 0xCB, 0xCD, 0xCE, 0xCF
if (((b & 0xF0) == 0xC0) && (((b & 0x03) > 0x00) || (b == 0xC0))) { ... }
warum?
ist ((b & 0xF0) == 0xC0) falsch, kann (b == 0xC0) auch nur falsch sein;
Traurig und lustig zugleich... ![]()
Traurig und lustig zugleich...
Cooler Sache ![]()
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? ![]()
whoami0501 ich denke was du suchst geht mit dem Setgid-Bit .
whoami0501 ist der User 'user' Mitglied der Gruppe 'staff'?
Mit dem setgid-b
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?
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 ![]()
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 ![]()
Dejavu.. Das mit dem Swapping-Verhalten bei neueren Kernels hatten wir doch schon öfters, oder?
Ich habe gerade nochmal gesucht. Hier war mein Beitrag zu dem Thema beim Buster Release. --> https://forum.netcup.de/administration…019/#post122314
Da ist auch eine Verlinkung zu einem Heise Artikel, der das erklärt.
Im Zweifelsfall kann man noch nach zram swappen.