![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vFB9G/btrvAbjjRtu/XjQKKuuKytlohDImdokddK/img.png)
chain of responsibility pattern : 의무 체인, 책임 연쇄 패턴 등등으로도 불린다. 작업 처리 객체의 체인(동작 체인 등)을 만들 때는 의무 체인 패턴을 사용한다. 한 객체가 어떤 작업을 처리한 다음에 다른 객체로 결과를 전달하고, 다른 객체도 해야 할 작업을 처리한 다음에 또 다른 객체로 전달하는 방식. 즉, 서로 다른 작업을 처리할 수 있는 객체를 연결시키고, 처리할 작업이 들어오면, 자신이 처리할 수 있는 일은 수행하고, 다음으로 넘기는 방식이다. 이 패턴을 공부하고 느낀점... 이러한 여러 조건을 따지고, 작업을 처리해야할 경우, 하나의 클래스에 if-else문(조건문)으로 작업을 처리했었다. 그렇기 때문에, 변경사항이 생겼을 경우, 다시 해당 코드를 지우고, 새로 작성하..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bvmgIq/btrtIejeiQF/DFEA6OhWkjJtVjfc5WbL60/img.png)
에러 발생 $ sudo apt update => sh: 1: /usr/lib/cnf-update-db: not found Reading package lists... Done E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi' E: Sub-process returned an error code 에러 나기 전 하던 작업 - python3.9 apt를 이용해 설치 - alternatives를 이용하여 python3 본 글의 에러 발..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dfGzzI/btrtCU6BkIm/2C2toujVSTpv3Wj0VQu5pK/img.png)
ubuntu20.04에서 python 파일을 실행시키는 와중에, PermissionError 가 발생하였다. python 파일 내 코드는 ubuntu 내 디렉토리에 위치한 dataset.csv 파일을 읽는 것이었고, 해당 파일을 접근할 수 없다는 것이다. PermissionError: [Errno 13] Permission denied: [파일/디렉토리 명] 그래서 왜 그런지 확인해보니.... 아래 화면과 같이 dataset.csv 파일이 위치한 디렉토리의 소유그룹과 소유자가 root 로 설정되어 있었다. 그래서 chown 을 이용하여 소유그룹 및 소유자를 변경하였다. 여기서는 root가 아닌 사용자로 변경하였다. #소유그룹 및 소유자 변경 $sudo chown -R [변경할 소유그룹 명]:[변강할 소유..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/1e9u2/btrtCUFetiY/buJjS0wJkikNBVMGVKKnQK/img.png)
1. 소스코드로 python3.9 설치하기 # 필요한 프로그램 받기 $sudo apt update $sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev # python 소스코드 받기 $ wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz # 압축 풀기 $ tar -xf Python-3.9.1.tgz # makefile 생성 $ cd Python-3.9.1 $ ./configure --enable-optimizations $ ma..
Dependency Injection (의존성 주입) "스프링 철저 입문" 책 정리 배경 의존관계를 가지는 컴포넌트들의 결합도를 낮추기 위해 나타남 - 컴포넌트 내에서 직접 의존관계를 가지는 컴포넌트에 대한 인스턴스 생성 public class UserServiceImp implements UserService{ private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; public UserServiceImp(){ //구현체를 직접 생성 this.userRepsitory = new UserImplRepository(); this.passwordEncoder = new BCryptPasswordEnco..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ck97e8/btrs2E2DkQm/1L9FkzRh6p9Nxlo6ssxqT1/img.png)
앞 글에서 기본적인 text 형식의 메일을 보내는 방법을 정리하였다. 2022.02.09 - [토이프로젝트] - [ spring ] send Email 방법 - ( Gmail 서버 이용 ) [ spring ] send Email 방법 - ( Gmail 서버 이용 ) 토이프로젝트하면서 이메일을 전송해야 하는 기능을 구현해야 했다. Google 메일 서버를 이용해서 보내는 방법으로 spring 에서 작성하였다. 아래는 spring 에서 작성한 메일 전송 코드 및 내용들이 tbmaster.tistory.com 본 글에서는 TEXT 형식이 아닌 HTML 형식으로 메일을 전송하는 방법에 대해서 정리한다. 요즘 다른 기업에서 보내는 메일을 받아보면 예쁘게 HTML 형식으로 전송하는 것을 볼 수 있다. 그래서 꾸미는..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dzs7YO/btrsXe3QuLh/iZk1No1xqiPHZGpfv9ImvK/img.png)
토이프로젝트하면서 이메일을 전송해야 하는 기능을 구현해야 했다. Google 메일 서버를 이용해서 보내는 방법으로 spring 에서 작성하였다. 아래는 spring 에서 작성한 메일 전송 코드 및 내용들이다. - Google 메일 서버 이용 - Spring 이용 - text 형식으로 메일 전송 (그 외, template 등을 이용한 메일 전송을 원할 경우 하단 게시글 참고) 2022.02.10 - [토이프로젝트] - [ spring ] send HTML Email 방법 - ( Gmail 서버 이용 ) [ spring ] send HTML Email 방법 - ( Gmail 서버 이용 ) 앞 글에서 기본적인 text 형식의 메일을 보내는 방법을 정리하였다. 2022.02.09 - [토이프로젝트] - [ sp..