전체 글 132

Java FTP 파일 전송하는 방법 + 쉬운 예제(Front~Back)

개요안녕하세요 빈코입니다. 오늘은 Java에서 FTPClient()를 활용하여 서버에 파일을 전송하는 방법에 대해 포스팅하려고 합니다. 포스팅은 Front에서부터 Back까지 전반적으로 진행하기 때문에, 만약 DB에서 파일을 꺼내오시는 분들은 Service 챕터만 확인하시면 됩니다😁그럼 시작해 볼까요? UI 📙 첫 번째로는 FTP 서버에 파일을 보내기 위해서는 FTP 서버 연결을 위한 4가지 정보(host, port, user, password)가 필요합니다. 그래서 UI에서 입력받도록 설정하였고, 저는 간단한 예시 작성을 위해 파일은 사용자에게 입력 받도록 구성했습니다. 코드는 아래와 같습니다. FTP 테스트 FTP 서버 : 사용자명 ..

TIL 2025.03.13

개발자를 위한 최고의 AI 툴 3선 (Gemini, Notion, IntelliJ AI Assistant)

개요안녕하세요 빈코입니다. 오늘은 개발 스킬에 대한 포스팅이 아닌 요새 많이 화두 되고 있는 AI 툴들을 소개하려고 합니다. 디자이너, 개발자, 기획자 등 많은 IT 종사자들이 AI 툴들을 이용하여 업무 생산량을 높이고 있습니다. 모든 것을 AI에게 맡길 순 없지만, AI로 더 똑똑하게 업무 할 수 있는 몇 가지 방법들을 소개해볼게요😊 AI Assistant?📙 AI Assistant는 크게 ChatBot-based, Code Development, Business and Productivity 3가지로 나뉜다고 생각합니다.  첫 번째 ChatBot AI 툴은 가장 대중적으로 알려진 chatGPT와 Gemini, Claude가 대표적입니다. 주로 자연어 처리 능력을 기반으로 사용자와의 대화, 정보 제..

ETC 2025.01.18

Java 파일 다운로드 OutOfMemoryError 해결방법(전체 예시)

개요안녕하세요 빈코입니다. 오늘은 저번 포스팅에 이어 Java에서 파일 다운로드 시 메모리 부족으로 인해 생기는 OutOfMemoryError에 대해 전반적인 코드를 소개하려 합니다. 저번 포스팅과 중복되는 부분도 있겠지만, 해당 포스팅만 보시는 분들을 위해 전체적으로 다 소개하려 합니다. 코드는 하단에서 설명할게요😁 설정📚저번 포스팅에서 언급했듯이 Java에서 StreamingResponseBody를 사용하려면 여러 가지 설정이 필요합니다. 첫 번째로 javax.servlet-api 버전이 3.0 이상이어야 합니다. Maven이나 Gradle에 아래와 같이 추가해주세요😁// Maven javax.servlet javax.servlet-api 4.0.1 provided // ..

TIL 2025.01.11

Java 파일 다운로드 OutOfMemoryError 해결방법(예시)

개요안녕하세요 빈코입니다. 오늘은 Java 기반 프로젝트에서 파일 다운로드 시 OutOfMemoryError 에러를 해결하는 방법에 대해 포스팅하려 합니다. OutOfMemoryError는 직역 그대로 메모리 사용 초과 오류입니다. 해당 오류는 여러 클라이언트가 파일을 동시에 다운로드할 때, 혹은 파일의 크기가 큰 파일을 여러 번 다운로드할 때 메모리가 초과되어 발생되는 오류입니다. 하단에서 예시와 함께 알아볼게요😊 파일 다운로드 - 메모리 방식📙파일 다운로드는 크게 2가지의 방법으로 로직 구현이 가능합니다. 첫 번째는 일반적으로 사용하는 파일을 메모리에 올려서 다운로드 하는 방법과 두번째로는 스트리밍 방식으로 다운로드 로직을 구현을 할 수 있습니다. 각각의 장단점이 존재하는데 우선 일반적으로 사용하..

TIL 2024.12.31

Java 이미지 파일 다운로드 기능 구현하기(예제 포함)

개요안녕하세요 빈코입니다. 오늘은 Java를 활용한 이미지 다운로드 기능에 대해 포스팅하려 합니다. 이미지 다운로드는 크게 2가지로 분류되는데, 이미지의 binary를 직접 DB에 등록하거나 또는 이미지의 파일명과 파일 경로만 DB에 저장한 후 해당 정보를 꺼내서 서버에 등록된 이미지를 찾는 방법이 있습니다. 실무에서는 DB 공간을 생각하여 binary를 직접 등록하지 않고, 서버에 저장하는 방식으로 많이 사용하기 때문에 이번 포스팅도 서버에서 찾아서 다운로드하는 방법을 포스팅하려 합니다. 자세한 방법은 하단에서 설명할게요😃 파일 Table & 조회 Query📙CREATE TABLE file_info ( id INT AUTO_INCREMENT PRIMARY KEY, file_name VAR..

TIL 2024.12.27

js 드래그 앤 드롭(drag&drop) 사용하기

개요안녕하세요 빈코입니다! 오늘은 js에서 순서를 변경하는 기능인 drag&drop 기능에 대해 포스팅하려고 합니다. 드래그 앤 드롭은 파일을 마우스로 옮기거나 특정 요소들을 원하는 순서로 배치하기 위해 많이 사용하는데, 오늘은 체크박스들의 위치들을 옮기는 작업들을 같이 해보려고 합니다. 자세한 내용들은 하단에서 설명할게요😃 드래그 앤 드롭 예시📙먼저 드래그 앤 드롭의 예시 먼저 살펴볼까요?  5개의 과일을 각각 체크박스로 명시한 후 위의 영상과 같이 순서를 변경하는 간단한 예시를 들어봤습니다. 실무에서는 사용자 인터페이스에서 정렬 기능을 제공해야 할 때 주로 해당 기능을 사용하는데, 예를 들어 대시보드나 위젯을 사용자가 원하는 레이아웃으로 변경하는 기능을 제공한다던가 혹은, 데이터 테이블의 칼럼을 ..

TIL 2024.12.18

Java Integer와 int 차이로 인한 오류 방지 (실무 예제)

개요안녕하세요 빈코입니다. 오늘은 제가 실무에서 작업을 하면서 겪었던 오류와 해결과정을 포스팅하려고 합니다. 특정 조건들을 통해 데이터의 개수를 구할 때, Integer 혹은 int로 정의를 하게 되는데 해당 과정에서 잘못 된 선언으로 인해 결함이 나오게 되었습니다. 하단에서 좀 더 자세히 살펴볼게요😄 겪은 오류📙제가 겪은 오류는 특정 조건으로 DB의 데이터 개수를 구할 때 int 형으로 선언하고 진행했었는데, 해당 조건의 데이터가 아예 없어서 NULL 오류를 겪게 되었습니다. CommonMapper.getLogCount attempted to return null from a method with a primitive return type(int) // 오류 내용 Mybatis와 같은 Mapper..

TIL 2024.12.14

대전 IT 모각코 모임

개요안녕하세요 빈코입니다! 오늘은 평소에 하던 개발 포스팅이 아닌 현재 운영하고 있는 '대전 IT 모각코' 모임을 소개하려 합니다. 사실 스터디 자체는 온라인으로 진행하는 것이 편하지만, 현재 대전 내에서 IT 오프라인이 모임이 없는 것 같아(제가 모르는걸 수도..^^) 10월 28일 개설하게 되었고, 현재 30명의 멤버로 운영 중입니다. 혹여나 관심 있으신 분들은 소모임 어플을 통해 가입해 주시면 감사하겠습니다(링크)😄 모각코란?📙모각코는 '모여서 각자 코딩'의 줄임말로, 개발 관련 직종자들이 모여서 코딩을 하거나 개인 공부를 하는 모임을 뜻합니다. 현재 저희는 30명의 맴버로 매주 토요일마다 정기 모임을 가지고 있습니다. 아직은 멤버가 많지 않아서 주 1회 스터디로 제한하고 있는데, 추후에 인원이..

ETC 2024.11.30

PostgerSQL Upsert 쿼리 개념 및 대용량 속도 차이 예제

개요안녕하세요 빈코입니다. 오늘은 DB 쿼리 중에 유용하게 사용되는 Upsert문에 대해서 포스팅 하려 합니다. Upsert문은 데이터를 삽입(Insert)하거나 수정(Update)하는 작업을 동시에 처리하는 SQL문입니다. 이 문은 주로 "존재하면 업데이트, 없으면 삽입"하는 형태로 동작하며, 기존 데이터가 있으면 수정하고 없으면 새로 추가하는 방법입니다. 좀 더 자세한 방법은 하단에서 살펴볼게요😁 Upsert문 개념📙Upsert문은 개요에서 설명한 바와 같이 데이터를 삽입 및 수정을 동시에 처리하는 SQL문입니다. 여기서 존재하면 업데이트, 없으면 삽입하는 과정이 필요한데, 어떤 값을 기준으로 존재 여부를 판단하는지는 CONFLICT 절에 의해서 판단됩니다. INSERT INTO table_nam..

TIL 2024.11.23

Java 파일 업로드 구현하기 및 Progress Bar 설정

개요안녕하세요 빈코입니다. 오늘은 Java에서 파일 업로드하는 방법에 대해 알아보려고 합니다. UI에서 파일을 선택하고 업로드되는 과정을 보여주는 Progress bar를 표현하는 일련의 과정을 순서에 맞게 포스팅해 볼게요😄 UI 구성📒가장 먼저 구현해야 할 것은 당연 Front 단이겠죠? Front단 설정은 간단합니다. input 타입을 file로 설정하여 사용자가 파일을 선택할 수 있는 파일 선택 버튼을 생성합니다. 그리고 저는 data-show-preview="false"를 설정하여 파일 미리 보기를 보여주지 않도록 설정하였습니다. 하위 코드로 아래와 같이 UI단을 구성하면 UI단은 끝이 납니다😊 JS 단 구성📙$('#input_file').fileinput({ language: "ko..

TIL 2024.11.16