This week I Learned 47

주영택·2020년 11월 22일
0

This Week What I Learned

목록 보기
45/50

애플 M1 의 미친 성능

컴퓨터 아키텍처는 잘 모르지만 그동안 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;
    },
  },

뷰 기준으로 본 리액티브 체인인데 값을 복사해서 전달하는 부분에 유의해야 한다.

profile
NodeJS 백엔드 웹 개발자입니다.

0개의 댓글