뉴뉴의 메모장
Dockerfile과 Docker Image
Dockerfile과 Docker Image
2023.08.27🐳 Docker 시리즈 살펴보기 🐳 1. Docker와 Container ➡️ 2. Dockerfile과 Docker Image 3. Docker Volume 4. Docker Network 5. Docker Compose 🐳 Dockerfile Docker Image를 만들기 위한 설정파일이다. 여러가지 명령어를 토대로 Docker File을 작성하면 설정대로 Docker Image를 만들 수 있다. 이때 파일 이름을 'Dockerfile'로 해야한다. 이름을 변경하고 싶다면 빌드시에 옵션(-f/--file)을 주어야 한다. ✅ Dockerfile 항목 Dockerfile 예시는 다음과 같다. FROM node:18-alpine # nodejs alpine 버전 이미지를 가져온다. WORKDIR /us..
rsync에 대해 알아보자.
rsync에 대해 알아보자.
2023.08.27rsync란? rsync란 컴퓨터 시스템 상에서 파일을 효율적으로 전송하고 동기화하기 위한 프로토콜이자 unix용 유틸리티의 하나로, 파일의 타임스탬프와 크기를 검사한다. 출발지와 목적지를 비교해, 다른 부분만 전송할 수 있다. scp보다 빠르고, 변경된 파일들의 싱크를 맞춰줄 수 있어 대용량 파일을 전송하고 동기화할때 좋다. 회사에서 서버를 교체했는데, 그때 8TB의 파일을 전송해야 하는 일이 있었다. 이틀에 걸려 파일 및 디렉토리 구조를 미리 복사하고, 최종적으로 한번 더 수행해 sync를 맞췄다. 실제 rsync를 수행하기 전, --dry-run을 수행해 한 번 확인하는 과정을 거치길 바란다.. 이 옵션 없었으면 배포일에 이틀걸렸던 복사과정을 한번 더 실행시킬 뻔 했다.... 사용법 $ rsync ..
[Elasticsearch] Elasticsearch에 Array 타입이 있나?
[Elasticsearch] Elasticsearch에 Array 타입이 있나?
2023.07.24없다. opensearch를 쓰고있지만 관련 문서는 Elasticsearch Docs에만 있어서 일단 ES로 표기하지만.. 오늘 테스트해본 바로는 opensearch에도 동일하게 적용된다. 애초에 거의 비슷하니.. Elasticsearch에는 Array 데이터 타입이 없으나, 0개나 N개를 포함할 수 있다. Array 형태로 삽입하는것은 문제가 없으나, 그 원소들은 모두 동일한 데이터 타입을 가져야 한다. String Array : [ "one", "two" ] Integer Array : [ 1, 2 ] 2차원 Array : [ 1, [ 2, 3 ]] 는 [ 1, 2, 3 ] 와 동일하게 취급한다. Object Array : [ { "name": "Mary", "age": 12 }, { "name": ..
[Elasticsearch/Opensearch] Nested Field type
[Elasticsearch/Opensearch] Nested Field type
2023.07.18💡Object field type PUT testindex1/_doc/100 { "patients": [ {"name" : "John Doe", "age" : 56, "smoker" : true}, {"name" : "Mary Major", "age" : 85, "smoker" : false} ] } 평범한 경우라면 위와 같이 nested object가 object field type으로 자동으로 매핑될 것이다. 위 데이터가 저장되면, object는 flat 해진다. { "patients.name" : ["John Doe", "Mary Major"], "patients.age" : [56, 85], "smoker" : [true, false] } 여기서 age가 75 이상이고, 흡연자인 환자를 검색하려면..
[Javascript] ('b'+'a'+ +'a'+'a').toLowerCase() 의 결과는 banana ???
[Javascript] ('b'+'a'+ +'a'+'a').toLowerCase() 의 결과는 banana ???
2023.07.09자바스크립트에서 ('b'+'a'+ +'a'+'a').toLowerCase() 의 결과는 banana 이다. 이유는 이렇다. 'b' + 'a'를 연결하면 'ba'가 된다. +'a'에서 +를 단항연산자로 인식해 자바스크립트 엔진은 'a'을 숫자로 형변환을 시도한다. 하지만 'a'는 숫자로 해석할 수 없는 값이라 NaN (Not a Number)을 반환한다. NaN + 'a' 를 시도하면 NaN은 문자열 "NaN"이 된다. 따라서 NaN + 'a' 는 "NaNa"가 된다. 결과적으로 ('b'+'a'+ +'a'+'a') 는 'baNaNa'가 되고 이를 소문자로 변환하면 banana가 된다. 이상한 자바스크립트~..
[프로그래머스] Lv2. 방문 길이 - 49994 (Ptyhon)
[프로그래머스] Lv2. 방문 길이 - 49994 (Ptyhon)
2023.07.09🔎문제 ✔️ Summer/Winter Coding(~2018) https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡풀이 현재 좌표를 x, y / 다음 좌표를 nx, ny 라고 했을때 (x, y) -> (nx, ny) or (nx, ny) -> (x, y) 를 한 사실이 있는지 체크해 없으면 처음간 길이므로 +1 해주는 문제였다. 이때 좌표계를 벗어나면 무시한다. set을 하나 선언해, 예를들어 (1,2)에서 (3,4)로 갔으면 "1324" 문자열..
[프로그래머스] Lv.4 쿠키 구입 (Python)
[프로그래머스] Lv.4 쿠키 구입 (Python)
2023.07.09🔎문제 ✔️ Summer/Winter Coding(~2018) https://school.programmers.co.kr/learn/courses/30/lessons/49995 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡풀이 1 투포인터로 풀었다. m을 고정하고 왼쪽, 오른쪽을 투포인터로 설정한다. 왼쪽의 합이 오른쪽의 합보다 더 작으면 왼쪽 포인터를 감소시켜 왼쪽의 합을 늘린다. 오른쪽의 합이 왼쪽의 합보다 더 작으면 오른쪽 포인터를 증가시켜 오른쪽의 합을 늘린다. 왼쪽이나 오른쪽중 범위를 초과할경우 while문을 종료하고, 다음 m으로 같은 작업..
[BOJ/백준] 11054. 가장 긴 바이토닉 부분 수열 (Java)
[BOJ/백준] 11054. 가장 긴 바이토닉 부분 수열 (Java)
2023.06.15🔎문제 https://www.acmicpc.net/problem/11054#:~:text=%ED%9E%8C%ED%8A%B8,%EB%B0%94%EC%9D%B4%ED%86%A0%EB%8B%89%20%EB%B6%80%EB%B6%84%20%EC%88%98%EC%97%B4%EC%9D%B4%EB%8B%A4. 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 💡풀이 증가하다 감소하거나, 감소만하거나, 증가만 하는, 변곡점이 하나 이하인 수열을 구하는 문제이다. 증가하는 부분과 감소하는 부분이 각각 길수록 바이토닉 수열도 길것이다. 그러므로 LI..
[BOJ/백준] 2352. 반도체 설계 (Java)
[BOJ/백준] 2352. 반도체 설계 (Java)
2023.06.13🔎문제 https://www.acmicpc.net/problem/2352 2352번: 반도체 설계 첫째 줄에 정수 n(1 ≤ n ≤ 40,000)이 주어진다. 다음 줄에는 차례로 1번 포트와 연결되어야 하는 포트 번호, 2번 포트와 연결되어야 하는 포트 번호, …, n번 포트와 연결되어야 하는 포트 번호가 주 www.acmicpc.net 💡풀이 LIS(가장 긴 증가하는 부분 수열) 문제이다. (백준에 시리즈로 있는 LIS 문제들은 따로 정리해놓은것이 있으니 참고하세요😊) 지정된 포트들을 연결하면서, 가장 많이 연결하면 된다. 뒷쪽 포트가 앞보다 더 앞 포트를 연결하면 안되므로, 뒤로 갈수록 큰 숫자의 포트를 연결해야한다. 따라서 증가하는 수열을 구하면 되는 것이고, 가장 긴 것을 구하는것이므로 LIS문제..
[BOJ/백준] 3109. 빵집 (Java)
[BOJ/백준] 3109. 빵집 (Java)
2023.06.13🔎문제 https://www.acmicpc.net/problem/3109 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 💡풀이 왼쪽에서 오른쪽으로, 건물을 피해서 파이프라인을 설치한다. 이때 주의할 점이 있다. 문제에는 '각 칸은 오른쪽, 오른쪽 위 대각선, 오른쪽 아래 대각선으로 연결할 수 있다' 고 되어있지만, 오른쪽 위 대각선, 오른쪽, 오른쪽 아래 대각선 순서로 봐야 한다는 것이다. 최대한 위쪽으로 파이프를 밀착시켜 최대한 많은 파이프를 설치하도록 하는 것이다. 또, 이미 탐색했지만 파이프가 설치되지 않은 곳은 더 ..
Docker와 Container
Docker와 Container
2023.06.02🐳 Docker 시리즈 살펴보기 🐳 ➡️ 1. Docker와 Container 2. Dockerfile과 Docker Image 3. Docker Volume 4. Docker Network 5. Docker Compose Docker Docker 란? 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다 Docker 의 장점 Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있다. 모든 제품의 빌드, 배포, 운영을 같은 도구와 같은 방법으로 할 수 있다. Ochestration Tool (Kubernete..
특정 리눅스 배포판(centos, rockylinux ..) WSL에서 사용하기
특정 리눅스 배포판(centos, rockylinux ..) WSL에서 사용하기
2023.06.02https://learn.microsoft.com/ko-kr/windows/wsl/install-manual 이전 버전 WSL의 수동 설치 단계 wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다. learn.microsoft.com 해당 문서에서 다양한 리눅스 배포판을 설치하는 방법을 소개하고 있다. 하지만 이 목록에 없는 리눅스를 설치하고 싶다면 ..? 인터넷에 centos7 설치하기 ~ 등등 파일이 많이 돌아다니지만 특정 버전을 사용한다던가 내가 찾는것이 아무리 찾아도 없다던가 하는 경우 도커를 이용해 추출할 수 있다. rockylinux 9.2 를 도커에서 추출해, wsl에 설치해보자. 1. 이미지를 받는다. docker..