반응형

Programming 376

FTP Active Passive Mode 정리

FTP란? FTP는 파일을 전송하는 통신 규약인 File Transfer Protocol의 약자인데요. FTP 서버에 파일을 업로드, 다운로드할 수 있도록 해주는 프로토콜이며, 이는 FTP 서버와 FTP 클라이언트 간의 통신에 사용됩니다. FTP 파일 전송에는 두 개의 port가 사용되는데요. 하나는 사용자 인증 및 명령어 입력을 위한 제어 채널(Command Port)이고 다른 하나는 실제 파일 전송을 위한 데이터 채널(Data Port)입니다. 연결 방식에는 Active 모드와 Passive 모드, 두 가지 방식이 있습니다. 기본적인 동작 방식은 Active Mode이며, Active 모드의 단점을 해결하기 위해 나온 것이 바로 Passive 모드인데요. 아래 이어지는 내용을 통해서 각 연결 방식의 ..

Programming/Web 2022.10.22

Javascript 테이블 행의 값 가져오는 방법(table.rows / row.cells)

javascript에서 행의 값이 필요할 때 table.rows 함수와 row.cells 함수를 활용하여 값을 가지고 오는 코드입니다. (rows collection, cells collection) html 및 javascript 코드 중점으로 올리고 css의 경우 포스팅 맨 하단부에 추가해놓을 테니 필요하신 경우 참고 부탁드리겠습니다. First Name Last Name Phone Email Date of Birth Susan Connor (02) 338-2765 jmatman@gmail.com 01/13/1979 ... (생략) (html 코드, 단순한 테이블 구조) (행의 값을 가져오는 javascript 코드) table.rows 함수를 통해 rows collection을 가져올 수 있으며, ..

MultipartFile to File 차이점과 변환 방법(Java)

Spring에서는 클라이언트가 업로드한 File을 핸들러에서 손쉽게 다룰 수 있도록 MultipartFile 인터페이스를 제공합니다. 이렇게 업로드된 파일은 저장 또는 다른 처리를 위해 MultipartFile File 서로 간의 변환이 종종 필요한데요. 이어지는 내용을 통해서 MultipartFile과 File의 차이점 및 변환 방법을 살펴보겠습니다. MultipartFile MultipartFile interface는 Spring에서 업로드된 파일을 다룰 때 사용되는 인터페이스로 파일의 이름과 실제 데이터, 파일 크기 등을 구할 수 있습니다. /* Spring에서 MultipartFile 타입을 매개변수로 사용하기 위해서는 MultipartResolver 구현체가 Bean으로 등록되어 있어야 하는데요..

Spring Boot + GraphQL 기본적인 사용법 정리

REST를 대체한다고? GraphQL(Graph Query Language)란? 시작에 앞서 GraphQL이란 무엇인지 간단하게 살펴보면, 페이스북에서 개발된 쿼리 언어인 GraphQL은 기존에 많이 사용되던 RESTful API와는 다른 형식의 인터페이스입니다. 가장 큰 차이로는 RESTful API가 URL, Method 등의 조합으로 다양한 Endpoint를 가지는 반면, GraphQL은 단 하나의 Endpoint 만으로 데이터를 요청하고 응답받을 수 있는데요. 이 방식을 통해 기존의 RESTful API의 단점인 Over-Fetching, Under-Fetching 문제를 해결할 수 있습니다. /* Over-Fetching(오버 패칭) 오버 패칭은 클라이언트에서 데이터를 요청했을 때, 실제로 사용..

Java Enum 활용하기2 - ConverterFactory

Java Enum을 활용한 방법 중 두 번째, ConverterFactory 인터페이스를 구현한 CustomConverter를 만들어 HTTP 요청에서 Enum 값을 받을 때 Enum 값 자체를 받는 것이 아니라 legacyCode를 받아 자동으로 Enum으로 형 변환하는 방법입니다. @GetMapping("/user/{idx}") public ResponseEntity getUserDetail(@PathVariable Long idx) { ... } 스프링에서 HTTP Query String을 통해 전달되는 정보는 모두 문자열(String)로 인식됩니다. (HTTP 요청 파라미터는 모두 문자열로 처리) 하지만 위 예시와 같이 컨트롤러에서 Long (또는 Integer, boolean Enum 등)으로 ..

Programming/Java 2022.10.08

Spring Boot 부트스트랩(bootstrap) 템플릿 적용하는 방법

Spring Boot MVC 패턴 프로젝트에서 부트스트랩(bootstrap) 템플릿을 적용하며 정리한 내용입니다. 해당 내용은 아래 타임리프 레이아웃(Thymeleaf layout)을 적용한 상태에서 추가된 내용이기 때문에 함께 내용 참고하시면 좋을 것 같습니다. Spring Boot 타임리프 Thymeleaf layout 적용하는 방법 타임리프(Thymeleaf)에 대해서 간단하게, 타임리프는 서버 사이드 템플릿 엔진(Template Engine)의 한 종류로, 쉽게 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성할 수 있게 해주는 역 wildeveloperetrain.tistory.com *** You don't need to put the layout:fragment/data-layout..

JPA @OneToOne 일대일 연관 관계 정리 및 LazyLoding 이슈

JPA를 사용하면서도 연관 관계 매핑을 쓰지 않다가 이번 프로젝트에서 연관 관계를 적용하기 시작하며 정리한 내용이며, JPA 연관 관계 매핑 중에서 1:1 연관 관계인 @OneToOne에 대해 정리한 내용입니다. @OneToOne 일대다(1:N), 다대일(N:1) 관계에서는 다(N) 쪽이 항상 외래 키를 가지고 있지만, 일대일(1:1) 관계에서는 주 테이블이나 대상이 되는 테이블 양쪽 모두 외래 키를 가질 수 있습니다. 때문에 일대일 관계를 적용할 때는 주 테이블과 대상이 되는 테이블, 어느 쪽에 외래 키를 둘지 선택해야 하는데요. JPA에서는 외래 키를 갖는 쪽이 연관 관계의 주인이 되고, 연관 관계의 주인이 데이터베이스 연관 관계와 매핑되어 외래 키를 관리(등록, 수정, 삭제)할 수 있기 때문에 해당..

Programming/Java 2022.10.02

Java Enum 활용하기1 - AttributeConverter

Java Enum을 활용한 방법 중 첫 번째, AttributeConverter 인터페이스를 구현한 CustomConverter를 만들어 DB에는 Enum의 legacyCode 값으로 데이터를 저장하고, Java에서는 DB에 legacyCode 값으로 저장된 데이터를 다시 Enum으로 변환해서 사용하는 방법입니다. AttributeConverter의 기본적인 사용 방법 예시 @Getter public enum UserState { NORMAL("정상", 1), SUSPENSION("정지", 2), WITHDRAWAL("탈퇴", 3); private String desc; private Integer legacyCode; UserState(String desc, Integer legacyCode) { th..

Programming/Java 2022.10.01

Spring Boot Multi Module Project 생성하기(maven)

멀티 모듈 프로젝트는 무엇인지, Spring boot에서 multi-module project를 생성하는 방법(maven)은 어떻게 되는지 정리한 내용입니다. 참고 자료 및 코드의 git 주소는 포스팅 맨 하단에 있으며, 잘못된 내용은 댓글로 남겨주시면 확인하여 수정하겠습니다. 감사합니다. 1. Multi Module Project를 적용하는 이유 작은 단위에서부터 시작된 대부분의 프로젝트들은 시간이 지날수록 기능이 추가되면서 점점 더 커지고 복잡해지는데요. 기능이 많아지고, 요청이 많아질수록 그 요청들을 하나의 프로그램에서 처리하기가 어려워지는데, 때문에 하나로 운영하던 서비스가 클라이언트 서비스와 운영 시스템으로 나뉘는 등의 분리가 일어나게 됩니다. 이렇게 프로그램이 나누어졌을 때의 가장 큰 문제점은..

루프백 ip란? (127.0.0.1 / localhost)

루프백(Loopback) ip란? 루프백 ip, 루프백 주소는 네트워크상에서 자신을 나타내는 가상적인 주소이며, 자신에게 다시 네트워크 입력이 들어온다고 하여 루프백(Loopback) 주소라고 합니다. IPv4에서의 루프백 주소는 127.0.0.1이며, IPv6에서는 ::1 (0:0:0:0:0:0:0:1의 약자)로 사용됩니다. /* IPv4의 경우 Loopback ip는 127.0.0.0부터 127.255.255.255까지의 범위가 할당되지만, 일부 운영체제가 정확히 127.0.0.1을 사용하기 때문에 대부분 해당 주소를 사용하며, IPv6의 경우 ::1 단 하나의 주소만 사용합니다. */ 127.0.0.1 대신 localhost를 사용하는 경우도 있는데요. 로컬 호스트(localhost)는 컴퓨터 네트..

Programming/Web 2022.09.19
반응형