diff --git a/content/Frontend/React/useWhatsChanged.md b/content/Frontend/React/useWhatsChanged.md new file mode 100644 index 0000000..f48f473 --- /dev/null +++ b/content/Frontend/React/useWhatsChanged.md @@ -0,0 +1,30 @@ +```typescript +import { useEffect, useRef } from 'react'; + +/** Pass dictionary of `props` as argument and it will + * tell you, which one changed after rerender. + * Use `prefix` to distinguish props of different components. + */ +// eslint-disable-next-line import/no-unused-modules +export const useWhatsChanged = ( + props: Record, + prefix = '', +) => { + const prevProps = useRef(props); + + useEffect(() => { + Object.entries(props).forEach(([key, value]) => { + if ( + !Object.prototype.hasOwnProperty.call(prevProps.current, key) || + prevProps.current[key] !== value + ) { + // eslint-disable-next-line no-console + console.log(`${prefix} ${key} has changed`); + } + }); + + prevProps.current = props; + }, [props, prefix]); +}; + +``` \ No newline at end of file diff --git a/content/Linux/Find out who uses swap.md b/content/Linux/Find out who uses swap.md new file mode 100644 index 0000000..6da2737 --- /dev/null +++ b/content/Linux/Find out who uses swap.md @@ -0,0 +1,3 @@ +```shell +for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less +```