- Install packages
- Download python3.9
- Build and install python binaries
> sudo apt update
> sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
> sudo apt update
> sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
const QUERY_CACHE_KEY = 'CACHE_V_0'; | |
const GRAPHQL_URL = 'https://example.com/graphql'; | |
self.addEventListener('fetch', e => { | |
if (isGraphql(e.request)) { | |
handleGraphQL(e); | |
} | |
}); |
Code is clean if it can be understood easily – by everyone on the team. Clean code can be read and enhanced by a developer other than its original author. With understandability comes readability, changeability, extensibility and maintainability.
const { assert } = require('chai'); | |
function isError(e) { | |
if (typeof e === 'string') { | |
return Promise.reject(new Error(e)); | |
} | |
return Promise.resolve(e); | |
} |
Title: Simple Sabotage Field Manual Author: Strategic Services Office of Strategic Services
Ansible playbook to setup HTTPS using Let's encrypt on nginx. | |
The Ansible playbook installs everything needed to serve static files from a nginx server over HTTPS. | |
The server pass A rating on [SSL Labs](https://www.ssllabs.com/). | |
To use: | |
1. Install [Ansible](https://www.ansible.com/) | |
2. Setup an Ubuntu 16.04 server accessible over ssh | |
3. Create `/etc/ansible/hosts` according to template below and change example.com to your domain | |
4. Copy the rest of the files to an empty directory (`playbook.yml` in the root of that folder and the rest in the `templates` subfolder) |
"""Calculate the probability of generating a duplicate random number after | |
generating "n" random numbers in the range "d". | |
Usage: python birthday_probability.py n [d=365] | |
Each value can either be an integer directly, or in the format "2**x", where | |
x is the number of bits in the value. | |
For example, to calculate the probability that two people will have the same | |
birthday in a room with 23 people: |
'use strict'; | |
describe('mocha before hooks', function () { | |
before(() => console.log('*** top-level before()')); | |
beforeEach(() => console.log('*** top-level beforeEach()')); | |
describe('nesting', function () { | |
before(() => console.log('*** nested before()')); | |
beforeEach(() => console.log('*** nested beforeEach()')); | |
it('is a nested spec', () => true); | |
}); |
When connecting to a remote server via SSH it is often convenient to use SSH agent forwarding so that you don't need a separate keypair on that server for connecting to further servers.
This is enabled by adding the
ForwardAgent yes
option to any of your Host
entries in ~/.ssh/config
(or alternatively with the -A
option). Don't set this option in a wildcard Host *
section since any user on the remote server that can bypass file permissions can now als use keys loaded in your SSH agent. So only use this with hosts you trust.
# A guide to prevent pain and suffering while upgrading to OS X Mavericks | |
# This will vary greatly depending on system set up, so read the instructions carefully | |
# Back up Virtulenvs | |
#################### | |
# Very important! | |
# For each virtualenv you have, run "pip freeze > requirements.txt" while in the activated virtualenv | |
# in order to prevent loss of dependencies during the upgrade. |