Development 86

IntelliJ IDEA) Path Variable 설정으로 VM Argument 저장해두기

Intro 웹 어플리케이션을 개발 하다보면, 외부 API를 사용해야 할 때가 종종 있습니다. 거기에 추가로, 드물기는 하지만 호출을 위한 API KEY가 특정 IP에 종속된 경우가 존재합니다. 그럴 경우에는 개발환경에서도 키를 하나 발급받아서 따로 사용하는게 가장 이상적이기는 하지만.. 그게 현실적으로 어려운 경우가 많습니다. API 키 발급 조건이 까다로울수록 더더욱 그렇습니다. 그럴 경우에 저는 보통 Dynamic Proxy를 활용하는 방향을 택합니다. 그러면 어플리케이션에서 외부 API를 호출 할 때에, 해당 프록시 서버의 ip 주소를 통해 요청되기 때문에 특정 IP Address에 종속되어 있는 API 키라고 해도 사용 할 수 있습니다. 자바 어플리케이션에서 프록시 서버를 통해 연결하는 방법에 대..

Leetcode) 소개 및 풀이 코드 Github에 자동 커밋방법

Intro 개발공부를 시작 한 이후로 오랜 취미중 하나였던 온라인 게임을 그만 두었습니다. 사실 온라인 게임을 오래동안 해 왔던 이유는, 그 자체가 재밌다는 이유도 조금은 있었지만 그보다는 주로 무료한 시간을 달래기 위함이었습니다. 그러면서 게임이라는 가상 공간에서 모르는 사람들과 만나 협력하고 경쟁하여 승리를 따냈을 때의 그 달콤한 성취감에 중독되어서 시간이 남는다. 무료하다. 이 두가지 조건이 만족될때면 어김없이 게임을 하곤 했었습니다. MAY 2020. Queenstown, New Zealand 퇴근후 집에 오면 어김없이 이런 열악한 환경에서도 리그오브레전드 혹은 롤토체스를 즐겨 하곤 했습니다. 그러다 한국에 돌아와 2020년 11월. 개발 공부를 시작 한 이후로 게임을 하는 첫번째 조건이었던 시간..

Chrome) 즐겨찾기 아이콘 변경 하기

Intro 위의 제 Chrome 브라우저에서 보이는 것 처럼, 저는 Bookmark bar에 추가해 둔 사이트가 제법 많아지면서, 즐겨찾기 사이트들의 이름을 지우고 아이콘만 남겨 사용 하고 있습니다. 하지만 favicon이 없는 웹사이트를 즐겨 찾기에 추가 하는 경우에는 아래 보이는 것 처럼, 지구본 모양(?) 아이콘이 남게 되는데요 아이콘만으로 웹사이트를 구분하는 경우에는, 이렇게 아이콘이 겹치는 몇개가 생겨버리면, 어떤 사이트인지 한눈에 알 방법이 없습니다. Bookmark Favicon Changer 이 경우 Chrome 익스텐션을 활용 해서 즐겨찾기에 있는 favicon을 변경 할 수 있습니다. 설치 https://chrome.google.com/webstore/detail/bookmark-fav..

Git) 이전 커밋에 덧붙이기 amend

Intro Commit을 하다 보면 적당한 크기로 커밋하는게 쉽지 않다는 걸 많이 느낍니다. 커밋 하나하나의 크기가 너무 작으면, 후에 커밋을 추적하기가 어렵고 커밋의 크기가 너무 크면 중간에 문제가 생기거나 실수를 했을때 돌아가야 할 지점이 너무나도 멀다는 문제가 있습니다. 커밋 하나에 잡다한 여러가지 연관성 없는 기능에 대한 코드가 함께 있어도 코드리뷰를 하는데 불편함을 초래 합니다. Commit 을 하고 보니 이게 빠졌네 이건 모두가 한번씩 있는 경험이 아니고 거의 몇일에 한번씩 혹은 커밋이 잦은 편인 저의 경우에는 거의 매일 겪는 일 입니다. 특히 간단한 오타 수정이 가장 흔한 상황 인데요. 그렇다고 오타를 수정 했는데 커밋을 안하고 다음 커밋까지 미루기도 곤란하고, 오타 하나만 달랑 수정하는데 ..

Development/Git 2022.01.14

Git) 실수로 삭제한 Branch 복구하기

Intro Pull Request를 기다리다가, merge가 되었다고 착각하고 커밋 했던 브랜치를 삭제해 버렸습니다.. 로컬과 remote 모두에서 삭제 했기 때문에 원래대로라면 데이터를 날려먹은게 맞지만, 다행히도 복구하는 방법이 있습니다. branch 생성 및 삭제 같은 상황을 만들기 위해 branch를 생성 해서 커밋 한 후 삭제 하겠습니다. 이미 branch가 삭제되어 복구가 필요한 분은 아래로 스크롤을 내려 삭제한 branch 복구 를 확인하시면 됩니다. branch 생성 및 commit & push dev 라는 branch를 만들어서, gitbranch.txt 파일을 추가해 commit 및 push 까지 마친 상태입니다. 이 상태에서는 dev에 커밋이 되었지만, 해당 사항이 master에 까지..

Development/Git 2022.01.12

DBeaver) CSV 파일을 데이터베이스로 importing 하기

Intro 엑셀 파일을 데이터베이스로 간편하게 이동하고 싶을 때가 있습니다. 혹은 필요한 데이터들을 csv 파일로 생성 해 두었는데, DB에 한번 에 넣고 싶을 때도, DBeaver를 이용하면 아주 간단하게 데이터를 밀어 넣을 수 있습니다. Excel 파일을 csv 파일로 예를 들어 이런 엑셀 파일이 있을 때에, 간단하게 csv 파일을 생성 할 수 있습니다. 제가 사용중인 Libre Office를 예를 들면 File > Save As... 를 누릅니다. 엑셀에서도 방법은 같습니다. 그럼 어떤 파일로 저장할지 하단에 설정 하는 셀렉트 박스가 있는데요, 거기에서 .csv파일을 선택 해 줍니다. 그러면 아래와 같이 names.csv 파일이 생성 됩니다. CSV 파일 임포팅 CSV DB 생성 Database 목..

일간에러 2022-01-11 remaining connection slots are reserved for non-replication superuser connections

Postgres 에러 증상 remaining connection slots are reserved for non-replication superuser connections 커넥션이 충분히 있는데도 커넥션을 얻지 못함. iRods에서도 커넥션을 얻지 못하니 파일 업로드를 하다가 빈번히 Connection reset이 되어 버림 원인 커넥션이 말라버려서 더이상 제공할 커넥션이 없음. 해결 보통은 커넥션 수를 늘리는 방법으로 해결하는 경우가 많은데 max_connections 를 먼저 확인 해 본다. select * from pg_settings where name='max_connections'; max_connections가 100으로 세팅 되어 있는데, 이 경우에는 운영중인 서버도 아니고..

웹 브라우저 애드온 추천: Momentum

Intro 인프런에서 영한님의 강의를 듣다보면 크롬 브라우저를 켜실 때 마다 좋은 풍경 그림이 보입니다. 시간도 대문짝만하게 나와서 한번씩 지금 시간을 환기 할 수도 있고 해서 괜찮아 보여 이번에 저도 설치 해서 사용 해 보았습니다. Chrome과 Firefox에 각각 설치해 두고 사용을 하고 있는데, 워낙 괜찮다고 느껴져서 혹시 모르는 분들이 계시면 권유해드리고 싶었습니다. Momentum https://momentumdash.com/ 해당 플러그인을 찾아 보니 Momentum 이라는 이름의 Extention 이었습니다. 포스팅을 작성 하며 확인 해 보니 Safari에서도 사용 가능한걸 확인해서, Chrome과 Firefox에 이어서 Safari에도 설치하려고 합니다. 설치 Chrome 아래의 링크에서..

인코딩 깨진 한글 파일 이름 복구하기

Intro 파일들을 주고 받다보면, 사용하고 있는 운영체제와 상관 없이 한글 파일명이 알아볼 수 없게 깨져있는 경우가 종종 있습니다. 특히 인터넷에서 파일을 다운받았을 때 그런 일이 많은데.. 모두 아시는 것 처럼 인코딩 문제 입니다. 파일명이 중요하지 않다면 그냥 한번 열어보고 말면 되지만, 파일명이 중요해서 꼭 알아야 할 때는 굉장히 절망적입니다. 다행인 것은 단방향 암호화처럼 원본 데이터가 손상된게 아닌 단지 인코딩문제로 못 알아보는 것 이기 때문에 다시 디코딩을 해 주면 원래의 파일 명을 알아 낼 수 있습니다. 원인 왠만한 인코딩 문제는 이렇게 못 알아 볼 정도는 아닌데. euc-kr로 인코딩 되어 있는 경우에는 이런 상황이 됩니다. 요즘에는 흔하게 일어나지 않는데, 오래된 소프트웨어를 사용하다 ..

Development/DevOps 2022.01.06

일간에러 2022-01-04 iRODS:-24000

iRods The Integrated Rule-Oriented Data System https://irods.org/ 아마 대부분 처음 들어보셨을 거라 생각해 간단한 설명을 붙여보려 합니다. iRODS는 전세계의 연구, 기업, 정부기관등이 사용하는 오픈소스 데이터 관리 소프트 웨어 입니다. mission critical 한 환경에서의 production 레벨을 목표로 릴리즈 되었으며, 데이터 저장소 리소스를 가상화하기 때문에 사용자가 데이터가저장된 디바이스와 상관 없이 데이터를 다룰 수 있게 해 줍니다. 사실 한국어로 된 레퍼런스는 논문 한두개를 제외하면 전무하기 때문에 영어로 자료를 검색 해야 하는데, 그마저도 잘 정리된 도큐먼트가 없기 때문에 정보를 얻으려면 주로 Github에 올라온 issue들을 ..

일간에러 2021-12-29

'append' called on an object that does not implement interface FormData. 문제 jQuery Ajax와 FormData를 이용해 파일을 비동기로 업로드 하던 중 해당 아래와 같은 에러 발생 'append' called on an object that does not implement interface FormData 코드는 다음과 같다. $('#migration_form').on('submit', function () { var formdata = new FormData(); const file = $('#input_file')[0].files[0]; formdata.append..

Docker) 도커로 Tomcat 컨테이너 실행

Intro log4j 취약점 테스트 진행 중 로컬에서 테스트하기에는 부담이 있어서 도커를 이용해 가상환경에서 하고자 합니다. 간단하게 톰캣만 돌리면 되는데, 우분투 컨테이너를 생성해서 JDK 설치하고 jar파일을 바로 실행 해 돌리다가, 이제 war로된 프로젝트로 테스트를 하려니 외장 톰캣이 또 필요해져서 어차피 이렇게 하나씩 올리면서 할꺼, 그냥 톰캣 컨테이너 만들어진걸 쓰게 되었습니다. 제가 나중에 필요할때 쉽게 찾아 할 수 있게, 또한 혹시나 또 필요한분이 있으시면 도움이 되었으면 하는 마음에 글로 간단하게 정리 해 올려 둡니다. Tomcat 공식 Tomcat 이미지 https://hub.docker.com/_/tomcat 딱히 복잡할 건 없고 docker run tomcat:9.0 이면 간단하게 ..

Development/DevOps 2021.12.23

Vim) 찾아바꾸기 Find And Replace

https://vim.fandom.com/wiki/Search_and_replace 검색 vim에서 검색을 할 때에는 입력 모드가 아닌 일반모드에서 / 키를 입력해 검색 대화 창을 띄우고 검색할 문자를 입력해 엔터키를 입력 하면 해당 문자열을 찾아 커서를 그 위치로 이동합니다. 그 상태에서 다음 검색결과로 넘어가려면 그 상태에서 n키를 누르고, 이전 검색결과는 N(Shift 키를 함께 입력)를 입력해 이동 할 수 있습니다. 찾아 바꾸기 단순 변경 :substitute 커맨드는 text pattern을 찾아 text string으로 치환합니다. 많은 옵션이 있지만 보통은 아래의 내용이 필요합니다. :s/foo/bar/g 현재 라인의 foo를 찾아 bar로 변경 :%s/foo/bar/g 모든 foo를 찾아 ..

일간에러 2021-12-22 파일 다운로드시 한글 파일명 처리

문제 드디어 파일 업로드 모듈을 성공적으로 붙여서 테스트를 마치고 운영 서버에 반영을 해 보았다. 파일이 업로드도 잘되고, 업로드 한 파일을 다운로드도 잘 하고. 문제가 전혀 없는 듯 보였는데.. 하필(?) 샘플 코드로 받았던 jsp파일을 한글 파일명 테스트 겸사 해본다고 한글파일.jsp로 파일명을 바꿔서 업로드를 하니 업로드에는 문제가 없었는데 다운로드 할 때 404 에러가 발생했다. 정말 다 끝났다고 생각 했고, 같은 파일의 업로드가 개발 환경에서는 아무 문제가 없었기 때문에 굉장히 골치가 아파지던 상황. 원인 정말 신기한건 다른 한글 파일명에도 문제가 없었고, 심지어 확장자를 조금 변경해 한글파일.jyp 로 바꿔도 아무 문제 없이 작동했다. 또 어떤 다른 확장자가 들어갔을 때 같은 에러가 터질지 몰..

일간에러 2021-12-21 파일 업로드시 파일명 깨짐

오류 파일 업로드&다운로드 처리를 위한 모듈을 중간에 연결해 파일 업로드를 구현하던 중. 파일명이 영문이나 심지어 일본어로 되어 있어도 정상적으로 업로드 처리가 되었는데, 한글만 있으면 파일명이 깨지는 문제가 발생했다. 단순히 파일명만 깨지는 선에서 끝난다면 파일 명을 어딘가 기록 해 두고 어떻게든 우회하는 방법으로 처리 할 수 있겠지만, 문제는 위에 보이는 것 처럼 _start_offset 과 _end_offset을 기록하며 innorix 모듈이 파일을 쪼개서 전송하는 것 이었다. 파일 업로드가 한 요청으로 끝나는게 아니고 클라이언트 쪽에 설치된 이로릭스 클라이언트를 통해 브라우저 -> innorix(port:4033) -> 서버 과정으로 요청이 여러개로 쪼개져 전달되며 업로드 상태도 계속해서 업데이트..