def Jungle():
return "Hello Developer"
정글 4일차, 정글의 첫 주는 그런 느낌이다.
'너는 5개월간 도전할 준비가 됐니?'
늦은 시간까지 코딩하고 있는 동료들을 보고 있자면
사실 나는 나름대로 나의 열정에 대해 높이 평가했는데,
그렇게까지 열정이 높지 않을지도 모르겠다.
그렇다면 나는 이제 어떤 자세를 가져야할까?
말할 필요도 없다.
더 열심히 해야지
지나온 삶을 돌이켜보면 정글에서 내가 얻고자하는 것은 명확하다.
좀 듬성듬성한 컴퓨터 과학 지식, 사람, 경험, 기회
public string DevleopmentDiary(Knowledge knowledge) {
if (knowledge != null) {
return "level up"
} else {
return "level down"
}
}
C#을 잘쓰는 개발자가 되고 싶다.
그 전에 개발 지식을 하나씩 쌓아가야지
--GET, POST
--JWT Token
서버에서 클라이언트에게 발급하는 토큰이다.
토큰을 발급할 때는 인코딩 과정이 필요하다.
JWT타입 및 해싱함수를 알려주는 header와
사용자의 정보를 담고 있는 payload,
그리고 서버에서 검증하는 용도의 signature
토큰은 세 가지 형태로 클라이언트의 브라우저에 저장될 수 있다.
첫 번째는 로컬 스토리지
두 번째는 세션 스토리지
세 번째는 쿠키
첫 번째와 두 번째는 특정 보안 공격에 취약하여 주로 세 번째 형태로 많이 쓴다고 한다.
--SSR
서버사이드렌더링, 서버에서 템플릿을 준비하여 클라이언트에게 전달하는 것이다.
내가 썼던 python의 flask에서는 jinja2가 이를 담당한다.
서버사이드렌더링은 크롤링하기 좋고
클라이언드사이드렌더링은 크롤링에 어렵다고 한다.
물론 둘 다 서로 또 다른 장단점이 있다.
public string DevelopmentDiary(Challenge challenge) {
if (challenge.Length > 0) {
return "level up"
} else {
return "level down"
}
}
이번 주의 기술적 챌린지 // 트러블 슈팅은 다음과 같다.
(Flask)
각 api에서 token 검증이 이루어져야 하는데, 모든 api에 검증 함수를 다는 것은 유지보수가 어려울 것이라는 생각이 들었다. 따라서 api접근 전에 무조건 실행되게 하는 방법은 없을까- 라고 gpt에게 물어보았다. @app.before_request를 사용하여 모든 api 접근 전에 token을 검증했다. 스프링의 관점 지향 프로그래밍이 생각이 났다.
(python)
파이썬은 웹 스크래핑에 용이한 라이브러리가 많다. request 모듈을 사용하면 정적 웹 페이지에서 데이터를 스크래핑하기는 좋지만 동적 웹 페이지에서는 무리가 있다. 따라서 selenium을 활용하여 크롬을 실행시키고 스크래핑을 하였다. 특히 리다이렉팅이나 주소에 문제가 있는 것들은 재접속을 하고, url을 split하는 과정을 거쳤다.
(EC2)
배포를 위해 EC2를 사용하였는데, Linux 운영체제의 Ubuntu에서 작업이 이루어졌다. 근데 EC2에서 flask를 구동하는데 selenium이 잘 작동하지 않았다. 문득 CUI로만 작업했던 옛날의 개발자가 존경스럽다. 아무튼 Ubuntu서버에 크롬을 깔고 - 당연히 명령어만 사용했다 - Flask의 로그를 확인할 수 있는 tail -f라는 명령어를 활용했다. 근데 python의 print()로는 로그가 뜨지 않았다. 검색 결과 버퍼와 관련있다는 사실을 알았고, logging 함수를 활용하여 info()를 얻었다. 그리고 오류가 발생한 부분을 체크하여 수정했다! Data가 None인 상황을 고려하지 않은 체 함수를 바로 실행시킨 것이 문제였다.