Week 41 / 2022
OS:3EP: Segmentation
- Bit manipulation in C? _ hacker's delight book, bits.pdf
- Memory Segmentation
- Dynamic Storage Allocation: A Survey and Critical Review paper
- Memory Management Reference!
- Slab Allocator
- understanding
glibc malloc
- Understanding the Linux Virtual Memory Manager book
Dynamic Storage Allocation: A Survey and Critical Review paper
- Describe a variety of memory alloceator designs and point out issues rele- vant to their design and evaluation
- conventional dynamic memory allocators. By "conventional" we mean allocators used for general purpose "heap" storage, where the program can request a block of memory to store a program object, and free that block at any time.
- An allocated block is typically used to store a program "object"
- Locality of reference is increasingly important, as the difference between CPU speed and main memory (or disk) speeds has grown dramatically, with no sign of stopping.
Paging
Memory Management Reference
- this reference mostly concerned with application memory management.
- Memory management is usually divided into three areas, although the distinctions are a little fuzzy: Hardware, OS, Application
Edgedb
-
Renamed project directory, and got the error of
Project is not initialized.
Runedgedb project init
? Solution: runedgedb project init
, it will asks you to specify the name of theinstance
, then you assign the old one. find it byedgedb instance list
-
Schema very cool.
-
prisma documentation has a very infomative documentation
-
raw SQL vs. query builders (function as a templating system for querying) vs. and ORMs (provides an object-oriented interface to data within the database. different strategies to map between application and database structures (active record pattern and the data mapper pattern.) drawbacks: Object relational impedance mismatch that makes faithful translation between the representations difficult or impossible. ORM is the vietnam of cs see this)
-
DB/Schema migration. Migrations manage incremental, often reversible, changes to data structures in a programmatic way. The goals of database migration software are to make database changes repeatable, shareable, and testable without loss of data. Generally, migration software produces artifacts that describe the exact set of operations required to transform a database from a known state to the new state. Allow database schemas to evolve as requirements change. Migrations can also go poorly if they are applied to a database that is in a different state than assumed. Changing between migration tools can be difficult without a clean break between the previous and current generation of migration files (very tool specific).
-
what is
.dockerignore
? files and directories that you want to exclude when building a Docker image. -
difference between
expose
andports
in docker-compose? By default, Docker Compose sets up a dedicated network for the defined containers, enabling communication between them. As a result, we can create and run services with a given configuration file using a single command. ports: Expose ports. Either specify both ports (HOST:CONTAINER), or just the container port (a random host port will be chosen), mapping between the host server and Docker container.. will be shared among different services started by the docker-compose. will be exposed to the host machine to a random port or a given port. expose: Expose ports without publishing them to the host machine - they’ll only be accessible to linked services. Only the internal port can be specified. -
EDGEDB_SERVER_SECURITY=insecure_dev_mode
, -
Bootstrapping EdgeDB instance on the local volume...
: When an EdgeDB container starts on the specified data directory or remote Postgres cluster for the first time, initial instance setup is performed. This is called the bootstrap phase.
Tools
hexyl
hexadecimal editor/viewer.strace
Handling directories in C
<ftw.h>