본문 바로가기
관리자

Programming-[Base]

(49)
[TIL] MIME TYPE .jpg 서버에서 해석문제 문제상황클라이언트가 업로드한 파일을 바이트 어레이로 변경하고 외부 서버를 호출하는 과정에서 에러가 발생했다. @Override public void setFormDataImageFile(MultiValueMap formData, MultipartFile file) { try { byte[] fileBytes = file.getBytes(); String originalFilename = file.getOriginalFilename(); final String fileExtension; if (originalFilename != null && originalFilename.contains(".")) { fileExtension = originalFil..
[TIL] Jacoco report 결과를 github PR에 남기기 이전 글에서 Jacoco Test Report를 통해 Test를 실행하고 프로젝트의 전체 테스트 커버리지를 확인할 수 있는 방법에 대해 기록했었다. https://whitepro.tistory.com/968 [TIL] Test Coverage Report - Jacoco, Codecov, Test Reporter1.  JacocoJacoco를 사용하면 build시 Test Coverage Report를 생성해준다. 코드 라인별로 테스트 코드에서 참조되어 사용되었는지 점검하고, if 분기문 등 모든 케이스에 대해 점검하기 때문에 혹시 빠뜨린whitepro.tistory.com  이번에는 이렇게 로컬에서 생성한 리포트 외에, github action의 agent에서 report를 생성하고 그에 따라 gith..
Strategy 패턴 w/ Spring 다형성 1. Strategy 패턴 사용 배경 및 목적 Strategy 패턴은 코딩을 하다보면 자주 쓰이는 type별 if 분기구문을 정리하고 고도화하고 싶을 때 사용하기 좋다. 아래와 같은 코드를 예로 들 수 있다. 요청으로 들어오는 GrantType의 값에 따라 body 값이 형태가 조금씩 바뀌는 형태이다. 이런 경우 formatted 내부 메서드를 공통화하여 메서드로 만들 수 없으므로 if문으로 분기해놓은 것인데, 코드가 길고 유연성이 떨어진다.String body;String grantType = tokenPayload.getGrantType();if(Objects.equals(grantType, GrantTypeEnum.AUTHORIZATION_CODE.getValue())) { body = """ ..
macOS launchctl: firebase messaging background scheduling 1. 배경앱을 운영하는데, 동적인 메시지를 firebase messaging으로 사용자들에게 scheduling하여 주기적으로 알람을 전송하고 싶었다. intellij에서 실행하는 java 코드라, intellij로 계속 서버를 띄워놔도 되겠지만 intellij를 이용해서 여러 프로젝트 작업들을 하는데 이 서버를 계속 띄워놓으면 방해가 될 것 같았다. 그리고 intellij process가 종료되면 messaging이 중단되는거라, 가용성이 걱정되어 백그라운드로 실행하는 법을 알아보게 되었다.  2. launchctlmacOS에서는 launchctl을 사용하여 plist 파일로 프로그램을 실행할 수 있다. .plist 파일을 ~/Library/LaunchAgents/ 디렉토리 내에 넣어두고 load하면 ..
[TIL] PKCE, OAuth2.1 인증 플로우 https://medium.com/@itsinil/oauth-2-1-pkce-%EB%B0%A9%EC%8B%9D-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-14500950cdbf 요약 인증 방법 중, Authorization Code Grant flow가 있음. 이걸 구현하는 표준은 OAuth2.0이 있으나, 최근 OAuth2.1로 업데이트 되면서 PKCE([픽시]) 라는 개념도 도입함  기존 OAuth2.0 플로우 클라이언트 -> 리소스 서버에 GET 요청 -> 사용자가 ID, PW 입력 -> 서버가 Authorization Code를 클라이언트에 내려줌 클라이언트는 Authorization Code와 함께 ClientID, ClientPassword 등을 서버에 POST 요청..
[작성중][헥사고날 아키텍처] - 1. 기본 개념, 도메인 헥사곤 아키텍처의 중요성보통 서비스가 고도화됨에 따라 누적 기능이 증가하는 속도가 느려진다. 도메인의 로직이 고도화되고 상호 작용이 늘어날수록 기능을 추가하는게 어려워지기 때문이다. 선행 설계에 드는 비용 대비 기능 추가 비용의 조화가 필요한 것이 원칙이지만, 아키텍처도 이런 tradeoff를 줄여주는 중요한 요소이다.  1. 헥사고날 아키텍처의 기본 개념 내부에서부터 도메인 헥사곤, 애플리케이션 헥사곤, 프레임워크 헥사곤으로 구성된다.   필요성 ⭐️내부에서 사용하는 Framework, 외부에서 붙이는 MYSQL 등에 의존하지 않는 프로젝트를 만들기 위함. 보통 많이 사용하는 Layered Architecture(repository- service - controller) 구조만으로는 각 레이어를 인터페이스화..
맥북 OSX 초기화, 응용 프로그램 설치 목록 1. 공통, 로컬chrome- 북마크 처리, brave browser, scroll reverser, iscreen shoter, spectacle, karabiner-elements, runcat, qview, displayLink?, 설정마우스 속도, 키보드 입력 속도, 시작프로그램 또는 제어-손쉬운사용에서 백그라운드 프로그램 추가, 비밀번호 변경, 우상단 위젯 달력, 날씨로 변경, dock 왼쪽 정렬 처리, 로그인 시 시동음 끄기, 경고음 끄기, display-다크 모드 처리, 제어센터 - 블루투스 및 사운드를 메뉴바에 표시하기로 변경, 잠금화면 설정 및 잠금화면 꺼지는 시간 설정, 지문 등록(touchID) 2. 개발docker hub, aws-cli, jetbrains toolbox, homeb..
github ssh 방식, GPG key와 ssh key unverified 문제, .git config에 대한 이해 git 설정 방식 개념 - 계정 여러개에 대해 설정한 경우 구글링해서 계정 여러 개에 대해서 ssh 방식으로 key값을 등록하는 방법들을 찾을 수 있다. 나의 경우 아래처럼 설정했다. 1. ssh로 접속하는 정보는 ~/.ssh 디렉토리 내에 있다. userA는 개인 계정, userB는 회사계정으로 설정했다. key를 만들고 github에 등록하는 방법은 쉽게 찾을 수 있다. 아래 글을 참고해도 좋다. https://usingu.co.kr/frontend/git/%ED%95%9C-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C-github-%EA%B3%84%EC%A0%95-%EC%97%AC%EB%9F%AC%EA%B0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%..