From a1c44e502d36252d4447d345089a2e057f79654c Mon Sep 17 00:00:00 2001 From: "Ricardo (XenGi) Band" Date: Fri, 7 Jan 2022 19:51:45 +0100 Subject: [PATCH] initial drop --- .gitignore | 3 + .gitlab-ci.yml | 11 + .gitmodules | 3 + Makefile | 72 +++ content/images/avatar.png | Bin 0 -> 106824 bytes content/images/favicon.ico | Bin 0 -> 12862 bytes content/linux/archlinux_install_guide_2021.md | 529 ++++++++++++++++++ content/linux/pokeshell.md | 36 ++ flex | 1 + pelicanconf.py | 140 +++++ plugins/post_stats/__init__.py | 1 + plugins/post_stats/post_stats.py | 71 +++ plugins/post_stats/readability.py | 56 ++ plugins/post_stats/readme.rst | 49 ++ publishconf.py | 28 + requirements.txt | 7 + tasks.py | 126 +++++ 17 files changed, 1133 insertions(+) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 content/images/avatar.png create mode 100644 content/images/favicon.ico create mode 100644 content/linux/archlinux_install_guide_2021.md create mode 100644 content/linux/pokeshell.md create mode 160000 flex create mode 100644 pelicanconf.py create mode 100644 plugins/post_stats/__init__.py create mode 100644 plugins/post_stats/post_stats.py create mode 100644 plugins/post_stats/readability.py create mode 100644 plugins/post_stats/readme.rst create mode 100644 publishconf.py create mode 100644 requirements.txt create mode 100644 tasks.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ec5a83 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__ +.idea +output diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..4b13773 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,11 @@ +image: python:slim + +before_script: + - pip install -r requirements.txt + +pages: + script: + - pelican content -s publishconf.py + artifacts: + paths: + - output diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..37e028c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "flex"] + path = flex + url = https://github.com/alexandrevicenzi/Flex.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..95c2f8e --- /dev/null +++ b/Makefile @@ -0,0 +1,72 @@ +PY?=python3 +PELICAN?=pelican +PELICANOPTS= + +BASEDIR=$(CURDIR) +INPUTDIR=$(BASEDIR)/content +OUTPUTDIR=$(BASEDIR)/output +CONFFILE=$(BASEDIR)/pelicanconf.py +PUBLISHCONF=$(BASEDIR)/publishconf.py + + +DEBUG ?= 0 +ifeq ($(DEBUG), 1) + PELICANOPTS += -D +endif + +RELATIVE ?= 0 +ifeq ($(RELATIVE), 1) + PELICANOPTS += --relative-urls +endif + +SERVER ?= "0.0.0.0" + +PORT ?= 0 +ifneq ($(PORT), 0) + PELICANOPTS += -p $(PORT) +endif + + +help: + @echo 'Makefile for a pelican Web site ' + @echo ' ' + @echo 'Usage: ' + @echo ' make html (re)generate the web site ' + @echo ' make clean remove the generated files ' + @echo ' make regenerate regenerate files upon modification ' + @echo ' make publish generate using production settings ' + @echo ' make serve [PORT=8000] serve site at http://localhost:8000' + @echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 ' + @echo ' make devserver [PORT=8000] serve and regenerate together ' + @echo ' make devserver-global regenerate and serve on 0.0.0.0 ' + @echo ' ' + @echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html ' + @echo 'Set the RELATIVE variable to 1 to enable relative urls ' + @echo ' ' + +html: + "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +clean: + [ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)" + +regenerate: + "$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +serve: + "$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +serve-global: + "$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER) + +devserver: + "$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) + +devserver-global: + $(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0 + +publish: + "$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS) + + +.PHONY: html help clean regenerate serve serve-global devserver publish diff --git a/content/images/avatar.png b/content/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..a41a5de939e89cb26a8d6bd7467ccd2403f14fad GIT binary patch literal 106824 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%0Dn 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 FngF~k3Wfjx literal 0 HcmV?d00001 diff --git a/content/images/favicon.ico b/content/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8af947889081780f2a1df80ca2956d815b3447de GIT binary patch literal 12862 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 KFe*GkLI40O3W)ds literal 0 HcmV?d00001 diff --git a/content/linux/archlinux_install_guide_2021.md b/content/linux/archlinux_install_guide_2021.md new file mode 100644 index 0000000..a6aa432 --- /dev/null +++ b/content/linux/archlinux_install_guide_2021.md @@ -0,0 +1,529 @@ +title: Arch Linux install guide 2022 Edition +date: 2021-12-24 +tags: arch linux +keywords: arch linux +category: linux +summary: This is how I setup Arch Linux in 2022 + + +# Introduction + +This is the way I usually install Arch Linux. It is heavily based on systemd services to avoid the installation of additional software. Use it as inspiration for your own custom install. + +Arch Linux is all about freedom of choice so these are the choices I made: + +| Component | Implementation | +| ---------------- | ----------------------------- | +| Kernel | Default `linux` | +| Partition layout | GPT | +| Bootloader | `systemd-boot` | +| Initramfs | `systemd` based `mkinitcpio` | +| Partitioning | Primary partitions, single partition for root and home | +| Encryption | LUKS2 for swap and rootfs | +| Root filesystem | Ext4 | +| Swap space | Dedicated partition | +| Network manager | `systemd-networkd` | +| Wifi | `wpa_supplicant` | +| Mobile broadband | Custom `modem-manager` script | +| Name resolution | `systemd-resolved` | +| Network Time | `systemd-timesyncd` | +| Text Editor | Neovim (`nvim`) | +| User shell | `fish` | +| `/bin/sh` Shell | `dash` | +| Privilege excalation | `sudo` | +| Desktop Environment | `xfce` | +| Window Manager | `i3` | +| Terminal | `xfce-terminal` | +| Keyboard layout | en-us international with AtlGr dead keys; caps lock as compose key | + + +Explanation for code examples: + +``` +# command executed as root +$ command executed as unprivileged user +% command executed inside chroot as root +``` + +## Assumptions + +- You install to a notebook or desktop computer (ignore battery related things) +- You install to an NVME drive +- You read through my commands carefully and understand what they do before blindly pasting them into your machine +- I'm not responsible for anything you do + + +__With that out of the way, let's get started!__ + +# Installation + +## Partition disks + +Create 3 primary partitions for: + + - ESP: 1GB, FAT32 + - Swap: + - With hibernation support: same as RAM size + - Without: ~2-8GB depending on the use case of the machine + - RootFS: Rest of your disk + +``` +# cfdisk -z /dev/nvme0n1 +# mkdosfs -F 32 -n ESP /dev/nvme0n1p1 +# cryptsetup LuksFormat --type luks2 --label CRYPTSWAP /dev/nvme0n1p2 +# cryptsetup LuksFormat --type luks2 --label CRYPTROOT /dev/nvme0n1p3 +# cryptsetup open --allow-discards --perf-no_read_workqueue --perf-no_write_workqueue --persistent --type luks2 /dev/nvme0n1p2 cryptswap +# cryptsetup open --allow-discards --perf-no_read_workqueue --perf-no_write_workqueue --persistent --type luks2 /dev/nvme0n1p3 cryptroot +# mkswap -L SWAP /dev/mapper/cryptswap +# mkfs.ext4 -L ROOT -O metadata_csum /dev/mapper/cryptroot +# mount /dev/mapper/cryptroot /mnt -o noatime,discard +# mkdir /mnt/boot +# mount /dev/nvme0n1p1 /mnt/boot -o noatime,discard +# swapon -d /dev/mapper/cryptswap +``` + +Final result should look like this: + +``` +# lsblk +NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS +nvme0n1 259:0 0 953.9G 0 disk +├─nvme0n1p1 259:1 0 1G 0 part /boot +├─nvme0n1p2 259:2 0 32G 0 part +│ └─cryptswap 254:1 0 32G 0 crypt [SWAP] +└─nvme0n1p3 259:3 0 920.9G 0 part + └─cryptroot 254:0 0 920.9G 0 crypt / +``` + + +## Install base system + +Some packages mentioned here depend on your hardware + +``` +# pacstrap /mnt base base-devel linux linux-firmware (intel-ucode|amd-ucode) [sof-firmware] neovim man-db man-pages texinfo +``` + +Generate fstab + +``` +# genfstab -U /mnt >> /mnt/etc/fstab +``` + +## Setup bootloader + +Get UUIDs of drives: + +``` +# blkid +/dev/nvme0n1p1: LABEL_FATBOOT="ESP" LABEL="ESP" UUID="1234-0001" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="deadbeef-1234-5678-90ab-10000001" +/dev/nvme0n1p2: UUID="deadbeef-1234-5678-90ab-00000002" LABEL="CRYPTSWAP" TYPE="crypto_LUKS" PARTUUID="deadbeef-1234-5678-90ab-10000002" +/dev/nvme0n1p3: UUID="deadbeef-1234-5678-90ab-00000003" LABEL="CRYPTROOT" TYPE="crypto_LUKS" PARTUUID="deadbeef-1234-5678-90ab-20000003" +/dev/mapper/cryptswap: LABEL="SWAP" UUID="deadbeef-1234-5678-90ab-20000002" TYPE="swap" +/dev/mapper/cryptroot: LABEL="ROOT" UUID="deadbeef-1234-5678-90ab-20000003" BLOCK_SIZE="4096" TYPE="ext4" +``` + +Install and configure `systemd-boot`: + +``` +# arch-chroot /mnt # we'll stay in chroot for a while so I'll not prefix every code block with that +% bootctl install +% nvim /boot/loader/loader.conf +default arch.conf +timeout 3 +console-mode keep +editor yes +auto-entries +auto-firmware +``` + +Setup boot entries: + +``` +% nvim /boot/loader/entries/arch.conf +title Arch Linux +linux /vmlinuz-linux +initrd /intel-ucode.img +initrd /initramfs-linux.img +options root="UUID=deadbeef-1234-5678-90ab-20000003" resume="UUID=deadbeef-1234-5678-90ab-20000002" rd.luks.name=deadbeef-1234-5678-90ab-00000003=cryptroot rd.luks.name=deadbeef-1234-5678-90ab-00000002=cryptswap rd.luks.options=discard rw + +% nvim /boot/loader/entries/arch-fallback.conf +title Arch Linux (fallback initramfs) +linux /vmlinuz-linux +initrd /intel-ucode.img +initrd /initramfs-linux-fallback.img +options root="UUID=deadbeef-1234-5678-90ab-20000003" resume="UUID=deadbeef-1234-5678-90ab-20000002" rd.luks.name=deadbeef-1234-5678-90ab-00000003=cryptroot rd.luks.name=deadbeef-1234-5678-90ab-00000002=cryptswap rd.luks.options=discard rw +``` + +## Setup vconsole + +``` +% nvim /etc/vconsole.conf +KEYMAP=us +FONT=lat2-16 +FONT_MAP=8859-2 +``` + +## Setup initramfs + +Switching to `systemd` based initramfs: + +``` +% nvim /etc/mkinitcpio.conf +[...] +HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt filesystems fsck) +[...] + +% mkinitcpio -P +``` + +## Setup networking + +Setup for wired connections: + +``` +% nvim /etc/systemd/network/wired.network +[Match] +Name=enp* + +[Network] +DHCP=yes +MulticastDNS=resolve +DNSSEC=allow-downgrade + +[DHCP] +RouteMetric=10 +``` + +Setup for wireless connections: + +``` +% nvim /etc/systemd/network/wireless.network +[Match] +Name=wlp* + +[Network] +DHCP=yes +MulticastDNS=resolve +DNSSEC=allow-downgrade +IPv6PrivacyExtensions=kernel + +[DHCP] +RouteMetric=20 +``` + +Enable IPv6 privacy extensions: + +Execute this first: + +``` +% sysctl net.ipv6.conf.wlp3s0.addr_gen_mode=3 +% ip link set wlp3s0 down +% ip link set wlp3s0 up +% sysctl net.ipv6.conf.wlp3s0.stable_secret +``` + +Take the secret from the last command and put it here: + +``` +% nvim /etc/sysctl.d/40-ipv6.conf +# Enable IPv6 Privacy Extensions +net.ipv6.conf.all.use_tempaddr = 2 +net.ipv6.conf.default.use_tempaddr = 2 +net.ipv6.conf.wlp3s0.use_tempaddr = 2 +net.ipv6.conf.enp5s0.use_tempaddr = 2 + +# Enable IPv6 stable privacy mode +net.ipv6.conf.wlp3s0.stable_secret = 25a3:36e6:9384:1111:9866:def1:abcd:1234 +net.ipv6.conf.wlp3s0.addr_gen_mode = 2 +``` + +Install additional packages for wifi and enable daemon on your wifi interface: + +``` +$ yay -S wpa_supplicant +# systemdctl enable wpa_supplicant@wlp3s0.service +``` + +Setup for mobile broadband follows later. + +``` +% systemctl enable systemd-networkd +% systemctl enable systemd-resolved +% rm /etc/resolv.conf +% ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf +``` + +__The last command will break your DNS but that's fine because we will reboot in a moment.__ +__Maybe you have to do this after reboot. Definitly check if it worked.__ + +## Set hostname + +``` +% echo "myhostname" > /etc/hostname +``` + +## Setup network time and timezone + +``` +% nvim /etc/systemd/timesyncd.conf +[Time] +NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org +FallbackNTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org 3.de.pool.ntp.org + +% systemctl enable systemd-timesyncd +``` + +``` +% ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime +% hwclock --systohc +``` + +## Locale setup + +Edit `/etc/locale.gen` file in your chroot and uncomment `en_US.UTF-8 UTF-8` locales. Then run: + +``` +% locale-gen +``` + +``` +% nvim /etc/locale.conf +LANG=en_US.UTF-8 +LANGUAGE=en_US:en +LC_COLLATE=C +``` + +## Set root password + +``` +% passwd +``` + +## Reboot into new system + +``` +% exit # exit chroot +# umount -R /mnt +# swapoff -a +# cryptsetup close cryptroot +# cryptsetup close cryptswap +# reboot +``` + +## Check if time is correct + +``` +# timedatectl status + Local time: Thu 2021-08-05 18:08:59 CEST + Universal time: Thu 2021-08-05 16:08:59 UTC + RTC time: Thu 2021-08-05 16:09:09 + Time zone: Europe/Berlin (CEST, +0200) +System clock synchronized: no + NTP service: inactive + RTC in local TZ: no +``` + +Enable synchronisation with: + +``` +# timedatectl set-ntp true +``` + +## Create unprivileged user + +``` +# pacman -Syu sudo fish python pkgfile +# useradd -m -G wheel -s /usr/bin/fish bob +# EDITOR=nvim visudo +[...] +%wheel ALL=(ALL) ALL +[...] + +# passwd bob +``` + +## Setup AUR + +__Use unprivileged user from here on__ + +``` +$ sudo pacman -S git +$ git clone https://aur.archlinux.org/yay.git +$ cd yay +$ makepkg -csi +$ cd .. +$ rm -fr yay +``` + +## Some quality of live things + +### Update systemd-boot on ESP when systemd is updated + +``` +$ yay -S systemd-boot-pacman-hook +``` + +### System monitoring with temperatures + +``` +$ yay -S htop lsof strace lm_sensors +# sensors-detect # hit enter until it stops +``` + +### Use `dash` for `/bin/sh` + +This could cause problems, use `checkbashisms` to check your scripts: + +``` +$ yay -S checkbashisms +$ find /usr/bin/ -type f -perm -o=r -print0 | xargs -0 gawk '/^#!.*( |[/])sh/{printf "%s\0", FILENAME} {nextfile}' | xargs -0 checkbashisms +$ yay -S dashbinsh +``` + +### Make pacman nice and fast + +Edit `/etc/pacman.conf` and add/change these lines: + +``` +Color +VerbosePkgLists +ParallelDownloads = 10 +ILoveCandy +``` + +Also enable multilib: + +``` +[multilib] +Include = /etc/pacman.d/mirrorlist +``` + +# Grafical setup + +## Setup gdm + +``` +$ yay -S gdm +# systemctl enable gdm.service +``` + +## Setup XFCE with i3 as window manager + +Install packages first. Choose as many from these groups as you like. You can probably skip most panel plugins: + +``` +$ yay -S xfce4 xfce4-goodies +``` + +My favorites even under i3 are: `xfce4-screenshooter`, `xfce4-terminal`, `thunar` + +For `thunar` setup `gvfs`: + +``` +$ yay -S gvfs gvfs-afc gvfs-goa gvfs-google gvfs-gphoto2 gvfs-mtp gvfs-nfs gvfs-smb +``` + +Install i3 (or i3-gaps if you wanna waste precious space just for looks): + +``` +$ yay -S i3 i3blocks j4-dmenu-desktop +``` + +Switch to i3 as window manager: + +``` +xfconf-query -c xfce4-session -p /sessions/Failsafe/Client0_Command -t string -sa xfsettingsd +xfconf-query -c xfce4-session -p /sessions/Failsafe/Client1_Command -t string -sa i3 +``` + +This should change the value from `xfwm4` to `i3` in `~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-session.xml`. + +## Fonts + +``` +% yay -S ttf-droid ttf-dejavu \ # default stuff +noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra \ # emoji +adobe-source-code-pro-fonts \ # monospace +adobe-source-sans-fonts \ # sans-serif +adobe-source-han-sans-cn-fonts adobe-source-han-sans-tw-fonts adobe-source-han-serif-cn-fonts adobe-source-han-serif-tw-fonts \ # chinese +adobe-source-han-sans-jp-fonts adobe-source-han-serif-jp-fonts \ # japanese +adobe-source-han-sans-kr-fonts # korean +``` + +# Bonus! + +## Optimize pacman/yay + +``` +$ yay -S ccache +``` + +In `/etc/makepkg.conf`: + + - For `CFLAGS` change `-march=native` and `-mtune=native`. + - Set `MAKEFLAGS="-j8"` or any othe rnumber of cores you want to use + - For `BUILDENV` enable `ccache` + +## Wayland + +Enable wayland support for Qt5/6 + +``` +$ yay -S qt5-wayland qt6-wayland glfw-wayland +``` + +Enable wayland support for electron apps by editing `~/.config/electron-flags.conf`: + +``` +--enable-features=UseOzonePlatform +--ozone-platform=wayland +``` + +Install XWayland to support X11 applications: + +``` +$ yay -S xorg-xwayland +``` + +## Sway + +TBC + +``` +yay -S sway \ + xdg-desktop-portal xdg-desktop-portal-wlr \ # screen sharing/webrtc +``` + +## Gnome + +Simply install the gnome group which includes most gnome packages you'll need: + +``` +$ yay -S gnome gnome-tweaks webp-pixbuf-loader +``` + +After a few hundred lines of things scroll by this the stuff that was too fast to read: + +Install these packages that add features you propably want: + +``` +$ yay -S qt5-svg \ # svg icon set support + vulkan-mesa-layers \ # vulkan support + vulkan-intel \ # vulkan support (intel) + gst-libav gst-plugins-ugly \ # media file support + intel-media-driver libva-intel-driver \ # media file support (intel) + eog-plugins \ # image support for eye of gnome + poppler-data \ # pdf feature support + p7zip unrar \ # file-roller archive support + gedit-plugins \ + fwupd dmidecode \ # firmware update support + pipewire-alsa pipewire-pulse pipewire-zeroconf \ # pulseaudio replacement + xdg-desktop-portal xdg-desktop-portal-gtk \ # screen sharing/webrtc + gtk-engines \ # gtk2 themes + chromium \ # browser + evolution evolution-ews highlight \ # email client +``` + +Enable pipewire support in chromium by enabling: `chrome://flags/#enable-webrtc-pipewire-capturer` + diff --git a/content/linux/pokeshell.md b/content/linux/pokeshell.md new file mode 100644 index 0000000..9959191 --- /dev/null +++ b/content/linux/pokeshell.md @@ -0,0 +1,36 @@ +title: Pokéshell +date: 2016-01-01 23:30 +category: linux +tags: pokemon, shell, bash, fish, imagemagick +slug: pokeshell + +A friend of me had the idea of a shell displaying a random pokémon on launch. I liked the idea and couldn't resist to implement it over christmas. + + + +What the package does is, it downloads all pokémon images in a defined range which is 1-151 by default (I'm old these are the ones I know) and converts the images to escape sequences. These are saved in `/usr/share/pokeshell`. + +Now when you ipopen a new shell you could display one of them randomly by putting this code in your `~/.bashrc`: + +```sh +cat /usr/share/pokeshell/\$((\$RANDOM % 151 + 1)).pokemon +``` + +Or if you use fish like me put this in your `~/.config/fish/functions/fish_prompt.fish`: + +```sh +function fish_greeting + set r (random) + cat /usr/share/pokeshell/(math \"\$r % 151 + 1\").pokemon +end +``` + +The images are downloaded using the [Pokéapi][pokeapi]. For the conversation I use Imagemagick and a tool called [img2xterm][img2xterm]. + +You can find the package in the [AUR][aur-pokeshell]. + + +[pokeapi]: http://pokeapi.co +[img2xterm]: https://github.com/rossy/img2xterm +[aur-pokeshell]: https://aur.archlinux.org/packages/pokeshell/ + diff --git a/flex b/flex new file mode 160000 index 0000000..7e99f9b --- /dev/null +++ b/flex @@ -0,0 +1 @@ +Subproject commit 7e99f9bbe681a5b7edef9748bc6f6ae10f4862a7 diff --git a/pelicanconf.py b/pelicanconf.py new file mode 100644 index 0000000..a71d851 --- /dev/null +++ b/pelicanconf.py @@ -0,0 +1,140 @@ +from datetime import datetime + +AUTHOR = 'XenGi' +SITEURL = '' +SITENAME = 'XenGis blog' +SITETITLE = 'XenGi' +SITESUBTITLE = '' +SITEDESCRIPTION = 'A typical way to world domination' +SITELOGO = SITEURL + '/images/avatar.png' +FAVICON = SITEURL + '/images/favicon.ico' +BROWSER_COLOR = '#333' +ROBOTS = 'index, follow' +CC_LICENSE = { + 'name': 'Creative Commons Attribution-ShareAlike', + 'version': '4.0', + 'slug': 'by-sa', + 'icon': True, + 'language': 'en_US', +} +COPYRIGHT_NAME = AUTHOR +COPYRIGHT_YEAR = datetime.now().year +STATIC_PATHS = [ + 'extra/custom.css' +] +EXTRA_PATH_METADATA = { + 'extra/custom.css': {'path': 'static/custom.css'}, +} +CUSTOM_CSS = 'static/custom.css' +MAIN_MENU = True +PLUGINS = [ + 'post_stats', +] +PLUGIN_PATHS = [ + 'plugins/' +] +JINJA_ENVIRONMENT = {} +I18N_TEMPLATES_LANG = 'en' +DEFAULT_LANG = 'en' +OG_LOCALE = 'en_US' +LOCALE = 'en_US' +THEME = 'flex' +OUTPUT_PATH = 'output/' +PATH = 'content/' +TIMEZONE = 'Europe/Berlin' +# Feed generation is usually not desired when developing +FEED_ALL_ATOM = None +CATEGORY_FEED_ATOM = None +TRANSLATION_FEED_ATOM = None +AUTHOR_FEED_ATOM = None +AUTHOR_FEED_RSS = None +USE_FOLDER_AS_CATEGORY = False +# Social widget +MENUITEMS = [] +SOCIAL = [ + ('Email', 'mailto:blog@xengi.de'), +] +MENUITEMS = [ + ('Archives', '/archives.html'), + ('Categories', '/categories.html'), + ('Tags', '/tags.html'), +] +STATIC_PATHS = [ + 'images', +] +DEFAULT_PAGINATION = False +USE_GOOGLE_FONTS = True + +# Uncomment following line if you want document-relative URLs when developing +#RELATIVE_URLS = True + +DEFAULT_CATEGORY = 'misc' +DISPLAY_PAGES_ON_MENU = True +DISPLAY_CATEGORIES_ON_MENU = True +MARKDOWN = { + 'extension_configs': { + 'markdown.extensions.codehilite': {'css_class': 'highlight'}, + 'markdown.extensions.extra': {}, + 'markdown.extensions.meta': {}, + 'markdown.extensions.nl2br': {}, + 'markdown.extensions.smarty': {}, + 'markdown.extensions.sane_lists': {}, + }, + 'output_format': 'xhtml5', +} +PAGE_PATHS = ['pages'] +STATIC_PATHS = ['images'] +TYPOGRIFY = True +ARTICLE_URL = 'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/' +ARTICLE_SAVE_AS = 'posts/{date:%Y}/{date:%b}/{date:%d}/{slug}/index.html' +PAGE_URL = 'pages/{slug}/' +PAGE_SAVE_AS = 'pages/{slug}/index.html' +AUTHOR_URL = 'author/{slug}.html' +AUTHOR_SAVE_AS = 'author/{slug}.html' +CATEGORY_URL = 'category/{slug}.html' +CATEGORY_SAVE_AS = 'category/{slug}.html' +TAG_URL = 'tag/{slug}.html' +TAG_SAVE_AS = 'tag/{slug}.html' + +# Flex settings + +USE_LESS = True + +## dark mode + +THEME_COLOR = 'dark' +THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE = True +THEME_COLOR_ENABLE_USER_OVERRIDE = True + +## code highlight + +PYGMENTS_STYLE = 'emacs' +PYGMENTS_STYLE_DARK = 'monokai' +#PYGMENTS_STYLE = 'solarized-light' +#PYGMENTS_STYLE_DARK = 'solarized-dark' + +# Plugin settings + +## related posts + +RELATED_POSTS_MAX = 10 + +## sitemap + +SITEMAP = { + 'format': 'xml', + 'priorities': { + 'articles': 0.5, + 'indexes': 0.5, + 'pages': 0.5 + }, + 'changefreqs': { + 'articles': 'monthly', + 'indexes': 'daily', + 'pages': 'monthly' + } +} + +## isso + +ISSO_URL = '' diff --git a/plugins/post_stats/__init__.py b/plugins/post_stats/__init__.py new file mode 100644 index 0000000..2313bd5 --- /dev/null +++ b/plugins/post_stats/__init__.py @@ -0,0 +1 @@ +from .post_stats import * diff --git a/plugins/post_stats/post_stats.py b/plugins/post_stats/post_stats.py new file mode 100644 index 0000000..80cfdcd --- /dev/null +++ b/plugins/post_stats/post_stats.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" +Post Statistics +======================== + +This plugin calculates various statistics about a post and stores them in an article.stats dictionary: + +wc: how many words +read_mins: how many minutes to read this article, based on 250 wpm (http://en.wikipedia.org/wiki/Words_per_minute#Reading_and_comprehension) +word_counts: frquency count of all the words in the article; can be used for tag/word clouds/ +fi: Flesch-kincaid Index/ Reading Ease +fk: Flesch-kincaid Grade Level + +""" + +from pelican import signals +from bs4 import BeautifulSoup +import re +from collections import Counter + +from .readability import * + + +def calculate_stats(instance): + + if instance._content is not None: + stats = {} + content = instance._content + + # How fast do average people read? + WPM = 250 + + # Use BeautifulSoup to get readable/visible text + raw_text = BeautifulSoup(content, 'html.parser').getText() + + # Process the text to remove entities + entities = r'\&\#?.+?;' + raw_text = raw_text.replace(' ', ' ') + raw_text = re.sub(entities, '', raw_text) + + # Flesch-kincaid readbility stats counts sentances, + # so save before removing punctuation + tmp = raw_text + + # Process the text to remove punctuation + drop = u'.,?!@#$%^&*()_+-=\|/[]{}`~:;\'\"‘’—…“”' + raw_text = raw_text.translate(dict((ord(c), u'') for c in drop)) + + # Count the words in the text + words = raw_text.lower().split() + word_count = Counter(words) + + # Return the stats + stats['word_counts'] = word_count + stats['wc'] = sum(word_count.values()) + + # Calulate how long it'll take to read, rounding up + stats['read_mins'] = (stats['wc'] + WPM - 1) // WPM + if stats['read_mins'] == 0: + stats['read_mins'] = 1 + + # Calculate Flesch-kincaid readbility stats + readability_stats = stcs, words, sbls = text_stats(tmp, stats['wc']) + stats['fi'] = "{:.2f}".format(flesch_index(readability_stats)) + stats['fk'] = "{:.2f}".format(flesch_kincaid_level(readability_stats)) + + instance.stats = stats + + +def register(): + signals.content_object_init.connect(calculate_stats) diff --git a/plugins/post_stats/readability.py b/plugins/post_stats/readability.py new file mode 100644 index 0000000..b267098 --- /dev/null +++ b/plugins/post_stats/readability.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +# Adadpted from here: http://acdx.net/calculating-the-flesch-kincaid-level-in-python/ +# See here for details: http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_test + +from __future__ import division +import re + + +def mean(seq): + return sum(seq) / len(seq) + + +def syllables(word): + if len(word) <= 3: + return 1 + + word = re.sub(r"(es|ed|(?= 2] + + if wc: + words = wc + else: + words = sum(len(s) for s in stcs) + + sbls = sum(syllables(w) for s in stcs for w in s) + + return len(stcs), words, sbls + + +def flesch_index(stats): + stcs, words, sbls = stats + if stcs == 0 or words == 0: + return 0 + return 206.835 - 1.015 * (words / stcs) - 84.6 * (sbls / words) + + +def flesch_kincaid_level(stats): + stcs, words, sbls = stats + if stcs == 0 or words == 0: + return 0 + return 0.39 * (words / stcs) + 11.8 * (sbls / words) - 15.59 diff --git a/plugins/post_stats/readme.rst b/plugins/post_stats/readme.rst new file mode 100644 index 0000000..89fc13b --- /dev/null +++ b/plugins/post_stats/readme.rst @@ -0,0 +1,49 @@ +Post Statistics +================== + +A Pelican plugin to calculate various statistics about a post and store them in an article.stats dictionary: + +- ``wc``: how many words +- ``read_mins``: how many minutes would it take to read this article, based on 250 wpm (http://en.wikipedia.org/wiki/Words_per_minute#Reading_and_comprehension) +- ``word_counts``: frquency count of all the words in the article; can be used for tag/word clouds +- ``fi``: Flesch-kincaid Index/ Reading Ease (see: http://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests) +- ``fk``: Flesch-kincaid Grade Level + +Example: + +.. code-block:: python + + { + 'wc': 2760, + 'fi': '65.94', + 'fk': '7.65', + 'word_counts': Counter({u'to': 98, u'a': 90, u'the': 83, u'of': 50, ...}), + 'read_mins': 12 + } + +This allows you to output these values in your templates, like this, for example: + +.. code-block:: html+jinja + +

~{{ article.stats['read_mins'] }} min read

+
    +
  • Flesch-kincaid Index/ Reading Ease: {{ article.stats['fi'] }}
  • +
  • Flesch-kincaid Grade Level: {{ article.stats['fk'] }}
  • +
+ +The ``word_counts`` variable is a python ``Counter`` dictionary and looks something like this, with each unique word and it's frequency: + +.. code-block:: python + + Counter({u'to': 98, u'a': 90, u'the': 83, u'of': 50, u'karma': 50, ..... + +and can be used to create a tag/word cloud for a post. + +Requirements +---------------- + +`post_stats` requires BeautifulSoup. + +.. code-block:: console + + $ pip install beautifulsoup4 diff --git a/publishconf.py b/publishconf.py new file mode 100644 index 0000000..e23f1a5 --- /dev/null +++ b/publishconf.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +# This file is only used if you use `make publish` or +# explicitly specify it as your config file. + +import os +import sys +sys.path.append(os.curdir) +from pelicanconf import * + +# If your site is available via HTTPS, make sure SITEURL begins with https:// +SITEURL = 'https://xengi.de' +RELATIVE_URLS = False + +FEED_ATOM = 'feeds/atom.xml' +FEED_RSS = 'feeds/rss.xml' +FEED_ALL_ATOM = 'feeds/all.atom.xml' +FEED_ALL_RSS = 'feeds/all.rss.xml' +CATEGORY_FEED_ATOM = 'feeds/category/%s.atom.xml' +CATEGORY_FEED_RSS = 'feeds/category/%s.rss.xml' +AUTHOR_FEED_ATOM = 'feeds/author/%s.atom.xml' +AUTHOR_FEED_RSS = 'feeds/author/%s.rss.xml' +TAG_FEED_ATOM = 'feeds/tag/%s.atom.xml' +TAG_FEED_RSS = 'feeds/tag/%s.rss.xml' + +DELETE_OUTPUT_DIRECTORY = True + +USE_LESS = False diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d97e816 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +pelican[markdown] +markdown +pelican-sitemap +pelican-related-posts +pelican-neighbors +typogrify +beautifulsoup4 # plugin: post_stats, summary diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..12634e8 --- /dev/null +++ b/tasks.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- + +import os +import shlex +import shutil +import sys +import datetime + +from invoke import task +from invoke.main import program +from invoke.util import cd +from pelican import main as pelican_main +from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer +from pelican.settings import DEFAULT_CONFIG, get_settings_from_file + +SETTINGS_FILE_BASE = 'pelicanconf.py' +SETTINGS = {} +SETTINGS.update(DEFAULT_CONFIG) +LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE) +SETTINGS.update(LOCAL_SETTINGS) + +CONFIG = { + 'settings_base': SETTINGS_FILE_BASE, + 'settings_publish': 'publishconf.py', + # Output path. Can be absolute or relative to tasks.py. Default: 'output' + 'deploy_path': SETTINGS['OUTPUT_PATH'], + # Host and port for `serve` + 'host': 'localhost', + 'port': 8000, +} + +@task +def clean(c): + """Remove generated files""" + if os.path.isdir(CONFIG['deploy_path']): + shutil.rmtree(CONFIG['deploy_path']) + os.makedirs(CONFIG['deploy_path']) + +@task +def build(c): + """Build local version of site""" + pelican_run('-s {settings_base}'.format(**CONFIG)) + +@task +def rebuild(c): + """`build` with the delete switch""" + pelican_run('-d -s {settings_base}'.format(**CONFIG)) + +@task +def regenerate(c): + """Automatically regenerate site upon file modification""" + pelican_run('-r -s {settings_base}'.format(**CONFIG)) + +@task +def serve(c): + """Serve site at http://$HOST:$PORT/ (default is localhost:8000)""" + + class AddressReuseTCPServer(RootedHTTPServer): + allow_reuse_address = True + + server = AddressReuseTCPServer( + CONFIG['deploy_path'], + (CONFIG['host'], CONFIG['port']), + ComplexHTTPRequestHandler) + + sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG)) + server.serve_forever() + +@task +def reserve(c): + """`build`, then `serve`""" + build(c) + serve(c) + +@task +def preview(c): + """Build production version of site""" + pelican_run('-s {settings_publish}'.format(**CONFIG)) + +@task +def livereload(c): + """Automatically reload browser tab upon file modification.""" + from livereload import Server + + def cached_build(): + cmd = '-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True' + pelican_run(cmd.format(**CONFIG)) + + cached_build() + server = Server() + theme_path = SETTINGS['THEME'] + watched_globs = [ + CONFIG['settings_base'], + '{}/templates/**/*.html'.format(theme_path), + ] + + content_file_extensions = ['.md', '.rst'] + for extension in content_file_extensions: + content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension) + watched_globs.append(content_glob) + + static_file_extensions = ['.css', '.js'] + for extension in static_file_extensions: + static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension) + watched_globs.append(static_file_glob) + + for glob in watched_globs: + server.watch(glob, cached_build) + server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path']) + + +@task +def publish(c): + """Publish to production via rsync""" + pelican_run('-s {settings_publish}'.format(**CONFIG)) + c.run( + 'rsync --delete --exclude ".DS_Store" -pthrvz -c ' + '-e "ssh -p {ssh_port}" ' + '{} {ssh_user}@{ssh_host}:{ssh_path}'.format( + CONFIG['deploy_path'].rstrip('/') + '/', + **CONFIG)) + + +def pelican_run(cmd): + cmd += ' ' + program.core.remainder # allows to pass-through args to pelican + pelican_main(shlex.split(cmd)) \ No newline at end of file