전체 글 148

[git] commit 하나로 합치기

대충 쓴 커밋이나 여러 커밋을 하나의 커밋으로 만들기 여러 커밋을 하나의 커밋으로 만드는데는 2가지 방법이 있습니다. 1. rebase 활용 우선 git log 로 몇개의 로그를 합찰지를 정합니다.그 후 로그의 개수만큼 rebase -i 명령을 합니다.git rebase -i HEAD~2 위 처럼 입력을 하게 되면   아래와 같은 화면이 나오게 됩니다.이때 합칠 commit 은 pick 대신에 s 로 변경합니다. 그후 저장을 하게 되면 합쳐지게 됩니다. 깃헙에 푸쉬 하기 위해서는  git push -f 활용

카테고리 없음 2024.08.22

postgresql 접속이 안됨

어느날 postgre server를 실행하려고 하는데 아래와 같은 error 가 발생하였다. Bootstrap failed: 5: Input/output error Try re-running the command as root for richer errors. Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/user/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist` exited with 5. 위의 메세지의 의미는 postgre가 제어되는 파일 homebrew.mxcl.postgresql@14.plist에 문제가 생겼다는 의미인거 같아 해당 파일을 열어 보았다. http://..

카테고리 없음 2024.05.27

[Troubleshooting] mongo atlas deployment with spring boot application

현재 배포 상황은 spring application을 github action 에서 .jar 파일로 빌드 한 후에 이를 docker hub에 올리고 ec2에서 pull 받아서 그 이미지를 run 하는 형태로 deploy 가 작동하도록 되어있습니다.  이때 mongo 설정을 해서 deploy를 했는데, 이때에 mongo 연결시에 찾지 못해서 timeout이 나며 error가 나는 경우가 발생했습니다. 1. 원인 찾기mongodb 연결의 실패의 원인을 생각해보았습니다.      1-1. network access error        - 이를 위해서 network access를 모두 열었습니다.  모든 주소를 허용하였는데도 error 가 발생했습니다.     1-2 mongo 설정파일을 두개를 쓰고 있어서..

카테고리 없음 2024.05.03

[모각코] IOC container

## IOC container ioc container 란?? 보통 컨테이너란 생명주기를 관리, 인스턴스들에게 기능을 제공해 줍니다. IOC container에서 객체를 생성, 관리, 의존성을 관리해 줍니다. 인스턴스 생성 부터 소멸까지 관리합니다 **인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해줍니다.** **객체관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있는 장점이 있습니다.** - IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다. - POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다. - 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다. - 개발자는 비즈니스 로직에 집중할 수 ..

카테고리 없음 2024.04.19

[모각코] 디자인 패턴

### 디자인 패턴 디자인 패턴은 레시피 4대 원칙은 요리 도구 5대 규칙은 도구 사용법이다. --- ### 어댑터 패턴 변환기 서로 연결될 수 없는 두 부분을 연결해 줍니다.\ 이는 위의 OCP를 적용 할 때에 사용합니다. ( 확장에는 열려 있지만, 변경은 닫혀있는 ) ex) jdbc 이는 호출당하는 ㄷ쪽의 메서드를 호출하는 쪽에 맞게 대응하기 위해서 중간자를 두는 것입니다. --- ### 프록시 패턴 대신하여 역할을 수행합니다. 프록시 패턴의 경우는 실제 서비스가 가진 메서드와 같은 이름의 메서드를 사용한다. 이때에 인터페이스를 활용하여 인터페이스를 호출 하여 메서드를 실행하여 인터페이스를 implement 하면 override 된다 이 또한 OCP 와 DIP를 지킨것이다. --- ### 데코레이터 ..

카테고리 없음 2024.04.12

[모각코] 자바가 확장한 객체 지향

## java 가 확장한 객체 지향 ### abstract 키워드 abstract에는 추상 메서드를 포함 할 수 있는데, 이는 오버라이딩을 강제한다. 추상 클래스는 new를 할 수 없다. 추상 클래스를 사용하는 이유는 추상 메서드, 선언만 하고 구현은 하지 않을때의 경우가 필료하기 때문이다 . 생성자를 생성하지 않으면 기본 생성자를 만들어 주지만, 하나라도 만들면 기본 생성자는 제공하지 않는다. 맨 처음에 static 영역에 class 를 할당할 때에 사용하지 않는 class 는 할당하지 않는다. class 를 할당하는 시점은 맨 처음 사용될때 이다. class 를 사용하는 예는 클래스의 정적 멤버나 메소드를 사용하거나, 인스턴스를 생성할 때이다. 이런 class의 static 블럭은 딱 한번 맨처음 할..

spring 2024.03.29

AWS RDS 접속

aws 의 rds 접속에 있어서 오늘 삽질한 내용을 써보겠다. aws에 대한 확실한 지식이 없이 블로그 보면서 설정을 따라하다 보니 확실히 error가 대응이 안되는것 같다. 오늘의 error는 rds 생성후에 내 로컬에서 rds에 접속하려 했는데, 포트를 열어주었음에도 불구하고 connect error 가 발생하였습니다. 이때 블로그를 보고 설정을 하며 소스를 ec2의 기존 보안 그룹을 선택하였고 해당 보안 그룹에 모든 접귾을 허용했기 때문에 접속이 가능 할 것이라고 생각했습니다. 하지만, 소스는 rds에 접근하는 주소로 해당 ec2의 주소가 됩니다. 따라서 내 로컬에서 접근하려 할 때 접근이 불가했던 것이었습니다. 따라서 내로컬에서 직접 접근하기 위해 rds 보안 그룹 편집에서 직접 모든 퍼블릭을 허..

aws 2024.03.29

[ 모각코 ] 소프트웨어 아키텍쳐

프로그래밍 패러다임 구조적 - goto 문을 제거 하여 객체지향 - 함수 호출 스택 프레임을 힙으로 옮겨서 함수에서 선언된 지역변수를 유지하기 위한 방법을 고안하여 처음 나왔다. ( 클래스를 뜻함 ) 함수형 - 할당문이 없고 값의 변경을 권장하지 않으며 람다 계산법을 적극적으로 활용합니다. --- ### 구조적 프로그래밍 - 구조적 프로그래밍은 프로그램을 세부 기능으로 분해하여 이를 증명한다. - 반증 가능한 단위로 쪼개어 반증이 불가능하 만큼 참이라는 것을 입증하는데에 있어 의미가 있고 - 기능적 분해 - --- ### 객체 지향 프로그래밍 객체 지향 프로그래밍의 특징, 개념 캡슐화, 상속, 다형성 - 캡슐화 : 캡슐화란 구분선 바깥쪽에서는 은닉되고, 일부 함수만이 노출된다. 과거의 캡슐화에서는 헤더와..

spring 2024.03.22

spring boot, github action, docker 를 이용한 배포 자동화 (2)

배포 진행중 발생한 error 1. 우선 application.yml을 분리후 build 시 test에서 error가 발생하였는데, 이는 분리후 context를 찾지 못해서 였기 때문에 build시 test를 건너 뛰도록 CI 에서 -x test 옵션을 추가해주었습니다. - name: Build with Gradle Wrapper run: ./gradlew build -x test 2. docker script 실행시 err: permission denied while trying to connect to the Docker daemon socket error 가 발생 하였습니다. 이는 Docker를 실행하는 사용자가 Docker 소켓에 대한 권한이 없을 때 발생합니다. 따라서 sudo chmod 666..

aws 2024.03.20

spring boot, github action, docker 를 이용한 배포 자동화 (1)

캡스톤 디자인을 진행하는 와중에 배포 주기를 짧게 만들어 제품을 쌓아 올리는게 좋을것 같다는 의견이 나와 배포 파이프라인을 미리 구축한 후 진행하게 되었습니다. 따라서 초반에 만든 유저 까지의 스프링 서버를 aws ec2에 자동 배포를 하도록 설정 하였습니다. 배포 자동화 구축시 고민 배포 자동화 구축을 하는데에 있어 우선 무엇을 사용할지 고민을 하였는데 우선 CI tool 에서 jenkins, github action, travis ci 에서 고민 하였습니다. 이때 github action을 채택하였는데, 이유는 우선 github에서 제공하기에 다루기에 편리했고 jenkins의 경우 서버를 하나 더 올려야 했기 때문에 금액적으로도 생각을 하여 github action을 채택하였습니다. 배포 아키택쳐의 ..

aws 2024.03.20