컴퓨터 아키텍처는 잘 모르지만 그동안 x86 이 하위 호환성을 보장한다는 이유로 너무 안일한 개선이 이루어졌던게 아닌가 싶다.
하버드 아키텍쳐 이후로 도입된 투기적 실행 흐름 개선은 보안 문제로 구설수에 오르고 그 위를 감싸는 구조들에 대한 논의는 없었던게 아쉽다. 물론 애플처럼 수직 계열 통합을 이룰수 있는 여건이 다른 벤더에게는 없었던게 사실이었지만 연구와 시도라도 있었어야 하는게 아니었을까.
옵테론 말고 더 멀리 봤어야 했던건가...
지금 애플의 M1 에 대한 벤치마크들은 미쳤다고 밖에 할 수 없다.
Vue 기준으로 부모/자식 컴포넌트간 데이터 흐름을 정리하는 과정에서
상위 컴포넌트로 이벤트를 발생시키고 그 값을 사용하는 패턴을 쓰다보면
부모 ← watch/props → 자식
구조에서 리액티브 체인이 무한 루프에 빠지게 되는 실수를 하게 된다.
CHILD COMPONENT
watch: {
//value() {
// this.extras = object.assign(this.extras, this.value);
//},
// XXX: 새 값을 세팅하는 구문에 흔히 하는 실수
value(newValue) {
this.extras = Object.assign(this.extras, newValue);
},
extras: {
deep: true,
handler(newValue) {
this.$emit('inputExtras', newValue);
},
},
},
PARENT COMPONENT
computed: {
extrasCopiedValue() {
// XXX: 반드시 clone 해야 store mutation 예외를 피할 수 있음
return clone(this.form.extras || {});
},
},
methods: {
onInputExtras(newValue) {
this.form.extras = newValue;
},
},
뷰 기준으로 본 리액티브 체인인데 값을 복사해서 전달하는 부분에 유의해야 한다.