실무에서 두개 이상의 프로젝트를 진행하다 보면 각 프로젝트가 환경이 다를 수 있습니다.

저도 기존에 작업하던 프로젝트 말고 새로운 프로젝트를 진행 하고 있습니다.

그래서 Maven의 라이브러리 들이 충돌 되지 않도록 각 프로젝트(워크스페이스) repository를 다르게 설정 하였습니다.


아래 과정은 기존 default 경로(c:/user/.m2/repository)가 아닌 자신이 원하는 경로에 maven을 설정하는 내용 입니다.



1. 설치된 Maven 폴더->config-> setting.xml 파일을 열어줍니다.

그리고 중간쯤에 있는 <localRepository> 부분의 주석을 그위로 이동한 뒤, 원하는 경로명을 입력 해줍니다.








2. 프로젝트가 아닌 워크스페이스의 Preferences -> Maven -> Installations 에서 Add버튼 클릭

(자료.1) 아래 (자료.2) 처럼 위에서 수정하신 setting.xml 이 존재하는 경로를 등록 해줍니다.

setting.xml 수정하신 경로는 maven 설치 경로와 똑같습니다.


(자료.1)



(자료.2)






3. 마지막으로  Preferences -> Maven -> User Settings 항목에서 User Settings 부분에 

모든 과정을 마친 setting.xml 를 등록 해줍니다. 그러면 그 아래 항목인 Local Repository 에 

입력한 로컬 경로가 자동으로 표시 됩니다.




처음 스프링 프로젝트를 생성한 다음 pom.xml 에 있는 Maven 버전을 수정 해야 합니다.

cmd 창에서 mvn -v 명령어를 입력 하시면 아래와 설치된 해당 maven의 정보가 출력 됩니다.










pom.xml 파일에 입력된 내용 중 <version>에 설치된 maven 의 버젼을 입력 해주시고,

그 아래 <source> 와 <target>에는 설치된 자바 버젼을 입력 해주시면 됩니다.







기존에는 일반 적인 자바SE 를 설치하고 자바 환경 변수를 설정 하였습니다.

하지만 앞으로 유료화 이슈로 인해서 저는 openjdk 를 이용해서 포스팅 해보려고 합니다.


https://github.com/ojdkbuild/ojdkbuild


아래 파일 중 msi 파일을 다운 하신 뒤 인스톨 하거나,

zip파일을 다운 하신 뒤 이용 하실 드라이브에 붙여넣어 주세요.












아래 부터는 인스톨창 입니다.

특별한 설정 사항이 없으면 next 및 install을 눌러 주세요,









openjdk는 설치 후 따로 환경 변수를 설정하지 않아도 자동으로 등록 되었습니다.

근데 그냥 쓰기에는 너무 불안하고, 혹시 기존에 사용하던 jdk 와 충돌이 날 수도 있으니

자바 환경 변수를 설정 하였습니다.





내 컴퓨터 -> 우클릭 >좌측 '고급 시스템 설정' -> 고급 '환경 변수'

그 다음 아래처럼 설정 해주시면 됩니다.

JAVA_HOME의 변수 값은 openjdk 의 다운로드 경로를 입력 하시면 되고,

환경 변수 편집에는 '%JAVA_HOME%\bin' 을 추가 하시면 됩니다.


그리고 cmd 창에서 'java -version' 명령어를 입력하시면

맨 아래 사진과 같이 설치된 자바 버젼이 표시 됩니다.






###########사진이 짤렸습니다############

1. JAVA_HOME 

2. Path + ' ;%JAVA_HOME%\bin '

3. CLASSPATH = %JAVA_HOME%\lib






스프링에서 라이브러리를 자동으로 관리해주는 Maven을 사용하기 위해

메이븐을 설치 및 환경 변수 설정을 해줘야 합니다.


아래 링크로 이동 후 다운로드 해주세요.


http://maven.apache.org/download.cgi








빨간 박스의 압축 파일을 다운로드 한 다음 C드라이브의  Program Files에 복사 후 붙여넣어 주세요.

그 다음에는 환경 변수 설정을 해야 합니다.









위에 처럼 변수 이름은 MAVEN_HOME 으로 설정 하신 다음,

변수 값으로는 폴더가 존재하는 경로를 넣어주면 됩니다.(C드라이브에 붙여넣은 폴더 경로)


그다음 다운로드와 설정이 완료 됬는지 확인 하기 위해서 cmd창을 열으신다음

mvn -version 

위 명령어를 입력 하세요.

아래 처럼 나오면 다운 및 설정에 성공한 것이고, 실패 했다면 처음부터 다시 실행 해주세요 :) 





QA라는 환경이 구축되어 있는 상태고  해당 환경에 Push를 하려고 합니다.

0.  다른 팀원이 push 한 내역이 있는지 브랜치를 refresh 합니다.
     - 우측 상단 4개 중 첫번째




1. 소스가 수정 및 추가된 프로젝트에서 파일 목록을 refresh 합니다. 




2. 파일 목록에 수정 및 추가된 소스가 있으면 새로운 브랜치를 생성해줍니다.
     <새로운 Branch 를 만들 때>
           1. 파일 목록 refresh 버튼 옆 'Branch: default' 를 클릭 합니다.



          2. 두번째(Open a named branch)를 선택 후 제목 입력 후 OK를 눌러줍니다.
  ex) 0906_test_01
              - 'Branch: default' 가 입력한 제목으로 변경되었다면 새로운 브랜치가 생성된것 입니다.



          3. Description Message 를 입력 한 후 commit 해줍니다.
              - 메세지는 보통 'start' 를 사용합니다.




          

4. 좌측 파일 목록에서 commit 할 파일 선택 후 똑같이 commit
           - 테스트 메세지는 'test changed' 이지만 사용자에 따라 다름





3. 추가된 브랜치 merge 를 위해 QA 브랜치를 업데이트(switch) 합니다.
    3.1 가장 최근 QA 브랜치 우 클릭 -> Update







4. QA브랜치에 병합하고 싶은 브랜치를 merge 합니다.
    4.1 병합하고 싶은 추가된 브랜치 -> 우클릭 -> Merge with Local... 클릭




    4.2 만약 Working directory status 가 'clean' 이라면 next 클릭




    4.3 Commit message 작성 또는 작성 없이 Commit now 클릭




5. QA브랜치에 브랜치를 push 해줍니다.
    5.1 세번째 Detect outgoing changes to '서버명' 클릭합니다.


    5.2 입력 및 수정 내용을 확인 한 후 'push all' 을 클릭 합니다.





최종 결과 : 브랜치 생성 및 QA 병합까지 완료 되었습니다.








과정을 한 줄씩 정리!
1. 새로운 브랜치 생성 후 start 메세지 커밋
2. 수정 및 입력된 파일 추가 후 커밋
3. 상위 디렉토리(ex. QA) 에 merge
4. merge 이후 Push



브랜치 업데이트(스위치) 할 때는 톰캣서버 잠시 꺼두라는 조언을 받았는데,
혹시 어떤 이유인지 정확하게 아시는분 계신가요?
제가 듣기로는 막연하게 에러가 날 수도 있다고만 들어서요...ㅎㅎ
아시는분 댓글 부탁드립니다.




제가 게임 업계에서 근무하며 접하는 게임 업계 용어입니다.
혹시 다른게 있다면 알려주세요 :-)



ACL(Access Control List) :
 서버에서 트래픽을 선택하여 허용하거나 거부하는 기능을 
설정 할 수 있는 기능입니다.
게임 업계에서는 운영팀 or 플랫폼 개발팀에서 접근을 필요로 하는 사용자에게 ACL을 설정 해줍니다.


알파테스트(Alpha Test) :
 내부테스트란 뜻으로 개발사 직원들을 대상으로 실시하는 테스트 입니다(게임 퍼블리싱 이전)


API(Application Programming Interface ) :
  서비스와 서비스를 연동하기 위해 사용하는 연결 프로그램입니다.
게임 업계에서는 게임포탈과 게임 사이의 로그인, 캐쉬 충전 및 구매 등을 연결하기 위해 사용됩니다.


베타테스트(Beta Test) :
 정식 서비스 이전에 외부를 대상으로 진행. CBT 와 OBT에 해당됨(게임 퍼블리싱 이전)


CBT(Closed Beta Test) : 
게임 개발사가 테스터들을 모집하여 개발이 완료된 게임을 퍼블리싱 이전에 플레이 하게 한 뒤, 게임의 버그나 개선 및 건의사항등을 보고 받아 한 층 더 완벽해진 게임을 만들기 위해 진행합니다.


CDN(Content Delivery Network) :
 인터넷을 통해 컨텐츠를 효율적으로 전달하기 위해 여러곳에 데이터를 저장해두고 사용자들이 빠르게 컨텐츠를 다운로드 할 수 있게 해주는 서비스를 말합니다.
쉬운 예시를 보이자면,  Steam 이나 Google Player Store 라고 할 수 있습니다.


DB(Data Base) :
 다양한 데이터들을 저장하는 곳입니다.(보통 IDC에 구축되어 운영됩니다.)


FFT(Family&Friend Test) :
 친분이 있거나 테스트를 위한 전문적 지식을 가진 소규모 인원을 대상으로 실시되는
테스트입니다(게임 퍼블리싱 이전)


GMTool :
 게임 개발사에서 제공한 Tool이며 효과적으로 게임 운영을 할 수 있습니다. GM 계정으로 다양한 컨텐츠 및 이벤트를 진행 할 수 있으며, 필요한 데이터를 추출하여 게임 운영을 위한 지표분석도 할 수 있습니다. 
게임 업계에서는 운영팀에서 다양한 요구분석을 위해 많이 사용합니다.


Game Patch:
 게임 개발사가 게임의 버그 수정 및 신규 기능을 업데이트 하기 위해 정기적으로
 실시하는 패치입니다.


IDC(Internet Data Center) :
 게임 운영을 위해 다수의 서버PC 와 빠르고 안정적인 네트워크 회선을 제공하는 장소.


IP(Internet Protocol) :
 흔히 IP주소라고 말하며 인터넷에서 통신을 하기 위해서는 서버로부터 유일한 IP값을 받습니다.
게임 업계에서는 테스트 서버 및 라이브 서버등을 구축할때 IP주소를 할당해야 합니다.
 이 작업은 주로 플랫폼 개발팀에서 진행하게 되며 IP주소는 항상 미리
 할당 및 고지를 해야 합니다.


런쳐(Launcher) :
게임을 실행해주기 위한 .exe 프로그램


모니터링(Monitoring) :
 게임 서버가 정상적으로 작동하고 있는지 실시간으로 확인을 하는 작업입니다.
 꼭 서버 뿐만이 아니라 게임 내부에서 비정상적, 비매너 행위에 대한 대응을 위해 모니터링을
하기도 합니다.


OBT(Open Beta Test) : 
불특정 다수를 대상으로 진행하는 외부 테스트. CBT 보다 차후에 실시되며 게임에 대해
최종적으로 개선사항을 추가 할 수 있습니다.

OP(OPeration Team, 운영팀) :
게임 운영을 담당하는 부서입니다.

OTP(One Time Password) :
 비밀번호 재사용으로 인한 피해를 최소화 하기위해 사용자에게
일회성 비밀번호를 부여하는 방식입니다.


Port : 
서버의 통신 프로그램을 구분하기 위한 장치입니다. IP+Port 로 접속을 합니다.
 ex) 100.100.100.100:8080 


웹 페이지 사용자는 배터리 절약, 개인 정보 보호 등을 이유로

자바스크립트 사용을 비활성화 해 놓는 경우가 있습니다.

따로 설정하지 않았을때 default 값으로 js 사용이 비활성화 되어있는 경우도 있습니다.


그런 상황에서 자바 스크립트 활성화를 요청하기 위해 사용되는 태그가 <noscript> ~ </noscript> 입니다.


자바 스크립트를 사용하지 않는 사용자에게 메세지를 보내세요.(쪽지 메세지가 아닙니다)



1
2
3
4
5
6
7
8
<noscript>
    <div>
        <h4>Warning!</h4>
        <p>
            You need to have enabled to use this site.
        </p>
    </div>
</noscript>
cs


-1+3-5+7-9+11-13+15-17...



1-3+5-7+9-11+13-15+17...

홀수가 증가하며 교차로 부호가 +/- 로 바뀌며 기준점까지 총합을 구하는 코드입니다.


근데 왜 아래 코드 가운데 정렬이 안 풀릴까요..

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MPswapSum {
 
    public static void main(String[] args) {
        int minusStart = minusStart(100);
        System.out.println(minusStart);
        int plusStart = plusStart(100);
        System.out.println(plusStart);
    }
 
    public static int minusStart(int finishedNum) {
        int sum = 0;
        for (int i = 1; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                if (sum >= 0) {
                    sum += (i * -1);
                } else if (sum < 0) {
                    sum += i;
                }
            }
        }
        return sum;
    }
 
    public static int plusStart(int finishedNum) {
        int sum = 0;
        for (int i = 1; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                if (sum <= 0) {
                    sum += i;
                } else if (sum > 0) {
                    sum += (i * -1);
                }
            }
        }
        return sum;
    }
 
}
cs




결과 :



1부터 100까지 홀수끼리 합, 짝수끼리 합을 구하는 코드입니다.
저는 따로 startedNum과 finishedNum으로 매개변수를 설정하여
동적인 범위의 홀수 및 짝수값을 구하도록 했습니다.


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
27
28
29
30
31
32
33
package Study_2707;
 
public class Sum1to100 {
 
    public static void main(String args[]) {
        oddSum(110);
        evenSum(110);
    }
 
    public static int oddSum(int startedNum, int finishedNum) {
        int oddSum = 0;
        for (int i = startedNum; i <= finishedNum; i++) {
            if (i % 2 == 1) {
                System.out.println(oddSum + " + " + i + " = " + (oddSum + i));
                oddSum += i;
            }
        }
        return oddSum;
    }
 
    public static int evenSum(int startedNum, int finishedNum) {
        int evenSum = 0;
        for (int i = startedNum; i <= finishedNum; i++) {
            if (i % 2 == 0) {
                System.out.println(evenSum + " + " + i + " = " + (evenSum + i));
                evenSum += i;
            }
        }
        return evenSum;
    }
 
}
 
cs






결과 : 



for문을 이용하여 1부터 100까지 합을 구했습니다.



1
2
3
4
5
6
7
8
9
10
11
12
public class Sum1to100 {
 
    public static void main(String[] args) {
        int sum = 0;
        for(int i=1; i<=100; i++) {
            System.out.println(sum + " + " + i + " = " + (sum+i));
            sum += i;
        }
        System.out.println(sum);
    }
 
}
cs





결과 : 



+ Recent posts