반응형

전체 글 423

Redis 데이터 타입, (error) WRONGTYPE Operation against a key holding the wrong kind of value

(error) WRONGTYPE Operation against a key holding the wrong kind of value 다음은 Redis 사용 중에 볼 수 있는 오류로 내용처럼 잘못된 타입으로 인해 발생하는 오류인데요. Redis에서 사용되는 데이터 타입과 각 타입 별 내용 및 데이터를 가져오는 명령어에 대해서 살펴보겠습니다. type * Redis에서 데이터 타입을 확인하기 위해서는 위 type 명령어를 사용할 수 있습니다. 1. String 가장 기본적인 Redis 데이터 유형인 'String'입니다. String 타입의 경우 텍스트, 직렬화된 객체 및 이진 배열을 포함한 바이트 시퀀스를 저장하며, Redis에서 사용되는 String type의 기본적인 크기는 최대 512MB입니다. * ..

Programming/Error 2023.03.05

(java) 어플리케이션 단계에서 외부 이미지 파일 불러오는 방법

java, application 단계에서 외부 이미지 파일 불러오는 방법 어플리케이션에서 파일 업로드를 구현할 때, 업로드되는 파일의 경우 application 내부의 static 폴더에 저장되는 것이 아니라 application 외부에 있는 서버 단의 별도의 공간에 저장되거나, 외부 파일 서버에 저장되는 방식이 사용되는데요. 업로드 이후 해당 이미지 파일을 보기 위해서는 web server를 통한 방식이 주로 사용됩니다. 하지만 특수한 경우로 web server를 통해 정적 파일에 접근하는 것이 아니라, 어플리케이션 단계에서 해당 파일을 가져와야 하는 경우가 있는데요. 이때 어떤 방법으로 application 단계에서 이미지 파일을 가져올 수 있는지 살펴보겠습니다. 핵심이 되는 부분 @GetMappin..

Programming/Java 2023.03.01

단축키를 사용하자, IntelliJ 활용도 높은 단축키 정리

IntelliJ 활용도 높은 단축키 정리 최근 인프런 CTO 향로님의 블로그 글을 통해 아래에 IDE 단축키를 사용하는 것에 대한 시니어 개발자님의 글을 보게 되었는데요. 개발자로 취직하고 IntelliJ를 사용한 지 거의 2년이 다 되어가는데도 불구하고 아직 단축키를 잘 사용하지 못하며, 마우스 사용 빈도가 상당히 높은 스스로를 반성하게 되었습니다. http://www.chidoo.me/index.php/2022/12/29/keep-your-ide-shortcuts-in-mind/ 그래서 마우스 사용 빈도를 줄이고 단축키를 더 활용하기 위해 활용도가 높은 단축키들을 정리해 보았는데요. 참고하시고 잘 사용하여 프로그래밍에 집중할 수 있는 능률을 높일 수 있으면 좋겠습니다. * 시작에 앞서 아래 모든 단축..

IT Info 2023.02.26

REST API Response Format, 응답 객체는 어떤 형식이 좋을까?

rest api response format and example 1. REST API 응답 형식에 대한 의문 지금까지 백엔드로 RESTful API를 여러 번 작업하면서 의문을 느낀 점은 각각의 프로젝트마다 'api 요청에 대한 response 형식이 다르다'는 것입니다. 이유는 RESTful API 응답 형식에 대한 표준이 없기 때문인데요. 표준은 없더라도 많이 사용되거나 선호되는 형식이 있을 것 같았으며, 해당 형식을 사용하는 합당한 이유들이 존재할 것 같아서 그에 대한 내용을 찾아보았습니다. (rest api response 형식에 대해서는 stackoverflow 등의 커뮤니티에서도 활발한 토론이 이뤄지고 있습니다.) 추가로 내용을 찾아보면서 개인적으로 적합하다고 생각되는 응답 형식의 예시와 해..

Programming/Web 2023.02.25

gcp vm 인스턴스 swap 스왑 메모리 적용하는 방법

GCP VM 인스턴스 스왑 메모리(swap) 적용하는 방법 스왑 메모리(swap memory)란? 시스템에서 메모리(RAM)가 부족할 경우 프로세스는 더 이상 작업을 이어가지 못하고 종료되는데요. 스왑 메모리는 시스템에 메모리가 부족한 상황에서 하드 디스크의 일부 공간을 활용하여 작업이 계속되도록 도와주는 영역으로, '하드 디스크의 일부를 RAM처럼 사용할 수 있게 만드는 방법'입니다. RAM처럼 사용할 수 있게 만들었다지만 하드 디스크 상에 위치하기 때문에 RAM에 접근하는 것보다 접근 속도가 느리며, 따라서 데이터를 처리하는 속도도 느린데요. 속도는 느리지만 메모리가 부족하여 시스템이 다운되거나 장애를 발생시키는 것 보다는 스왑 메모리를 활용하는 것이 안전성 측면에서 뛰어나다는 장점이 있습니다. 대부..

Programming/Web 2023.02.22

(html) a href 새 창 열기 및 크기 지정

a href 새 창 열기 및 크기 지정하는 방법 a tag 새 창 열기 태그는 하나의 페이지에서 다른 페이지로 연결하는 하이퍼링크(hyperlink)를 걸기 위한 용도로 사용되는데요. 태그에서 가장 핵심이 되는 속성은 링크의 목적지를 가리키는 href 속성으로 의 형식으로 주로 사용됩니다. a href 새 창 열기 새 창 열기 a href에서 새 창을 열기 위해서는 a 태그의 target 속성을 사용해야 하는데요. target 속성은 링크된 문서를 클릭했을 때 문서가 열릴 위치를 명시하는 용도로 사용됩니다. target 속성에 설정할 수 있는 값으로는 '_sefl', '_blank', '_parent', '_top'이 있으며, 링크를 새 창으로 열기 위해서는 '_blank'로 값을 지정해야 하는데요. '..

Programming/Web 2023.02.21

Nginx 이미지 서버 구축 방법(sites-available, sites-enabled)

Nginx 이미지 서버 구축 방법(sites-available, sites-enabled) 먼저 nginx에 대해 간단하게 살펴보면, nginx는 적은 자원으로 높은 성능을 내며, 특히 많은 트래픽이 있을 때, 동시 접속 처리에 특화된 웹 서버 프로그램인데요. Apache 웹 서버가 주로 사용되던 시기에 늘어나는 트래픽으로 인해 'C10K' 문제가 발생하였고, 이를 해결하기 위해 개발되어 2004년 릴리즈 되었습니다. * C10K: 하나의 웹 서버에 1만 개가 넘는 클라이언트의 동시 접속을 처리하지 못하는 문제 비동기, 이벤트 기반의 구조로 설계된 nginx는 다양한 용도로 사용될 수 있는데요. 주로 이미지 또는 HTML 등의 정적 콘텐츠를 제공하기 위한 웹 서버(HTTP Web Server)로 활용되거..

Programming/Web 2023.02.19

JSch를 이용한 java sftp 파일 업로드 구현

com.jcraft.jsch 라이브러리를 이용한 java sftp 파일 업로드 SFTP(Secure File Transfer Protocol)는 SSH(Secure Shell) 기반의 보안 파일 전송 프로토콜인데요. 일반 파일 전송 프로토콜인 FTP(File Transfer Protocol)와는 다르게 파일 전송 시 모든 정보를 암호화하여 통신하며, 때문에 보안상의 문제를 방지하고 안전하게 파일을 전송하고 받을 수 있습니다. (연결이 안전하다는 장점이 있지만 때문에 SSH 키의 유효성 검사 및 관리가 추가적으로 필요합니다.) java에서는 sftp 파일 전송을 위해 JSch 라이브러리가 많이 사용되는데요. 해당 포스팅은 com.jcraft.jsch 라이브러리를 사용한 sftp 접속 및 파일 업로드 구현 ..

Programming/Java 2023.02.18

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

Windows 10 OpenSSH를 사용한 SFTP 서버 설정 방법

OpenSSH를 사용하여 Windows 10에서 SFTP 서버를 설정하는 방법 해당 포스팅은 윈도우10 운영체제에서 자체 기능인 OpenSSH를 사용하여 sftp server를 실행하고 접속하는 방법에 대해서 정리한 내용입니다. 최초 password를 통한 sftp 접속에서부터 공개키 인증을 사용한 접속 방법까지 살펴볼 예정이며, 실제 서버와 클라이언트로 나뉘는 부분을 예시에서는 하나의 계정을 통해 처리하였기 때문에 이 부분을 주의해서 따라와 주시면 좋을 것 같습니다. 1. OpenSSH 설치 먼저 sftp 서버를 작동시키기 위해서 sftp server가 될 곳에서 OpenSS 서버를 설치해야 하는데요. '윈도우 -> 설정 -> 앱'으로 이동합니다. '앱 및 기능 -> 선택적 기능'으로 이동합니다. 선택..

IT Info 2023.02.10

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
반응형