728x90
반응형

파이썬... 

 

sql 문장을 만들거나 어떠한 이유로 python 코딩을 하다가 다중 라인의 스트링을 입력해야 할 때가 있습니다.

심지어 변수도 들어가게 되면 코드는 더러워지게 마련입니다.

 

문제는 없지만 보기가 너무 더럽고 관리하기 어려우니 여러 해결 방법이 있습니다.

https://stackoverflow.com/questions/10660435/pythonic-way-to-create-a-long-multi-line-string

 

Pythonic way to create a long multi-line string

I have a very long query. I would like to split it in several lines in Python. A way to do it in JavaScript would be using several sentences and joining them with a + operator (I know, maybe it's n...

stackoverflow.com

제가 참고한 글입니다.

 

아니면 f-string이었나? string intnerpolation 이라고 

f"""value1={value1}""" 이렇게 값을 감싸고 문자열에 바로 변수 값을 집어넣는 기능을 사용할 수 있습니다.

 

이 방법의 경우 파이썬 3.5부터 지원됩니다.

728x90
반응형
728x90
반응형

MSA: Microservice Architecture 약자로 문장으로 정리하자면 아래와 같다습니다

"하나의 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐"

 

작은 서비스들을 만들어 합쳐 하나의 어플리케이션으로 만든다는 개념으로 컴포넌트들의 조합이라고 이해했습니다.

 

등장 배경

MSA 반대 개념은 Monolithic Architecture 소프트웨어의 모든 구성요소가 프로젝트에 통합되어 있는 형태입니다.

아직까지 개발하기 간단하다는 장점으로 많은 소프트웨어가 Monolithic 형태로 구현되어 있습니다.

 

하지만 규모의 개발 프로젝트에서는 한계와 단점 존재한다고 합니다. 아무래도 규모의 개발을 진행할 때는 빌드 테스트 하는 시간이 오래걸리고 전체 시스템 구조를 파악하는 것이 쉽지 않기 때문입니다.


제가 이해하기로는 규모의 온라인 주문 사이트에서 MSA 형태의 개발을 하겠구나 싶었습니다.

 

그래서 이번에 고랭으로 MSA에서 흔히 일어날 잇는 상황에 대해서 효율적인 처리를 연습해볼 있도록 Context 사용한 예시를 개발해 보았습니다. (개발 하면 링크 넣을 것… ㅎㅎ)

쿠팡에서 테크 블로그(?) 비슷하게 MSA 에 대해 정리해 글도 있더라구요.

쿠팡 - 행복을 찾기 위한 우리의 여정

 

행복을 찾기 위한 우리의 여정,

쿠팡의 MSA — Part 1

medium.com

 

 

참고할 사이트:

lion-king.tistory.com/entry/MSA-distributed-transaction

 

(MSA 분산 트랜잭션) 주문-재고관리 어떻게 하지?

MSA 분산 트랜잭션 MSA distributed transaction 일반적으로 온라인 커머스 서비스를 하고, 재고가 존재하는 상품을 판매 한다면 주문 - 재고차감- 결제 등의 프로세스가 필요할 것이다. 위 프로세스는 일

lion-king.tistory.com

medium.com/coupang-tech/%ED%96%89%EB%B3%B5%EC%9D%84-%EC%B0%BE%EA%B8%B0-%EC%9C%84%ED%95%9C-%EC%9A%B0%EB%A6%AC%EC%9D%98-%EC%97%AC%EC%A0%95-94678fe9eb61

 

행복을 찾기 위한 우리의 여정,

쿠팡의 MSA — Part 1

medium.com

www.popit.kr/msa%EC%97%90%EC%84%9C-%EB%A9%94%EC%8B%9C%EC%A7%95-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0

 

MSA에서 메시징 트랜잭션 처리하기 | Popit

비동기 메시지를 사용하여 상호 간에 통신하는 방식을 메시징 Messaging[1] 이라고 부른다. 마이크로서비스 환경에서 비동기 처리 시 보통 카프카 Kafka 나 래빗엠큐 RabbitMQ 같은 메시지 브로커 Message

www.popit.kr

velog.io/@tedigom/MSA-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-1-MSA%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3sk28yrv0e

 

MSA 제대로 이해하기 -(1) MSA의 기본 개념

lego-708086_1920.jpg 마이크로 서비스 아키텍쳐를 한마디로 다음과 같이 표현할 수 있습니다. "하나의 큰 어플리케이션을 여러개의 작은 어플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아

velog.io

jaehue.github.io/post/how-to-use-golang-context/

 

728x90
반응형
728x90
반응형

Jps 는 자바로 실행되는 java virtual machine process를 보여주는 명령어이다.

 

이번에 하둡으로 맵리듀스 잡 실행해보며 하둡 클러스터 잘 도는지 확인하려 jps 명령어 써보면서 간단히 정리해본다.

 

데이터노즈, 네임노드, 리소스 매니저 등등 잘 돌고 있었고 이제 테스트가 끝나서 종료하려고 ./stop-all.sh 명령어를 넣었는데 java virtual machine에서는 종료가 안된건지 자꾸 남아서 직접 Kill 해 주어야 했다.

참고로 앞에 23240 등 다섯 자리 숫자가 Pid 임.

 

직접 kill 할 때는 

> kill -9 pid

써주어 종료시킬 수 있다.

이렇~~~게!

 

간단하쥬~?

728x90
반응형
728x90
반응형

Apache Airflow에 대해 알아보자

 

아파치 에어플로우는 데이터 처리 파이프라인을 조율하기 위해 만든 오픈소스 도구.

Cron 같은 느낌


Apache Airflow 사용하는 이유

  • 데이터 ETL 과정을 통해 데이터를 가공하며 적재하는데
  • 이때여러 개의 sequential한 로직이 존재하게 . (앞의 결과가 작업의 input 되는 )
  • 위와 같은 작업이 여러개일 경우 이러한 workflow 관리도구로 airflow 사용할 있으며,
  • 비슷한 workflow 관리도구로 하둡 에코시스템의 우지와 같은 솔루션이 있음.

 

장점

  • Python 기반으로 만들어 져 데이터 분석 하는 분들도 쉽게 코드를 작성할 있음
  • Airflow 콘솔이 따로 존재해 task 관리를 서버에서하지  않아도 되고 작업별 시간이 나오기 때문에 bottleneck 찾을 때에도 유용함

DAG: 방향성 비순환 그래프

  • 에어플로우 상의 작업흐름은 DAG 설계되기 때문에 이를 어떻게 독립적으로 실행 가능한 태스크들로 나뉠 있을까 생각해보고
  • 그 다음에  태스크를 그래프로 결합하여 전체적인 논리 흐름에 맞게 합칠 수 있음
  • Task 집합체이자 workflow

 

DAG 생성

  1. default_args 정의(owner, start_date 정의)
  2. DAG 객체 생성(dag id, schedule_interval 정의)
  3. DAG 안에 Operator 활용해 task 생성(SparkSubmitOperator, BashOperator )
  4. Task들을 연결( >>, << 활용하거나 t1.set_upstream(t2) 또는 t2.set_downstream(t1) 같은 표현)

DAG 객체 생성 -> Operator 활용해 Task 작성 -> Task 연결

728x90
반응형
728x90
반응형

Jetbrains의 Goland IDE 설치와 사용

 

www.jetbrains.com/go/

 

GoLand: A Clever IDE to Go by JetBrains

GoLand is an IDE by JetBrains aimed at providing an ergonomic environment for Go development.

www.jetbrains.com

1. 먼저 위 사이트로 이동해 고랜드를 다운받는다.

2. 다운받은 고랜드를 실행하면 계정 인증(activate)을 하라는데 나는 회사계정으로 로그인했더니 아래와 같이 나왔다.

 

3. 'New Project' 누르고 프로젝트 이름 설정

4. new -> Go file -> main.go 생성

case sensitive 하니 소문자로 해야한다.

  이 때 환경에 golang이 설치되어 있지 않으면 'GOROOT is not defined' 라는 워닝이 나타난다. 

  homebrew로 golang을 설치해야한다.

5. 'main.go'에 예제 코드 작성


 

이러고 실행이 계속 안돼서 찾아보다가 main package 를 만들어야 한다는 에러를 보고 configuration 수정하여 프로젝트를 main 이라는 package 이름으로 refactor 해 주었고 그러고 나니 "Hello World!" 가 나왔다...!!

 

6. go_test(다른 테스트 하다가 test 로 새로 만든 환경임)를 refactor 통해 main package로 바꿔줌

  또는 아래와 같이 depth 추가하여 package 생성

 

주의: 프로젝트 생성 시에 GOROOT 설정

728x90
반응형
728x90
반응형

심심하니까 푸는 프로그래머스 코테 문제

 

이번에 푼 문제는 '완주하지 못한 선수'

 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

문제 캡쳐본

예전에 한 번 C++로 풀어봤다. 이런저런 방법으로 풀다가 결국 해설을 봤던 것 같다.

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
    string answer = "";
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    for(int i = 0; i < participant.size(); i++){
        if(participant[i] != completion[i])
            return participant[i];
    }

    return participant[participant.size()];
}

 


 

이번에 고랭으로 풀어보려고 했는데 C++로 어떻게 풀었는지 이미 봐버려서 그대로 풀어버렸습니다 ㅠㅠ  근데 이 문제는 고랭은 지원하지 않아서 그냥 맞겠지 하고 풀었어요 ㅎㅎ

package main

import (
	"fmt"
	"sort"
)

func solution(participant []string, completion []string) string {
	sort.Strings(participant)
	sort.Strings(completion)
	
	for i:=0; i < len(completion); i++{
		if(participant[i] != completion[i]){
			return participant[i]
		}
	}
	return participant[len(participant)-1]
}

func main() {
	participant := []string{"leo", "kiki", "eden"}
	completion := []string{"eden", "kiki"}
	ret := solution(participant, completion)
	fmt.Println(ret)
}

sort 내장 모듈을 지원해주니 이 모듈을 사용했고 정확히 C++로 푼 방법과 똑같이 풀어버렸습니다 ㅋㅋㅋ 그래도 고랭 익숙해지는 거라고 생각하면 여전히 문제 풀어보는 건 좋지요!

728x90
반응형

+ Recent posts