일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- nestJS
- spring boot
- 스프링
- 알고리즘
- C++
- Nodejs
- 카카오 알고리즘
- OpenCV
- TypeORM
- nestjs typeorm
- Spring
- 프로그래머스
- 컴포넌트스캔
- 카카오
- 시스템호출
- 코딩테스트
- 카카오 코테
- 가상면접사례로배우는대규모시스템설계기초
- python
- 코테
- 파이썬
- C언어
- thymeleaf
- nestjs auth
- AWS
- @Autowired
- @Component
- 구조체배열
- git
- 해시
- Today
- Total
목록# Tech Studies (126)
공부 기록장 💻
AWS 에서 제공하는 Elastic Beanstalk 서비스를 이용하여 Java의 내부 메모리를 이용하여 데이터베이스를 대체한, 간단한 Java Spring Boot 기반 회원 예제 서비스 애플리케이션을 배포해보자. 이 글은 medium에서 작성된 이 기술 블로그 글 을 참고하였다. 우선 배포하고자 하는 Spring Boot 애플리케이션의 application.properties에서 server.port=5000 을 적어주자. (AWS EB 공식 문서 에 의하면, Elastic Beanstalk은 Apache HTTPD를 역방향 프록시를 사용하여 애플리케이션 포트 80의 Elastic Load Balancing 로드 밸런서에 매핑한다. 기본적으로 Elastic Beanstalk은 요청을 포트 5000의 ..
Elastic Beanstalk 이란? AWS에서 제공하는 서비스는 100여개 이상이 있고, 다양한 서비스는 AWㄴ 인프라 관리 방법의 유연성을 제공하고 있지만, 구체적으로 어떤 서비스를 사용해야 하는지, 해당 서비스를 어떻게 프로비저닝하는지 그 방법을 파악하는 것이 까다로울 수 있다. 여기서 프로비저닝(Provisioning) 이란, 사용자의 요구에 맞게 시스템 자원을 미리 준비하여 필요시 바로 사용할 수 있도록 세팅하는 과정을 말한다. Elastic Beanstalk (EB) 은 Java, .Net, PHP, Node.js, Python, Ruby, Go, Docker을 사용하여 Apache Tomcat, Ngnix, Passenger, IIS와 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스..
인프런 - 스프링 핵심 원리 기본편 정리 회원, 주문과 할인 도메인을 설계하고 간단한 구현, 테스트를 해보았다. 고정 할인 정책에서, 새로운 정률 할인 정책이 등장함과 동시에, 객체 지향 원리를 적용하지 못한 기존 설계의 문제점을 파악하고 설계를 변경해 나가자. 그리고 좋은 객체 지향 설계의 원칙인 SOLID 원칙 중, 다음의 3가지 원칙을 적용해 나가는 과정을 이해해보자. 1. DIP (Dependency Injection Principle, 의존 관계 역전 원칙) - 구현체가 아닌 인터페이스에만 의존하도록, 외부에서 의존 관계를 주입하는 역할을 따로 분리하자. 2. OCP (Open-Closed Principle, 개방-폐쇄 원칙) - 클라이언트의 코드를 변경하지 않고, 구현체를 주입하는 외부의 코드..
인프런 - 스프링 핵심 원리 기본편 정리 회원 주문 서비스 예제의 회원 도메인을 설계하고 간단한 구현, 테스트를 해본 것에 이어 주문과 할인 도메인을 설계하여 구현해보자. 주문, 할인 도메인의 비즈니스 요구사항 회원 회원을 가입하고 조회할 수 있다. 회원에는 일반, VIP 두 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP에게는 1,000원을 할인해주는 고정 금액 할인을 적용한다. (나중에 변경 가능성 O) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루는 상황이다. 최악..
psvm IntellJ에서 class를 만들고, main 메서드를 만들 때 매번 public static void main(String[] args) 를 일일히 타자로 치지 않아도, psvm 이라는 키워드를 치면 main 메서드가 단번에 자동 생성된다.
File > Settings > Keymap 으로 들어가 우측 search box에 원하는 기능을 검색하면, 해당 기능 shortcut의 keymap이 우측에 뜬다. 생성자를 만들기 위한 단축키는 Alt + Insert 으로 나타난다. Member 이라는 회원 클래스에서 Alt + Insert를 누르니 다음과 같이 Delegate Method 하고자 하는 여러 메서드들이 나타난다. Consturctor을 선택하면, 생성자를 초기화할 필드들을 선택하기 위한 작은 창이 뜬다. 전체를 선택하여 생성자를 만들어보자. 아래와 같이, id, name, grade 필드에 해당하는 값을 초기화하는 생성자가 자동으로 완성이 된 것을 확인할 수 있다.
IntelliJ IDEA에서 Spring 프로젝트 Gradle 빌드 툴에 새로운 라이브러리가 추가되거나, 의존성, 플러그인 등이 수정되는 경우 우측 Gradle을 클릭하고, 해당 창 좌측에 나타나는 reload 버튼을 꼭 클릭해주어야 한다. 그래야만 라이브러리들의 의존 관계가 전체 프로젝트에 적용된다.
인프런 - 토비의 스프링 부트 (이해와 원리) 참고 및 정리 Spring Boot 를 이용한 간단한 웹 MVC 개발을 해보며, 스프링 부트가 왜 만들어졌으며 스프링 프레임워크와의 차이점이 무엇이고 특징에는 무엇이 있는지 짚고 넘어가야 할 필요를 느껴 "토비의 스프링 부트 - 이해와 원리" 강의 소개 부분을 참고하여 Spring Boot가 정확히 무엇인지 정리해보고자 한다. 스프링 프레임워크란? 스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 간단히 스프링(Spring) 이라 불린다. 동적인 웹 사이트를 개발하기 위해 여러 가지 서비스를 제공하고 있으며, 대한민국 공공 기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준 프레임워크의 기..
인프런 - 스프링 핵심 원리 기본편 정리 이전에 스프링 입문 강의에서 회원 예제를 만들어 본 회원 서비스 예제에서 확장되어, 이번에 학습하게 된 스프링 핵심 원리 강의에서 다루는 회원-주문 서비스 예제의 비즈니스 요구 사항을 정리하고, 간단하게 회원 Domain에 대한 Service를 만들어, Test를 진행해보자. 그리고 스프링의 핵심 원리를 이해해보도록 하자. 가장 먼저 https://start.spring.io/ 에서 Spring Boot 프로젝트를 생성해보자. 아래와 같이 기본적인 프로젝트 설정을 마치고, 메타데이터 또한 입력해주었다. 프로젝트의 식별자 이름은 hello, 이름은 core 이로 설정해주었다. Spring Boot 개발 환경 기본 정보는 다음과 같다. Project: Gradle -..
인프런 - 스프링 핵심 원리 기본편 정리 스프링의 핵심 컨셉은? 객체 지향 언어인 Java 기반의 프레임워크라는 점이다. 즉 객체 지향 언어가 가진 강력한 특징을 잘 살려내 좋은 객체 지향 애플리케이션을 개발할 수 있게 돕는 프레임워크라 할 수 있다. 그렇다면 좋은 객체 지향 프로그래밍이란? 객체들의 모임으로, 각 객체는 서로 메시지를 주고 받고, 데이터를 처리할 수 있다. 프로그램을 유연하고 변경이 용이하게 만든다는 특징을 지닌다. 이를 한 단어로 정의해보자면 다형성(polymorphism) 이다. 세상의 모든 것을 객체로 표현한다면, 객체를 역할(인터페이스)과 구현(클래스)으로 구분함으로써 새로운 기능을 기존 것의 변경 없이 추가를 용이하게 한다. 역할과 구현을 분리하자! 역할과 구현으로 구분하면 세..
프로젝트 배포 실습 전, Windows 컴퓨터에서 AWS EC2 인스턴스 생성을 해보자. 인스턴스 생성 및 구성 정보 설정 인스턴스 시작을 눌러준다. 이제 인스턴스 구성 정보를 설정해보자. 첫 화면은 다음과 같다. 이름 및 태그 추가 태그 추가를 클릭하여 이름과 태그의 키, 값을 다음과 같이 작성해주자. 간단하게 Name, Role의 값들을 입력해주었다. 애플리케이션 및 OS 이미지(Amazone Machine Image) AMI 로는 Windows 를 선택하고, Microsoft Windows Sever 2019 Base (프리티어 사용 가능) 을 선택한다. 인스턴스 유형 인스턴스 유형 으로는 t2.micro (프리티어 사용 가능) 을 선택한다. Key Pair (Login) 새로운 Key pair 을..
1월 초부터 인프런에서 우아한 형제들 개발 이사를 맡고 계시는 '김영한' 님의 스프링 입문 강의를 수강하기 시작하여, 약 2주(실제 7일)동안 학습을 진행하며 드디어 완강을 하게 되었다. 그동안 학습했던 내용을 되짚어보며 간단하게 복습하며 아래에 정리해보고자 한다. 1. 프로젝트 환경 설정 및 생성 을 통해 IntelliJ IDEA와 기본적인 Java SDK 를 설치하고, Spring Boot 프로젝트의 초기 설정을 하여 생성하였다. Gradle 의 의존성 라이브러리들과 디렉터리 구조 살펴보기를 통해 build.gradle에 spring boot 프로젝트 생성 시 추가한 라이브러리와 사용할 테스트 프레임워크, 내장 톰캣 서버와 thymeleaft 템플릿 엔진의 의존성 등을 확인해 보았다. View 환경 ..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 AOP (Aspect Oriented Programming) 이란? AOP란, Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라 불린다. 쉽게 말해 어떤 로직을 기준으로 공통 관심 사항(corss-cutting concern)과 핵심 관심 사항(core concern) 으로 관점을 분리하여 보고, 이 관점을 기준으로 각각 모듈화하는 것을 말한다. AOP가 필요한 상황 아주 간단한 예를 들어, 이전에 작성했던 회원 예제에서 모든 메서드에 대한 호출 시간을 측정하는 시간 측정 로직을 추가한다고 가정해보자. 각 메서드의 시간 측정 로직을 수행하는 코드를 각 컨트롤러의 각 메서드, 서비스의..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC 2. JdbcTemplate 3. JPA 4. Spring Data JPA Spring Boot와 JPA만 사용해도 개발 생산성이 매우 증가하며, 작성해야 할 코드도 확연히 줄어든다. 이제 Spring Data JPA를 사용하게 되면, repository에 구현 클래스 없이 Interface 만으로도 개발을 완료할 수 있다. 반복 개발해온 기본 CRUD 기능도 Spring Data JPA가 모두 제공하므로, 개발자는 핵심 비즈니스 로직을 개발하는데만 집중할 수 있게 된다. 실무에서 관계형 데이터베이스를 사용한다면 spring data jpa는 이제 선택이 아니라..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC 2. JdbcTemplate 3. JPA 4. Spring Data JPA 지금까지 DB에 접근하기 위해 순수 JDBC API를 이용해보았고, 이후에 JDBC에서 중복되는 코드를 상당 부분 제거하여 만든 JdbcTemplate을 사용해보았다. JDBC, JdbcTemplate API 모두 개발자가 프로그램 내에서 sql문을 작성해야 한다는 공통점을 지녔지만, 이번에는 sql문까지 프레임워크 내에서 관리해주는 JPA에 대해 알아보자. JPA란? JPA(Java Persistence API) 는 Spring 내에서 만든 Model의 객체와 DB 테이블의 관계를 매핑..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC 2. JdbcTemplate 3. JPA 4. Spring Data JPA 스프링 내부 메모리에 접근하여 데이터를 저장하는 MemoryMemberRepository, H2 Database에 JDBC API를 통해 접근하는 JdbcMemberRepository까지 작성해보았다. 이번에는 Jdbc API를 통해 SQL문을 실행하기 위한 코드를 일일히 작성하지 않고, 조금 더 간단하게 구현이 가능한 JdbcTemplate을 이용한 DB 접근 방법에 대해 알아보도록 하자. Spring JdbcTemplate 이란? 스프링 JdbcTemplate과 MyBatis는 실무에..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 그동안은 JVM 내에서만 Java Code를 돌리며 단위 테스트를 진행했다면, 이제 스프링 컨테이너와 DB까지 연결한 통합 테스트를 진행해보도록 하자. (그러나, 단위 테스트를 잘 만드는 것이 훨씬 더 좋은 테스트를 만든다는 것임을 잊지 말자!) 우선 연결되어 있는 h2 db의 모든 튜플을 삭제해주고, @SpringBootTest 기존의 MemberServiceTest 전체를 복사하여 MemberServiceIntegrationTest 라는 이름의 테스트 클래스를 만들자. Spring Boot 프레임워크 기반의 테스트 기능을 수행하는 @SpringBootTest 어노테이션을 추가하고, memberService와 me..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 DB 접근 기술 시리즈 정리 1. 순수 JDBC (현재) 2. JdbcTemplate 3. JPA 4. Spring Data JPA 지금까지 스프링에 회원 서비스를 예제로 만들 때, Map 을 이용하여 Java 내부 메모리를 임시 데이터 저장소로 사용하였다. 이제 외부 Database와 연결하여 데이터들을 저장하고 관리하도록 해보자. 우선 가장 간단하게 사용할 수 있는 브라우저 기반의 콘솔 모드를 제공하는 H2 Database에 대해 알아보고, 이를 설치하여 사용해보자. H2 database 란? H2 데이터베이스는 별다른 설치를 요구하지 않으며, 용량이 가벼워 개발용 로컬 DB로 사용하기 좋은 DBMS이다...
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 웹 MVC 개발 이제 회원을 등록(가입)하고 회원의 목록을 조회하는 웹 MVC 프로그램을 작성해보자. 이전에 스프링 부트에서 웹 브라우저가 내장 톰캣 서버를 통해 스프링 컨테이너에 접근하여 웹 페이지를 보는 방법을 다시 복습해보면 다음과 같다. 1. 먼저 controller에서 해당 경로로 매핑된 컨트롤러가 있는지 살펴본다. 2. 1번에서 찾지 못한 경우, static 디렉터리 내의 파일을 검색한다. (이때 경로가 "/" 인 경우는 index.html 파일을 전달) 이제 Home 화면(local 경로 "http://localhost:8080") 에 "회원 가입" 과 "회원 목록" 기능을 동작하도록 하는 링크를 생성하..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 정리 스프링 빈과 의존 관계 스프링에서 Controller가 Service에 접근하고, Service가 Repository 를 통해 데이터베이스 혹은 내부 메모리에 접근하기 위해서는 아래와 같이 스프링 컨테이너에 의해 관리되는 자바 객체인 스프링 빈에 Controller, Service, Repository를 등록해주어야 한다. 참고로, 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때 기본적으로 싱글톤으로 등록한다. (유일하게 하나만 등록해서 공유한다는 의미이다.) 따라서 같은 스프링 빈이면 모두 같은 인스턴스이다. 회원 컨트롤러가 회원 서비스, 그리고 회원 레포지터리를 사용할 수 있게 의존 관계를 준비해보자. 우선 회..