openjdk

java로 사이드 프로젝트를 진행해보면서 로컬환경과 ec2에 java를 깔면서 openjdk를 제공하는 여러 벤더사꺼 중에 뭘 선택해야하는지 궁금하기도 했고, 차이가 있나 궁금해서 조금 리서치를 해보았다. 그 와중에 https://whichjdk.com/ 라는 사이트를 발견하게 되었고, 간단하게 설명되어 있어 좋았다.

 

Which Version of JDK Should I Use?

Which Version of JDK Should I Use?

whichjdk.com

 

위 사이트에 따르면 tl;dr(Too long, didn't read)라는 요약으로 이클립사 foundation에서 제공하는 Termurin을 쓰는 것이 권장된다고 써있다. 왜냐하면 high-quality, vendor-neutral, TCK-tested under permissive license 이기 때문이라고 설명되어 있다. 찾아보면 생각보다 많은 벤더사들이 제공하고 있는데 자신에게 맞는 것을 고르거나 위에서 말한 termurin을 쓰는 것이 맞는 것 같다. (저자는 aws ec2에 서버를 올리는게 보편적이고, 혹시 미래에 'amazon linux2 같은 곳에 default로 그냥 openjdk가 아닌 corretto가 깔려있을 수도 있지 않나?' 라는 생각에 corretto 11을 쓰고 있다.) 참고로 github actions에서 java를 setup 때 제공되는 openjdk는 아래와 같고, 모든 openjdk를 제공하지는 않는 모습이다.

https://github.com/actions/setup-java

 

라인사의 기술블로그에 openjdk를 적용하는데 있어서 redhat이 배포하는 openjdk를 선택한 이유와 여러가지 좋은 내용을 써놓은 글이 있어서 참고하면 좋을 것 같다. 

 

LINE의 OpenJDK 적용기: 호환성 확인부터 주의 사항까지

2022-LINE-engineering-site

engineering.linecorp.com

 

https://00pen.tistory.com/87

 

Django Rest framework 와 React로 포트폴리오 만들어보기(2)

https://00pen.tistory.com/85 Django Rest framework 와 React로 포트폴리오 만들어보기(1) 노마드코더(nomad coder) 에어비앤비 클론 코딩 후기 2달에 걸친 풀스택 에어비앤비 클론 코딩을 드디어 끝냈내요. 이..

00pen.tistory.com

처음에 계획할 때 8월 15일까지 끝내겠다고 했는데 계획은 반은 지켜지고 반은 안 지켜졌다고 할 수 있을 것 같다. 왜냐하면 오류없이 8월 15일까지 만들기는 만들었다. 근데 테스트를 하면 할 수록 조그만한 오점들이 계속 나오는 것 같다. 그래서 직접 테스트하거나 Django Restframework 에서 제공하는 test 모듈로 TDD를 진행하는 중이다.

 

프로젝트를 끝내면서 느낀 점은 크게 두가지다.

첫 번째는 기획/계획이 굉장히 중요했다는 것. 아이디어이 생각난 후에 이틀 정도 구상한 후 프로젝트를 만들기 시작하였는데 만들면서 Django의 model 부분 즉, Database에 저장될 스키마, 가 여러 번 수정되었다. 그러면서 오류도 많이 생기고 고치는데도 시간이 꽤 소요되었는데 이래서 데이터베이스를 설계하는 사람이 따로 필요한 건지 알게 되었다.

두 번째는 빌드는 빠른데 오류/예외들을 처리하는 것이 더 오래 걸리겠다는 것. 찾아보니 QA 분들이 정석루트를 해피패스라고 부르는 것을 알게 되었는데 나는 해피패스 외에 적은 예외만 처리해 왔다는 것을 알게 되었다. 아주 완벽하게 서비스를 만드려면 대충 다 만들고 Quanlity Assurance에 시간을 많이 투자해야할 것 같다는 생각을 하게 되었다.( 작은 프로젝트에서는 그냥 만들고 일부 사용자들이 사용해보고, 피드백을 받아 고치는 것도 좋다는 것을 알게 됨. )

 

이제 Django를 어느 정도는 다룰 수 있게 되었다고 생각한다. 하지만 공부하면 할 수록 부족하다는 것이 느껴져 Django도 dbshell과 서버에 deploy하는 것을 더 배우고, 네트워크랑 데이터베이스도 계속 공부해봐야겠다. 아무튼 개인 프로젝트를 만들면서 재밌었고, 끝내서 보람찼다.

 

 

Frontend 결과물 예시: https://qhqnf.github.io/asset-dashboard-fe/#

asset dashboard

Frontend github: https://github.com/qhqnf/asset-dashboard-fe

Backend 결과물 api 문서: http://asset-dashboard-dev.ap-northeast-2.elasticbeanstalk.com/swagger/

Backend github: https://github.com/qhqnf/asset-dashboard

주식데이터를 가져오는 방법으로는 증권사 api도 있고, github에 올려져 있는 여러 코드들도 있지만 Django 백앤드에 필요한 상장주식코드(ETF 포함)만 가져오는데 무겁게 하기 싫어 코드를 짜보았습니다. 여러 블로그와 github 코드를 참고하였는데 최근에 정책의 변화인지 기존의 글들을 따라하면 otp가 공백으로 들어오는 현상이 발생하더라구요.

insomnia에서 request를 보내면 되는데 VS code안에서는 공백이 돌아와서 한참 해맴...

https://leesunkyu94.github.io/data%20%EB%A7%8C%EB%93%A4%EA%B8%B0/make_data/#

https://github.com/sharebook-kr/pykrx

그래서 위 두 곳의 정보를 통해 코드를 재구성해 보았습니다. ( 제 생각에 종목코드 외에 과거 데이터, 공매도 데이터 등이 추가로 필요하면 위의 github 코드는 pypi에도 올려져 있으니 그냥 pip install pykrx 한 다음에 모듈을 사용하는 것이 가장 좋을 것 같습니다. )

감사하게도 계속 보수 중이십니다.

 

https://github.com/qhqnf/asset-dashboard/blob/master/stocks/management/commands/crawler.py

결론적으로는 위 블로그에서 기술된 기존 방식에서 헤더에 {"User-Agent": "Mozilla/5.0"} 만 더해주면 돌아가더라구요.  아마 무분별하게 크로울링을 하는 것을 방지하기 위해 웹을 통해 가져가도록 만든 것으로 예상이 됩니다. 그리고 제가 만든 종목코드와 현재가만 가져오는 코드는 위의 제 github에 있고, 제 코드는 전날의 데이터를 가져와서 데이터프레임을 iloc[0:3]을 해서 현재가까지만 column을 가져온 것 뿐입니다.

 

+ Recent posts