- Recipes
- Anonymous GET access
- Anonymous GET access - match HTTP referrer
- Full access for specific IAM user/role
- GET/PUT/DELETE access to specific path within a bucket
- Restricted LIST & PUT/DELETE access to specific path within a bucket
- Full access (and S3 console) for specific IAM users
- Bucket and object delete deny
| require 'rest_client' | |
| require 'json' | |
| class RescueTimeProfile | |
| API_BASE_URL = 'https://www.rescuetime.com/anapi' | |
| TIME_SCORE_SCALE = { | |
| 2 => 1, | |
| 1 => 0.75, | |
| 0 => 0.50, |
Spurred by recent events (https://news.ycombinator.com/item?id=8244700), this is a quick set of jotted-down thoughts about the state of "Semantic" Versioning, and why we should be fighting the good fight against it.
For a long time in the history of software, version numbers indicated the relative progress and change in a given piece of software. A major release (1.x.x) was major, a minor release (x.1.x) was minor, and a patch release was just a small patch. You could evaluate a given piece of software by name + version, and get a feeling for how far away version 2.0.1 was from version 2.8.0.
But Semantic Versioning (henceforth, SemVer), as specified at http://semver.org/, changes this to prioritize a mechanistic understanding of a codebase over a human one. Any "breaking" change to the software must be accompanied with a new major version number. It's alright for robots, but bad for us.
SemVer tries to compress a huge amount of information — the nature of the change, the percentage of users that wil
| class AllowPUTAsCreateMixin(object): | |
| """ | |
| The following mixin class may be used in order to support PUT-as-create | |
| behavior for incoming requests. | |
| """ | |
| def update(self, request, *args, **kwargs): | |
| partial = kwargs.pop('partial', False) | |
| instance = self.get_object_or_none() | |
| serializer = self.get_serializer(instance, data=request.data, partial=partial) | |
| serializer.is_valid(raise_exception=True) |
The Macbook Pro 11,3 (late 2013, Retina) is equipped with two GPUs:
- discrete: NVidia GPU: GeForce GT 750 M
- integrated: Intel Iris Pro
Currently under Linux the Intel GPU can only be used with the help of:
- gfxCardStatus v2.2.1
- faking the os identification:
- https://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html
- https://bbs.archlinux.org/viewtopic.php?pid=1368083
| TargetVendor=0x12d1 | |
| TargetProduct=0x1f1c | |
| MessageContent="55534243123456780000000000000011062000000101000100000000000000" |
Moved to git repository: https://github.com/denji/golang-tls
# Key considerations for algorithm "RSA" ≥ 2048-bit
openssl genrsa -out server.key 2048
# Key considerations for algorithm "ECDSA" ≥ secp384r1
# List ECDSA the supported curves (openssl ecparam -list_curves)This is a collection of snippets, not a comprehensive guide. I suggest you start with Operational PGP.
Here is an incomplete list of things that are different from other approaches:
- I don't use keyservers. Ever.
- Yes, I use Gmail instead of some bespoke hipster freedom service
| swagger: "2.0" | |
| info: | |
| version: "1.0.0" | |
| title: minimal | |
| description: News Articles ftw | |
| paths: | |
| /users: | |
| get: | |
| responses: | |
| "200": |
| %s/\"\([^"]*\)\"/'\1'/g |