1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-16 05:28:03 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
nick-w-nick
cab482c7e6 Merge 295fe153ad into 95115c7ebc 2024-11-01 15:07:00 -04:00
jbranchaud
95115c7ebc Add Generate Random Alphanumeric Identifier as a Postgres TIL 2024-11-01 12:46:18 -05:00
jbranchaud
4e859b93d2 Add a clarification to the latest TIL 2024-10-31 20:01:26 -05:00
jbranchaud
23c20e99bf Add Undo Changes Made To Current Terminal Prompt as a Unix TIL 2024-10-31 19:57:05 -05:00
nick-w-nick
295fe153ad added mention of ES6 compatibility
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.
2022-01-06 11:39:04 -05:00
4 changed files with 71 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1491 TILs and counting..._
_1493 TILs and counting..._
---
@@ -771,6 +771,7 @@ _1491 TILs and counting..._
- [Force SSL When Making A psql Connection](postgres/force-ssl-when-making-a-psql-connection.md)
- [Generate A UUID](postgres/generate-a-uuid.md)
- [Generate Modern Primary Key Columns](postgres/generate-modern-primary-key-columns.md)
- [Generate Random Alphanumeric Identifier](postgres/generate-random-alphanumeric-identifier.md)
- [Generate Random UUIDs Without An Extension](postgres/generate-random-uuids-without-an-extension.md)
- [Generate Series Of Numbers](postgres/generate-series-of-numbers.md)
- [Generating UUIDs With pgcrypto](postgres/generating-uuids-with-pgcrypto.md)
@@ -1516,6 +1517,7 @@ _1491 TILs and counting..._
- [Switch Versions of a Brew Formula](unix/switch-versions-of-a-brew-formula.md)
- [Tell direnv To Load The Env File](unix/tell-direnv-to-load-the-env-file.md)
- [Touch Access And Modify Times Individually](unix/touch-access-and-modify-times-individually.md)
- [Undo Changes Made To Current Terminal Prompt](unix/undo-changes-made-to-current-terminal-prompt.md)
- [Undo Some Command Line Editing](unix/undo-some-command-line-editing.md)
- [Unrestrict Where ripgrep Searches](unix/unrestrict-where-ripgrep-searches.md)
- [Update Package Versions Known By asdf Plugin](unix/update-package-versions-known-by-asdf-plugin.md)

View File

@@ -5,6 +5,8 @@ an array-like object with all of the arguments to the function. Even if not
all of the arguments are referenced in the function signature, they can
still be accessed via the `arguments` object.
> For ES6+ compatibility, the `spread` operator used via [rest parameters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters) is preferred over the `arugments` object when accessing an abritrary number of function arguments.
```javascript
function argTest(one) {
console.log(one);

View File

@@ -0,0 +1,46 @@
# Generate Random Alphanumeric Identifier
Here is a PostgreSQL query that uses
[`pgcrypto`](https://www.postgresql.org/docs/current/pgcrypto.html) (for
[`get_random_bytes`](https://www.postgresql.org/docs/current/pgcrypto.html#PGCRYPTO-RANDOM-DATA-FUNCS))
and a CTE to generate a cryptographically-random 8-character alphanumeric
identifier.
```sql
-- First ensure pgcrypto is installed
create extension if not exists pgcrypto;
-- Generates a single 8-character identifier
with chars as (
-- excludes some look-alike characters
select '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz' as charset
),
random_bytes as (
select gen_random_bytes(8) as bytes
),
positions as (
select generate_series(0, 7) as pos
)
select string_agg(
substr(
charset,
(get_byte(bytes, pos) % length(charset)) + 1,
1
),
'' order by pos
) as short_id
from positions, random_bytes, chars;
```
The
[`generate_series`](https://www.postgresql.org/docs/current/functions-srf.html)
gives us an 8-row table from 0 to 7 that we can use as indexes into the byte
positions of the value we get from `gen_random_bytes`. Those random bytes get
mapped to individual alphanumeric characters from `chars`. That then gets
squeezed together with `string_agg`.
Note: the character set excludes some characters that can be mistaken for one
another like `0` and `O` or `1` and `l`.
Note: you could change the right-bound of the `generate_series` to generate a
different length identifier.

View File

@@ -0,0 +1,20 @@
# Undo Change Made to Current Terminal Prompt
I frequently use a variety of ASCII command characters like `ctrl-u` to delete
the entire line or `ctrl-a` to jump to the front of a long line so I can make
some edits toward that side of the command or `ctrl-e` to jump to the end of
the command for the same reason. I sometimes even use `ctrl-k` to delete
everything after the cursor to the end of the line.
What I didn't realize until now is that any of those commands the modify the
current line of the termianl prompt plus regular typing and hitting the
backspace are all _undoable_.
So, if I just wiped out half the line (with `ctrl-k`) and I immediately regret
it, I can restore it with `ctrl-_`. The system keeps of history of the actions
you've taken, so you can keep hitting `ctrl-_` to undo even further.
The `ctrl-/` command does the same, per GNU's [Undo Changes in the Emacs
docs](https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic-Undo.html).
[source](https://jvns.ca/ascii)