Compare commits

...

39 Commits

Author SHA1 Message Date
c74b861442 add joyous bash 2025-08-26 23:03:07 +02:00
599ccd2881 refactor makefile 2025-02-14 16:23:28 +01:00
b191a9e5d4 note speedy compiles 2024-12-09 01:39:47 +01:00
e98d4ffbac place arch install instructions 2024-12-09 01:27:18 +01:00
f067b0200b fix robocop 2024-12-09 00:30:18 +01:00
e2814b08e1 Added dependencies for Debian in README 2024-12-08 00:13:18 -05:00
2f33669330 update readme 2024-12-08 22:13:46 +01:00
cee27356f6 reconfigure makefile 2024-12-06 09:18:40 +01:00
f358103f79 dependency ladder example 2024-11-25 14:28:59 +01:00
4c51ade750 PS: more Makefiles 2024-11-18 18:03:49 +01:00
0d2d466dac typo 2024-11-17 14:19:28 +01:00
8cc2a71235 note python makefile 2024-11-17 14:19:28 +01:00
fa026b7eda ending notes 2024-11-13 16:40:30 +01:00
7bc84ab8a3 finish examples 2024-11-13 16:06:46 +01:00
e59538a3bd place example makefiles 2024-11-13 14:23:44 +01:00
a9f7fd7f75 add basic makefile examples 2024-11-12 03:58:47 +01:00
3adc7ce3a7 fix typo in algebragrupe slides 2024-10-22 00:26:17 +02:00
131e9a1c3f add algebera slides and link to decentrala slide 2024-10-21 16:08:57 +02:00
Jovan Vuceljic
44871e36ff ekonomija update 2024-09-29 23:41:28 +02:00
3e18d8c601 add ekonomija slides 2024-09-23 15:54:02 +02:00
a0ed5ba301 Merge branch 'master' of ssh://soft.dmz.rs/workshops 2024-09-23 15:51:30 +02:00
3e2c1c1a21 write death shards 2024-05-14 18:43:07 +02:00
45855fdf31 typo 2024-05-14 18:43:07 +02:00
11d8c3366f fix name 2024-05-14 18:43:07 +02:00
fa64353509 write extended mind 2024-05-14 18:43:07 +02:00
1765075c2b add vim 2024-05-14 18:43:07 +02:00
dd6b0a279d add git-lfs 2024-05-14 18:43:07 +02:00
838eef92c4 add xcf to gitignore 2024-05-14 18:43:07 +02:00
69062673c9 Merge branch 'master' of ssh://soft.dmz.rs/workshops 2024-04-02 19:39:15 +02:00
fb6f971336 fix name 2024-04-02 19:38:45 +02:00
0ddefe1fbe Merge branch 'master' of ssh://soft.dmz.rs/workshops 2024-04-02 19:35:40 +02:00
6d486cf94d write extended mind 2024-04-02 18:43:33 +02:00
b1df5e2b57 add vim 2023-10-31 18:46:04 +01:00
c678ded947 add tor slides 2023-10-23 14:32:30 +02:00
60f9de7425 change collectivesec descriptio 2023-10-23 14:32:08 +02:00
b86dfb4e67 Merge branch 'master' of ssh://soft.dmz.rs/workshops 2023-09-02 14:21:07 +02:00
ffda076ee8 add collectivesecuirty and webdevpython 2023-09-02 14:20:07 +02:00
1a90265daf add git-lfs 2023-08-01 18:37:12 +02:00
9b23c29735 add xcf to gitignore 2023-07-03 19:19:29 +02:00
41 changed files with 1439 additions and 20 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,3 @@
*.pdf *.pdf
*.epub *.epub
Makefile *.xcf

19
Makefile Normal file
View File

@@ -0,0 +1,19 @@
help: ## Print the help message
$(info Make a single pdf by hitting the tab key a lot)
@awk 'BEGIN {FS = ":.*?## "} /^[0-9a-zA-Z._-]+:.*?## / {printf "\033[36m%s\033[0m : %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
sort | \
column -s ':' -t
# Search should not include slides separated by '***', as those are for mdp, not pandoc.
markdown != find slides/ -maxdepth 2 -type f -name "*.md" -exec grep -LF '***' '{}' ';'
pdfs = $(patsubst %.md, %.pdf, $(markdown))
$(pdfs): %.pdf: %.md
pandoc -t beamer -V theme:Warsaw -i $< -o $@
.PHONY: pdfs
pdfs: $(pdfs) ## Generate all pdfs (try `make -j pdfs`)
.PHONY: clean
clean: ## Delete all pdfs
$(RM) $(pdfs)

View File

@@ -1,5 +1,20 @@
# Radionice # Radionice
First run ./configure to generate a Makefile using folders in this directory Usage: `make`
## Dependecies:
### For Debian:
```bash
sudo apt update
sudo apt install pandoc
sudo apt install tikzit
```
### For Arch:
```bash
pacman -Sy pandoc texlive-binextra texlive-pictures texlive-latexrecommended texlive-fontsrecommended
```
Then you can run make to generate pdf beamer slides

13
configure vendored
View File

@@ -1,13 +0,0 @@
#!/usr/bin/bash
FOLDERS=$(cd slides/ ; echo *)
rm -f Makefile
echo -n 'all:' >> Makefile
for i in $FOLDERS ; do echo -n " $i.pdf" >> Makefile ; done
echo "" >> Makefile
for i in $FOLDERS ; do echo -e "$i.pdf:\n\tpandoc -t beamer -V theme:Warsaw -i slides/$i/$i.md -o slides/$i/$i.pdf\n" >> Makefile ; done
echo -ne "clean:\n\trm -f" >> Makefile
for i in $FOLDERS; do echo -n " slides/$i/$i.pdf" >> Makefile ; done
echo "" >> Makefile

View File

@@ -0,0 +1,65 @@
---
title:
- Algebra (Grupe)
theme:
- Warsaw
colortheme:
- orchid
---
# Uvod
- Skupovi
- Celi brojevi (beskonacni)
- Ostatci pre deljenju (konacne)
- Operacije
- mnozenje (binarna)
- negacija (unarna)
# Grupe
- Rezlutat ostaje unutar skupa
- Neutral
- Inverz
- Asocijativnost
- Abelove grupe (komutativnost)
- Ciklicne grupe (ostatak pri deljenju)
# Podgrupe
- Celi/Racionalni brojevi
- Red grupe
- Red podgrupe deli red grupe
# Kriptografija
- Skup poruka m odredjene velicine
- Operacija sifrovanja/potpisivanja $\oplus$
- jednosmerna (kao i hash funkcije)
- Neutral (e)
- Inverz kljuceva (k1, k2)
- $k1 \oplus k2 \equiv e$
- Sifrovanje/Potpisivanje ( $c \equiv m \oplus k1$ )
- Desifovanje/Provera ( $c \oplus k2 \equiv m$ )
- Asocijativnost
- $c \oplus k2 \equiv (m \oplus k1) \oplus k2 \equiv m \oplus (k1 \oplus k2)$
- $m \oplus (e) \equiv m$
# Kljucevi
- Jedan kljuc (simetricna)
- $k1 \equiv k2$
- $1 \oplus 1 \equiv 0 \mod 2$ (komplement)
- Dva kljuca (asimetricna)
- $2+3 \equiv 0 \mod 5$
# Razmena kljuceva
![DiffieHellman](slides/rsa/dhke.png)
# Razmena kljuceva
- DiffieHellman (DH)
- parametri (g,n,...)
- Abelova grupa (komutativnost)
- $g \oplus a \oplus b \equiv g \oplus b \oplus a$
- $(g \oplus a) \oplus b \equiv (g \oplus b) \oplus a$
- $A \oplus b \equiv B \oplus a$
# Sifrovanje/Potpisivanje
- Direktno sifrovanje (RSA)
- DH + simetcina = asimetricna (EC)

View File

@@ -0,0 +1,4 @@
In this talk we will talk about privacy and security issues of using centralized social media platforms and proprietary software.
I will talk about the network effect, the fact that social networks (and use of other software) are more useful if more people use it. It is necessary to grow the number of users of these technologies before any individual can enjoy the benefits of this software.
We, as an open source community, need to actively organize people to collectively start using decentralized and free and open source software. Creating local groups (hackerspaces) and events that will bring people together and use decentralized applications as main means of communication is the easiest way to give the users an immediate benefit of using these technologies.
I will mention some decentralized apps like Matrix,XMPP and Mastodon, and emphasize the importance of installing these apps even if we don't need to immediately have use for them.

View File

@@ -0,0 +1 @@
Digital privacy and cyber security is often presented as individual issues that we can solve on our own. In this talk we will talk about necessity of fixing these problems collectively and required steps we need to take. We don't need to switch to more secure ways of communicating right away, but we need to use secure alternatives in addition to insecure technologies in order to allow others to make a switch.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -0,0 +1,77 @@
# Sharding Passwords to Share before Death
<!--
- ожалошћена Породица
- family in mourning
-->
> Death approaches
# Software Problems Require Software Solutions
- `ssss` will shard anything up to 1024 bits.
- `encfs` or similar required for a folder.
```bash
fortune | ssss-split -t 3 -n 5 > shards.txt
head -n 3 shards.txt | ssss-combine -t 3
```
# Interface
- Electron?
- 3 actions:
* 'How many people do you trust?'
* 'How much do you trust them?'
* *Lock* / *Unlock* icon
# Requirements
- `<25MiB` for email
* So no electron.
# The Social Sphere
- Suggested receivers
- Email templates may help?
# The Antisocial Sphere
- Flesh protocols are tricky.
![family](slides/death_shards/family.jpg)
# Email Templates
## Be casual!
> Hi Alice,
>
> Can you take this to my funeral, but not now - just put it somewhere.
> It's just for this thing, anyway...
> K thx bye!
> xx bob
# Email Templates
## Be Formal
> Dearest Bob,
>
> Please find contained herein, one of my 'Death Shards'. It is of utmost importance that you maintain the consistency and secrecy of this file. This shard of death shall - within the fullness of time - alleviate the potential necessity of interacting with every part - financial, social, and unwholesome - which I have, heretofore, interacted with, insofar as the [now] modern electronic landscape has been concerned.
>
> Yours, ...for now.
> Alice.
# Notes
## Other Methods
Is this all wrong?
Perhaps it should be a standard function within 1pass.
## MFA is a Nightmare
- The project should probably include a request for a phone password.
- Will this update?
- Nudes?

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

View File

@@ -0,0 +1,103 @@
---
title:
- Uvod u ekonomiju
theme:
- Warsaw
colortheme:
- orchid
---
# Uvod
- Šta je ekonomija?
- istorija
- trampa
- kovanice i papirni novac
- "slobodna" trgovina
- raspodela resursa
- efikasnost i evektivnost
# Uvod
- Šta je novac?
- banke
- ponuda i traznja
- moć odlučivanja u raspodeli resursa
- likvidnost
- bruto domaci proizvod (BDP eng GDP)
# Štednja
- Štednja
- inflacija
- valuta
- investicija
- oročenje
# Krediti
- Krediti
- inflacija
- valuta
- investicija
- kamata
# Akcije
- Hartije of vrednosti (HOV)
- akcije
- obveznice
- indeksi
# Berza
- Berze
- belex
- strane
# Brokeri
- Brokeri
- domaći
- strani
- wall street
# Kripto
- Novac
- monetarna politka
- brzina transakcije
- provizije transakcije
- likvidnost
- shitcoins
# Kripto
- Trgovina
- menjačnice
- iluzija sposobnosti
- zakoni
# Uspesi sistema
- Uspesi sistema
- brz napredak u poljima interesovanja (profita)
- masovna proizvodnja
- poslovi i obucavanje naroda
-
# Neuspesi i kritika sistema
- Kritika
- planirano zastarevanje
- ciklicna potrosnja
- ekoloska katastrofa
- automatizacija
- besmisleni poslovi
- robovanje profitu
- kompetitivnost i ratovi
- sve na prodaju
- kriza u ciklusima
- najbogatijih 1%
- maltuzianizm
# Kako da se obogatim?
- Kako zaraditi?
- nasledstvo
- rad i štednja
- investicije
- kradja
- sreća

View File

@@ -0,0 +1,62 @@
---
title:
- The Extended Mind and Licensing
author:
- Malin
theme:
- Warsaw
colortheme:
- orchid
---
# History
- Started with Clark and Chalmers
- [Chalmers at Ted](https://yt.artemislena.eu/watch?v=ksasPjrYFTg)
## Cyborg Manifesto
Or maybe Donna Haraway?
# Original Extended Minds
- Notebooks
- Counting on fingers
- Fil-o-fax
# Electronic Extended Minds
- Phones
- Computers
- Google?
- Note-apps?
# Intuition Pumps
- Proprioception and teeth
- The feeling of loss over theft
- Second brains
# Requirements
- 'to-hand'
- Repetition
- Locus
> Do you know where they live?
# Counter Requirements
> Skin and bone
Does *Ghost in the Shell* count?
# The Point and the Future
![robocop](slides/extended_minds/robocop_values.png)
# End Notes
> Can you code in the sand?

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

View File

@@ -0,0 +1,243 @@
# Shut Up!
```sh
echo blacklist pcspkr > /etc/modprobe.d/nobeep.conf
```
---
# Standard Visuals
- `cbonsai`
- `asciiquarium`
- `top`
* `ZH4W`
## Another Monday!
- `cal --reform julian`
## Weather
```sh
curl wttr.in
curl -s wttr.in/Београд
curl wttr.in/Moon
```
# `ls`
`ls -X`
---
# vim
- blog!
- seriously, just write
---
# `watch`
## Watch Differences
- `watch -d stat "$file"`
- `watch -d ip a`
## With Makefiles
```sh
watch --chgexit ping -c 1 dmz.rs && sleep 3 && unison -batch pir
```
## Check Progress
```sh
watch 'ls **/*.pdf | column'
```
---
# Watch Shell Scripts
```sh
watch -e ./script.sh
```
---
# Slow Down
```sh
function slow(){
ff=/tmp/bashpipe_$(date +%s)
mkfifo $ff 2>/dev/null
( cat $ff | perl -We 'use Time::HiRes;$|++;while(read(STDIN,$c,1)){Time::HiRes::usleep(15000);print $c;}' )& exec &> $ff
}
```
## Safety?
- no
## `htop`?
- no
## `speedtest`?
- **YES**
```
---
# Notes
```sh
alias no='$EDITOR .no.md'
function n(){
[ -z "$1" ] && cat .no.md || echo $@ >> .no.md
}
```
---
# URL Decoding
```bash
urldecode(){ : "${*//+/ }"; echo -e "${_//%/\\x}"; }
```
---
# Send Text
```sh
function sendtext(){
[ -f "$1" ] && \
cat "$1" | nc termbin.com 9999 || \
echo "$($1)" | nc termbin.com 9999
}
```
---
# Readline
Put this in `.inputrc`.
```text
set editing-mode vi
set keymap vi
```
---
# More Readline vi
```text
set editing-mode vi
set show-mode-in-prompt on
set vi-ins-mode-string " "
set vi-cmd-mode-string " "
set keymap vi
```
---
# More Readline
```text
set match-hidden-files off
set show-all-if-ambiguous on
set show-all-if-unmodified on
set colored-stats on
"\C- ": shell-expand-line
"\C-x": glob-expand-word
Control-g: "g\n"
Control-y: "| ccze\n"
Control-o: "\C-u lfcd\n\C-u"
Control-l: "\C-u clear -x && ls\n"
```
---
# Synchronization
## Syncthing
- 'Just works'
## Unison
- Fuck haskell
- But actually it's good
---
# `column`
```sh
column -ts: -H PW,GID,shell -N User,PW,UID,GID,Description,Home,shell /etc/passwd
```
##
```sh
column -J -ts: -H PW,GID,shell -N User,PW,UID,GID,Description,Home,shell /etc/passwd | jq -r .table.[].user
```
---
# Aliases
## b
```sh
b ()
{
eval "cd $(for d in $(seq 1 $1);
do
printf ../;
done)"
}
```
---
# `eval`
- Don't
---
# Clear Downloads
```sh
rm -rf ~/Downloads/*
echo "tmpfs $HOME/Downloads tmpfs defaults,size=1G 0 0" | sudo tee -a /etc/fstab
sudo systemctl daemon-reload # Only for systemd
sudo mount -a
mount | tail -1
```
# The Best: `yes`
- `yes`
- `yes no`

BIN
slides/lfs/inferno.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

101
slides/lfs/lfs.md Normal file
View File

@@ -0,0 +1,101 @@
# The Horrifying Cost
If a Git has 2806 commits, and you commit 15MB worth of output each time, then you are a menace and must be stopped.
```text
2806 commits x 15MB = 41GB
```
# Initial Tactics: `.gitignore`
```
*.pdf
*.epub
Makefile
*.xcf
```
...but sometimes it's not enough.
# Saving Your Immortal Soul
![Well deserved fate](slides/lfs/inferno.png)
End the madness with git lfs.
# Setup
```bash
apt install -y git-lfs
cd $PROJECT
git lfs install
```
## Output: Easy Hooks
```bash
cat ~/.git/hooks/pre-push
```
```
#!/bin/sh
command -v git-lfs >/dev/null 2>&1 || { echo >&2
"This repository is configured for Git LFS but
'git-lfs' was not found on your path. If you no
longer wish to use Git LFS, remove this hook by
deleting '.git/hooks/pre-push'."; exit 2; }
git lfs pre-push "$@"
```
# Add Files
Track all the files:
```bash
git lfs track "*.iso"
git lfs track "*.png"
git lfs track "*.jpg"
git lfs track "*.jpeg"
git lfs track "*.tiff"
git lfs track "*.xlsx"
git lfs track "*.docx"
cat .gitattributes
```
Result:
```
*.jpg filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
```
Double check with `git lfs ls-files`.
# Locking
[ If your remote supports it ]
lock your files when working on them.
# Migration
Make sure you have all the files:
```bash
git lfs fetch origin --all
git lfs push $newRemote --all
```
# Problems
`soft-serve` does not yet support `git-lfs`.
(end list)

View File

@@ -0,0 +1,119 @@
# Generalizing Makefiles for All Occasions
- Rules are bad,
- standards are good,
- habits are better.
***
# General Standards
- `make help`
- `make check`
- `sudo make install`
**NB:** we separate `make` from `make install` so that the files are not build with the user `root` as the owner.
***
# Service Standards
- `make backup.tgz`
- `make install`
## Service Backups in Two Files
- `configs`: configuration files, all tracked in git.
- `store`: passwords and binary files, not tracked in git.
## New Abilities Unlocked
- Open Access Administration.
- Sharing admin configs with hacker spaces.
***
## BEHOLD: The Everything Makefile
***
```make
CONFIGS = $(patsubst /%,%,$(shell cat configs))
STORE = $(patsubst /%,%,$(shell cat store))
CP = mkdir -p $(dir $@) && cp -a
IGNORE_FILE = $(shell test -d .git/info && echo .git/info/exclude || echo .gitignore)
GIT_COMMIT = git commit -m"add $@" --no-gpg-sign --no-signoff
SELECTOR != command -v sk || command -v fzy || command -f fzf
.PHONY: all
all: init backup.tgz $(IGNORE_FILE)
backup.tgz: $(CONFIGS) $(STORE)
tar czf $@ $^
$(IGNORE_FILE): store
echo $(STORE) backup.tgz | tr ' ' '\n' > $@
.PHONY: init
init: configs store
configs store:
while con="$$(find /var /etc/ /sys/ -maxdepth 2 -mindepth 1 -type f 2>/dev/null | $(SELECTOR) -p "Select files for $@\nPress Ctrl+d once done")"; do \
echo "$$con"; \
done > $@
$(CONFIGS): %: /%
$(CP) $< $@
git add $@
$(GIT_COMMIT)
$(info made git commit for $@)
$(STORE): %: /%
$(CP) $< $@
clean:
$(RM) -r $(CONFIGS) $(STORE) backup.tgz
```
***
## Example: Soft Serve Makefile
<br>
The `configs` file:
```
/etc/soft-serve.conf
/var/lib/soft-serve/data/config.yaml
/var/lib/soft-serve/data/file
/etc/nginx/sites-enabled/soft.dmz.rs
/etc/nginx/sites-available/soft.dmz.rs
```
<br>
The `store` file:
```
/var/lib/soft-serve/data/lfs
/var/lib/soft-serve/data/repo
/var/lib/soft-serve/data/soft
/etc/letsencrypt/archive/soft
/etc/letsencrypt/live/soft.dm
/var/lib/soft-serve/data/ssh/
```
***
# Other Build Systems
> "*What if I want to use this other thing, instead of a makefile?"
***
# Other Build Systems (Sans Heresy)
> "*What if I want to use this other thing, instead of a makefile?"
- Easy: just use a Makefile.
```make
[ ... ]
public/: src/
python build_pages.py
```

View File

@@ -0,0 +1,34 @@
CONFIGS = $(patsubst /%,%,$(shell cat configs))
STORE = $(patsubst /%,%,$(shell cat store))
CP = mkdir -p $(dir $@) && cp -a
IGNORE_FILE = $(shell test -d .git/info && echo .git/info/exclude || echo .gitignore)
GIT_COMMIT = git commit -m"add $@" --no-gpg-sign --no-signoff
SELECTOR != command -v sk || command -v fzy || command -f fzf
.PHONY: all
all: init backup.tgz $(IGNORE_FILE)
backup.tgz: $(CONFIGS) $(STORE)
tar czf $@ $^
$(IGNORE_FILE): store
echo $(STORE) backup.tgz | tr ' ' '\n' > $@
.PHONY: init
init: configs store
configs store:
while con="$$(find /var /etc/ /sys/ -maxdepth 2 -mindepth 1 -type f 2>/dev/null | $(SELECTOR) -p "Select files for $@\nPress Ctrl+d once done")"; do \
echo "$$con"; \
done > $@
$(CONFIGS): %: /%
$(CP) $< $@
git add $@
$(GIT_COMMIT)
$(info made git commit for $@)
$(STORE): %: /%
$(CP) $< $@
clean:
$(RM) -r $(CONFIGS) $(STORE) backup.tgz

View File

@@ -0,0 +1 @@
*

View File

@@ -0,0 +1,16 @@
MONTHS != date +%B && date -d '1 month' +%B
IP != dig +short myip.opendns.com @resolver1.opendns.com
CITY != curl -s http://api.db-ip.com/v2/free/$(IP) | grep city | cut -d: -f2 | tr -d '"'
TITLES = $(MONTHS)
TITLES += $(CITY)
BOOKS = $(patsubst %,Books/%.md,$(TITLES))
$(BOOKS):
@mkdir -p $(@D)
fortune -l > $@
progs += $(BOOKS)
dross += Books/

View File

@@ -0,0 +1,10 @@
cows = $(patsubst Forts/fortune_%.md,Cows/cow-%.txt,$(wildcard Forts/fortune_*.md))
$(cows): Cows/cow-%.txt: Forts/fortune_%.md
@mkdir -p $(@D)
cat $< | cowsay > $@
progs += forts
progs += $(cows)
dross += Cows/

View File

@@ -0,0 +1,11 @@
fnums != seq 8 | sort -R | head -2
forts = $(patsubst %,Forts/fortune_%.md,$(fnums))
$(forts):
@mkdir -p $(@D)
fortune -s > $@
progs += $(forts)
dross += Forts/

View File

@@ -0,0 +1,14 @@
filter = $(shell cowsay -l | sort -R | head -1)
zoo = $(patsubst Forts/fortune_%.md,Zoo/animal-%.md,$(forts))
$(zoo): Zoo/animal-%.md: Forts/fortune_%.md
@mkdir -p $(@D)
echo '```' > $@
cat $< | cowsay -f $(filter) >> $@
echo '```' >> $@
progs += forts
progs += $(zoo)
dross += Zoo/

1
slides/makefiles/examples/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*

View File

@@ -0,0 +1,8 @@
CHECKER = command -v
.PHONY: check
check:
$(CHECKER) fortune >/dev/null
$(CHECKER) cowsay >/dev/null
file: | check
fortune | cowsay > $@

View File

@@ -0,0 +1,13 @@
forts/big_fort.txt: forts/short.txt forts/long.txt
cat forts/short.txt forts/long.txt > forts/big_fort.txt
forts/:
mkdir forts
forts/short.txt: forts/
fortune -s > forts/short.txt
forts/long.txt: forts/
fortune -l > forts/long.txt

View File

@@ -0,0 +1,21 @@
forts/big_fort.txt: forts/short.txt forts/long.txt
cat $^ > $@
README.md:
echo "For an example makefile for python" > $@
echo "check out the nd6 dice-roller at" >> $@
echo "ssh -p 2222 soft.dmz.rs -t nd6" >> $@
forts/: README.md
mkdir -p $@
forts/short.txt: forts/
fortune -s > $@
forts/long.txt: forts/
fortune -l > $@
clean:
rm -rf forts

View File

@@ -0,0 +1 @@
../PS/omni_makefile

View File

@@ -0,0 +1,18 @@
IMAGES = $(wildcard jpgs/*)
COL = $(patsubst jpgs/%,collection/%,$(IMAGES))
.PHONY: help
help:
$(info try 'show' or 'output')
.PHONY: show
show:
$(info IMAGES is $(IMAGES))
$(info Col is $(COL))
.PHONY: output
output: $(COL)
collection/%.jpg: jpgs/%.jpg
mkdir -p $(@D)
cp $< $@

View File

@@ -0,0 +1,15 @@
CP = ln -f
output: pngs/ldap.png
jpgs/ldap.jpg: ../../ldap/ldap.jpg
mkdir -p $(dir $@)
$(CP) $< $@
pngs/%.png: jpgs/%.jpg
mkdir -p $(dir $@)
$(info making $(@F) in $(@D))
magick $< $@
clean:
$(RM) -r pngs jpgs

View File

@@ -0,0 +1,10 @@
include /etc/os-release
DAY != date +%d
MESSAGE != fortune -s
motd_$(DAY):
$(info Hello $(USER))
$(info Placing message:)
echo "Welcome to $(NAME)" > $@
echo $(MESSAGE) >> $@

View File

@@ -0,0 +1,13 @@
---
title:
- Making Makefiles
author:
- Malin
theme:
- Warsaw
colortheme:
- orchid
---
(presentation in presentation.md)

View File

@@ -0,0 +1,314 @@
# Intro
The fundamental problem:
```bash
git submodule update --init soundscape
cargo build --release
install -pm755 target/release/tap /usr/local/bin/
```
*But you can't type this for each run.*
***
## First Solution
```bash
#!/bin/sh
git submodule update --init soundscape
cargo build --release
install -pm755 target/release/tap /usr/local/bin/
```
At this point, every test takes 10 minutes.
## Second Solution
```bash
#!/bin/sh
[ -f soundscape/.git ] || git submodule update --init soundscape
[ -f target/release/tap ] || cargo build --release
[ -f target/release/tap ] || \
install -pm755 target/release/tap /usr/local/bin/
```
***
# Makefile Solutions
- input, process, output.
- automatic idempotence
```bash
INSTALL_DIR = /usr/local/bin
soundscape/.git:
git submodule update --init soundscape
/usr/local/bin/tap: target/release/tap
install -pm755 target/release/tap $(INSTALL_DIR)
target/release/tap: src soundscape/.git
cargo build --release
```
***
# The Three Sigils
Readable, but slow:
```make fort_1
forts/big_fort.txt: forts/short.txt forts/long.txt
cat forts/short.txt forts/long.txt > forts/big_fort.txt
forts/:
mkdir forts
forts/short.txt: forts/
fortune -s > forts/short.txt
forts/long.txt: forts/
fortune -l > forts/long.txt
```
***
| Make this | From That | From These |
|:---------:|:---------:|:----------:|
| `$@` | `$<` | `$^` |
```make fort_2
forts/big_fort.txt: forts/short.txt forts/long.txt
cat $^ > $@
forts/: README.md
mkdir $@
forts/short.txt: forts/
fortune -s > $@
forts/long.txt: forts/
fortune -l > $@
```
***
# Gotcha: Directories
```make fort_2
forts/big_fort.txt: forts/short.txt forts/long.txt
cat $^ > $@
forts/: README.md
mkdir $@
forts/short.txt: forts/
fortune -s > $@
forts/long.txt: forts/
fortune -l > $@
README.md:
echo "Find the fortunes in the fort dir" > $@
```
***
# Variables
```make vars
include /etc/os-release
DAY != date +%d
MESSAGE != fortune -s
motd_$(DAY):
$(info Placing message:)
echo "Welcome to $(NAME)" > $@
echo $(MESSAGE) >> $@
```
### Gotcha: Hanging Quotes
> echo "Welcome to "Arch Linux""
***
## Add New Variables
```make
make -f vars -e MESSAGE="Red alert, all hands on deck!"
```
### Gotcha: Quote, or Risk Escape
```make
make -f vars -e MESSAGE="<h1> HTML Headers </h1>"
```
***
# Gotcha: Variables from Shell
This works:
```make
file:
$(info Hello $(USER))
```
...but not this:
```make
file:
user=bob
echo $user
```
Nor this:
```make
numbers:
for x in 1 2 3 4 5; do
echo $x
done > $@
```
Nor this:
```make
numbers:
for x in 1 2 3 4 5; do echo $x ; done > $@
```
***
### Ugly Fixes are Ugly
This works, but don't.
```make
file:
for x in 1 2 ;\
do echo $$x ;\
done > $@
```
***
# Phonies, and the Problems with Lies
## Clean
```make
.PHONY: clean
clean:
git clean -fdX
```
## Gotcha: Recompiling without Changes
```make
CHECKER = command -v
.PHONY: check
check:
$(CHECKER) fortune >/dev/null
$(CHECKER) cowsay >/dev/null
file: check # Needs a '|'
fortune | cowsay > $@
```
***
## Non-Compiling Checks
- `make` -n
- *Gotcha*: shell output variables.
***
# The Fourth Sigil: `%`
Create standardized rules with `%`.
```make rules
CP = ln -f
output: pngs/ldap.png
jpgs/ldap.jpg: ../../ldap/ldap.jpg
mkdir -p $(dir $@)
$(CP) $< $@
pngs/%.png: jpgs/%.jpg
mkdir -p $(dir $@)
$(info making $(@F) in $(@D))
magick $< $@
```
***
# Bling: makefile2graph
```graph
┌────────────────┐ ┌────────────────────┐
│ forts/long.txt │ ◀── │ forts/ │
└────────────────┘ └────────────────────┘
│ │
│ │
│ ▼
│ ┌────────────────────┐
│ │ forts/short.txt │
│ └────────────────────┘
│ │
│ │
│ ▼
│ ┌────────────────────┐
└──────────────────▶ │ forts/big_fort.txt │
└────────────────────┘
```
### Gotcha: The Binary is Called `make2graph`
- Works with GUI tools maybe, IDK, I don't use Windows.
- Some systems can use `graph-easy`, but it's outdated.
***
# Patsubst and Wildcards
```make pats
IMAGES = $(wildcard jpgs/*)
COL = $(patsubst jpgs/%,collection/%,$(IMAGES))
.PHONY: show
show:
$(info IMAGES is $(IMAGES))
$(info Col is $(COL))
.PHONY: output
output: $(COL)
collection/%.jpg: jpgs/%.jpg
mkdir -p $(@D)
cp $< $@
```
***
# Use Cases
- Backups
- Making Websites
* `git clone https://gitlab.com/bindrpg/blag`
- `NOT installations`
- ...but maybe installations?
- Setting

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -33,7 +33,8 @@ Ekipa koju interesuje :
# Lokacije # Lokacije
- DC Krov hacklab - DC Krov
- KC Grad radionce - KC Magacin
- Matematicki Faklutet (cekamo)
- Drugi fakulteti, skole? # Kontakt
![qrcode](slides/stajedecentrala/qrcode.png)

20
slides/tor/tor.md Normal file
View File

@@ -0,0 +1,20 @@
# Tor, Relays, Onions
# Tor
- Hides IP address
- Hard to censor
- Timing attack
# Relays
- Middle relays
- Guard relays
- Exit relays
# Onion services
- Hides IP address
- Any TCP service
- No DNS, no SSL
- Private keys

84
slides/vim/vim.md Normal file
View File

@@ -0,0 +1,84 @@
---
title:
- RSA - vi improved
author:
- Malin
theme:
- Warsaw
colortheme:
- orchid
---
# Myths, Half-Truths and Lies
- You can get `vim`-keys in other programs
* Yea, nah
- `vim` [ is/ is not ] an IDE
* UNIX is the IDE
- `vim` is hard
* It's four commands!
## Heresies
> Emacs: "a great operating system, lacking only a decent editor"
> `code`, because everything is a web browser.
# `vim` is a Language
- `d$`
- `y$`
- `dp`
- `dip`
- `di[`
- `vi[p`
# Plugins: Just Don't
```
/home/ghost/.vim
|-- doc
|   |-- completion.txt
|   |-- manet.txt
|   |-- tags
|-- plugin -> /home/ghost/.dots/mess/vim/plugin
|   |-- completion.vim
|   |-- manet.vim
|-- skel -> /home/ghost/.dots/mess/vim/skel
|   |-- bindAnimal.tex
|   |-- bindArtefact.tex
|   |-- bindCharacter.tex
|   |-- wod_vampire.tex
|-- spell
|-- en.utf-8.add
|-- en.utf-8.add.spl
|-- sr.utf-8.spl
```
# Tricks
## Remote Editing
> vim scp://*user*@*myserver*[:*port*]//*path/to/file.txt*
## File Navigation
```bash
vim .
```
## Tabs
```bash
vim -p .bash*
```
## Literally Anything
```bash
r!fortune
```

View File

@@ -0,0 +1,18 @@
---
theme:
- Warsaw
colortheme:
- orchid
---
# Uvod
- Cilj je da stavimo python programe na web stranicu
# Radionica
- mkdir dct-web (pravimo folder koji se zove "dct-web")
- Virtuelno okruzenje, ne zelimo da se sistemski instaliran python ne zelimo da utice na ovu aplikaciju.
Ako imate dva razlicita projekta u pythonu koji koriste razlicite verzije pythona i biblioteka, onda je bolje da se napravi virtuelno okruzenje.
Takodje korisno za pouzdano instaliranje dependency biblioteka.
- Pitanje: Da li web browseri rade u pythonu? Ne, sada su uglavnom napisani u C++
- python3 -m venv venv (pravimo folder venv koji sadrzi fajlove potrebne za to okruzenje)
- source venv/bin/activate (aktiviramo to okruzenje)
- HTTP protokol je skup pravila komunikacije izmedju web browser i web server