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

Daily Study

Selenium

난이도 자체는 높지 않지만, 처음부터 시작하는거라 마냥 쉽지만은 않다.

  • web Repo에 코드를 작성중이다.
  • 체감상 진행상황은 40% 정도인 것 같다. 말 그대로 toy project니까 부담갖거나 지나친 스트레스는 받지 않도록 하자.

[13:14] 원하는 선택자에 접근하지 못했던 이유를 찾았다. 내가 찾던 선택자가 frame안에 있었기 때문이다.

  • 아래와 같은 코드를 작성해서 해결했고, 3번째 줄의 코드를 통해 default_content로 돌아와야 정상적인 접근이 가능하다.
      e_frame = driver.find_element(By.XPATH,'원하는 frame의 xpath')
      driver.switch_to.frame(e_frame) ## 찾아낸 frame으로 이동
      driver.switch_to.default_content() ## 이동했던 frame을 벗어나 default content로 이동
    

File I/O를 위해 xlrd, xlwt, openpyxl을 다운받았다.

  • 패키지 및 라이브러리 설치를 두려워하지 않는 사람이 되었다!

[16:16] 과제하다가 한 숨 돌릴 겸 다시 붙잡고 있었는데, 문제를 해결했다!
가장 시간을 오래 잡아먹었던 문제와 그 해결방법은 다음과 같다

  • Version 차이: 어제 포스팅에서 다뤘던대로, 구글링하면 나오는 블로그들의 대부분은 Selenium의 옛날 API를 바탕으로 설명을 진행했다. 그래서 같은 기능을 가진 함수도 다른 구문으로 표현해줘야 했는데, 버전 차이 때문에 문제를 겪는 것은 거의 처음 있는 일이라 생각지도 못한 영역이었다.
  • Frame 선택: 원하는 요소(element)의 절대경로(XPATH)만 입력하면 되는 줄 알았는데, 해당 요소가 기본 frame이 아닌 특정 frame에 들어 있는 경우 driver.switch_to.frame(frame_name)으로 해당 frame으로 이동해야 선택이 가능하다. 마찬가지로 해당 frame으로 이동한 상태라면 그 frame 밖의 요소에 접근할 수 없으므로 driver.switch_to.default_content()로 바깥 frame으로 다시 나와줘야 한다.
  • Python syntax: 파이썬을 제대로 다뤄본 적이 없어서 기본적인 파이썬 구문을 맞추느라 시간이 조금 걸렸다. 앞의 두 문제에 비해서는 그렇게 크게 오래 걸리지는 않았지만, try & except, for in range 등의 기초 구문을 실습할 수 있었다.

한가지 확실한 것은, 여러 유명 개발자들이나 유튜버들의 말대로 직접 무언가를 만들면서 문제를 해결할 때 훨씬 빠르게 배운다는 것이다. 속도도 속도지만, 애초에 누가 시키지 않았는데 찾아서 한다는 점, 그리고 평소에 비해 훨씬 더 몰입하게 된다는 점을 체감할 수 있었다.

성과 평가를 받고나서, 코드도 조금 수정하고 폴더를 정리해야겠다. 다사다난했지만, 개발 외적으로도 느낀 점이 많았던 도전이었다 :)

System Programming PA

  • Synchronization, Server&Client를 제대로 공부할 기회.
  • 12월 8일.. deadline까지 몰고가지 말고 속전속결 해보자!
  • Socket descriptor는 by default 3부터 시작
    • 0,1,2는 각각 STDIN, STDOUT, STDERR로 존재하니까 다른 descriptor 작성하지 않았으면 3부터 시작.

Computer Network PA

  • 다행이라고 해야할까? 네트워크 수업의 마지막 PA도 Server&Client 구현이다.
  • socket, concurrent server 등 추상적인 이해만 남아있는 부분을 구체화하기 좋은 타이밍인 것 같다.
  • Computer Network에 과제하면서 새롭게 공부한 내용을 정리해두었다.