๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

algorithm

(230515) ์•Œ๊ณ ๋ฆฌ์ฆ˜-๋ฒ„๋ธ”์ •๋ ฌ / AWS- EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ssh ์ ‘์†

๋ฒ„๋ธ”์ •๋ ฌ(O(N^2))

์•ž ์ˆซ์ž๋ฅผ ๋น„๊ตํ•ด ๋” ํฐ ๊ฒƒ์ด ๋’ค๋กœ ๊ฐ€๊ฒŒ ์„ค์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

arr.length - 1๋ฒˆ ๋ฐ˜๋ณต (n-1)๋ฒˆ

 

๋ฒ„๋ธ”์ •๋ ฌ step1

public class BubbleSort01 {
   public static void main(String[] args) {
       int[] arr = {7, 2, 3, 9, 28, 11};

       int temp = arr[0];
       arr[0] = arr[1];
       arr[1] = temp;

       System.out.println(Arrays.toString(arr));
   }
}

 

๋ฒ„๋ธ”์ •๋ ฌ step2 

public class BubbleSort01 {
   public static void main(String[] args) {
       int[] arr = {7, 2, 3, 9, 28, 11};

       for (int i = 0; i < arr.length - 1; i++) {
           if(arr[0] > arr[1]){
               int temp = arr[0];
               arr[0] = arr[1];
               arr[1] = temp;
           }
       }
   }
}

if๋ฌธ๊ณผ for๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์กฐ๊ฑด์— ์ถฉ์กฑํ•  ์‹œ ๋ฐ”๋€Œ๋Š” ๊ฑธ๋กœ ์ˆ˜์ • ( ํŠน์ • ์กฐ๊ฑด์— ์ถฉ์กฑํ•  ์‹œ swap )

 

๋ฒ„๋ธ”์ •๋ ฌ step3

public class BubbleSort01 {
    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28};

        for (int i = 0; i < arr.length-1; i++) {
            if(arr[i]>arr[i+1]){
                int temp=arr[i];
                arr[i]= arr[i+1];
                arr[i+1]=temp;
            }
        }System.out.println(Arrays.toString(arr));
    }
}

์—ฌ๊ธฐ์„œ arr ๋ฐฐ์—ด ๋งˆ์ง€๋ง‰์— 1์„ ์ถ”๊ฐ€ํ•ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ 1์ด ๋งจ ์•ž์— ์˜ค์ง€ ์•Š๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‹ˆ ์™„์ „ํžˆ ๋๊นŒ์ง€ ๋น„๊ต๋ฅผ ํ•˜์ง€๋Š” ์•Š์€ ์ƒํƒœ์ด๋‹ค.

 

๋ฒ„๋ธ”์ •๋ ฌ step4

public class BubbleSort01 {
    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28, 1};

        for (int j = 0; j < arr.length - 1; j++) {
            for (int i = 0; i < arr.length - 1; i++) {
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

for๋ฌธ์„ ํ•œ๋ฒˆ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ๋งˆ์ง€๋ง‰ 1๊นŒ์ง€ loop ๋Œ์•„ ์ •๋ ฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

๋ฒ„๋ธ”์ •๋ ฌ step5 ( ์—ฌ๊ธฐ์„œ ๊ฐœ์„ ํ•  ์  )

๋งˆ์ง€๋ง‰์„ ๋นผ๊ณ  ๋Œ๋ ค๋„ ๋จ ์–ด์ฐจํ”ผ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ผ

public class BubbleSort02 { //๊ธฐ์กด ์ฝ”๋“œ์—์„œ ๊ฐœ์„ ์ ์œผ๋กœ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ์ œ์˜คํ•˜๊ณ  ๋Œ๋ฆฌ๋Š” ๊ฒƒ
    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28, 1};

        for (int j = 1; j < arr.length; j++) {
            for (int i = 0; i < arr.length - j; i++) { //arr.length-1
                if (arr[i] > arr[i + 1]) {
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

 

OOP๋กœ ๋งŒ๋“ค๊ธฐ step1

import java.util.Arrays;

public class BubbleSort02 {
   public int[] sortARound(int[] arr){
       for (int i = 0; i < arr.length - 1; i++) {
           if (arr[i] > arr[i + 1]) {
               int temp = arr[i];
               arr[i] = arr[i + 1];
               arr[i + 1] = temp;
           }
       }
       return arr;
   }
   public static void main(String[] args) {
       BubbleSort02 bubbleSort02 = new BubbleSort02();
       int[] arr = {7, 2, 3, 9, 28, 1};

       for (int j = 1; j <= arr.length; j++) {
           arr = bubbleSort02.sortARound(arr);
       }
       System.out.println(Arrays.toString(arr));
   }
}

 

OOP๋กœ ๋งŒ๋“ค๊ธฐ step2

public class BubbleSortOOP {
    public int[] sortARound(int[] arr, int until) {
        for (int i = 0; i < until; i++) {
            if(arr[i] > arr[i+1]){
                int temp=arr[i+1];
                arr[i] = arr[i+1];
                arr[i+1]=temp;
            }
        }
        return arr;
    }

    public int[] sort(int[] arr) {
        for (int j = 1; j <= arr.length; j++) {
            arr = sortARound(arr, arr.length-j);
        }
        return arr;
    }

    public static void main(String[] args) {
        int[] arr = {7,2,3,9,28,1};
        BubbleSortOOP bubbleSort03 = new BubbleSortOOP();

        System.out.println(Arrays.toString(arr));
    }
}

until์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ i์—์„œ j๋กœ ํ‘œํ˜„๋˜๋Š” ๋ถ€๋ถ„์„ ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ์ž…๋ ฅ๋ฐ›์•„ ์ž…๋ ฅ

 

 

๋ฒ„๋ธ”์ •๋ ฌ ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ• - arr[0]๊ฐ’์„ ๊ณ ์ •ํ•˜์—ฌ ๋น„๊ต 

public class BubbleSortTwo {
    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28, 1};
        int i = 0;

        for (int j = 1; j < arr.length; j++) {
            if(arr[i] > arr[j]){ //arr[0] (7)์ด arr[j] (2)๋ณด๋‹ค ํฐ๊ฐ€?
                int temp = arr[i]; // arr[0]์ด ํฌ๋‹ค๋ฉด temp์— arr[0] ๋Œ€์ž…
                arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ.๊ฐ€์žฅ์ž‘์€ ์ˆ˜)์—๋Š” j๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ
                arr[j] = temp; //๋‚จ์€ j ์ž๋ฆฌ์—๋Š” arr[0] (7)
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

step2

public class BubbleSortTwo {
    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28, 1};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = i+1; j < arr.length; j++) {
                if(arr[i] > arr[j]){ //arr[0] (7)์ด arr[j] (2)๋ณด๋‹ค ํฐ๊ฐ€?
                    int temp = arr[i]; // arr[0]์ด ํฌ๋‹ค๋ฉด temp์— arr[0] ๋Œ€์ž…
                    arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ.๊ฐ€์žฅ์ž‘์€ ์ˆ˜)์—๋Š” j๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ
                    arr[j] = temp; //๋‚จ์€ j ์ž๋ฆฌ์—๋Š” arr[0] (7)
                }
            }
        }System.out.println(Arrays.toString(arr));
    }
}

j๊ฐ€ i+1๋ฒˆ์งธ๊ฐ€ ๋˜์–ด i์™€ arr.length๊ธธ์ด๋งŒํผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ฒŒ for๋ฌธ์„ ๋„ฃ์–ด์ค€๋‹ค.

 

๋ฒ„๋ธ”์ •๋ ฌ ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ• OOP

public class BubbleSortTwoOOP {
    public int[] sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) { //arr[0] (7)์ด arr[j] (2)๋ณด๋‹ค ํฐ๊ฐ€?
                    int temp = arr[i]; // arr[0]์ด ํฌ๋‹ค๋ฉด temp์— arr[0] ๋Œ€์ž…
                    arr[i] = arr[j]; // ๊ธฐ์กด arr[0] (์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ.๊ฐ€์žฅ์ž‘์€ ์ˆ˜)์—๋Š” j๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ
                    arr[j] = temp; //๋‚จ์€ j ์ž๋ฆฌ์—๋Š” arr[0] (7)
                }
            }
        }
        return arr;
    }

    public static void main(String[] args) {
        int[] arr = {7, 2, 3, 9, 28, 1};
        BubbleSortTwoOOP bubbleSortTwoOOP = new BubbleSortTwoOOP();
        arr = bubbleSortTwoOOP.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

AWS

์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๊ธฐ

 

aws ํ™ˆํŽ˜์ด์ง€ ์ ‘์† ํ›„ ๋กœ๊ทธ์ธ -> EC2 ์ฆ๊ฒจ์ฐพ๊ธฐ -> 

๋‚˜๋ผ๋ฅผ ํ•œ๊ตญ - ์„œ์šธ๋กœ ๋ณ€๊ฒฝ

์ธ์Šคํ„ด์Šค ์‹œ์ž‘

 

์ด๋ฆ„ ์„ค์ • ๋ฐ OS ์„ค์ • - ์šฐ๋ถ„ํˆฌ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ ์™ธ ์„ค์ •

- ์ธ์Šคํ„ด์Šค ์œ ํ˜• : t3-small

- ํ‚ค ํŽ˜์–ด ์ƒ์„ฑ : ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ํ‚คํŽ˜์–ด์œ ํ˜•(RSA), ํ‚ค ํŒŒ์ผ ํ˜•์‹(.pem)

- ๋„คํŠธ์›Œํฌ ์„ค์ • : ์ธํ„ฐ๋„ท์—์„œ HTTPS ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ , ์ธํ„ฐ๋„ท์—์„œ HTTP ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ, ์—์„œ SSH ํŠธ๋ž˜ํ”ฝ ํ—ˆ์šฉ

- ๊ณ ๊ธ‰ ์„ธ๋ถ€ ์ •๋ณด : ์ŠคํŒŸ ์ธ์Šคํ„ด์Šค ์š”์ฒญ

 

์ธ์Šคํ„ด์Šค ์‹œ์ž‘์„ ๋ˆ„๋ฅด๋ฉด

์ด๋ ‡๊ฒŒ ๋œฌ๋‹ค.


SSH ์ ‘์†ํ•˜๊ธฐ

ํ„ฐ๋ฏธ๋„์—์„œ 

ssh ubuntu@ec2๋„๋ฉ”์ธ -i <pemkey_name>.pem

+ ec2 ๋„๋ฉ”์ธ์€ ์œ„ ์‚ฌ์ง„์—์„œ ์šฐ์ธก ํ•˜๋‹จ์— ํผ๋ธ”๋ฆญ IPv4 DNS ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋ฉด ๋œ๋‹ค.

 

๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ssh ubuntu@ec2-3-38-147-211.ap-northeast-2.compute.amazonaws.com -i likelion-course5.pem

์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ–ˆ๋‹ค. 

 

ssh ์ ‘์†ํ•˜์—ฌ webhook ๋ณด๋‚ด๊ธฐ

VAR="$1"

curl \
-H "Content-Type: application/json" \
-d "{\"username\": \"Hi\", \"content\": \"$VAR\"}"  \
https://discord.com/api/webhooks/1090549186040184913/_nVKm8TfNkMjjZDz2lgNqbVQBmciLcgii6trO7nXIEz7LAtMHVRBXkSVwoSd-nYRGxzU

 

์ด๊ฑฐ๋Š” ๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ๊ณต์œ ํ•ด์ฃผ์‹  ์ฝ”๋“œ์ธ๋ฐ ๋‚˜๋Š” vi webhook.sh ์„ ์ž…๋ ฅํ•ด ๋‚ด์šฉ์„ ํŽธ์ง‘ํ•ด์ฃผ์—ˆ๋‹ค.

VAR="$1"

curl \
-H "Content-Type: application/json" \
-d "{\"username\": \"์ ‘๋‹ˆ๋‹ค์ €์š”\", \"content\": \"$VAR\"}"  \
https://discord.com/api/webhooks/1090549186040184913/_nVKm8TfNkMjjZDz2lgNqbVQBmciLcgii6trO7nXIEz7LAtMHVRBXkSVwoSd-nYRGxzU

์ดํ›„ bash webhook.sh "์“ฐ๊ณ ์‹ถ์€๋ง"

ํ•˜๋ฉด ๋””์Šค์ฝ”๋“œ์—์„œ webhook์ด ๋‚ ๋ผ์˜จ๋‹ค!!!!!!!

 


Docker ์„ค์น˜ 

๋‹ค์Œ์€ Docker ์„ค์น˜์ธ๋ฐ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” root ๊ถŒํ•œ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰

 

๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ๊ณต์œ ํ•ด์ฃผ์‹  ๊ฒฝ๋กœ๋กœ ํ•œ๋ฒˆ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install; cd docker_minikube_kubectl_install;sh docker_install.sh;

 

์ˆ˜๋™์„ค์น˜ ํ•˜๋Š” ๋ฒ•

sudo apt-get update -y
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository --yes \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io -y

Oh My Bash ์„ค์น˜

oh my bash ( mac์€ oh my zsh ) ๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์œ„ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅ๋งŒ ํ•˜๋ฉด ์„ค์น˜ ์™„๋ฃŒ๋‹ค.

 


NginX ์ ‘๊ทผํ•˜๊ธฐ

 

์œ„ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰ ํ•œ ๋‹ค์Œ  ec2-3-36-101-43.ap-northeast-2.compute.amazonaws.com <- ์—ฌ๊ธฐ๋กœ ๋“ค์–ด๊ฐ€๋ฉด

์œ„์™€ ๊ฐ™์€ ํŽ˜์ด์ง€๊ฐ€ ๋œจ๊ฒŒ ๋˜๋ฉด ์„ฑ๊ณต์ด๋‹ค.

 


 

์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘ 

์„œ๋ฒ„ ์ ‘์†์ด ์•ˆ๋  ๋•Œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ณด์•ˆ > ๋ณด์•ˆ๊ทธ๋ฃน

 

์šฐ์ธก ํ•˜๋‹จ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํŽธ์ง‘

 

ํฌํŠธ๋ฒ”์œ„ ํ˜น์€ ์œ ํ˜• ํŽธ์ง‘์„ ํ•˜๋ฉด ๋œ๋‹ค.