Only the most common stuff
# Doesn't work if "this file" is a symlink
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )| [theme] | |
| name = "gruvbox-dark" | |
| parent = "default" | |
| [colors] | |
| # neutral_green | |
| AlertInfo = "#98971a" | |
| # neutral_orange | |
| AlertWarn = "#d65d0e" |
| #!/bin/bash | |
| set -e | |
| # Upload a Sieve script via ManageSieve. Depends on `expect` and `openssl`. | |
| # Currently only tested with Stalwart. | |
| # | |
| # Usage 1: | |
| # SIEVE_FILENAME=foo.sieve \ | |
| # SIEVE_HOSTNAME=mail.yay.wow \ |
Only the most common stuff
# Doesn't work if "this file" is a symlink
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )| # Recursively searches a Python object (composed of both dicts and lists) to find all items with key name `key` | |
| def finditems(obj, key, results: list = None) -> list: | |
| if results is None: | |
| # this is the outermost function call, so init storage for all recursive calls | |
| results = [] | |
| if isinstance(obj, dict): | |
| if key in obj: | |
| results.append(obj[key]) | |
| # recurse through dict |
(Courtesy of bradrox.)
One of the things that interested me most about joining this team was the opportunity to work with a bunch of very competent people. Smart people, working hard can accomplish a tremendous amount more than any process and training can do. Thank you for this opportunity!
Smart people get bored easily. Meetings provide a perfect breeding ground for boredom. Once you’ve said what you need to say, it can be difficult to listen to everyone else who needs to say what they came to say. Smart, bored people have very clever ways of creating distractions that reduce the effectiveness of meetings. However, “effective listening” is one of the most important techniques to master if you want to shorten meetings…and thereby reduce boredom. Here are a few reminders that should improve the effectiveness of your next meeting. You can find many other resources available on the web.
This is how I do it. Considerations going into this approach are:
The examples here will assume that you are going to create a dev cluster for a fictional product named "Bigmoney". It is suggested to not use your product name in your cluster names, since product names are at the whim of marketing and other business tides. Instead, we will use a project codename of "ampersand" to signify "my team's clusters".
| KUBE_TOKEN=$(</var/run/secrets/kubernetes.io/serviceaccount/token) | |
| NAMESPACE=myapp-dev | |
| CONFIGMAP_NAME=testconfig | |
| curl -sSk \ | |
| -X PATCH \ | |
| -d @- \ | |
| -H "Authorization: Bearer $KUBE_TOKEN" \ | |
| -H 'Accept: application/json' \ | |
| -H'Content-Type: application/strategic-merge-patch+json' \ | |
| https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/api/v1/namespaces/$NAMESPACE/configmaps/$CONFIGMAP_NAME <<'EOF' |
| #!/bin/bash | |
| ifconfig | grep -E 'inet |inet addr' | awk '{print $2}' | cut -d ':' -f 2 | grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)' |