스터디
[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub)에 Random Port 설정하기
JupyterHub에서 Spark 사용하기 [배경] 이전 포스팅(쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기)에서 설명했듯이, 단순히 JupyterHub를 구성하면 끝나는 것이 아니라, JupyterHub에서 Spark를 사용해야 합니다. 기본적으로 쿠버네티스 환경의 JupyterHub Helm은 호스트 네트워크(Host Network, Pod이 올라간 노드의 네트워크)를 사용하지 않는 것을 전제로 하는데요. 그래서 새로운 계정이 접속해서 노트북 Pod(singleuser)을 만들 때마다 Port를 무조건 8888로 할당하게 설정되어 있습니다. 호스트 네트워크를 사용하지 않기 때문에 한 노드에 여러 개의 Pod이 생성되어 모두 8888 포트를 사용하더라도, 실제 노드의 8..
![[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsJRIA%2Fbtrzz6lPYWx%2Fovh26B7ELH3r15k8KPQOGk%2Fimg.png)
[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기
쿠버네티스에 JupyterHub 구성하기 [배경] 회사에서 쿠버네티스(Kubernetes)를 이용해서 분석 환경을 구성하고 있습니다. 회사에서는 쿠버네티스를 Iaas(Infra as a service)를 제공하고, 각 팀에서는 본인의 팀 상황에 맞게 환경을 구축하는거죠. 제가 소속된 팀에서는 최근 JupyterHub를 도입하기로 결정했는데요. 그 이유는 3가지가 있습니다. Spark를 편리하게 사용하기 위해 노트북 환경이 필요함. 보안 설정을 위해 이미지를 따로 빌드해야 함. VSCode에서 SSH로 연결해서 사용 가능하도록 각자의 Instance(Pod)을 따로 구성해야 함. Spark를 사용하기에는 Zeppelin이 더 편리한 부분이 있지만 특히 보안 이슈와 VSCode 접근 목적으로 결국 Jupyt..
[Vue] #1 Vue 2 시작하기
Vue CLI Vue CLI는 npm(Node Package Manager)를 통해서 설치해야 합니다. 따라서 node, npm을 먼저 설치해봅시다. 참고로 node와 npm은 아래 설명을 참고하면 됩니다. Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, Non 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. node, npm, yarn 설치 (macOS) node, npm 설치 brew install node node -v npm -v yarn 설치 brew install yarn yarn -v vue cli 설치..
![[Leetcode] 01. Add Two Numbers (Medium)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqvn2E%2FbtrtNQ8NQU2%2FYttWofp5j7JdQl9sIQ4Xk0%2Fimg.png)
[Leetcode] 01. Add Two Numbers (Medium)
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next #최종 제출 class Solution: def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]: result = ListNode() curr_node = result while True: next_val, curr_node.val = divmod(curr_node.val+l1.val+l2.val, 10) curr_node.next = ListNode(val=ne..
[파이썬 클린코드] #1 클린 코드의 중요성
클린 코드란? 품질 좋은 소프트웨어를 개발하고 견고하고 유지보구가 쉬운 시스템을 만들고 기술 부채를 회피하는 것 코드를 포매팅하고 구조화하여도 클린 코드의 요건을 충족시켰다고 말할 수 없다. 클린코드는 그 이상의 유지보수성이나 소프트웨어 품질에 관한 것을 말한다. 클린 코드의 중요성 민첩한 개발과 지속적인 배포 가능 프로젝트를 일정하게 예측 가능한 속도로 지속적으로 배포하려고 한다면 유지보수가 가능한 좋은 코드를 갖는 것이 필수적임 그렇지 않으면 새로운 기능을 추가할 때마다 리팩토링을 하고 기술 부채를 해결하기 위해 멈춰야 한다. 프로젝트 코딩 스타일 가이드 준수 코딩 가이드라인은 품질 표준을 지키기 위한 최소한의 요구사항 좋은 코드 레이아웃에서 가장 필요한 특성은 일관성 코드가 일관되게 구조화되어 있으..
[Ray] 1. Python - Ray의 기본 개념과 Tasks
1. Ray란? Ray를 테스트 해볼 수 있는 환경을 구성하였으니 Ray를 사용해봐야 합니다. Ray는 아직까지 국내에서는 활성화된 라이브러리가 아니라서 자료를 찾아보기 어려운데요, 가장 공부해보기 좋은 자료는 Ray 공식 문서입니다. docs.ray.io/en/master/ray-overview/ A Gentle Introduction to Ray — Ray v2.0.0.dev0 .rst .pdf to have style consistency --> docs.ray.io 공식 문서에 따르면 Ray는 "분산 애플리케이션을 구축하기 위해 간단하고 범용적인 API를 제공"을 미션으로 합니다. 그리고 그 미션을 달성하기 위해 아래 3가지 목표가 있습니다. Providing simple primitives fo..
![[Ray] 0. GCP와 Docker를 이용한 Jupyter Notebook 환경 구성](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgBcHn%2FbtqZn09ssRv%2F7b8aEOAKstTROPhwYKTkW0%2Fimg.png)
[Ray] 0. GCP와 Docker를 이용한 Jupyter Notebook 환경 구성
Ray란 아주 단순한 데코레이터만 사용하는 것으로 병렬 처리를 구현해주는 기능입니다. # https://docs.ray.io/en/latest/# # Ray 공식 문서에 있는 Getting Started with Ray Code import ray ray.init() @ray.remote def f(x): return x * x futures = [f.remote(i) for i in range(4)] print(ray.get(futures)) # [0, 1, 4, 9] @ray.remote라는 단순한 데코레이터로 함수 또는 클래스를 감싸는 것만으로 코드를 병렬 처리할 수 있습니다. 일반적인 파이썬 코드뿐 아니라 ML, Crawling 등에서 Ray를 활용하여 병렬 처리를 적용할 수 있고, 코어가 많을수..
![[Open API] 사이퍼즈 전적 검색 사이트 만들기 #1 - 닉네임 검색](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5bDtO%2FbtqxcMKCLKA%2FOp4S08z5dD1s0u5vu1In91%2Fimg.png)
[Open API] 사이퍼즈 전적 검색 사이트 만들기 #1 - 닉네임 검색
롤, 배그 Open API를 다뤄보다 보니 한 번의 분석으로 끝나는 것이 아니라, 분석 결과를 상시적으로 라이브 할 수 있는 사이트를 만들어보고 싶어 졌다. 그래서 사이퍼즈 Open API를 이용해 전적 검색 사이트를 간단하게 만들어 보고, 더 나아가서 게임 내의 요소들을 분석하고 결과를 라이브 해보려고 한다. 파이썬을 이용해 분석 및 웹 개발을 하며 웹 개발은 처음이기에 Flask라는 간단하게 시작할 수 있는 프레임워크를 공부하며 간단하게 만들어보기 시작했다. 여기서 '고구마' 유저의 닉네임을 클릭하면 해당 유저의 전적 기록을 조회한다. 현재는 닉네임 검색과 해당 유저들의 전적 검색 결과를 간단한 표로 보여주는 기능만 구현한 상태 기능도 계속해서 추가하고, 비효율적이고 가독성 떨어지는 코드들도 수정해야..
[SQL] SQL 기초교재 10 ~ 12
10장 테이블 합치기 1. 내부 조인 SELECT 테이블명1.열 이름1, 테이블명2.열 이름2 FROM 테이블명1, 테이블명2 WHERE 테이블명1.KEY=테이블명2.KEY; SELECT 별칭1.열 이름1, 별칭2.열 이름2 FROM 테이블명1 (AS) 별칭1, 테이블명2 (AS) 별칭2 WHERE 별칭1.KEY=별칭2.KEY; SELECT 테이블명1.열 이름1, 테이블명2.열 이름2 FROM 테이블명1 INNER JOIN 테이블명2 ON 테이블명1.KEY=테이블명2.KEY; SELECT 별칭1.열 이름1, 별칭2.열 이름2 FROM 테이블명1 (AS) 별칭1 INNER JOIN 테이블명2 (AS) 별칭2 ON 별칭1.KEY=별칭2.KEY; EX1) INNER JOIN 사용하기 SELECT TMP1.*,..
[SQL] SQL 기초교재 07 ~ 09
7장 기본 함수 배우기 1. 문자 함수 함수설명 LOWER 소문자로 변환 UPPER 대문자로 변환 LENGTH 문자의 길이 반환 SUBSTR 문자 값 중 원하는 길이만큼 반환 RTRIM 문자열 오른쪽 공백 제거 LTRIM 문자열 왼쪽 공백 제거 TRIM 문자열 양쪽 공백 제거 REPLACE 특정 문자열을 다른 문자열로 대체 COALESCE 조건에 따라 여러 가지 값으로 치환 INTCAP 첫 글자를 대문자, 나머지를 소문자로 변환 2. 숫자 함수 함수설명 ROUND 소수점의 자릿수를 지정하여 반올림 TRUNC 해당 소수점 자리에서 잘라낼 때 사용 MOD(M, N) M을 N으로 나눈 나머지 ABS 값을 절대값으로 변환할 때 사용 SIGN 숫자가 양수면 1, 음수면 -1, 0이면 0을 반환 SORT 값의 제곱..