본문 바로가기

전체보기

(180)
대학 생활 절반 손해 봄(feat. 글또) 글또 10기 시작대학 생활 절반 손해 봤다.20년도 2학년 2학기에 복학하고 학교 시험공부 정리 겸 블로그를 시작했고, 4년이 지난 지금까지 블로그에 글을 써왔지만 글또를 모르고 있었다. 이마저도 단톡방에서 친구들이 글또가 마지막 기수라고 말해줘서 알게 되었다.블로그 운영에 관심이 많아 이것저것 찾아봤지만, 왜 글또만 피해서 몰랐는지 이해가 되지 않는다.어쨌든 이렇게라도 알게 되었으니, 내가 챙길 수 있는 것은 최대한 챙기고 가고 싶다.완전 럭키비키잖아열심히 하면 10만 원도 주고(환급) 스터디룸도 할인되고(2인분 같은 1인분), 커피챗에 각종 네트워크 활동과 글쓰기 강의까지!모 시공 게임의 홍보 문구가 생각날 정도로 파격적인 혜택들이 정말 많았다. 대학 동아리나 여러 활동에 참가했지만, 이 정도로 좋은..
오류 요약해서 남기기 수정 이력- 24.10.01 server name 및 ip 정보 추가문제 제기우리 팀에선 개발하면서 발생하는 오류들을 슬랙 봇으로 요약해서 보여주고 있었다.하지만, 오류를 그대로 출력했기 때문에 상황에 따라선 불필요한 내용이 많아져 제대로 읽기 힘든 상황들이 있었다.이런 불편함을 해소하기 위해 오류 메시지를 어떻게 요약해서 보여줄 수 있는지 고민한 결과 다음 형태가 나올 수 있었다.초기 오류 메시지 형식구분: java.lang.NullPointerException 클래스: Test1.java 메소드: testMethod1 사유: at com.mapp.server.util.ExceptionInstrumentationUtil.handleFatalThrowable(ExceptionInstrum..
[글또 10기] 삶의 지도 글또를 지원하기 위해 작성한 삶의 지도입니다.첫 문단은 글을 쓰게 된 계기(대학교 3학년), 그다음 문단부터 고등학교 시절 → 현재로 서술됩니다.이런 글을 쓸 기회를 주셔서 감사합니다. [글을 쓰게 된 이유]“죄송합니다. 너무 긴장을 해서 그런지 기억이 잘 안 납니다.” 터닝 포인트가 될 면접에 어처구니없는 실수를 했습니다.나름 철저하게 준비를 했지만, 그때에 대한 기록이 없었기 때문에 빈틈이 있었고 그걸 대처하지 못했습니다.많은 노력을 기울인 프로젝트였지만, 정리되지 않은 코드와 잡담 섞인 슬랙 메시지 며칠 분량으로는 프로젝트를 온전히 설명하기 어려웠습니다. 제 것임에도 제 것이 아니게 된 것에 대해 큰 아쉬움을 느꼈고, 이런 실수를 반복하지 않기 위해 블로그 활동을 시작했습니다.[그야.. 재밌으니까]..
[Java] p6spy 긴 바인딩 로그 치환하기 문제 상황이미지 저장 시, p6spy 로그 길이가 너무 길어짐운영서버에 적용하지 않은 로그였지만, 개발 서버의 로그 용량이 불필요하게 커졌다.이 글에서 다루지 않는 부분성능 이슈설치법해결 방법다음 블로그를 참고했다. p6spy 구조를 잘 정리해놨고, 샘플 코드도 있다.https://backtony.tistory.com/34여유가 있다면 글을 정독하는 것도 좋다.  post 테이블의 image 컬럼에 test란 값을 넣을 때 바인딩 로그는 다음과 같다.insert into post (image,id) values ('test',default)우리가 보내는 데이터는 작은따옴표(’)로 둘러쌓이기 때문에 이 값들만 뽑아내, 길다 싶은 문자열을 잘라내거나 다른 문자로 치환하면 된다.이 값을 추출하는 작업을 정규표..
[python] pandas csv 분할 중 .0 .1 문제 문제 상황python pandas를 사용해, csv를 일정 라인씩 분할하는 과정에서 일부 데이터 끝에 .0, .1이 붙음python 3.10pandas 2.2.2문제 배경oracle DB로 데이터를 이관해야 함보안 정책 문제로 DB dump를 못해 데이터를 csv로 넣어줘야 했음이마저도 큰 csv를 올리면 컴퓨터가 터져서 분할해야 했음문제의 파이썬 코드# CSV 파일 읽기df = pd.read_csv('파일명.csv')# 전체 row 수total_rows = len(df)# 500만 row씩 파일로 저장chunk_size = 5000000for i in range(0, total_rows, chunk_size): chunk_df = df.iloc[i:i + chunk_size] file_nam..
UPPER SNAKE CASE를 사용하면서 생긴 문제 문제 제기레거시 프로젝트 리뉴얼 과정에서 프론트 코드가 UPPER SNAKE CASE인 것을 발견했다. ex) POST_IDdto를 해당 컨벤션에 맞췄지만, 첫 단어가 소문자로 변환되는 문제가 있었고, lombok을 써도 해결되지 않았다.CAEML CASE를 써왔기에 이런 컨벤션 문제가 당황스러웠지만, 앞으로 레거시 프로젝트를 다루면 이런 상황들을 접하게 될 것이라 생각해 정리했다.해결 방안 1. JsonProperty 사용lombok의 @Getter를 쓰지 않고 직접 작성했다.개인적으로 이 방법이 가장 깔끔했지만 다음 문제가 있었다.각 getter마다 추가해야 한다.해당 코드를 추가할 곳이 매우 많다.오타가 자주 발생한다. 생각보다 JsonProperty 하고 변수명 바꿔쓰는 경우가 많았다.import..
proxyBeanMethods=false를 써야 하는지 문제 제기WebClient를 적용하는 과정에서 WebClient 객체를 Spring에서 관리하도록 하고 싶었다.여러 서버와 통신하기 때문에 각 서버별로 WebClient 객체를 만들어야 해서 Config 클래스에서 Bean 어노테이션을 사용했다.다른 사람들과 공식 문서에선 어떻게 사용했는지 찾아본 결과 proxyBeanMethods 을 false로 주는 케이스들이 보여 어떤 차이가 있는지 알아보게 됐다.이 기준으로 정리함내용이 너무 방대해서 정리하는 기준점이 필요했다. 지엽적인 부분으로 자주 빠지게 됐고 모두 정리해 봤자 나중 가면 기억도 안 나고, 틀린 내용이나 단편적인 케이스를 일반화할 것 같아서 이렇구나~라고 보고 넘겼다. 본 것 들은 Reference 항목에 적어놨다.true/false 차이가 운..
[Java] 토큰 인증 처리에 대한 정리 문제 제기토큰 인증 관련 글들을 보면 jwt의 만료 기간만 보고 인증을 결정하는 내용들을 자주 봤다.이 경우 인증을 stateless 하게 관리해 성능상의 이점이 있지만 로그아웃된 토큰 or 토큰이 탈취됐을 때에 대해선 대응이 부족한 것 같단 생각이 들었다.서비스 신뢰도나 최악의 상황을 고려하면 인증 관련 정보는 stateful로 관리하는 게 맞는다고 생각해 여기에 맞춰 토큰 인증을 만들었다. 2가지 토큰으로 인증을 처리한다.access 토큰: 실제 인증에 사용되는 토큰. 기간이 짧다.refresh 토큰: access 토큰 만료 시 갱신에 사용되는 토큰. 기간이 길다. 인증 EntityEntity를 생성하고 access, refresh 토큰과 memberId를 넣는다.디테일을 위해 넣은 거지만 @PreP..