Andy Thomason is a Senior Programmer at Genomics PLC. He has been witing graphics systems, games and compilers since the '70s and specialises in code performance.
import { ServerResponse, type IncomingMessage } from "node:http"; | |
import { Http2ServerRequest, Http2ServerResponse } from "node:http2"; | |
import { isArrayBufferView } from "node:util/types"; | |
const INTERNAL_BODY = Symbol("internal_body"); | |
const GlobalResponse = Response; | |
globalThis.Response = class Response extends GlobalResponse { | |
[INTERNAL_BODY]: BodyInit | null | undefined = null; |
# To generate mitm cert and key: | |
# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -passout pass:"third-wheel" -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com" | |
# see: https://github.com/campbellC/third-wheel | |
[package] | |
name = "http-ytproxy" | |
version = "0.1.0" | |
edition = "2021" | |
-- DateDiff function that returns the difference between two timestamps in the given date_part (weeks, months, etc) as an integer | |
-- This behaves like the DateDiff function in warehouses like Redshift and Snowflake, which count the boundaries between date_parts | |
CREATE OR REPLACE FUNCTION datediff (date_part VARCHAR(30), start_t TIMESTAMP, end_t TIMESTAMP) | |
RETURNS INT AS $diff$ | |
DECLARE | |
years INT = 0; | |
days INT = 0; | |
hours INT = 0; | |
minutes INT = 0; |
Recently, news broke about a new possible offline attack on WPA2 using PMKID. To summarize the attack, WPA2 protected APs can end up broadcasting PMKID values which can then be used to offline-brute-force the password.
These PMKID values are computed this way:
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
Run the following in the terminal:
Install the gcc-7 packages:
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install g++-7 -y
Set it up so the symbolic links gcc
, g++
point to the newer version:
// code courtesy of Toby team | |
chrome.storage.local.get("state", o => ( | |
((f, t) => { | |
let e = document.createElement("a"); | |
e.setAttribute("href", `data:text/plain;charset=utf-8,${encodeURIComponent(t)}`); | |
e.setAttribute("download", f); | |
e.click(); | |
})(`TobyBackup${Date.now()}.json`, o.state) | |
)); |
By default when Nginx starts receiving a response from a FastCGI backend (such as PHP-FPM) it will buffer the response in memory before delivering it to the client. Any response larger than the set buffer size is saved to a temporary file on disk. This process is also explained at the Nginx ngx_http_fastcgi_module page document page.
Since disk is slow and memory is fast the aim is to get as many FastCGI responses passing through memory only. On the flip side we don't want to set an excessively large buffer as they are created and sized on a per request basis (i.e. it's not shared memory).
The related Nginx options are:
fastcgi_buffering
appeared in Nginx 1.5.6 (1.6.0 stable) and can be used to turn buffering completely on/off. It's on by default.- [
fastcgi_buffer_size
](http://nginx.org/en/
#!/usr/bin/env python | |
# encoding: utf-8 | |
""" | |
python_3_email_with_attachment.py | |
Created by Robert Dempsey on 12/6/14. | |
Copyright (c) 2014 Robert Dempsey. Use at your own peril. | |
This script works with Python 3.x | |
NOTE: replace values in ALL CAPS with your own values |