본문 바로가기
[프로그래머스] 로그인 성공? 문제 설명 및 예시 [아이디, 비밀번호]가 담긴 배열 id_pw와 [아이디,비밀번호 배열]을 담고 있는 2차 배열 db를 비교해 입력값에 따라 결과를 반환하는 문제이다. 풀이 문제에서 id_pw 배열은 [아이디,비밀번호] db 2차 배열은 [[아이디,비밀번호],[아이디,비밀번호]] 처럼 고정된 패턴으로 정보를 담기 때문에 이를 활용하면 쉽게 풀이가 가능하다. 1. 입력 정보를 변수로 선언한다. 2. 2차 배열 db에서 for문을 통해 각 배열의 첫 번째 원소는 아이디, 두 번째 원소는 비밀번호로 선언한다. 3. if 조건문으로 inputId - userId , inputPw - userPw 가 모두 일치하는 경우 / 아이디만 일치하는 경우 / 모두 불일치하는 경우에 따른 반환값을 정해준다. 오류 없이 테.. 2023. 10. 13.
Stack (스택) 프로그래머스 사이트에서 문제를 풀다가 Java의 Stack에 대해 알게 되었다. Stack에 대한 기본 설명과 활용 예제를 기록하기 위해 포스트를 작성하려 한다. 스택(Stack) 자료 구조 중 하나로, 데이터를 일렬로 나열한 구조로, 데이터를 저장하거나 꺼낼 때에는 가장 최근에 저장한 데이터부터 차례로 처리한다. 이를 "Last In, First Out (LIFO)"라고 부르는데 Java에서는 java.util.Stack 클래스나 java.util.Deque 인터페이스를 사용하여 스택을 구현할 수 있다. 스택의 주요 메서드 1. push(E item) : 스택에 요소를 추가한다. 가장 최근에 추가한 요소가 스택의 맨 위에 위치함 예시 import java.util.Stack; public class S.. 2023. 10. 11.
[Ubuntu] 애플리케이션 백그라운드 실행하기 NCP로 서버를 생성하고 Ubuntu로 스프링 부트 애플리케이션을 배포한 후, SSH 세션 연결이 끊기거나 로컬 컴퓨터를 종료하면 스프링 부트 서비스가 중단되는 문제가 발생하였다. 나는 배포 후 가상 서버가 운영중이기만 하면 내 로컬 컴퓨터에서 연결이 끊어져도 문제 없을거라 생각했지만, 백그라운드 실행 설정을 추가해줘야 한다는 것을 알게 되었다. Ubuntu 기준으로 어플리케이션을 백그라운드 실행 가능하도록 설정하여 터미널이나 SSH 연결 중단, PC 종료 후에도 서비스가 유지되게 하는 방법에 대해 기록하려 한다. 1.Systemd 서비스로 등록 systemd : 우분투와 다른 많은 리눅스 배포판에서 사용되는 초기화 시스템이다. systemd를 사용하여 스프링 부트 애플리케이션을 부팅 시 자동 실행할 수.. 2023. 9. 22.
[구글 파이어베이스 호스팅(Firebase Hosting)] 프론트엔드 리액트 프로젝트 배포하기 백엔드 스프링 부트 프로젝트 배포에 성공한 나는 프론트엔드 리액트 파일 또한 배포하기로 했다. 내 프로젝트에서 대부분의 기능이 Axios를 활용한 클라이언트 -> 서버 / 요청-응답 구조였기 때문에 리액트 배포 역시 필연적이었고, 이번에는 NCP가 아닌 다른 호스팅 서비스를 이용해보기로 했다. 정적 웹사이트를 무료로 배포할 수 있는 서비스는 꽤 많이 있다. Netlify , Heroku , Vercel , Github Pages 등의 사이트들이 Javasript , React.js 프로젝트를 무료로 배포할 수 있게 서비스하고 있다. (Heroku는 무료 지원이 거의 사라졌다고 한다.) 다만 나는 어떤 이유에서인지 배포과정에서 갖가지 오류가 발생하여 애를 먹었는데, 구글 파이어베이스의 호스팅 서비스로 배포.. 2023. 9. 22.
[네이버 클라우드 플랫폼(NCP)]프로젝트 배포하기 2.서버 접속 후 스프링부트 배포하기 https://hunsolo.tistory.com/55 프로젝트를 배포하기 위해 네이버 클라우드 플랫폼에서 가상 서버를 생성하였다. 본격적으로 배포를 하기 전 Putty와 FileZilla 라는 프로그램을 설치해야 한다. 두 프로그램에 대해 간단히 설명하자면 Putty : 가상 서버에 접속하기 위한 클라이언트 소프트웨어로 데이터를 암호화하고 보안성을 높이는 SSH 프로토콜을 지원하는 프로그램이다. Window 명령프롬프트나 CMDER 처럼 가상 서버에서 터미널의 기능을 할 수 있다. FileZilla : 파일 전송 프로토콜 (FTP), FTPS (FTP Secure), SSH File Transfer Protocol (SFTP)를 지원하는 오픈 소스의 무료 FTP 클라이언트 및 서버 소프트웨어. 컴퓨터와.. 2023. 9. 22.
[네이버 클라우드 플랫폼(NCP)]프로젝트 배포하기 1.서버 생성 열심히 만든 프로젝트를 다른 사람들에게 보여주거나 포트폴리오로 쓰고싶을 때 어떻게 해야할까? 개발할땐 내 컴퓨터(localhost)에서 서버를 켜놓으면 됐지만 항상 컴퓨터를 켜둘 순 없으니 가상 서버를 생성해서 내 프로젝트를 배포해놓으면 언제 어디서나 접속해 서비스를 이용할 수 있을 것이다. 가상 서버를 생성하기 위해서는 AWS , Google Cloud , Oracle Cloud 등을 이용할 수 있는데 대중적이고 사용법을 친절하게 기록해둔 블로그도 많다. 하지만 비용을 지불해야 하는 문제도 있고, 나는 자잘한 오류들 때문에 다른 서비스를 이용해야 했다. 그래서 1년간 무료로 이용이 가능한 네이버 클라우드 플랫폼 (NCP)으로 서버를 생성하고 프로젝트를 배포하기로 했다. 1. 서버를 생성하기 위해 네이버.. 2023. 9. 21.
[MySQL]DBeaver로 다른 테이블 데이터 가져오기 프로젝트 배포 중 개발 Database 테이블을 복사해와야 하는 상황이 발생했다. 나는 DBeaver로 데이터를 관리하는데 직관적이고 사용법이 간단해서 잘 쓰고 있고, DBeaver로 데이터를 간단히 옮기는 방법에 대해 기록하려 한다. 우선 테이블을 복사하는 방법은 너무 간단하다. 복사하고 싶은 데이터베이스의 테이블을 우클릭 후 Ctrl+C, 혹은 복사를 선택한 후 가져올 데이터베이스를 선택해 우클릭 후 Ctrl+V나 붙여넣기를 클릭하면 테이블이 복사된다. 당연히 테이블의 컬럼명,타입,PK 등도 그대로 가져와진다. (외래키는 따로 지정해줘야하는 것 같다.) 이렇게 테이블은 가져와졌는데 문제는 테이블의 데이터까지 복사되지는 않아서 방법을 찾아야 한다. 파일을 추출하거나 터미널 명령어로 가져오는 방법이 있는.. 2023. 9. 15.
[Java] BCryptPasswordEncoder 암호화 오류 원인 및 해결 유저의 비밀번호 변경 기능을 구현하던 중, 암호화와 관련된 오류의 원인과 해결 과정을 기록하려고 한다. 우선 리액트에서 axios로 유저의 아이디,기존 비밀번호,변경할 비밀번호를 전달 받은 후 유저 테이블에 저장된 비밀번호와 입력받은 비밀번호를 비교해 일치할 경우, 변경할 비밀번호로 업데이트하려고 계획을 세웠다. 여기서 주의해야 할 점은 비밀번호가 테이블에 저장될 때 BCryptPasswordEncoder로 암호화되었기 때문에 유저가 전달한 기존 비밀번호를 그냥 비교하는 것이 아니라 BCryptPasswordEncoder를 이용해 암호화해야 한다는 것이었다. 위처럼 메소드를 만들어 호출했더니 비밀번호 불일치가 콘솔에 찍혔다. 사용자가 전달한 기존 비밀번호 값이 암호화되어 저장되었으니 비교할 때도 암호화 .. 2023. 9. 6.
[Java] JavaMailSender 이메일 한글 인식 오류 원인 및 해결 SMTP 인증과 Google 계정 보안 문제도 해결 후 이메일 발송이 정상적으로 처리되는 것을 확인했다. 그런데.. 메일을 확인했더니 또 한번 오류에 부딪히고 말았다. 제목은 잘 전달되었는데, 메일의 내용 중 한글 부분만 제대로 인식을 못하는 문제였다. 아이디 찾기 결과 {{userName}} 님의 SFDB 아이디는 '{{userId}}' 입니다. 메일 내용을 전달하는 html 파일의 일부인데 딱 한글 부분만 인식을 못하고 있었다. 처음에는 인코딩 문제이겠거니 싶어 태그에 'UTF-8'을 작성해보기도 하고, 스프링부트 설정도 다시 확인해봤지만 어떻게 해도 인코딩이 되지 않아 문제가 반복되었다. 라이브러리 문제인가 싶어 freemarker를 thymeleaf로 수정해보았는데도 오류는 여전했다. 차근차근 되.. 2023. 8. 31.