함수형 인터페이스는 추상메서드가 하나만 있는 인터페이스 이다. 자바에서는 이 함수형 인터페이스를 여러개 제공하는데 대표적인 함수형 인터페이스들을 사용해보자 Function Function은 자바에서 제공하는 함수형 인터페이스 이다. T타입을 받아서 R타입을 리턴한다. 만약 이면 Integer 형 매개변수를 받아서 Integer형을 반환한다는 뜻이다. 람다식을 사용하지 않고 사용하려면 클래스에서 Function을 상속받아 사용해야 한다. //Function T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스 public class Plus10 implements Function { @Override public Integer apply(Integer integer) { return integer + 10..
함수형 인터페이스 정의 //추상메서드가 하나만 있으면 함수형 인터페이스다. //@FunctionalInterface 애노테이션을 붙여서 함수형 인터페이스를 정의 할 수 있다. public interface RunSomethinig { //인터페이스는 필드 앞에 abstract 생략 가능 void doIt(); //void doAgain(); @FuctionalInterface 애노테이션이 있으면 에러 발생 //다른 형태의 메서드가 있어도 함수형 인터페이스 이다. static void printName() { System.out.println("kang"); } default void printAge() { System.out.println("31"); } } 함수형 인터페이스는 추상메서드가 하나만 있는 ..
DevTools는 코드가 변경될 때 자동으로 애플리케이션을 다시 시작시킨다. 즉, 소스를 변경할때 마다 프로젝트를 중지시키고 다시 시작 시킬 필요가 없다는 뜻이다. 인텔리제이(IntelliJ) 에서 사용방법 DevTools를 처음 스프링부트 프로젝트를 만들면서의존성을 지정할때 Spring Boot DevTools를 선택하면 아래처럼 pom.xml파일의 요소에 지정되어 있다. Preferences - Advanced Settings - Compiler에서 Allow auto-make to start even if developed application is currently running을 체크해준다. Perference에서 Compiler를 검색후 Compiler 설정창에서 Build project ..
스트림 정의 자바에서 데이터를 외부에서 읽고 다시 외부로 출력하는 작업을 할때 이 데이터는 스트림(Stream)을 통해 입출력된다. 스트림은 단일방향으로 연속적으로 흘러가는 것으로 수도꼭지를 생각하면 된다. 물은 계속 흘러나오는데 수도꼭지를 잠그면 물이 안나오고 풀면 물이 나온다. 스트림은 InputStream(입력 스트림), OutputStream(출력 스트림)이 있는데 프로그램이 데이터를 입력받을때는 InputStream, 보낼때에는 OutputStream 이다. 스트림의 특성이 단방향이여서 입력과 출력을 모두 할 수 없어 스트림이 입력, 출력 따로 있는것이다. 스트림 클래스는 크게 두 종류로 구분되는데 하나는 바이트(byte) 기반, 하나는 문자(character) 기반이다. 바이트 기반은 그림, ..
테스트케이스 개발한 기능이 정상적으로 돌아가는지 테스트하려고 할때 main 메서드를 통해 웹을 접속하여 화면에서 직접 테스트 하는 경우가 일반적이였다. 이 방법은 준비하고 실행하는데 오래걸리고 무엇보다도 반복적으로 테스트 하기가 어렵다. 하지만 스프링부트에서는 코드로 테스트 할수가 있다. 이 코드를 테스트케이스라고 한다. 또 TDD방식이라고 해서 테스트코드를 먼저 작성하고 구현을 한다고 한다. 몇만 몇십만 소스코드를 짜야한다고 할때 테스트코드 없이 개발하면 정말 많은 문제가 일어난다고 한다. 에러사항을 구현 초반에 알아야 해결하기 쉽듯이 말이다. 예제 아래 예제는 id와 이름을 가지고 있는 Member 객체를 저장하는 save(), find() 가 정상적으로 실행되는지를 확인 하는 예제이다. public..
웹 개발 방식 3가지 웹을 개발하는것은 크게 3가지 방법이 있다. 첫번째로는 정적 컨텐츠가 있는데 이것은 정적 파일을 웹 브라우저에 그대로 내려주는 것이고, 두번째로는 MVC와 템플릿 엔진이 있는데 템플릿 엔진은 PHP, JSP 등 html을 서버에서 처리를 한 후 웹 브라우저에 내려주는 것이다. 그리고 API는 html을 내려주는 것이 아니라 json, xml 형식의 데이터 구조 포맷을 클라이언트 에게 내려주고 화면은 클라이언트 에서 그린다. 대표적으로 React, Vue 가 있다. 그리고 서버끼리 통신할때 데이터만 주고 받으면 되니 API 방식을 사용한다. 1. 정적 컨텐츠 https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/sp..
프로젝트를 서버에 배포하기 위해서는 빌드하여 jar파일을 생성해야 한다. 예전에는 서버에 WAS 세팅을 했어야 했는데 스프링부트 프로젝트는 jar파일을 서버에 올리고 실행만 해주면 된다. 방법은 간단한다 프로젝트 폴더로 이동해서 "./gradlew build" 명령어를 통해 build 를 하면 build 폴더가 생성된다. 그리고 "cd build/libs" 명령어로 libs 폴더로 이동 후 "java -jar 자르파일" 명령어로 실행을 해주면 된다. ctrl+c를 하면 실행취소가 되며, 만약에 빌드를 다시하고 싶을땐 "./gradlew clean build" 명령어로 clean 후 다시 빌드를 해주면 된다. 커맨드창에서 실행을 시키는것과 인텔리 제이나 이클립스에서 실행을 하는것이 같은 포트를 사용한다면 ..
라이브러리 Grdle, Maven 같은 빌드 툴들은 의존관계를 다 관리해준다. 즉 한 라이브러리를 땡겨올때 그 라이브러리안에 필요한 라이브러리들을 자동으로 다 땡겨온다는 것이다. 그래서 스프링부트와 관련된 라이브러리를 땡겨오면 spring-core까지 다 땡겨오기 때문에 스프링과 관련된 라이브러리가 자동으로 다 세팅이 된다. 그리고 spring-boot-starter-web 라이브러리를 땡겨올때 자동으로 톰캣 라이브러리를 가져오기 때문에 톰캣 설치없이 웹서버를 띄울수 있는것이다. 로그는 spring-boot-starter-logging 라이브러리의 logback, slf4j를 많이 사용하며 테스트 라이브러리는 spring-boot-starter-test 라이브러리의 junit(테스트 프레임워크), moc..
시작전에 Java 11과 IntelliJ가 설치 되어있어야 한다. Java 11, IntelliJ 설치방법 : https://deftkang.tistory.com/186 스프링 부트 스타터 사이트에서 스프링 프로젝트 생성. 예전에는 스프링 프로젝트를 밑바닥부터 생성했다면 요즘에는 스프링 부트를 이용해서 스프링 프로젝트를 만든다. 아래 사이트 들어가서 스프링 프로젝트를 생성할 수 있다. 스프링에서 운영하고 있는 사이트이다. https://start.spring.io Project에서 Maven과 Gradle이 있는데 이는 필요한 라이러리를 땡겨오고, 빌드해주는 라이프 사이클을 관리해주는 툴이다. 예전에는 Maven을 많이 사용했지만 지금은 Gradle을 많이 사용하여 Gradle을 선택한다. Maven은 ..
Java 11 설치 1. 아래 자바 다운로드 설치 url 접속후 macOS Installer dmg 프로그램을 다운로드 한다. 링크 클릭시 Oracle 로그인 화면이 뜨며 로그인을 하면 다운로드 할 수 있다. www.oracle.com/kr/java/technologies/javase-jdk11-downloads.html 2. 설치 후 terminal.app 에서 java -version 을 치면 다운로드 됐는지 확인 IDE IntelliJ 설치 1. 아래 URL 접속 후 IntellJ 툴박스를 설치한다. www.jetbrains.com/ko-kr/toolbox-app/ 2. 툴박스를 실행시켜 IntelliJ를 설치할 수 있는데 Ultimate 버전은 유료 버전이고 Communitity 버전이 무료 버전..
파이썬과, Thoony를 다운받는다. Thonny는 파이썬 기본적인 편집기 툴인데 아주 간편하다 thonny.org/ www.python.org/downloads/ 환경변수가 아래처럼 python홈, python홈\Script 가 돼 있어야 한다. cmd창을 열고 아래 스크립트를 순서대로 실행한다. python -m pip install --upgrade pip pip install opencv-python pip install numpy pip install matplotlib 다 설치 후 Thonny를 연다. 그리고 option창 Interpreter 탭에서 python.exe 실행 경로를 지정해줘야 한다. 그래야 위에서 설치한 모듈을 사용할 수 있다. 그리고 아래 스크립트를 실행 시키면 된다. 캡쳐..
데이터 라벨링이란 이미지 위에 박스를 치고 그 해당 박스가 어떤 물체인지 분류하기 위해 주석을 다는 작업이다. 파이썬으로 라벨링 하는 방법은 모듈을 이용한 방법이 있다. 사전 작업으로 파이썬을 깔고 나서 환경 변수에 Python_Home과, Python_Home/Script 폴더 경로를 잡아줘야 한다. 그리고 아래 링크를 접속해서 코드를 다운한다. github.com/tzutalin/labelImg pip가 모듈을 설치하는 명령어이고 이것을 이용해 모듈 설치후 LabelImg 프로그램을 실행시킬수 있다. 설치하려면 pip 버전이 20.3.2가 돼야 해서 업그레이드를 해줘야 한다. python -m pip install -U pip 업그레이드 완료 후 pip로 설치해주면 된다. pip install lab..