์์ ํฌ์คํธ์์ ์๊ฐํ ๊ณต์ง์ฌํญ ์์ ๊ธฐ ์ฌ๋ ๋ด ์น์บฃ์ ๋ง๋ค๋ฉฐ ๋ง๋ ์ด์๋ค์ ๊ธฐ๋กํ๋ค.
์ด๋ฒ ๊ฐ๋ฐํ๋ฉด์ Workaround๋ผ๋ ํํ์ ์ ๋
๋ง์ด ๋ง์ฃผ์ณค๋ ๊ฒ ๊ฐ๋ค.
๋น์ฅ ์๋ฒฝํ ํด๊ฒฐ์ด ์ฌ์ค์ ์ด๋ ค์ด ์ด์๋ค์ ๋ง์ฃผํ๋ฉฐ Workaround๋ฅผ ์ฐพ๊ฒ ๋๋ ์๊ฐ์ ์ ๋ง ๋ฐ๊ฐ์ ๋ค๐
.
์ธ์์ด ๊ฐ๋ ฌํ๊ฒ ๋จ๋ ์ด์ ์์๋๋ก ์ ์ด ๋ด๋ ค๊ฐ๋ค.
์ฌ๋ ๋ด์ด ๋ณด๋ธ ๋ฉ์์ง์ ํฌํจ๋์ด ์๋ ๋งํฌ๊ฐ, ios device์์ ์ ๋๋ก ์ ์๋์ง ์๋ ์ด์๊ฐ ๋ฐ์ํ๋ค.
์๋์ ๊ฐ์ด, ๊ณต์ง์ฌํญ์ผ๋ก ์ฐ๊ฒฐ๋๋ ๋ฐ๋ก๊ฐ๊ธฐ ๋งํฌ๋ฅผ ๋งํฌ๋ค์ด ํ์์ผ๋ก ๋ฉ์์ง์ ํฌํจ์์ผ ์ ์กํ๋ค.
์ปดํจํฐ์์๋ ์ด์ ์์ด ์ ์๋์์ผ๋, ์์ดํฐ์์๋ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป ์ ์๋์ง ์์๋ค.
URI ์ธ์ฝ๋ฉ๊ณผ ๊ด๋ จ๋ ์ฌ๋ iOS app์ ์ด์์๋ค.
URI์ ํฌํจ๋ ๋์ด์ฐ๊ธฐ๋ ํน์๊ธฐํธ, ํ๊ธ ๋ฑ์ ๋ฌธ์๋, UTF-8 ์ธ์ฝ๋ฉ์ ๋ฐ๋ผ ๊ฐ character์ ๋ง๋ ๊ธฐํธ๋ก ์ธ์ฝ๋ฉ๋๋ค.
๋ฒจ๋ก๊ทธ ๊ธ ์ฃผ์๋ฅผ ๋ณต์ฌํ ๋ ๋ญ๊ฐ ๋ค์ ์๋ฉ ๋ถ์ด์ ๋์ค๋ ์ด์ ๋, URI์ ํฌํจ๋ ํ๊ธ ํฌ์คํธ ์ ๋ชฉ์ด ์ธ์ฝ๋ฉ๋์ด์ ๊ทธ๋ ๋ค.
์๋ ๋ ๋งํฌ๋ ๋ฌ๋ผ ๋ณด์ด์ง๋ง ๊ฐ์ ์นํ์ด์ง๋ฅผ ๊ฐ๋ฆฌํค๋, ๊ฐ์ URI์ด๋ค.
https://velog.io/@seewon/๊ณต์ง์ฌํญ-์๋ ค์ฃผ๋-๊ณ ์์ด-์น์บฃ-๊ฐ๋ฐ๊ธฐ
์ด๋ ๊ฒ ์ธ์ฝ๋ฉ๊ณผ ๊ด๋ จํด์, ์ฐ๋ฆฌ๊ฐ ํํ ampersand๋ผ๊ณ ๋ถ๋ฅด๋ &
๊ธฐํธ๋, URI ์์์ &
์ ๊ฐ๋ค. ๋ฐ๋ผ์ URI ์์ &
๊ธฐํธ๋ฅผ ์ฃ๋ค &
๋ก ๋ฐ๊ฟ๋ฒ๋ ค๋ ๋ฌธ์ ์์ด ๊ฐ์ ํ์ด์ง๋ก ์ ์๋๋ค.
์๊ฐ๋ํ๊ต ์ปดํจํฐ๊ณตํ๊ณผ ์ฃผ์๊ณต์ง์ ๊ฐ ๊ฒ์๊ธ์ ์ ๊ทผํ๋ URI๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
searchLowItem=ALL
์ดํ์ URI ์ฟผ๋ฆฌ๋ฅผ ์ ์ดํด๋ณด๋ฉด, bbsConfigFK=1905&siteId=cs&pkid=886557
๋ผ๊ณ ๋์ด ์๋ค. DB์์ bbsConfig
๋ผ๋ ์ด๋ฆ์ Foreign key๊ฐ 1905์ธ ํญ๋ชฉ ์ค, siteID
๊ฐ cs์ด๊ณ , Primary key๊ฐ 886557์ธ ํญ๋ชฉ์ ์กฐํํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ด์ฒ๋ผ ํ๊ต ํํ์ด์ง๋ DB์ ์ ์ฅ๋ ํญ๋ชฉ์ URI ์ฟผ๋ฆฌ๋ก ์ง์ ์กฐํํ๋ ๊ตฌ์กฐ์ด๋ค.
URI ์ธ์ฝ๋ฉ ์์์๋ &
์ &
๋ ๊ฐ์ ์๋ฏธ์์ง๋ง, DB(SQL)์์๋ &
๋ง์ด and๋ฅผ ํํํ๋ ์ฐ์ฐ์์ด๊ณ , &
๋ ๊ทธ์ syntax error์ ๋ฐ์์ํค๋ ๊ตฌ๋ฌธ์ด๋ค.
Slack API๋ฅผ ํต๊ณผํ ํ๊ต ๊ณต์ง์ฌํญ ๋งํฌ์ &
๊ฐ ์ฌ๋ iOS ์ฑ์์๋ ์ฃ๋ค &
๋ก ๋ฐ๋์ด ๋ฒ๋ ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
Slack ์ธก์ ์ด์ ๋ฆฌํฌํ ํ์, ์ฃผ๋ณ ์ฌ๋๋คํํ ์กฐ์ธ๋ ๊ตฌํ๊ณ , ๋ค๋ฐฉ๋ฉด์ผ๋ก ๊ณ ๋ฏผํ ๊ฒฐ๊ณผ Short URL์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
๋๋ฉ์ธ์ ํ๋ ๋ฐ์, ๋ด๊ฐ ์๋ก ๋ง๋ ๋๋ฉ์ธ์ ๊ฑฐ์น๋ฉด ํ๊ต ๊ณต์ง์ฌํญ ๋งํฌ๋ก redirect๋๋๋ก ๊ตฌํํ๋ฉด ๋ ๊ฒ ๊ฐ์๋ค. ์๋ก ๋ง๋ ๋๋ฉ์ธ์๋ &
๊ฐ ํฌํจ๋์ง ์๊ฒ ํ๊ณ , ์๋ฒ์์ ๊ณต์ง์ฌํญ์ผ๋ก ์ฐ๊ฒฐ๋๋๋ก ๊ตฌํํ ์๊ฐ์ด์๋ค.
๊ณํ๋ง ์ธ์ ๋๊ณ ์ํ๊ณต๋ถ๋ฅผ ํ๊ณ ์์๋๋ฐ, ์ฌ๋ ์ธก์์ ์ ์ถํ ์ด์์ ๋ํ ํธ๋ฌ๋ธ์ํ
์ ๋๊ฒ ๋ค๋ฉฐ ์ด์์ ๋ํ ํ์ธ ๋ฉ์ผ์ด ์๋ค.
์ฌ์ค short URL ๊ตฌํ์ ์ผ๋์ ๋๊ณ ์์ด ํฌ๊ฒ ๋์ ๋ฐ์ ์๊ฐ์ ์์์ง๋ง, ๋ฒ๊ทธ ๊ฐ์ ์ ์ํด ์ด์ ์ฌํ ๋ฐฉ๋ฒ ๋ฑ์ ํฌํจํด ๋ต์ฅ์ ๋ณด๋๋ค.
์ ๋ฌธ๊ฐ๋ฅผ ๋ฐฐ์ ํด ์ฃผ๊ฒ ๋ค๋ ๋ช ํต์ ๋ฉ์ผ์ด ๋ ์ค๊ฐ๊ณ ,
๋ฉฐ์น ํ ํด๋น ๋ฌธ์ ๋ฅผ ํ์ธํ๋ค๋ ์ฌ์ค๊ณผ ํจ๊ป Workaround ์ฐํ ๋ฐฉ๋ฒ์ ๋ํ ์๋ด๋ฅผ ๋ด์ ๋ฉ์ผ์ด ์๋ค.
API ์์ฒญ์ ๋ณด๋ผ ๋ plain text๊ฐ ์๋, Blocks
์ ๋ด์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด ๋๋ค๋ ๋ต๋ณ์ด์๋ค.
(Blocks
๋ ์ฌ๋ API์์ ๋ฉ์์ง๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฐฉ์ ์ค ํ๋์ด๋ค.)
์ ์ฉํด ๋ณด์๋๋, ๋ฌธ์ ๊ฐ ์ ํด๊ฒฐ๋์ด ์์ง๊น์ง ์ ์ฐ๊ณ ์๋ค.
Slack์ ๊ณต์ Github ๋ ํฌ์งํ ๋ฆฌ๊ฐ ์์๋ค๋ฉด contributor๊ฐ ๋ ์ ์์์ํ ๋ฐ๐ ์๋ค๋ ๊ฒ ๋ด์ฌ ์์ฌ์ ๋ค.
๊ทธ๋๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋ณธ์ฌ ์ธก์ ์ฑ๊ณต์ ์ธ issue reporting์ ํด๋ณด๋ ์๋ก์ด ๊ฒฝํ์ ํ๋ค.
์ด๋์๊ฐ ์ ๋๋ Cron ๋ฐ๋ชฌ์ด ์ฃฝ์๋ค.
๋ฉ์ผ ๋ก๊ทธ๋ฅผ ํ์ธํด ๋ณด๋ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค.
selenium.common.exceptions.WebDriverException: Message: Service {chromedriver ๊ฒฝ๋ก} unexpectedly exited. Status code was: 1
ํฌ๋กฌ ๋๋ผ์ด๋ฒ์ unexpected exit์ด์๋ค.
์ข ๋ ์์ธํ ํ์ธ์ ์ํด์, Cron log๊ฐ ์ฐํ๋ ํ์ผ์ ์ฐพ์๋ค.
/var/log/cron-20221023
์ ๊ฒฝ๋ก์ ์ ์ฅ๋์ด ์๋ ํ์ผ์์ ๊ตฌ์ฒด์ ์ธ ์ค๋ฅ๋ฅผ ์ฐพ์ ์ ์์๋ค.
Cron์ด ์์
์ํ์ ์ํด์ ์ฐธ์กฐํ๋ crond.pid
ํ์ผ์ด ์์ด์ผ ํ๋ ๊ฒฝ๋ก /var/run/crond.pid
์์ ์ฐพ์ ์ ์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์๋ค.
crond.pid
๊ฐ ์กด์ฌํด์ผ ํ๋ ํด๋น ๊ฒฝ๋ก๋ก ๊ฐ์ ํ์ธํด ๋ณด๋, ์๋ ๋ฉ์ฉกํ๊ฒ ์กด์ฌํ๋ /var/run
๋๋ ํ ๋ฆฌ๊ฐ ๋นจ๊ฐ ์์ผ๋ก ๊น๋นก์ด๊ณ ์์๋ค.
๋๋ ํ ๋ฆฌ ์ ํ์ดํ ํ์๋, ๋ฆฌ๋
์ค์ symbolic link
๋ก, ์๋์ฐ์์ ํด๋ ๋ฐ๋ก๊ฐ๊ธฐ์ ๊ฐ์ด ์๋ ๊ฒฝ๋ก๋ก ์ด์ด ์ฃผ๋ ์ญํ ์ ํ๋๋ฐ ์ด ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ์ด๋ค.
๋ฆฌ๋
์ค์์ /run
๋๋ ํ ๋ฆฌ๋ ์๋ /var
๋๋ ํ ๋ฆฌ ํ์์ ์๋ค๊ฐ, /run
๋๋ ํ ๋ฆฌ๋ก ์ ๊ทผํด์ผ ํ ์ผ์ด ๋ง์ depth ๊ฐ์๋ฅผ ์ํด ์ธ์ ๊ฐ๋ถํฐ ํ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ธฐ๊ณ , /var
๋๋ ํ ๋ฆฌ ํ์์๋ symbolic link๋ก ๋จ๊ฒจ๋์๋ค๊ณ ํ๋ค.
Broken Symbolic link๋ฅผ ์ด์ฐํด์ผ ํ๋ ๊ตฌ๊ธ๋ง์ ๋ง์ด ํ๋๋ฐ ๋ช
์พํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํด์.. ๊ทธ๋ฅ /run
๋๋ ํ ๋ฆฌ๋ฅผ /var
๋๋ ํ ๋ฆฌ ์์ผ๋ก ์ฎ๊ฒผ๋ค. ์ ๊ฒ ๊ฐ์ฑ ๊ทธ๋๋ก ์ฌ์ฉํด๋ณด์๋ ์ทจ์ง๋ก..ใ
์ฎ๊ธฐ๊ณ ๋๋ ๋ค์ cron์ด ์ ๋์ํ๋ค.
์ ๊ฐ์๊ธฐ ๋ฉ์ฉกํ๋ symbolic link๊ฐ ๊นจ์ง ๊ฑด์ง๋ ์ฌ์ ํ ์ ๋ชจ๋ฅด๊ฒ ๋ค..
์ด๋ ์๊ฐ ssh ์ ์์ด ์๋๋ค.
AWS console์ ์ ์ํด ์๋ฒ ๋ชจ๋ํฐ๋ง ํ๋ฉด์ ์ผ ๋ณด์๋๋ฐ, CPU ์ฌ์ฉ๋์ด ๊ฑฐ์ 100%๋ฅผ ๋ฌ์ฑํ๊ณ ์์๋ค.
๊ธํ๊ฒ ์ธ์คํด์ค๋ฅผ ์ค์งํ๊ณ , ๋ค์ ๋ ๋ค์ ์์ํ๊ณ ์ ์ํด ๋ก๊ทธ๋ฅผ ํ์ธํ๋๋ ์๋ ์ด์๊ฐ ๊ณ์ ๋ฐ์ํ๊ณ ์์๋ค.
selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist
DevTools Active Port๊ฐ ํ์ํ๊ตฌ๋.. ํ๊ณค ๋ช ๋ฒ์ ๊ตฌ๊ธ๋ง์ ํตํด ํฌ๋กฌ ์น๋๋ผ์ด๋ฒ ์ต์ ์ผ๋ก ๋๋ฒ๊น ํฌํธ๋ฅผ ์ถ๊ฐํด ์ฃผ์๋ค.
chrome_options.add_argument('--remote-debugging-port=9222')
์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๊ณ ์ ๋์ํ๊ธธ๋, ๋ ์ค ์์์ผ๋ ๋ค์ ๋ ์๋ ์๋ ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ ์์๋ค.
selenium.common.exceptions.WebDriverException: Message: disconnected: unable to connect to renderer
Stackoverflow์์, ์ด๋ค ์ฌ๋์ ๋ด๊ฐ ์ ๋ ์ถ๊ฐํ ์ต์ ์ด ์๋ฌ๋ฅผ ๋ฐ์์ํค๊ณ ์์๋ค๊ณ ํ๋ค.
--remote-debugging-port=9222
์ต์
์ด ์์ผ๋ฉด DevToolsActivePort file doesn't exist
์๋ฌ๊ฐ ๋ฐ์ํ๊ณ , ํด๋น ์ต์
์ด ์์ผ๋ฉด unable to connect to renderer
์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ผ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ๋๊ฐ!!!
๋ญ์ง.. ๋ญ๊น.. ํ๋ฉด์ ์กฐ์ฌ์ ์ฐฉ์ํ๋ค.
ํ๋ค๊ฒ ์ฐพ์ ํฌ๋กฌ ์ด์ ๋ฆฌํฌํ ์ ๋ฐ๋ฅด๋ฉด,
On most desktop Linux distributions, the default /dev/shm partition is large enough. However, on many cloud providers using Docker containers (such as the Google App Engine Flexible Environment) or Heroku, the default /dev/shm size is appreciably smaller (64MB and 5MB, respectively). On these platforms it's impossible to change the size of /dev/shm, which makes using Chrome difficult or impossible. This is particularly an issue for those who want to take advantage of its new headless mode.
The /dev/shm partition is too small in certain VM environments, causing Chrome to fail or crash (see http://crbug.com/715363). Use this flag to work-around this issue (a temporary directory will always be used to create anonymous shared memory files).
๋ด ํ๊ฒฝ๊ณผ ๊ฐ์ด AWS EC2์ ๊ฐ์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ /dev/shm
ํํฐ์
์ ํ ๋น๋ ์ฉ๋์ด ๋ถ์กฑํด ํด๋น ์ด์๊ฐ ๋ฐ์ํ๋ค๋ ๋ด์ฉ์ด์๋ค.
์ค์ ๋ก ํด๋น ๊ฒฝ๋ก์ ํ ๋น๋ ํฌ๊ธฐ๋ฅผ ํ์ธํด ๋ดค๋๋, ์์ 0์ด์๋ค.
ํฌ๋กฌ๋๋ผ์ด๋ฒ ์ต์
์ค --disable-dev-shm-usage
์ต์
์ ์ถ๊ฐํด์ ํด๊ฒฐํ๋ค. ํด๋น ์ต์
์ ์ฐธ๊ณ ๋งํฌ ์ ๋ฐ๋ฅด๋ฉด,
The /dev/shm partition is too small in certain VM environments, causing Chrome to fail or crash
๊ฐ์ ๋จธ์ ํ๊ฒฝ์์ ๋์ ๊ฐ์ ์ด์๊ฐ ๋ฐ์ํ ๋ ์ฌ์ฉํ๊ณ ,
Use this flag to work-around this issue (a temporary directory will always be used to create anonymous shared memory files
shared memory files์ ์ํด ์์ ๋๋ ํ ๋ฆฌ์์ ํ์ํ ์์ ์ ์ํํ๋๋ก ํด์ค๋ค.
Work around๋ก ํ์ถ๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ ํฌ๋กฌ ์ธก์ ๋ฌดํํ ๊ฐ์ฌ๋ฅผ ํํ๋ค.
์ด๊ฒ ์์ง๋์ด๋ง์ด์ง
๋์ ๋ EC2 ์ธ์คํด์ค๋ก ssh๋ก ์ ์ํด ๊ฐ๋ฐ์ ์งํํ๋ค.
์ํํ ๊ฐ๋ฐ์ ์ํด VSCode์ remote SSH ํ์ฅ์ ์ด์ฉํด ๊ฐ๋ฐํ๋ค, python lint(pylint์ pyright), python code formatter๊น์ง ์ฌ์ฉํ๋ ค๊ณ ํ์ฅ์ ์ถ๊ฐํ๋๋ฐ, ์ด๋ ์๊ฐ ๋จ์ด ๋ฒํฐ์ง ๋ชปํด ๊ณ์ ์ธ์คํด์ค๊ฐ ๋จนํต์ด ๋์๋ค.
์ฒ์์๋ ์ ์ ๋๋์ง๋ ์ ๋ชฐ๋๋ค.
๋ช ๋ฒ ์ธ์คํด์ค๋ฅผ ์ค์งํ๊ณ ๋ค์ ์์ํ๊ธฐ๋ฅผ ๋ฐ๋ณตํ์๊น..
์ ์ ๋๊ธฐ ์์ํ ์์ ์ด ํ์ฅ์ ๋ช ๊ฐ ์ถ๊ฐํ ์ดํ๋ผ๋ ๊ฒ์ ๊นจ๋ซ๊ณ ํ์ฅ์ ์ง์ฐ๊ณ ๋๋ ๊ทธ์ ์์ผ ๋ค์ ์ ์์ผ๋ก ๋์์๋ค.
Lint ๋ฑ์ ์ํํ ์ฌ์ฉ์ ์ํด ๋ก์ปฌ์์ ๊ฐ๋ฐํ๊ณ ์๋ฒ์ ๋ฐฐํฌํ๋ ๋ฐฉ์๋ ์ฌ์ค ์ฒ์๋ถํฐ ๊ณ ๋ คํ์์ผ๋,
Selenium์ linux์์์ ๋ด ๋ก์ปฌ ํ๊ฒฝ์ธ windows์์ ์น๋๋ผ์ด๋ฒ๋ถํฐ ์์ํด, ๋๋ถ๋ถ์ ๋์ ํ๊ฒฝ์ด ์์ดํ๋ค.
WSL์ ํตํด ๋ก์ปฌ์ Ubuntu
์์ ๊ฐ๋ฐํด๋ณผ๊น ํ์ผ๋, ์ธ์คํด์ค์ OS๋ amazon linux2
์๊ณ , ๊ทธ๊ฐ์ ๊ฒฝํ์ผ๋ก ๋ดค์ ๋ ๋ถ๋ช
๊ฒฝ๋ก๋ ํจํค์ง ๋ฑ ๋ง์ ์ค์ ๊ฐ๋ค์ด ๋ฌ๋ผ Ubuntu
๋ก์ปฌ์์์ ๋์๊ณผ Amazon Linux 2
์๋ฒ์์์ ๋์์ด ๊ฐ๊ธฐ๋ฅผ ๊ธฐ๋ํ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ๋ถ๋ช
ํ๊ฒ ๋๊ปด์ก๋ค.
ํ๋ฆฌ ํฐ์ด EC2 ์ธ์คํด์ค์์ 1๊ธฐ๊ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ RAM ์ฉ๋์ ๋ง์ด ์ก์๋จน๋ Lint ๊ด๋ จ extension๋ค์ ๋นํ์ฑํํ๋ค.
Remote SSH, ์ฝ๋ ํฌ๋งคํฐ ํ์ฅ๋ง ์ฌ์ฉํ๊ณ , ๋ฆฐํธ๋ ์์ง ์ฌ์ฉํ์ง ์๊ณ ์๋ค. Docker
๋ฑ์ ํ์ฉํ๋ฉด ๋ก์ปฌ WSL ํ๊ฒฝ์์๋ ์๋ฒ์์์ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๊ฑฐ์ ๋์ผํ๊ฒ ๊ตฌ์ฑํด ์์ ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ถํ์ ๋ ํ์์ฑ์ ๋๋ผ๋ฉด, ๋์ปค๋ฅผ ํ์ฉํ ๊ฐ๋ฐํ๊ฒฝ๋ ๊ตฌ์ถํด์ผ๊ฒ ๋ค.
VScode์์ remote SSH ํ์ฅ์ ์ด์ฉํ ์๋ฒ๋ก์ ์ ๊ทผ์ด ์คํจํ๋ค.
์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฐ๋ก ์บก์ฒํด ๋์ง ์์์ผ๋, ํฐ๋ฏธ๋์์๋ ์ ์ ์์ด ๋์์ผ๋ VScode๋ฅผ ํตํด ์ ๊ทผํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ ๋ฌดํ ๋ก๋ฉ๋ง ์ผ์ด๋๊ณ , ์ ๊ทผ์ ์คํจํ๋ค.
Shell๋ก zsh
๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, .bashrc
ํ์ผ์์ exec zsh
๋ฅผ ํตํด default shell์ zsh
๋ก ์ค์ ํ ๊ฒ์ด ์์ธ์ด์๋ค.
๋น์ทํ ์ด์๋ฅผ ๊ฒช๋ ์ฌ๋์ ๊ฒฝ์ฐ๋ฅผ ์ฐธ๊ณ ํด ๊ธฐ๋ณธ ์ ์ค์ ์ chsh
๋ฅผ ์ฌ์ฉํด ์ํํ๋ค.
Amazon Linux 2์๋ chsh
๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋์ด ์์ง ์์
sudo yum install util-linux-user -y
์ ํตํด ์ค์นํ๊ณ , chsh -s $(which zsh)
๋ฅผ ์ํํด ๊ธฐ๋ณธ ์์ zsh
๋ก ์ค์ ํด ์ฃผ๋ VScode์์๋ ์ ๊ทผ์ด ๋์๋ค.
ํน ์ธ์ฆ ๋ฌธ์ ๋ก ๊ธฐ๋ณธ ์์ ๋ฐ๊พธ์ง ๋ชปํ๋ ๋ถ์ด ๊ณ์๋ค๋ฉด, ์ด๊ธฐ ๋น๋ฐ๋ฒํธ ์ค์ ์ sudo passwd ์ฌ์ฉ์ ์ด๋ฆ
์ผ๋ก ์ ๋๋ก ์ํํ๋์ง ํ์ธํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๋์ ๊ฒฝ์ฐ์.. ์ฌ์ฉ์ ์ด๋ฆ์ด ec2-user
์ด์์ผ๋ ๊ทธ๋ฅ ๋ฃจํธ ๊ถํ์ ์ค์ ํ๋ฉด ๋๋ ์ค ์๊ณ sudo passwd root
๋ง ๋ฐ๋ณตํ๋ค ์ ๊น์ ์ ๋ง์ ๋ง๋ณด์๋ค.
๊ธ๋ฐฉ ๊นจ๋ฌ์๊ธฐ์ ๋ง์ ์ด๋ค.
BeautifulSoup
์ ํ์ฉํด HTML์ ํ์ฑํ๊ณ , select
ํน์ find
๋ฅผ ํตํด ์ฐพ๊ณ ์ ํ๋ ์ ํ์์ ์ ๊ทผํ๋๋ฐ, ์๊พธ ~~~ has no attribute ###
์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์คํฌ๋ฆฐ์ท์ ์ฐ์ด๋์ง ์์์, ์๋ฌ ๋ฉ์์ง๋ ๊ธฐ์ต์ ์์กดํ๋ ์ ์ํด ๋ฐ๋๋ค.
๋ถ๋ช
๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ด ํ์ธํ์ ๋๋ ๋ด๊ฐ ์ฐพ๊ณ ์ ํ๋ id
๋ฅผ ๊ฐ์ง ์์๊ฐ ์กด์ฌํ๋๋ฐ, BeautifulSoup
๊ฐ ์ฐพ์๋ด์ง๋ฅผ ๋ชปํ๋ ์ด์๊ฐ ์์๋ค.
Iframe์ HTML ์์์ ์ธ๋ผ์ธ์ผ๋ก HTML์ ๋ ๋๋งํ ์ ์๋๋ก ํ๋ ์์์ด๋ค. ์๋์ ๊ฐ์ด, HTML์์ <iframe>
ํ๊ทธ ์ดํ์๋, ์ HTML ํ์ผ์ด ์ฒ์๋ถํฐ ๋ ๋๋ง๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ iframe ํ๊ทธ๋ฅผ ํ์ฉํ๋ ๊ตฌ์กฐ์์, BeautifulSoup
์ผ๋ก HTML ํ์ฑ์ ์ํํ๊ฒ ๋๋ฉด, ์๋์ ๊ฐ์ด <iframe>
ํ๊ทธ ๋ด๋ถ ์์๋ค์ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค.
ifrmae
ํ๊ทธ๋ฅผ ์ ์ดํด๋ณด๋ฉด, ์ด๋ค source
์์ ์ HTML ํ์ผ์ ๊ฐ์ ธ์ฌ์ง src
๊ฐ attribute๋ก ์กด์ฌํ๋๋ฐ, ์ด ๋ถ๋ถ์ ๋๋ฉ์ธ ๋ค์ ์ฐ๊ฒฐํด source HTML ํ์ผ์ด ์กด์ฌํ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์์๋ค.
๊ฐ๋ฐ ์ค ์ค์๋ก ํ
์คํธ์ฉ ํ์ผ์ ํ๋์ฝ๋ฉ๋ Slack ๋ด ์ธ์ฆ ํ ํฐ์ด Github์ ๋
ธ์ถ๋์ด ๋ด์ด ๊ฐ์ ๋ก ๋นํ์ฑํ๋๊ฑฐ๋,
์
๋ ๋์์ ์ฐ๋ฉด์ driver.quit()
๋ฅผ ํด์ฃผ์ง ์์ ํ๋ก์ธ์ค ๋ฐ /tmp
๋๋ ํ ๋ฆฌ๊ฐ ํฌ๋กฌ ์น๋๋ผ์ด๋ฒ ๊ด๋ จ ๋๋ ํ ๋ฆฌ๋ค๋ก ์ ๋ น๋นํ๋ ์ฌ์ํ ์ด์๋ค๋ ๋ง์๋ค.
๋ค์ ์ฑ์ ์ถ๊ฐํ๊ณ , ์ฌ๋ฐ๋ฅด๊ฒ ๋๋ผ์ด๋ฒ๋ฅผ quit์์ผ์ฃผ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ๊ณ , ์ด์์ ๊ฐ๋จํ ์ด์๋ค์ ์๋ตํ๋ค!
์ ๋์ ์ผ๋ก ๋ชจ๋ ๊ฑธ ๋ค ์๊ณ ์๋ ์ฌ๋์ ์๊ณ , ํนํ ์ง๊ธ์ ๋๋ ์๋ ๊ฒ๋ณด๋ค ๋ชจ๋ฅด๋ ๊ฒ ํจ์ฌํจ์ฌ ๋ง๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ง ํ๊ธฐ๋ณด๋ค ๊ฒฝํํด ๋ณด๋ ๊ฒ์ด ์ค์ํ๊ณ ,
์คํ๋ ฅ์ด ์ข์ ๋ด ์ฑํฅ์ ํฐ ๊ฐ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
์๊ฐํ๋ ๊ฒ๊ณผ ํด๋ณด๋ ๊ฒ์ ์ ๋ง ๋ค๋ฅด๊ณ , ๊ทธ ๊ณผ์ ์์์ ์๊ฐ์ง๋ ๋ชปํ ๊ฒ๋ค์ ๋ง์ด ๋ฐฐ์ฐ๊ฒ ๋๋ค. ํนํ ๋งค๋ฒ ์ด์๋ค์ ๋ง์ฃผํ๋ฉด์ ์ ํ๊ต ๊ณต๋ถ๊ฐ ์ค์ํ์ง ๋๋ ์ด ๊นจ๋ซ๊ฒ ๋๋ค๐
๋ด๋
ํ๋ถ 3ํ๋
๋ ์์คํ
ํ๋ก๊ทธ๋๋ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ด์์ฒด์ , ๋คํธ์ํฌ์ ๊ฐ์ ํต์ฌ CS ๊ณผ๋ชฉ๋ค์ ๋ง์ด ๋ค์ ์์ ์ธ๋ฐ, ๋ฒ์จ ๊ธฐ๋๊ฐ ๋๋ค.
2019๋ 1ํ๋ ๋ ์ฒ์ C์ธ์ด๋ฅผ ๋ฐฐ์ธ ๋์๋ ์ ๋ฐฐ์์ผ ํ๋์ง์ ๋ํ ๋ฉ๋์ ํ์ง ๋ชปํ์๋ค.
C์ธ์ด ์ธ๋ฐ์๊ณ ์ด๋ ต๊ธฐ๋ง ํ๋ฐ ์ ์์์ผ ํ ๊น ํ์ด์ฌ ์ฐ๋ฉด ํฌ์ธํฐ ๋ชฐ๋ผ๋ ๋๋๊ฑธ
๋ผ๊ณ ์๊ฐํ๊ณ , ๋ถ๋ง๋ง ๊ฐ๋ํด ์ฌ๋ฏธ๋ ๋๋ผ์ง ๋ชปํ๊ณ ๊ณผ์ ๋ ์ ๋ง ์ต์ง๋ก ํ๋ค.
๊ทผ 1๋ ๊ฐ ์ฌ๋ฏธ๋ฅผ ๋ถ์ฌ ์ด๋ฐ์ ๋ฐ ํ๋ก๊ทธ๋จ๋ค์ ๋ง๋ค์ด ๋ณด๋ฉด์ 1๋ ์ ์ ๋๋ณด๋ค ์ ๋ง ๋ง์ด ์ฑ์ฅํ๋๋ฐ, ์๋ก์ด ๊ฒ๋ค์ ๋ฐฐ์ฐ๋ ๊ณผ์ ์์์ ๋ ๋ถ์กฑํ ์ ์ด ๋ง์ ๊ฒ๋ค์ ๋๋ผ๊ณ , ์์ผ๋ก๋ ๋ฌ๋ ค๋๊ฐ ๊ธธ์ด ๋ง์ด ๋จ์ ๊ฒ ๊ฐ์ ๊ธฐ๋๊ฐ ๋๋ค.
์์ผ๋ก ๋ ์ฑ์ฅํ ๋ด ๋ชจ์ต์ ๊ธฐ๋ํ๋ฉฐ ๊ธ์ ๋ง๋ฌด๋ฆฌํ๋ค๐
์ฌ๋ด) 2022๋
11์ ๊ธฐ์ค ์ง๊ธ์ C์ธ์ด๋ ์ต๊ณ ์ ์ธ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋๊ฐ ์ธ๋ฐ์๋ค๊ณ ํ๋