본문 바로가기

반응형

분류 전체보기

(236)
[Network] HTTP Header User-Agent 특정 사이트에서 프로그램을 다운로드하려고 할 때 페이지에서 현재 OS 에 맞는 버전의 프로그램을 추천해줄 때가 있다. Windows, Max, Ubuntu 등등 다양한 플랫폼에 맞는 버전의 프로그램들이 있는데, 이 사이트들은 어떻게 OS 를 감지하고 알맞는 버전을 추천해주는 걸까? 1. User-agent HTTP 통신을 할 때 헤더 값에는 다양한 정보들이 포함된다. 그 중에는 HTTP 요청을 보내는 사용자의 식별 정보를 담고 있는 항목이 있는데, 바로 User-Agent 이다. User-Agent 는 request header 에 포함되는 string 값으로 요청을 보내는 디바이스의 application, operating system, vendor, browser version 등의 정보를 포함하고있..
[Python] Awaitable awaitable 은 파이썬에서 await 키워드를 사용할 수 있는 객체들을 의미한다. 이들은 await 를 통해서 실행이 완료되기 전에 다른 작업으로 전환이 가능하다. awaitable 한 객체들은 Coroutines, Tasks, Futures 의 세종류가 있다. 1. Coroutines 파이썬 코루틴은 asyncio 라이브러리 내에 정의된 비동기 코루틴으로 async def 키워드를 사용하여 정의된 함수가 리턴하는 객체이다. 일반적으로 coroutine 이라는 용어는 async def 함수와 해당 함수가 반환하는 객체를 지칭하는 의미로 혼용된다. import asyncio async def nested(): return 42 async def main(): nested() # 아무 일도 일어나지 않..
[JAVA] 메서드 참조 (::) 1. 자바 메서드 참조 (Java Method Reference) 자바 메서드 참조는 자바 8 버전부터 지원해주는 기능으로 람다식에서 메서드를 참조하여 사용하여 보다 간단하게 표현할 수 있도록 해준다. 사용 방법은 '::' 기호를 사용하여 [클래스명]::[메서드명] 과 같이 사용한다. 스태틱 메서드의 경우 인스턴스 대신 클래스 이름으로 사용할 수 있다. 2. 메서드 참조 형식 메서드 참조는 사용하는 패턴에 따라 다음의 3가지로 구분된다. - static method reference - instance method reference - constructor reference - static method reference static method reference는 클래스의 static method 를 메..
[기타] Sync - Async / Blocking - Non-Blocking Async 관련해서 공부를 하다가 항상 sync - async 와 비교되어 나오는 blocking - non-blocking 개념이 궁금해서 정리를 해보았다. 사실 처음에 읽어 보았을 때는 동기 비동기와 비슷해 보였는데, 두 개념을 섞어서 비교해보니 차이점을 확실히 알 수 있었다. 1. Sync - Async 동기와 비동기는 특정 작업을 수행할 때 해당 작업의 완료 여부를 신경쓰는지에 따라 구분된다. A 함수가 B 함수를 호출하여 작업을 수행할 때, A 함수가 B 함수가 종료될때까지 기다리다가 그 결과값을 받고나서 다음 작업을 수행하는 경우를 동기, 반면에 B 함수의 종료까지 기다리지 않고 A 함수가 다음 작업을 수행하면 비동기가 된다. 이때 B 함수의 작업 결과는 콜백함수로 반환된다. 결국 A 함수가 ..
[Python] Decorator 1. Decorator 란? 데코레이터란 또 다른 함수를 반환하는 함수를 의미한다. @wrapper 문법으로 다른 함수를 감싸는 방법으로 적용된다. 감싸진 함수는 wrapper 함수에 인자로 전달되고, wrapper 함수 내부에서 실행된다. 주로 함수의 내용을 직접 변경하지 않고 특정 행동이나 동작을 추가하기 위해서 사용하며, 많이 사용하는 데코레이터로는 classmethod() 와 staticmethod() 가 있다. 데코레이터는 다음과 같이 사용할 수 있으며, 예시의 두가지 표현은 동일하게 동작한다. # 함수 호출로 적용 def func(arg): statement(s) func = wrapper(func) # 데코레이터 표현식 적용 @wrapper def func(arg): statement(s) ..
[Kafka] Kafka Consumer 예제 1. KafkaConsumer Kafka cluster 의 레코드를 사용하는 클라이언트, 컨슈머 객체를 생성하는 클래스이다. 매개변수로 넘겨주는 서버 정보, 데이터 역직렬화 정보, 그룹 ID 등을 설정으로하여 객체를 생성한다. 컨슈머는 poll 메서드를 사용해서 브로커에서 데이터를 가져온다. poll 메서드는 마지막으로 사용한 데이터 이후 입력된 데이터들을 가져온다. poll 메서드는 timeout 을 매개변수로 줄 수 있는데, 만약 레코드가 존재하면 해당 레코드를 반환하지만 timeout 을 초과하면 빈 레코드 집합이 반환된다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터..
[Kafka] Kafka Producer 예제 1. KafkaProducer Kafka cluster 로 record 를 송신하는 클라이언트, 프로듀서 객체를 생성하는 클래스이다. 매개변수로 입력받은 설정에 따라 카프카 클러스터와 연결하여 동작한다. 레코드를 전송하는 메서드는 send() 인데, 이는 비동기로 동작한다. 프로듀서 객체가 정상적으로 동작하기 위해서는 카프카 클러스터 서버 정보와 데이터 직렬화 정보를 입력해주어야 한다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터를 요청하기 위한 설정으로 클라이언트와 클러스터의 초기 연결을 위해 사용한다. 브로커의 'hostname:port' 정보의 리스트 형태를 가지며, ..
[Kafka] Kafka 기본 개념 1. event streaming 이벤트 스트리밍은 DB, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형식으로 획득하는 방식을 말한다. 이 방식은 이후에 이벤트를 검색할 수 있도록 이벤트 스트림을 저장하고, 실시간으로 이벤트 스트림을 조작, 처리하고 이에 대한 응답을 수행 할 수 있다. 또한 필요한 경우 이벤트 스트림을 다른 목적지로 전달하기도 한다. 이벤트 스트리밍은 데이터의 지속적인 흐름과 해석을 통해 정확한 데이터가 정확한 위치와 시점에 존재하도록 한다. 이러한 이벤트 스트리밍은 실시간 금융거래, 자동차 산업의 차량 실시간 모니터링과 같이 다양한 산업에서 사용할 수 있다. 또한 회사의 여러 부서에서 생성된 데이터를 연결, ..

반응형