Einloggen
[c] [meta] [fefe]

/c/ – Pufferüberlauf


Antwort erstellen

(≤ 4)



[Zurück]

  • [l] -lowfat Felix Thu, 18 Feb 2021 19:27:07 GMT Nr. 47100
    PNG 549×215 78.9k
    CROSSPOST von >>>/fefe/47073
    aufgrund populärer nachfrage (>>>/fefe/47078) hier nochmals zum separat diskutieren.

    hat sich mal einer hier die lib tatsächlich angeschaut?
    die "abstrahiert" ja unix-netzwerkfunktionen "weg".

    macht dann aber trotzdem eine eigene lib-funktion pro unix-funktion, die man normalerweise aufrufen würde. also nicht weniger calls. heissen nur anders, sind aber nicht verständlicher, bloss schlechter googlebar.

    dafür sind da grundsätzlich weniger parameter pro funktion. wieso? weil die library internen state hat. statt das wie schlaue libs über ein state-struct (c++ würde man "this" nehmen) zu machen, ist der intern in der library versteckt und macht so multithreading kaputt.

    was der netzwerkteil tatsächlich machen sollte (aber nirgends so genannt wird), ist der job einer event-library. davon gibt es ein-zwei tatsächlich brauchbare. falls einer je sich die library antun wollen würde, spare er sich die mühen und schmerzen und suche er nach libevent oder libuv.

    natürlich sind da zusätzlich in schöner djb-manier noch ein dutzend andere logische libraries in der gleichen lib drin, weil fick dich du bekommst nur alles aufsmal.

    ahja, und wie üblich zu erwähnen: unix-funktionen sind in manpages schön dokumentiert, auch die anderen event-funktionen verfügen über hilfreiche doku. doku von fettlib besteht aus mitgelieferten manpages, die plusminus sagen "bridge(): /* this is bridge */". wenn du wissen willst, was wie in welcher reihenfolge aufgerufen werden soll, musst du trotzdem den unix-netzwerk-funktionsstack kennen, um das zu verstehen.

    hab inzwischen this_is_bridge.png gefunden, allerdings in der russischen version weil zu faul zum kroppen.
  • [l] Felix Thu, 18 Feb 2021 19:28:00 GMT Nr. 47101 SÄGE
    OT: es möge mir jemand erklären, wie kreuzlinks funktionieren hier
  • [l] Felix Thu, 18 Feb 2021 20:11:21 GMT Nr. 47106 SÄGE
    >>47101
    Die Pfostennummern sind hier global, deshalb einfach >>47073
  • [l] Felix Thu, 18 Feb 2021 20:55:42 GMT Nr. 47111 SÄGE
  • [l] Felix Thu, 18 Feb 2021 22:31:54 GMT Nr. 47124
    JPG 1377×1000 109.4k
    bei mir fängt es schon damit an, dass der Dicker auf seiner Page gar nicht schreibt, was lowfat wohl ist, was es macht und wofür das gut ist.
  • [l] Felix Fri, 19 Feb 2021 03:35:43 GMT Nr. 47134
    >>47124
    djb-logik: alles, was irgendwer irgendwann für webservice-zeugs brauchen könnte, in eine library gepackt.
    string-manipulation, file i/o, und diverse andere dinge. hauptteil ist wie im ersten pfosten erwähnt eine network-event-library, so wie libevent.
  • [l] Felix Fri, 19 Feb 2021 10:48:05 GMT Nr. 47150
    Die Formatierungs- und Parser-Funktionen für dynamische Strings sind ja durchaus ganz nett. Neben dem akademischen Aha-Erlebnis wurde die gewisse Eigenwilligkeit von Bernstein-Code schon an anderer Stelle erwähnt, z. B. http://www.and.org/vstr/comparison
    >Pro: Infinitely better implementation than the one in libowfat. Interesting to look at, for a view of the world where each function really does do only one thing (highly recommended to read).
    >Con: DJB style tends to be somewhat hard for other people to use, it's also impossible to do things like i18n and keep your sanity... due to printf() being a bunch of small functions. There are more than a few useful functions that are in qmail that aren't in daemontools, so aren't available to use (the headers haven't been updated).
    >Notes: As with all DJB code though, the API is written as a set of small atomic operations. For instance, printf-like functionality is implemented over 12 different functions named fmt_* (which don't check for overflows, but some are also reimplemented as stralloc functions). This design makes using the API much more clumsy, for a minor speedup, makes doing i18n almost impossible and goes directly against "premature optimization is bad".
    >It's worth nothing that although the stralloc functions deal with dynamic memory, a lot of the other function ignore bounds checking and/or assume things are terminated with a '\0' character.
  • [l] Felix Fri, 19 Feb 2021 12:09:47 GMT Nr. 47163
    >>47134
    Mein Lieblingsteil ist die Konstantendatenbank (cdb_init et al [0]). Wofür zum Fick?

    Aber hey, es ist Jammern auf hohem Niveau. Man vergleiche das mal mit Bibliotheken wie Boost. libdjb/libowfat hat relativ wenig Bloat. Manches wirkt aber irgendwie nicht so ganz durchdacht.

    [0] https://linux.die.net/man/3/cdb_init
  • [l] Felix Fri, 19 Feb 2021 13:49:15 GMT Nr. 47171
    >>47150
    ja, es wär halt schön brauchbar, wenn das zehn libraries wären statt einer:
    - datenbank
    - andere datenbank
    - string-manipulation
    - file i/o
    - network event
    - ...

    immerhin ist libtai standalone.
  • [l] Felix Fri, 19 Feb 2021 14:05:24 GMT Nr. 47176
    >>47163
    das ist eine hierarchische hashtable, siehe hier:
    http://www.unixuser.org/~euske/doc/cdbinternals/index.html

    oder im modernen sprachgebrauch: key-value-store.
  • [l] Felix Fri, 19 Feb 2021 15:03:41 GMT Nr. 47194
    >>47176
    Es ist halt nur relativ nutzlos, weil es read-only ist. Ich wüsste einfach nicht, wofür man das verwenden sollte. Schon gar nicht in einer Netzwerklib.
  • [l] Felix Sat, 20 Feb 2021 09:18:47 GMT Nr. 47248
    hfhhgdfhgf
  • [l] Felix Sat, 20 Feb 2021 21:12:57 GMT Nr. 47276
    >lowfat
    Was ist das für 1 Dateisystem?
  • [l] Felix Sat, 20 Feb 2021 23:54:09 GMT Nr. 47278
    >>47100
    >mm2ubvrxcgedb2pz6qw6rn_bxka.png
    я конечно понимаю, это мост и все дела. но куда делась закрывающая кавычка и тело парня? или это шутка со смыслом такая?
  • [l] Felix Sun, 21 Feb 2021 21:18:19 GMT Nr. 47301
  • [l] Felix Mon, 22 Feb 2021 09:25:50 GMT Nr. 47328
    JPG 745×185 40.4k
    >>47276
    FAT[0] ist kein Dateisystem sondern eine Datenstruktur um die ad hoc so etwas ähnliches wie ein Dateisystem gestrickt wurde.
    --
    [0] so wie alle ihre Nachfolger wie VFAT, FAT32 e.t.c (außer exFAT).
  • [l] Wo führt das alles hin? Felix Mon, 22 Feb 2021 09:31:06 GMT Nr. 47329
    JPG 604×497 143.0k
    >>47278
    Guckst du Bild nebenstehend.
  • [l] Felix Mon, 22 Feb 2021 12:47:14 GMT Nr. 47336
    >>47328
    DOS ist am Ende auch nur eine Bibliothek für die Datenträgerdienste der IBM-PCs und kompatibler Computer (mit der Möglichkeit ab Version 3.10, diese durch Software-Treiber etwa für CD-Laufwerke und Netzwerkzugriff zu ergänzen), die ein Startprogramm in Form der Befehlszeile mitbrachte (ähnliches findet man in Form des Rump-Kernels bei NetBSD, das ein ganzes Unix in eine Laufzeitumgebung verpackt). Genannte Dateisysteme sind das Format ihrer Persistenzschicht, das sich nicht umsonst in ähnlicher Form bei exFAT für Speicherkarten und im Verbundbinärformat [MS-CFB] wiederfindet, das z. B. als Struktur für das binäre Dokumentenformat von MS Office 97-2003 dient.
  • [l] Felix Mon, 22 Feb 2021 13:42:03 GMT Nr. 47338
    >>47336
    I'd just like to interject for a moment. What you're referring to as Linux, is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

    Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called "Linux", and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.

    There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called "Linux" distributions are really distributions of GNU/Linux.
  • [l] Felix Tue, 23 Feb 2021 00:08:28 GMT Nr. 47377 SÄGE
    >>47338
    GNU is cancer, Ritchi.
  • [l] Felix Thu, 25 Feb 2021 01:53:51 GMT Nr. 47546 SÄGE
    JPG 960×960 134.7k
    >>47377 nein du.
    Stahlmann ist unser Herr und Retter.

    oder gehörst du etwa zur Blauhaarbrigade?
  • [l] Felix Thu, 25 Feb 2021 04:13:08 GMT Nr. 47552 SÄGE
    >>47328
    danke für den bildzuschnitt, felix
  • [l] Felix Wed, 03 Mar 2021 00:11:05 GMT Nr. 47854
    JPG 474×368 25.5k
  • [l] Felix Fri, 16 Sep 2022 17:40:52 GMT Nr. 80890
    Stoss.
  • [l] habs Felix Sun, 04 Feb 2024 21:09:30 GMT Nr. 111168
    >>47194
    jahre später will man einen mehlservierer aufsetzen und stolpert über ebenjene datenbank.

    cdb wird von postfix verwendet als eine von mehreren optionen für datenbanken. siehe [1]

    eine cdb muss neu generiert werden, wenn sich der inhalt ändern sollte (btree, hashtable usw. übrigens auch), entsprechend ist das sinnvoll für daten, die sich selten ändern. wichtig ist aber, dass das lookup schnell ist, da glänzen dann solche auf lesezugriff optimierten datenstrukturen im vergleich zum request an die externe mysql-db, wo normale userdaten abgefragt werden.

    beispiele zur verwendung von cdb:
    - mapping von adressen auf ziel, die intern weitergeleitet werden sollen (root@example.com -> sysadmins@lists.example.com)
    - liste von adressen, für die der spamfilter übersprungen wird (zB. postmaster@)

    [1] https://www.postfix.org/DATABASE_README.html#types
  • [l] Felix Sun, 04 Feb 2024 23:24:21 GMT Nr. 111172
    >>111168
    Das macht tatsächlich halbwegs Sinn. Wenngleich ich mir nicht sicher bin, ob der typische Mailserver wirklich so viel Traffic bekommt, dass es da auf solche Mikrooptimierungen ankommt und es eine normale Hashtabelle o.ä. nicht auch getan hätte. Naja, vielleicht hat es in den 90ern Sinn gemacht.

    Auch: Warum postfix und nicht qmail?
  • [l] Felix Tue, 06 Feb 2024 17:25:06 GMT Nr. 111252
    >>111172
    >Wenngleich ich mir nicht sicher bin, ob der typische Mailserver wirklich so viel Traffic bekommt, dass es da auf solche Mikrooptimierungen ankommt und es eine normale Hashtabelle o.ä. nicht auch getan hätte.
    Naja, Postfix ist halt auch für Anbieter geeignet, die das halbe Internet versorgen.
    >Warum postfix und nicht qmail?
    Wegen der ganzen ungepatchten Sicherheitslücken?
  • [l] Felix Tue, 06 Feb 2024 17:40:57 GMT Nr. 111257
    >>111252
    >Wegen der ganzen ungepatchten Sicherheitslücken?
    Das ist unmöglich. Der Kot von djb ist perfekt.


[Zurück]
[c] [meta] [fefe]