동기, 비동기, 블락, 논블락 동기, 비동기, 블락, 논블락의 개념정리 1. sync, async 동기와 비동기의 개념이다. 동기란, 서브루틴의 종료 순서가 보장되는 것이다. (서브루틴을 메인루틴이 책임) 메인 루틴이 서브루틴의 종료를 책임지며, 서브루틴의 종료가 메인 루틴의 관제 하에 이루어 지는 것이다. 메인루틴은 서브루틴이 종료되었는지 확인하거나(non-blocking), 서브루틴이 종료될때까지 멈추게 된다(blocking). 이로인해 메인 루틴은 서브루틴의 종료와 함께 서브루틴의 결과를 받게된다. 비동기란, 서브루틴의 종료 순서가 보장되지 않는 것이다. (서브루틴을 서브루틴이 책임) 메인 루틴이 서브루틴의 종료를 책임지지 않으며, 대게 서브루틴의 종료는 콜백 또는 시그널을 통해 메인 루틴에 전달된다. 메인 루틴은 서브루틴의 실.. 더보기 웹소캣 웹소캣은 기존 웹의 단방향 프로토콜인 http의 문제를 해결하기 위해 나오게 되었다. http는 요청(Request)과 응답(Response) 구조를 가진 단방향(Simplex) 동기(Synchronous) 프로토콜이다. 또한 상태를 가지고 있지 않아(Stateless), 매 요청이 독립적으로 진행된다. (이 부분은 대게 쿠키, 세션등으로 서버에서 처리) http는 서버에 특정 데이터를 요청하기 위한 목적으로 지금까지 잘 사용되어 왔다. 하지만 이러한 특징 때문에 http에게 실시간성을 기대하기는 어려웠다. http는 실시간성을 개선시키기 위해 풀링, 롱풀링등 다양한 방법들을 사용해 왔지만 프로토콜의 근본적인 문제 때문에 실시간성은 해결되기 힘든 문제였다. 풀링 : 서버에 주기적으로 요청을 보내 데이터가.. 더보기 Python paramiko 파이썬으로 ssh 프로토콜을 사용할 수 있는 paramiko 라이브러리에 대한 간단한 사용 예제 크게 단일 명령을 전송하는 예제와, 당연히 설치는 pip로 가능하다. pip install paramiko pip3 install paramiko 자세한 설명은 아래 Docs에 나와있다. 자료 Welcome to Paramiko’s documentation! — Paramiko documentation Welcome to Paramiko’s documentation! This site covers Paramiko’s usage & API documentation. For basic info on what Paramiko is, including its public changelog & how the proje.. 더보기 디자인패턴 - 행위패턴 2 객체지향 프로그래밍을 위한 디자인 패턴중 행위에 관한 패턴을 다룬다. 1. ChainOfResponsibility 2. Command 3. Interpreter 4. Iterator 5. Meditator 6. Memento 7. Observer 8. State 9. Strategy 10. TemplateMethod 11. Visitor 7. Observer 객체의 상태 변화를 관찰자(observer)들에게 알려준다. 옵저버 패턴은 객체의 상태변화를 감지하는 옵저버 객체들을 등록하여, 해당 객체의 변화가 일어나게 되면 등록된 옵저버들에게 객체의 변화를 알려주는 패턴이다. pub-sub 모델로도 알려져 있다. Subject 클래스는 Observer객체들을 보관하고 있다. 이후 자신에게 어떠한 변화가 일어나.. 더보기 디자인패턴 - 행위패턴1 객체지향 프로그래밍을 위한 디자인 패턴중 행위에 관한 패턴을 다룬다. 1. ChainOfResponsibility 2. Command 3. Interpreter 4. Iterator 5. Meditator 6. Memento 7. Observer 8. State 9. Strategy 10. TemplateMethod 11. Visitor 1. ChainOfResponsibility 명령의 처리가 가능한 처리 객체를 찾을때까지 명령의 처리를 위임한다. 명령의 처리를 위한 핸들러들을 만들어 핸들러가 처리할 수 있는 명령이라면 자신이 처리하게 되고, 자신이 처리할 수 없는 명령이라면 다음 핸들러로 명령을 위임하게 한다. 핸들러는 다음 핸들러를 필드로 가지며, 자신이 수행할 수 있는 명령인지 아닌지 판별한다. .. 더보기 디자인패턴 - 구조패턴 객체지향 프로그래밍을 위한 디자인 패턴중 구조에 관한 패턴을 다룬다. 1. Adapter 2. Bridge 3. Composite 4. Decorator 5. Facade 6. Flyweight 7. Proxy 1. Adapter 서로다른 인터페이스간 규격을 맞추기 위한 패턴 어댑터 패턴은 서로다른 두개의 인터페이스를 맞추기 위한 패턴이다. 서로다른 인터페이스를 하나의 통일된 사용성을 제공하기 위해 사용한다. 클래스 다이어그램에선, 서로다른 두개의 인터페이스 Product1, 2가 있다. 이 Product2를 Product1의 인터페이스로 사용하기 위해 어댑터가 사용된다. 우리나라(Product1)은 220볼트(function1)를 사용한다. 미국(Product2)는 120볼트(function2)를 사용.. 더보기 Github Flow github-flow는 git-flow의 사용법이 복잡하여 단순화한 모델이다. github-flow는 크게 마스터 브랜치만을 유지하며 별도의 작업이 필요할때는 서브 브랜치를 이용하여 작업을 진행한다. master 브랜치는 항상 유지되는 브랜치 이며, 이 브랜치에는 항상 사용가능한, 배포 가능한 상태의 버전의 소스코드가 유지되어야 한다. 즉 작업들은 모두 서브 브랜치에서 끝나야 하며, 끝나지 않은 작업은 마스터로 머지 하면 안된다. git에서는 PR을 사용하라고 권장한다. 예시 1. master 생성 2. feature 생성 이제 특정한 작업 feature1를 수행하기 위해 브랜치를 하나 만든다. 아래 사진은 브랜치 생성 후 작업이 완료된 feature1 브랜치의 모습이다. 3. master로 머지 이제 .. 더보기 디자인패턴 - 생성패턴 객체지향 프로그래밍을 위한 디자인 패턴중 생성에 관한 패턴을 다룬다. 1. Simple Factory 2. Factory Method 3. Abstract Factory 4. Singleton 5. Builder 6. Prototype 1. Simple Factory 객체의 생성을 별도의 클래스로 위임하여 객체간 의존성을 줄인다. 간단한 팩토리 패턴이다. 이 패턴은 굳이 디자인 패턴이라고 하지 않는 사람들도 많이 있다. 이 패턴의 목적은 객체의 생성을 자기 자신이 하는것이 아닌 관련된 별도의 객체로 위임함으로써, 객체간 의존 관계를 줄일 수 있게 된다. 해당 다이어그램을 보면, 제품 클래스인 Product를 SimpleFactory라는 클래스가 생성해주게 된다. 코드는 다음과 같다. Product.jav.. 더보기 트러블슈팅[쿠버네티스] : dial tcp 127.0.0.1:10248: connect: connection refused. 에러메시지 The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused. 쿠버네티스 설치중, control plane 에서, kubeadm init중 나타남.. 해결 os의 swap메모리를 끄지않아서 생긴것 같다... swapoff -a swap메모리를 끄니 잘 init 되었다. 더보기 파이썬 매직 메소드 파이썬의 클래스에서 사용하기 위한 특수한 메소드다. 매직 메소드라고 부른다. 이러한 매직 메소드들은 이미 정해진 메소드를 오버로딩해 클래스만의 특별한 기능으로 사용할 수 있다. 매직 메소드의 특징으론 앞뒤에 언더바 두개를 가지고 있다. ex) __add__ __init__ 클래스가 생성될때 초기화를 진행하게 되는 메소드다. 클래스를 생성할때 사용한 파라미터를 메소드의 파라미터로 전달받게 된다. class Person: def __init__(self, name, age): self.name = name self.age = age def who(self): print(f"이름 : {self.name}, 나이 : {self.age}") kim = Person("kim", 25) kim.who() 객체 생성시.. 더보기 이전 1 2 3 4 5 ··· 8 다음 목록 더보기