Gist simplicity can turn blogging into a liberating experience.
| Pros | Cons |
|---|---|
| ✅ Free, simple, fast, hassle-free | ❌ Image upload in comments only |
| ✅ Tagging | ❌ No post pinning |
| ✅ Search | ❌ Doesn't look like a blog |
| ✅ Revisions | ❌ Unfriendly URLs |
| /** | |
| * pipeAsyncFunctions.js | |
| * tags: { JavaScript, Adapter, Function, Promise } | |
| * Performs left-to-right function composition for asynchronous functions. | |
| * Use Array.prototype.reduce() with the spread operator (...) to perform | |
| * left-to-right function composition using Promise.then(). The functions can | |
| * return a combination of: simple values, Promise's, or they can be defined as | |
| * async ones returning through await. All functions must be unary. | |
| */ |
| /** | |
| * removeArrayElements.js | |
| * tags: { JavaScript, Array } | |
| * Removes elements from an array for which the given function returns false. | |
| * Use Array.prototype.filter() to find array elements that return truthy | |
| * values and Array.prototype.reduce() to remove elements using | |
| * Array.prototype.splice(). The func is invoked with three | |
| * arguments (value, index, array). | |
| */ |
| /** | |
| * zipObject.js | |
| * tags: { JavaScript, Array, Object } | |
| * Given an array of valid property identifiers and an array of values, | |
| * return an object associating the properties to the values. | |
| * Since an object can have undefined values but not undefined property | |
| * pointers, the array of properties is used to decide the structure of | |
| * the resulting object using Array.prototype.reduce(). | |
| */ |
| /** | |
| * partitionArray.js | |
| * tags: { JavaScript, Array, Object, Function } | |
| * Groups the elements into two arrays, depending on the provided function's | |
| * truthiness for each element. | |
| * Use Array.prototype.reduce() to create an array of two arrays. | |
| * Use Array.prototype.push() to add elements for which fn returns true to the | |
| * first array and elements for which fn returns false to the second one. | |
| */ |
| echo-server-epoll | |
| echo-server-poll | |
| talk | |
| talk.dSYM |
| /** | |
| * getNumberOfDigits.js | |
| * tags: { JavaScript, Array, RxJS } | |
| */ | |
| const { interval } = Rx; | |
| const { scan, pluck, groupBy } = RxOperators; | |
| interval(1000).pipe( | |
| scan( |
| /* Return tuple types, with a nullable error component just like Go */ | |
| /* meta: Typescript 3.9.5 */ | |
| type Err = Error | null; | |
| async function getUser(): Promise<[string, Err]> { | |
| try { | |
| const res = await fetch('/me'); | |
| const data = await res.json(); | |
| #!/bin/bash | |
| # Sometimes you need to move your existing git repository | |
| # to a new remote repository (/new remote origin). | |
| # Here are a simple and quick steps that does exactly this. | |
| # | |
| # Let's assume we call "old repo" the repository you wish | |
| # to move, and "new repo" the one you wish to move to. | |
| # | |
| ### Step 1. Make sure you have a local copy of all "old repo" | |
| ### branches and tags. |
| @echo off | |
| SET st3Path=C:\Program Files\Sublime Text 3\sublime_text.exe | |
| rem add it for all file types | |
| @reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3" /t REG_SZ /v "" /d "Open with Sublime Text 3" /f | |
| @reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3" /t REG_EXPAND_SZ /v "Icon" /d "%st3Path%,0" /f | |
| @reg add "HKEY_CLASSES_ROOT\*\shell\Open with Sublime Text 3\command" /t REG_SZ /v "" /d "%st3Path% \"%%1\"" /f | |
| rem add it for folders | |
| @reg add "HKEY_CLASSES_ROOT\Folder\shell\Open with Sublime Text 3" /t REG_SZ /v "" /d "Open with Sublime Text 3" /f |