mirror of
https://github.com/jbranchaud/til
synced 2026-01-10 02:28:02 +00:00
295fe153ad76edc993b860c90ab115b8bd4a6fb8
Hello, I've added a small blockquote below the description to indicate that this method of accessing an indefinite number of function arguments has been superseded by the use of the spread operator via rest parameters for ES6+ compatibility.
TIL
Today I Learned
A collection of concise write-ups on small things I learn day to day across a variety of languages and technologies. These are things that don't really warrant a full blog post. These are things I've picked up by Learning In Public™ and pairing with smart people at Hashrocket.
For a steady stream of TILs, sign up for my newsletter.
1176 TILs and counting...
Categories
- Ack
- Amplify
- Chrome
- Clojure
- CSS
- Deno
- Devops
- Elixir
- Gatsby
- Git
- GitHub Actions
- Go
- HTML
- HTTP
- Internet
- JavaScript
- jq
- Kitty
- Linux
- Mac
- MongoDB
- MySQL
- Netlify
- Next.js
- Phoenix
- PostgreSQL
- Python
- Rails
- React
- React Native
- React Testing Library
- ReasonML
- RSpec
- Ruby
- sed
- Shell
- Tailwind CSS
- tmux
- TypeScript
- Unix
- Vercel
- Vim
- VSCode
- Webpack
- Workflow
- XState
- YAML
Ack
Amplify
Chrome
- Access A Value Logged To The Console
- Chrome Supports Many Unix Keyboard Shortcuts
- Copy Some Data From The Console
- Duplicate The Current Tab
- Easier Access To Network Throttling Controls
- Keybinding To Focus The Address Bar
- Navigate The Browser History With Vimium
- Pretty Print Tabular Data
- Reference The Selected Node
- Selecting DOM Elements Faster Than Ever
- Simulating Various Connection Speeds
- Toggle Device Mode
- Toggle Open The Console Drawer
- View Network Traffic For New Tabs
Clojure
- Aggregation Using merge-with
- Argument Requirements For A Function
- Combinations Of Items From A Sequence
- Define Something Only Once
- Evaluate One Liners With lein-exec
- Expanding Macros
- Get The Value Of An Environment Variable
- List Functions For A Namespace
- Load A File Into The REPL
- Mapping With An Index
- Open JavaDocs
- Pretty Print The Last Thing
- Quick Clojure Docs
- Reductions
- Set Max Heap Size
- Specify the Directory of a Shell Command
- Splitting On Whitespace
- Swap Two Items in a Vector
- Try A Clojure Project In The REPL
- Type of Anything
- When Overflow Is Desired
CSS
- Add Fab Icons To Your Site With FontAwesome 5
- Animate Smoothly Between Two Background Colors
- Apply Multiple Box Shadows To Single Element
- Apply Styles Based On Dark-Mode Preferences
- Apply Styles To The Last Child Of A Specific Type
- Change The Orientation Of An Image
- Circular Icons With A Massive Border Radius
- Clean Up Repetition With :is() Pseudo-Class
- Conditional Styling For Unsupported CSS Features
- Create A Pulsing Background With CSS Animation
- Define CSS Custom Properties With CSS Variables
- Define HSL Colors With Alpha Values
- Display Responsive iframe Maintaining Aspect Ratio
- Dry Up SCSS With Mixins
- Give Elements The Same Width With Flexbox
- Let Pointer Events Pass Through An Element
- Lighten And Darken With CSS Brightness Filter
- Lighten And Darken With SCSS
- Make A Block Of Text Respect New Lines
- Parameterized SCSS Mixins
- :root Has Higher Specificity Than html
- Style A Background With A Linear Gradient
- Using Maps In SCSS
Deno
Devops
- Aliasing An Ansible Host
- Allow Cross-Origin Requests To Include Cookies
- Allow HTTPS Through Your UFW Firewall
- Check The Status of All Services
- Check The Syntax Of nginx Files
- Connect To An RDS PostgreSQL Database
- Determine The IP Address Of A Domain
- Path Of The Packets
- Push Non-master Branch To Heroku
- Reload The nginx Configuration
- Resolve The Public IP Of A URL
- Running Out Of inode Space
- SSH Into A Docker Container
- SSL Certificates Can Cover Multiple Domains
- Wipe A Heroku Postgres Database
Elixir
- All Values For A Key In A Keyword List
- Append To A Keyword List
- Assert An Exception Is Raised
- Binary Representation Of A String
- Check For A Substring Match
- Check List Membership
- Comparing DateTime Structs
- Compute Intermediate Values In A With Construct
- Compute md5 Digest Of A String
- Counting Records With Ecto
- Create A Date With The Date Sigil
- Create A List Of Atoms
- Creating A PID
- Creating Indexes With Ecto
- Defining Multiple Clauses In An Anonymous Function
- Determine The Latest Release Of A Hex Package
- Do You Have The Time?
- Do You Have The Time? - Part 2
- Documentation Lookup With Vim And Alchemist
- Dynamically Generating Atoms
- Execute Raw SQL In An Ecto Migration
- Expose Internal Representation
- Include Captures With String.split
- Inspecting The Process Message Queue
- List Functions For A Module
- Listing Files In IEx
- Match On A Map In A With Construct
- Passing Around And Using Modules
- Pattern Matching In Anonymous Functions
- Pipe Into A Case Statement
- Quitting IEx
- Range Into List Using Comprehensions
- Refer To A Module Within Itself
- Referencing Values In IEx's History
- Remove One List From Another
- Replace Duplicates In A Keyword List
- Requiring Keys For Structs
- Reversing A List
- Reversing A List - Part 2
- Root Directory Of A Project
- Round Floats To Integers
- Run ExUnit Tests In A Deterministic Order
- Run The Test At A Specific Line Number
- Same Functions Should Be Grouped Together
- Skip A Specific Test
- String Interpolation With Just About Anything
- Unique Indexes With Ecto
- Updating Values In A Map
- Using When Clauses In A With Construct
- Virtual Fields With Ecto Schemas
- When Things Don't Match The With Statements
- Word Lists For Atoms
Gatsby
Git
- Accessing a Lost Commit
- Amend Author Of Previous Commit
- Auto-Squash Those Fixup Commits
- Caching Credentials
- Change The Start Point Of A Branch
- Checking Commit Ancestry
- Checkout Old Version Of A File
- Checkout Previous Branch
- Cherry Pick A Range Of Commits
- Clean Out All Local Branches
- Clean Out Working Copy With Patched Restore
- Clean Up Old Remote Tracking References
- Clone A Repo Just For The Files, Without History
- Clone A Repo Locally From .git
- Configure Global gitignore File
- Configuring The Pager
- Copy A File From Another Branch
- Create A New Branch With Git Switch
- Delete All Untracked Files
- Determine The Hash Id For A Blob
- Diffing With Patience
- Dropping Commits With Git Rebase
- Dry Runs in Git
- Exclude A File From A Diff Output
- Excluding Files Locally
- Find The Date That A File Was Added To The Repo
- Find The Initial Commit
- Get The Name Of The Current Branch
- Get The Short Version Of The Latest Commit
- Grab A Single File From A Stash
- Grep For A Pattern On Another Branch
- Grep Over Commit Messages
- Ignore Changes To A Tracked File
- Ignore Files Specific To Your Workflow
- Include A Message With Your Stashed Changes
- Include Or Exclude Remaining Patch Changes
- Include Some Stats In Your Git Log
- Intent To Add
- Interactively Unstage Changes
- Last Commit A File Appeared In
- List All Files Changed Between Two Branches
- List Branches That Contain A Commit
- List Commits On A Branch
- List Different Commits Between Two Branches
- List Filenames Without The Diffs
- List Just The Files Involved In A Commit
- List Most Git Commands
- List Untracked Files
- List Untracked Files For Scripting
- Move The Latest Commit To A New Branch
- Pick Specific Changes To Stash
- Pulling In Changes During An Interactive Rebase
- Push To A Branch On Another Remote
- Quicker Commit Fixes With The Fixup Flag
- Rebase Commits With An Arbitrary Command
- Reference A Commit Via Commit Message Pattern Matching
- Rename A Remote
- Renaming A Branch
- Resetting A Reset
- Resolve A Merge Conflict From Stash Pop
- Run A Git Command From Outside The Repo
- Set A Custom Pager For A Specific Command
- Show All Commits For A File Beyond Renaming
- Show Changes For Files That Match A Pattern
- Show Changes In The Compose Commit Message View
- Show File Diffs When Viewing Git Log
- Show List Of Most Recently Committed Branches
- Show Only Commits That Touch Specific Lines
- Show The diffstat Summary Of A Commit
- Show The Good And The Bad With Git Bisect
- Show What Is In A Stash
- Single Key Presses in Interactive Mode
- Skip A Bad Commit When Bisecting
- Skip Pre-Commit Hooks
- Staging Changes Within Vim
- Staging Stashes Interactively
- Stash A Single Untracked File
- Stash Everything
- Stashing Only Unstaged Changes
- Stashing Untracked Files
- Switch To A Recent Branch With FZF
- Turn Off The Output Pager For One Command
- Two Kinds Of Dotted Range Notation
- Unstage Changes Wih Git Restore
- Untrack A Directory Of Files Without Deleting
- Untrack A File Without Deleting It
- Update The URL Of A Remote
- Using Commands With A Relative Date Format
- Verbose Commit Message
- Viewing A File On Another Branch
- What Changed?
- What Is The Current Branch?
- Whitespace Warnings
GitHub Actions
Go
- Access Go Docs Offline
- Build For A Specific OS And Architecture
- Not So Random
- Replace The Current Process With An External Command
- Sleep For A Duration
- Upgrading From An Older Version On Mac
Heroku
- Deploy A Review App To A Different Stack
- Set And Show Heroku Env Variables
- SSH Into Heroku Server Hosting App
HTML
- Adding Alt Text To An Image
- Disable Auto-Completion For A Form Input
- Prevent Search Engines From Indexing A Page
- Render Text As Superscript
- Submit A Form With A Button Outside The Form
HTTP
Internet
- Add Emoji To GitHub Repository Description
- Enable Keyboard Shortcuts In Gmail
- Exclude Whitespace Changes From GitHub Diffs
- Figure Out Your Public IP Address
- Focus The URL Bar
- Get Random Images From Unsplash
- Search Tweets By Author
- Show All Pivotal Stories With Blockers
JavaScript
- Accessing Arguments To A Function
- Basic Date Formatting Without A Library
- Character Codes from Keyboard Listeners
- Check Classes On A DOM Element
- Check If A Number Is Positive Or Negative
- Check If Something Is An Array
- Check The Password Confirmation With Yup
- Compare The Equality Of Two Date Objects
- Computed Property Names In ES6
- Conditionally Include Pairs In An Object
- Configure Jest To Run A Test Setup File
- Create A Cancelable Promise With PCancelable
- Create An Array Containing 1 To N
- Create An Object With No Properties
- Create Bootstrapped Apps With Yarn
- Create Future And Past Dates From Today
- Custom Type Checking Error Messages With Yup
- Default And Named Exports From The Same Module
- Define A Custom Jest Matcher
- Destructure With Access To Nested Value And Parent Value;
- Destructuring The Rest Of An Array
- Enable ES7 Transforms With react-rails
- Ensure Shell Can Find Global npm Binaries
- Easy Date Comparison With DayJS
- Expand Emojis With The Spread Operator
- Fill An Input With A Ton Of Text
- Find The Version Of An Installed Dependency
- Find Where Yarn Is Installing Binaries
- for...in Iterates Over Object Properties
- Formatting Values With Units For Display
- Freeze An Object, Sorta
- Generate Random Integers
- Get The Location And Size Of An Element
- Get The Response Status From An Axios Error
- Get The Time Zone Of The Client Computer
- Globally Install A Package With Yarn
- Immutable Remove With The Spread Operator
- Initialize A New JavaScript Project With Yarn
- Install The Latest Version Of Node With Nvm
- Interpolate A String Into A Regex
- ISO-8601 Formatted Dates Are Interpreted As UTC
- Link A JavaScript Package Locally
- List Top-Level NPM Dependencies
- Make The Browser Editable With Design Mode
- Matching A Computed Property In Function Args
- Matching Multiple Values In A Switch Statement
- Mock A Function With Return Values Using Jest
- New Dates Can Take Out Of Bounds Values
- Numbers Are Empty
- Object Initialization With Shorthand Property Names
- Obtain Undefined Value With The Void Operator
- Parse A Date From A Timestamp
- Random Cannot Be Seeded
- Reach Into An Object For Nested Data With Get
- Render An Array Of Elements With React 16
- Resolve And Pass Multiple Values From A Then
- Running ES6 Specs With Mocha
- Scoping Variables With A Block Statement
- Sleep For A Bit In Async Code
- Sorting Arrays Of Objects With Lodash
- Splat Arguments To A Function
- Spread The Rest With ES6
- Start Node Process In Specific Timezone
- String Interpolation With Template Literals
- Support Nested Matching In Custom Jest Matchers
- Tell Prettier To Not Format A Statement
- Test Coverage Stats With Jest
- Test Timing-Based Code With Jest Fake Timers
- The Comma Operator
- Throttling A Function Call
- Timing Processes
- Transforming ES6 and JSX With Babel 6
- Truthiness of Integer Arrays
- Turn An HTMLCollection Into An Array
- Turn Off Console Error Messages In A Test
- Waiting On Multiple Promises
- Who Am I: NPM Edition
- Yarn Commands Without The Emojis
- Yup Schemas Are Validated Asynchronously
jq
Kitty
Linux
- Check Ubuntu Version
- Configure Your Server Timezone
- List The Statuses Of All Upstart Jobs
- Show Current System Time And Settings
- Upgrading Ubuntu
Mac
- Access All Screen And Video Capture Options
- Access System Information On OS X
- Access Unsupported Screen Resolutions With RDM
- Clean Up Old Homebrew Files
- Convert An HEIC Image File To JPG
- Default Screenshot Location
- Disable Swipe Navigation For A Specific App
- Display A Message With Alfred
- Find The Process Using A Specific Port
- Gesture For Viewing All Windows Of Current App
- Insert A Non-Breaking Space Character
- List All The Say Voices
- Quickly Type En Dashes And Em Dashes
- Require Additional JS Libraries In Postman
- Resize App Windows With AppleScript
- Resizing Both Corners Of A Window
- Run A Hardware Check
- Run AppleScript Commands Inline In The Terminal
- Set A Window To Its Default Zoom Level
- Specify App When Opening From Command Line
- Use Default Screenshot Shortcuts With CleanShot X
- View All Windows Of The Current App
MongoDB
- Determine The Database Version
- Dump A Remote Database
- Get Size Stats For A Collection
- List Size Stats For All Collections
MySQL
- Display Output In A Vertical Format
- Doing Date Math
- Dump A Database To A File
- List Databases And Tables
- Show Create Statement For A Table
- Show Tables That Match A Pattern
- Show Indexes For A Table
Netlify
Next.js
- Create Files And Directories For Dynamic Routes
- Define URL Redirects In The Next Config
- Push A Route With A URL Object
- Remove A Query Param From The URL
- Ship Public Assets With A Next.js App
Phoenix
- Bypass Template Rendering
- Check The Installed Version
- Generate New App Without Brunch
- Render A Template To A String
- Serve Static Assets From Custom Directory
- Specifying The Digest Directory
- Specifying The Server Port
PostgreSQL
- A Better Null Display Character
- Add Foreign Key Constraint Without A Full Lock
- Add ON DELETE CASCADE To Foreign Key Constraint
- Adding Composite Uniqueness Constraints
- Aggregate A Column Into An Array
- Assumed Radius Of The Earth
- Auto Expanded Display
- Between Symmetric
- Capitalize All The Words
- Change The Current Directory For psql
- Check If The Local Server Is Running
- Check Table For Any Oprhaned Records
- Checking Inequality
- Checking The Type Of A Value
- Clear The Screen In psql
- Clear The Screen In psql (2)
- Compute Hashes With pgcrypto
- Compute The Levenshtein Distance Of Two Strings
- Compute The md5 Hash Of A String
- Configure The Timezone
- Constructing A Range Of Dates
- Convert A String To A Timestamp
- Count How Many Records There Are Of Each Type
- Count Records By Type
- Count The Number Of Trues In An Aggregate Query
- Create A Composite Primary Key
- Create An Index Without Locking The Table
- Create Database Uses Template1
- Create hstore From Two Arrays
- Create Table Adds A Data Type
- Creating Conditional Constraints
- Creating Custom Types
- Day Of Week By Name For A Date
- Day Of Week For A Date
- Default Schema
- Defining Arrays
- Determine Types Of JSONB Records
- Determining The Age Of Things
- Difference Between Explain And Explain Analyze
- Dump All Databases To A SQL File
- Dump And Restore A Database
- Duplicate A Local Database
- Edit Existing Functions
- Escaping A Quote In A String
- Escaping String Literals With Dollar Quoting
- Export Query Results To A CSV
- Extracting Nested JSON Data
- Find Duplicate Records In Table Without Unique Id
- Find Records That Contain Duplicate Values
- Find Records That Have Multiple Associated Records
- Find The Data Directory
- Find The Location Of Postgres Config Files
- Fizzbuzz With Common Table Expressions
- Force SSL When Making A psql Connection
- Generate A UUID
- Generate Random UUIDs Without An Extension
- Generate Series Of Numbers
- Generating UUIDs With pgcrypto
- Get A Quick Approximate Count Of A Table
- Get The Size Of A Database
- Get The Size Of A Table
- Get The Size Of An Index
- Getting A Slice Of An Array
- Group By The Result Of A Function Call
- Insert A Bunch Of Records With Generate Series
- Insert Just The Defaults
- Install Postgres With uuid-ossp Using asdf
- Integers In Postgres
- Intervals Of Time By Week
- Is It Null Or Not Null?
- Limit Execution Time Of Statements
- List All Columns Of A Specific Type
- List All Rows In A Table
- List All The Databases
- List All Versions Of A Function
- List Available Schemas
- List Connections To A Database
- List Database Objects With Disk Usage
- List Database Users
- List Various Kinds Of Objects
- Lower Is Faster Than ilike
- Max Identifier Length Is 63 Bytes
- pg Prefix Is Reserved For System Schemas
- Prepare, Execute, And Deallocate Statements
- Pretty Print Data Sizes
- Pretty Printing JSONB Rows
- Prevent A Query From Running Too Long
- Print The Query Buffer In psql
- Remove Not Null Constraint From A Column
- Renaming A Sequence
- Renaming A Table
- Restart A Sequence
- Restarting Sequences When Truncating Tables
- Salt And Hash A Password With pgcrypto
- Send A Command To psql
- Set Inclusion With hstore
- Set A Seed For The Random Number Generator
- Set A Statement Timeout Threshold For A Session
- Sets With The Values Command
- Shorthand Absolute Value Operator
- Show All Versions Of An Operator
- Sleeping
- Special Math Operators
- Storing Emails With citext
- String Contains Another String
- Switch Non-Castable Column Type With Using Clause
- Switch The Running Postgres Server Version
- Temporarily Disable Triggers
- Temporary Tables
- Terminating A Connection
- The nullif Function
- Timestamp Functions
- Toggling The Pager In PSQL
- Track psql History Separately Per Database
- Truncate All Rows
- Truncate Tables With Dependents
- Turning Timing On
- Two Ways To Compute Factorial
- Two Ways To Escape A Quote In A String
- Types By Category
- Union All Rows Including Duplicates
- Use A psqlrc File For Common Settings
- Use Argument Indexes
- Use Not Valid To Immediately Enforce A Constraint
- Using Expressions In Indexes
- Using Intervals To Offset Time
- Who Is The Current User
- Word Count for a Column
- Write A Query Result To File
Python
Rails
- Add A Check Constraint To A Table
- Add A Foreign Key Reference To A Table
- Add A Reference Column With An Index
- Add ActiveRecord Error Not Tied To Any Attribute
- Add React With Webpacker To A New Rails App
- Add timestamptz Columns With The Migration DSL
- Access Secrets In A Rails 5.2 App
- ActiveRecord Query For This Or That
- Advance The Date
- Allow List Params Anywhere With Strong Params
- All or Nothing Database Transactions
- Assert Two Arrays Have The Same Items With RSpec
- Attach A File With Capybara
- Attribute Getter without the Recursion
- Attribute Was
- Autosave False On ActiveRecord Associations
- Bind Parameters To ActiveRecord SQL Query
- Build A Hash Of Model Attributes
- Capture Development Emails With Mailhog
- Capybara Page Status Code
- Cast Common Boolean-Like Values To Booleans
- Change The Nullability Of A Column
- Change The Time Zone Offset Of A DateTime Object
- Check If ActiveRecord Update Fails
- Check If Any Records Have A Null Value
- Check Specific Attributes On ActiveRecord Array
- Code Statistics For An Application
- Columns With Default Values Are Nil On Create
- Comparing DateTimes Down To Second Precision
- Conditional Class Selectors in Haml
- Convert A Symbol To A Constant
- Count The Number Of Records By Attribute
- Create A Custom Named References Column
- Create A Join Table With The Migration DSL
- Creating Records of Has_One Associations
- Custom Validation Message
- Customize Paths And Helpers For Devise Routes
- Customize The Path Of A Resource Route
- Delete Paranoid Records
- Demodulize A Class Name
- Different Ways To Add A Foreign Key Reference
- Disambiguate Where In A Joined Relation
- Ensure Migrations Use The Latest Schema
- Find Or Create A Record With FactoryBot
- Find Records With Multiple Associated Records
- Force All Users To Sign Out
- Generating And Executing SQL
- Get An Array Of Values From The Database
- Get An Empty ActiveRecord Relation
- Get The Column Names For A Model
- Get The Current Time
- Grab A Random Record From The Database
- Handle Named Arguments In A Rake Task
- Hash Slicing
- Ignore Poltergeist JavaScript Errors
- Include Devise Helpers In Your Controller Tests
- Inspect Previous Changes To ActiveRecord Object
- Link To The Current Page With Query Params
- List All Installable Rails Versions
- List The Enqueued Jobs
- Load Records In Batches With find_each
- Log SQL Queries Executed By ActiveRecord
- Mark A Migration As Irreversible
- Make ActionMailer Synchronous In Test
- Manually Run A Migration From Rails Console
- Mark For Destruction
- Mask An ActiveRecord Attribute
- Merge A Scope Into An ActiveRecord Query
- Migrating Up Down Up
- Order Matters For
rescue_fromBlocks - Params Includes Submission Button Info
- Parse Query Params From A URL
- Perform SQL Explain With ActiveRecord
- Polymorphic Path Helpers
- Pretend Generations
- Prevent Writes With A Sandboxed Rails Console
- Query A Single Value From The Database
- Read In Environment-Specific Config Values
- Read-Only Models
- Remove The Default Value On A Column
- Render An Alternative ActionMailer Template
- Render The Response Body In Controller Specs
- Replace An Index With A Unique Index
- Rescue From
- Rescue From With A Separate Method
- Retrieve An Object If It Exists
- Rollback A Specific Migration Out Of Order
- Rounding Numbers With Precision
- Schedule Sidekiq Jobs Out Into The Future
- Secure Passwords With Rails And Bcrypt
- Select A Select By Selector
- Select Value For SQL Counts
- Serialize With fast_jsonapi In A Rails App
- Set A Timestamp Field To The Current Time
- Set default_url_options For Entire Application
- Set Schema Search Path
- Set Statement Timeout For All Postgres Connections
- Set The Default Development Port
- Show Pending Migrations
- Show Rails Models With Pry
- Show Rails Routes With Pry
- Skip Validations When Creating A Record
- Specify New Attributes For #find_or_create_by
- Temporarily Disable strong_params
- Test If An Instance Variable Was Assigned
- Test If deliver_later Is Called For A Mailer
- Test Out URL And Path Helpers In The Console
- Truncate Almost All Tables
- Update Column Versus Update Attribute
- Upgrading Your Manifest For Sprocket's 4
- Verify And Read A Signed Cookie Value
- Where Am I In The Partial Iteration?
- Wipe Out All Precompiled Assets
- Write Reversible Migration To Set Default
- Write Safer Where Clauses With Placeholders
React
- A Component Is Just A Bag Of Data
- Access The Latest Lifecycle Methods In An Old App
- Accessing Env Vars In create-react-app
- Accessing Location Within @reach/router
- Allow md As An Extension With gatsby-mdx
- Alter The Display Name Of A Component
- Building A React App In The Browser
- Check The Type Of A Child Component
- Conditionally Including Event Handler Functions
- Create A Snowpack-Bundled React App
- Create Dynamically Named Custom React Components
- create-react-app Comes With Lodash
- create-react-app Has A Default Test Setup File
- CSS !important Is Not Supported By Inline Styles
- Debug Jest Tests In create-react-app
- Defining State In A Simple Class Component
- Destructure Variables As Props To A Component
- Details Tags Are A Controllable Component
- Dispatch Anywhere With Redux
- Dynamically Add Props To A Child Component
- Dynamically Create HTML Elements
- Enforce Specific Values With PropTypes
- Focus An Input With useRef Hook
- Force A Component To Only Have One Child
- Forcing A Child Remount With The Key Prop
- Formik Connected Components
- Formik's Validation Schema As A Function
- Inactive And Active Component Styles With Radium
- Inline Style Attributes Should Be Camel Cased
- Manage State In A Functional Component
- Mapping Over One Or Many Children
- Mock A Function That A Component Imports
- Navigate With State Via @reach/router
- Pairing A Callback With A useState Hook
- Pass A Function To A useState Updater
- Passing Props Down To React-Router Route
- Prevent reach/router Redirect Error Screen In Dev
- Proxy To An API Server In Development With CRA
- Quickly Search For A Component With React DevTools
- @reach/router Renders To A Div
- Read Only Input Elements
- Rendering Multiple Nodes With Fragments
- Set The Type For A useState Hook
- Specifying Dependencies Of A useEffect Hook
- Spelunking Through Components With Enzyme's Dive
- Sync Your react-router State With Redux
- Test Files In create-react-app
- Test That Element Does Not Render In The Component
- Trigger Effect Only When The Component Mounts
- Update Formik Initial Values When Props Change
- Upgrading To The Latest React In CodeSandbox
- Use A Ref To Autofocus An Input
- Use React 16 With Gatsby
- Use withRouter To Pass Down React-Router History
- Visually Select A React Element For Inspection
- Who Is Your Favorite Child?
- Wrap The Root Of A Gatsby App In A Component
React Native
React Testing Library
- Check That A Component Renders As Null
- findBy* Queries Have Async Built In
- Pretty Print Some DOM To Debug A Test
- Test A Component That Uses React Portals
ReasonML
- Break Out Of A While Loop
- Compile Reason To Native With Dune
- Compile Reason With An OCaml Package Using Dune
- Create A Map Of Strings
- Create A Stream From An Array
- Creating A 2D Array
- Data Structures With Self-Referential Types
- Defining Variants With Constructor Arguments
- Dynamically Create A Printf String Format
- Exhaustive Pattern Matching Of List Variants
- Format The Current File Within Vim
- Generate A Native ReasonML Project With Pesy
- Generate Starter Reason Projects
- Helping The Compiler Help Us With Variants
- Inline Component Styles With Reason React
- Is This A Directory Or A File?
- Making Things Mutable
- Modifying A String With blit_string
- Multi-Argument Functions As Syntactic Sugar
- Pattern Match On Exceptions
- Quickly Bootstrap A React App Using Reason
- Seeding And Generating Random Integers
- Stream A File Line By Line
- String Interpolation With Integers And Sprintf
- String Interpolation With Quoted Strings
- Trying Out ReasonML In CodeSandbox
- Two Ways To Find An Item In A List
- Using Optional Labeled Function Arguments
- Wrapping A Component For Use In JavaScript
RSpec
Ruby
- A Basic Case Statement
- A Shorthand For Rerunning Failed Tests With RSpec
- Add Comments To Regex With Free-Spacing
- Add Linux As A Bundler Platform
- Are They All True?
- Assert About An Object's Attributes With RSpec
- Assoc For Hashes
- Block Comments
- Build HTTP And HTTPS URLs
- Chaining Multiple RSpec Change Matchers
- Check If An Object Includes A Module
- Check Return Status Of Running A Shell Command
- Click On Text With Capybara
- Colorful Output With MiniTest
- Comparing Class Hierarchy Relationships
- Comparing Arrays In RSpec
- Construct A Constant From A String
- Convert A Unix Epoch Timestamp To A Time Object
- Create an Array of Stringed Numbers
- Create a CSV::Table Object
- Create A Hash From An Array Of Arrays
- Create Listing Of All Middleman Pages
- Create Named Structs With Struct.new
- Create Thumbnail Image For A PDF
- Defaulting To Frozen String Literals
- Define A Custom RSpec Matcher
- Define A Method On A Struct
- Destructure The First Item From An Array
- Destructuring Arrays In Blocks
- Disassemble Some Codes
- Double Splat To Merge Hashes
- Edit Previous Parts Of The Pry Buffer History
- Editing Code In Pry
- Encode A String As URL-Safe Base64
- Enumerate A Pairing Of Every Two Sequential Items
- Evaluating One-Off Commands
- Exclude Values From An Array
- Expect A Method To Be Called And Actually Call It
- Extract A Column Of Data From A CSV File
- FactoryGirl Sequences
- Fail
- Find The Min And Max With A Single Call
- Finding The Source of Ruby Methods
- Generate A Signed JWT Token
- Generate Ruby Version And Gemset Files With RVM
- Get Info About Your RubyGems Environment
- Identify Outdated Gems
- If You Detect None
- Iterate With An Offset Index
- Include Extra Context In A Honeybadger Notify
- Ins And Outs Of Pry
- Invoking Rake Tasks Multiple Times
- IRB Has Built-In Benchmarking With Ruby 3
- Jump Out Of A Nested Context With Throw/Catch
- Last Raised Exception In The Call Stack
- Limit Split
- List The Running Ruby Version
- Listing Local Variables
- Map With Index Over An Array
- Mock Method Chain Calls With RSpec
- Mocking Requests With Partial URIs Using Regex
- Named Regex Captures Are Assigned To Variables
- Navigate Back In The Browser With Capybara
- Next And Previous Floats
- Or Operator Precedence
- Override The Initial Sequence Value
- Parallel Bundle Install
- Parse JSON Into An OpenStruct
- Parsing A CSV With Quotes In The Data
- Pass A Block To Count
- Passing Arbitrary Methods As Blocks
- Passing Arguments To A Rake Task
- Pattern Match Values From A Hash
- Percent Notation
- Question Mark Operator
- Rake Only Lists Tasks With Descriptions
- Read The First Line From A File
- Rendering ERB
- Replace The Current Process With An External Command
- Require Entire Gemfile In Pry Session
- Rerun Only Failures With RSpec
- Retry A Block After An Exception
- Returning With Sequel
- rexml Is A Bundled Gem As Of Ruby 3.0.0
- Run An Older Version Of Bundler
- Running A Single MiniTest Example
- Safe Navigation Operator
- Scripting With RVM
- Scroll To Top Of Page With Capybara
- Set RVM Default Ruby
- Show Public Methods With Pry
- Silence The Output Of A Ruby Statement In Pry
- Single And Double Quoted String Notation
- Squeeze Out The Extra Space
- String Interpolation With Instance Variables
- Summing Collections
- Triple Equals: The Case Equality Operator
- Turn Key And Value Arrays Into A Hash
- Turning Any Class Into An Enumerator
- Turning Things Into Hashes
- Uncaught Exceptions In Pry
undef_methodAnd The Inheritance Hierarchy- Uninstall Specific Version Of A Ruby Gem
- Unpacking Strings Into Binary
- Up And Down With Integers
- Update The Gemfile Bundled With Version
- Use A Case Statement As A Cond Statement
- Use dotenv In A Non-Rails Project
- Use Tap For Better Test Data Setup
- Using BCrypt To Create And Check Hashed Passwords
- What To Do When You Don't Rescue
- Who Are My Ancestors?
- Wrap Things In An Array, Even Hashes
- Zero Padding
sed
- Apply Multiple Substitutions To The Input
- Equivalence Classes Of Repetition MetaChars
- Extract Value From Command Output With Sed
- Grab All The Method Names Defined In A Ruby File
- Grab The First Line Of A File
- OSX sed Does Regex A Bit Different
- Output Only Lines Involved In A Substitution
- Reference A Capture In The Regex
- Use An Alternative Delimiter In A Substitution
Shell
Streaming
Tailwind CSS
- Base Styles For Text Link
- Specify Paths For Purging Unused CSS
- Use Tailwind Typography Prose In Dark Mode
tmux
- Access Past Copy Buffer History
- Adjusting Window Pane Size
- Break Current Pane Out To Separate Window
- Change Base Directory Of Existing Session
- Change The Default Prefix Key
- Create A Named tmux Session
- Create A New Session In A New Server
- Cycle Through Layouts
- Enabling Vi Mode
- Get Mouse Copy/Paste Working In Kitty
- Hiding The Status Bar
- Jumping Between Sessions
- Kill All Your tmux Sessions
- Kill Other Connections To A Session
- Kill The Current Session
- List All Key Bindings
- List Sessions
- Open New Window With A Specific Directory
- Organizing Windows
- Paging Up And Down
- Pane Killer
- Reclaiming The Entire Window
- Remove The Delay On The Escape Key
- Rename The Current Session
- Reset An Option Back To Its Default Value
- Set Session Specific Environment Variables
- Show The Current Value For An Option
- Swap Split Panes
- Switch To A Specific Session And Window
- tmux in your tmux
- Toggle Between Two Common Sessions
TypeScript
- Add Types To An Object Destructuring
- Compiler Checks For Unused Params And Variables
- Re-Export An Imported Type
- Type Narrowing With Similarly Shaped Objects
- Use An Array Check For Type Narrowing
- Zero-Config Environments For Trying Out Types
Unix
- All The Environment Variables
- Cat A File With Line Numbers
- Cat Files With Color Using Bat
- Change Default Shell For A User
- Change To That New Directory
- Check If A Port Is In Use
- Check If Command Is Executable Before Using
- Check The Current Working Directory
- Clear The Screen
- Command Line Length Limitations
- Compare Two Variables In A Bash Script
- Configure cd To Behave Like pushd In Zsh
- Copying File Contents To System Paste Buffer
- Copying Nested Directories With Ditto
- Count The Number Of Matches In A Grep
- Create A File Descriptor with Process Substitution
- Create A Sequence Of Values With A Step
- Curl With Cookies
- Curling For Headers
- Curling With Basic Auth Credentials
- Display All The Terminal Colors
- Display Free Disk Space
- Display The Contents Of A Directory As A Tree
- Do A Dry Run Of An rsync
- Do Not Overwrite Existing Files
- Enable Multi-Select Of Results With fzf
- Exclude A Directory With Find
- Exclude Certain Files From An rsync Run
- Figure Out The Week Of The Year From The Terminal
- File Type Info With File
- Find A File Installed By Brew
- Find Files With fd
- Find Newer Files
- Fix Unlinked Node Binaries With asdf
- Forward Multiple Ports Over SSH
- Generate A SAML Key And Certificate Pair
- Get Matching Filenames As Output From Grep
- Get The Unix Timestamp
- Global Substitution On The Previous Command
- Globbing For All Directories In Zsh
- Globbing For Filenames In Zsh
- Grep For Files Without A Match
- Grep For Files With Multiple Matches
- Grep For Multiple Patterns
- Hexdump A Compiled File
- Ignore The Alias When Running A Command
- Interactively Browse Available Node Versions
- Jump To The Ends Of Your Shell History
- Kill Everything Running On A Certain Port
- Killing A Frozen SSH Session
- Last Argument Of The Last Command
- Less With Style
- List All Users
- List Files Ordered By Modification Date
- List Names Of Files With Matches
- List Of Sessions To A Machine
- List Parent pid With ps
- List Stats For A File
- List The Available JDKs
- List The Stack Of Remembered Directories
- Map A Domain To localhost
- Only Show The Matches
- Open The Current Command In An Editor
- Partial String Matching In Bash Scripts
- PID Of The Current Shell
- Print A Range Of Lines For A File With Bat
- Print Out Files In Reverse
- Provide A Fallback Value For Unset Parameter
- Repeat Yourself
- Saying Yes
- Search Files Specific To A Language
- Search History
- Search Man Page Descriptions
- Securely Remove Files
- Set The asdf Package Version For A Single Shell
- Show A File Preview When Searching With FZF
- Show Disk Usage For The Current Directory
- Show The Size Of Everything In A Directory
- Skip Paging If Output Fits On Screen With Less
- SSH Escape Sequences
- SSH With Port Forwarding
- Specify The Language For A File With Bat
- Sort In Numerical Order
- Switch Versions of a Brew Formula
- Touch Access And Modify Times Individually
- Undo Some Command Line Editing
- Update Package Versions Known By asdf Plugin
- Use fzf To Change Directories
- Use Regex Pattern Matching With Grep
- View A Web Page In The Terminal
- Watch The Difference
- Watch This Run Repeatedly
- Where Are The Binaries?
Vercel
- Add Web Server Layer Redirects
- Deploy An App Without Pushing An Empty Commit
- Naming Of The Vercel Config File
- Share Development Environment Variables Via CLI
Vim
- Aborting Git Commits And Rebases
- Absolute And Relative Line Numbers
- Add A File Without Loading It
- Add Custom Dictionary Words
- All The Ways To Write And Quit In Vim
- Allow Neovim To Copy/Paste With System Clipboard
- Almost The End Of The Line
- Alternate Files With vim-rails
- Always Keep The Gutter Open
- Amend Commits With Fugitive
- Backspace Options
- Beginning And End Of Previous Change
- The Black Hole Register
- Blank Lines Above And Below
- Breaking The Undo Sequence
- Buffer Time Travel
- Build And Install A Go Program
- Case-Aware Substitution With vim-abolish
- Case-Insensitive Substitution
- Center The Cursor
- Check For An Executable
- Check Your Current Color Scheme
- Clear Out The Jump List
- Close All Other Splits
- Close All Other Windows
- Close the Current Buffer
- Coerce The Current Filetype
- Coercing Casing With vim-abolish
- Configure FZF To Use fd For File Finding
- Count the Number of Matches
- Create A New Directory In netrw
- Create A New File In A New Directory
- Creating Non-Existent Directories
- Default netrw To Tree Liststyle
- Delete Every Other Line
- Delete Lines That Match A Pattern
- Delete To The End Of The Line
- Deleting Buffers In BufExplorer
- Deleting Directories Of Files From netrw
- Detect If You Are On A Mac
- Difference Between :wq and :x
- Display Word Count Stats
- Edges Of The Selection
- Edit A File At A Specific Line Number
- Edit A File Starting On The Last Line
- End Of The Word
- Escaping Terminal-Mode In An Nvim Terminal
- Filter Lines Through An External Program
- Fix The Spelling Of A Word
- Fold A Visual Selection And Expand It Back
- For When That Escape Key Is Hard To Reach
- Format Long Lines To Text Width
- From Ruby Variables To JavaScript Variables
- Generate and Edit Rails Migration
- Get The pid Of The Session
- Go Back To The Previous Window
- Go To File With Line Number
- Grepping Through The Vim Help Files
- Head of File Name
- Help For Non-Normal Mode Features
- Highlighting Search Matches
- Horizontal to Vertical and Back Again
- Increment All The Numbers
- Incremental Searching
- Interact With The Alternate File
- Interactive Buffer List
- Joining Lines Together
- Jump Back To The Latest Jump Position
- Jump Between And Stage Git Hunks With Fugitive
- Jump To Matching Pair
- Jump To The Next Misspelling
- List All Buffers
- List Of Plugins
- Load A Directory Of Files Into The Buffer List
- Make Directories For The Current File
- Marks Across Vim Sessions
- Match The Beginning And End Of Words
- Moving To A Specific Line
- Navigate To The Nth Column On A Line
- Navigating By Blank Lines
- NETRW Listing Styles
- Next Modified Buffer
- Normal Node Binding To Just Quit
- Open A Tag In A Split Window
- Open an Unnamed Buffer
- Open FZF Result In A Split
- Open Routes File With vim-rails
- Open The Directory Of The Current File
- Open The Fugitive Git Summary Window
- Open The Gemfile
- Open The Latest Rails Migration
- Open The Selected Lines In GitHub With Gbrowse
- Open Vim To A Tag Definition
- Opening a URL
- Opening Man Pages In Vim
- Paste A Register From Insert Mode
- Preventing Typos with Abbreviations
- Previous Buffer
- Previous Visual Selection
- Print The Relative Path Of The Current File
- Print Version Information
- Quick File Info
- Quick Man Pages
- Quick Quickfix List Navigation
- Quickly Fix A Misspelled Word
- Quickly Switch To A Buffer By Number
- Quit When There Is An Argument List
- Re-indenting Your Code
- Read In The Contents Of A Rails File
- Rename A File Through netrw
- Rename Current File
- Repeat The Previous Change
- Repeating Characters
- Replace A Character
- Reset Target tslime Pane
- Reverse A Group Of Lines
- Rotate Everything By 13 Letters
- Rotate The Orientation Of Split Windows
- Running Bundle With vim-bundler
- Scrolling Relative to the Cursor
- Search Backward Through A File
- Searching For Hex Digits
- Select Several Results From An FZF Search
- Set End Of Line Markers
- Set Your Color Scheme
- Set Up Vim-Plug With Neovim
- Setting Filetype With Modelines
- Show All Syntax Highlighting Rules
- Show Matching Entries For Help
- Specify The Line Height Of The Quick Fix Window
- Split Different
- Split The Current Window
- Splitting For New Files
- Source Original vimrc When Using Neovim
- Swap Occurrences Of Two Words
- Swapping Split Windows
- Tabs To Spaces
- The Vim Info File
- Toggle Absolute And Relative Paths In BufExplorer
- Toggling Syntax Highlighting
- Turning Off Search Highlighting
- Unloading A Buffer
- Use Active Window With BufExplorer
- Use The Terminal Inside A Vim Session
- Using vim-surround With A Visual Selection
- Verbose Commits With Fugitive
- View Commit History of a File
- View The Current File In GitHub
- Viewing Man Pages with man.vim
- Vim Without The Extras
- What Is On The Runtime Path?
- Whole Line Auto-Completion
- Wrap With Some Room
VSCode
- Add The VSCode CLI To Your Path
- Advance Through Search Results
- Enable Breadcrumbs For Version 1.26 Release
- Open An Integrated Terminal Window
- Toggle Between Terminals
Webpack
- Better Module Imports With Aliases
- Debugging With Full Source Maps
- Run ESLint As A Preloader
- Specify Port Of CRA's Webpack Dev Server
- Use A Specific Config File
Workflow
- Change Window Name In iTerm
- Convert An ePub Document To PDF On Mac
- Create A Public URL For A Local Server
- Enable Dev Tools For Safari
- Forward Stripe Events To Local Server
- Get Your Public IP Address
- Import A Github Project Into CodeSandbox
- Interactively Kill A Process With fkill
- Open Slack's Keyboard Shortcuts Reference Panel
- Prune The Excess From node_modules
- Rotate An Image To Be Oriented Upright
- Set Recurring Reminders In Slack
- Toggle Between Stories In Storybook
- Update asdf Plugins With Latest Package Versions
- View The PR For The Current GitHub Branch
XState
- Always Use Inline Functions With Assign
- Custom Jest Matcher For XState Machine States
- Define Event That Does Internal Self Transition
- Events Stop Propagating Once Handled
- Inline Actions vs Actions In Machine Options
- Make Immediate And Delayed Transitions
- Simple States And Composite States
- Start A Machine In A Specific State
- Use An XState Machine With React
YAML
Usage
The .vimrc file for this project contains a function CountTILs that can
be invoked with <leader>c. This will do a substitution count of the
current number of TILs and display the result in the command tray.
About
I shamelessly stole this idea from thoughtbot/til.
Other TIL Collections
License
© 2015-2021 Josh Branchaud
This repository is licensed under the MIT license. See LICENSE for
details.
Languages
Markdown
100%