In this guide, I'm going to setup a keyfile-encrypted LUKS partition. I will be using a single, max-size partition on a single physical device. My physical device is located at /dev/sde
parted /dev/sde
#!/bin/sh | |
# Writes an APR1-format password hash to the provided <htpasswd-file> for a provided <username> | |
# This is useful where an alternative web server (e.g. nginx) supports APR1 but no `htpasswd` is installed. | |
# The APR1 format provides signifcantly stronger password validation, and is described here: | |
# http://httpd.apache.org/docs/current/misc/password_encryptions.html | |
help (){ | |
cat <<EOF | |
Usage: $0 <htpasswd-file> <username> |
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# | |
# This is how I used it: | |
# $ cat ~/.bash_history | python bash-to-zsh-hist.py >> ~/.zsh_history | |
import sys | |
import time |
#!/usr/bin/env python | |
import os | |
import sys | |
import socket | |
import time | |
import multiprocessing | |
from struct import * | |
try: |
This article is about building asynchronous microservices. I'll compare how this can be achieved in Javascript and Erlang natively, and in Python using RabbitMQ and Celery.
My first encounter with asynchronous programming in python was when building a web backend. Upon completing a purchase, the user should eventually receive a PDF invoice by email. This didn't have to happen immediately during the request; in fact, it was better if it didn't, so as not to slow down the purchase needlessly. At the time I wasn't sure how to implement an asynchronous workflow in python, but a quick google search quickly lead me to Celery and RabbitMQ. Celery is very easy to use; the only pain is setting up a message broker -- RabbitMQ, in my case. Once you're set up, running a task in the background is as easy as writing, in myapp.py
,
:80 { | |
root /serve | |
} |
# Instructions | |
# 1. Update your /etc/hosts file... | |
# > 127.0.0.1 gitea drone | |
# 2. Run gitea + gitea-db and generate the oauth application | |
# > docker-compose -p gitea-drone up gitea gitea-db | |
# - Navigate to http://gitea:3000 to finish the installation and register a user | |
# - Create a oauth application as described here: https://docs.drone.io/installation/providers/gitea/ | |
# - Set the Redirect uri to http://drone:8000/login | |
# 3. Update the docker-compose file with the client_id and client_secret | |
# 4. Fire up all of the services |
A list of useful commands for the ffmpeg command line tool.
Download FFmpeg: https://www.ffmpeg.org/download.html
Full documentation: https://www.ffmpeg.org/ffmpeg.html