분류 전체보기
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성
oracleDB에서 embulk를 활용해 bigQuery로 이관하는 작업 - VM구성
2021.02.251) 개요 Windows Server에 Oracle DB를 설치하고 Linux Server에 Instant Oracle Client 를 사용해 서로 연결해 둔 다음 embulk를 활용해 Windows Server의 Oracle DB의 데이터를 bigQuery로 이관하는 작업입니다. 이 포스팅에서는 VM 구성을 어떻게 할지 알아보겠습니다. 잘 안되는게 있으면 댓글로 알려주세요. 바로바로 답변 드리겠습니다. (부족한 점도,,) 2)VM구성 WIndows Server 와 Ubuntu 두개를 구성합니다. GCP의 VM으로 이동합니다. 설정파일을 적절하게 선택합니다. Machine type을 사용 목적에 맞도록 설정합니다. (N1 시리즈에 2vCPU, 7.5 GB memory로 설정해두었습니다.) 그리고, Boo..
[GCP] Streaming 처리
[GCP] Streaming 처리
2021.02.09I. 도입 기존에 Batch 데이터만 처리하다 이번 기회에 Streaming 으로 처리해보고자 Pub/Sub에 대해 공부하겠습니다. 여력이 된다면 kafka를 함께 다뤄보면서 오픈소스로 확장시켜보겠습니다. 구글 클라우드 플랫폼에서 Streaming 처리하는 방식을 우선 살펴보겠습니다. II. 아키텍처 위 사진에서 Ingest, Enrich 영역을 주의 깊게 볼 필요가 있습니다. 현재 포스터에서 시작하고자 하는건 Pub/Sub영역 입니다. 보통 제가 알기론 Pub/Sub에서 데이터를 실시간 수집, Batch 데이터를 함께 처리하게 됩니다. 혹은 Pub/Sub에서 수집한 데이터를 Batch 파일과 엮어서 저장한뒤(Google Cloud Storage)에 PTransform 을 하게 됩니다. 여기서 PTran..
다산의 마지막 공부
다산의 마지막 공부
2020.12.29책을 선정하고 후기를 작성함에 있어서 다소 주관적인 이야기가 섞여 있음을 알려드립니다. 감사합니다. 다산 정약용을 아시나요? 고등학교 국어 시간에 잠깐 나오는걸로 기억하지만 오랜 시간 지난 후에 이 책을 서점에서 봤을 때 다산이라는 사람에 대해 2초간 골똘이 생각을 하였습니다. 다산 정약용, 조선 후기의 문신 그리고 실학자, 저술가, 시인, 철학자, 과학자, 공학자로 소개되어 있습니다. 현 시대를 살아오면서 각 분야에서 최고가 되신분은 많지만 다방면에서 최고를 이루신 분은 몇 없을 거라 생각합니다. 그래서 골랐습니다. 과연 다방면에서 당대 최고라고 불렸던 다산 정약용 선생님께서 어떻게 살아오셨는지 궁금해 책을 구매해서 읽어보았습니다. 이 책을 한 줄로 요약하라 한다면 "나답게 살기 위해서 인의를 지켜라"..
BOJ_1080_행렬
BOJ_1080_행렬
2020.11.15문제유형 그리디 문제풀이 Map의 좌표를 순회합니다. 그리고 before_map 과 after_map의 한점씩을 비교합니다. 서로 다를 경우에만 뒤짚는 연산을 수행합니다. 이 문제를 그리디로 해결하지 않고 연산을 뒤짚는 경우를 고려해본다면 (N-2) * (M-2) 이 연산의 개수가 됩니다. 즉, 연산을 하는 경우 그리고 연산을 하지 않는 경우가 생기니까 2^NM 즉, 2의 2500승이 됩니다. (N과 M은 50보다 작거나 같은 자연수입니다.) 코드 package backjun; import java.util.*; import java.io.*; public class BOJ_1080_행렬 { static int row; static int column; static char[][] row_map; sta..
BOJ 1619, 최소비용구하기
BOJ 1619, 최소비용구하기
2020.11.08문제유형 다익스트라 문제풀이 다익스트라 기본 문제, 원리를 이해하고 풀면 좋습니다. 이차원 a 배열을 생성, a값을 모두 inf(1000000000) 로 초기화 x,y,z 값을 입력으로 받는다. 그리고 a[x][y] 가 z보다 큰경우 값을 업데이트 한다. (작은값을 찾아야 하므로) start, end를 입력으로 받는다. d를 배열로 생성한다. n+1 만큼 /마찬가지로 방문여부를 확인할 수 있는 c를 n+1만큼 선언 및 초기화 n만큼 d에 inf 를 업데이트, n만큼 c를 false 로 업데이트 d[start] = 0 으로 초기화 시작지점, d의 역할은 비용 이라고 보면됀다. 반복문을 n-1 만큼 순회한다. 노드의 최솟지점을 찾아야 하므로 min과 x를 선언합니다. (min은 최댓값으로 x는 -1), x는..
숨바꼭질4
숨바꼭질4
2020.11.07문제유형 BFS, 단순구현 문제풀이 모듈 2가지 1. BFS -. x+1, x-1, x*2 방문체크 -. 방문하지 않았다면 큐에 대입 -. 역추적을 위해 from[now] = next 형태로 저장, 재귀함수를 통해 마지막에 추적하기 위함 e.g) 1->2->3->4 면 from[4] = 3, from[3] = 2, from[2] =1 이런식 2. 역추적 -. 재귀함수로 역추적 코드 package backjun; import java.io.*; import java.util.*; public class BOJ_13913_숨바꼭질4 { static void print(int n, int m, int[] from) { if(n!=m) { print(n, from[m], from); } System.out.pr..
특정거리의 도시찾기
특정거리의 도시찾기
2020.11.07이 문제는 최단거리를 찾아내는 과정을 BFS알고리즘을 통해 해결할 수 있습니다. 알고리즘 개략적인 부분은 아래와 같습니다. pq에 시작위치와 depth를 저장 ans를 위한 pq선언 BFS depth가 우리가 찾는 depth라면 ans 에 node번호를 넣기(2의 pq에서 첫번째 요소) 그리고 continue 그게 아니라면 2의 pq 전체를 돌면서 현재 node의 사이즈만큼 돈다. next를 선언 방문하지 않았다면 방문체크해주고 pq에 넣어준다. next, cost+1 로 ans 의 사이즈가 0 이면 -1 그렇지않으면 ans 가 empty가 아닐때까지 poll 해서 정답을 유추한다. package programmers; import java.util.*; import java.io.*; public cl..
멀쩡한사각형
멀쩡한사각형
2020.11.07import java.util.*; import java.math.*; class Solution { public long solution(int w, int h) { int gcd = BigInteger.valueOf(w).gcd(BigInteger.valueOf(h)).intValue(); return ((long)w*(long)h)-(((long)(w/gcd)+(long)(h/gcd-1)))*gcd; } }
BOJ :: 1182(부분 수열의 합)
BOJ :: 1182(부분 수열의 합)
2020.10.261 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 package backjun; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.*; public class BOJ_1182_부분수열의합_백트래킹 { static int aim=0; static int[] arr; static int answer = 0; public stat..
마이크로서비스 배포
마이크로서비스 배포
2020.10.11-. 개발자가 운영 팀에게 코드를 일일이 넘겨주었던 수작업 과정은 고도로 자동화되고 물리적인 프로덕션 환경은 가볍고 일시적인 컴퓨팅 인프라로 대체되었습니다. -. AWS EC2 ⇢ 도커 릴리스 ⇢ AWS 람다 도입-. 운영 환경에 사용되는 컴퓨팅 리소스 역시 물리 머신을 추상한 개념이 등장하면서 많은 변화를 겪게 되었고, AWS 등 고도로 자동화한 클라우드에 기반해 가상 머신은 수명이 긴 물리/가상 머신으로 빠르게 대체되었습니다. -. 현대에 이르러서 가상 머신은 불변 = Immutable 합니다. 재구성 = reconfiguration 하기보다 폐기 후 재생성 합니다. -. 배포 프로세스/아키텍처가 발전을 거듭한 것은 마이크로서비스 아키텍처가 점점 더 많이 채택되는 이유 입니다.-.프로덕션 환경의 4대..
마이크로 서비스 패턴
마이크로 서비스 패턴
2020.10.101) X축 확장 :: 다중 인스턴스에 고루 요청 분산 일반적인 모놀리식 애플리케이션 확장 수단, 부하 분산기 뒷면에 애플리케이션 인스턴스 N개를 띄워 놓고 부하 분산기는 들어온 요청을 인스턴스에 고루 분배합니다. 애플리케이션 능력과 가용성을 개선할 수 있습니다. 2) Y축 확장 :: 요청 속성별 라우팅 인스턴스 앞면에 위치한 라우터는 요청의 속성에 알맞은 인스턴스로 요청을 라우팅 합니다. 애플리케이션을 확장해서 증가하는 트랜잭션 및 데이터 볼륨을 처리하기 좋습니다. 3) Z축 확장 :: 기능에 따라 애플리케이션을 서비스로 분해 위 과정을 거치면 X축/Z축 확장을 하면 애플리케이션 능력과 가용성 개선, 애플리케이션이 복잡해지면 문제는 해결되지 않는다. 모놀리식 애플리케이션을 여러 서비스로 쪼갠다. Y축 확..
프로그래머스 : JOIN
프로그래머스 : JOIN
2020.10.07https://programmers.co.kr/learn/courses/30/lessons/59042 이 문제는 입양을 간 기록은 있는데 보호소에 들어온 기록이 없는 동물의 ID 와 이름을 ID순으로 조회하는 SQL문을 작성하는것입니다. 어떻게 풀어야 할까...! 우선 테이블을 보면 ANIMAL_INS의 역할은 동물 보호소에 들어온 동물의 정보를 담는다. 반면에 ANIMAL_OUTS는 동물 보호소에 입양 보낸 동물의 정보를 담습니다. right join 즉, 오른쪽 테이블(ANIMAL_OUTS) 를 기준으로해서 무조건 ANIMAL_OUTS는 모두 보이는 형태가 됩니다. 그리고 ANIMAL_ID 값이 서로 같은 것을 기준으로 왼쪽 테이블(ANIMAL_INS)의 값을 불러오는데 '보호소에 들어온 기록이 없다..