전체 글 10

믹스인(Mixin)의 정의와 예시: 코틀린 믹스인 구현의 예

정의위키에 따르면 믹스인(Mixins)은 단위 기능 또는 그 집합을 갖는 클래스를 생성하여 다른 클래스와 혼합하는 “개발 스타일”이다. 다른 클래스가 사용할 함수들을 모아 정의한 뒤 “Has a”(또는 “Can”) 관계를 맺는 어떤 클래스로도 의미가 통한다. “실용주의 프로그래머(The Pragmatic Programmer)” 에서는 클래스보다 기법으로 설명하고 있다. 언어에 따라서 mixin 키워드를 직관적으로 제공하거나, traits, category, protocol extensions 과 같은 용어로 믹스인의 개념을 찾아볼 수 있다. 즉 mixin 스타일을 지원하는 방식과 제약 사항이 다르고, 구현방법 또한 다양하다. 각 언어의 구체적인 명세를 이해하는 것도 중요하겠으나, mixin 자체의 목적과..

[개발메모라이즈] 한글이 깨지는 유형

인코딩된 charset 을 혼동하여 잘못 디코딩한 경우를 왕왕 보게 된다."설정" 이란 문자열을 기준으로 잡으면:1. EUC-KR(혹은 CP949)를 UTF-8로 디코드: �궭뚥쀍 혹은 ����: 2. UTF-8을 EUC-KR(혹은 CP949)로 디코드: ��ㅼ�� 그 유명한 궭뚥쀍은 설정이란 단어가 잘못 디코딩 된 것이다. �는 “유니코드 대체 문자”(replacement character, U+FFFD) 이므로,디코드 charset 이 표현할 수 없는 어떤 바이트들이 대체되었다고 이해하면 된다. 파이썬같은 경우, 이 "replace" 동작이 default 가 아니고 "strict" 이다.즉 주어진 바이트가 "유효시작바이트" 가 아니면 에러가 난다. 같은 인코딩으로 한번 더 인코딩해서 깨지는 경우도 있..

K8S 컨테이너 런타임에 대한 잡지식

서론과거 API Gateway 작업의 일환으로 SSE 부하 테스트를 진행한 바 있다. 이 과정에서 우리 개발계 k8s ingress gateway 컨테이너의 istio-proxy(envoy-proxy)가 죽는 현상을 목격했다. SSE 연결 수가 일정 범위에 도달할 때 istio-proxy 는 Too Many Open Files 에러메세지를 찍으며 죽었다. 결과적으로는 containerd 를 위한 systemd 의 unit configuration 중 프로세스의 파일 오픈 수를 조정함으로써 해결된 사례이다. k8s 내부 동작에는 큰 관심을 두지 않았던 당시라서 컨테이너 런타임인 containerd 가 무엇인지, 애초에 컨테이너 런타임이란 무엇인지 알고 있는게 없었다. 이 부분을 채우기 위해 가볍게 서치하고..