Compare commits

...

17 Commits

Author SHA1 Message Date
59fb0ada24
lowercase tags 2025-02-24 09:19:15 +01:00
b68fa25cea
syntax and colouration 2025-02-19 15:11:37 +01:00
5bd45973b4
clean makefile help syntax 2025-02-17 19:04:09 +01:00
66cdca5c85
give articles lowercase tags 2025-02-17 00:27:30 +01:00
aa32bfc249
bibliographies with recfiles 2025-02-14 13:05:28 +01:00
fc88ab6200
recfile example 2025-02-13 17:39:55 +01:00
eaec01076b
ip addresses with recfiles 2025-02-13 17:39:38 +01:00
0abc2818e8
use title as db key 2025-02-13 03:52:15 +01:00
4250f619c3
unify kernel notes 2025-02-13 01:42:50 +01:00
4d53f7c7d6
rebuild on $dir/$file.md changes
Still not rebuilding on changes to $dir/$dir/$file.md.
2025-02-13 01:34:33 +01:00
38feabb79f
name fix 2025-02-13 01:16:24 +01:00
b4683a8681
add contents to databases 2025-02-13 00:08:34 +01:00
d2934bf8a3
recfile fixes 2025-02-12 23:01:50 +01:00
5afc414a52
small edits 2025-02-12 23:01:40 +01:00
d8b4a9d00b
stop duplicate db entries 2025-02-12 22:51:27 +01:00
a15b565e09
metadata fixes 2025-02-12 22:50:27 +01:00
6ccba626c8
edit git lfs 2025-02-12 17:46:59 +01:00
86 changed files with 474 additions and 250 deletions

View File

@ -4,6 +4,8 @@ EDITOR ?= vi
FZF != command -v sk || command -v fzy || command -v fzf || \
{ echo install a fuzzy finder && exit 1 ;}
spill_contents = sed -e '1,/---/d'
help: ## Print the help message
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
sort | \
@ -11,31 +13,38 @@ help: ## Print the help message
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)
$(databases): .dbs/%.rec: %/ | .dbs/
$(foreach dir, $(categories), \
$(eval .dbs/$(dir).rec: $(wildcard $(dir)/*)) \
)
$(databases): .dbs/%.rec: %/
$(info making $(@F))
mkdir -p $(@D)
@mkdir -p $(@D)
for entry in $(shell find $< -type f -name "*.md") ; do \
sed -n '2,/^---$$/ {/^---$$/d; p}' "$$entry" |\
sed -e 's/\[ //' -e 's/ \]//' |\
tr -d '"' ;\
printf "wordcount: %s\n" "$$(wc -w < $$entry)" ;\
printf "file: %s\n\n" "$$entry" ;\
done >> $@
done > $@
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 content --set-add="$$($(spill_contents) $${entry})" ;\
done
db.rec: $(databases)
printf '%s\n' '%rec: guide' > $@
printf '%s\n' '%key: title' >> $@
printf '%s\n' '%type: wordcount int' >> $@
printf '%s\n\n' '%sort: title' >> $@
cat $^ >> $@
recsel $^ >> $@
recsel $@ -e "requires != ''" -CR title,requires |\
while read title requires; do \
IFS=', ' && for provider in $$requires; do \
@ -62,7 +71,7 @@ article: ## Write an article
filename="$$(echo "$$title" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')" ;\
printf '%s\n' '---' >> $$path/$$filename.md ;\
printf 'title: "%s"\n' "$$title" >> $$path/$$filename.md ;\
printf 'tags: [ "%s" ]\n' "$$path" | sed 's#\/#", "#g' >> $$path/$$filename.md ;\
printf 'tags: [ "%s" ]\n' "$$path" | tr '[:upper:]' '[:lower:]' | sed 's#\/#", "#g' >> $$path/$$filename.md ;\
printf '%s\n\n' '---' >> $$path/$$filename.md ;\
$(EDITOR) +5 "$$path/$$filename.md"

View File

@ -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 ~ 'bash'" -R title,wordcount
recsel db.rec -m 1 -P content | less -R
```
# Style

View File

@ -1,6 +1,6 @@
---
title: "at"
tags: [ "Basics", "time" ]
tags: [ "basics", "time" ]
---
Install with:

View File

@ -1,6 +1,6 @@
---
title: "Basics"
tags: [ "Basics" ]
tags: [ "basics" ]
---
You need about a dozen commands to move around Linux.

View File

@ -1,6 +1,6 @@
---
title: "clock"
tags: [ "Basics", "time" ]
tags: [ "basics", "time" ]
---
Show system time:

View File

@ -1,6 +1,6 @@
---
title: "conditionals"
tags: [ "Basics" ]
tags: [ "basics" ]
---
# If statements

View File

@ -1,6 +1,6 @@
---
title: "cron"
tags: [ "Basics", "time" ]
tags: [ "basics", "time" ]
---
# Cronie

View File

@ -1,6 +1,6 @@
---
title: "bash games"
tags: [ "Games" ]
tags: [ "games" ]
---
Games are a great way to learn bash.

View File

@ -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
```

View File

@ -1,6 +1,6 @@
---
title: "kill"
tags: [ "Basics" ]
tags: [ "basics" ]
---
If you want to kill a program in a graphical environment, open a terminal and type:

View File

@ -1,6 +1,6 @@
---
title: "locale"
tags: [ "Basics", "time" ]
tags: [ "basics", "time" ]
---
Your locale tells the computer your location, preferred time-and-date format, standard language, papersize, et c.

View File

@ -1,6 +1,6 @@
---
title: "locating"
tags: [ "Basics" ]
tags: [ "basics" ]
---
# Type

View File

@ -1,6 +1,6 @@
---
title: "processes"
tags: [ "Basics" ]
tags: [ "basics" ]
---
# Proccesses

View File

@ -1,6 +1,6 @@
---
title: "time"
tags: [ "Basics", "time" ]
tags: [ "basics", "time" ]
---
# systemd

View File

@ -1,6 +1,6 @@
---
title: "users"
tags: [ "Basics" ]
tags: [ "basics" ]
---
# Basic Information

View File

@ -1,6 +1,6 @@
---
title: "profanity"
tags: [ "Chat", "omemo" ]
tags: [ "chat", "omemo" ]
---
# Setup (Commands)

View File

@ -1,6 +1,6 @@
---
title: "wgetpaste"
tags: [ "Chat" ]
tags: [ "chat" ]
---
See available pastebins:

View File

@ -1,6 +1,6 @@
---
title: "unison"
tags: [ "Backups", "synch" ]
tags: [ "backups", "synch" ]
---
Install unison on both machines, and make sure both have the same version of unison, with the same version of the ocaml compiler (the smallest difference will cause problems).

View File

@ -1,6 +1,6 @@
---
title: "Base 16"
tags: [ "Data" ]
tags: [ "data" ]
---
```bash

View File

@ -5,5 +5,10 @@ tags: [ "data", "calendar", "daylight savings" ]
## 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
```

View File

@ -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:
```
```sh
nc localhost 25
```
The computer should respond with code `220`, which means 'I am listening'.
> 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.
```
```sh
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:
```bash
```sh
sudo grep -r $FRAGMENT /var/spool/*
```

View File

@ -1,17 +1,17 @@
---
title: "exiftool"
tags: [ "Metadata" ]
tags: [ "metadata", "exifdata" ]
---
Find metadata.
Find metadata:
```bash
exiftool image.jpg
```sh
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 .
```
@ -19,22 +19,14 @@ You can make this recurring with the -r switch.
And overwrite all metadata:
```bash
```sh
exiftool -all= -overwrite_original -ext jpg .
```
(NB: This does not work on pdf data. See [here](pdf_erasure.md) for erasing all pdf data)
Or just GPS data:
```bash
```sh
exiftool -gps:all= *.jpg
```
You can also use the imagemagick tool:
```bash
identify -verbose
```

View File

@ -1,24 +1,72 @@
---
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
cat ~/.gitconfig
```
Then track some filetype with:
Then track some filetypes with:
```bash
git lfs track "\*.ttf"
```sh
cd $git_repository
ext=ttf
git lfs track "*.$ext"
```
Or a directory with:
```bash
```sh
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
```

View File

@ -1,5 +1,5 @@
---
title: "git"
title: "git subtree"
tags: [ "data", "git", "subtree" ]
---

View File

@ -1,6 +1,6 @@
---
title: "gpg"
tags: [ "data", "GPG" ]
tags: [ "data", "gpg" ]
---
- [Setup](gpg/basics.md)

View File

@ -1,5 +1,5 @@
---
title: "gpg"
title: "gpg with vim"
tags: [ "vim", "data", "GPG" ]
requires: [ "GPG Basics", "vim basics" ]
---

View File

@ -1,6 +1,6 @@
---
title: "groff"
tags: [ "Data" ]
tags: [ "data", "logic" ]
---
# Basic Documents

View File

@ -1,60 +1,52 @@
---
title: "khard"
tags: [ "Data" ]
tags: [ "data" ]
---
Get the basic config:
```bash
```sh
mkdir ~/.config/khard
```
```bash
```sh
cp /usr/share/doc/khard/examples/khard/khard.conf.example ~/.config/khard.conf
```
Short list
```bash
```sh
khard list
```
Longer list
```bash
```sh
khard show
```
Show from addressbook 'work'
```bash
```sh
khard list -a work
```
Make a new contact in address book 'family'
```bash
```sh
khard new -a family
```
```bash
```sh
khard edit grampa
```
```bash
```sh
khard remove bob
```
Move contact 'nina' from 'work' to 'home' address book.
```bash
```sh
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]
```

View File

@ -1,42 +1,42 @@
---
title: "pass"
tags: [ "data" ]
requires: "GPG Basics"
---
[Video instructions](https://www.hooktube.com/watch?v=hlRQTj1D9LA)
Setup [gpg](./gpg.md) keys.
Show your gpg secret it:
```bash
```sh
gpg --list-secret-keys
```
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)"
```
```bash
```sh
pass init $KEY
```
To add a basic password, e.g. for `$WEBSITE`:
```bash
```sh
pass $WEBSITE
```
To insert a multiline password, e.g. with a login name:
```bash
```sh
pass add -m $WEBSITE
```
Remove a password:
```bash
```sh
pass rm $WEBSITE
```

View File

@ -2,7 +2,8 @@
title: "pdf to txt"
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
@ -17,8 +18,8 @@ pdftoppm -png *file*.pdf test
```
```bash
for x in \*png; do
tesseract -l eng "$x" - >> *out*.txt
for x in *png; do
tesseract -l eng "$x" - >> out.txt
done
```

View File

@ -1,6 +1,6 @@
---
title: "PDF Metadata Erasure"
tags: [ "Metadata", "Ghost Script", "gs", ".pdf" ]
tags: [ "metadata", "ghost script", "gs", ".pdf" ]
---
You cannot erase pdf metadata with `exiftool` (it only *appends* your changes).

View File

@ -44,6 +44,9 @@ recset -f "$new_field" --delete $database
- [Extended example](recfiles/extended.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

16
data/recfiles/IP_ASN.md Normal file
View 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
```

View 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: 217240
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
View 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"
```

View File

@ -1,6 +1,6 @@
---
title: "task"
tags: [ "Organization" ]
tags: [ "organization" ]
---
Set up the configuration file:

View File

@ -1,6 +1,6 @@
---
title: "timewarrior"
tags: [ "Data", "tracking", "time", "timew" ]
tags: [ "data", "tracking", "time", "timew" ]
---
# Summaries

View File

@ -1,6 +1,6 @@
---
title: "autologin"
tags: [ "Distros", "Arch" ]
tags: [ "distros", "arch" ]
---
# Automatic Login

View File

@ -1,6 +1,6 @@
---
title: "fonts"
tags: [ "distros" ]
title: "Ach Linux GPU Setup"
tags: [ "arch", "GPU" ]
---
# Step 1: Multilib
@ -60,4 +60,3 @@ You should see 'true' here.
```bash
sudo pacman -S --needed lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loader xf86-video-amdgpu
```

View File

@ -1,6 +1,6 @@
---
title: "Aeroplane Mode in Void"
tags: [ "Void" ]
tags: [ "void" ]
---
Put your device in 'aeroplane' mode (e.g. where no trace of signal leaves it) by turning off Wi-Fi and blue-tooth.
@ -9,7 +9,7 @@ su root
sv stop wpa_supplicant bluetoothd
```
Find your device's name with `ip a`.
Find your device's name with `ip -color addr`.
If unsure, try this:
```sh

View File

@ -1,6 +1,6 @@
---
title: "Void Autologin"
tags: [ "Void" ]
tags: [ "void" ]
---
Make the autologin service:

View File

@ -1,6 +1,6 @@
---
title: "extrace"
tags: [ "Void" ]
tags: [ "void" ]
---
Monitor all processes:

View File

@ -1,6 +1,6 @@
---
title: "sv"
tags: [ "Void" ]
tags: [ "void" ]
---
# List Services

View File

@ -1,6 +1,6 @@
---
title: "Void Linux Basics"
tags: [ "Void" ]
tags: [ "void" ]
---
# Updates

View File

@ -1,6 +1,6 @@
---
title: "xbps"
tags: [ "Void" ]
tags: [ "void" ]
---
## Search

View File

@ -9,7 +9,7 @@ This works everywhere, including in a bare-ass tty.
Select a keymap, and create a new custom map.
```bash
```sh
su root
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:
```bash
```sh
echo "KEYMAP=$newmap" >> /etc/rc.conf
cat /etc/rc.conf
@ -33,24 +33,24 @@ reboot
Set layout to British English.
```bash
```sh
setxkbmap -layout gb
```
Or Polish with:
```bash
```sh
setxkbmap -layout pl
```
| Language | short |
|:--------|:------|
| Polish | pl |
| Serbian | rs |
|:---------|:------|
| Polish | `pl` |
| Serbian | `rs` |
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
```

View File

@ -1,6 +1,6 @@
---
title: "fail2ban"
tags: [ "Networking" ]
tags: [ "networking" ]
requires: [ "ssh" ]
---
# SSH Daemon Jail

View File

@ -1,6 +1,6 @@
---
title: "Easy Network Graph"
tags: [ "Networking" ]
tags: [ "networking" ]
---
Set up a file like this, called `troubleshooting.txt`.

View File

@ -1,6 +1,6 @@
---
title: "iptables"
tags: [ "Networking" ]
tags: [ "networking" ]
---
# Intro

View File

@ -1,6 +1,6 @@
---
title: "nmap"
tags: [ "Networking" ]
tags: [ "networking" ]
---
Example:

View File

@ -1,6 +1,6 @@
---
title: "pi-hole-server"
tags: [ "Distros" ]
tags: [ "distros" ]
---
# Installation

View File

@ -1,6 +1,6 @@
---
title: "rclone"
tags: [ "Networking" ]
tags: [ "networking", "synch" ]
---
The manpage's 'Synopsis' provides a fast reference.
```

View File

@ -1,6 +1,6 @@
---
title: "Download videos"
tags: [ "Scraping" ]
tags: [ "scraping" ]
---
Install `yt-dlp`.

View File

@ -1,6 +1,6 @@
---
title: "Agate on Arch Linux"
tags: [ "Networking", "Arch", "Gemini" ]
tags: [ "networking", "arch", "gemini" ]
---
Docs are [here](https://github.com/mbrubeck/agate).

View File

@ -7,7 +7,7 @@ tags: [ "networking" ]
Try out basic ssh by accessing `git.charm.sh`, without needing authentication:
```bash
```sh
ssh git.charm.sh
```
@ -16,32 +16,32 @@ The ssh server is sometimes in a package called `openssh`, and sometimes only in
Once it's installed, check it's working:
```bash
```sh
sudo systemctl status ssh
```
If that doesn't work, the service may be called `sshd`.
```bash
```sh
sudo systemctl status sshd
```
Then start that service:
```bash
```sh
sudo systemctl start sshd
```
Test it works by using ssh into your own system, from inside:
```bash
```sh
ssh $USER@localhost
```
Access the computer from another computer on the same local network by finding your computer's IP address.
```bash
```sh
ip address | grep inet
```
@ -56,24 +56,24 @@ Here is mine:
The first one starts `127`, which means it returns back to that computer (like `localhost`).
The second is an ipv6 address, which is too angelic for this world, and has yet to ascend.
The second is an ipv6 address, which is too angelic for this world, and has yet to descend.
The third will work from a remote computer.
```bash
```sh
ssh $USERNAME@IP_ADDRESS
```
Once you have that, generate some ssh keys:
```bash
```sh
ssh-keygen
```
Look at your keys:
```bash
```sh
ls ~/.ssh
```
@ -82,7 +82,7 @@ The other is secret.
Now send those keys to a remote computer:
```bash
```sh
ssh-copy-id $USERNAME@IP_ADDRESS
```

View File

@ -1,6 +1,6 @@
---
title: "sshfs"
tags: [ "Networking" ]
tags: [ "networking" ]
requires: [ "ssh" ]
---
# Mount

View File

@ -1,6 +1,6 @@
---
title: "ssh-tricks"
tags: [ "Networking", "ssh", "tricks" ]
tags: [ "networking", "ssh", "tricks" ]
requires: [ "ssh" ]
---

View File

@ -1,6 +1,6 @@
---
title: "tor"
tags: [ "Networking" ]
tags: [ "networking" ]
---
# Get a hostname

View File

@ -1,6 +1,6 @@
---
title: "transmission"
tags: [ "Networking", "Torrenting" ]
tags: [ "networking", "torrenting" ]
---
# Torrench

View File

@ -1,11 +1,11 @@
---
title: "troubleshooting"
tags: [ "Networking" ]
tags: [ "networking" ]
---
# Do you have an IP?
If not, try checking out what your local Networking interfaces are, then check if they have been picked up:
If not, try checking out what your local networking interfaces are, then check if they have been picked up:
```bash
dmesg | grep eth0

View File

@ -1,6 +1,6 @@
---
title: "nginx"
tags: [ "Networking" ]
tags: [ "networking", "web" ]
---
Install nginx:

View File

@ -1,7 +1,8 @@
---
title: "wifi"
tags: [ "Networking" ]
title: "network"
tags: [ "networking" ]
---
# Netstat Stuff
Stats on local net usage within domain.

View File

@ -1,6 +1,6 @@
---
title: "wireguard"
tags: [ "Networking", "VPN" ]
tags: [ "networking", "VPN" ]
---
<!--
from
@ -11,25 +11,22 @@ https://engineerworkshop.com/blog/how-to-set-up-wireguard-on-a-raspberry-pi/
Install `wireguard-tools` on the server.
```bash
sudo -i
```
```bash
```sh
su root
cd /etc/wireguard
```
umask 077
```bash
```sh
wg genkey | tee server_private_key | wg pubkey > server_public_key
```
```bash
```sh
wg genkey | tee client_private_key | wg pubkey > client_public_key
```
```bash
```sh
echo "
[Interface]
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
```
```bash
```sh
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/wg.conf
```
```bash
```sh
systemctl enable --now wg-quiqck@wg0
```
```bash
```sh
chown -R root:root /etc/wireguard/
```
```bash
chmod -R og-rwx /etc/wireguard/\*
```sh
chmod -R og-rwx /etc/wireguard/*
```
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).
> server_ip=*your server's public ip*
echo "
[Interface]
Address = 10.0.0.2/32
PrivateKey = $(cat client_private_key)
DNS = 9.9.9.9
[Peer]
PublicKey = $(cat server_public_key)
Endpoint = $(echo $server_ip:51900)
AllowedIPs = 0.0.0.0/0, ::/0
" > /etc/wireguard/wg0-client.conf
```sh
server_ip=$PUBLIC_IP
> wg-quick up wg0-client
echo "
[Interface]
Address = 10.0.0.2/32
PrivateKey = $(cat client_private_key)
DNS = 9.9.9.9
[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
@ -98,6 +99,6 @@ Add multiple peers by copying the `[peer]` section (they each get called `peer`)
Make a standard client configuration, then:
```bash
```sh
qrencode -t ansiutf8 < /etc/wireguard/mobile_user.conf
```

View File

@ -1,60 +1,63 @@
---
title: "wireless"
tags: [ "Networking" ]
tags: [ "networking" ]
---
# Check wifi's working
```bash
Check wifi's working
```sh
lspci -k
```
Or for usb wifi:
```bash
```sh
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
```
or
...or
```bash
```sh
iw dev
```
Assuming it's wlan0, bring it up with
```bash
```sh
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
```bash
```sh
dmesg | grep firmware
```
# 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
Get the link status:
```bash
```sh
iw dev wlan0 link
```
Scan for available points:
```bash
```sh
iw dev wlan0 scan
```

View File

@ -1,57 +1,57 @@
---
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
```bash
```sh
wpa_cli
```
Once in, scan the network, add an empty place to store credentials, then input them.
```bash
```sh
scan
```
```bash
```sh
scan_results
```
```bash
```sh
add_network
```
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"*
```
```bash
```sh
set_network 3 psk *"Kosachok2019"*
```
OR (for no password)
```bash
```sh
set_network *3* key_mgmt NONE
```
```bash
```sh
enable_network 3
```
```bash
```sh
save_config
```
This takes a while to connect, so to speed things up, restart the service:
```bash
```sh
sudo sv restart wpa_supplicant
```
@ -59,13 +59,13 @@ sudo sv restart wpa_supplicant
You can script like this:
```bash
```sh
wpa_cli add_network
```
That returns an ID, so you can say:
```bash
```sh
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:
```bash
```sh
wpa_cli set_network *3* psk *\""passphrase"\"*
```
## Generating Keys Manually
```bash
```sh
wpa_passphrase [ssid] [password]
```
For example:
```bash
```sh
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:
```bash
```sh
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.

View File

@ -1,6 +1,6 @@
---
title: "Basic Sound"
tags: [ "Sound" ]
tags: [ "sound" ]
---
# Pulse

View File

@ -1,6 +1,6 @@
---
title: "festival"
tags: [ "Sound" ]
tags: [ "sound" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "mpd"
tags: [ "Sound" ]
tags: [ "sound" ]
---
# Setup

View File

@ -1,6 +1,6 @@
---
title: "ncmpcpp"
tags: [ "Sound" ]
tags: [ "sound" ]
---
# Music Player Daemon

View File

@ -1,5 +1,5 @@
---
title: "Makefiles"
title: "make help target"
tags: [ "system", "make", "help" ]
---
@ -7,11 +7,13 @@ Make your first target 'help' to give an overview of the main targets.
Running `make help` will search for text which starts with `## ` and show what that target does.
```make
.PHONY: help
help: ## Print the help message
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
sort | \
column -s ':' -t
.PHONY: clean
clean: ## Remove generated files
$(RM) $(defaults)
```

View File

@ -1,6 +1,6 @@
---
title: "android"
tags: [ "System", "phone" ]
tags: [ "system", "phone" ]
---
# mtpfs

View File

@ -1,6 +1,6 @@
---
title: "awk"
tags: [ "System", ".csv" ]
tags: [ "system", ".csv" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "bash tips"
tags: [ "Shell", "POSIX" ]
tags: [ "shell", "POSIX" ]
---
## Track Live Changes

View File

@ -1,6 +1,6 @@
---
title: "character-encoding"
tags: [ "System", "encoding" ]
tags: [ "system", "encoding" ]
---
Convert a text file from one encoding type to another with:

View File

@ -1,6 +1,6 @@
---
title: "Default Programs"
tags: [ "Defaults", "Mime Type" ]
tags: [ "defaults", "mime type" ]
---
Install the package `xdg-utils`, then make very liberal use of the tab button.

View File

@ -1,8 +1,36 @@
---
title: "kernel"
title: "kernel modules"
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:
```sh

View File

@ -1,6 +1,6 @@
---
title: "lf - The Light File Manager"
tags: [ "File Browser", "TUI" ]
tags: [ "file browser", "TUI" ]
---
## Config File

View File

@ -1,6 +1,6 @@
---
title: "logs"
tags: [ "System" ]
tags: [ "system" ]
---
# Basic

View File

@ -1,6 +1,6 @@
---
title: "Monitoring"
tags: [ "System", "CPU", "Memory" ]
tags: [ "system", "CPU", "memory" ]
---
Print the average CPU load over 1 minute, 5 minutes, and 15 minutes:

View File

@ -1,6 +1,6 @@
---
title: "partitions"
tags: [ "System" ]
tags: [ "system" ]
---
# FDisk Basics

View File

@ -1,6 +1,6 @@
---
title: "snaps"
tags: [ "System", "Ubuntu", "snap" ]
tags: [ "system", "Ubuntu", "snap" ]
---
> sudo apt-get purge -y snapd

View File

@ -1,6 +1,6 @@
---
title: "Docker"
tags: [ "documentation", "Virtualization" ]
tags: [ "documentation", "virtualization" ]
---
```sh
sudo pacman -S docker

View File

@ -1,6 +1,6 @@
---
title: "virtualbox"
tags: [ "System" ]
tags: [ "system" ]
---
# Setup

View File

@ -1,6 +1,6 @@
---
title: "ffmpeg"
tags: [ "Sound", "Vision" ]
tags: [ "sound", "vision" ]
---
# Basics

View File

@ -1,6 +1,6 @@
---
title: "imagemagick"
tags: [ "Vision" ]
tags: [ "vision" ]
---
Convert jpg to png.

View File

@ -1,6 +1,6 @@
---
title: "Markdown to PDF"
tags: [ "Markdown", "PDF", "Vision" ]
tags: [ "markdown", ".pdf", "vision" ]
---
Turn a markdown file into a pdf: