전체 글 160

[JAVA] 객체 지향 언어(Object-Oriented Programming, OOP) 란?

자바는 객체 지향 언어(Object-Oriented Programming, OOP)이다. 객체 지향 언어(Object-Oriented Programming, OOP) 란? 현실 세계의 개체를 프로그램으로 표현하고 이러한 개체 간의 상호 작용을 통해 소프트웨어를 개발하는 방법론. 클래스를 사용하여 데이터와 해당 데이터를 처리하는 메서드를 하나의 단위로 묶고, 이를 통해 모듈화되고 재사용 가능한 소프트웨어를 구축할 수 있다. -절차적 프로그래밍 방식 => 순서대로만 처리하고 결과를 내는 방식 -구조적 프로그래밍 방식 => 프로그램을 함수단위로 나누고 함수끼리 호출하는 방식으로, 큰 문제를 해결하기 위해 문제를 작은 단위들로 나누어 해결한다. (Top-Down 방식) -객체 지향 프로그래밍 방식 => 구조적 ..

[Spring] 첫 실행시 로그인 화면이 뜨는 경우? / Please sign in

스프링 코드를 작성하고 서버를 돌렸는데 계속해서 이런 창이 떴다. 음.. 찾아보니 Provider 가 문제다, 하는데 내 생각엔 firebase Security 쪽 문제같아서 삽질을 또 했다. 그러다가 해결 방법을 발견! main 실행 코드에 @SpringBootApplication에 다음과 같이 exclude속성을 달아주면 끝이다. @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) 정상 작동을 확인.

Backend-dev/Spring 2024.02.05

[Spring] @Autowired 사용법? 스프링 빈 의존성 주입과 @RequiredArgsConstructor

의존성(Dependency)이란? A 클래스에서 b함수를 호출하기 위해서 B함수가 필요할 때, 'A클래스는 B클래스의 의존성을 가진다' 고 한다. 스프링 빈을 등록하고 의존성 주입을 할 때 @Autowired를 쓰면 의존성 주입이 편하다. 이렇게 config 파일에서 빈을 등록해주고, 컨트롤러에서 의존성 주입을 해주려는데 밑줄이 뜨면서 사용을 추천하지 않는다고 떴다. @Autowired의 장점은 매우 편리하다는 것. 단점은 -의존성 불분명성: @Autowired를 사용하면 코드가 어디서든 해당 빈을 주입할 수 있으므로 어떤 클래스가 어떤 빈을 주입하는지 명확히 파악하기 어려움 -코드의 복잡성 증가 등이 있다. 대신 사용할 수 있는 방법으로는 -생성자 주입(Constructor Injection) -Set..

Backend-dev/Spring 2024.02.05

[Spring] Firebase 초기 설정 / 스프링 프로젝트에 admin SDK 추가하기

이번에 새로 들어가게 된 프로젝트에서 소셜 로그인 인증 방식을 사용하기로 했다. 스프링부트 OAuth2 보안 설정을 직접 해주는 방법도 있지만, 다양한 소셜 로그인을 진행해야하므로 Firebase를 이용해보자. 먼저 Firebase 콘솔(https://firebase.google.com/?hl=ko) 에 접속해서 Firebase | Google’s Mobile and Web App Development Platform 개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요. firebase.google.com 구글 로그인 후, 프로젝트 생성-Authentication Sign-in-method-새 제공업체 추가 본인은..

Backend-dev/Spring 2024.02.04

[Linux] 리눅스 서버에 패스워드없이 접속하기 / rsa 암호키 방식 / ssh-keygen

들어가기 전, 필자는 이 게시글을 작성하기 위해 며칠을 삽질을 했다.. 혹시 리눅스 서버를 구성할 때 VMWare를 사용해서 구성한 사람이라면 글의 마지막 쯤을 먼저 읽기를 추천한다. 지난 번 윈도우의 커맨드 환경에서 리눅스 서버에 접속하는 방법으로 SSH 프로토콜을 소개했는데, 접속할 때마다 패스워드를 입력해야 하는 번거로움이 있었다. 또 보안에 취약하고 주기적 변경해야 하는 단점이 있다. ssh-keygen은 SSH 접속을 위한 인증 키를 생성, 관리 및 변환한다. 공개 및 개인 키 쌍을 생성하는 형태로, 쉽게 말해 생성하고 서버에 넘겨주면 서버와 클라이언트가 공유하는 한 쌍의 보안키로 이후 원격 시스템에 안전하고 편리하게 로그인하고 인증할 수 있다는 것이다. 우선, 방법은 간단하다. 커맨드 창에서 ..

Server/Linux 2024.02.03

[Linux] 리눅스에서 윈도우로 파일 전송하기 / 리눅스 scp 명령어 사용법

scp란? Secure Copy Protocol의 약자로, 원격 시스템 간에 파일 및 디렉토리를 안전하게 복사하는 데 사용. 보통 SSH(Secure Shell) 프로토콜을 사용하여 데이터를 전송하므로 데이터 전송이 암호화된다. ssh와 동일한 22번 포트를 사용하므로 password/identity file을 이용해 안전하게 송수신 할 수 있다. 쉽게 말해 다른 OS끼리 파일을 주고 받을 수 있는 명령어다. 1) 로컬 시스템에서 원격 서버로 scp 파일.txt 사용자명@원격서버주소:원격경로/ 2) 원격 서버에서 로컬 시스템으로 scp 사용자명@원격서버주소:원격경로/파일.txt . 3) 원격에서 원격으로 scp [유저명]@[IP주소]:[전송할 파일 경로] [유저명]@[IP주소]:[받을 경로] 복수의 파일..

Server/Linux 2024.01.31

[Linux] 윈도우에서 리눅스 접속하기 / ssh 사용법

프로젝트를 새로 진행하면서 리눅스 환경에 접속할 일이 많아질 것 같아 무거운 가상머신을 이용해 접속하는 방법 대신에 다른 방법을 찾기로 했다. (무거운 서버는 집에서 노는 노트북에 돌리기) 다른 서버에 접속하기 위한 방법으로는 telnet과 ssh 프로토콜이 있는데 보안 접속을 위해 ssh를 이용하자. ▷SSH란? ssh는 Secure Shell의 준말 -네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행, 파일을 복사할 수 있도록 해주는 응용 프로그램이나 프로토콜을 가리킨다. -해당 기능은 클라이언트-서버 모델로 동작한다. client에는 ssh 클라이언트가, server에는 ssh 서버가 설치되어 있어야 한다. ▷ OpenSSH란? -윈도우에서 ssh를 사용할 수 있게 하는 appl..

Server/Linux 2024.01.28

[Linux] 리눅스 yum install 시 failovermethod 오류

CentOS8 환경에서 yum install을 진행하려는데 다음과 같은 오류가 떴다. *failovermethod 해결법 sudo sed -i '/^failovermethod=/d' /etc/yum.repos.d/*.repo 입력하니 이런 오류가 뜬다. 찾아보니 CentOS8의 패키지관리 명령어는 dnf인데 yum과 100% 호환된다고 한다. 즉, yum 대신 dnf를 사용하면 된다는 뜻. 혹시나 하고 sudo dnf install --allowerasing 패키지명 으로 실행하니 바로 설치가 되었다. dnf는 종속성 해결을 위해 기존 설치된 패키지를 삭제하고 종속성이 해결된 패키지를 설치한다. 또한 제거할 패키지가 명시적으로 정의되지 않은 yum swap 명령의 대안으로 사용할 수 있다. 참고하면 좋을..

Server/Linux 2024.01.28

[Git] git branch 사용법 / 명령어 모음

깃헙 저장소를 이용하다보면 주로 bash shell을 많이 쓰게 된다. 누구는 GUI 형태가 편하다고 하지만, 그리고 실제로도 사용이 편할 수도 있지만 오래 오래 사용하게 될거라면 bash에 익숙해지는 게 좋겠다고 생각했다. 근데 문제는 쓸 때마다 헷갈리고 까먹는다는 것. 커밋과 푸시같은 간단한 것은 이제 어느정도 손에 익었는데 여러명이서 같이 프로젝트를 진행하면 branch 사용법에도 익숙할 줄 알아야 한다. 자칫하면 꼬이기 쉽기 때문에 다음과 같이 차근히 진행하자. --git 브랜치(branch) 생성-- $ git branch hansjour master //master 브랜치에서 hansjour라는 브랜치를 생성한다.(분기) --git 브랜치(branch) 삭제-- $ git branch -D h..

DevOps/Git 2023.12.27