스프링부트 프로젝트에서의 엑셀 및 압축파일에 대한 스트리밍

Intro 엑셀파일이나 zip 압축파일을 서버에서 생성해 다운로드를 제공할 때, 최초 응답시간에 대한 고려가 필요하다. 물론 미리 준비되어 있는 파일이라면 브라우저에 바로 응답을 보낼 수 있겠지만 DB에서 데이터를 조회하고, 이를 바탕으로 엑셀 파일을 생성하는 경우 사용자에게 여러 개의 파일을 압축된 형태로 제공하는 경우 이러한 상황에서는 파일을 준비하는 데 시간이 상당히 소요될 수 있다. 데이터의 크기에 따라 응답시간이 크게 달라지기 때문에 예상되는 응답 시간을 구체적으로 제공하기도 어려운 상황에서, 화면에 스피너만 딸랑 띄워놓는 것 만으로는 어지간한 사용자들의 인내심을 달래기 쉽지 않다. 서버에서 아무리 바쁘게 준비하고 있다고 뜨거운 열을 뿜어내며 소리쳐도 사용자는 서버가 멈춘 것으로 오해할 수 있다..

Programming/JPA ⁄ Spring 2023.09.14
[Git] 과거 커밋 일괄 이메일 주소 변경

Intro 가끔씩 Git을 사용하다 보면 이메일 주소가 잘못 입력되어 커밋되는 경우가 생길 수 있다. 혹은 회사에서 개인 이메일로 잘못 커밋한 경우도 발생하는데 금방 알아차렸다면 수정하기 쉽지만 커밋을 꾸준히 잘못해왔다면 수정하기가 쉽지 않다. 이 글에서는 Git 저장소에서 특정 이메일 주소로 커밋된 목록을 확인하고, 해당 커밋들의 이메일 주소를 한번에 모두 변경하는 방법에 대해 알아볼 것이다. 단, 주의할 점이 많으니 명령어를 날리기 전에 항상 신중해야한다. 특정 이메일로 커밋한 목록 확인 먼저, 잘못 지정한 이메일 주소로 커밋한 내용이 얼마나 많은지 확인해보자. git log --author="{찾아볼_이메일_주소@example.com}" 지금 상황은 총 1건이 발견되었다. 해당 커밋의 해시값 6b5..

Development/DevOps 2023.08.08
리눅스에서 하드디스크 NTFS 시스템 으로 포맷

Intro 윈도우와 리눅스 두가지 OS에서 모두 사용할 수 있는 파일 시스템으로 하드디스크를 포맷을 해야 할 필요가 있었다. FAT32, exFAT, NTFS 등 선택할 수 있는 몇가지 파일시스템이 있지만 각각의 장단점이 있다. FAT32는 거의 모든 기기와 호환되는 장점이 있지만, 4GB 이상의 큰 파일을 저장할 수 없으며 파티션 크기에도 제한이 있다. 그래서 exFAT과 NTFS 중 하나를 선택해야 하는데 안정성이 중요한 상황이라 NTFS를 선택했다. 파티션 생성 먼저, 연결된 모든 디스크 목록을 확인한다. 디스크 이름을 알아내기 위함이다. sudo fdisk -l 여기 보이는 14.57 TiB짜리 하드디스크 /dev/sda를 NTFS 파일 시스템으로 포맷할 예정이다. 이어 아래의 명령어를 입력한다...

IT ⁄ Computer/Linux 2023.08.07
[Maven/Gradle] 의존중인 모든 라이브러리의 라이센스 정보 불러오기

Intro 소프트웨어 개발을 하는 과정에서는 다양한 서드파티 라이브러리를 사용하게 된다. 이들 라이브러리는 우리가 직접 작성해야 할 코드의 양을 획기적으로 줄여주며 이미 검증된 라이브러리를 사용하면 코드의 안정성 향상에도 많은 도움을 준다. 하지만 각 라이브러리는 자체 라이센스 정책을 가지고 있으며, 개발자로서 이를 이해하고 준수하는 것은 법적이나 윤리적인 측면에서 매우 중요하다. 이번에 사용중인 모든 서드파티 라이센스 정보를 프로젝트에 기입해야 하는 일이 필요했다. 수동으로 관리하고 문서화 하는 것은 실수하기도 쉽고 시간도 많이 소요되기 때문에 자동화 할 수 있는 도구를 찾아보았고, 다행히도 제법 잘 만들어진 몇 도구들이 있어 어렵지 않게 라이센스 정보를 한번에 생성할 수 있었다. 지금부터 이 글을 통..

Programming/Java 2023.07.21
공유기 DDNS 설정으로 아이피 변경 대비하기 (ipTIME)

Intro 집에서 안쓰는 노트북에 우분투서버를 설치해 홈 서버로 운영한지 이제 2년이 넘어갑니다. 처음에는 클라우드에 비용을 투자하기에는 부담스럽고, 개발한걸 서버에 배포는 해보고 싶은 마음에 전기요금이 적게 드는 노트북으로 절충을 했는데, 필요에 맞춰 스토리지와 램도 증설을 하다보니 이제는 제법 쓸만 해 졌습니다. 무료 클라우드를 몇개 함께 사용하고는 있지만, 이처럼 넉넉한 메모리 및 저장공간에 그래픽카드까지 갖춘 고사양 컴퓨팅 환경을 약간의 전기요금만으로 사용할 수 있다는건 굉장한 이점이 있습니다. 하지만 홈 서버의 장점이 명확한 만큼 운영할때의 불편함 또한 여러가지가 있습니다. 그 중 가장 치명적인것 중 하나가 아마 유동 아이피 문제가 아닐까 생각됩니다. 오래전에는 가정용 인터넷은 IP주소가 자주 ..

Development/DevOps 2023.06.19