2021/12 19

일간에러 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..

log4 보안 취약점 CVE-2021-44228 공격 원리와 시연 및 대응 방안

Intro 최근 갑자기 사내 연말 행사에서 15분간의 짧은 발표를 맡게 되었습니다. 좀 더 미리 알았더라면 준비를 충분히 했을 텐데.. 갑자기 공지가 되어 굉장히 당황스러웠지만 어쨌든 아쉬운대로 부랴부랴 준비를 시작했습니다. 회사의 사업 내용이 IT계열이다 보니, 개발에 관련되었지만 동시에 사내에서 개발직종에 속하지 않은 분들에게도 흥미를 끌 만한 주제를 여러가지 후보군에 두고 메모앱에 기록해가며 며칠간 후보를 좁히고 있었습니다. 평소 블로그를 작성하다 보니 여유만 되면 의견을 나누고 싶은 주제가 몇가지 있었습니다. 그러던 중 출근길 버스에서 평소처럼 책을 읽다가, 보안에 관련된 항목이 나오자 한창 떠들썩하게 만들고 있는 log4 보안 이슈에 대해 고민하게 되었습니다. 그러다 문득 발표 주제로 참 괜찮겠..

IT Computer/News 2021.12.25

Eclipse Apple Sillicon 지원소식

Intro 길고 긴 기다림 끝에 Eclipse가 애플 실리콘을 지원 하기 시작했습니다. 사실 저는 그 길고 긴 기다림에 지쳐 4개월 전에 IntelliJ IDEA로 넘어갔습니다. 비용의 부담이 전혀 없었던 건 아니지만, 2021년 8월에 한국어 언어팩 출시 기념 30% 할인을 해 준 덕에 용기내어 넘어 갈 수 있었습니다. 인텔리제이를 본격적으로 사용하기 시작 한 이후로는 이클립스의 필요성을 전혀 느끼지 않아 한참동안 사용 할 일이 없었는데요.. 그래도 한 때 m1 맥북의 초창기 사용자로서, 이클립스를 사용하며 정말 크나큰 불편을 느꼈었기 때문에 애플 실리콘 출시와 함께 그 불편함들이 얼마나 해소되었는지 궁금함에 확인을 해보지 않을 수 없었습니다. 설치 https://www.eclipse.org/downl..

IT Computer/News 2021.12.24

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) -> 서버 과정으로 요청이 여러개로 쪼개져 전달되며 업로드 상태도 계속해서 업데이트..

LDAP으로 스프링 시큐리티 인증하기

https://spring.io/guides/gs/authenticating-ldap/ 시작하기전에 우리는 이걸 할꺼에요. Spring Security의 임베디드 자바기반의 LDAP 서버에 의해 보안되는 간단한 웹 어플리케이션 몇몇 유저 셋을 포함한 데이터 파일과 LDAP 서버 로드 무엇이 필요해요? 15분의 시간 좋아하는 IDE 메모장도 상관 없어요! 하지만 STS나 IntelliJ IDEA가 있으면 더 쉽게 할 수 있어요. JDK 1.8 이상 Gradle 4 이상 혹은 Maven 3.2 이상 어떻게 따라해요? 대부분의 다른 Spring 가이드 문서들 처럼 완전 기초부터 하나씩 기본적인 단계를 따라하며 할거에요. 대부분 이미 익숙한 개념들이니 걱정 할 필요 없어요. 크게 두가지 방법이 있는데요. 어느 ..

일간에러 2021-12-20 Corrupt form data: premature ending

오류 innorix 파일 업로드 모듈을 진행중인 프로젝트에 붙이는 과정에 컨트롤러에서 다음과 같은 에러가 발생했다. Corrupt form data: premature ending 샘플 코드를 WAS에 단독으로 올려서 테스트 해봤을 때에는 문제없이 작동 되는걸 확인 했는데, 스프링 부트 프로젝트에서 모듈을 붙이려니 자꾸 에러가 발생했다. 심지어는 샘플 코드를 그대로 붙여 넣어 테스트 해보아도 같은 에러가 발생했다. 번역을 그대로 해 보면, 데이터가 손상되었고 조기에 종료 되었다는 내용이다. 원인 에러가 나는 코드를 타고 들어가보니, MultipartRequest를 모듈 내부에서 readNextPart() 돌리며 스스로 처리 하고 있었다. 스프링에서 익숙 하게 사용 하는 List files 방식을 사용는게..

Ubuntu) 마우스 버튼 커스터마이징

Ubuntu) 마우스 버튼 커스터마이징 https://www.logitech.com/en-us/products/mice/mx-master-3.html Intro MX-master와 같이 몇몇 버튼이 많은 마우스를 사용 한다면 버튼별로 기능을 커스터마이징 해서 사용하게 되는데요, 보통 윈도우나 맥용으로는 제조사에서 유틸성 프로그램을 제공해 주는 편이지만 소수의 사용자까지 배려해주지는 못하다보니 리눅스용으로는 없는게 현실입니다. 그래서 직접 버튼들을 하나하나 맵핑해서 사용해 줘야 하는데요, 저는 단순한 마우스이지만 맥북에서 마우스 가운데 버튼을 미션컨트롤용으로 사용하다 보니 우분투에서도 같은 용도로 사용하고 싶어서 설정하게 되었습니다. 설치 xbindkeys 와 xdotool 등이 필요합니다. 아래의 명령어..

IT Computer/Linux 2021.12.20

Ubuntu Server) 우분투 서버 와이파이 설정

intro 집 와이파이 비밀번호를 변경한지가 오래 되어서 비밀번호를 오랜만에 변경 해 주었습니다. 그런데 집에서 운영중인 우분투 서버 랩탑 컴퓨터가 와이파이로 연결이 되어 있다보니, 바로 연결이 끊어지고 말았습니다. 집에있는 다른 모바일 디바이스들은 모두 GUI 환경이라 그냥 와이파이 선택 하고 바뀐 비밀번호를 입력 하면 됐는데.. 우분투 서버는 생각보다 까다로웠습니다. 와이파이 설정을 했던 내용을 기록 해 보았는데, 한국어로된 한명의 포스팅에서 다들 퍼온듯 한 획일적인 방법이 있었는데 그 블로그들에서 설명한 /etc/network/interfaces 를 변경하는 방법으로는 해결이 되지 않았었고 https://websetnet.net 사이트의 How to Connect to WiFi from the Te..

IT Computer/Linux 2021.12.18

문제풀이: 가장 긴 팬린드롬(palindrome)

Intro 프로그래머스 3단계에 해당하는 가장 긴 팬린드롬 문제를 풀어보았습니다. 팰린드롬은 앞으로 읽어도, 반대로 읽어도 똑같은 단어를 말하는데요, 기러기, 스위스등이 있습니다. 2020년에 개봉한 크리스토퍼 놀란 감독의 영화 TENET에서도 영화 전반에 걸쳐 palindrome의 의미가 녹아들었으며, 그 제목 자체도 팬린드롬 이였습니다. 문제가 워낙에 간단하기 때문에 금방 풀 거라고 생각 했는데, 몇가지 간과했던 점들이 있기 때문에 총 4번의 시도 끝에 풀이 하였습니다. 특별한 알고리즘이 필요한 문제는 아니지만 효율성 체크가 기다리고 있는 문제이기 때문에 제법 고민이 필요합니다. 문제 문제의 조건 자체는 굉장히 간단합니다. leetcode.com 에서는 공개된 2107개의 테스트 중 무려 5번째에 위..

HTML) details 와 summary 태그활용해 접기와 펼치기 간단 구현

Intro 요즘에는 페이지에 표시할 내용이 너무 많을 때에는 중요한 정보를 한 페이지에 들어오도록 하면서, 간단한 클릭 한번으로 숨겨져 있는 정보들도 확인할 수 있도록 하기 위해 접기/펼치기를 많이 사용 하고 있습니다. www.naver.com 거의 매일 접속하는 naver 페이지만 보더라도 메인에 접기/펼치기 버튼 두개가 바로 보입니다. 검색 히스토리 서비스 전체보기 물론 네이버에서 details 태그를 사용해서 접기와 펼치기를 구현한 것은 아닙니다. 시간적 여유가 있으며 접고 펼칠때에 상황에 맞는 여러가지 이벤트들을 넣고, 맘에 드는 css 를 적용하는 등 예전처럼 접고 펼치기를 구현 해 내려면 자바스크립트 코드를 작성하는 방법 밖에 없었습니다. 네이버의 접기 펼치기 코드를 보니 a 태그에 href=..

MacOS) 마우스 가속 기능 끄기

Intro 맥북에서는 트랙패드면 사용하기에 충분하지만 트랙패드만 쓰다 보면 정교하고 빠른 작업등에서 약점이 있습니다. 특히 회사에서는 리눅스 컴퓨터를 사용하다가 집에서는 맥북을 사용하다 보니, 가끔씩은 트랙패드가 답답하기도 합니다. 심지어 맥북으로는 딱히 게임할 일이 없긴 하지만, 게임이라도 하려고 하면 마우스는 필수로 필요합니다. 윈도우나 리눅스 컴퓨터를 사용하다가 맥북을 사용하거나, 혹은 맥북을 쓰다가 윈도우 컴퓨터를 잠깐 쓰면 마우스 감도가 크게 다르기 때문에 굉장히 어색합니다. Mac 에서는 트랙패드나 마우스 가속을 사용하기 때문인데, 트랙패드에서는 참 좋은 기능인데 마우스에서는 정말 어색합니다. 물론 맥북만 사용한다면 상관 없지만, 번갈아가며 사용하는 입장에서는 아무리 지나도 익숙해지지가 않더라..

IT Computer/Mac 2021.12.06

intelliJ IDEA module에서 템플릿 못찾는 문제 해결

Intro IntelliJ IDEA 구매 intelliJ IDEA를 8월 말에 구입 한 이후로, 3개월동안 집에서 혼자 공부하거나 코딩 테스트 문제들을 풀어볼 때에는 맥북에서 꾸준히 인텔리제이를 사용 해 왔습니다. 업무용으로 사용중인 우분투 기반의 Dell XPS 노트북에서도 물론 intelliJ IDEA를 설치 했고, 가벼운 확인 용도의 코드를 작성 하거나 점심시간에 가볍게 코딩 테스트 문제를 푸는 용도로 사용 해 왔습니다만 실질적으로 회사에서 진행중인 프로젝트에서는 이클립스를 계속 사용 했습니다. 구매 후에도 Eclipse를 계속 사용해온 이유 회사에 입사하고 한달도 안되어서 intelliJ IDEA를 구입 했지만 예전부터 구독을 고민 하고 있었지만, 2021년 8월의 30% 할인은 참을 수 없었습니..