본문 바로가기
반응형

분류 전체보기1065

[AWS] : AWS Ec2 Ubuntu Mysql 외부 접속하기 AWS Ec2 Ubuntu Mysql 외부 접속하기 aws에서 인바운드 규칙에 3306을 추가해 준다. sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf bind-address 값을 0.0.0.0으로 바꿔준다. sudo mysql restart mysql 재시작을 해준다. sudo mysql -u root -p 1234 mysql에 접속을 해준다. 1234는 비밀번호이다. grant all privileges on *.* to root@'%'identified by '1234'; 계정에 모든 권한을 부여해준다. 퍼블릭 IP를 복사한다. 퍼블릭 IP는 인스턴스를 중지하거나 재시작하면 변경되므로 추후에는 탄력적 IP를 생성하고 연결해서 사용하면 된다. aws에서 복사해 온 IP를 .. 2022. 1. 6.
[TIL] : 71 일일 배움을 위한 Today I Learned ! Spring Boot 스프링 부트로 컨테이너에 등록된 빈 조회하는 것을 진행했고 여러 조회 방법 중 기본으로 조회하는 방법에 대해 공부했다. 2022.01.05 - [Framework/Spring Boot] - [Spring Boot] : 컨테이너에 등록된 빈 조회하기 2022.01.05 - [Framework/Spring Boot] - [Spring Boot] : Spring Bean 조회 기본 코딩 & 리뷰 스터디 코딩 & 리뷰 스터디 1회차 진행을 완료했다. 너무 좋은 경험이였고 앞으로 8회차가 더 남아 있는데 기대되는 모임이다. 좋은 사람들과 좋은 경험을 쌓을 수 있도록 화이팅한다. 2022.01.05 - [발전소/동아리 및 스터디] - [동아리 .. 2022. 1. 5.
[코딩&리뷰] : 스터디 1회차 스터디 1회차 스터디 1회차를 진행했다. 전에 공부했던 부분을 발표했고 추가로 CRUD를 aws에 연동한 데이터베이스로 진행해 보기로 해서 하고 있었지만 완성을 하진 못 했다. 이어서 완성해야 할 것 같다. 스터디에 나온 쌤들 모두 각자 열심히 준비해 온 것을 발표했다. 발표를 하면서 배우고 발표를 들으면서 배웠다. 4시간을 진행했는데 짧게 느껴졌다. 오늘이 첫 스터디였지만 쌤 한 분이 코로나 밀접 접촉자라고 하셔서 못 나오셨다. 다음 주에도 못 나오신다고 하셨다. 세 명에서 진행했지만 알차게 잘 진행한 것 같아 뿌듯하다. 몇 가지 스터디 규칙도 변경됐다. 우선, 발표 시간이 생각보다 많이 잡아먹었고 생각보다 더 도움이 됐다. 그래서 이것을 좀 줄이기 위해 한 쌤이 의견을 제시했는데 발표 자료를 사전에 .. 2022. 1. 5.
[Spring Boot] : Spring Bean 조회 기본 Spring Bean 조회 기본 이름으로 조회가 가능하다. @Test @DisplayName("구체 타입으로 조회") void findBeanByName2() { MemberService memberService = ac.getBean("memberService", MemberServiceImpl.class);//Imp로 구체적으로 볼 수도 있는데 좋지 않다. assertThat(memberService).isInstanceOf(MemberServiceImpl.class); } 인터페이스가 아니라 구체 타입으로도 조회가 가능하다. 추상화에 의존해야 하므로 이것은 좋은 코드가 아니나 사용해야 할 때가 있을 수 있다. @Test @DisplayName("이름 없이 타입으로만 조회") void findBean.. 2022. 1. 5.
[Spring Boot] : 컨테이너에 등록된 빈 조회하기 컨테이너에 등록된 빈 조회하기 컨테이너에 등록된 모든 빈 조회하기 @Test @DisplayName("모든 빈 출력하기") void findAllBean() { String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("name = " + beanDefinitionName + "Object = " + bean); } } 스프링 내부에서 사용하는 빈과 내가 직접 등록한 빈 모두 포함이 된다. 구분하기 위해서는 Role()를 사용한다. @Test.. 2022. 1. 5.
[TIL] : 70 일일 배움을 위한 Today I Learned ! Spring Boot 스프링 부트를 공부했다. DIP 코드를 리팩터링하기도 했고 제어의 역전에 대해 공부하기도 했다. 라이브러리와 AppConfig에 대해 적었고 스프링에서 사용하는 어노테이션 두 가지에 대해서 정리했다. 2022.01.04 - [Framework/Spring Boot] - [Spring Boot] : DIP 코드를 리팩터링하여 OCP도 만족하게 하기 2022.01.04 - [Framework/Spring Boot] - [Spring Boot] : 제어의 역전 2022.01.04 - [Framework/Spring Boot] - [Spring Boot] : 라이브러리, DI컨테이너, 스프링 2022. 1. 4.
[Spring Boot] : 라이브러리, DI컨테이너, 스프링 라이브러리, DI컨테이너, 스프링 라이브러리 내가 작성한 코드가 직접 제어의 흐름을 담당하면 라이브러리이다. 자바 객체를 직접 xml이나 json으로 바꾼다면 이것은 라이브러리이다. AppConfig 객체를 생성하고 관리하면서 의존관계를 연결해 준다. IoC컨테이너, DI컨테이너, 어셈블러, 오브젝트 팩토리 등으로 불린다. 스프링 @Configuration 은 설정, 구성 정보로 스프링에서 어노테이션을 활용하여 사용할 수 있다. 그 안에는 @Bean 을 사용해 스프링 컨테이너에 스프링 빈으로 등록할 수 있다. 2022. 1. 4.
[Spring Boot] : 제어의 역전 제어의 역전 제어의 역전 예를 들면 JUnit이 있다. 테스트 코드를 작성하면 JUnit에서 로직은 코딩했지만 실행과 제어에 대한 권한은 JUnit이라는 Test Framework이가져가 이것을 대신 실행해 준다. 자신만의 Life Cycle 속에서 규칙을 통해(@BeforeEach를 먼저 실행하고 @Test를 실행한다. 등) 내가 작성한 코드를 Call back식으로 불러지게 된다. 내가 코드만 개발하면 프레임워크에서 딱 필요에 따라 적절하게 호출하는 것, 호출하는 제어권을 넘기는 것을 제어의 역전이라고 한다. 출처 : 스프링 핵심 원리 - 기본편 - 인프런 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%E.. 2022. 1. 4.
[Spring Boot] : DIP 코드를 리팩터링하여 OCP도 만족하게 하기 DIP 코드를 리팩터링하여 OCP도 만족하게 하기 코드 리팩터링 public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } } 이 코드는 객체 안에서 new를 통해 특정 객체를 직접 생성하고 있다. 이러면 문제가 중복이 생긴다. 예를 들면 MemberServiceImpl과 OrderServiceImpl에서 MemoryMemberRepository를 사용하기 위해 각각 위 코드처럼 (new MemoryMemberRepository()); 이렇게 따로 생성해 줘야 하기 때문에 이 자체를 중복이라고 본다. public class AppConfig.. 2022. 1. 4.
[TIL] : 69 일일 배움을 위한 Today I Learned ! Spring Boot DIP 관련 코드를 작성했고 그 중 공부하기 적당한 코드를 따로 빼서 공부했다. 객체 지향 설계 원칙과 테스트 코드, 클린 코드를 적용하면서 프로젝트를 진행하면 진짜 너무 재밌을 것 같다. 2022.01.03 - [Framework/Spring Boot] - [Spring Boot] : DIP 의존 관계 역전 원칙 적용 예시 동아리 및 스터디 이번주부터 시작 될 스터디를 대비해 첫 장을 작성했다. 간단한 스터디 소개와 시작 전 알림을 적어놨다. 2022.01.03 - [발전소/동아리 및 스터디] - [동아리 및 스터디] : [코딩&리뷰] : 소개 2022. 1. 3.
[동아리 및 스터디] : [코딩&리뷰] : 소개 코딩 & 리뷰 스터디 동아리 1기 시작하기 전에.. 방학을 알차게 보내기 위해 스터디를 계획했고 모집을 완료했다. 단순 스터디가 아닌 서로 발전을 꾀하는 스터디를 모집하고 싶었고 개발 스터디는 보통 어떻게 진행되나 찾아보니 모각코(모여서 각자 코딩)나 를 구매해서 같이 듣는 진도를 빼는 스터디로 구성을 많이 하는 것 같았다. 하지만, 나는 조금 더 서로 유의미한 발전을 이뤘으면 좋겠다 생각했고 가깝게 지내되 선은 지키며 스터디가 진행되길 바랬다. 때문에 '~쌤' 호칭을 넣었고 공부는 알려줄 때 더 잘 된다는 생각에 발표를 넣어 스스로 정리한 것을 남에게 알려주는 방법을 넣었다. 그리고 마지막으로 코드 리뷰라는 것을 넣었는데 사실 코드 리뷰는 어떻게 진행 되는지 나는 모른다. 그래도 한 번 해보고 싶어서 .. 2022. 1. 3.
[Spring Boot] : DIP 의존 관계 역전 원칙 적용 예시 DIP 의존 관계 역전 원칙 적용 예시 public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } MemberServiceImpl을 보면 private final MemberRepository memberRepository = new MemoryMemberRepository(); 를 통해 추상화와 구현체를 관리하고 있다. 만약 요구사.. 2022. 1. 3.
[TIL] : 68 일일 배움을 위한 Today I Learned ! 알고리즘 파이썬 알고리즘 코딩 테스트를 준비하며 한 문제를 풀었다. 2022.01.02 - [Algorithm/파이썬 알고리즘 문제풀이 (코딩테스트대비)] - [파이썬 알고리즘 문제풀이] : 사과나무 2022. 1. 2.
[파이썬 알고리즘 문제풀이] : 사과나무 문제 n*n 격자판으로 된 과수원에서 다이아몬드 모양의 격자판만 수확하고 수확한 것의 총 수를 구한다. 주의 풀이 n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] res = 0 s = e = n//2 for i in range(n): # j for문은 e까지 돈다. for j in range(s, e+1): res += a[i][j] if i < n//2: s -= 1 e += 1 else: s += 1 e -= 1 print(res) 2022. 1. 2.
[TIL] : 67 일일 배움을 위한 Today I Learned ! AWS 인프런에서 AWS 강의를 하나 구입해서 그누보드를 활용한 커뮤니티 만들기를 진행했다. 강의를 들은 목적이 프로젝트 배포를 위해서인데 이 강의를 들으면서 생각지도 못 한 AWS의 전반적인 지식에 대해 배울 수 있어서 좋았다. 가지고 있는 자료에서 간단한 설정만 하면서 넘어갔는데 각 설정마다 설명을 붙여주니 알아듣기 편했고 그누보드는 완성시켰다. 따로 그 과정을 담지는 않았지만 AWS의 전반적인 지식에 대해 간단하게 공부했다. 2022.01.01 - [Server & System/AWS] - [AWS] : 리전, 가용 영역, 엣지 네트워크와 AWS 구성 Spring Boot 따로 올리진 않았으나 깃 허브에는 코드를 올려놨다. DIP를 지키기 위해 구현.. 2022. 1. 1.
[AWS] : 리전, 가용 영역, 엣지 네트워크와 AWS 구성 리전, 가용 영역, 엣지 네트워크와 AWS 구성 AWS 리전 AWS는 리전 단위로 배포가 된다. 리전은 데이터 센터를 클러스터링하는 물리적인 위치로 보통 국가 단위로 위치한다. 1개의 리전은 2개 이상의 가용 영역으로 이루어져 있다. 가용 영역 하나 이상의 개별 데이터 센터이다. 가용 영역 끼리는 고속 네트워크로 연결된다. 엣지 네트워크 콘텐츠를 캐싱하는 위치이다. 설명 AWS안에 VPC(가상네트워크)가 있다. VPC안에 서브넷이 생성된다. 서브넷에 라우팅 테이블이 생성이 된다. 네트웍이 어디로 이동될 지 설정해 준다. 라우팅 테이블에 인터넷 게이트 웨이가 연결된다. 인터넷 게이트 웨이가 없다면 VPC 밖으로 나갈 수 없다. 서브넷 안에 EC2를 생성하면 NIC가 생성되고 보안 그룹과 연결이 되어 보안 .. 2022. 1. 1.
[TIL] : 66 일일 배움을 위한 Today I Learned ! Spring Boot 객체 지향 설계 원칙 중 DIP(의존 관계 역전 법칙)에 대해 공부하고 깃에 올렸다. 조금 더 공부해서 스터디 발표 자료로 활용할 예정이다. 알고리즘 오늘도 역시 코딩 테스트를 위해 알고리즘 문제를 풀었다. 그 외 인프런 30% 할인이 오늘까지인 관계로 빨리 들을 강의가 있나 탐색을 해 봤다. 김영한님 강의를 더 구매해서 듣고 싶었지만 지금 듣고 있는 것도 아직 완강을 못 했기 때문에 잠시 보류하고.. 우선 AWS 관련 짧은 강의를 구매했다. 간단하게 배포하는 방법을 설명하는 강의라 저렴하고 짧은 수강 시간을 가지고 있기 때문에 부담 없이 들을 수 있을 것 같다. 2021. 12. 31.
[파이썬 알고리즘 문제풀이] : 격자판 최대합 문제 n * n의 격자판이 주어지면 각 행, 열, 두 대각선의 합 중 가장 큰 합을 출력한다. 주의 풀이 n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] # 전역 변수 largest = -2147000000 for i in range(n): sum1 = sum2 = 0 #sum1은 행, sum2는 열 for j in range(n): sum1 += a[i][j] sum2 += a[j][i] # 가장 큰 경우를 구해야 하니 largest에 큰 값을 계속 갱신해 준다. if sum1 > largest: largest = sum1 if sum2 > largest: largest = sum2 # 대각선 값 구하기 sum1 = su.. 2021. 12. 31.
[파이썬 알고리즘 문제풀이] : 수들의 합 문제 N개 수로 된 수열이 있을 때 i번째 수부터 j번째 수 까지의 합이 주어지는 값과 같은 경우의 수를 구하시오. 주의 풀이 # 입력 받는 변수 n, m = map(int, input().split()) a = list(map(int, input().split())) # 알고리즘 풀이에 사용 될 전역 변수 lt = 0 rt = 1 tot = a[0] cnt = 0 # 알고리즘 로직 while True: # while문에 True값을 줘서 무한 반복문을 완성시킨다. if tot 2021. 12. 31.
[TIL] : 65 일일 배움을 위한 Today I Learned ! 생각정리 생각정리 카테고리의 첫 글을 작성했다. 방학 떄 어떻게 조금 더 잘 남은 시간을 보낼 수 있을까 고민하면서 스터디를 결성하게 되었는데 그에 관한 내용을 작성해 봤다. 2021.12.30 - [발전소/생각정리] - [생각정리] : 알차게 방학을 보내는 방법에 대해서.. 파이썬 알고리즘 문제풀이 파이썬 알고리즘 두 문제를 풀었다. 간단하게 스왑하는 방법도 공부하게 되었다. 2021.12.30 - [Algorithm/파이썬 알고리즘 문제풀이 (코딩테스트대비)] - [파이썬 알고리즘 문제풀이] : 카드 역배치(정올 기출) 2021.12.30 - [Algorithm/파이썬 알고리즘 문제풀이 (코딩테스트대비)] - [파이썬 알고리즘 문제풀이] : 두 리스트.. 2021. 12. 30.
[파이썬 알고리즘 문제풀이] : 두 리스트 합치기 문제 오름차순으로 정렬이 된 리스트가 주어지고 두 리스트를 그대로 합쳐 오름차순이 정렬된 형태로 출력한다. 주의 풀이 n = int(input()) a = list(map(int, input().split())) m = int(input()) b = list(map(int, input().split())) p1 = p2 = 0 c = [] while p1 < n and p2 < m: # 오름 차순으로 정렬하기 위해 하나씩 값을 비교한다. if a[p1] 2021. 12. 30.
반응형