본문 바로가기

더 나은 엔지니어가 되기 위해

(80)
클린 아키텍처 3부 - 설계 원칙 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 3부 설계 원칙에서는 SOLID 원칙에 대해서 다룬다. SOLID 원칙은 과거 몇 년 동안 수차례 여기저기서 언급되고, 이미 너무나 유명한 원칙들이기 때문에, 책에서는 SOLID 원칙이 무엇인지 처음부터 친절히 설명해주지는 않는다. 다만, 각 SOLID 원칙을 하나씩 다시 되짚어 보며 각 원칙이 지니는 핵심 의미를 다시 살펴본다. SOLID 원칙을 처음 정립한 사람에게, 수 년 뒤에 다시 듣는 SOLID 원칙의 핵심 의미라... 꽤나 의미 있지 않을까? 밥 아저씨가 말하는 SOLID 원칙의 전반적인 의미는 다음과 같다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 클래스..
GCP - cloud build 이용하여 ci/cd 구축하기 구글 서비스의 documentation 은 참 잘 되어있다고 느끼면서도.. 참 어렵게 만들었다는 생각이 늘 든다. 그대로 따라하다보면 뭔가 잘 안되는 것도 있고, 이 페이지 참고하라.. 저 페이지 참고하라.. 하다보면 다시 원 페이지로 돌아오는.. 일종의 순환 문제를 겪게 된다 ㅋㅋㅋ 물론 내가 잘 못해서 이해를 잘 못하는 것도 있지만, 아무튼 나한테는 마냥 쉬운 문서는 아니다. Google Cloud Build 를 무작정 사용해보며 나름의 시행착오 끝에, 간단한 사용 방법을 여기다가 써보려 한다. [클라우드 서비스의 사용법은 빠르게 바뀐다] 아는 사람은 알겠지만, 클라우드 서비스의 사용법은 정말 빠르게 바뀐다. 그래서인지, 사용법에 대해 정성을 들여 설명하는 블로그 글들이 잘 없는거 같기도 하다. 시간..
클린 아키텍처 2부 - 프로그래밍 패러다임 이 글은 로버트 C. 마틴의 클린 아키텍처를 읽고 나름대로 중요하다고 생각한 부분만 정리한 글이다. 들어가며 책의 1부에는 클린 아키텍처가 왜 중요한 지, 무엇을 추구하는지 등에 대해 나오는데 굳이 적지는 않겠다. 클린 아키텍처 책을 찾는 사람이라면, 이미 그 중요성이나 필요성을 느끼고 온 사람이지 않을까 싶어서다. 여기서는 내가 생각한 핵심만 정리해보려고 한다. 개요 예나 지금이나, 프로그래밍 언어의 기본적 기능은 달라지지 않았다. 1946년 앨런 튜닝이 최초의 코드를 작성할 때 사용한 소프트웨어 규칙과 지금의 소프트웨어 규칙은 조금도 다르지 않다. 프로그램은 여전히 순차, 분기, 반복, 참조로 구성된다. 프로그래밍 언어의 기본적 기능은 달라지지 않았지만, 이 기능을 어떻게 사용할 것인가에 대한 생각은..
슬기로운 파이썬 트릭 5, 6 - 반복과 이터레이션 & 딕셔너리 트릭 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 6, 7장에서 정리할 내용이 적어 한 글에 압축하여 포스팅한다. 6장. 반복과 이터레이션 6장 앞 부분은 다음 파트들로 이루어져 있다. 6.1. 파이썬다운 반복문 작성하기 6.2. 리스트 컴프리핸션 이해하기 6.3. 리스트 분할 트릭과 스시 연산자 6.4. 아름다운 이터레이터 6.5. 제너레이터는 단순화된 이터레이터다. 6.6. 제너레이터 표현식 이 파트들은 너무 간단한 파이썬 내용이거나, 이전에 공부하며 기록했던 내용이라 그냥 과감히 넘어간다. 이터레이터, 제너레이터 관련해 이전에 공부한 기록은 파이썬 클린 코드 1 - 파이썬스러운 코딩을 파이썬 문법 컨셉에 가면 볼 수 있다. 6.7. 이터레이터 체인 이터레이터 체인이란 아래 예와 같..
슬기로운 파이썬 트릭 4 - 파이썬의 일반 데이터 구조 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 5.1. 딕셔너리, 맵, 해시테이블 dict : 믿음직한 딕셔너리 phonebook = { "bob": 1234, "alice": 3719 } 딕셔너리의 키는 불변타입(immutable) 만 가능하다. 조회, 삽입, 갱신 및 삭제의 시간복잡도는 O(1) 이다. 사용하지않을 이유가 거의 없다. collections.OrderedDict : 키 삽입 순서 기억 >>> import collections >>> d = collections.OrderedDict(one=1, two=2, three=3) >>> d OrderedDict([('one', 1), ('two', 2), ('three', 3)]) 해시의 특성상 데이터의 순서 개념이 없는데..
슬기로운 파이썬 트릭 3 - 클래스와 객체 지향 프로그래밍 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 전반적으로 대부분 아는 내용이지만 remind up 한다는 느낌으로 정리해본다. 4.1. 객체 비교: is vs == 예제 a = [1, 2, 3] b = a c = [1, 2, 3] >>> a == b True >>> a is b True >>> a == c True >>> a is c False 요점 정리 두 변수가 동일한(identical) 객체를 가리키는 경우, is 표현식은 True 로 평가된다. 두 변수가 동등한(equal: 내용이 같은) 객체를 가리키는 경우,== 표현식은 True 로 평가된다. 4.2. 문자열 변환(모든 클래스는 __repr__ 이 필요하다) 예제 class Car: def __init__(self, col..
슬기로운 파이썬 트릭 2 - 효과적인 함수 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 3.1. 파이썬 함수는 일급 객체다 함수는 객체다 파이썬의 함수는 일급 "객체"다. 즉, 함수를 변수에 할당하고 데이터 구조에 저장하고, 인자로 다른 함수에 전달하고, 반환할 수 있다. 함수 객체와 이름은 별개다. def yell(text): return text.upper() + "!" >>> bark = yell >>> bark("heumsi") "HEUMSI!" >>> bark.__name__ "yell" 함수는 데이터 구조에 저장할 수 있다. >>> funcs = [bark, str.lower, str.capitalize] >>> funcs[0]("heumsi") "HEUMSI!" 함수는 다른 함수로 전달할 수 있다. def gr..
슬기로운 파이썬 트릭 1 - 파이썬 코드를 정돈하기 위한 패턴 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 더 나은 파이썬 개발자가 되기 위해, 파이썬다운 코드에 대한 내용을 다룬다. 1장은 소개 글이라, 1장은 생략하고 2장부터 시작한다. 2.1. assert 문으로 방어하기 파이썬의 단언문은 프로그램 내부 자체 검사로 조건을 테스트하는 디버깅 도구다. def apply_discount(product, discount): price = int(product['price'] * (1 - discount)) assert 0 > test = Test() >>> test.__baz AttributeError: 'Test' object has no attribute '__baz' >>> test._Test__baz 42 __var__ 파이썬에서 정의..