본문 바로가기

전체 글

(183)
파일 옮길 땐 tar를 쓰자 수정 내역24.11.20 rsync로 대규모 파일 이관 레퍼런스 추가24.11.22 심볼릭 링크 아카이빙 케이스 및 재발시, 사전에 수행할 명령어 추가문제 상황개발 서버에 디비 구조가 변경된 코드를 배포하다 스크립트 이슈로 다른 팀이 사용 중인 서버에도 배포됐다.실제 사용자들이 쓰는 서비스는 아니어서 문제가 발생한다는 걸 뒤늦게 알았지만, 어쨌든 수습은 해야 했다.잘못 배포된 서버에 운영 서버에 있는 jar와 다른 파일들을 옮기는 과정에서 새로 알게 된 내용을 정리했다.tar를 쓰는 이유파일의 inode를 유지하기 위해서다.단순히 파일을 복사하면 수정 시간이 현재 시간으로 변경되고, 권한도 초기화된다.실행 파일의 경우 접근 권한 x가 사라지고 다른 파일들의 경우 수정 날짜가 원본과 다르기 때문에 누가 수..
ArrayBuffer, Blob 들어가기 전에프로젝트 도메인 특성상 자주 마주할 것이라 생각해 나에게 필요해 보이는 것들 위주로 정리했다. 짧게 요약하면1. 이진 데이터를 다루지만 자료형이 없다.2. ArrayBuffer은 고정 크기, Blob은 가변 크기3. ArrayBuffer를 통해 Blob 불변 객체를 만들 수 있다.문제 상황pdf 다운로드 기능 구현 도중 인코딩 이슈가 발생해 pdf 쪽수는 맞는데 빈 페이지만 보여주는 문제가 있었다.task 서버에서 바이너리를 인코딩을 안 해서 생긴 문제였지만,검색 과정에서 arrayBuffer와 Blob을 알게 됐고, 둘이 어떤 차이인지 궁금해 정리하게 됐다. 관련 stackoverflowhttps://stackoverflow.com/questions/34436133/pdf-is-blank-..
단위 테스트 적용하기 수정 내역24.10.31 easy-random 등을 이용한 fixture 개선 시도에 대한 내용 추가24.11.19 assertion의 extract 체이닝 케이스 추가목차- 서론- 프로젝트 특징- 테스트 코드 분리- 단위 테스트 구성- 객체 찍어내기- easy-random, fixutre monkey 도입- service, repository 관리- 실제 테스트 만들기- assertThat을 여러 개 써도 될지?서론테스트 코드를 작성한 이유는 지금 맡은 유지 보수 업무를 보다 효과적으로 수행하고 싶었다.기존에 작성된 코드가 잘 사용되지 않는 패턴으로 구성되어 있어 이해하는 데 어려움이 있었고주석은 달아놓지만 여기서 놓치는 부분들을 테스트로 보완하고 싶었다. 또한, 우리 팀에 TDD 프로세스를 소개하고 ..
대학 생활 절반 손해 봄(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..