분류 전체보기 381

일간에러 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) 마우스 버튼 커스터마이징

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% 할인은 참을 수 없었습니..

Eclipse) 자바스크립트 에러표시 제거

Intro 자바스크립트 파일의 validation을 이클립스가 제대로 하지 못해서 Error로 인식하며 빨간불이 들어왔습니다. 당연히 코드를 구동하는데는 아무 문제가 없지만, 코드에 빨간불이 들어와있으면 굉장히 거슬립니다. 여러가지 편의성으로 인해 지금은 IntelliJ IDEA를 사용하기 때문에 이클립스를 사용할 때에 겪었던 여러 가지 불편했던 점을 모두 해결 한 상태 이지만, 혹시나 같은 문제로 스트레스 받고 있는 분들을 위해 설정했던 내용을 공유합니다. 해결 일단 아래의 순서로 이동해 설정 화면을 띄웁니다. 프로젝트 우클릭 -> Properties -> Client-side JavaScript > Include Path 위에 있는 Source 탭을 누르고 > Excluded 선택 > Edit... ..

일간에러 2021-12-01 createPopper is not a function

에러 s.createPopper is not a function라는 에러가 나오며 부트스트랩 드랍박스가 의도한 대로 작동하지 않았습니다. 혹시나 싶어 Bootstrap 공식 document의 엘리먼트 구조를 그대로 넣어도 봤지만, 여전히 작동하지 않았습니다. 원인 bootstrap.bundle.min.js 파일이 Popper를 포함하고 있다고 써 있습니다. Popper 라이브러리를 불러오지 않았기 때문에 에러 발생한 것 입니다. 해결 bootstrap.bundle.min.js 파일을 다운받아 추가합니다. 혹은 cdn으로 추가해도 무방합니다. 물론, Bootstrap 버전은 사용중인 버전을 찾아야 합니다. https://getbootstrap.com/docs/5.1/getting-started/downlo..

Ubuntu) 끝판왕 한글 입력기 Tian (nimf)

2022년 1월 14일 수정 Tian 을 개발해주신 호동님이 개발 중단을 선언 하셨습니다. 개발중단된 한글 입력기를 추천 할 수는 없기에 Tian대신 KIME를 추천드립니다. Tian 에 못지 않게 한글 입력기 특유의 문제를 모두 해결 하였으며, 심지어 빠른 속도와 적은 메모리 사용량 등 장점이 많습니다. 아래의 링크를 참고해 설치 해 주세요. Linux) KIME 한글 입력기 Tian 삭제방법 아래의 명령으로 삭제 후 sudo apt purge tian .profile .xinitrc .xinputrc .xprofile .xsessionrc 파일에서 [ -f /usr/local/etc/input.d/tian.conf ] && . /usr/local/etc/input.d/tian.conf 내용을 삭제 해..

IT Computer/Linux 2021.12.02 (3)

Postgres) 계층형 쿼리작성 및 csv로 결과 저장하기

도커 컨테이너에 있는 Postgresql 데이터베이스에 접근해서 psql로 계층형 쿼리 조회하고 그 결과를 csv 파일로 저장해서 로컬로 가져오기 계층형 쿼리 상품 p 가 있고, 아이디는 product_id, 상위 product는 parent_product_id 라고 할 때, 아래와 같이 계층형 쿼리를 작성 할 수 있습니다. with recursive search_product(product_id) as ( select p.* from product p where product_id =21306 union all select p.* from product p, search_product sp where k.parent_product_id = sp.product_id ) select * from searc..

Data/PostgreSQL 2021.12.02

Puppeteer 활용 브라우저 테스트 자동화

https://developers.google.com/web/tools/puppeteer 소개 Headless 브라우저에 대한 이해가 필요 합니다. 해당 내용은 https://shanepark.tistory.com/290 에서 확인 하실 수 있습니다. Puppeteer Puppeteer는 Chrome 팀이 개발한 Node 라이브러리 입니다. Headless 혹은 온전한 크롬도 컨트롤 할 수 있는 고차원 API를 제공 하며, Panthom이나 NightmareJS 등 이전의 자동화 테스트 라이브러리들과 비슷하게 작동합니다. 특징 Broswer에서 여러분이 수동으로 하는 대부분의 일들을 Puppeteer를 통해 할 수 있습니다. 몇가지 사용 예제 페이지의 스크린샷 혹은 PDF 파일 생성 싱글 페이지 어플리케..

Development/DevOps 2021.11.30

Headless Chrome 브라우저 테스트

https://developers.google.com/web/updates/2017/04/headless-chrome Intro Headless Chrome은 Chrome 59 버전에서 추가되었습니다. Headless Chrome이 추가되기 이전에는 보통 PhantomJS 를 이용해서 Headless 웹 테스팅을 했다고 하는데요, Chrome이 Headless Chrome 기능을 업데이트 하자, PhantomJS는 개발 중단을 선언 했습니다. 아무래도 크롬이 직접 제공하다 보니 서드파티 소프트웨어를 사용할 필요가 줄어들 수 밖에 없습니다. @Before Chrome alias 설정 Chrome 명령어를 쉽게 사용하기 위해 alias를 선언 해 줍니다. 저는 MacOS나 Linux에서 모두 zsh를 사용하..

Development/DevOps 2021.11.30