Merge branch 'dev' into vhs
This commit is contained in:
commit
30bc3b7055
21
Makefile
21
Makefile
@ -4,6 +4,8 @@ EDITOR ?= vi
|
|||||||
FZF != command -v sk || command -v fzy || command -v fzf || \
|
FZF != command -v sk || command -v fzy || command -v fzf || \
|
||||||
{ echo install a fuzzy finder && exit 1 ;}
|
{ echo install a fuzzy finder && exit 1 ;}
|
||||||
|
|
||||||
|
spill_contents = sed -e '1,/---/d'
|
||||||
|
|
||||||
help: ## Print the help message
|
help: ## Print the help message
|
||||||
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
|
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
|
||||||
sort | \
|
sort | \
|
||||||
@ -11,31 +13,38 @@ help: ## Print the help message
|
|||||||
|
|
||||||
articles != find * -type f -name "*.md"
|
articles != find * -type f -name "*.md"
|
||||||
|
|
||||||
categories != ls -d */
|
dirs != ls -d */
|
||||||
|
categories = $(patsubst %/, %, $(dirs))
|
||||||
|
|
||||||
databases = $(patsubst %/, .dbs/%.rec, $(categories))
|
databases = $(patsubst %, .dbs/%.rec, $(categories))
|
||||||
|
|
||||||
default += $(databases)
|
default += $(databases)
|
||||||
|
|
||||||
$(databases): .dbs/%.rec: %/ | .dbs/
|
$(foreach dir, $(categories), \
|
||||||
|
$(eval .dbs/$(dir).rec: $(wildcard $(dir)/*)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
$(databases): .dbs/%.rec: %/
|
||||||
$(info making $(@F))
|
$(info making $(@F))
|
||||||
mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
for entry in $(shell find $< -type f -name "*.md") ; do \
|
for entry in $(shell find $< -type f -name "*.md") ; do \
|
||||||
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
|
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
|
||||||
sed -e 's/\[ //' -e 's/ \]//' |\
|
sed -e 's/\[ //' -e 's/ \]//' |\
|
||||||
tr -d '"' ;\
|
tr -d '"' ;\
|
||||||
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
|
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
|
||||||
printf "file: %s\n\n" "$$entry" ;\
|
printf "file: %s\n\n" "$$entry" ;\
|
||||||
done >> $@
|
done > $@
|
||||||
for entry in $(shell find $< -type f -name "*.md"); do \
|
for entry in $(shell find $< -type f -name "*.md"); do \
|
||||||
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
recset $@ -e "file = '$${entry}'" -f wordcount --set-add="$$(wc -w < $${entry})" ;\
|
||||||
|
recset $@ -e "file = '$${entry}'" -f content --set-add="$$($(spill_contents) $${entry})" ;\
|
||||||
done
|
done
|
||||||
|
|
||||||
db.rec: $(databases)
|
db.rec: $(databases)
|
||||||
printf '%s\n' '%rec: guide' > $@
|
printf '%s\n' '%rec: guide' > $@
|
||||||
|
printf '%s\n' '%key: title' >> $@
|
||||||
printf '%s\n' '%type: wordcount int' >> $@
|
printf '%s\n' '%type: wordcount int' >> $@
|
||||||
printf '%s\n\n' '%sort: title' >> $@
|
printf '%s\n\n' '%sort: title' >> $@
|
||||||
cat $^ >> $@
|
recsel $^ >> $@
|
||||||
recsel $@ -e "requires != ''" -CR title,requires |\
|
recsel $@ -e "requires != ''" -CR title,requires |\
|
||||||
while read title requires; do \
|
while read title requires; do \
|
||||||
IFS=', ' && for provider in $$requires; do \
|
IFS=', ' && for provider in $$requires; do \
|
||||||
|
@ -20,6 +20,7 @@ recsel db.rec -q gpg
|
|||||||
recsel db.rec -e "title = 'ssh'"
|
recsel db.rec -e "title = 'ssh'"
|
||||||
recsel db.rec -e "title ~ 'ssh'"
|
recsel db.rec -e "title ~ 'ssh'"
|
||||||
recsel db.rec -e "title ~ 'bash'" -R title,wordcount
|
recsel db.rec -e "title ~ 'bash'" -R title,wordcount
|
||||||
|
recsel db.rec -m 1 -P content | less -R
|
||||||
```
|
```
|
||||||
|
|
||||||
# Style
|
# Style
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
title: "kernel"
|
|
||||||
tags: [ "Basics" ]
|
|
||||||
---
|
|
||||||
## Living Space
|
|
||||||
|
|
||||||
Kernel modules live in lib/modules/$(uname -r)
|
|
||||||
|
|
||||||
## Change
|
|
||||||
|
|
||||||
Load them with
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo modprobe ath9k
|
|
||||||
```
|
|
||||||
|
|
||||||
Or remove one with
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo modprove uvcvideo
|
|
||||||
```
|
|
||||||
|
|
||||||
The PC's irritating speaker beep can be really annoying. Disable it with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo modprobe -r pcspeaker
|
|
||||||
```
|
|
||||||
|
|
||||||
Permanently disable a module by blacklisting it in `/etc/modprobe.d`:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo 'blacklist pcspkr' > /etc/modprobe.d/*nobeep*.conf
|
|
||||||
```
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Base 16"
|
title: "Base 16"
|
||||||
tags: [ "Data" ]
|
tags: [ "data" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -5,5 +5,10 @@ tags: [ "data", "calendar", "daylight savings" ]
|
|||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
The UK government keeps an ics file with clock, [here](https://www.gov.uk/when-do-the-clocks-change/united-kingdom.ics).
|
The UK government keeps an `ics` file with clock.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
wget https://www.gov.uk/when-do-the-clocks-change/united-kingdom.ics
|
||||||
|
calcurse -i united-kingdom.ics
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -9,10 +9,10 @@ Install `opensmtpd` (or similar), then `ncat` or `nc` or `netcat` (this mysterio
|
|||||||
|
|
||||||
Start the `opensmtpd` service, then use netcat to speak with the mail-daemon:
|
Start the `opensmtpd` service, then use netcat to speak with the mail-daemon:
|
||||||
|
|
||||||
|
```sh
|
||||||
```
|
|
||||||
nc localhost 25
|
nc localhost 25
|
||||||
```
|
```
|
||||||
|
|
||||||
The computer should respond with code `220`, which means 'I am listening'.
|
The computer should respond with code `220`, which means 'I am listening'.
|
||||||
|
|
||||||
> 220 hex ESMTP OpenSMTPD
|
> 220 hex ESMTP OpenSMTPD
|
||||||
@ -40,7 +40,7 @@ Tell the mail daemon who you are in this format.
|
|||||||
|
|
||||||
Then tell it who you're sending to.
|
Then tell it who you're sending to.
|
||||||
|
|
||||||
```
|
```sh
|
||||||
RCPT TO: <www@dmz.rs>
|
RCPT TO: <www@dmz.rs>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ You will find the email under `/var/spool` or `/var/mail` or similar.
|
|||||||
|
|
||||||
If unsure, just take a part of your email, like `FRAGMENT="turn off server please"`, then `grep` for it:
|
If unsure, just take a part of your email, like `FRAGMENT="turn off server please"`, then `grep` for it:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo grep -r $FRAGMENT /var/spool/*
|
sudo grep -r $FRAGMENT /var/spool/*
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
title: "exiftool"
|
title: "exiftool"
|
||||||
tags: [ "Metadata" ]
|
tags: [ "metadata", "exifdata" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Find metadata.
|
Find metadata:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
exiftool image.jpg
|
exiftool "$file".jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
Find info on all images in current directory.
|
Find info on all `.png` images in current directory.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
exiftool -ext .png .
|
exiftool -ext .png .
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -19,22 +19,14 @@ You can make this recurring with the -r switch.
|
|||||||
|
|
||||||
And overwrite all metadata:
|
And overwrite all metadata:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
exiftool -all= -overwrite_original -ext jpg .
|
exiftool -all= -overwrite_original -ext jpg .
|
||||||
```
|
```
|
||||||
(NB: This does not work on pdf data. See [here](pdf_erasure.md) for erasing all pdf data)
|
(NB: This does not work on pdf data. See [here](pdf_erasure.md) for erasing all pdf data)
|
||||||
|
|
||||||
Or just GPS data:
|
Or just GPS data:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
exiftool -gps:all= *.jpg
|
exiftool -gps:all= *.jpg
|
||||||
```
|
```
|
||||||
|
|
||||||
You can also use the imagemagick tool:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
identify -verbose
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,24 +1,72 @@
|
|||||||
---
|
---
|
||||||
title: "git-lfs"
|
title: "git-lfs"
|
||||||
tags: [ "data" ]
|
tags: [ "data", "git" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
Install, and add with
|
Git Large File Storage ('LFS') needs to change your `~/.gitconfig` to check out those binary files:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
|
cat ~/.gitconfig
|
||||||
git lfs install
|
git lfs install
|
||||||
|
cat ~/.gitconfig
|
||||||
```
|
```
|
||||||
|
|
||||||
Then track some filetype with:
|
Then track some filetypes with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
git lfs track "\*.ttf"
|
cd $git_repository
|
||||||
|
ext=ttf
|
||||||
|
git lfs track "*.$ext"
|
||||||
```
|
```
|
||||||
|
|
||||||
Or a directory with:
|
Or a directory with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
git lfs track "images/"
|
git lfs track "images/"
|
||||||
```
|
```
|
||||||
|
|
||||||
All changes require adding `.gitattributes`.
|
Track the changes to `.gitattributes`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git status
|
||||||
|
git add .gitattributes
|
||||||
|
git commit -m "add $ext to lfs"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Bash Completion
|
||||||
|
|
||||||
|
If bash completion does not work, you'll have to add it:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git lfs completion bash | sudo tee /usr/share/bash-completion/completions/git-lfs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Trouble Shooting
|
||||||
|
|
||||||
|
You have some file "$FILE".png, which has some problem.
|
||||||
|
|
||||||
|
Check the filetype:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
file "$FILE".png
|
||||||
|
```
|
||||||
|
|
||||||
|
This should say the type is 'image'.
|
||||||
|
If it says the type is 'text', then this file is really just a reminder to `git-lfs` to check out that file.
|
||||||
|
|
||||||
|
Check `git-lfs` is expecting that file:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git lfs status
|
||||||
|
git lfs ls-files
|
||||||
|
```
|
||||||
|
|
||||||
|
...then try these commands, and check the filetype again:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git lfs fetch --all
|
||||||
|
git lfs fsck
|
||||||
|
git lfs checkout
|
||||||
|
git lfs status
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "git"
|
title: "git subtree"
|
||||||
tags: [ "data", "git", "subtree" ]
|
tags: [ "data", "git", "subtree" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "gpg"
|
title: "gpg"
|
||||||
tags: [ "data", "GPG" ]
|
tags: [ "data", "gpg" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
- [Setup](gpg/basics.md)
|
- [Setup](gpg/basics.md)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "gpg"
|
title: "gpg with vim"
|
||||||
tags: [ "vim", "data", "GPG" ]
|
tags: [ "vim", "data", "GPG" ]
|
||||||
requires: [ "GPG Basics", "vim basics" ]
|
requires: [ "GPG Basics", "vim basics" ]
|
||||||
---
|
---
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "groff"
|
title: "groff"
|
||||||
tags: [ "Data" ]
|
tags: [ "data", "logic" ]
|
||||||
---
|
---
|
||||||
# Basic Documents
|
# Basic Documents
|
||||||
|
|
||||||
|
@ -4,57 +4,49 @@ tags: [ "Data" ]
|
|||||||
---
|
---
|
||||||
Get the basic config:
|
Get the basic config:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
mkdir ~/.config/khard
|
mkdir ~/.config/khard
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
cp /usr/share/doc/khard/examples/khard/khard.conf.example ~/.config/khard.conf
|
cp /usr/share/doc/khard/examples/khard/khard.conf.example ~/.config/khard.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Short list
|
Short list
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard list
|
khard list
|
||||||
```
|
```
|
||||||
|
|
||||||
Longer list
|
Longer list
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard show
|
khard show
|
||||||
```
|
```
|
||||||
|
|
||||||
Show from addressbook 'work'
|
Show from addressbook 'work'
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard list -a work
|
khard list -a work
|
||||||
```
|
```
|
||||||
|
|
||||||
Make a new contact in address book 'family'
|
Make a new contact in address book 'family'
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard new -a family
|
khard new -a family
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard edit grampa
|
khard edit grampa
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard remove bob
|
khard remove bob
|
||||||
```
|
```
|
||||||
|
|
||||||
Move contact 'nina' from 'work' to 'home' address book.
|
Move contact 'nina' from 'work' to 'home' address book.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
khard move -a home nina -A work
|
khard move -a home nina -A work
|
||||||
```
|
```
|
||||||
|
|
||||||
## Advanced
|
|
||||||
|
|
||||||
Merge:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
khard merge [-a source_abook] [-u uid|search terms [search terms ...]] [-A target_abook] [-U target_uid|-t target_search_terms]
|
|
||||||
```
|
|
||||||
|
|
||||||
|
14
data/pass.md
14
data/pass.md
@ -1,42 +1,42 @@
|
|||||||
---
|
---
|
||||||
title: "pass"
|
title: "pass"
|
||||||
tags: [ "data" ]
|
tags: [ "data" ]
|
||||||
|
requires: "GPG Basics"
|
||||||
---
|
---
|
||||||
[Video instructions](https://www.hooktube.com/watch?v=hlRQTj1D9LA)
|
|
||||||
|
|
||||||
Setup [gpg](./gpg.md) keys.
|
Setup [gpg](./gpg.md) keys.
|
||||||
|
|
||||||
Show your gpg secret it:
|
Show your gpg secret it:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
gpg --list-secret-keys
|
gpg --list-secret-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
Then use the id number under `sec` to make a pass repo:
|
Then use the id number under `sec` to make a pass repo:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
KEY="$(gpg --list-secret-keys | grep -m 1 -A1 '^sec' | tail -n 1)"
|
KEY="$(gpg --list-secret-keys | grep -m 1 -A1 '^sec' | tail -n 1)"
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
pass init $KEY
|
pass init $KEY
|
||||||
```
|
```
|
||||||
|
|
||||||
To add a basic password, e.g. for `$WEBSITE`:
|
To add a basic password, e.g. for `$WEBSITE`:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
pass $WEBSITE
|
pass $WEBSITE
|
||||||
```
|
```
|
||||||
|
|
||||||
To insert a multiline password, e.g. with a login name:
|
To insert a multiline password, e.g. with a login name:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
pass add -m $WEBSITE
|
pass add -m $WEBSITE
|
||||||
```
|
```
|
||||||
|
|
||||||
Remove a password:
|
Remove a password:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
pass rm $WEBSITE
|
pass rm $WEBSITE
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
title: "pdf to txt"
|
title: "pdf to txt"
|
||||||
tags: [ "data", "pdf", "ocr" ]
|
tags: [ "data", "pdf", "ocr" ]
|
||||||
---
|
---
|
||||||
How to translate pdf book images to text (results are very poor, and will need lots of corrections).
|
|
||||||
|
How to translate pdfs to text (results are very poor, and will need lots of corrections).
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
@ -17,8 +18,8 @@ pdftoppm -png *file*.pdf test
|
|||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
for x in \*png; do
|
for x in *png; do
|
||||||
tesseract -l eng "$x" - >> *out*.txt
|
tesseract -l eng "$x" - >> out.txt
|
||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -44,6 +44,9 @@ recset -f "$new_field" --delete $database
|
|||||||
|
|
||||||
- [Extended example](recfiles/extended.md)
|
- [Extended example](recfiles/extended.md)
|
||||||
- [Playing with board games data](recfiles/Board_Games.md)
|
- [Playing with board games data](recfiles/Board_Games.md)
|
||||||
|
- [Playing with IP addresses](recfiles/IP_ASN.md)
|
||||||
|
- [Manage LaTeX Bibliographies](recfiles/bibliography.md)
|
||||||
|
- [Fixes](recfiles/recfixes.md)
|
||||||
|
|
||||||
# Resources
|
# Resources
|
||||||
|
|
||||||
|
16
data/recfiles/IP_ASN.md
Normal file
16
data/recfiles/IP_ASN.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
title: "IP Addresses with Recfiles"
|
||||||
|
tags: [ "data", "recfiles", "games" ]
|
||||||
|
requires: "Recfiles"
|
||||||
|
---
|
||||||
|
|
||||||
|
## Download the Database
|
||||||
|
|
||||||
|
Download the csv data, and separate the ipv4 data from the ipv6.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -Lo ips.zip 'https://www.kaggle.com/api/v1/datasets/download/ipinfo/ipinfo-country-asn'
|
||||||
|
unzip -p ips.zip country_asn.csv | csv2rec | recsel -e "start_ip ~ '\.'" > ipv4.rec
|
||||||
|
unzip -p ips.zip country_asn.csv | csv2rec | recsel -e "start_ip ~ '::'" > ipv6.rec
|
||||||
|
```
|
||||||
|
|
121
data/recfiles/bibliography.md
Normal file
121
data/recfiles/bibliography.md
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
---
|
||||||
|
title: "Recfile Bibliography for TeX"
|
||||||
|
tags: [ "data", "database", "recfiles", "tex" ]
|
||||||
|
requires: [ "Recfiles", "TeX", "Makefile" ]
|
||||||
|
---
|
||||||
|
|
||||||
|
Store your bibliography in a `recfile` database, then extract any part with `make`.
|
||||||
|
|
||||||
|
For example, you could store books like this in `bibliography.rec`:
|
||||||
|
|
||||||
|
```recfile
|
||||||
|
%rec: book
|
||||||
|
%key: slug
|
||||||
|
|
||||||
|
slug: thinkingexperience
|
||||||
|
author: H. H. Price
|
||||||
|
title: Thinking and Experience
|
||||||
|
year: 1953
|
||||||
|
publisher: Harvard University Press, Cambridge
|
||||||
|
|
||||||
|
slug: inventingrightwrong
|
||||||
|
author: John Leslie Mackie
|
||||||
|
title: Inventing Right and Wrong
|
||||||
|
year: 1997
|
||||||
|
publisher: Penguin Books, England
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Run `make book` to extract `book.bib`, ready for LaTeX to use:
|
||||||
|
|
||||||
|
```bib
|
||||||
|
@book{thinkingexperience,
|
||||||
|
author = {H. H. Price},
|
||||||
|
title = {Thinking and Experience},
|
||||||
|
year = {1953},
|
||||||
|
publisher = {Harvard University Press, Cambridge},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{inventingrightwrong,
|
||||||
|
author = {John Leslie Mackie},
|
||||||
|
title = {Inventing Right and Wrong},
|
||||||
|
year = {1997},
|
||||||
|
publisher = {Penguin Books, England},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `makefile` syntax is just a few lines (though admittedly employs some garbled shell-crud):
|
||||||
|
|
||||||
|
```make
|
||||||
|
bibs != grep -Po '%rec: \K.*' bibliography.rec
|
||||||
|
bibfiles = $(patsubst %, %.bib, $(bibs))
|
||||||
|
|
||||||
|
$(bibfiles): %.bib: bibliography.rec
|
||||||
|
recsel $< -t $(basename $@) |\
|
||||||
|
sed 's/slug: \(.*\)/@$(basename $@){\1,/g' |\
|
||||||
|
sed 's/^\(\b.*\b\): \(.*\)/ \1 = {\2},/gI' |\
|
||||||
|
sed 's/^$$/}\n/g' > $@
|
||||||
|
echo '}' >> $@
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's a longer `bibliography.rec` file, which can also produce `article.bib`:
|
||||||
|
|
||||||
|
```recfile
|
||||||
|
%rec: book
|
||||||
|
%key: slug
|
||||||
|
%type: year int
|
||||||
|
%constraint: year > -2000
|
||||||
|
%sort: year month
|
||||||
|
|
||||||
|
slug: thinkingexperience
|
||||||
|
author: H. H. Price
|
||||||
|
title: Thinking and Experience
|
||||||
|
year: 1953
|
||||||
|
publisher: Harvard University Press, Cambridge
|
||||||
|
|
||||||
|
slug: inventingrightwrong
|
||||||
|
author: John Leslie Mackie
|
||||||
|
title: Inventing Right and Wrong
|
||||||
|
year: 1997
|
||||||
|
publisher: Penguin Books, England
|
||||||
|
|
||||||
|
slug: metaphysicscontemporaryintro
|
||||||
|
author: Michael J. Loux
|
||||||
|
title: Metaphysics: A Contemporary Introduction
|
||||||
|
year: 1998
|
||||||
|
publisher: Routledge, London
|
||||||
|
|
||||||
|
slug: pluralityworlds
|
||||||
|
author: David Lewis
|
||||||
|
title: On the Plurality of Worlds
|
||||||
|
publisher: Blackwell Publishing, Oxford
|
||||||
|
year: 2001
|
||||||
|
|
||||||
|
%rec: article
|
||||||
|
%key: slug
|
||||||
|
%sort: year month
|
||||||
|
|
||||||
|
slug: genuinerealisttheory
|
||||||
|
author: John Divers
|
||||||
|
title: A Genuine Realist Theory of Advanced Modalizing
|
||||||
|
year: 1999
|
||||||
|
pages: 217–240
|
||||||
|
month: april
|
||||||
|
journaltitle: Mind
|
||||||
|
uri: https://academic.oup.com/mind/article-abstract/108/430/217/975258?redirectedFrom=fulltext
|
||||||
|
volume: 108
|
||||||
|
publisher: Harvard University Press, Cambridge
|
||||||
|
|
||||||
|
slug: twokindsmentalrealism
|
||||||
|
author: Tam\'{a}s Demeter
|
||||||
|
title: Two Kinds of Mental Realism
|
||||||
|
year: 2009
|
||||||
|
pages: 40:59-71
|
||||||
|
uri: https://www.researchgate.net/profile/Tamas_Demeter2/publication/41554923_Two_Kinds_of_Mental_Realism/links/0deec53247f5a4ae21000000.pdf
|
||||||
|
month: august
|
||||||
|
journaltitle: Journal for General Philosophy of Science
|
||||||
|
volume: 30
|
||||||
|
publisher: Harvard University Press, Cambridge
|
||||||
|
|
||||||
|
```
|
||||||
|
|
33
data/recfiles/recfixes.md
Normal file
33
data/recfiles/recfixes.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
title: "Recfixes"
|
||||||
|
tags: [ "data", "recfiles" ]
|
||||||
|
requires: "Recfiles"
|
||||||
|
---
|
||||||
|
|
||||||
|
Sometimes `recsel` chokes on a large query, and you need to break the query into chunks with a pipe.
|
||||||
|
|
||||||
|
This Kickstarter file has 374,853 records.
|
||||||
|
Here's the chonky query:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recsel kick.rec -e "Category = 'Games'" -p "Subcategory,Avg(Goal)" -G Subcategory
|
||||||
|
```
|
||||||
|
|
||||||
|
It breaks down like this:
|
||||||
|
|
||||||
|
| Chunk | Meaning |
|
||||||
|
|:-----------------------------:|:---------------------------------------------:|
|
||||||
|
| `recsel kick.rec` | Select records from `kick.rec` |
|
||||||
|
| `-e "Category = 'Games'"` | Select only records where Category = 'Games' |
|
||||||
|
| `-p "Subcategory,Avg(Goal)"` | Print the Subcategory and average goal |
|
||||||
|
| `-G "Subcategory"` | Group by subcategory |
|
||||||
|
|
||||||
|
Two ways to break the query apart:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
recsel kick.rec -e "Category = 'Games'" | recsel -p "Subcategory,Avg(Goal)" -G "Subcategory"
|
||||||
|
|
||||||
|
recsel kick.rec -e "Category = 'Games'" > games.rec
|
||||||
|
recsel games.rec -p "Subcategory" -G "Subcategory"
|
||||||
|
```
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "fonts"
|
title: "Ach Linux GPU Setup"
|
||||||
tags: [ "distros" ]
|
tags: [ "arch", "GPU" ]
|
||||||
---
|
---
|
||||||
# Step 1: Multilib
|
# Step 1: Multilib
|
||||||
|
|
||||||
@ -60,4 +60,3 @@ You should see 'true' here.
|
|||||||
```bash
|
```bash
|
||||||
sudo pacman -S --needed lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader xf86-video-amdgpu
|
sudo pacman -S --needed lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader xf86-video-amdgpu
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ This works everywhere, including in a bare-ass tty.
|
|||||||
|
|
||||||
Select a keymap, and create a new custom map.
|
Select a keymap, and create a new custom map.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
su root
|
su root
|
||||||
|
|
||||||
basemap=/usr/share/kbd/keymaps/i386/qwerty/pl1.map.gz
|
basemap=/usr/share/kbd/keymaps/i386/qwerty/pl1.map.gz
|
||||||
@ -22,7 +22,7 @@ gunzip -c $basemap | \
|
|||||||
|
|
||||||
Tell the system to use this keymap at startup by naming it in the `rc.conf` file:
|
Tell the system to use this keymap at startup by naming it in the `rc.conf` file:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "KEYMAP=$newmap" >> /etc/rc.conf
|
echo "KEYMAP=$newmap" >> /etc/rc.conf
|
||||||
|
|
||||||
cat /etc/rc.conf
|
cat /etc/rc.conf
|
||||||
@ -33,24 +33,24 @@ reboot
|
|||||||
|
|
||||||
Set layout to British English.
|
Set layout to British English.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
setxkbmap -layout gb
|
setxkbmap -layout gb
|
||||||
```
|
```
|
||||||
|
|
||||||
Or Polish with:
|
Or Polish with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
setxkbmap -layout pl
|
setxkbmap -layout pl
|
||||||
```
|
```
|
||||||
|
|
||||||
| Language | short |
|
| Language | short |
|
||||||
|:--------|:------|
|
|:---------|:------|
|
||||||
| Polish | pl |
|
| Polish | `pl` |
|
||||||
| Serbian | rs |
|
| Serbian | `rs` |
|
||||||
|
|
||||||
Set 'alt + shift', as the command which cycles through the British English, Polish and Serbian keyboard layout.
|
Set 'alt + shift', as the command which cycles through the British English, Polish and Serbian keyboard layout.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
setxkbmap -layout gb,pl,rs -option grp:alt_shift_toggle
|
setxkbmap -layout gb,pl,rs -option grp:alt_shift_toggle
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: "wifi"
|
title: "network"
|
||||||
tags: [ "Networking" ]
|
tags: [ "Networking" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
# Netstat Stuff
|
# Netstat Stuff
|
||||||
|
|
||||||
Stats on local net usage within domain.
|
Stats on local net usage within domain.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "wireguard"
|
title: "wireguard"
|
||||||
tags: [ "Networking", "VPN" ]
|
tags: [ "networking", "VPN" ]
|
||||||
---
|
---
|
||||||
<!--
|
<!--
|
||||||
from
|
from
|
||||||
@ -11,25 +11,22 @@ https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/
|
|||||||
|
|
||||||
Install `wireguard-tools` on the server.
|
Install `wireguard-tools` on the server.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo -i
|
su root
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /etc/wireguard
|
cd /etc/wireguard
|
||||||
```
|
```
|
||||||
|
|
||||||
umask 077
|
umask 077
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wg genkey | tee server_private_key | wg pubkey > server_public_key
|
wg genkey | tee server_private_key | wg pubkey > server_public_key
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wg genkey | tee client_private_key | wg pubkey > client_public_key
|
wg genkey | tee client_private_key | wg pubkey > client_public_key
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo "
|
echo "
|
||||||
[Interface]
|
[Interface]
|
||||||
Address = 10.0.0.1/24
|
Address = 10.0.0.1/24
|
||||||
@ -46,20 +43,20 @@ wg genkey | tee client_private_key | wg pubkey > client_public_key
|
|||||||
" > /etc/wireguard/wg0.conf
|
" > /etc/wireguard/wg0.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/wg.conf
|
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/wg.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
systemctl enable --now wg-quiqck@wg0
|
systemctl enable --now wg-quiqck@wg0
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
chown -R root:root /etc/wireguard/
|
chown -R root:root /etc/wireguard/
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
chmod -R og-rwx /etc/wireguard/\*
|
chmod -R og-rwx /etc/wireguard/*
|
||||||
```
|
```
|
||||||
|
|
||||||
Forward traffic from port 51900 to the server.
|
Forward traffic from port 51900 to the server.
|
||||||
@ -72,21 +69,25 @@ Install `wireguard-tools` on the client.
|
|||||||
|
|
||||||
Copy the client private key and server public key to the server (or just fill in the variables).
|
Copy the client private key and server public key to the server (or just fill in the variables).
|
||||||
|
|
||||||
> server_ip=*your server's public ip*
|
|
||||||
|
|
||||||
echo "
|
```sh
|
||||||
[Interface]
|
server_ip=$PUBLIC_IP
|
||||||
Address = 10.0.0.2/32
|
|
||||||
PrivateKey = $(cat client_private_key)
|
|
||||||
DNS = 9.9.9.9
|
|
||||||
|
|
||||||
[Peer]
|
echo "
|
||||||
PublicKey = $(cat server_public_key)
|
[Interface]
|
||||||
Endpoint = $(echo $server_ip:51900)
|
Address = 10.0.0.2/32
|
||||||
AllowedIPs = 0.0.0.0/0, ::/0
|
PrivateKey = $(cat client_private_key)
|
||||||
" > /etc/wireguard/wg0-client.conf
|
DNS = 9.9.9.9
|
||||||
|
|
||||||
> wg-quick up wg0-client
|
[Peer]
|
||||||
|
PublicKey = $(cat server_public_key)
|
||||||
|
Endpoint = $(echo $server_ip:51900)
|
||||||
|
AllowedIPs = 0.0.0.0/0, ::/0
|
||||||
|
" > /etc/wireguard/wg0-client.conf
|
||||||
|
|
||||||
|
wg-quick up wg0-client
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
## Extras
|
## Extras
|
||||||
|
|
||||||
@ -98,6 +99,6 @@ Add multiple peers by copying the `[peer]` section (they each get called `peer`)
|
|||||||
|
|
||||||
Make a standard client configuration, then:
|
Make a standard client configuration, then:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
qrencode -t ansiutf8 < /etc/wireguard/mobile_user.conf
|
qrencode -t ansiutf8 < /etc/wireguard/mobile_user.conf
|
||||||
```
|
```
|
||||||
|
@ -1,60 +1,63 @@
|
|||||||
---
|
---
|
||||||
title: "wireless"
|
title: "wireless"
|
||||||
tags: [ "Networking" ]
|
tags: [ "networking" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
# Check wifi's working
|
Check wifi's working
|
||||||
```bash
|
|
||||||
|
```sh
|
||||||
lspci -k
|
lspci -k
|
||||||
```
|
```
|
||||||
|
|
||||||
Or for usb wifi:
|
Or for usb wifi:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
dmesg | grep usbcore
|
dmesg | grep usbcore
|
||||||
```
|
```
|
||||||
|
|
||||||
... and hopefully it'll say the new interface is registered.
|
...and hopefully it'll say the new interface is registered.
|
||||||
|
|
||||||
# Check if a wifi interface has been created
|
Check if a wifi interface has been created
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
ip link
|
ip link
|
||||||
```
|
```
|
||||||
|
|
||||||
or
|
...or
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
iw dev
|
iw dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Assuming it's wlan0, bring it up with
|
Assuming it's wlan0, bring it up with
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
ip link set wlan0 up
|
ip link set wlan0 up
|
||||||
```
|
```
|
||||||
|
|
||||||
Error messages probably means your wireless chipset requires a firmware to function. In this case, check the kernel messages for firmware being loaded
|
Error messages probably means your wireless chipset requires a firmware to function. In this case, check the kernel messages for firmware being loaded
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
dmesg | grep firmware
|
dmesg | grep firmware
|
||||||
```
|
```
|
||||||
|
|
||||||
# Utilities
|
# Utilities
|
||||||
|
|
||||||
iw doesn't do wpa/wpa2. wpa_supplicant does everything. iwd does everything except WEXT encryption.
|
- `iw` doesn't do wpa/wpa2.
|
||||||
|
- `iwd` does everything except WEXT encryption.
|
||||||
|
- `wpa_supplicant` does everything.
|
||||||
|
|
||||||
# Connecting
|
# Connecting
|
||||||
|
|
||||||
Get the link status:
|
Get the link status:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
iw dev wlan0 link
|
iw dev wlan0 link
|
||||||
```
|
```
|
||||||
|
|
||||||
Scan for available points:
|
Scan for available points:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
iw dev wlan0 scan
|
iw dev wlan0 scan
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -3,55 +3,55 @@ title: "wpa_supplicant"
|
|||||||
tags: [ "Networking" ]
|
tags: [ "Networking" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
wpa_supplicant configurations are stored in /etc/wpa_supplicant/wpa_supplicant-wlan0 (or equivalent).
|
`wpa_supplicant` configurations are stored in `/etc/wpa_supplicant/wpa_supplicant-wlan0` (or equivalent).
|
||||||
|
|
||||||
## WiFi Connection
|
## WiFi Connection
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_cli
|
wpa_cli
|
||||||
```
|
```
|
||||||
|
|
||||||
Once in, scan the network, add an empty place to store credentials, then input them.
|
Once in, scan the network, add an empty place to store credentials, then input them.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
scan
|
scan
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
scan_results
|
scan_results
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
add_network
|
add_network
|
||||||
```
|
```
|
||||||
|
|
||||||
This outputs a network number, e.g. '3'. This is the new network you'll work with.
|
This outputs a network number, e.g. '3'. This is the new network you'll work with.
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
set_network *3* ssid *"Kosachok Cafe"*
|
set_network *3* ssid *"Kosachok Cafe"*
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
set_network 3 psk *"Kosachok2019"*
|
set_network 3 psk *"Kosachok2019"*
|
||||||
```
|
```
|
||||||
|
|
||||||
OR (for no password)
|
OR (for no password)
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
set_network *3* key_mgmt NONE
|
set_network *3* key_mgmt NONE
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
enable_network 3
|
enable_network 3
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
save_config
|
save_config
|
||||||
```
|
```
|
||||||
|
|
||||||
This takes a while to connect, so to speed things up, restart the service:
|
This takes a while to connect, so to speed things up, restart the service:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
sudo sv restart wpa_supplicant
|
sudo sv restart wpa_supplicant
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -59,13 +59,13 @@ sudo sv restart wpa_supplicant
|
|||||||
|
|
||||||
You can script like this:
|
You can script like this:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_cli add_network
|
wpa_cli add_network
|
||||||
```
|
```
|
||||||
|
|
||||||
That returns an ID, so you can say:
|
That returns an ID, so you can say:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
newNetwork="$(wpa_cli add_network)"
|
newNetwork="$(wpa_cli add_network)"
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -73,19 +73,19 @@ Then `$newNetwork` would equal that number, and you can add/ remove networks wit
|
|||||||
|
|
||||||
But remember to escape the quotes, so adding a network would be:
|
But remember to escape the quotes, so adding a network would be:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_cli set_network *3* psk *\""passphrase"\"*
|
wpa_cli set_network *3* psk *\""passphrase"\"*
|
||||||
```
|
```
|
||||||
|
|
||||||
## Generating Keys Manually
|
## Generating Keys Manually
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_passphrase [ssid] [password]
|
wpa_passphrase [ssid] [password]
|
||||||
```
|
```
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_passphrase 'Cafe Kosachok' 'Kosachok2019'
|
wpa_passphrase 'Cafe Kosachok' 'Kosachok2019'
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -95,8 +95,11 @@ If you encounter problems, you will probably need to delete the old device pid i
|
|||||||
|
|
||||||
Next up, start wpa_supplicant:
|
Next up, start wpa_supplicant:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant-wlan0
|
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant-wlan0
|
||||||
```
|
```
|
||||||
|
|
||||||
The -B flag runs this as a background process. Remove this to see real-time output in order to solve problems. The -i flag denotes the physical device used for the wifi. The -c flag points to the configuration file for use.
|
The `-B` flag runs this as a background process.
|
||||||
|
Remove this to see real-time output in order to solve problems.
|
||||||
|
The `-i` flag denotes the physical device used for the wifi.
|
||||||
|
The `-c` flag points to the configuration file for use.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: "Makefiles"
|
title: "make help target"
|
||||||
tags: [ "system", "make", "help" ]
|
tags: [ "system", "make", "help" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -1,8 +1,36 @@
|
|||||||
---
|
---
|
||||||
title: "kernel"
|
title: "kernel modules"
|
||||||
tags: [ "system" ]
|
tags: [ "system" ]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Kernel modules live in lib/modules/$(uname -r)
|
||||||
|
|
||||||
|
## Change
|
||||||
|
|
||||||
|
Load them with
|
||||||
|
|
||||||
|
```sh
|
||||||
|
modprobe ath9k
|
||||||
|
```
|
||||||
|
|
||||||
|
Or remove one with
|
||||||
|
|
||||||
|
```sh
|
||||||
|
modprove uvcvideo
|
||||||
|
```
|
||||||
|
|
||||||
|
The PC's irritating speaker beep can be really annoying. Disable it with:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
modprobe -r pcspeaker
|
||||||
|
```
|
||||||
|
|
||||||
|
Permanently disable a module by blacklisting it in `/etc/modprobe.d`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
echo 'blacklist pcspkr' > /etc/modprobe.d/*nobeep*.conf
|
||||||
|
```
|
||||||
|
|
||||||
Check which kernel modules are loaded into memory:
|
Check which kernel modules are loaded into memory:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
Loading…
Reference in New Issue
Block a user