A personal list of resources to keep track of what I learn and useful links. Mostly about JavaScript, React, Redux.
- react
- react-router - render prop
- react-dnd
- react-beautiful-dnd - render prop (see egghead.io course)
- downshift - render prop
- react-motion - render prop
- create-react-app
- redux
- ducks-modular-redux
- redux-form
- reselect
- reselect/immutable
- redux-thunk
- redux-saga
- redux-actions
- rl - an interface for reading data from a Readable stream one line at a time
- fs - an API for interacting with the file system
- benchmark - a benchmarking library
- bluebird - a full featured promise library with unmatched performance
- chalk - terminal string styling done right
- chodikar - a neat wrapper around node.js fs.watch / fs.watchFile / fsevents
- common-tags - useful template literal tags for dealing with strings in ES2015+
- lerna - a tool for managing JavaScript projects with multiple packages
- fs - an API for interacting with the file system
- lodash - a modern JavaScript utility library delivering modularity, performance, & extras
- mitt - tiny 200 byte functional event emitter / pubsub
- three.js - an easy to use, lightweight, 3D library
awesome-react-render-props - List of Useful React Components library
- 0to255 - a color tool for finding lighter and darker colors based on any color.
- carbon - create and share beautiful images of your source code.
- CodeSandebox - the online code editor
- react-redux-universal-hot-example
- reti-chess
- sound-redux
- react-redux-blog
- hyper
- freeCodeCamp
- f8app - Flow, Redux, GraphQL
- Gatsby
- How to GraphQL - Gatsby, TypeScript
- Cyrpress
- reactjs.org - Gatsby, Flow, Prettier
- reach-ui - Lerna, Gatsby, Storybook, Jest atlaskit - Flow, Jest, Enzyme -
Custom components in embedded in Markdown
-
How you can improve your workflow using the javascript console
-
JavaScript Symbols, Iterators, Generators, Async/Await, and Async Iterators — All Explained Simply
- How to create and publish your first NodeJS module
- A beginners guide to turning that little reusable piece of code into its own npm package.
-
Component State vs Redux Store
Containers vs. Components (Smart | Presentational)
- How to GraphQL
- How to use GraphQL in your Redux app
- Implementing GraphQL in your Redux App
- React + Apollo tutorial
- Getting started with redux and GraphQL
- Set up Apollo Client in a React app
- How GraphQL (Apollo) replaces Redux
- Gatsby + Apollo + GraphCool + Netlify: The Web’s Promised Land
- Awesome FP JS - A curated list of awesome functional programming stuff in JS
Libraries:
// map's composition law
compose(
map(f),
map(g)
) ===
map(
compose(
f,
g
)
);
const a = ["test", null, 0, 1, undefined, false, true];
const b = a.filter(Boolean);
// b => [ 'test', 1, true ]
// NOTE: equivalent to _.compact()
const a = [1, 2, 3, 4, 5];
const [head, ...rest] = a;
// head => 1
// rest => [2, 3, 4, 5]
const add2 = x => x + 2;
const multiplyBy2 = x => x * 2;
const compose = (...fns) => arg =>
fns.reduce((composed, f) => f(composed), arg);
const add2ThenMultiplyBy2 = compose(
add2,
multiplyBy2
);
console.log(add2ThenMultiplyBy2(1));
// -> 6
process.cwd(); // returns the current working directory
__dirname; // returns the directory name of the directory containing the JavaScript source code file
_.assign();
_.times();
_.debounce();
_.find();
_.cloneDeep();
_.flatten();
_.flattenDeep();
_.random();
_.omit();
_.sample();
_.sampleSize();
How to replicate this custom setting on Vs Code:
- Install 'Atom Keymap' extension
- Have this keybindings.json file:
[
{
"key": "cmd+=",
"command": "editor.action.fontZoomIn"
},
{
"key": "cmd+-",
"command": "editor.action.fontZoomOut"
},
{
"key": "ctrl+[Backquote]",
"command": "workbench.view.explorer"
},
{
"key": "a",
"command": "explorer.newFile",
"when": "explorerViewletVisible && filesExplorerFocus && !inputFocus"
},
{
"key": "shift+a",
"command": "explorer.newFolder",
"when": "explorerViewletVisible && filesExplorerFocus && !inputFocus"
},
{
"key": "ctrl+alt+m",
"command": "markdown.showPreview",
"when": "editorLangId == 'markdown'"
},
{
"key": "r",
"command": "renameFile",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
},
{
"key": "enter",
"command": "-renameFile",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus"
}
]
Action | Atom | Code |
---|---|---|
Close tab | ⌘-w | ⌘-w |
Open settings | ⌘-, | ⌘-, |
Undo | ⌘-z | ⌘-z |
Switch File tree <> Editor | ⌘-< | ctrl-< |
Action | Atom | Code |
---|---|---|
Move to previous file | ↑ | ↑ |
Move to next file | ↓ | ↓ |
Open file | ↵ | ↵ |
Delete file | backs. | backs. |
Move down file path | → | → |
Move up file path | ← | ← |
Create new file | a | a |
Create new folder | ⇧-a | ⇧-a |
Rename file | fn-f2 | r |
Open project | ⇧-⌘-o | ⇧-⌘-o |
Action | Atom | Code |
---|---|---|
Save file | ⌘-s | ⌘-s |
Save all files | ⌥-⌘-s | ⌥-⌘-s |
Find in panel | ⌘-f | ⌘-f |
Find in project | ⇧-⌘-f | ⇧-⌘-f |
Select All | ⌘-a | ⌘-a |
Select next occurrence | ⌘-d | ⌘-d |
Select characters / lines | ⇧-move | ⇧-move |
Move to start of line | ⌘-← | ⌘-← |
Move to end of line | ⌘-→ | ⌘-→ |
Move to top of file | ⌘-↑ | ⌘-↑ |
Move to bottom of file | ⌘-↓ | ⌘-↓ |
Move line up | ⌃-⌘-↑ | ⌃-⌘-↑ |
Move line down | ⌃-⌘-↓ | ⌃-⌘-↓ |
Duplicate line | ⇧-⌘-d | ⇧-⌘-d |
Insert line below | ⌘-↵ | ⌘-↵ |
Insert line above | ⇧-⌘-↵ | ⇧-⌘-↵ |
Delete selected lines | ⇧-^-k | ⇧-^-k |
Delete rest of the line | ^-k | ^-k |
Zoom in | ⌘-+ | ⌘-+ |
Zoom out | ⌘-- | ⌘-- |
Open Markdown prev. | ^-⌥-m | ^-⌥-m |
Open Markdown prev. on side | ⇧-^-m | |
Find matching bracket | ^-m | ^-m |
Next tab | ⌥-⌘-→ | ⌥-⌘-→ |
Previous tab | ⌥-⌘-← | ⌥-⌘-← |
Comment out selected lines | ⇧-⌘-l | ⇧-⌘-l |