깊은바다거북
개발 공부 기록
깊은바다거북
전체 방문자
오늘
어제
  • 분류 전체보기 (219)
    • JAVA (9)
    • JavaScript (15)
    • 스파르타코딩클럽 (11)
      • [내일배움단] 웹개발 종합반 개발일지 (5)
      • [내일배움캠프] 프로젝트와 트러블 슈팅 (6)
    • SQL | NoSQL (4)
    • CS 등등 (0)
    • TIL | WIL (173)
    • 기타 에러 해결 (3)
    • 내 살 길 궁리 (4)

인기 글

최근 글

최근 댓글

태그

  • BFS(너비우선탐색)
  • Linked List
  • Preorder Traversal(전위 순회)
  • 재귀 함수
  • 자료 구조
  • Binary Tree(이진 트리)
  • tree
  • 혼자 공부하는 자바스크립트
  • 점화식(Recurrence Relation)
  • 최소 힙(Min Heap)
  • Leetcode
  • Backtracking(백트래킹)
  • 자바스크립트 기초 문법
  • Trie
  • 최대 힙(Max Heap)
  • POST / GET 요청
  • 시간 복잡도
  • TIT (Today I Troubleshot)
  • 자잘한 에러 해결
  • 01. 미니 프로젝트
  • DFS(깊이우선탐색)
  • Til
  • 프로그래머스
  • 팀 프로젝트
  • TypeScript
  • 코딩테스트 연습문제
  • BST(이진 탐색 트리)
  • 트러블 슈팅 Troubleshooting
  • Inorder Traversal(중위 순회)
  • leetcode-cli
hELLO · Designed By 정상우.
깊은바다거북

개발 공부 기록

TIL | WIL

9/28 (목) leetcode-cli를 해부 중2 TIL

2023. 9. 28. 23:39

공부한 것

  • Typescript의 키워드 declare와 namespace에 대하여 (속시원하진 않음)
  • Javascript에서 Plugin.prototype.init() 과 Plugin.init()의 차이에 대하여 (속시원하진 않음)
  • leetcode-cli 패키지의 코드 중 plain text로 표현될 만한 부분을 전부 떼어서 helper.js의 helper 객체에 떼려부어 놓은 형태가 흥미로웠다. 아니, 사실 약이 잔뜩 올랐다. 이 변수가 어떤 걸 뜻하는지 실마리를 찾아서 이 파일에 도달하면 또 저 파일의 메소드 결과값이라고 하고, 찾아가면 또 다른 파일을 찾아가야 하고, 그렇게 도달한 게 이름만으로는 전혀 연관있어 보이지도 않는 helper.js였다니… 그래도 마침내 끝에 도달했다는 점에서 만족스러웠다.
    알게된 점: 다음부터 다른 패키지를 해석할 때는 config.js, helper.js 이런 파일들을 먼저 살펴보자. 큰 인사이트를 얻을 수 있을 것.

진행 중

  • leetcode-cli 패키지의 구조를 조금 알게 되었다.
    • /lib/commands/user.js 에 lib/core.js 의 core 객체를 임포트 받아서 core.login(), core.logout() 메소드를 호출하는 코드가 있는데, 알 수 없는 부분이 있다.
    • lib/core.js 에는 lib/plugin.js의 Plugin 객체를 임포트하여 core라는 변수로 받고, core.filters, core.getProblem() 하는 식으로 속성과 메소드를 더 추가하여 최종적으로 core를 내보내기(export) 해주고 있다. 문제는, 정작 core.login(), core.logout()이란 메소드는 정의하고 있지 않다는 점이다.
    • lib/plugin.js 에는 Plugin 객체를 정의하고 있는데 마찬가지로 어디에도 .login(), .logout() 메소드는 정의되어 있지 않다. 그렇다면 plugin.js 스크립트 상위에서 임포트하고 있는 6개 파일 중 하나에 정의됐을까? require()로 불러오는 순간 그 스크립트는 전체가 한 번 실행된다고 했으니까.
    • 하지만 6개 스크립트 어디에도 .login()과 .logout() 메소드는 없다. 아예 Plugin 객체 관련 코드가 없다.
    • 검색 결과 엉뚱하게도 lib/plugins/cache.js 를 비롯한 lib/plugins 디렉토리의 4개 파일 모두에서 Plugin.login()이 정의되어 있음을 발견함.
    • (계속)
  • 파일 경로를 어떻게 다루는지, 설정 값과 콘솔 출력 결과는 어떻게 꾸미는지 등을 해석하고 다녀보니 어쩌면 ‘문제 00번에 대한 제출(submission) 결과(runtime과 memory)들을 시각화로 비교하기’를 콘솔 창에 출력하게 만들 수도 있을 것 같다.
    • 만약 콘솔 창에 출력하는 것으로 충분하게 만들 수 있다면 이대로 다듬어서 원본 leetcode-cli에 풀 리퀘스트를 요청하는 걸 단기 목표로 삼아봐도 될 것 같다..!
    • 콘솔 창에 출력하는 결과가 시원치 않고 그래프로 그려야 만족스러울 것 같으면 leetcode-cli 프로젝트에 추가할 기능으로는 마땅치 않을 것 같다. 간단한 기능만 따로 떼어 새 프로젝트를 만들든가 하자.


Uploaded by N2T

    'TIL | WIL' 카테고리의 다른 글
    • 10/10 (화) 콘솔에 선 그래프를 그리다 TIL
    • 9/29 (금) 순회 결과로부터 역으로 트리 구하기 TIL
    • 9/27 (수) leetcode-cli를 해부 중 TIL
    • 9/26 (화) 이진 트리 후위 순회 구현 TIL
    깊은바다거북
    깊은바다거북

    티스토리툴바