반응형

Programming 362

linux sftp log 설정 방법 (접속 및 작업 로그)

Linux 운영체제 SFTP 로그 설정 방법 sftp 작업은 기본적으로 로그를 남기지 않습니다. 때문에 로그를 남기기 위해서는 아래 내용과 같은 추가 설정 작업이 필요한데요. 전체적인 작업은 편집기를 통한 3개의 파일(sshd_config, rsyslog.conf, rsyslog) 내용 수정 및 프로그램(rsyslog, sshd) 재실행으로 실행되며, 짧은 시간에 적용할 수 있는 부분입니다. (해당 포스팅의 내용은 Ubuntu 18.04.6 LTS 환경에서 작업된 내용입니다.) 1. /etc/ssh/sshd_config 파일 수정 편집기를 통해 /etc/ssh 디렉터리 내에 있는 sshd 설정 파일인 'shd_config' 파일을 수정합니다. #수정 전 Subsystem sftp /usr/lib/open..

Programming/Linux 2023.02.16

Java FTPClient를 통한 ftp 파일 업로드 내용 정리

Spring Boot 프로젝트에서 FTPClient를 통한 ftp 파일 업로드를 구현하며 정리한 내용입니다. 파일 업로드 과정에서 FTPClient에 설정이 필요한 부분들이 정리되어 있으며, 포스팅 맨 하단에 github 주소도 함께 링크해 놓았으니 참고하시면 좋을 것 같습니다. Java FTPClient를 통한 FTP 파일 업로드 @Slf4j @Component public class FtpUtils { @Value("${ttotw.ftp.server}") private String server; @Value("${ttotw.ftp.port}") private int port; @Value("${ttotw.ftp.username}") private String username; @Value("${tto..

Programming/Java 2023.02.13

Java 파일 확장자 구하는 방법 (filename extension)

Java 파일 확장자 구하는 방법 파일 확장자(filename extension)는 컴퓨터 파일의 이름에서 파일의 종류와 그 역할을 표시하기 위해 사용하는 부분으로, 간단히 확장자라고도 하는데요. 확장자는 파일 이름에서 마지막 마침표(.) 뒤에 나타나는 부분을 확장자로 인식합니다. (wikipedia) 아래 내용을 통해 자바(및 스프링)에서 파일 확장자를 구하는 몇 가지 방법에 대해서 살펴보겠습니다. 1. subString() 메서드와 lastIndexOf() 메서드를 사용한 방법 public String getExtension(MultipartFile multipartFile) { String fileName = multipartFile.getName(); String extension = fileNa..

Programming/Java 2023.02.06

FTP로 살펴보는 SocketTimeout(soTimeout)과 ConnectionTimeout 차이점

FTPClient로 살펴보는 SocketTimeout, ConnectionTimeout 차이점 Java FTPClient를 통한 ftp 파일 업로드를 구현하는 과정에서 FTPClient에 기본적으로 ConnectionTimeout이 설정되어 있는 상태에서 setSoTimeout() 메서드를 통해 socketTimeout이 설정되는 것을 보고 'SocketTimeout과 ConnectionTimeout의 차이점'에 대한 의문이 생겨서 정리한 내용입니다. ConnectionTimeout FTP(File Transfer Protocol)는 TCP/IP를 기반으로 한 파일 전송 프로토콜로 ftp server에 파일 업로드(다운로드, 삭제 등)를 하기 위해서는 ftp server와 연결된 상태가 되어야 합니다. ..

Programming/Java 2023.02.01

mac local FTP Server 구현 방법(QuickFTP Server)

QuickFTP Server 앱을 통한 MacOS 로컬 FTP 서버 구현 방법 public void open() throws IOException { ftp = new FTPClient; ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); ftp.connect(server, port); ... } (Spring Boot ftp 파일 업로드 기능 작성 중 일부) MacOS 환경에서 Spring Boot 프로젝트 개발 중 ftp 파일 업로드 테스트를 위해 'ftp server'가 필요했는데요. 맥 운영체제의 경우 예전에는 아래 명령어를 통해 자체 ftp 서버를 기동 할 수 있었지만, 현재 보안 상의 이유로..

Programming/MacOS 2023.01.29

(mysql, mariadb) general_log를 통한 실행된 쿼리 확인 방법

MySQL, MariaDB general_log를 통해 실행된 쿼리 확인 방법 mysql이나 mariadb를 사용하다 보면 실행된 쿼리를 확인하고 추적해야 할 때가 있는데요. 그럴 때 'general_log'를 통해 클라이언트로부터 접속된 접속 내용 및 수행된 모든 쿼리를 확인할 수 있으며, 아래 내용을 통해 자세한 방법을 살펴보도록 하겠습니다. * general_log 외 log 종류에 대해서 간단하게 살펴보면 아래와 같습니다. General Query Log: 클라이언트의 접속 내용 및 수행된 모든 쿼리를 기록합니다. Error Log: MySQL 시작, 종료 과정, 비 정상적인 종료 시 발생하는 트랜잭션 메시지, 쿼리 실행 중 발생하는 에러 등을 기록합니다. Binary Log: 데이터 조작어(DM..

Programming/MySQL 2023.01.28

Spring Boot 초기 데이터 설정 방법 정리(data.sql, schema.sql)

스프링부트 초기 데이터 설정 방법에 대한 정리 스프링부트에서는 데이터베이스 초기 설정을 위해 기본적으로 script(schema.sql, data.sql) 파일을 사용할 수 있는데요. 관념적으로 데이터 정의어(DDL)는 schema.sql 파일에 작성하고 데이터 조작어(DML)은 data.sql 파일에 작성됩니다. 스크립트 파일의 동작은 spring boot 2.4.x 버전과 2.5.x 버전을 기점으로 차이가 있기 때문에 동작 방식에 대해서 알고 적용할 필요가 있는데요. (스트립트 파일을 적용하는 것의 상위 방식으로는 Flyway 또는 Liquibase라고 하는 마이그레이션 도구가 있습니다.) 아래 내용은 Spring Boot 2.4.x 이하 버전과 2.5.x 이상 버전을 기준으로 스프링 부트에서 scr..

MariaDB 가상 필드를 통한 JSON 인덱싱 방법(Generated Columns)

Indexing a Generated Column to Provide a JSON Column Index. 저장되는 데이터들이 많아지고, 또 그 데이터들의 형태가 복잡 + 다양하게 활용되고 있는데요. 때문에 관계형 데이터베이스(Relational Database)에서도 json 타입을 지원하고, 또 사용자들에게도 많이 사용되는 추세입니다. 'mysql'의 경우 MySQL 8.0.13부터 json 데이터 타입 필드의 인덱싱을 지원하는 반면, 'mariadb'의 경우 아직까지 json 타입의 필드에 대한 인덱싱이 지원되지 않고 있는데요. 아래 내용을 통해 'mariadb에서 가상 필드를 통한 json 타입 필드의 Indexing 방법'을 살펴보겠습니다. (해당 방법은 MySQL에서도 적용될 수 있습니다.) ..

(javascript) input image width, height 이미지 너비, 높이 구하기

javascript - input image width, height 구하는 방법 JavaScript를 사용하여 에 들어온 이미지 파일의 너비와 높이를 구하는 방법이 궁금하여 찾아본 내용입니다. 해당 기능에서 핵심이 되는 것은 javascript에서 사용되는 FileAPI인 'FileReader'인데요. 아래 실제 구현 코드를 통해 내용 살펴보겠습니다. (input type="file"으로 들어온 이미지 파일의 너비와 높이를 구하는 코드) /* FileReader란? 웹 어플리케이션이 비동기적으로 파일의 내용을 읽는 데 사용되는 객체이며, File 혹은 Blob 객체로부터 내용을 읽어옵니다. */ 동작 내용을 살펴보면, 먼저 FileReader 객체 생성 후에 사용되는 'readAsDataURL()' 메..

Apache Kafka 주요 개념 정리 (Cluster, Topic, Producer, Consumer)

kafka 주요 개념 정리(cluster, topic, producer, consumer) 1. 카프카(Kafka)란? Kafka는 링크드인(Linked-in)에서 처음 개발되어 2011년 오픈소스화 된 솔루션인데요. 실시간으로 스트리밍 데이터를 게시, 구독, 저장 및 처리할 수 있는 '분산형 데이터 스트리밍 플랫폼'입니다. 기존의 직접적인(end-to-end) 연결 방식의 아키텍처는 데이터 연동의 복잡성이 높고 확장이 어려운 구조인 반면, Kafka를 사용하면 보내는 쪽에서는 Kafka로 메시지를 보내면 되고, 받는 쪽에서도 누가 그 메시지를 생성하고 보냈는지에 관계없이 단순하게 메시지 자체를 가져와서 처리할 수 있게 됩니다. (단순히 text 형식의 메시지뿐만 아니라 json, xml, java의 O..

반응형