Compare commits

...

8 Commits

6 changed files with 80 additions and 34 deletions

View File

@@ -34,7 +34,7 @@ default += .dbs/map.fmt
include cmd.mk include cmd.mk
.dbs/head.rec: | .dbs/ $(lists) .dbs/head.rec: | .dbs/
printf '%s\n' '%rec: guide' > $@ printf '%s\n' '%rec: guide' > $@
printf '%s\n' '%key: path' >> $@ printf '%s\n' '%key: path' >> $@
printf '%s\n' '%type: requires rec guide' >> $@ printf '%s\n' '%type: requires rec guide' >> $@

5
cmd.mk
View File

@@ -2,8 +2,6 @@
cmds != recsel command.rec -t command -G bin -CP bin | sort -u cmds != recsel command.rec -t command -G bin -CP bin | sort -u
lists = $(patsubst %,lists/%.md, $(cmds)) lists = $(patsubst %,lists/%.md, $(cmds))
default += $(lists)
get_title = printf 'title: %s\n' '${1}' get_title = printf 'title: %s\n' '${1}'
get_tags = recsel -t $(basename $<) $< -G bin \ get_tags = recsel -t $(basename $<) $< -G bin \
-e 'bin = "$(1)"' -U -CP tag,bin | \ -e 'bin = "$(1)"' -U -CP tag,bin | \
@@ -20,9 +18,6 @@ $(lists): lists/%.md: command.rec | lists/
@printf '%s\n' '---' >> $@ @printf '%s\n' '---' >> $@
@$(call list_commands,$(basename $(notdir $@))) >> $@ @$(call list_commands,$(basename $(notdir $@))) >> $@
.PHONY: cmd
cmd: $(lists) ## Big lists of commands
.PHONY: function .PHONY: function
function: ## Output a search function for .bashrc function: ## Output a search function for .bashrc
${MAKE} --silent --touch query ${MAKE} --silent --touch query

View File

@@ -157,12 +157,37 @@ shell: sh
bin: journalctl bin: journalctl
tag: system tag: system
aim: Edit users in /etc/passwd directly
cmd: sudo vipw
note: You can't edit passwords with black magic.
shell: sh
bin: vipw
bin: sudo
tag: system
tag: users
aim: Edit groups in /etc/group directly
cmd: sudo vigr
note: You can't edit passwords with black magic.
shell: sh
bin: vipw
bin: sudo
tag: system
tag: groups
aim: Follow the `ssh` daemon service aim: Follow the `ssh` daemon service
cmd: journalctl -f -u sshd cmd: journalctl -f -u sshd
shell: sh shell: sh
bin: journalctl bin: journalctl
tag: system tag: system
aim: Get back terminal after ssh freezes remote machine
cmd: <Return>~.
shell: sh
bin: ssh
tag: system
tag: comfy
aim: Find errors since a date aim: Find errors since a date
cmd: date=2027-01-01 cmd: date=2027-01-01
+ journalctl --since=${date} --grep="EXT4-fs error" + journalctl --since=${date} --grep="EXT4-fs error"
@@ -170,18 +195,22 @@ shell: sh
bin: journalctl bin: journalctl
tag: system tag: system
aim: Limit the journal's size to 2 gigabytes aim: Limit the systemd's journal size to 2 gigabytes
cmd: journalctl --vacuum-size=2G cmd: journalctl --vacuum-size=2G
+ journalctl --disk-usage
shell: sh shell: sh
bin: journalctl bin: journalctl
tag: system tag: system
tag: logs
aim: Log the fact that you've installed your own `dnsmasq` on your system to `journalctl`, so that you can determine why your system's broken later aim: Log the fact that you've installed your own `dnsmasq` on your system to `journalctl`, so that you can determine why your system's broken later
cmd: logger "Installed new dnsmasq" cmd: logger "Installed new dnsmasq"
+ sudo journalctl -f + sudo journalctl -f
shell: sh shell: sh
bin: journalctl bin: journalctl
bin: logger
tag: system tag: system
tag: logs
aim: Convert markdown table to csv aim: Convert markdown table to csv
cmd: mlr --imarkdown --ocsv cat ${file}.md cmd: mlr --imarkdown --ocsv cat ${file}.md
@@ -218,8 +247,8 @@ cmd: grep -o "\b${word}\b" ${file}
bin: grep bin: grep
tag: search tag: search
aim: Reformat variable for shell input aim: Reformat text for shell input
cmd: printf "%q\n" "${variable}" cmd: printf "%q\n" "${text}"
bin: printf bin: printf
tag: xargs tag: xargs
tag: stdout tag: stdout

View File

@@ -16,23 +16,23 @@ Make a database for your boardgames, specifying only one field and value:
database=games.rec database=games.rec
n=Name n=Name
g=Vojvodina g=Vojvodina
touch $database touch ${database}
recins -f $n --value $g $database recins -f ${n} --value ${g} ${database}
recsel $database recsel ${database}
``` ```
Insert a few more, with the estimated playtime: Insert a few more, with the estimated playtime:
```sh ```sh
recins -f Name -v Saboter -f Playtime -v 30 $database recins -f Name -v Saboter -f Playtime -v 30 ${database}
recins -f Name -v Chess -f Playtime -v 30 $database recins -f Name -v Chess -f Playtime -v 30 ${database}
``` ```
View all games, or select one by number: View all games, or select one by number:
```sh ```sh
recsel $database recsel ${database}
recsel -n 0 $database recsel -n 0 ${database}
``` ```
Each game should note whether or not you have played it yet, so you can add that field and set the default to `yes`. Each game should note whether or not you have played it yet, so you can add that field and set the default to `yes`.
@@ -40,14 +40,14 @@ Each game should note whether or not you have played it yet, so you can add that
```sh ```sh
f=played f=played
v=yes v=yes
recset -f $f -a $v $database recset -f ${f} -a ${v} ${database}
``` ```
...but the field is wrong, it should have a capital letter: ...but the field is wrong, it should have a capital letter:
```sh ```sh
new_field=Played new_field=Played
recset -f $f --rename $new_field recset -f ${f} --rename ${new_field}
``` ```
## Read ## Read
@@ -55,20 +55,20 @@ recset -f $f --rename $new_field
Check how many records the database has: Check how many records the database has:
```sh ```sh
recinf $database recinf ${database}
``` ```
Look at just the games you've never played: Look at just the games you've never played:
```sh ```sh
recsel --expression="Played = 'no'" $database recsel --expression="Played = 'no'" ${database}
``` ```
Print how many, then just print the names: Print how many, then just print the names:
```sh ```sh
recsel -e "Played = 'no'" --count $database recsel -e "Played = 'no'" --count ${database}
recsel -e "Played = 'no'" --print=Name $database recsel -e "Played = 'no'" --print=Name ${database}
``` ```
## Update ## Update
@@ -79,8 +79,8 @@ To change a game's `Played` field from `no` to `yes`, use `recset` to specify th
num=0 num=0
f=Played f=Played
value=yes value=yes
recsel --number=$num $database recsel --number=${num} ${database}
recset --number=$num -f $f --set=$value $database recset --number=${num} -f ${f} --set=${value} ${database}
``` ```
Find all games with a playtime of `30`, and set the field `Max_Players` to `4`. Find all games with a playtime of `30`, and set the field `Max_Players` to `4`.
@@ -102,22 +102,22 @@ Remove `Played` record from first game:
```sh ```sh
num=0 num=0
recset --number=$num -f Played --delete $database recset --number=${num} -f Played --delete ${database}
``` ```
You can comment the line instead of deleting it: You can comment the line instead of deleting it:
```sh ```sh
num=1 num=1
recset --number=$num -f Played --delete $database recset --number=${num} -f Played --delete ${database}
recsel $database recsel ${database}
cat $database cat ${database}
``` ```
Delete an entire record: Delete an entire record:
```sh ```sh
num=2 num=2
recdel --number=$num $database recdel --number=${num} ${database}
``` ```

22
networking/stop_email.md Normal file
View File

@@ -0,0 +1,22 @@
---
title: Stop email impersonating your domain
tags:
- networking
requires:
- networking/dns_records.md
---
There is nothing to stop scammers from sending email claiming to be coming from your domain.
And the older it gets, the more valuable it is for spoofing.
Just add these two TXT records to the DNS for your domain:
Name | Type | Value
:------|:----:|:-----
@ | TXT | v=spf1 -all
_dmarc | TXT | v=DMARC1; p=reject;
The first says there is not a single SMTP server on earth authorized to send email on behalf of your domain.
The second says that any email that says otherwise should be trashed.

View File

@@ -20,9 +20,9 @@ Keybind to exit this mode is `Ctrl+q`
## Extras ## Extras
- [Learning Vim](vim/vi.md) - [Learning Vim](writing/vim/vi.md)
- [Navigation](vim/navigate.md) - [Navigation](writing/vim/navigate.md)
- [Completion](vim/completion.md) - [Completion](writing/vim/completion.md)
- [Window Splits](vim/windows.md) - [Window Splits](writing/vim/windows.md)
- [Use vim bindings in bash](vim/vim_in_bash.md) - [Use vim bindings in bash](writing/vim/vim_in_bash.md)
- [A game to learn how to code in Vim](https://www.vim-hero.com/) - [A game to learn how to code in Vim](https://www.vim-hero.com/)