ALL Post 204

초간단 Spring Scheduler 적용

Spring Scheduler는 Quartz라이브러리에 비해 사용하기가 매우 쉽습니다. 따로 의존성을 추가할 필요도 없습니다. 3분이면 적용해볼 수 있습니다. Springboot프로젝트 JDK1.8 이상 SchedulerTask @Slf4j @Component public class SchedulerTask { //1초마다 반복 @Scheduled(cron = "0/1 * * * * ?") //@Scheduled(fixedRate = 1000) public void schdulerTest() { log.info("NOW : {} ", LocalDateTime.now()); } } DemoApplication @EnableScheduling //Scheduling 활성화 @SpringBootApplicat..

Spring 2021.03.02

클린코더스 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

CI/CD란?

CI/CD란? CI/CD는 프로젝트 빌드 - 테스트 - 병합 - 배포까지의 전 과정을 말한다. 많은 경우, CI/CD라고 하면 자동화를 포함한 뜻으로 사용한다. CI (Continuous Integration) CI는 지속적인 통합을 말한다. 변경하거나 추가한 소스 코드를 기존의 프로젝트와 통합하여 빌드하고 테스트하는 과정이 지속적인 통합이다. git과 Travis CI/Jenkins같은 툴을 연동하여 CI를 자동화할 수 있다. CI를 자동화했을 때 얻는 이점은 크게 세 가지인 것 같다. 새로운 소스코드가 기존 코드와 충돌을 일으키는지 검증할 수 있기 때문에 신속한 문제 해결 가능. 테스트와 빌드를 자동화함으로써 기계적인 반복을 줄이고 빠른 검증이 가능. 이 과정을 통해 완전한 배포 파일을 만들 수 있다..

infra 2021.02.22

왜 main()는 public static void인가?

왜 main()는 public static void인가? 자바에서 main()는 뭘까? 너무나 당연하게 그 자리에 있어서 이것이 특별한 메서드라는 생각조차 하지 않게 된다. main()는 자바 프로그램의 시작점이다. main()은 다른 메서드와 다르게 그 자리에서 실행해볼 수 있다. 좋다. 그런데 어떻게 이런 일이 가능해지는 걸까? 이름 빼고 선언부가 완전히 같은 다른 메서드를 정의해도 그것을 main()를 거치지 않고 실행하기란 불가능하다. 왜 public인가? 우리는 IDE의 Java Application Run으로 프로그램을 실행하는데 익숙하다. 이는 프로그램을 실행하는 주체가 main()이라고 착각하게 만든다. 하지만 잘 알다시피 프로그램을 실행하는 것은 main()이 아니라 JVM이다. 우리는 ..

Java 2021.02.09

프로세스 스케쥴링

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

Study/운영체제 2021.02.09

유저 모드와 커널 모드

운영체제 구조 사용자 모드와 커널 모드 CPU Protection Rings CPU도 권한 모드를 가지고 있다. 사용자 모드 (User mode) 응용 프로그램이 사용하는 모드. 커널 모드(kernel mode) 특권 명령어 실행과 원하는 작업을 수행하기 위한 자원에 접근 즉, OS가 제공하는 기능을 사용할 수 있게 해주는 권한 모드 커널(kernel)이란? OS 본연의 기능. 운영체제의 핵심 소프트웨어를 커널이라고 한다. 시스템 콜은 커널 모드로 실행 커널 모드에서만 실행 가능한 기능이 있음 커널 모드로 실행하려면 반드시 시스템콜을 거쳐야 한다. 시스템콜은 운영체제가 제공한다. 응용 프로그램이 운영체제의 기능을 사용하려면, 반드시 시스템 콜을 거쳐 커널 모드로 접근해야 한다. 응용 프로그램은 사용자 모..

Study/운영체제 2021.02.08

[Java]Exception

Exception Exception과 RuntimeException 일반 예외와 런타임 예외를 구분하는 데서 시작해야겠다. Exception 반드시 처리해야 하는 예외. 그래서 체크 예외라고 불린다. 이 예외는 처리하지 않으면 컴파일할 수 없어서 컴파일 예외라고도 부른다. 이를 테면 ClassNotFoundException이나 IOException같은 것들이 체크 예외에 속한다. RuntimeException RuntimeException은 Exception을 상속받는 예외 클래스다. 프로그램 실행 중에 발생하는 에러를 런타임 예외라고 부르며 반드시 처리할 필요는 없다. 따라서 언체크 예외라고 부른다. 런타임 예외로는 흔히 볼 수 있는 NullPointerException이 있다. 컴파일하는 데에는 아무..

Java 2021.02.07

운영체제2 - 시스템 콜

응용 프로그램을 도서관에 비유 운영체제를 도서관에 빗대어 볼 수 있다. 운영체제 == 도서관 응용 프로그램 == 시민 하드웨어 == 책 시민은 도서관에 책을 요청하고, 도서관은 요청 받은 책을 대여한다. 시민은 책을 다 읽고 나면 도서관에 책을 반납한다. 이것을 운영체제로 치환하면 이렇다. 응용 프로그램은 운영체제에 필요한 하드웨어 자원을 요청한다. 운영체제는 요청 받은 하드웨어 자원을 응용프로그램에게 할당한다. 응용 프로그램은 할당 받은 자원으로 작업하고, 작업을 종료하면 다시 운영체제에게 하드웨어 자원을 반납한다. 응용 프로그램, 운영체제, 하드웨어의 관계 운영체제는 응용 프로그램이 요청하는 메모리를 허가/분배한다. 운영체제는 응용 프로그램이 요청하는 CPU시간을 제공한다. 운영체제는 응용 프로그래밍..

Study/운영체제 2021.02.07