들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item44 요약 새로운 클래스 인터페이스를 정의할 때, 간단히 public attribute도 시작하고 Setter / Getter를 가급적이면 사용하지 마라. 객체에 있는 Attribute에 접근할 때, 부가 기능이 필요한 경우 @property로 이를 구현할 수 있음. @property를 사용할 때, 최소 놀람의 법칙을 따르고 이상한 부작용을 만들지 마라. @property 메서드가 빠르게 실행되도록 유지. 느리거나 복잡한 작업의 경우, 일반적인 메서드를 사용하라. @property로 setter를 정의하면..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 1. Itertools 라이브러리 Itertools 라이브러리에는 이터레이터를 위한 몇 가지 기능들이 추가되어있다. 이터레이터와 관련된 코드가 복잡해지는 경우라면, itertools 라이브러리에서 원하는 기능을 지원하는지 살펴보는 것이 좋을 수 있다. 2. 여러 이터레이터 연결하기 itertools에는 여러 이터레이터를 하나로 합치는데 사용할 수 있는 함수들이 지원된다. 2.1 chain() it = itertools.chain([1,2,3], [4,5,6]) print(list(it)) >>> [1, 2, 3, 4, 5, 6] 여러 이터레이터를 하나의 이터레이터를 합침. 2.2 repeat() # 3번만 반복하는 Iterator 생성 i..
참고 https://learnyousomeerlang.com/the-count-of-applications#from-otp-application-to-real-application 1. 이번 챕터에서 할 일 이번 챕터에서는 다음 작업을 진행하려고 한다. 이전에 구현했던 ppool을 이용해서 특정 작업을 진행함. 특정 작업은 .erl 파일을 읽고, 각 정규표현식에 해당되는 수식이 몇 개 있는지 Count 하는 것임. 이렇게 구현할 어플리케이션의 이름은 erlcount라고 한다. 다음과 같은 구조로 갈 것이고, 각 모듈의 역할은 다음과 같다. erlcount_counter : 프로세스 풀의 워커로 동작함. erlcount_sup : 워커 프로세스의 슈퍼바이저로 동작함. erlcount_dispatch : 디..
참고 https://learnyousomeerlang.com/distribunomicon#firewalls 10 . The Calls from Beyond 앞선 장에서 분산 얼랭에서 필요한 기초적인 부분을 모두 공부했다. 아래에서는 알면 좋을만한 도구를 더 공부하려고 한다. 10.1 얼랭 쉘에서 분산 노드 실행하기 net_kernel:start([Name, Type, HeartbeatInMilliseconds]) % for example net_kernel:start([romero, shortnames, 15000]). 다음 명령어를 이용하면 얼랭 쉘에서 새로운 분산 노드를 실행할 수 있다. 얼랭은 각 분산 노드들이 살아있는 상태를 유지하도록 'HeartBeat'을 보내는데, 기본값은 15초다. 즉, 얼..
참고 https://learnyousomeerlang.com/distribunomicon#alone-in-the-dark 1. Alone in the dark 단일 서버에서 실행되는 소프트웨어는 그 서버가 다운될 경우 기능하지 못한다. 고가용성을 확보하기 위해 여러 서버에 동일한 어플리케이션을 배포할 수 있다. 그러나 이렇게 확보되는 '고가용성'은 한 대의 서버가 다운되었을 때, 이를 적절히 처리할 수 있어야만 확보할 수 있다. 많은 노드가 서로 통신하는 방법 통신의 Serialize, Deserialize 하는 방법 다중 프로세스의 개념을 많은 노드로 확장하는 방법 네트워크 장애를 모니터링 하는 방법 얼랭을 이용해 분산 시스템에 필요한 몇 가지 피쳐를 작성할 수 있다. 그러나 여기서 가장 중요한 부분은..