- Booknotes ($89.99/year with over 700 titles – inferior to Blinkist in my view)
- Snapreads ($14.99/month – 3 times as expensive as Blinkist, and again not worth it IMO)
- ReadingIQ (for kids 2 to 12)
- getAbstract (contains over 20,000 books, and has similar pricing to Blinkist – worth checking out)
- Instaread (similar or identical pricing to Blinkist, though with under 1,000 total books)
- BookRags (focused specifically on educational resources like essays and lesson plans)
- Quiddity (a free service, but with only ~150 titles – worth checking out)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
cd /home/bitnami/htdocs | |
export PATH=/opt/bitnami/node/bin:$PATH | |
export AS_JAVASCRIPT=true | |
# run on server at the first time only | |
## yarn install --frozen-lockfile | |
## npx prisma generate | |
## forever start -l forever.log -o out.log -e error.log dist/src/server.js # maybe needs -a, to append log | |
forever restart dist/src/server.js |
- https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-cli.html
mkdir /etc/codedeploy-agent/
mkdir /etc/codedeploy-agent/conf
cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml
---
- Doppler: Sync environment variables at scale
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = { | |
module: { | |
rules: [ | |
{ | |
test: /\.mjs$/, | |
loader: 'babel-loader', | |
include: [resolve('node_modules/graphql')], | |
}, | |
] | |
} |
- RetireJS
- Cookies: is a node.js module for getting and setting HTTP(S) cookies. Cookies can be signed to prevent tampering, using Keygrip. It can be used with the built-in node.js HTTP library, or as Connect/Express middleware.
- DOMPurify: is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
- React Hooks: The Complete Guide. What are React Hooks, Challenges in…
- How to Memoize with React.useMemo()
- How to Correctly Debounce and Throttle Callbacks in React
- How to Cleanup Async Effects in React
- How to Create a Reusable Custom Hook with React and TypeScript
- Don't Stop Me Now: How to Use React useTransition() hook
- A Simple Guide to Component Props in React
- 5 useEffect Infinite Loop Patterns
- [When does the useState hook render?](https://vijayt.com/post/wh
State updates using this.setState or useState do not immediately mutate the state but create a pending state transition.
State updates alter the virtual DOM and cause re-rendering which may be an expensive operation. Making state updates synchronous could make the browser unresponsive due to huge number of updates.
To avoid these issues a careful choice was made to make state updates async, as well as to batch those updates.
<label for="content">Type something</label>
<div class="autogrow">
<textarea id="content" onInput="this.parentNode.setAttribute('data-replicated-value', this.value)" onload="this.parentNode.setAttribute('data-replicated-value', this.value)"></textarea>
</div>
.autogrow {
display: grid;