본문 바로가기

분류 전체보기112

[docker] 도커는 어떻게 컨테이너를 격리 시킬까?🤔 # 도커는 어떻게 컨테이너를 격리시킬까? 리눅스에서 쓰이는 Cgroup(control groups)과 네임스페이스(namespaces)에 대해서 알아야 한다. 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능들이다. 도커는 이것들을 이용해 컨테이너와 호스트에서 실행되는 프로세스를 격리시킨다. - Cgroup : CPU, 메모리, Network Bandwith, HD i/o 등 프로세스 그룹의 시스템 리소스 사용량을 관리한다. 어떤 애플리케이션의 리소스 사용량이 많다면 그 애플리케이션을 Cgroup에 집어넣어서 CPU와 메모리 사용 제한 가능. - Namespace : 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술. 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 .. 2021. 12. 26.
[jenkins] React 프로젝트 Docker + jenkins로 CI/CD 📑 젠킨스 튜토리얼 내용 정리 Node + React 로 만든 웹애플리케이션을 Docker + Jenkins로 CI/CD 해보기 위한 샘플 프로젝트. 1. 도커를 설치한다. 2. 도커 Bridge network 를 만든다. docker network create jenkins 3. Jenkins nodes 내부에서 `Docker commands`를 실행하기 위해서 `docker:bind` 도커 이미지를 다운로드하고 실행. 사용하는 터미널에 따라 커맨드 개행 문자가 다름. bash - \, powershell - `, 명령프롬트 - ^ Windows의 경우 실패시 13번 생략해보세요. 더보기 더보기 docker run \ --name jenkins-docker \ --rm \ --detach \ --pri.. 2021. 12. 25.
[network] 네트워크 클래스, 서브넷, 서브넷 마스크, 서브넷팅 1. 네트워크 클래스 최상위 비트의 숫자를 보고 클래스를 식별할 수 있다. IP주소를 사용 용도에 맞게 클래스로 나눴다. 2. IP 주소 = 네트워크 ID + 호스트 ID 네트워크 ID: 인터넷 상에서 네트워크를 구분. 호스트 ID : 특정 네트워크 안에 존재하는 호스트를 구분. [연습문제] 다음 표에서 주어진 IP주소의 클래스, 네트워크 부분, 호스트 부분이 맞게 짝지어진 것을 모두 선택한 것은? ㄱ, ㄴ, ㄹ / ㄷ은 C클래스 이다. 3. 서브넷 마스크 서브넷은 말 그대로 망의 일부, 부분망을 뜻한다. IP주소에서 네트워크 ID와 호스트 ID를 구분하기 위해 사용되는 값이 서브넷 마스크. 클래스별 디폴트 마스크(Default Mask) 값. Network ID는 1이 연속적으로 있어야 하며, Host.. 2021. 12. 25.
[docker] 도커 네트워크 드라이버, Bridge Network ?? jekins 학습의 시발점에 docker network create jenkins 명령어를 만났고, 도커 Birdge Network를 학습한 내용을 정리한다. 일단 위 명령어는 "jenkins"라는 도커 Bridge Network 를 만든다. 1. Bridge Network 가 뭔가요 ? 도커의 기본 네트워크 드라이버. 도커 네트워크 생성 시 네트워크 드라이버를 정의하지 않으면 Bridge Network 로 만들어진다. Bridge Network는 주로 통신이 필요한 독립 실행형 컨테이너에서 사용된다. $ docker network ls NETWORK ID NAME DRIVER SCOPE 8c99b66b3f04 bridge bridge local fb4e9b287e33 host host local 33d.. 2021. 12. 25.
[npm] Github Actions로 npm publish 삽질기 삽질1 - sh: 1: babel: not found on: release: types: [created] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: 12 - run: npm install - run: npm test publish-npm: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '12.x' registry-url: https://registry.npmjs.o.. 2021. 12. 18.
[npm] NPM cheatsheet & package.json 속성 ※ package.json 속성 설명 bin bin 속성은 실행할 수 있는 패키지를 만들 때 정의한다. 패키지를 설치할 때 npm은 bin속성에 정의된 파일의 Symlink를 생성. "bin": { "log-run": "bin/cli.js" }, 여기서 "log-run"은 CLI 명령어가 된다. peerDependencies 호환성 모듈을 지정한다. 배포시 포함되지 않는다. 대신 호환성 모듈이 없으면 경고 메시지 준다. "peerDependencies": { "jquery": "1.9.1 - 3", "popper.js": "^1.12.9" } engines 패키지 Node 버전을 지정. "engines": { "node": ">=0.10.3 2021. 12. 18.
[gradle] googlePlayServicesVersion 설정 방법 googlePlayServiceVersion, firebaseMessagingVersion 버전 뭘로 하지!? # 아래와 같이 구글API 버전을 설정할 때 어떻게 정하는게 좋을까? buildscript { ext { buildToolsVersion = "29.0.3" minSdkVersion = 24 compileSdkVersion = 30 targetSdkVersion = 30 ndkVersion = "20.1.5948944" // react-native-push-notification googlePlayServicesVersion = "17.6.0" // default: "+" firebaseMessagingVersion = "21.1.0" // default: "21.1.0" } ... } # 라이.. 2021. 11. 27.
[react] React 최적화 성능개선 데이터 관리 - 10년 된 태블릿에서도 빠르게 돌려보자. 서비스하고 있는 시스템에서 성능문제로 컴플레인을 받았다. 데이터를 처리하는 기능이 느리다는 문제였고, 사용기기를 확인하니 2014년에 출시한 갤럭시 탭4.7.. 🤣 useMemo, memo, shouldcomponentupdate, componentdidupdate, useCallback 등... 렌더링 관련 최적화는 모두 적용했는데도 느리다면? 렌더링 최적화가 아닌 데이터 사용방식을 최적화하면서 느낀 부분을 정리합니다. 1분 로딩에서 1초 로딩으로 ㄱㄱㄱ # Redux는 최대한 작은 데이터만 관리 # SQLite는 바보다. 실행계획 잘 살피고, 트랜잭션 최소한으로 사용하자. # 꼭 필요한 곳만 새 객체 만들기 // 😋 const list_a = [1, 2, 3, 4, 5]; list_a.push(6);.. 2021. 11. 26.
[sqlite] SQLite 여러행 업데이트 & CORRELATED SCALAR SUBQUERY # MSSQL 처럼 JOIN 을 사용한 UPDATE 구문은 사용할 수 없다. UPDATE T SET T.SuNo = S.SuNo FROM tbSS T INNER JOIN tmp_tbSS S ON S.SuIdx = T.SuIdx # SQLite에서 여러행 업데이트는 아래와 같이 할 수 있다. -- EXPLAIN QUERY PLAN UPDATE OR IGNORE tb_SS SET SuNo = (SELECT SuNo FROM tmp_SS WHERE SuIdx = tb_SS.SuIdx) WHERE EXISTS ( SELECT * FROM tmp_SS WHERE SuIdx = tb_SS.SuIdx ) # 실행계획도 한번 보고~ # CORRELATED SCALAR SUBQUERY 가 보인다. 뭘까? - 상호연관(상.. 2021. 11. 21.
[sql] Stream Aggregate 언제? 왜? (실행계획, aggregate, hash match) SELECT COUNT(idx) AS idx FROM table_A WHERE idx = 6 # 왜 Stream Aggregate 가 나타날까? idx 컬럼은 PK. SELECT 결과는 항상 결과가 하나인데 왜 Stream Aggregate 하지? 위와 같은 단순한 쿼리에서 시작한 질문으로 aggregate와 관련된 실행계획을 공부했다(아직 진행중...) # Stream Aggregate 공부를 해보자 Stream Aggregate 적절하게 정렬된 스트림에서, 행 그룹에 대한 요약 값을 계산합니다. Hash Match 정렬되지 않은 스트림에서, 최상위 입력의 각 행으로 해시 테이블을 작성하고, 최하위 입력의 각 행으로 해시 테이블을 검색하여, 일치하는 모든 행을 출력합니다. [ Sort -> Stream.. 2021. 11. 16.