It's easy, just run sudo fwupdmgr get-updates
followed by sudo fwupdmgr update
.
The system needs to be on AC power to perform the update.
posted at: 22:07 | path: /configuration | permanent link
It's possible to just list multiple domains in opendkim.conf
which will all get signed with the same key indicated by KeyFile
and Selector
(as pointed out here).
# Sign for example.com with key in /etc/dkimkeys/dkim.key using # selector 'mail' (e.g. mail._domainkey.example.com) # hacky, multiple domains, all share the same key and the same DNS setup # so we also need mail._domainkey.bla.net and mail._domainkey.blub.org DNS records Domain example.com, bla.net, blub.org KeyFile /etc/dkimkeys/example.com.key Selector mail
A more complex way with individual mappins is described here.
A good way to test the setup is appmaildev.com's DKIM Test.
posted at: 10:10 | path: /configuration | permanent link
Debian unstable recently updates the PostSRSd to 2.0.11-1+b1, breaking stuff:
sender_canonical_maps = socketmap:unix:srs:forward sender_canonical_classes = envelope_sender recipient_canonical_maps = socketmap:unix:srs:reverse recipient_canonical_classes = envelope_recipient, header_recipient
/etc/postsrsd.conf r, /var/spool/postfix/** rwk,
posted at: 11:00 | path: /configuration | permanent link
IKEA has some smart home products: Zigbee light bulbs, a temperature sensor, several remote controller, and -- most importantly -- the Dirigera hub which allows to control the devices via an app or REST API. The hub supports the matter standard and lacks technical documentation (it has USB-C for power supply, an Ethernet plug and expects to local network with WiFi). A Python package, dirigera, is available.
First step is to generate a token (JWT) to enable access to the API, which requires pressing the "Action" button on the hub.
posted at: 18:05 | path: /projects | permanent link
We have a significant workload (> 50k CPU hours per year) on AWS EC2 instances running a Windows program. Since Linux instances are cheaper and easier to maintain (think Docker), we tried to get that Windows application running using Wine. A native Linux port is unfortunately not feasible, since the application depends on some closed-source libraries.
Initial benchmarks were not encouraging:
Platform | Runtime |
---|---|
Windows 11 | 479 s |
Linux 6.12 | 2636 s |
Wine offers nice logging/tracing abilities by setting the environment variable WINEDEBUG=+relay,+heap
.
This revealed far too many calls to heap allocation functions. Since the application is statically linked against the C runtime,
Wine's heap allocation function may be less optimized than the original Windows function or require more overhead.
Also perf top
points to Wine's heap_allocation_block
function.
mimalloc is a general purpose memory allocator with excellent performance.
For statically-linked programs, it is possible to override the global C++ new
and delete
operators by just
#including mimalloc-new-delete.h
in one source file.
Benchmarks for the same program/workload as above, statically linked with mimalloc:
Platform | Allocator | Runtime | Peak Memory |
---|---|---|---|
Windows 11 | default | 479 s | 12.6 GB |
Windows 11 | mimalloc v3.0.3 | 438 s | 12.2 GB |
Windows 11 | mimalloc v2.2.3 | 440 s | 12.9 GB |
Linux 6.12 | default | 2636 s | 14.3 GB |
Linux 6.12 | mimalloc v3.0.3 | crash | N/A |
Linux 6.12 | mimalloc v2.2.3 | 435 s | 12.4 GB |
The crash on Linux with mimalloc v3.0.3 is probably related to issue #1087 and due to the new page-map feature having trouble with low addresses of memory allocations (which Wine provides) -- looking forward to a fix!
posted at: 12:46 | path: /programming | permanent link