본문 바로가기
관리자

Programming-[Base]

(53)
[TIL] git, github 변경 코드 줄 수 확인 명령어. file changed, insertions, deletions 배경github에 PR을 올리기 전에 변경량을 확인해야할 필요가 있었다. 너무 많은 코드 변경사항이 commit 되면 리뷰어가 부담스러울 수 있기 때문이다. 방법$ git diff --shortstat   참고로 stat을 입력하면 파일마다 얼마나 변했는지 알려준다.$ git diff --stat
인코딩 하는 이유, Base64 Base32 차이: 대소문자 인코딩/디코딩하는 이유이메일, URL, JSON, XML과 같은 텍스트기반 프로토콜에서 이진 데이터(이미지, 파일, 암호화 키 등)을 그대로 사용하면 문제가 될 수 있기 때문에 사용 Base64 특징Base64가 Base32 대비 길이가 짧아서 공간 절약이 됨.Base64는 숫자, 영문자 외에 +, / 기호도 사용하는데 URL 인코딩 등에서 사용 못할 수 있으므로 URL-safe Base64도 있음. +를 -로, /를 _로 변환함  Bas32 특징대소문자 구분을 하지 않으므로 소문자로 변환 가능!예시 => email을 암호화, 인코딩 처리 후 DB에 삽입하고, 이를 디코딩하여 복호화해야되는 상황. 로직상 소문자만 사용이 가능하다면 Base64에서 Base32 방식으로 변경하고 toLowerCase() 처..
github PR re-request review 알림이 slack에 오게 하기 1. 배경github PR 시에 re-request reivew 요청을 했을 때, 이메일로는 알림이 오는데 slack 등으로 알림(webhook)이 안와서 불편했다. 임시방편으로 각 기안자가 리뷰어들을 슬랙에서 태깅해서 호출하고 있었는데, 자동화되지 않은 부분이라 불편함이 있을 것 같아서 직접 시도해보았다.  조직의 workspace가 설정되어있다는 전제 하에 아래 내용들을 기록해둔다. 기본적으로 slack에 github app을 설치하고, /github ... 명령어를 통해 알림을 추가할 수 있으나, PR 상태별로 세분화하거나, 브랜치별로 나눠서 적용하는 방법 등이 없기 때문에 아래 방법으로 나누어 커스터마이징 했다.  2. Slack 설정다음 slack api 페이지에 들어가서 Your apps를 클..
postman 로그인 Token을 요청마다 실어주는 방법 1. Environment에 토큰을 저장할 변수를 등록. 기본값은 ""로 넣어주면 된다. 2. 아래처럼 Scripts 부분에 코드를 입력하면, 로그인 요청 후 Token 값을 login_token 변수에 실어준다.var data = JSON.parse(responseBody);pm.environment.set('login_token', data.access_token) 3. 토큰이 필요한 API에서 Authorization -> Bearer Token 선택(원하는 형태의 토큰 선택) 후 {{login_token}}이라고 변수를 설정해주면 된다.
[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하면 ..