Run sed on every Rust source file in a directory (GNU):
find . -type f -name '*.rs' -exec sed -i 's/\(DataflowDesc::new(\)None/\1/' {} \;
Above for BSD:
find . -type f -name '*.rs' -exec sed -i '' 's/\(DataflowDesc::new(\)None/\1/' {} \;
Convert a Unix timestamp to a local date/time (GNU):
date -d @1571862547
Above for BSD:
date -r 1571862547
Convert times to other locations (GNU) (h/t Jesse Luehrs):
TZ=America/Los_Angeles date -d 'TZ="Africa/Harare" 2pm'
Get number of CPUs (BSD):
sysctl hw.ncpu
Get all the nodes watched in an inotify instance (GNU/Linux):
for f in $(cat fdinfo/6 | perl -ne 'if (/ino:([0-9a-f]*)/) { print hex $1 ; print "\n" }'); do
sudo debugfs -R "ncheck $f" /dev/nvme0n1p1 2>/dev/null | awk 'BEGIN {d=1} {d=!d; if (d) {print $0}}'
done
Print a number with digit separator:
LC_NUMERIC=en_US.utf8 printf "%'.f\n" # On FreeBSD: LC_NUMERIC=en_US.UTF-8
Find what process is listening on a port (Linux):
sudo lsof -i :8080
Find all processes listening on ports:
sudo ss -ptnulw
Find executable files under current directory (GNU):
find . -type f -executable
Above for FreeBSD:
find . -type f -perm -u+x
Diff the output of two commands (bash/zsh):
diff <(ls) <(ls -a)
Check what package owns a file:
pacman -Qo `which tail`
Checkout the source for a a package:
asp checkout coreutils
Find files associated with a given package:
dpkg-query -L <package>
Check what package owns a file:
dpkg -S /bin/ls
Get source code for a package:
apt-get source xscreensaver
Change the local timezone:
sudo timedatectl set-timezone America/New_York
Get reverse dependencies of a package:
pkg info -r wayland
Print a package's install message:
pkg query %M sshguard
Search for a package:
pkg_info -Q gtk
Get installed reverse dependencies of a package:
pkg_info -R rust
Renew LetsEncrypt certificate:
certbot-3.6 renew service dovecot onerestart service nginx onerestart # And whatever else you might need to restart...
Install patches:
freebsd-update fetch freebsd-update install
Kill all running containers (h/t Brandon Maister):
docker kill $(docker ps -q)
Blow away a bunch of stuff (caches, unused volumes, etc):
docker system prune -a && docker volume prune
Patch a dependency from crates.io:
[patch.crates-io]
bar = { path = "/path/to/bar" }
Patch a dependency from GitHub:
# Note that the crate name (here `timely`) might differ from
# the repo name (here `timely-dataflow`).
[patch."https://github.com/TimelyDataflow/timely-dataflow"]
timely = { path = "/path/to/timely" }
Cross-compile:
sudo dnf install gcc-x86_64-linux-gnu CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_LINKER=x86_64-linux-gnu-gcc RUSTFLAGS="" cargo build --release --target x86_64-unknown-linux-musl
Delete a remote branch:
git push <remote> --delete <branch>
Check whether a commit is on a given branch:
git merge-base --is-ancestor <commit> <branch> && echo "it's there" || echo "nope"
Print the root directory of the repository:
git rev-parse --show-toplevel
Change the commit hash (e.g., to kick off a new CI run):
git commit --amend --no-edit
| Service | Port |
|---|---|
| Confluent Schema Registry | 8081 |
| Zookeeper | 2181 |
| Kafka | 9092 |
| SMTP | 25 |
| SMTPS | 465 |
| SMTP submission | 587 |
| IMAP | 143 |
| IMAPS | 993 |
| Confluent Control Center | 9021 |
| Grafana | 3000 |
| Hugo | 1313 |
| SQL Server | 1433 |
| Kafka Connect | 8083 |
| PostgreSQL | 5432 |
| Materialize | 6875 |
| OpenVPN | 1194 (UDP) |
Find out why startup is slow:
vim --startuptime out_file
Reload .vimrc:
:so $MYVIMRC
Trick to write a file as root:
:w !sudo tee %
Start with a different data directory:
CONFLUENT_CURRENT=/some/where confluent local start
Various tricks:
// sometimes clang is smarter than the verifier, and
// optimizes out a bounds check that the verifier needed.
//
// This function returns true if val1 < val2, and can't
// be optimized out.
static __always_inline bool force_lt(u64 val1, u64 val2) {
bool out;
asm volatile(
"%[out] = 1\n"
"if %[val1] < %[val2] goto 1f\n"
"%[out] = 0\n"
"1:\n"
: [out] "=&r"(out)
: [val1] "r"(val1), [val2] "r"(val2)
);
return out;
}
// Force logical shift right.
//
// clang sometimes compiles val / 2^k
// as val & -2^k, which the verifier can't cope with.
//
// Force it to compile as val >> k instead.
static __always_inline u64 force_lsr(u64 val, u64 shift) {
asm volatile("%0 >>= %1\n" : "+&r"(val) : "r"(shift));
return val;
}
Render Graphviz graph:
dot -T pdf < graph.dot > graph.pdf
Render this file:
rst2html < howtodo.rst > howtodo.html
Detach all other tmux clients:
tmux detach-client -a
OpenSSL equivalent of netcat:
openssl s_client -quiet -connect example.com:443
Decode a pprof file:
zcat ~/btv.pb.gz | protoc --decode=perftools.profiles.Profile ~/code/materialize/src/prof/src/pprof_types.proto -I ~/code/materialize