{"id":21766596,"url":"https://github.com/damianc/dev-notes","last_synced_at":"2025-04-13T15:12:22.075Z","repository":{"id":50491332,"uuid":"176579844","full_name":"damianc/dev-notes","owner":"damianc","description":"A handy reference of dev stuff that may turn out helpful at times.","archived":false,"fork":false,"pushed_at":"2025-04-04T14:08:43.000Z","size":4723,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T15:12:17.051Z","etag":null,"topics":["angular","design-patterns","javascript","typescript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damianc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-19T18:58:22.000Z","updated_at":"2025-04-04T14:08:47.000Z","dependencies_parsed_at":"2023-12-07T03:22:27.227Z","dependency_job_id":"38bd85fd-7b59-425b-86e3-aab0df186db1","html_url":"https://github.com/damianc/dev-notes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianc%2Fdev-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianc%2Fdev-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianc%2Fdev-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damianc%2Fdev-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damianc","download_url":"https://codeload.github.com/damianc/dev-notes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248732488,"owners_count":21152852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","design-patterns","javascript","typescript"],"created_at":"2024-11-26T13:18:11.852Z","updated_at":"2025-04-13T15:12:22.063Z","avatar_url":"https://github.com/damianc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dev_Notes\n\nHandy dev stuff :rocket::rocket:\n\nSimilar repos:\n* [@charliegerard](https://github.com/charliegerard/dev-notes)\n* [@jbranchaud](https://github.com/jbranchaud/til)\n* [@thoughtbot](https://github.com/thoughtbot/til)\n\n---\n\nCurrently: \u0026nbsp; **374** Dev_Notes\n\n---\n\n# Categories\n\n* [Algorithms and Data Structures](#algorithms-and-data-structures)\n  - [Algorithms](#algorithms)\n  - [Data Structures](#data-structures)\n* [Angular](#angular)\n  - [Directives and Components](#directives-and-components)\n  - [Forms](#forms)\n  - [NgRx](#ngrx)\n  - [Pipes](#pipes)\n  - [Angular Routing](#angular-routing)\n  - [HTTP](#http)\n* [Bash Apps](#bash-apps)\n* [Canvas](#canvas)\n  - [`ImageData` and Pixel Control](#imagedata-and-pixel-control)\n* [CSS](#css)\n  - [Scss](#scss)\n* [Design Patterns](#design-patterns)\n  - [Creational](#creational)\n  - [Structural](#structural)\n  - [Behavioral](#behavioral)\n* [Docker](#docker)\n* [Errors](#errors)\n* [Express.js](#expressjs)\n* [Firebase](#firebase)\n* [Formulas](#formulas)\n  - [Math Core](#math-core)\n* [Git](#git)\n* [GraphQL](#graphql)\n* [HTML](#html)\n* [HTML5 APIs](#html5-apis)\n* [JavaScript](#javascript)\n  - [Recipes](#recipes)\n  - [ES6+](#es6)\n  - [DOM](#dom)\n  - [PWA](#pwa)\n  - [RegExp](#regexp)\n  - [JS Tools](#js-tools)\n  - [OOP](#oop)\n  - [FP](#fp)\n  - [Exotics](#exotics)\n  - [JS Lab](#js-lab)\n* [Nest.js](#nestjs)\n* [Node](#node)\n  - [CLI](#cli)\n* [npm](#npm)\n* [PHP](#php)\n* [Python](#python)\n* [React](#react)\n  - [react-router](#react-router)\n* [Redux](#redux)\n* [REST API](#rest-api)\n* [RxJS](#rxjs)\n* [SQL](#sql)\n* [SVG](#svg)\n  - [SVG + JavaScript](#svg--javascript)\n* [TDD](#tdd)\n* [Tools](#tools)\n* [TypeScript](#typescript)\n  - [Types From Types](#types-from-types)\n* [UI](#ui)\n* [Vue](#vue)\n* [Webpack](#webpack)\n* [WordPress](#wordpress)\n\n# Algorithms and Data Structures\n\n## Algorithms\n\n* [Algorithms](algorithms-and-data-structures/algorithms.md)\n* [Bubble Sort](algorithms-and-data-structures/bubble-sort.md)\n* [Fibonacci Generator](algorithms-and-data-structures/fibonacci-generator.md)\n\n## Data Structures\n\n* [Multi-Edged DAG for Network of Train Connections](algorithms-and-data-structures/multi-edged-graph-on-trains.md)\n* [Abstract Syntax Tree](algorithms-and-data-structures/ast.md)\n* [Abstract Data Types](algorithms-and-data-structures/abstract-data-types.md)\n* [Linked List](algorithms-and-data-structures/linked-list.md)\n* [Priority Queue on Max Heap](algorithms-and-data-structures/priority-queue-on-max-heap.md)\n\n# Angular\n\n* [Classes and styling](https://github.com/damianc/dev-notes/blob/master/angular/classes-and-styling.md)\n* [Resolving path, e.g., `@interface/Readable`](angular/resolve-path.md)\n* [RxJS Imports](angular/rxjs-imports.md)\n* [Interfaces](angular/interfaces.md)\n* [Lifecycle Hooks](angular/hooks.md)\n* [`@ContentChildren` vs `@ViewChildren` and Detecting Changes](angular/content-and-view-children.md)\n* [Custom Service](angular/custom-service.md)\n* [Service Provider](angular/service-provider.md)\n* [Local Service Providers](angular/local-service-providers.md)\n* [Angular Modules](angular/modules.md)\n* [Animations](angular/animations.md)\n* [Animation Details](angular/animation-details.md)\n\n## Directives and Components\n\n* [Multiple `\u003cng-content\u003e`](angular/multiple-ng-content.md)\n* [The `*ngIf` Directive](angular/ngif-directive.md)\n* [Component Event with `@Output`](angular/component-event.md)\n* [Structural Directive with Context](angular/struct-directive-context.md)\n* [Structural Directive Using `for..of` Expression](angular/structural-directive-using-forof.md)\n* [Assignment vs. `as` in Structural Directive](angular/assignment-as-in-structural-directive.md)\n* [Structural Directive: One \\*Attribute instead of [Two]](angular/two-attrs-into-one.md)\n* [`[ngTemplateOutlet]` vs. `*ngTemplateOutlet`](angular/ng-template-outlet.md)\n* [`Renderer2`](angular/renderer2.md)\n* [`ngIf` Implementation](angular/ngif-implementation.md)\n* [`ngFor` Implementation](angular/ngfor-implementation.md)\n* [Diff Monitoring: Array](angular/array-monitoring-tools.md)\n* [Diff Monitoring: Object](angular/object-monitoring-tools.md)\n* [Diff Monitoring: Map](angular/map-monitoring-tools.md)\n\n## Forms\n\n* [Conditional Validators](angular/forms/conditional-validators.md)\n* [Custom Form Control](angular/forms/custom-form-control.md)\n\n## NgRx\n\n* [Counter Example with NgRx](angular/ngrx/counter-example.md)\n\n## Pipes\n\n* [Custom Pipe](angular/pipe.md)\n* [More Complex Pipe](angular/custom-filter.md)\n* [Impure Pipe](angular/impure-pipe.md)\n* [`async` Pipe](angular/async-pipe.md)\n* [Pipe Using Another Pipe](angular/pipe-using-pipe.md)\n\n## Angular Routing\n\n* [Adding a Router](angular/routing/root-router.md)\n* [Redirect to Dynamic Path](angular/routing/redirect-to-dynamic-path.md)\n* [Params of Route](angular/routing/route-params.md)\n* [Parent Router Params](angular/routing/parent-router-params.md)\n* [Optional Params vs. Query Params](angular/routing/optional-query-params.md)\n* [Add Params to Current URL](angular/routing/add-params-to-current-url.md)\n* [`Router` Properties and Methods](angular/routing/router-properties-and-methods.md)\n* [Route Data](angular/routing/route-data.md)\n* [Route Children](angular/routing/route-children.md)\n* [Routing Guards](angular/routing/guards.md)\n* [Resolvers](angular/routing/resolvers.md)\n* [Named Outlets](angular/routing/named-outlets.md)\n* [Highlight Active Route](angular/routing/highlight-active-route.md)\n* [Lazy Loading a Module](angular/routing/lazy-loading-module.md)\n* [Router Events](angular/routing/router-events.md)\n\n## HTTP\n\n* [`HttpRequest`](angular/http/http-request.md)\n* [`HttpContext`](angular/http/http-context.md)\n* [Interceptors](angular/http/interceptors.md)\n* [Download File Returned from API with `file-saver`](angular/http/download-file-from-api-with-file-saver.md)\n\n# Bash Apps\n\n* [Count Particular Files Excluding a Particular Directory](bash-apps/count-particular-files-excluding-a-dir.md)\n* [Searching Files: `find`](bash-apps/searching-files-find.md)\n* [Functions](bash-apps/functions.md)\n* [Flow Control](bash-apps/flow-control.md)\n* [Examining Stuff: `test`](bash-apps/examining-stuff-test.md)\n* [Altering Text](bash-apps/altering-text.md)\n* [Text Processing: `cut`](bash-apps/text-processing-cut.md)\n* [Text Processing: `tr`](bash-apps/text-processing-tr.md)\n* [Text Processing: `wc`](bash-apps/text-processing-wc.md)\n* [Brace Expansion](bash-apps/brace-expansion.md)\n* [Formatting Output](bash-apps/formatting-output.md)\n* [`PS1` Variable](bash-apps/ps1-variable.md)\n* [Progress Bar](bash-apps/progress-bar.md)\n* [Date: `date`](bash-apps/date.md)\n* [[du] Disk Usage](bash-apps/du.md)\n* [`cd /d` on Win10 / cmd](bash-apps/cdd-win10.md)\n* [Pipe to `while`](bash-apps/pipe-to-while.md)\n* [[ln] Symbolic and hard links](bash-apps/symbolic-and-hard-links.md)\n\n# Canvas\n\n* [Camera Preview on Canvas](canvas/canvas-camera-preview.md)\n* [Repeat Image in Grid](canvas/repeat-image-in-grid.md)\n\n## `ImageData` and Pixel Control\n\n* [Getting Adjacent Pixels](canvas/id-adjacent-pixels.md)\n* [Invert Colors](canvas/id-invert-colors.md)\n* [Monochrome Image](canvas/id-monochrome.md)\n* [Reducing Number of Colors](canvas/id-reducing-colors.md)\n\n# CSS\n\n* [CSS Selectors](css/selectors.md)\n* [CSS Counters](css/counters.md)\n* [Prevent Line-Break in a Table](css/prevent-line-break-in-table.md)\n* [Ellipsis at the end of too long text](css/long-text-ellipsis.md)\n* [Media Queries](css/media-queries.md)\n* [`nth-child()`](css/nth-child.md)\n* [`flex-grow`, `flex-shrink` and `flex-basis`](css/flex-grow-shrink.md)\n* [Grid Coords](css/grid-coords.md)\n* [Grid Named Lines and Areas](css/grid-lines-and-areas.md)\n* [Paintlet](css/paintlet.md)\n\n## Scss\n\n* [`@each...in`](css/scss/each-in.md)\n* [`@for` Loop](css/scss/for-loop.md)\n* [`@while` Loop](css/scss/while-loop.md)\n* [If Conditions](css/scss/if-conditions.md)\n* [`switch` Function](css/scss/switch-function.md)\n* [`@function` and `...`](css/scss/function-three-dots.md)\n* [Recursive Functions](css/scss/recursive-functions.md)\n* [RWD Mixins](css/scss/rwd-mixins.md)\n* [SassScript Mixins](css/scss/sassscript-mixins.md)\n\n# Design Patterns\n\n* [List of Design Patterns](design-patterns/list.md)\n* [Builder vs. Abstract Factory](design-patterns/builder-vs-abstract-factory.md)\n\n## Creational\n\n* [Singleton](design-patterns/creational/singleton.md)\n\n## Structural\n\n* [Adapter](design-patterns/structural/adapter.md)\n* [Bridge](design-patterns/structural/bridge.md)\n* [Composite](design-patterns/structural/composite.md)\n* [Decorator](design-patterns/structural/decorator.md)\n* [Facade](design-patterns/structural/facade.md)\n* [Flyweight](design-patterns/structural/flyweight.md)\n\n## Behavioral\n\n* [Chain of Responsibility](design-patterns/behavioral/chain-of-responsibility.md)\n* [Command](design-patterns/behavioral/command.md)\n* [Interpreter](design-patterns/behavioral/interpreter.md)\n* [Iterator](design-patterns/behavioral/iterator.md)\n* [Mediator](design-patterns/behavioral/mediator.md)\n* [State](design-patterns/behavioral/state.md)\n* [Strategy](design-patterns/behavioral/strategy.md)\n* [Visitor](design-patterns/behavioral/visitor.md)\n\n# Docker\n\n* [`Dockerfile` File](docker/dockerfile.md)\n* [Formatting a list of images/containers](docker/formatting-images-containers-list.md)\n* [Filtering a list of images/containers](docker/filtering-images-containers-list.md)\n* [Deleting multiple images and containers](docker/deleting-images-containers.md)\n\n# Errors\n\n* [JavaScript heap out of memory](errors/js-heap-out-of-memory.md)\n* [System limit for number of file watchers reached](errors/system-limit-of-file-watchers.md)\n* [zsh: corrupt history file](errors/zsh-corrupt-history-file.md)\n\n# Express.js\n\n* [The `request` Object](expressjs/request-object.md)\n* [The `response` Object](expressjs/response-object.md)\n* [Settings](expressjs/settings.md)\n* [Custom Middleware](expressjs/custom-middleware.md)\n* [Modular Structure](expressjs/modular-structure.md)\n* [Streaming](expressjs/streaming.md)\n* [Streaming Video](expressjs/streaming-video.md)\n* [Manual Streaming of Text](expressjs/manual-streaming-text.md)\n\n# Firebase\n\n* [Get Data from Firestore](firebase/get-data-from-firestore.md)\n* [Firebase Realtime Database: Observing a Value](firebase/realtime-database-observing-value.md)\n* [Firebase Realtime Database: Observing a Collection](firebase/realtime-database-observing-collection.md)\n* [Upload File to Bucket](firebase/upload-file-to-bucket.md)\n\n# Formulas\n\n* [Lacking Stuff of `Math`](formulas/math-lacking-stuff.md)\n* [Lacking `Math` Angular Methods](formulas/math-lacking-angular-methods.md)\n* [Angular Methods](formulas/angular-methods-list.md)\n* [Distance Between 2 Coords](formulas/distance-between-two-coords.md)\n* [Angular Diameter/Size](formulas/angular-size.md)\n* [Distribute Items Equally on a Circle](ui/distribute-items-equally-on-circle.md)\n* [Getting Point on Circle](formulas/math-core/getting-point-on-circle.md)\n* [Polygon Area](formulas/polygon-area.md)\n* [Transformation Matrixes](formulas/transformation-matrixes.md)\n* [Math Outside](formulas/math-outside.md)\n\n## Math Core\n\n* [Lines and Points Formulas](formulas/math-core/lines-and-points-formulas.md)\n* [Distance Between 2 Points](formulas/math-core/distance-between-points.md)\n* [Distance Between Point and Line](formulas/math-core/distance-between-point-and-line.md)\n* [Circle Tangents by Control Point](formulas/math-core/circle-tangents-by-cp.md)\n* [Line Transformations](formulas/math-core/line-transformations.md)\n* [Finding Linear Function](formulas/math-core/finding-linear-function.md)\n* [Distance Between 2 Parallel Lines](formulas/math-core/lines-distance.md)\n* [Finding a Point by Distance](formulas/math-core/finding-point-by-distance.md)\n* [Linear Function Passing Through 2 Points](formulas/math-core/line-by-two-points.md)\n* [Straight Lines: Intersection Point and Angle](formulas/math-core/lines-intersection-angle.md)\n* [Line Segment: Length and Center](formulas/math-core/line-segment.md)\n* [Trigonometric Formulas](formulas/math-core/trigonometric-formulas.md)\n* [Attract Point to Line](formulas/math-core/attract-point-to-line.md)\n* [Attract Point to Circle](formulas/math-core/attract-point-to-circle.md)\n* [Getting Triangle's Lacking Parameters](formulas/math-core/triangle-lacking-info.md)\n* [Circle Parameters](formulas/math-core/circle-parameters.md)\n* [Point on Circle by Angle](formulas/math-core/point-on-circle-by-angle.md)\n* [Point Coordinates on Circle](formulas/math-core/circle-point-coords.md)\n* [Find Circle by 2 Points and Radius](formulas/math-core/find-circle-by-two-points-and-r.md)\n* [Find Circle by Point Coords/Angle and Radius](formulas/math-core/find-circle-by-point-angle-and-r.md)\n* [Bump Arc Length](formulas/math-core/bump-arc-length.md)\n* [Circle Area in X-Range](formulas/math-core/circle-area-in-x-range.md)\n* [Line and Parabola Intersection](formulas/math-core/line-parabola-intersection.md)\n* [Line and Circle Intersection](formulas/math-core/line-circle-intersection.md)\n* [Circles Intersection](formulas/math-core/circles-intersection.md)\n* [Centroid of Triangle Rendered with Lines _f(x)_, _g(x)_ and _h(x)_](formulas/math-core/triangle-centroid.md)\n* [Short Multiplication](formulas/math-core/short-multiplication.md)\n\n# Git\n\n* [Generate and Add SSH Key](git/generate-and-add-ssh-key.md)\n* [Add SSH identity](git/add-ssh-identity.md)\n* [Assume Unchanged](git/assume-unchanged.md)\n* [Empty commit](git/empty-commit.md)\n* [Update last commit](git/update-last-commit.md)\n* [Renaming Branch](git/rename-branch.md)\n* [Comparing Files from 2 Different Branches](git/diff-different-branches.md)\n* [Find the commit a bug has been introduced in](git/find-commit-introducing-bug.md)\n\n# GraphQL\n\n* [Query](graphql/query.md)\n* [Query Arguments](graphql/query-arguments.md)\n* [Aliases](graphql/aliases.md)\n* [Multiple Resources Request](graphql/multiple-resources-request.md)\n* [Fragments](graphql/fragments.md)\n\n# HTML\n\n* [File Input: `accept` Attribute](html/file-input-accept.md)\n* [Placeholder for `\u003cinput type=\"date\" /\u003e`](html/placeholder-for-input-type-date.md)\n* [Values of the `autocomplete` Attribute](html/autocomplete-values.md)\n* [Suggest New Password on Password Control](html/suggest-new-password.md)\n\n# HTML5 APIs\n\n* [Detect Tab Change](html5-apis/detect-tab-change.md)\n* [Download Textarea Content with `URL.createObjectURL()`](html5-apis/download-textarea-with-createobjecturl.md)\n* [Generating Dynamic Files with `FileReader`](html5-apis/generate-dynamic-file.md)\n* [Web Worker](html5-apis/web-worker.md)\n* [Custom Video Controls](html5-apis/custom-video-controls.md)\n* [`URL`](html5-apis/url.md)\n* [`URLSearchParams`](html5-apis/url-search-params.md)\n* [Display Browser Modal to Save Credentials](html5-apis/display-browser-modal-to-save-pass.md)\n\n# JavaScript\n\n* [`Array.fill(object)`](javascript/array-fill-with-object.md)\n* [`mouseenter`, `mouseover`, `mousemove`, `mouseleave` and `mouseout`](javascript/mouse-events.md)\n* [Disable Shortcuts or Context Menu](javascript/disable-shortcuts-or-contextmenu.md)\n* [`reduce()` Uses](javascript/reduce-uses.md)\n* [Deep Clone of Object](javascript/deep-clone.md)\n* [Enumerating Properties](javascript/enumerating-properties.md)\n* [`this` reference](javascript/this-reference.md)\n* [`Math`](javascript/math.md)\n* [`BigInt`](javascript/bigint.md)\n* [Checking `NaN`](javascript/checking-nan.md)\n\n## Recipes\n\n* [Normalization of Diacritics](javascript/recipes/diacritics-normalization.md)\n* [Random Number from a Range](javascript/recipes/random-from-range.md)\n* [Alter Wrapper](javascript/recipes/alter-wrapper.md)\n* [_Trusted Value Providers_ aka _Signed Objects_](javascript/recipes/encapsulated-objects.md)\n* [Calling `eval()` in a Context](javascript/recipes/eval-in-context.md)\n\n## ES6+\n\n* [Iterators](javascript/es6/iterators.md)\n* [`Symbol.asyncIterator` and `Symbol.iterator`](javascript/es6/asynciterator-iterator.md)\n* [Generator Member Shorthand](javascript/es6/generator-member-shorthand.md)\n* [Object Descriptors](javascript/es6/object-descriptors.md)\n* [`preventExtensions()`, `seal()` and `freeze()`](javascript/es6/freeze-seal-preventextensions.md)\n* [`Object.is()`](javascript/es6/object-is.md)\n* [[Weak]Map vs. [Weak]Set](javascript/es6/maps-vs-sets.md)\n* [export and import](javascript/es6/export-and-import.md)\n* [Typed Arrays](javascript/es6/typed-arrays.md)\n* [Proxy Traps](javascript/es6/proxy-traps.md)\n* [`Symbol.match`](javascript/es6/symbol-match.md)\n* [`Symbol.search`](javascript/es6/symbol-search.md)\n* [`Symbol.replace`](javascript/es6/symbol-replace.md)\n* [`Symbol.split`](javascript/es6/symbol-split.md)\n\n## DOM\n\n* [DOM Traversing Methods](javascript/dom/traverse-methods.md)\n* [`insertAdjacent*()`](javascript/dom/insert-adjacent.md)\n\n## PWA\n\n* [File Input - Capture Photo/Video/Audio](javascript/pwa/file-input-capture.md)\n* [Battery Events](javascript/pwa/battery-events.md)\n* [Contact Picker API](javascript/pwa/contact-picker-api.md)\n\n## RegExp\n\n* [RegExp: named captured groups](javascript/es6/re-named-groups.md)\n* [`match()` vs. `exec()` and RegExp with/without the `g` Flag](javascript/match-vs-exec-g.md)\n* [RegExp _Sticky_ Flag](javascript/re-sticky-flag.md)\n* [Matching Emoji in RegExp](javascript/es6/regexp-emoji.md)\n* [Unicode Property Escapes](javascript/es6/unicode-property-escapes.md)\n* [`$` in the `replace()` Function](javascript/regexp-dollar-in-replace.md)\n* [RegExp Related Symbols](javascript/regexp-related-symbols.md)\n\n## JS Tools\n* [Styling `console.log()`](javascript/tools/styling-console-log.md)\n\n## OOP\n\n* [Anonymous Classes](javascript/oop/anonymous-class.md)\n* [Abstract and Final Classes](javascript/oop/abstract-final-class.md)\n* [Inheritance](javascript/oop/inheritance.md)\n\n## FP\n\n* [`compose`](javascript/fp/compose.md)\n* [Recursive Accumulator](javascript/fp/recursive-accumulator.md)\n\n## Exotics\n\n* [Dynamic Object Destructuring Assignment](javascript/exotics/dynamic-object-destructuring-assignment.md)\n* [`(...[,param2]) =\u003e ...`](javascript/exotics/func-params-rest-second-param.md)\n* [Two-Way Maps](javascript/exotics/two-way-maps.md)\n* [8 Variants of the `for` Loop](javascript/exotics/eight-for-variants.md)\n* [Swap Variables](javascript/exotics/swap-variables.md)\n\n## JS Lab\n\n* [`this` in Static Methods](javascript/js-lab/this-in-static-methods.md)\n\n# Nest.js\n\n* [Decorators](nestjs/decorators.md)\n\n# Node\n\n* [Implementation of a Readable Stream](node/readable-stream-implementation.md)\n* [Set Environment Variable When Running App](node/set-env-when-running.md)\n* [`btoa()` and `atob()` in Node](node/btoa-and-atob.md)\n* [NPM Script Working with Files](node/npm-script-working-with-files.md)\n* [`dgram` Socket](node/dgram-socket.md)\n\n## CLI\n\n* [Progress Bar](node/cli/progress-bar.md)\n\n# npm\n\n* [Check if Package Name is Free to Use](npm/check-package-name.md)\n\n# PHP\n\n* [Closure](php/closure.md)\n* [Generator](php/generator.md)\n* [Namespaces](php/namespaces.md)\n* [Late Static Bindings](php/late-static-bindings.md)\n* [`const` vs `define`](php/const-vs-define.md)\n\n# Python\n\n* [ES-Like Expressions](python/es-like-expressions.md)\n* [Array Sequentially Assignment](python/array-sequentially-assignment.md)\n* [Comprehensions](python/comprehensions.md)\n\n# React\n\n* [Lifecycle Methods](react/lifecycle-methods.md)\n* [Axios + RxJS](react/axios-rxjs.md)\n* [`React.forwardRef()`](react/forward-ref.md)\n* [Hooks: `useState()`](react/hooks-usestate.md)\n* [Hooks: `useEffect()`](react/hooks-useeffect.md)\n* [Hooks: `useContext()`](react/hooks-usecontext.md)\n* [Hooks: `useMemo()` and `useCallback()`](react/hooks-usememo-and-usecallback.md)\n* [Hooks: `useRef()`](react/hooks-useref.md)\n* [Hooks FAQ](react/hooks-faq.md)\n\n## react-router\n\n* [Link Passing Additional Data](react/react-router/link-passing-additional-data.md)\n\n# Redux\n\n* [Pure Redux](redux/pure-redux.md)\n* [Passing State: `Provider`, `ReactReduxContext` and `connect()`](redux/passing-state.md)\n* [Component Being Container for Itself](redux/component-being-container-for-itself.md)\n* [`useDispatch()` and `useSelector()`](redux/useselector-usedispatch.md)\n* [Custom Middleware](redux/custom-middleware.md)\n* [Multiple Stores](redux/multiple-stores.md)\n* [Extra Argument of Thunk](redux/thunk-extra-argument.md)\n\n# REST API\n\n* [Decoding JWT Token](rest-api/decode-jwt-token.md)\n* [HTTP Codes](rest-api/http-codes.md)\n* [Request Headers](rest-api/request-headers.md)\n* [Response Headers](rest-api/response-headers.md)\n\n# RxJS\n\n* [RxJS Custom Operator](rxjs/custom-operator.md)\n* [Custom Observable](rxjs/custom-observable.md)\n* [`Subject`](rxjs/subject.md)\n* [Built-in Observables](rxjs/builtin-observables.md)\n* [Join of Observables](rxjs/join-of-observables.md)\n* [Join Operators](rxjs/join-operators.md)\n* [Filtering Operators](rxjs/filtering-operators.md)\n* [Transformation Operators](rxjs/transformation-operators.md)\n* [Error Handling Operators](rxjs/error-handling-operators.md)\n* [Conditional and Boolean Operators](rxjs/conditional-and-boolean-operators.md)\n* [Mathematical and Aggregation Operators](rxjs/math-stat.md)\n* [Utility Operators](rxjs/utility-operators.md)\n* [Multicasting Operators](rxjs/multicasting-operators.md)\n\n# SQL\n\n* [`SELECT`](sql/select.md)\n* [`INSERT`/`UPDATE`/`DELETE`](sql/insert-update-delete.md)\n* [`UNION`](sql/union.md)\n* [Types of Join](sql/types-of-join.md)\n* [`CREATE TABLE`](sql/create-table.md)\n* [Stored Function](sql/stored-function.md)\n* [Stored Procedure](sql/stored-procedure.md)\n* [Cursors in Stored Procedure](sql/cursors.md)\n* [Triggers](sql/triggers.md)\n* [Create table with a struct of another - `CREATE TABLE...LIKE`](sql/create-table-like-another.md)\n* [Create table with a query - `CREATE TABLE...SELECT`](sql/create-table-with-query.md)\n\n# SVG\n\n* [SVG Markup](svg/markup.md)\n* [Styling SVG](svg/styling.md)\n* [Lines and Polygons](svg/lines-and-polygons.md)\n* [Basic Shapes](svg/basic-shapes.md)\n* [Paths](svg/paths.md)\n* [Texts](svg/texts.md)\n* [Grouping Elements](svg/groups.md)\n* [Transformations](svg/transformations.md)\n* [Reusing Elements](svg/reusing-elements.md)\n* [Patterns and Imaged Backgrounds](svg/patterns.md)\n* [Gradients](svg/gradients.md)\n\n## SVG + JavaScript\n\n* [Dynamic Polyline](svg/js/dynamic-polyline.md)\n\n# TDD\n\n* [Testing Gulp Plugin](tdd/testing-gulp-plugin.md)\n\n# Tools\n\n* [vim commands](tools/vim-commands.md)\n* [Sublime shortcuts](tools/sublime-shortcuts.md)\n\n# TypeScript\n\n* [Property Auto-Asignment within Constructor](typescript/auto-assignment.md)\n* [Iteration Types](typescript/iteration-types.md)\n* [Mapped Types](typescript/mapped-types.md)\n* [`keyof any`](typescript/keyof-any.md)\n* [Generics](typescript/generics.md)\n* [Advanced Generics](typescript/advanced-generics.md)\n* [`Lowercase\u003cT\u003e`, `Uppercase\u003cT\u003e`, `Capitalize\u003cT\u003e` and `Uncapitalize\u003cT\u003e`](typescript/lowercase-uppercase-etc.md)\n* [`Extract` and `Exclude` with Template Literals](typescript/extract-exclude-template-literal.md)\n* [Utility Types](typescript/utility-types.md)\n* [Advanced Types](typescript/advanced-types.md)\n* [Decorators](typescript/decorators.md)\n* [The `infer` Keyword](typescript/infer.md)\n* [Type Being Props Selector](typescript/type-being-props-selector.md)\n* [Building Object Type from Array](typescript/build-object-type-from-array.md)\n* [Bivariance Hack](typescript/bivariance-hack.md)\n\n## Types From Types\n\n* [Numeral System](typescript/types-from-types/numeral-system.md)\n* [`If\u003cC, T, F\u003e`, `Equal\u003cStr, S\u003e`, `Like\u003cStr, P\u003e` and String Matchers](typescript/types-from-types/if-equal-like-string-matchers.md)\n* [`StrLength\u003cStr\u003e` and `ArrLength\u003cArr\u003e`](typescript/types-from-types/strlen-arrlen.md)\n* [`Replace\u003cStr, S, E\u003e`](typescript/types-from-types/replace.md)\n* [`Repeat\u003cStr, N\u003e`](typescript/types-from-types/repeat.md)\n* [`ReverseStr\u003cStr\u003e` and `ReverseArr\u003cArr\u003e`](typescript/types-from-types/reversestr-reversearr.md)\n* [`Join\u003cArr\u003e` and `Split\u003cStr\u003e`](typescript/types-from-types/join-split.md)\n* [`TrimLeft\u003cStr\u003e`, `TrimRight\u003cStr\u003e` and `Trim\u003cStr\u003e`](typescript/types-from-types/trim-left-right.md)\n* [`CamelCase\u003cStr\u003e` and `KebabCase\u003cStr\u003e`](typescript/types-from-types/camelcase-kebabcase.md)\n* [`Getterize\u003cT\u003e` and `Degetterize\u003cT\u003e`](typescript/types-from-types/getterize-and-degetterize.md)\n\n# UI\n\n* [Distribute Items Equally on a Circle](ui/distribute-items-equally-on-circle.md)\n\n# Vue\n\n* [Features Preview with Counter Example](vue/counter-example.md)\n* [Template Syntax](vue/template-syntax.md)\n* [Classes and Styles](vue/classes-and-styles.md)\n* [Events](vue/events.md)\n* [The `v-if` Directive](vue/v-if.md)\n* [The `v-for` Directive](vue/v-for.md)\n* [Form Inputs and `v-model`](vue/form-inputs-and-v-model.md)\n\n# Webpack\n\n* [Resolve Extensions (Other Than `.js`)](webpack/resolve-extensions.md)\n* [Resolve Shorthand Module](webpack/resolve-shorthand-module.md)\n* [Multiple Outputs](webpack/multiple-outputs.md)\n\n# WordPress\n\n* [Attaching Assets](wordpress/attaching-assets.md)\n* [WordPress Hooks](wordpress/hooks.md)\n* [WordPress Filters](wordpress/filters.md)\n* [Custom Columns](wordpress/custom-columns.md)\n* [Inline SVG Icon when Registering CPT](wordpress/cpt-inline-svg-icon.md)\n* [Adding a favicon](wordpress/adding-favicon.md)\n* [Adding thumbnail metabox to posts](wordpress/thumbnail-support.md)\n* [Change Title Placeholder](wordpress/change-title-placeholder.md)\n* [AJAX Requests](wordpress/ajax-requests.md)\n* [Generating a custom menu](wordpress/generating-custom-menu.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianc%2Fdev-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamianc%2Fdev-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamianc%2Fdev-notes/lists"}