diff --git a/content/blog/exportpydecorator.md b/content/blog/exportpydecorator.md new file mode 100644 index 0000000..127aecb --- /dev/null +++ b/content/blog/exportpydecorator.md @@ -0,0 +1,33 @@ +--- +title: "Quick Python: Export Decorator" +date: 2020-06-14T22:15:38-04:00 +draft: false +tags: [] +--- + +A great [StackOverflow post](https://stackoverflow.com/a/35710527) by [Aaron Hall](https://stackoverflow.com/users/541136/aaron-hall) that shows how you can create an `export` decorator in order to not have to specify all the names you want to expose via [`__all__`](https://brandonrozek.com/blog/pythonall/). + +The Decorator: + +```python +import sys + +def export(fn): + mod = sys.modules[fn.__module__] + if hasattr(mod, '__all__'): + mod.__all__.append(fn.__name__) + else: + mod.__all__ = [fn.__name__] + return fn +``` + +Usage: + +```python +__all__ = [] + +@export # otherwise __all__ = ['test'] +def test(): + print("test") +``` + diff --git a/content/blog/extract.md b/content/blog/extract.md new file mode 100644 index 0000000..8eb8c98 --- /dev/null +++ b/content/blog/extract.md @@ -0,0 +1,32 @@ +--- +title: "Extract All the Things" +date: 2020-06-14T22:23:37-04:00 +draft: false +tags: [] +--- + +[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) from Network World wrote a [great post](https://www.networkworld.com/article/3244007/extracting-from-compressed-files-on-linux.html) on how to standardize extracting files on Linux. It's a shell script that works so well, that I placed it in my [`~/.local/bin` directory](https://brandonrozek.com/blog/customexec/) in order to call upon it at any time. Here's part of it, check out the post for more. + +```bash +#!/bin/bash +if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.tar.xz) tar zxvf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) rar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.xz) xz -d $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *) echo "contents of '$1' cannot be extracted" ;; + esac +else + echo "'$1' is not recognized as a compressed file" +fi +``` + diff --git a/content/blog/gpgagentasssh.md b/content/blog/gpgagentasssh.md new file mode 100644 index 0000000..141a3d4 --- /dev/null +++ b/content/blog/gpgagentasssh.md @@ -0,0 +1,33 @@ +--- +title: "GPG Agent as SSH Agent" +date: 2020-06-14T22:33:01-04:00 +draft: false +tags: [] +--- + +GPG Agent has the ability to act as a SSH Agent. This allows the use of Authentication keys on Smartcards to be used with SSH as well. + +First we need to enable SSH support in GPG Agent, + +```bash +echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf +``` + +Then we need to specify an environmental variable for the SSH Daemon to use GPG Agent + +```bash +echo "export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)" >> ~/.bashrc +``` + +If you want it to be active immediately, then source the bashrc, + +```bash +source ~/.bashrc +``` + +If you have a smartcard plugged in, then you should be able to see it via the GPG agent + +```bash +ssh-add -l +``` + diff --git a/content/blog/tokindle.md b/content/blog/tokindle.md new file mode 100644 index 0000000..ffde105 --- /dev/null +++ b/content/blog/tokindle.md @@ -0,0 +1,50 @@ +--- +title: "PDF To Kindle" +date: 2020-06-14T21:54:21-04:00 +draft: false +tags: [] +--- + +This post will outline a process I take in order to get content from a website onto my Kindle. + +## Suggested Software + +- To save a webpage as a PDF, we will use [WeasyPrint](https://weasyprint.org/). +- To convert the PDF into a more Kindle readable format, including converting math type properly, we're going to use [k2pdfopt](https://www.willus.com/k2pdfopt/). +- Finally we're going to use [Calibre](https://calibre-ebook.com/) to copy metadata and convert to an ebook format. + +```bash +sudo apt install weasyprint k2pdfopt calibre +``` + +## Process + +Now I'll show how we can take the [Noise Protocol specification](http://noiseprotocol.org/noise.html) and send it to the Kindle. + +First let's download the page as a PDF + +```bash +weasyprint https://noiseprotocol.org/noise.html noise.pdf +``` + +Then let's use `k2pdfopt` to convert the PDF to a more Kindle friendly format, + +```bash +k2pdfopt noise.pdf -ui- -x +``` + +This will produce the file `noise_k2opt.pdf`, but sadly without the metadata. We can copy that over, + +```bash +ebook-meta noise.pdf --to-opf temp.opf && \ +ebook-meta noise_k2opt.pdf --from-opf temp.opf && \ +rm temp.opf +``` + +Finally we can convert it to a Kindle friendly file format. + +```bash +ebook-convert noise_k2opt.pdf noise.azw3 +``` + +This will give us `noise.azw3` which we can then transfer over to the Kindle. \ No newline at end of file