TIL - 2022

[TIL 001] 20220225

바랄 희 2022. 2. 25. 22:11

오늘부터 꾸준히 TIL을 써보기로 했다!

내가 정한 규칙은 여행과 같은 노트북과 이별할 수밖에 없는 일이 있지 않는 한, 적어도 주 5일은 (주말과 공휴일 등은 유동적으로) TIL을 작성하는 것이다. 최근 내가 공부하고 있는 것들은 크롤링, sqld 자격증 시험, 알고리즘, 자잘한 프로젝트들의 지속이다. 

이후에는 책도 꾸준히 읽어볼 생각이다 아자아자! ٩(๑•̀o•́๑)و ٩(๑•̀o•́๑)و

 

* 공부를 하면서 노션에 메모를 하고, 공부를 마친 후에 이를 정리해서 내것으로 만든 뒤 서술해볼 생각이다.

이 방법이 아직 효율적인지는 확신이 서지 않아서 추후에 여러 방면으로 해봐야겠다. 

 


01 | 크롤링

크롤링은 이전에도 몇번 해본 적이 있는데 거의 '야매'..로 하다시피 해서 제대로 배워보고자 강의를 수강하기 시작했다.

 

pip install selenium이 먹히지 않았는데 이는 pip3 install selenium으로 고치니 해결되었다.

이 둘의 차이점은 python2 와 python3의 패키지 매니저라는 것이다. 

 

selenium웹 브라우저에서 수행된 테스트를 자동화하는 데에 사용되는 도구이고 웹 드라이버웹을 자동적으로 테스트하는 UI 테스트 툴이다. (크롬 웹 드라이버를 사용했다)

 

chromedriver = '/Users/jinseunghee/Documents/chromedriver'
driver = webdriver.Chrome(chromedriver)

 

이는 크롬 브라우저를 핸들링하는 객체를 생성하는 방법이다.

 

assert "New" in driver.title

 

이는 driver.title 에 new 라는 글자가 없으면 에러를 반환한다. 에러 메시지는 아래와 같다. > 이는 가정 설정문이라고 한다. 

 

assert "new" in driver.title
AssertionError

 

이를 통해 크롤링을 할 때 어떤 부분이 잘못 되었는지를 용이하게 파악할 수 있다.

 

elem = find_element_by_tag_name(”h1”)
print(elem.text)

 

요소를 태그 이름을 통해 찾을 수 있는 함수이다. 이는 다양하게 사용될 수 있다. ex) find_element_by_name() 과 같이..

실제 데이터는 elem.text에 들어 있다.

 

· 검색 자동화

elem = driver.find_element_by_tag_name("search")
elem.clear()
elem.send_keys("hello")
elem.send_keys(Keys.RETURN)

 

우선 search 라는 태그를 달고 있는 input text를 찾고 해당 텍스트에 원래 어떤 내용이 있었는지 알 수 없으니 이를 모두 지운다. 그 이후 검색하고자 하는 내용을 담아 send_keys 를 하고, 검색 버튼을 클릭, 즉 엔터를 누르기 위하여 Keys.RETURN을 한다. (이는 상단에서 import 해주었다.)

 

· 스크롤을 내려야 할 때

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

 

execute_script 를 하면 자바스크립트 문법을 사용할 수 있다.

이는 0 즉 처음부터 도큐멘트의 scroll 높이까지 내려가라는 것이다. 즉 맨 위부터 끝까지 탐색하는 것이다. 

 


02 | SQLD

 

3월 12일에 있을 시험을 위해서 얼마 전부터 공부를 시작했는데, <누구나 쉽게 SQL> 의 6장 SQL 함수를 공부했다.

흥미로웠던 것은 형변환이 단순 숫자형에서 문자형이 아닌 날짜형이 있고, 이에 대한 포맷을 다양하게 설정할 수 있다는 것이었다.

 


03 | 긱뉴스

 

TIL 적는 습관을 들여야지 하며 생각했던게 뉴스레터와 개발 서적 읽기여서 가장 유명한 긱뉴스를 읽어보았다.

오늘 읽어본 기사는 https://stackoverflow.blog/2022/02/21/why-flutter-is-the-most-popular-cross-platform-mobile-sdk/ 

 

Why Flutter is the most popular cross-platform mobile SDK

Running a development team for each mobile platform sucks up resources from other work. Flutter is the most popular way for one development team to build on all platforms.

stackoverflow.blog

플러터에 관한 것이었다. 사실 플러터에 대해서는 하나도 모른다 (ㅎㅎ) 그런데 긱뉴스에 있는 토픽 대부분이 내가 무지한 것들이라 그나마 이름이라도 들어본 플러터의 기사를 읽어보았다.

 

이를 통해 구글에 '다트'라는 언어가 존재한다는 것을 처음 알게 되었다.

 

- 플러터는 Android, iOS에 구애받지 않고 개발할 수 있도록 돕는다. 

- 핫 리로드 (hot reload) : 변경 사항을 즉각적으로 확인할 수 있어 피드백이 원활히 이루어짐. 빌드에 최적

- '다트'가 다른 객체지향언어와 유사하여 효율적임

- Flutter는 다른 크로스 플랫폼 어플리케이션들과는 다르게 네이티브 코드로 바로 컴파일이 된다. 이로 인해 성능이 저하되지 않는다.