JAVA에서 비동기 HTTP 요청시 멀티파트 파일 전송 (ContentTooLongException: Content length is unknown)

문제 Multipart 요청을 비동기로 다른 API 서버에 보내려고 하는데 에러가 발생했습니다. 사용자가 업로드 한 파일에 문제가 있는지 (금지 단어 포함 등) 를 확인 하기 위해 어플리케이션 내부에서 해당 파일을 또 다른 어플리케이션(파일 검사API)으로 보내는 로직을 수행하도록 구현을 하고 있었습니다. 사용자에게서 받은 Multipart file을 그대로 다시 API 서버로 전송을 하는데, Single Thread로 수행 했을 때는 문제가 없었습니다. 하지만 Single Thread로 수행 시, 요청한 사용자 입장에서는 파일 업로드에 걸리는 시간이 사용자 -> 어플리케이션서버 -> 검증API서버 이렇게 이렇게 두배로 늘어나게 됩니다. 그래서 어플리케이션 내부에서 검증 서버로의 전송은 비동기 요청으로 ..

Programming/Java 2021.11.05
Rebase 활용해 Commit 합치기

Rebase Rebase는 한 branch에 있는 내용을 다른 branch에 병합하는 두가지 Git 유틸리티 중 하나 입니다. 다른 하나는 이미 모두가 사용하고 있는 git merge 입니다. merge는 항상 이후로 향하는 변경인 반면에, rebase는 git의 history를 다시 작성 하는 강력한 기능을 가지고 있습니다. Rebase는 manual과 interactive 이렇게 두 가지 메인 모드를 가지고 있습니다. 여러가지 역할이 가능 한 rebase 지만 이번 posting에서는 이미 커밋한 몇개의 커밋을 하나로 합치고 새로운 커밋 메시지를 남기는 용도로 사용 해 보겠습니다. 문제 커밋을 했는데 깜빡한게 있는 경우가 생겼습니다. 19 분 전에 커밋을 하자 마자 코드가 너무 지저분 하다는 생각이 ..

Development/Git 2021.11.03
Postman Apple Silicon 지원 소식

Postman Postman은 API 테스팅을 쉽고 빠르고 간편하게 할 수 있도록 도와주는 어플리케이션 입니다. TeliportMe의 CTO로 있던 Abhinav Asthana이 본인의 필요에 의해 Chrome extention을 만들었던 것이 그 시작 입니다. 오랜 기다림 끝에 Postman이 Apple Silicon 에서 native로 동작하게 되었습니다. 이제는 맥북에서 이미 대부분의 어플리케이션이 네이티브로 동작 하다 보니 Postman은 얼마 남지 않은 Rosetta에서 실행되는 앱 중 하나로 남아있었는데요. 그래서인지 실행 할 때 로딩이 오래 걸리는 역 체감이 유독 심하게 느껴졌었습니다. 이제 더이상 답답하게 로딩을 기다리지 않아도 됩니다.! ​ ARM 64 ​ https://www.postm..

IT ⁄ Computer/News 2021.10.30
Programmers Weekly Challenge 12주 후기

12주의 Programmers Weekly Challenge 가 끝났습니다. ​ 취업 하자마자 위클리 챌린지가 시작 된 덕에, 매주 월요일에는 점심 식사를 빠르게 마친 후 프로그래머스에 새로 공개된 문제를 푸는 재미로 한주를 시작했었는데. 문제를 기다리던 즐거움이 사라진다는게 상당히 아쉽습니다. 한편으로는 취업한지 어느 덧 12주가 흘러가서. 12주동안 스스로의 성장에 대해도 되돌아보는 시간도 되었습니다. ​ 갑자기 2,4,6,7 주차 총 4개의 문제가 사라져 버려서 프로그래머스에 문의도 해 보았는데요 내부 사정이라고만 답을 해 주었습니다. 아무래도 라이선스 문제가 있지 않았을까 추측이 되지만 정확한 이유는 모르겠습니다. ​ 그래도 다행인건 문제 풀이를 했던 코드들은 모두 남아 있습니다. 문제까지 남기지..

Development/DevLife 2021.10.30
JAVA) proxy 사용해 연결

이전 글 SSH를 이용한 Proxy, Dynamic Port Forwarding (SOCKS) 을 통해 proxy 서버를 열어 보았습니다. 거기에 이어서, 열어둔 서버로의 프록시 접속을 웹 브라우저 에서 뿐만 아니라 자바 어플리케이션을 통해 접속을 해 보겠습니다. 이미 설정 해 둔 프록시 서버가 있지 않다면 이전 글을 먼저 참고 해 주세요. ​ 크게 두 가지 방법이 있습니다. ​ 1.System.getProperties()를 이용한 설정 ​ 일단 간단하게 UrlConnection을 연결 해서 www.ifconfig.me 주소로 신호를 보내는 프로그램을 작성 해 보았습니다. URL url = new URL("https://www.ifconfig.me"); StringBuffer sb = new String..

Programming/Java 2021.10.29