If you, like me, resent every dollar spent on commercial PDF tools,
you might want to know how to change the text content of a PDF without
having to pay for Adobe Acrobat or another PDF tool. I didn't see an
obvious open-source tool that lets you dig into PDF internals, but I
did discover a few useful facts about how PDFs are structured that
I think may prove useful to others (or myself) in the future. They
are recorded here. They are surely not universally applicable --
the PDF standard is truly Byzantine -- but they worked for my case.
This is a short post that explains how to write a high-performance matrix multiplication program on modern processors. In this tutorial I will use a single core of the Skylake-client CPU with AVX2, but the principles in this post also apply to other processors with different instruction sets (such as AVX512).
Matrix multiplication is a mathematical operation that defines the product of
#include <stdio.h> | |
#include <sys/auxv.h> // For getauxval and AT_SYSINFO_EHDR | |
#include <string.h> | |
#include <elf.h> | |
typedef unsigned char u8; | |
void* vdso_sym(char* name) { | |
// in order to semantically inline getauxval one would have to bypass glibc, as the auxval is passed | |
// by the kernel to the bin's entrypoint used by the kernel |
The STM32CubeMX tool is written in portable java, but unfortunately it is distributed as a Windows executable embedded in a Windows installer.
To install it on Linux:
sudo java -jar SetupSTM32CubeMX-4.11.0.exe
- install the tool somewhere in your home, eg:
/home/you/stm32/cubemx
sudo chown -R you:you /home/you/stm32/cubemx
Header files in the Linux kernel are used for two purposes:
- to define interfaces between components of the kernel, and
- to define interfaces between the kernel and user space
== Internal modules ==
Internal interfaces between modules are defined anywhere in below linux/include/ or linux/arch/*/include/. Interfaces between source files in a single module should be put into the same directory as the module source code, which avoids polluting the global header space.
== External modules ==