- Make sure you have a modern-ish version of Node.js installed.
- Type
npx https://gist.github.com/kfox/1280c2f0ee8324067dba15300e0f2fd3
- Connect to it from a client, e.g.
netcat
or similar:nc localhost 9000
// Prime checking regex, which this code is based off of | |
// https://regex101.com/r/RIJkGF/1 | |
type StringDivisible<n extends string, div extends string> = n extends `` ? true : n extends `${div}${infer r}` ? StringDivisible<r, div> : false; | |
type Substrings<n extends string, d extends string = ""> = n extends `${d}${infer r}` ? readonly [` ${d}`, ...Substrings<r, ` ${d}`>] : readonly []; | |
type StringFactors<n extends string> = Substrings<n> extends readonly [unknown, ...infer R extends readonly string[], unknown] ? R : never; | |
type StringIsPrime<n extends string, Factors extends readonly string[] = StringFactors<n>> = Factors extends readonly [infer s extends string, ...infer R extends readonly string[]] ? StringDivisible<n, s> extends true ? false : StringIsPrime<n, R> : true; | |
type RepeatStringByStringDigit<str extends string, d extends string> = |
I have an updated version of this on my blog here: https://chrisamico.com/blog/2023-01-14/python-setup/.
This is my recommended Python setup, as of Fall 2022. The Python landscape can be a confusing mess of overlapping tools that sometimes don't work well together. This is an effort to standardize our approach and environments.
- Python docs: https://docs.python.org/3/
- Python Standard Library: - Start here when you're trying to solve a specific problem
Some have leveled the criticism that "part 1" of this post is unnecessarily contriving a problem that doesn't really exist in "good code" -- if you really need to narrow a scope of some declarations in a function, then that function is too complex already and that bigger problem is what you need to fix.
Just to be extra clear: if a chunk of code is already reasonable to make a function, that's not the sort of code I'm talking about in either of these blog posts. If it's being called multiple times, or if it's completely independent and makes sense as its own logical chunk, make it a function. I'm talking about a different sort of code, a set of a few statements related to each other, that declare one or more variables, but which logically still belong inside another function. That's the context here.
OK, let's stop talking about this stuff abstractly.
[EDIT: I've added a part 2 to this blog post, to address some of the feedback that has come up: https://gist.github.com/getify/706e5e10822a298375da40f9cc1fa295]
Recently, this article on "The JavaScript Block Statement" came out, and it received some good discussion in a reddit thread. But the general reaction seems to be against this approach. That saddens me.
BBEdit now supports using the ‘x-bbedit’ URL scheme for opening files, and optionally specifying destination line and column numbers. The syntax for this scheme is:
x-bbedit://open?url=file:///path/to/some/file
where ‘/path/to/some/file’ is the actual path to the file you want BBEdit to open.
You can also specify a specific line to select when opening the file; for example: x-bbedit://open?url=file:///path/to/some/file&line=5
or if you also include add a column position, then BBEdit will place the insertion point before the indicated character on the previously-specified line:
x-bbedit://open?url=file:///path/to/some/file&line=5&column=42
/* Ultra lightweight Github REST Client */ | |
// original inspiration via https://gist.github.com/v1vendi/75d5e5dad7a2d1ef3fcb48234e4528cb | |
const token = 'github-token-here' | |
const githubClient = generateAPI('https://api.github.com', { | |
headers: { | |
'User-Agent': 'xyz', | |
'Authorization': `bearer ${token}` | |
} | |
}) |
It can be useful to exclude a file in local repo without using a .gitignore
file, which is a best practice if the file is one you don't expect other users to generate themselves.
Add it to:
.git/info/exclude
You can also add this git alias, by adding it to your .gitconfig file in the [alias] section: