환경: linux, jdk가 깔려 있어야 함 (java 기반으로 실행되기 때문)

sudo apt-get install openjdk-8-jre openjdk-8-jdk

 

 

1. nexus를 다운 받는다.

wget https://sonatype-download.global.ssl.fastly.net/repository/downloads-prod-group/3/nexus-3.26.1-02-unix.tar.gz

 

2. tar파일을 압축 해제한다.

tar -zxvf nexus-3.26.1-02-unix.tar.gz

3. 아래와 같이 환경 변수를 설정해한다.

NEXUS_HOME="/repository/nexus"

 

4. 넥서스에서 사용할 사용자를 추가한다. 

useradd [사용자 이름]

 

5. bin/nexus.rc 파일에 위에서 등록한 사용자 이름을 등록해야 한다.

run_as_user="[사용자 이름]"

 

6. /etc/systemd/system/에 nexus.service 파일 생성 후 아래와 같은 내용을 등록해줘야 한다. 

(ubuntu 16.04에서는 systemd로 관리하기 때문에 서비스로 사용하기 위해서)

[Unit]
Description=nexus service
After=network.target

[Service] Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort

[Install] WantedBy=multi-user.target

 

7. systemd daemon을 업데이트 후, nexus를 실행시킨다.

systemctl daemon-reload
systemctl enable nexus.service
systemctl start nexus.service

 

 8. 서비스의 상태를 확인한다.

systemctl status nexus

또는

tail -f ./sonatype-work/nexus3/log/x.log

'Nexus' 카테고리의 다른 글

인터페이스 http -> https 접근 가능하게 하기  (0) 2020.08.13

사내에서 사용하고 있는 넥서스는 쿠버네티스에 올라가 있지 않고 애플리케이션으로 떠 있는데 jetty라는 was를 내장하고 있어 넥서스를 띄울 수 있다.

 

1. fullchain.pem, privkey.pem 파일이 있다는 가정하에 이 파일들을 jks 형식으로 변환해야 한다.

더보기

openssl pkcs12 -export -out [name] -in fullchain.pem -inkey privkey.pem

위 명령어를 입력하면 명령어를 날린 디렉토리에 [name]으로 지정한 파일이 하나 생성된다. 그리고 비밀번호는 123456이라고 가정한다. (jetty-https.xml 파일에서 쓰임)

 

2. keystore.jks 파일을 생성하는 인증서를 가져와야 한다.

더보기

keytool -importkeystore -srckeystore [name] -srcstoretype PKCS12 -destkeystore keystore.jks

위 명령어를 입력하면 명령어를 날린 디렉토리에 keystore.jks 라는 파일이 생성되고 위에 설정한 암호와 동일한 암호를 설정해준다. (123456)

 

(keystore.jks는 넥서스가 시작할 때 읽는 파일이다.)

 

3. etc/nexus.properties 파일을 수정해줘야 한다.

application-port-ssl=8443 행을 추가하고 nexus-args에는 ${jetty.etc}/jetty-https.xml 을 추가해준다.

더보기

nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml,${jetty.etc}/jetty-http-redirect-to-https.xml

위에 형태로 들어가면 된다.

 

4. etc/jetty/jetty-https.xml 파일을 수정해줘야 한다.

더보기

<Set name="KeyStorePath"><Property name="ssl.etc" />/keystore.jks</Set>

<Set name="KeyStorePassword">123456</Set>

<Set name="KeyManagerPassword">123456</Set>

<Set name="TrustStorePath"><Property name="ssl.etc" />/keystore.jks</Set>

<Set name="TrustStorePassword">123456</Set>

아까 설정한 keystore.jks와 비밀번호를 맞게 넣어준다.

 

5. 넥서스를 재시작한다.

더보기

systemctl restart nexus

 

6. 접근이 잘 되는지 확인해본다.

더보기

https://domain:8443

위 url을 통해 넥서스에 접근이 가능하면 끝.

'Nexus' 카테고리의 다른 글

Nexus 설치  (0) 2020.08.25

dockerfile 내에서 RUN pip install xxx 를 실행하는 명령어가 있는데 docker build 하다가 위와 같은 에러가 났음

위 에러가 나면 host network / proxy / 방화벽 중에 문제가 있다고 함

나는 proxy, 방화벽의 문제가 아니고 host network의 문제였는데 docker build 할 때 명령어를 아래와 같이 바꿔줬더니 해결됐음

 

docker build --network=host -t tagName .

나는 지금 프로젝트에서 AWS Lambda Function을 사용하고 있다. CloudWatch를 트리거로 걸어서 RDB에 데이터를 넣는 작업을 하고 있는데 그 과정에서 시간대 변환을 해야했다.

생각보다 까다로워서 짜증났다.

 

 

 

근데 이게 끝이다.

Python을 처음 하다 보니까 어떤 모듈을 사용해서 써야하는지, 어떤 메소드를 써야하는지 몰라서 오래 걸렸다.

 

사용해야 하는 모듈은 이렇다.

 

 

열심히 삽질하고 얻은 결과이다.

 

☞ 문제

 

 

 

☞ 코드

 

 

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
package algo02;
 
import java.util.Scanner;
 
public class Country124 {
    
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        System.out.println("원하는 숫자를 입력해주세요.");
        int n = sc.nextInt();
        System.out.println(solution(n));
    }
    
    public static String solution(int n) {
        
        String answer = "";
        int remainder = 0;        //나머지
        
        while(n > 0) {            
            remainder = n % 3;    //3으로 나눈 나머지
            n = n / 3;            //3으로 나눈 몫
            
            if(remainder == 0) {        // ex) 3일 때
                n -= 1;
                remainder = 4;
            }
            answer = remainder + answer;
        }
        
        return answer;
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

 

생각만 잘 하면 괜찮은 문제인데 생각하는 게 넘 어려웠다....

 

그나저나....

지금 jre 파일 때문에 컴파일이 안 돼서 실행을 못 한다.....

그래서 프로그래머스에서 돌려봤는데 잘 된다.....

근데 컴파일이 아예 안 돼서 빨리 고쳐야겠다.... 큰일이다...............

'Algorithm' 카테고리의 다른 글

모의고사  (1) 2019.05.12
예산  (1) 2019.05.03
콜라츠 추측  (0) 2019.04.28
시저 암호  (1) 2019.04.25
나누어 떨어지는 숫자 배열  (2) 2019.04.22

넘나 오랜만의 포스팅...

좀 여러가지 사정이 있었는데 어쨌든 제대로 못 올린 건 내 잘못 ㅠㅠ....

이제 다시 꾸준히 올려야겠당....

 

 

 

☞ 문제

 

 

 

☞ 코드

 

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package algo01;
 
 
public class mockTest {
    
    public static void main(String[] args) {
        
        int[] answers = {13242};
        solution(answers);
    }
    
    
    public static int[] solution(int[] answers) {
    
        int[] one = {12345};                    //1번 수포자의 답
        int[] two = {21232425};            //2번 수포자의 답
        int[] three = {3311224455};    //3번 수포자의 답
        int cnt1 = 0;            //1번 수포자가 맞혔을 때 증가하는 변수
        int cnt2 = 0;            //2번 수포자가 맞혔을 때 증가하는 변수
        int cnt3 = 0;            //3번 수포자가 맞혔을 때 증가하는 변수
        
 
        //입력한 숫자와 세 수포자의 답 비교한 후 변수 증가
        for(int i = 0; i < answers.length; i++) {
            if(answers[i] == one[i%one.length]) {
                cnt1++;
            }
            if(answers[i] == two[i%two.length]) {
                cnt2++;
            }
            if(answers[i] == three[i%three.length]) {
                cnt3++;
            }
        }
        
       
        int[] cntNum = {cnt1, cnt2, cnt3};
        Arrays.sort(cntNum);
        
//세 수포자 중 가장 많이 맞힌 문제의 갯수 (cnt1 / cnt2 / cnt3 중 가장 높은 숫자)
        int max = cntNum[2];
        
        List<Integer> maxList = new ArrayList<>();
        if(cnt1 == max) {
            maxList.add(1);
        } 
        if(cnt2 == max) {
            maxList.add(2);
        } 
        if(cnt3 == max) {
            maxList.add(3);
        }
        
        int[] answer = new int[maxList.size()];
        int i = 0;
        for(int temp : maxList) {
            answer[i++= temp;
            System.out.println("answer = " + temp);
        }  
        
        return answer;
    }
    
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

 

 

☞ 실행결과

 

 

'Algorithm' 카테고리의 다른 글

124 나라의 숫자  (0) 2019.05.27
예산  (1) 2019.05.03
콜라츠 추측  (0) 2019.04.28
시저 암호  (1) 2019.04.25
나누어 떨어지는 숫자 배열  (2) 2019.04.22

이번 문제는 기존에 풀었던 문제보다 어려울 거 같아서 풀어보자고 한 건데 생각보다 넘 쉬웠당.......ㅋ

처음엔 또 문제를 잘못 읽어서 겁나 어렵겠다~ 했는데 잘못 읽은 거였다 ㅎㅎ

 

암튼~! 그래서!

 

 

 

☞ 문제

 

 

 

 

☞ 코드

 

 

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
package algo01;
 
 
public class budget {
    
    public static void main(String[] args) {
    
        int[] d = {2233};
        solution(d, 10);
    }
    
    
    public static int solution(int[] d, int budget) {
        
        int hap = 0;
        int answer = 0;
        
        Arrays.sort(d);
 
        for(int i = 0; i < d.length; i++) {
            hap += d[i];
            System.out.println(hap);
            
            if(hap <= budget) {
                answer = i + 1;
            }
        }
        
        System.out.println("answer = " + answer);
        
        return answer;
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

우선 배열에 있는 값들을 오름차순으로 정렬을 하고 나서 for문을 돌리는 게 더 효율적이라고 생각돼서 Arrays.sort() 메서드를 썼다. <완주하지 못한 선수> 를 풀 때도 Arrays.sort() 메서드를 사용했었는데, 이 메서드는 진짜 좋은 메서드다....

Arrays.sort() 최고....

 

 

 

☞ 실행결과

 

 

 

 

 

(정확성은 100이니까 참고해도 됩니당...)

 

 

'Algorithm' 카테고리의 다른 글

124 나라의 숫자  (0) 2019.05.27
모의고사  (1) 2019.05.12
콜라츠 추측  (0) 2019.04.28
시저 암호  (1) 2019.04.25
나누어 떨어지는 숫자 배열  (2) 2019.04.22

☞ 문제

 

 

 

 

☞ 코드

 

 

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
42
43
44
45
46
47
48
49
50
package algo01;
 
import java.util.Scanner;
 
public class Collatz {
//    1-1. 입력된 수가 짝수라면 2로 나눕니다. 
//    1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
//    2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
    
//    예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 
//    위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 
//    단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
    
    
    public static int solution(int num) {
        long lnum = num;
        int answer = 0;
          
        while(lnum != 1) {
            if(lnum % 2 == 0) {
                lnum = lnum / 2;
                answer++;
            } else {
                lnum = lnum * 3 + 1;
                answer++;
            }
                        
            if(answer >= 500) {
                answer = -1;
                
                break;
            } 
        }
            
        System.out.println("answer = " + answer);
        return answer;
    }
    
    
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        System.out.println("숫자를 입력해주세요.");
        int num = sc.nextInt();
        solution(num);
        
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

 

 

 

☞ 실행결과

 

 

☞ 정확성

 

 

 

생각보다 금방 푼 문제였당~~

조건문을 잘못 줘서 정확성에서 계속 점수가 낮았는데 고쳐서 뿌듯...

그리고 처음에 입력받은 값을 int로 받아서 오류가 났었다ㅠㅠ

숫자의 길이가 커져서 long으로 받았어야 됐는데 ㄲㅂ

어쨌든 생각보다 쉬웠다 땅땅땅-! 

 

일요일 오후까지 안 올렸으니까 오늘은 노사람~~!

 

'Algorithm' 카테고리의 다른 글

모의고사  (1) 2019.05.12
예산  (1) 2019.05.03
시저 암호  (1) 2019.04.25
나누어 떨어지는 숫자 배열  (2) 2019.04.22
두 정수 사이의 합  (4) 2019.04.18

+ Recent posts