Instantly share code, notes, and snippets.

View local-overrides.md

Env vars

Sandboxing

  • NOTION_HOME

Tool overrides

Possible environment variables

View unpack-fetch-progress.md
  • We want to provide good quality progress meters at console for fetch+unpack operation
  • Measuring progress smoothly requires knowing not just how many compressed bytes you have read but how many decompressed bytes you have written
  • Knowing the percentage complete of decompressed bytes written requires knowing the total decompressed size
  • Knowing the total decompressed size requires reading the field of the gzip layout that indicates decompressed size
  • That field is at a fixed offset from the end of the gzip file
  • In order to still get benefit of streaming we have to make a separate HTTP HEAD request to find the content length of the file and then a subsequent GET request to fetch just that tiny byte range to read that one field
  • (This does have overhead of a couple extra HTTP requests — anecdotally this seems cheap enough not to matter but maybe could matter in some environments?)
  • Unfortunately for GitHub releases, the files redirect to S3 URLs which seem to reject HEAD requests with a 403
  • We c
View a-few-changes.md

Directory layout

.
├── bin
│   ├── node
│   ├── npm ~> ../exe/launchscript
│   ├── npx ~> ../exe/launchscript
│   └── yarn
├── config.toml
View alts.md

Symmetric

Use

  • notion use node 8
  • notion use ember-cli 3.4
  • notion use yarn 1.10
  • notion install heroku 7
  • notion install node 10
  • notion install npm default
View into_js.rs
pub trait IntoJs<'a, V: Value> {
fn into_js<C: Context<'a>>(self, cx: &mut C) -> Handle<'a, V>;
}
impl<'a, V: Value> IntoJs<'a, V> for Handle<'a, V> {
fn into_js<C: Context<'a>>(self, _: &mut C) -> Handle<'a, V> {
self
}
}
View flatness.txt
neon
Context, CallContext, FunctionContext, MethodContext, ComputeContext, ExecuteContext, ModuleContext, TaskContext
CallKind
VmGuard
VmResult, JsResult, JsResultExt, Throw
Borrow, BorrowMut, Ref, RefMut, LoanError
JsArray, JsArrayBuffer, JsBoolean, JsBuffer, JsError, JsFunction, JsNull, JsNumber, JsObject, JsString, JsUndefined, JsValue
Value
BinaryData
StringOverflow, StringResult
View windows-strategy.md

Goal: Per-User Installation Model

  • install Notion executables in user path
  • install Notion files in user profile
  • install Notion registry settings in HKCU

Goal: Per-Console Env Mutation

  • Notion command is a pair of .cmd and .ps1 wrapper scripts
    • cmd.exe sees the .cmd script