전체 글 29

Spring boot 2.4.5 @AuthenticationPrincipal occurs null

문제 Spring boot 2.4.5로 업그레이드 한 뒤 authentication 값이 null이다. @GetMapping("/api/users/me") public UserResponse getMe(@AuthenticationPrincipal Authentication authentication) { // ... // ... } 해결 PrincipalMethodArgumentResolver를 추가해도 되지만 그냥 @AuthenticationPrincipal annotation을 제거하면 된다. 스프링에서 문서 수정하는걸 깜빡 했나보다. 이슈 링크

개발/Java,Spring 2021.04.30

Vue.js 간단한 플러그인 만들기

Vue.js 플러그인 페이지의 로딩바를 보여주는 플러그인을 만들려고 한다. 요구사항 페이지 로딩 element는 1개만 관리하며 show/remove 한다. 페이지를 떠날때는 (뒤로가기 버튼 등) 로딩 상태를 remove 한다. (이 전 페이지로 갔는데 여전히 로딩중이면 이상하니깐~) element ui에서 제공하는 로딩 element를 이용한다. 결과물 로딩 클래스 /src/plugin/elloading/ElLoading.ts import * as $ from "jquery" export default class ElLoading { private readonly loadingElement: string private readonly elementId: string private readonly loa..

개발/Frontend 2020.11.20

Elasticsearch 기본 쿼리

개요 Elasticsearch cloud Seoul region이 2020년 8월에 출시했다. 현재 14일 무료 plan으로 테스트해보고 있다. 아래 내용은 모두 Elasticsearch 7.8에서 테스트 했다. 인덱스 생성 샤드는 1개, 레플리카는 0개로 설정한다. PUT /$index { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0 } } }인덱스 생성 - mapping 정보 함께 생성 mapping정보를 입력하지 않은 index에는 PUT /$index/$type/$id와 같이 데이터 입력이 가능하다. 하지만 mapping정보까지 입력한 index에 데이터 입력시 에러가 발생할 수 있다. Elasticsearch 6..

개발 2020.08.20

모던 레거시가 되지 않기 위한 노오오력

프로젝트 개발 초기에 여러 고민들이 생긴다. 그리고 결정해야 한다. 작은 문제로 치부하고 넘어가면 나중에 큰 골칫덩이가 되어 돌아오며 반대로 여러 상황을 가정하고 확장성을 고려하여 시간을 투자했다가 오버 엔지니어링과 시간 낭비로 이어질 수 있다. 특히 빠르게 의사결정하고 결과물을 만들어야 하는 회사에서는 오래 검토하고 논의할 시간(또는 동료)조차 없다. 현재 시스템에서 개발/운영하며 아쉬운 부분이 많이 생각날 수 있다. 개발자라면 누구나 "새롭게 만든다면 잘할 수 있을 텐데"라고 생각한 적이 있을 것이다. 그럼에도 정작 새롭게 만든 시스템이 완벽하게 릴리즈 되어 유지되는 케이스는 본 적 없다. 한 번 만든 시스템이 완벽하다면 개발자라는 직업은 사라지지 않았을까? 그럼에도 절대 양보할 수 없는 부분들이 있..

개발 2020.08.05

맥에서 zip 압축해제 오류 (오류 22 - 유효하지 않은 변수, Illegal byte sequence)

맥에서 zip파일 압축 해제시 오류 22 - 유효하지 않은 변수가 발생했다. 터미널에서 unzip으로 해제시 아래와 같은 오류가 발생한다. $ unzip name.zip error: cannot create -�_+�++����.txt Illegal byte sequence error: cannot create -�_+�++����.txt Illegal byte sequence윈도우쪽에서 특이하게 압축된 파일인경우 발생하는 문제 같다. 귀찮아서 정확히 찾아보지는 않았다. 아무튼 아래 명령어로 해결할 수 있다. $ mkdir result # 반드시 압축 해제할 dir을 만들어야 한다. $ ditto -V -x -k --sequesterRsrc --rsrc ./result

개발/Linux,Server 2020.04.01

2019년 회고

개발얘기 별로 없는 개발자의 2019년 회고 ㅎㅎ 프로젝트 영세소상공인 프로젝트 2018년 11월부터 영세 소상공인 프로젝트를 시작했다. 배달의민족 업주분들의 카드 수수료 부담을 덜 수 있도록 하는게 목적이었다. 여러 PG사와 결제 데이터를 주고 받는데 해결해야 할 문제가 많았다. (특히 기획자 분이 고생하셨다.) 연동 날짜가 급하게 잡혀 설날도 셀프 반납하고 밤새며 코딩했다. 중간중간 뇌가 그로기 상태에 빠지기도 하며 머리의 한계를 느낄 수 있었다. 2019년 3월쯤 큰 문제없이 마무리했다. 그 동안 진행했던 프로젝트와 다른 점은 최종적으로 고객(업주)에게 돌아가는 혜택을 개발자로서 조금 더 피부로 느낄 수 있었다는 것이다. 기술만 탐 하는개발자. 개발만 잘 하는 개발자가 되지 말자는 생각을 더더욱 하..

개발/인생후진기어 2020.01.19 (3)

Mac Catalina에서 기본 bash shell이 zsh로 변경 되었습니다.

맥OS를 새롭게 설치하고 기본 세팅을 하던 중 bash-git-prompt, PS1(컬러)등이 제대로 적용되지 않는 문제를 발견했다. 3시간 넘게 삽질한 결과 Catalina부터 default shell이 bash에서 zsh로 바뀐걸 알 수 있었다. Apple 입장에서는 bash 최신버젼 라이센스에 문제가 있어 향후 업데이트에 차질이 생기기 때문에 미연에 방지한것 같다. 아래 명령어를 통해 기본 shell을 bash로 변경하면 경고가 발생한다. $ chsh -s /bin/bash 아래 옵션을 ~/.bash_profile에 추가하여 무시할 수 있다. export BASH_SILENCE_DEPRECATION_WARNING=1 zsh(+잡다한 기능)을 몇 달간 사용해봤지만 익숙해지는데 실패했다. zsh로 다시..

안녕, 우아한형제들

다 떨어졌다. 회사는 점점 기울고 있었다. 처리해야 하는 업무는 개발자고 뭐를 떠나서 한 명의 직원으로서 따져봐도 원하는 일과는 괴리감이 컸다. 기술 스택은 php, python, PostgreSQL이었다. 이직할만한 회사가 많지 않았다. 로켓펀치라는 스타트업 채용 사이트를 중점적으로 검색했지만 java 개발자를 많이 뽑고 있었다. python을 사용할만한 회사는 모두 써봤다. 서버뿐만 아니라 안드로이드 개발도 잘할 자신 있었다. 일단 면접까지 기회만 주면 잘할 수 있을 텐데 코딩 테스트조차 쉽지 않았다. 알고리즘 코딩 테스트 부셔버리고 싶었다. 이곳저곳 포함하면 떨어진 곳은 모두 열 곳이 넘었다. 몇 년 동안 근무하며 피드백을 단 한 번도 받아본 적이 없었다. 지나가는 말로도 들어본적이 없다. 이 좁은..

개발/인생후진기어 2019.12.15 (10)

웹 서비스 출시 전 확인사항

개발자로 일하며 수 차례 서비스를 출시했지만 서비스 오픈은 언제나 설렌다. 정상적으로 작동할까? 장애가 발생하지 않을까? 걱정된다. 내가 그동안 봐온 서비스 장애는 오픈 전 체크 리스트 or 성능 테스트를 통해 해결할 수 있던 것들이었다. 생각나는대로 정리해봤다. 로그 설정 로그 레벨 에러를 INFO레벨로 사용하지는 않았는가 확인한다. 그 반대 경우도 마찬가지다. 불필요한 DEBUG정보가 운영 환경에서 남도록 하지 않았는가 확인한다. 에러 로그 False 알람이 발생하지 않도록한다. 개발자가 정말 알아야 하는 (새벽에 slack으로 에러 알림을 받고 기상해서 바로 패치 후 hotfix로 내보내야 하는) 에러인 경우만 ERROR레벨을 사용한다. 로테이션 로그가 적절히 로테이션+삭제 되는지 확인한다. 이 설..

개발 2019.12.04 (3)