[Daily Post]는 매일매일 탐구한 내용을 간략하게 기록하는 포스트입니다.
따라서 정리되지 않은 내용과 추측을 포함하고 있을 수 있습니다.
더 체계적인 형식을 갖춘 글은 해당 카테고리의 포스트를 확인해주세요 :)

Daily Study

Web (front-end)

window object 이해하기

window.document.getElementBy()에서 window가 무슨 뜻일까?

  • w3school 에서는 window가 브라우저의 창을 의미하는 객체(object)라고 설명하고 있다.
    • 거의 모든 브라우저에서 window를 브라우저의 창으로 지정하고 있다.
    • BOM: Browser Obejct Model
      • modern browsers들은 기본적으로 BOM을 채택하고, BOM은 window를 통해 브라우저의 객체에 접근한다.
      • 따라서 window은 BOM의 property에 해당한다고 할 수 있다
  • JS의 모든 global object는 window object의 원소가 된다
    • global variable, global function도 마찬가지로 window object의 원소가 된다
    • 그만큼 window는 광범위하게 사용되며, element 접근 방식이 헷갈린다면 window부터 접근하고 시작하면 된다

PS

상황정리

  • 오랜만에 파이썬을 하니까 입출력부터 어색하다
    • 그래서 ps 한다는 느낌보다는 파이썬 공부한다는 생각으로 이번주는 부지런히 해야 할 것 같다.

입출력

    1. “너의 평점은”
      • 과목명/학점/평점을 구분하는 데에 시간을 많이 썼는데, map(str,input().split())으로 간단하게 해결할 수 있었다
      • 파이썬을 많이 써보지 않아서 어렵게 느꼈고, 한동안 많이 풀 때는 익숙해졌었지만 요즘 안 푸니까 또 이렇게 헷갈리는 것 같다

Shallow copy vs. Deep copy

  • python documentation

    • a shallow copy constructs a new compound object and then inserts references into it
    • a deep copy constructs a new compound object and then , recursively, inserts copies into it
  • shallow copy를 하게 되면 origin에 대한 reference를 추가하기 때문에 origin을 변경하면 복사된 객체 또한 변경된다
  • deep copy를 하게 되면 복사본을 붙여넣게 되는데, 이 때 recursive 하게 붙여넣는다
    • 따라서 recursive object가 recursive loop를 생성하게 될 수 있다
    • too much memory copy

Error

오늘의 에러 00. jekyll

                    ------------------------------------------------
      Jekyll 4.2.0   Please append `--trace` to the `serve` command
                     for any additional information or backtrace.
                    ------------------------------------------------
/Users/snp/.rbenv/versions/3.0.1/lib/ruby/3.0.0/socket.rb:201:in `bind': Address already in use - bind(2) for 127.0.0.1:4000 (Errno::EADDRINUSE)
  • 상황: github blog에 작성한 포스팅을 미리보기 하기 위해서, github blog directory에서 bundle exec jekyll serve를 입력했다
  • 결과: 위에 보이는 코드처럼, Address가 이미 사용중이라는 에러를 반환했다. 따라 나온 문구까지 확인해보면 127.0.0.1:4000이 이미 사용중이라는 것을 알 수 있다.
  • 해결방안 00: already in use라고는 하지만 내가 켜 둔 터미널 중 그 어느 것도 jekyll을 쓰고 있지 않았다. 그래도 혹시 몰라 vsc를 포함 모든 터미널을 종료했고, 다시 실행했다
    • 결과: 달라지지 않고, bundle exec jekyll serve를 입력했을 때 위와 똑같은 결과를 반환했다
  • 해결방안 01: 시프 시간에 UI에서 보이는 것과 실제 시스템에서 돌아가고 있는 내용은 다르다는 사실을 배운 만큼, 다음과 같이 터미널에 입력했다
    • 01-1: 프로세스 중 jekyll을 돌리고 있는 프로세스가 있는지 확인하기 위해 터미널에 ps -a 입력 –> jekyll을 실행중인 프로세스가 있었다!
    • 01-2: 위에서 확인한 프로세스를 종료하기 위해 kill -9 PID를 입력. 예를 들어 jekyll을 실행중인 프로세스의 pid가 12345였다면, kill -9 12345와 같이 입력. –> "PID"는 영문자가 아닌 사용자의 실행환경에 따라 다르게 나타날 프로세스의 Id를 의미한다
    • 결과: 프로세스가 정상적으로 종료됐고, 다시 bundle exec jekyll serve를 터미널에 입력해 실행한 결과 정상적으로 로컬 페이지가 실행됐다

오늘의 에러 01. toc:true

  • 사실 에러라기보다는 실수다.
  • 1월 이후의 포스트 중에서, md 파일 상단에 toc: true가 누락된 포스트들이 있다.
  • 오프라인에서 접속할 때 다 수정해야겠다. 지금이라도 찾아서 다행인 것 같다!