Study 53

[스프링 인 액션] #2 WebConfig로 뷰 컨트롤러 설정하기

HomeController처럼 모델 데이터나 사용자 입력을 처리하지 않고 뷰만 전달하는 컨트롤러를 뷰 컨트롤러라고 한다. 이런 경우 별도로 컨트롤러를 만들지 않더라도 WebConfig설정만으로 처리할 수 있다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 이 클래스를 아래와 같이 바꿀 수 있다. @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.add..

Study 2021.03.13

[스프링 인 액션] #2 웹 애플리케이션 개발하기

목표 MVC구조로 데이터베이스와 연결하지 않은 매우 간단한 웹 어플리케이션 개발해보기 요구사항 타코 재료를 선택해서 자신만의 타코를 만들 수 있다. 완성한 타코를 주문할 수 있다. 단계 도메인 설정 도메인이란, 애플리케이션 이해에 필요한 개념을 다루는 영역이다. 컨트롤러 작성 컨트롤러는 요청에 알맞은 작업을 처리하고 절절한 view를 반환한다. 뷰란 HTML을 말하고 타임리프 같은 템플릿을 이용하여 원하는 데이터를 넣어 줄 수 있다. 유효성 검사 클라이언트가 폼 데이터를 올바르게 작성했는지 유효성을 검사한다. 2번까지는 매우 쉬운 내용이어서 생략하고, 3번을 간단하게 정리한다. 스프링은 빈 유효성 검사(Bean Validation) API를 제공한다. 애플리케이션에 if/else를 덕지덕지 붙여 검사하지..

Study 2021.03.13

[스프링 인 액션] #1 스프링 애플리케이션 작성하기

스프링이란? 스프링은 애플리케이션 컨텍스트라는 컨테이너를 제공한다. 이것은 애플리케이션 컴포넌트(빈)를 생성하고 관리한다. 컴포넌트 또는 빈은 스프링 애플리케이션 컨텍스트 내부에서 서로 연결되어 완전한 애플리케이션을 만든다. 벽돌, 모르타르, 목재, 못, 배관, 배선이 어우러져 집을 구성하는 것과 비슷하다. 빈의 상호 연결은 의존성 주입(Dependency Injection, DI)이라고 알려진 패턴을 기반으로 수행된다. 애플리케이션 컴포넌트에서 의존(사용)하는 다른 빈의 생성과 관리를 자체적으로 하는 대신 별도의 컨테이너가 한다. 이 컨테이너는 모든 컴포넌트를 생성하고 관리하고 그 컴포넌트를 필요로 하는 컴포넌트에게 주입(연결)한다. 애플리케이션 부트스트랩 Springboot는 JAR파일에서 애플리케이..

Study 2021.03.12

프로세스 스케쥴링 #2 멀티 프로그래밍

프로세스 스케쥴링 멀티 프로그래밍 멀티 프로그래밍의 목적 최대한 CPU를 많이 활용하도록 하는 시스템 시간 대비 CPU활용도를 높이자 애플리케이션을 짧은 시간 안에 실행 완료한다 멀티 프로그래밍 애플리케이션이 온전히 CPU를 쓰기보다 다른 작업을 중간에 필요로 하는 경우가 있다. 단순한 예를 들자면, 애플리케이션이 실행되다가 파일(저장 매체)을 읽는다거나 프린팅을 해야 한다고 했을 때 그동안 아무 일도 할 수 없도록 설계되어 있다면? 만약 어떤 애플리케이션을 실행하는데 걸리는 시간이 10초라고 해보자. 이 애플리케이션은 A와 B라는 작업을 하는데, 각각 3초씩 걸린다. 그런데 A를 실행할 때 파일을 읽는 작업이 추가로 실행되는데 그 시간이 4초다. 이 애플리케이션이 CPU를 점유하는 시간은 총 10초지만..

Study/운영체제 2021.03.10

#1 생성자 대신 정적 팩터리 메서드를 고려하라

Item #1 생성자 대신 정적 팩터리 메서드(static factory method)를 고려하라. 1. 이름을 가질 수 있다 생성자만으로 객체의 특성을 설명할 수 없다. 이름을 지을 수 있다면 객체의 특성을 좀 더 구체적으로 묘사할 수 있다. BigInteger(int, int, Random) 보다 BigInteger.probablePrime 이 더 좋은 이름이다. 2.호출될 때마다 인스턴스를 생성하지 않아도 된다 불변 클래스는 인스턴스를 미리 만들어 두거나 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있다. 생성 비용이 큰 객체라면 성능을 끌어올릴 수 있다. 반복되는 요청에 같은 인스턴스를 반환하는 식으로 정적 팩터리 방식은 언제 어느 인스턴스를 살아있게 할 것인지..

클린코더스 5강 Function Structure #1

💡백명석 님의 클린 코더스 강의를 듣고 요약한 자료입니다. 목차 1, 2강 OOP 3, 4강 Function 5강 Function Structure 6강 Form Arguments 몇 개의 인자를 받을 것인가? 인자가 많아지면 함수의 복잡도가 증가한다. 인자의 개수는 많지 않은 것이 좋다. 3개를 넘지 않는 것을 권장한다. 특히 생성자에 인자가 많으면 실수할 확률이 매우 높아진다. 차라리 Java Bean의 setter를 방식으로 객체를 초기화하는 게 낫다. 하지만 setter로 객체를 초기화하는 동안 그 객체는 매우 불안정한 상태라는 단점이 있다. setter보다 Builder패턴이 더 나은 선택일 수 있다. Builder패턴에서 Builder를 생성할 때 필수 인자를 받고 나머지는 빌더로 채울 수 있..

클린코더스 2강 - Function

💡백명석 님의 클린 코더스 강의를 듣고 요약한 자료입니다. 목차 1, 2강 OOP 3, 4강 Function 5강 Function Structure 6강 Form Function 함수는 한 가지 일만 해야 한다. 한 가지 일만 하는 함수를 만들기 위해서는 indentation, while, mested, if등이 없어야 한다. 잘 지어진 서술적인 긴 이름을 갖는 많은/작은 함수들로 유지해야 한다. The First Rule of Functions 함수는 더 이상 작을 수 없을 만큼 작아야 한다. 따라서 큰 함수를 보면 클래스로 추출할 생각을 해야 한다. 블록이 적어야 한다.--> 이 말은 블록 안의 또다른 블록은 계속 함수로 추출해야 한다는 뜻. if-else, while등 내부 블록은 한 줄이어야 한다..

클린 코더스 1, 2강 - OOP

💡백명석 님의 클린 코더스 강의를 듣고 요약한 자료입니다. 목차 1, 2강 OOP 3, 4강 Function 5강 Function Structure 6강 Form Why Clean Code 소프트웨어는 한 번 작성되면 최소 10번 이상 읽힌다고 한다. 내가 작성한 코드도 2주만 지나면 까먹기가 일쑤다. 실제 업무에서는 내 코드를 나만 보는 것도 아니다. 내가 아닌 누군가가 내 코드를 읽어야 할 수도 있다. 그래서 '돌아만 가는 코드' 말고 '읽기 쉬운 코드'를 작성해야 한다. 절차지향과 객체지향 절차지향은 프로시저가 같은 데이터에 의존하고, 프로시저가 프로시저를 의존하는 형태다. 이런 구조이기 처음엔 쉽게 만들 수 있지만 시간이 지날수록 수정이 어렵다. 그렇다면 객체지향적인 ..

객체지향 프로그래밍이란?

객체지향 프로그래밍이란 무엇인가? 서론 객체는 현실 세계로 비유하자면 우리가 보고 느끼고 듣는 것 모든 것이 객체가 될 수 있습니다. 지금 이 글을 쓰고 있는 키보드도 하나의 객체로 볼 수 있습니다. 더 섬세하게 들어가서, 키보드를 감싸고 있는 키캡 하나하나가 모두 객체라고 할 수도 있습니다. 여기서 객체를 지향한다는 것이 무엇인지 힌트를 얻을 수 있습니다. 키캡 하나도 객체가 될 수 있다고 했습니다. 그런데 만약 내가 '키보드'라는 단어를 입력하고 싶은데 'ㅣ'를 가리키는 단 하나의 키캡만 존재한다면 어떨까요? 'ㅣ'은 키보드라는 글자를 완성하는데 필요한 요소지만, 그 자체만으로는 아무 의미가 없습니다. 'ㅋ', 'ㅂ', '..

Study 2021.02.27

프로세스 스케쥴링

프로세스 스케쥴링 배치 처리 시스템, 시분할 시스템, 멀티 태스킹 배치 처리 시스템 배치 처리 시스템은 순차적으로 애플리케이션을 실행하는 방법이다. 이 방식은 큐 Queue와 비슷하다. 배치 처리 역시 큐와 같이 먼저 등록한 애플리케이션을 먼저 실행하는 FIFO(First In First Out) 구조다. 장점 배치 처리 시스템은 여러 프로그램을 순차적으로 실행시키기 위한 요구사항을 달성하기 위해 만들어졌다. 실행해야 하는 프로그램을 등록해두면 배치 처리 시스템이 순차적으로 실행하기 때문에 매번 직접 프로그램을 실행하지 않아도 된다는 장점이 있다. 단점 애플리케이션을 순차적으로 실행한다. 애플리케이션B의 실행 시간이 1분이어도 12시간짜리 애플리케이션 뒤에 등록하면 실행하는데 12시간 1분 뒤에나 결과를..

Study/운영체제 2021.02.09