https://go.dev/blog/generic-interfaces
Generic interface를 정의할 때 최소한의 제약만을 정의하고 실제 구현체들이 자신만의 필요한 제약을 추가할 수 있도록 하는 것이 좋다.
pointer receiver를 사용해야 하는 복잡도가 증가하는 상황일 때 한번 더 생각해보자. 반드시 필요한 작업인지.
Do not over-engineer things.
https://go.dev/blog/generic-interfaces
Generic interface를 정의할 때 최소한의 제약만을 정의하고 실제 구현체들이 자신만의 필요한 제약을 추가할 수 있도록 하는 것이 좋다.
pointer receiver를 사용해야 하는 복잡도가 증가하는 상황일 때 한번 더 생각해보자. 반드시 필요한 작업인지.
Do not over-engineer things.
https://www.paradedb.com/blog/lsm_trees_in_postgres
pg_search에 LSM 트리를 사용. 문제는 postgres의 replication 사용시 LSM 트리가 안전하지 않음
primary에서 VACUUM 동작시 에서 사용중인 튜플도 삭제할 가능성이 있음.
standby에서 주기적으로 사용중인 최저 트랜잭션 ID를 primary에게 알려주는 hot_standby_feedback을 사용하여 문제 해결
https://datafusion.apache.org/blog/2025/06/30/cancellation/
tokio의 특성(Cooperative)상 poll이 제어권을 넘겨야 런타임이 다음 과정을 진행할 수 있다.
따라서 poll 안에서 pending이 될 때까지 무한 루프를 도는 경우에 문제가 발생할 수 있다.
이에 대한 해결을 위해 tokio 전체에 대해 budget을 두고 이 값이 0이 되면 무조건 pending을 발생시키는 기능이 tokio에 들어가 있다.
MotionEvent는 다음의 값들을 가진다.
action은 다음의 값을 가진다.
var a = "global"; { fun showA() { print a; } showA(); var a = "block"; showA(); }
결과는 다음과 같다.{ var a; // 1. var b; // 2. }
for 문 같은 경우 while 문으로 쉽게 변경이 가능하다. 따라서, 내부적으로는 for 를 while 로 변환해서 사용할 수 있다. 이러한 것을 syntactic sugar 라고 한다.
| Lox type | Java representation |
nil | null |
| Boolean | Boolean |
| number | Double |
| string | String |
expression → literal | unary | binary | grouping ; literal → NUMBER | STRING | "true" | "false" | "nil" ; grouping → "(" expression ")" ; unary → ( "-" | "!" ) expression ; binary → expression operator expression ; operator → "==" | "!=" | "<" | "<=" | ">" | ">="| "+" | "-" | "*" | "/" ;
https://go.dev/blog/generic-interfaces Generic interface를 정의할 때 최소한의 제약만을 정의하고 실제 구현체들이 자신만의 필요한 제약을 추가할 수 있도록 하는 것이 좋다. pointer receiver를...