SchBoard 2 개발일지 - IX

Sch·2022년 8월 22일

SchBoard 2

목록 보기
9/16

오늘은 다음과 같은 변경사항을 만들었다.

  1. prompt enhanced
  2. remove needless debugs
  3. abstract button enable
  4. clone mode implementation
  5. clone mode debug: not clocking when clone
  6. remove needless debug console.log
  7. implementation of abstracted component list
  8. switch and pushbutton flatten and structify implementation

오늘의 커밋 내역을 요약하자면 다음과 같다.

  • 프롬프트를 개선했다.
  • 복제 모드를 구현했다.
  • 추상화 컴포넌트 리스트를 구현했다.

프롬프트

원래는 추상화 컴포넌트의 이름을 사용자에게서 입력받을 때에 자바스크립트의 prompt()함수를 사용하여 입력받았다. 하지만 추상화 컴포넌트 목록에 이 컴포넌트를 추가할지 하지 않을지를 물어보는 기능이 있으면 좋겠다고 판단하여, 직접 프롬프트를 구현하기로 했다. 예전에 만들어놓은 notification.js 안의 내용은 사실 처음부터 이것을 위해 디자인된 것이다.

추상화 프롬프트에는 프롬프트의 이름 말고도 프롬프트 미리보기 사진이나 소켓 내용 표시 기능, 입출력 소켓 커스터마이징 기능 등을 추가할 예정이다.

복제 모드

드디어 컴포넌트 복사를 기능으로 추가했다. 저번 시간에 열심히 만들었던 컴포넌트 선형화를 실제로 사용한 것이다.

복제 모드를 구현할 때에 힘들었던 점은, 클럭이 동작하지 않게 된다는 것이었다. NOT 3개를 연결한 컴포넌트 목록을 복제할 때에는 다음 실행 대상 NOT을 componentCalculationQueue에 넣어주어야 하는데, 어떤 컴포넌트를 큐에 올려야 하는지 알아내는 것이 어려웠기 때문이다.

이것은 와이어들에 대해서 출력 소켓과 입력 소켓의 값이 다른 와이어로 하여금 calculation()을 진행하도록 하여 해결했다. 이 해결방법을 알아내는 데에 상당히 많은 시간이 걸렸고, 실제로 구현하는 데에도 많은 시간이 걸렸다. 오늘 한 작업중에 가장 어려운 작업이었다고 판단한다.

추상화 컴포넌트 리스트

추상화 컴포넌트 리스트는 전작에 있었던 기능 중 추상화와 함께 첫번째로 강력한 기능이다. 추상화를 진행할 때에 해당 통합 컴포넌트를 추상화 컴포넌트 리스트에 추가하면 추상화 컴포넌트 리스트에서 언제나 뽑아서 사용할 수 있게 된다. 이것은 복제 모드를 통해서 구현했다.

제언

안타깝게도, 코딩을 진행하면서 사용하는 데이터들이 어떻게 관리되는지 전혀 신경쓰고 있지 않았다. 때문에, 작업을 진행하면서 계속 필요하지 않은 메모리 점유가 진행될 것이다. 지금 알아보니 이러한 현상을 메모리 누수라고 하는 듯하다. 메모리 누수는 꼭 해결되어야 할 문제이다.

다음 시간에는 다음을 업데이트하자.

  • 메모리 누수 확인하고 해결해보기
  • 추상화 컴포넌트 리스트에서 컴포넌트 제거하기
  • 파일로 프로젝트 추출(Export)하기
profile
https://me.shtelo.org/

0개의 댓글