Skip to content

Instantly share code, notes, and snippets.

View mmyoji's full-sized avatar
🙃

mmyoji mmyoji

🙃
View GitHub Profile
@mmyoji
mmyoji / modify-date.ts
Last active August 25, 2023 10:06
[Node.js, Deno] Modify Date function when you can't use Temporal
// see https://deno.land/std/datetime/constants.ts?source
const MILLISECOND = 1;
const SECOND = MILLISECOND * 1e3;
const MINUTE = SECOND * 60;
const HOUR = MINUTE * 60;
const DAY = HOUR * 24;
const WEEK = DAY * 7;
type Unit =
| "milliseconds"
@mmyoji
mmyoji / install-docker-in-wsl2.md
Last active July 25, 2023 11:56
Install Docker directly on WSL2 (Pengwin)

Steps

[Optional] Uninstall Docker Desktop

  1. Start Docker Desktop
  2. Remove all docker resources (e.g., docker container prune)
  3. Stop Docker Desktop
  4. rm -rf ~/.docker

Install Docker in WSL2

@mmyoji
mmyoji / migrate-npm-to-pnpm.md
Last active April 29, 2025 17:00
Migrate npm to pnpm
@mmyoji
mmyoji / nominal-types.ts
Last active June 8, 2023 12:31
Nominal Types in TS
// https://www.typescriptlang.org/play#example/nominal-typing
type ValidatedInputString = string & { __brand: "User Input Post Validation" };
// https://speakerdeck.com/naoya/typescript-niyoru-graphql-batukuendokai-fa-75b3dab7-90a8-4169-a4dc-d1e7410b9dbd?slide=91
declare const __newtype: unique symbol;
export type newtype<Constructor, Type> = Type & {
@mmyoji
mmyoji / make-promise.ts
Created May 30, 2023 11:10
Make a function as async one
// see: https://www.bbss.dev/posts/eventloop/
/**
* @example
* ```ts
* const fn = makePromise(() => {
* return heavyFunc();
* });
* // or you can write:
* // const fn = makePromise(heavyFunc);
@mmyoji
mmyoji / detect-memory-leak-with-jest.md
Last active June 7, 2023 12:29
Detect memory leak w/ Jest
@mmyoji
mmyoji / change-charset-option1.sql
Last active April 28, 2023 23:44
Docker MySQL JP settings
mysql> SELECT * FROM information_schema.SCHEMATA WHERE schema_name = "test";
+--------------+-------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+-------------+----------------------------+------------------------+----------+
| def | test | latin1 | latin1_swedish_ci | NULL |
+--------------+-------------+----------------------------+------------------------+----------+
1 row in set (0.00 sec)
-- https://stackoverflow.com/a/6115705
mysql> ALTER DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@mmyoji
mmyoji / cloudfront-path-based-routing.yaml
Created April 21, 2023 09:28
Path based routing w/ CloudFront to S3/ALB
# https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern
# maybe settings are like the following:
- OriginSettings:
- OriginDomain: MY-EXAMPLE-BUCKET.s3.ap-northeast-1.amazonaws.com
OriginPath: /static
- OriginDomain: example-load-balancer-1234567890.ap-northeast-1.alb.amazonaws.com
OriginPath: *
@mmyoji
mmyoji / avoid-throw-function.ts
Last active April 21, 2023 03:48
Avoid throw function
// Suppose we have following code:
class APIError extends Error {}
function throwAPIError(message: string) {
// complicated logic...
throw new APIError(message);
}
@mmyoji
mmyoji / note.ts
Last active April 21, 2023 03:50
Note: "Domain Modeling Made Functional"
// Chapter 6
type NonEmptyArray<T> = [T, ...T[]];