Skip to content

Instantly share code, notes, and snippets.

View quantizor's full-sized avatar
🦾
👁️👄👁️

Evan Jacobs quantizor

🦾
👁️👄👁️
View GitHub Profile
@quantizor
quantizor / events.json
Created January 28, 2018 02:16
example profiling plugin gist
This file has been truncated, but you can view the full file.
[{"ts":210342517955,"pid":84888,"tid":84888,"ph":"I","name":"TracingStartedInPage","id":1,"cat":"disabled-by-default-devtools.timeline","args":{"data":{"sessionId":"-1","page":"0xfff","frames":[{"frame":"0xfff","url":"webpack","name":""}]}}},
{"ts":210342518021,"pid":84888,"tid":84888,"ph":"I","name":"TracingStartedInBrowser","id":2,"cat":"disabled-by-default-devtools.timeline","args":{"data":{"sessionId":"-1"}}},
{"ts":210342596877,"pid":84888,"tid":84888,"ph":"b","name":"EntryOptionPlugin","id":3,"cat":"blink.user_timing"},
{"ts":210342597223,"pid":84888,"tid":84888,"ph":"e","name":"EntryOptionPlugin","id":3,"cat":"blink.user_timing"},
{"ts":210342786095,"pid":84888,"tid":84888,"ph":"b","name":"NodeSourcePlugin","id":4,"cat":"blink.user_timing"},
{"ts":210342786350,"pid":84888,"tid":84888,"ph":"e","name":"NodeSourcePlugin","id":4,"cat":"blink.user_timing"},
{"ts":210342786357,"pid":84888,"tid":84888,"ph":"b","name":"AMDPlugin","id":5,"cat":"blink.user_timing"},
{"ts":210342786418,"pid":84888,"tid":84888,"ph

Notes

A loop isn't needed here at all. Just tail call parseDeclarationFlags as needed to replay the logic.

function parseDeclarationFlags(): StatementFlags {
    switch (token) {
        case SyntaxKind.VarKeyword:
@quantizor
quantizor / blah.js
Created January 10, 2017 21:27
JS to get the slack emoji contributors by handle
/* Execute this on https://{your-team}.slack.com/customize */
Array.from(document.querySelectorAll('.emoji_row a[href^="/team"]')).reduce((counts, node) => {const name = node.getAttribute('href').slice(6);return (counts[name] = (counts[name] || 0) + 1), counts}, {});
@quantizor
quantizor / elastic_cheat_sheet.md
Last active January 6, 2017 00:42
Elastic Cheat Sheet
@quantizor
quantizor / elasticsearch-bulk-ingestion.md
Last active December 27, 2016 17:57
ElasticSearch Bulk Ingestion Tips

ElasticSearch Bulk Ingestion Tips

Change the IPs to the cluster's master node (has a star next to the name in kibana.) Most of the suggestions below come from the official Elastic ingestion performance guidelines.

Before starting

Disables throttling of segment merges in Lucene.

If you are doing a bulk import and don’t care about search at all, you can disable merge throttling entirely. This will allow indexing to run as fast as your disks will allow.

@quantizor
quantizor / keybase.md
Created December 12, 2016 17:03
Keybase Proof

Keybase proof

I hereby claim:

  • I am yaycmyk on github.
  • I am glitterbyte (https://keybase.io/glitterbyte) on keybase.
  • I have a public key ASCA4vHIMvP3KeypJPEbAUcO1nFRCFuOwAbSBvSdK5OUBwo

To claim this, I am signing this object:

@quantizor
quantizor / react-redux.js
Last active October 17, 2016 16:33
react-redux connect() mock for Jest
/*
place this somewhere above where your test files are in a directory called __mocks__, e.g.
__mocks__/
react-redux.js
src/
myTestFile.spec.js
Requires an updated version of node with ES6 Proxy support.
*/
@quantizor
quantizor / parallelize.sh
Created September 26, 2016 03:03
parallelize commands
#!/bin/bash
# adapted from http://stackoverflow.com/questions/10909685/run-parallel-multiple-commands-at-once-in-the-same-terminal
# but this version works in Ubuntu + Windows Subsystem for Linux
PID_LIST=""
for cmd in "$@"; do {
echo "Process \"$cmd\" started";
eval $cmd & pid=$!
@quantizor
quantizor / form.html
Created July 28, 2016 04:58
"Backward" selector example
<style>
form {
display: flex;
}
label {
order: 1;
}
input {
@quantizor
quantizor / thematic-react-redux.md
Last active December 4, 2019 00:11
Thematic project organization for React + Redux projects

Notes:

  1. All actions should go in /actions.js and all constants should go in /constants.js (this is the one place where we deviate from keeping things together, as having all actions in one place makes understanding the entire application's potential state changes very straightforward)

  2. The /index.js should mount the application, set up the store, and contain application routing

  3. The /**/index.js in each child folder should contain that part of the state tree's reducer, action constants, and export /**/component.js wrapped by connect() from react-redux

  4. If using Stylus, /style.styl can glob import all child /**/*.styl files so explicit tracking of them is not necessary

  5. Each child /**/*.styl should only contain styles relevant to that view, without side effects

  6. The child /**/component.js should be as simple and "pure" as possible, preferring stateless syntax where possible

  7. If the child does not need a reducer ("pure" subview), /**/component.js can be skipped and si