본문 바로가기

전체 글

(37)
[Design Pattern] 템플릿 메서드 패턴(Template Method Pattern) 템플릿 메서드 패턴(Template Method Pattern) 은 소프트웨어 공학에서 동작 상의 알고리즘의 프로그램 뼈대를 정의하는 행위 디자인 패턴이다. 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계들을 다시 정의할 수 있게 해준다. 상위 클래스 쪽에 템플릿에 해당하는 메서드가 정의되어 있고, 그 메서드의 정의 안에는 추상 메서드가 사용되고 있다. 추상 메서드를 실제로 구현하는 것은 하위 클래스이며, 하위 클래스에서 메서드를 구현하면 구체적인 처리가 결정된다. 그러나 어떤 하위 클래스에서 어떤 구현을 하더라도 처리의 큰 흐름은 상위 클래스에서 결정한대로 이루어지게 된다. 이와 같이 상위 클래스에서 처리의 뼈대를 결정하고, 하위 클래스에서 그 구체적인 내용을 결정하는 디자인 패턴을 템플릿 메서드..
[Python] 변수(variable)와 Python 자료형(data type) 변수란 숫자, 문자 때로는 여러 개의 데이터와 같은 값들을 저장하기 위해 프로그램에 의해 이름을 할당받은 공간을 의미한다. 즉, 변수란 데이터(data)를 저장할 수 있는 메모리 공간을 의미한다. 변수는 프로그램 내에서 중복된 이름을 사용할 수 없으며, 선언된 변수에 저장된 값은 변경될 수 있다. C나 Java 등의 프로그래밍 언어에서는 변수를 생성하면 어떤 데이터 형식(숫자, 문자, 문자열 등)을 입력할지 선언해야 하지만 Python은 단순하게 이름을 하나 선언하는 것으로 변수 생성이 완료된다. Java 코드를 먼저 살펴보자. 12345678910111213141516171819package com.acma.data.structure; import org.junit.Test; import lombok...
[Python] "hello World" 문자열을 Terminal에 출력하기(입문) 윈도우 환경의 cmd 창을 이용하여 문자열을 출력하는 방법도 있지만 앞에서 설치한 "Visual Studio Code"를 이용하여 문자열을 출력해보도록 하겠다. Visual Studio Code에는 Java의 Console 창과 비슷한 기능(로그 출력과 같은..)을 수행하는 "Terminal" 창이 존재한다. 앞서 생성한 hello.py 파일에 소스코드를 작성하여 Visual Studio Code의 Terminal창에 문자열 출력해 보자. 1. 소스코드 작성 후 py 파일을 실행한다. 2. py 파일이 존재하는 경로로 실행 경로를 수정 후 py 파일을 실행한다. 3. 소스코드 창에서 마우스 우클릭 후 "Run Python File in Terminal"을 클릭하여 실행한다.
[Python] Visual Studio Code 를 이용하여 Python 시작하기 1. Visual Studio Code를 실행한 후 "Open Folder"를 클릭하여 python 연습을 할 디렉토리를 연결한다. 2. 선택한 폴더가 Visual Studio Code 왼쪽 상단 "EXPLORER" 창에 노출된다. 3. (선택사항) "New Folder" 버튼을 클릭하여 새로운 폴더를 생성하여 "세부사항" 별로 python 파일을 관리할 수 있도록 한다. 4. 생성한 하위폴더를 선택 후 "New File" 버튼을 클릭하여 python File을 생성하거나 마우스 우클릭을 통해 파일을 생성한다. 5. 파일명과 확장자명을 적은 후 파일을 생성한다. 6. python 개발을 시작할 python 파일이 생성됨을 확인할 수 있다. # 생성된 hello.py 파일에 소스코드를 작성하여 실행해보도록..
[MySQL] 시간/기간 더하기, 빼기 함수 1. DATE_ADD 시간/기간 더하기 함수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 SELECT NOW() AS NOW, DATE_ADD(NOW(), INTERVAL 1 SECOND) AS NOW_SECOND, DATE_ADD(NOW(), INTERVAL 1 MINUTE) AS NOW_MINUTE, DATE_ADD(NOW(), INTERVAL 1 HOUR) AS NOW_HOUR, DATE_ADD(NOW(), INTERVAL 1 DAY) AS NOW_DAY, DATE_ADD(NOW(), INTERVAL 1 MONTH) AS NOW_MONTH, DATE_ADD(NOW(), INTERVAL 1 YEAR) AS NOW_YEAR UNION SELECT NOW() AS NOW, DATE_A..
[Spring] 배치, 스케쥴러 사용 : Quartz 프로젝트에서 매번 등장하는 배치와 스케쥴러, 이를 구현하기 위한 다양한 방법이 존재하지만 자바 스케쥴러 개발에 사용하는 오픈소스 라이브러리인 Quartz Scheduler를 이용하는 방법을 알아보도록 하자. 배치 프로그램에 대한 자세한 정보는 아래 블로그 참조! https://limkydev.tistory.com/140 1. Maven Dependency maven 환경에서 외부 라이브러리를 사용하기 위해서 pom.xml 에 Quartz Library를 dependency 한다. 1 2 3 4 5 6 7 8 9 10 11 12 org.quartz-scheduler quartz org.quartz-scheduler quartz-jobs Colored by Color Scripter cs 2. Job Cod..
[JAVA] 특정 폴더 내 모든 파일 삭제 및 폴더 삭제 JAVA 및 Web 프로젝트에서는 임시폴더와 같은 특정 경로의 폴더를 삭제해야하는 경우가 있습니다. 만약 이 폴더 내에 파일이 존재하지 않는다면 문제 없이 바로 해당 폴더를 삭제할 수 있지만 파일이 존재할 경우 먼저 폴더 내의 파일을 모두 삭제해주어야 폴더를 삭제할 수 있습니다. 간단한 코드로 폴더를 삭제하는 방법을 알아보도록 하겠습니다. 다음과 같이 "delete" 라는 이름의 directory를 삭제하려고 하는데 하위폴더1, 하위폴더2 그리고 하위폴더2 안에는 파일들이 존재하고 있습니다. 이때 아래와 같이 폴더를 삭제하면 어떻게 될까요? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package com.acma.document; import j..
[JAVA] 비슷한 이름의 특정 파일 모두 지우기 자바 프로그램에서 File 삭제 관련 개발을 진행하는 경우가 있을 것이다. 이때 특정 경로에 특정 이름의 파일이 1개만 존재한다면 "디렉토리냐? 파일이냐?" 이 두가지의 경우의 수만 가지고 파일을 쉽게 삭제할 수 있다. 하지만 일반적으로 이미지 파일의 경우 파일의 크기가 큰 원본 파일보다는 Thumnail 이미지로 여러장을 만들어서 저장하는 경우가 있다. 만약 여러장의 Thumnail 이미지를 "A_01, A_02, A_03" 처럼 저장을 해놓을 경우 아래와 같은 방법으로 삭제하도록 한다. (# 보통 DB에는 Thumnail 이미지의 대표 이름인 "A"만 저장하는 경우가 많다.) 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 2..