https://aws.amazon.com/ko/free/?all-free-tier.sort-by=item.additionalFields.SortRank&all-free-tier.sort-order=asc&awsf.Free%20Tier%20Types=*all&awsf.Free%20Tier%20Categories=*all

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

이러한 프리 티어 혜택은 AWS 신규 고객에게만 제공되며 AWS 가입일로부터 12개월 동안 유효합니다. 12개월의 무료 사용 기간이 만료되거나 애플리케이션 사용량이 프리 티어 범위를 초과할 경우

aws.amazon.com

 

 

쭉 가입을 하다 보면 이 화면이 나온다.

AWS Management Console로 이동 클릭

 

검색에 ec2검색 후 클릭

 

오하이오를 아시아 태평양(서울)로 변경

 

인스턴스 시작 클릭

 

 

본인이 원하는 이름으로 키 이름 지정후 인스턴스 시작

 

 

인스턴스 시작이란? 가상 컴퓨터를 새로 만드는 것

 

 

 

상태 검사를 하는 데 시간이 조금 걸리므로 기다렸다가 새로고침을 누르고

저렇게 상태 검사가 확인되면 연결 버튼을 누른다.

 

그 후 생성된 암호 복사 후 붙여넣기

 

 

가상 컴퓨터가 만들어짐을 확인 할 수 있다.

 

 

브라우저를 열고 깃허브로 들어간다.

 

그 후 나오는 팝업은 open -> close

https://github.com/castello/spring_basic

 

GitHub - castello/spring_basic: 남궁성의 스프링 기본 강의 @fastcampus.co.kr

남궁성의 스프링 기본 강의 @fastcampus.co.kr. Contribute to castello/spring_basic development by creating an account on GitHub.

github.com

 

이제 JDK랑 Tomcat을 설치 할 것이다.

보안때문에 설치가 안될 것인데

 

톱니바퀴 클릭후 Internet Options 클릭 -> Security -> Custom level -> File download(enabel) -> ok

 

 

이제 OpenJDK, Tomcat 이 설치 가능하다.

 

https://jdk.java.net/archive/

 

Archived OpenJDK GA Releases

Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Public License, version 2, with Classpath Exception. WARNING: These older versions of the JDK are provided to he

jdk.java.net

 


https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

 

 

톰캣 다운로드 들어가서 zip 클릭 후 save

 

 

설치가 잘 됬음을 확인

 

파일 이름을 jdk-11.0.2 -> jdk11로 변경

 

bin 경로 복사

 

control panel 검색 후 이동 (제어판)

 

 

아까 복사한 jdk의 bin 폴더의 경로를 복사 후 넣어준다.

이번에는 bin을 빼고 넣어준다.

 

이러면 환경변수 설정 끝

설정이 잘 되었는지 확인한다.

cmd로 들어간후 javac -version

 

톰캣도 jdk와 같이 c드라이브로 옮겨주면 자동으로 압축이 풀린다.

톰캣의 bin의 startup클릭

톰캣이 실행된다.

 

톰캣도 잘 실행이 되었는지 확인하기 위해 브라우저를 열고

http://localhost:8080 입력 후

톰캣이 잘 열리는 지 확인

 

 

이제 가상 컴퓨터에 직접 접속하기 위해 방화벽설정에서

내부로 들어오는 것을 열어주어야 한다.

Inbounded Rules -> New Rule

 

AWS에서도 방화벽을 열어주어야 한다.

 

 

이제 마지막으로 내 pc에서 가상pc의 톰캣으로 접속이 되는지 확인 할 것이다.

ec2의 대시보드에 들어가서 인스턴스(실행 중) 클릭

 

체크를 한 후 퍼블릭 IPv4 주소를 복사

그 후 :8080 을 붙여주면 접속된다.

 

 

VisualStudio Code의 셋업파일을 더블클릭하여 설치 후 

Extension을 추가로 설치할 것이다.

 

이런식으로 설치 후 제거가 보이면 설치가 완료된 것이다.

 

 

 

 

 

 

이렇게 우선 총 5개를 설치하였다.

Korean, Prettier, Open in browser, indent-rainbow, Auto Rename Tag

 

깃 설치 중에

 

 

이 부분이 master 에서 main으로 바뀌고 있는 추세인데 이것만 체크하고 나머지는 모두 Next 한 후 설치

 

아파치도 압축을 해제한 후 폴더 그대로 C드라이브로 옮긴다.

 

해당 폴더의 bin에 들어가서 폴더 경로를 복사후

cmd에서 cd + 경로 후

startup하면 아래와 같은 창이 열린다.

1080은 1.08초 시간이 들었다는 것이다.

한글

 

 

그 후 localhost:8080 으로 들어갔을때 이 화면이 나오면 잘 작동되는 것이다.

 

 

이제 마지막으로 STS를 설치할 것인데

 

압축파일 안에서 이것을 꺼내어 C드라이브로 옮겨주면 된다.

 

STS런처를 실행한다.

 

이 화면이 나오면 성공이다.

 

File -> New -> Spring Legacy Project

 

아래에 템플릿이 다 보이지 않는다면

Configure templates 클릭

가운데 것을 제외 하고 두가지를 Remove 한 후 Apply and Close하면 생긴다고 하는데 필자는 되지 않아서

몇시간 동안 찾아본 결과

 

몇년 전부터 이 기능을 이제 지원하지 않는다 한다.

따라서 기존에 빈프로젝트를 만들어 놓은 것을 임포트 해야 한다고 한다.

 

 

이러면 생성된다. 아래의 폴더를 설치하자(압축해제X)

firstSpring.zip
0.02MB

 

이렇게 잘 만들어짐을 확인할 수 있다.

 

만약 이렇지 않고 원할하게 MVC project를 생성했을 경우

여기에 이런식으로 넣어주면

 

이렇게 패키지 이름이 만들어진다.

 

 

이제 서버를 연결해줄 것이다.

이 아래 버튼을 누르고 tomcat검색후 설치했던 9버전 next

 

 

그 후 Finish 하면 완료가 되어 있는 상태

 

 

 

 

이제 서버를 실행 시켜 볼 것 이다.

 

한글은 현재 깨지고 현재 시간이 출력된다.

 

외부 브라우저로 변경할 것이다.

돋보기를 클릭

 

web browser 선택후 external로 변경 후 chrome을 클릭후 apply

 

그리고 다시 Run on Server를 하면 Chrome으로 실행됨을 확인 할 수 있다.

https://jdk.java.net/archive/

 

Archived OpenJDK GA Releases

Archived OpenJDK General-Availability Releases This page is an archive of previously released builds of the JDK licensed under the GNU General Public License, version 2, with Classpath Exception. WARNING: These older versions of the JDK are provided to he

jdk.java.net

 

개인의 컴퓨터에 맞게 버전을 설치해 줄 것인데,

필자는 11.0.2 윈도우 버전을 설치했다.

 

스프링으로 개발하기 위해 필요한 도구들

자바 개발 도구 : Java11

통합개발 환경 : STS, IntelliJ(Ultimate 유료버전만)

웹 서버 : Tomcat 9

웹 브라우저 : Chrome

데이터 베이스 : MySQL 5.7

기타 : VS code, Git, AWS, Maven

 

우선 STS를 설치할 것이다.

https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3

 

Spring Tool Suite 3

the distribution build for the Spring Tool Suite and the Groovy/Grails Tool Suite - spring-attic/toolsuite-distribution

github.com

 

 

IntelliJ 유료 설치(30일 무료)

https://www.jetbrains.com/ko-kr/idea/download/?section=windows

 

최고의 Java 및 Kotlin IDE인 IntelliJ IDEA를 다운로드하세요

 

www.jetbrains.com

 

Tomcat 9 다운로드

톰캣은 EE에 포합된다(Enterprise Edition)

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

 

 

VisualStudio Code 설치

https://code.visualstudio.com/download

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

 

Git 다운로드

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. Latest source Release 2.47.0 Release Notes (2024-10-06) Download Source Code GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but ther

git-scm.com

 

 

for문은 단순해 보이나 중요한 것이 있다.

for문이 돌아가는 순서에 대해서 이다.

 

초기식 -> 조건식 -> 증감식 순이 아닌

초기식 -> 조건식 -> 중괄호 안에 있는 문 -> 증감식 순으로 이어진다.

 

위의 잘못된 로직으로 생각할 시 코딩을 했을 때

마지막 변수가 출력되지 않은 적을 다들 경험해 봤을 것이다.

필자 또한 그런 경험이 있다.

 

 

 

아래 코드에서 주석 처리 된 부분은 일반적인 for문인데

자바에서는 아래와 같이 향상된 for문을 이용하여

코드의 길이를 줄일 수 있다.

 

public class ForLoopTest {
    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5,6,7,8,9,10};

//        for(int i=0; i<numbers.length; i++){
//            System.out.println(numbers[i]);
//        }
        //foreach문 (향상된 for문)
        for(int su : numbers){
            System.out.println(su);
        }
    }
}

import java.util.*을 사용함으로써 scan을 사용할 수 있는데

이는 사용자가 키보드로 수치를 입력할 수 있다.

정수형이면 scan.nextInt()

실수형이면 scan.nextFloat()를 사용한다.

근데 아래의 출력을 보면

마지막 str1을 입력하지 않았는데 자동으로 Hello와 World 잘려서 바로 출력됨을 알 수 있다.

import java.util.*;
public class ScannerTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("정수를 입력하세요:");
        int num =scan.nextInt();
        System.out.println("num = " + num);
        
        System.out.print("실수를 입력하세요:");
        float f = scan.nextFloat();
        System.out.println("f = " + f);

        System.out.print("문자를 입력하세요:");
        String str = scan.next();
        System.out.println("str = " + str);

        //scan.nextLine();//버퍼비우기(스트림 비우기)

        System.out.print("문자를 입력하세요:");
        String str1 = scan.next();
        System.out.println("str1 = " + str1);
    }
}

 

 

이에 대한 원인으로

scan.next();
공백을 기준으로 한 단어 또는 한 문자씩 입력받는다.
버퍼에 입력된 문자나 문자열에서 공백 전까지의 단어를 읽는다.

 

scan.nextLine();
문자 또는 엔터를 치기 전까지의 문장 전체를 입력받는다.
버퍼에 입력된 문자열을 개행 문자까지 다 가져온다.

따라서 이 문제점을 scan.nextLine();을 사용함으로서 문제를 해결할 수 있다.

앞에 Hello가 출력되고 나서 그 다음 버퍼에 World가 출력되어야 하는데

scan.nextLine(); 을 사용하여 버퍼를 비울 수 있기 때문이다.

import java.util.*;
public class ScannerTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("정수를 입력하세요:");
        int num =scan.nextInt();
        System.out.println("num = " + num);
        
        System.out.print("실수를 입력하세요:");
        float f = scan.nextFloat();
        System.out.println("f = " + f);

        System.out.print("문자를 입력하세요:");
        String str = scan.next();
        System.out.println("str = " + str);

        scan.nextLine();//버퍼비우기(스트림 비우기)

        System.out.print("문자를 입력하세요:");
        String str1 = scan.next();
        System.out.println("str1 = " + str1);
    }
}

 

 

이번에는 또 다른 문제가 생겼다.

Hello World를 출력하고 싶은데 앞에 Hello만 잘려서 나온 것이다.

왜냐하면 위에 설명한 것 처럼

그냥 next는 공백을 기준으로 잘라서 출력하고

Line을 이어서 붙어 주어야만 엔터를 했을 때를 기준으로 출력하기 때문이다.

import java.util.*;
public class ScannerTest {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("정수를 입력하세요:");
        int num =scan.nextInt();
        System.out.println("num = " + num);
        
        System.out.print("실수를 입력하세요:");
        float f = scan.nextFloat();
        System.out.println("f = " + f);

        System.out.print("문자를 입력하세요:");
        String str = scan.next();
        System.out.println("str = " + str);

        scan.nextLine();//버퍼비우기(스트림 비우기)

        System.out.print("문자를 입력하세요:");
        String str1 = scan.nextLine();
        System.out.println("str1 = " + str1);
    }
}

 

 

public class TwoDimArrayInit {
    public static void main(String[] args) {
        int[][] a = {
                {1,2,3,4},
                {5,6,7,8}
        };

        for(int i=0; i<a.length ; i++){
            for(int j=0;j<a[i].length; j++){
                System.out.print(a[i][j] + "\t");
            }
            System.out.println();
        }

        int[][] b = new int[5][];
        b[0] = new int[1];
        b[1] = new int[2];
        b[2] = new int[3];
        b[3] = new int[4];
        b[4] = new int[5];

        for(int i=0; i<b.length ; i++){
            for(int j=0;j<b[i].length; j++){
                b[i][j] = '*';
                System.out.print((char)(b[i][j]) + "\t");
            }
            System.out.println();
        }
    }
}

Movie 타입의 객체를 저장할 수 있는 배열 m을 생성

 

  • Movie[] m = new Movie[3];로 배열을 생성한 후, 각 배열 요소에 대해 new Movie()로 객체를 생성하여 초기화

※Movie라는 만들어진 객체의 정보를 가져와 m이라고 이름을 지정하여 3개로 만들었기에

각각의 속성에 접근하기 위해서 m[0], m[1], m[2]를 각각 모두 초기화 해주어야함

  • 각각의 Movie 객체에 대해 여러 속성에 값을 할당하고, 마지막으로 이를 출력하여 각 영화의 정보 보여줌

 

import java.sql.SQLOutput;

public class ObjectArrayExam {
    public static void main(String[] args) {

        Movie[] m = new Movie[3];

        m[0] = new Movie();
        m[0].mtitle = "A영화";
        m[0].mmajor = "박매일";
        m[0].mtime = 160;
        m[0].mlevel = 15;
        m[0].mday = "2023-01-15";

        m[1] = new Movie();
        m[1].mtitle = "B영화";
        m[1].mmajor = "나길동";
        m[1].mtime = 180;
        m[1].mlevel = 12;
        m[1].mday = "2023-01-11";

        m[2] = new Movie();
        m[2].mtitle = "C영화";
        m[2].mmajor = "조길동";
        m[2].mtime = 140;
        m[2].mlevel = 18;
        m[2].mday = "2023-11-16";

        for(int i=0 ; i<m.length ; i++){
            System.out.println(m[i].mtitle+"\t"+m[i].mmajor+"\t"+m[i].mtime+"\t"+m[i].mlevel+"\t"+m[i].mday);
        }
    }
}

 

 

 

C#을 하다가 자바를 하니 문법같은 것을 처음에 모르다 보니

GPT를 활용하여 변경하였다.

문자열 보간이라던지 약간 다른부분이 있어서 헷갈렸지만 이 또한 적응할 것 이다.

 

대문자에서 소문자로 가려면 아스키코드 + 32

 

 

 

4월29일 부터 8월2일까지 어떻게 보면 길고도 짧았던 프로젝트 리뷰를 남긴다.

현재 플레이스토어에 비공식으로 테스트 버전으로 올라가 있다.

 

기존의 게임을 똑같이 오마주 삼기보다 여러 게임의 아이디어를 가져와 종합하느라,

레퍼런스라고 딱히 지정할 것이 없어서 "창작"이라고 생각하는데 가깝다.

그렇기에 팀원들이 한 곳을 바라보아야 하는데 각자 생각하는 프로젝트의 그림이 달라서 이 점을 종합하는데

다소 시간이 들였다.

 

하지만 우리는 Papter prototype을 통해 게임의 재미를 입증하였고, 의견을 모을 수 있었다.

필자는 "던전 추적자"라는 프로젝트를 동시에 했기에 몇달간 하루에 4시간 가량만 잠을 자며 정말 바빴다.

하지만 돌이켜 생각해보면 우리가 원했던 '개발자가 해도 만족스러운 게임'을 지향하며 달려온 길은 행복했다.

다들 고생이 많았고, 모두에게 행복한 기억으로 남았으면 좋겠다.

 

게임 시작 씬

 

로비 씬

 

특성 창
카드 도감 창
설정 창
마지막 특성 활성화 후, 게임 시작 시 선택 창
초기 카드 선택 씬
시작 스토리
맵 씬
아이템 인벤토리와 스탯 창
준비 카드 인벤토리
행동카드 인벤토리
전투 씬
게임 승리 및 패배 씬
크레딧

제목을 Test로 지정한 후 프로젝트를 생성

 

 

그러면 아래 그림과 같이 빈 프로젝트가 생성된다.

 

 

src에 우클릭을 한 후 보기와 같이 새로운 클래스를 만들어 준다.\

그리고 클래스의 이름은 ForBlog로 지정하였다.

 

그러면 보기와 같이 클래스가 만들어진다.

 

클래스를 쉽게 사람으로 생각하면 사람이라고 생각하면 된다.

사람이 무슨 동작을 하기 위해 행동이 필요하다.

이를 메서드라 부른다.

기본 클래스는 main이라는 메서드가 필요하다.

 

main을 입력한 후 tab or enter or 더블클릭을 하면 보기와 같이 기본 main클래스가 만들어진다.

자바에는 무언가 출력을 할때

System.out.println();

이런 기본형태가 필요하고 저 괄호안에 원하는 값을 입력하면 된다.

그리고 나서 초록색 버튼을 클릭하고 실행 시키고

아래 콘솔창을 보면 Hello 가 찍힘을 확인할 수 있다.

 

실행을 하고 나서 왼쪽 사이드바를 자세히 보면 새로운 폴더가 생성됨을 알 수 있다.

 

이것에 관하여는 학원의 관련자료로 설명하겠다.

우선 설명을 하자면 소스코드는 우리가 만든 부분이고,

그것을 실행하기 위해 API가 필요하며

실행을 하면 실행된 파일인 out에 class가 만들어진 것이다.

 

우리는 터미널을 열어서 컴파일을 초록색 화살표 버튼이 아닌 명령어로 실행해 볼 수 있다.

여기서 -encoding UTF-8은 만약에 수동으로 출력할때 한글이 끼어져 있으면 글씨가 깨지기 때문에

인코딩 형식을 직접 지정해주어야 한다.

 


 

중요 : JVM과 자바의 구동 방식

 

 

전에 유니티를 사용했을 때 Window로 작업을 하다 Mac으로 넘어갈 경우

라이더를 구매하지 않으면 한글이 깨지고 그런 현상이 있었는데,

자바는
1차적으로 src코드가 bytecode로 저장된다.
또한 실행을 하더라도 한번더 JVM을 거쳐서 exe로 마지막에 로딩하여 실행하기 때문에
다른 프로그램이랑 다르게 독립적으로 OS와 상관없이 작동한다.

 

 

+ Recent posts