콘텐츠로 건너뛰기

왜 프로토콜 타입은 프로토콜을 따르지 않는가

Why A Protocol Type Doesn’t Conform to The Protocol Itself?

프로토콜은 사실 타입은 아니고, 실제 타입이 구현해야 할 어떤 ‘요구사항’을 정의한 것입니다. 그리고 실제 타입을 정의할 때 프로토콜이 요구하는 메소드와 멤버를 구현하면 해당 타입이 프로토콜을 준수한다(혹은 프로토콜을 채택한다)고 표현하죠. 프로토콜은 타입이 아니지만, 특정 객체에 대해서 프로토콜이 정의한 인터페이스를 사용하는 것에만 관심이 있는 상황을 가정해보겠습니다. 이 경우에 우리는 해당 객체에 대해서 이미 알고있는(프로토콜이 정의한) 메소드나 프로퍼티만 사용하고, 실제의 타입은 알 수 없거나 정해지지 않았다고 간주해야 합니다. 그렇다면 이러한 객체는 구체적인 타입을 확정할 수는 없지만 그 프로토콜을 준수하고 있다는 것만 보장하기 때문에, 프로토콜을 변수의 타입처럼 사용하는 것이 가능합니다.

더 보기 »왜 프로토콜 타입은 프로토콜을 따르지 않는가

메타 클래스와 추상 클래스

사실 ‘객체 지향’이라는 단어는 프로그래밍 관련 커뮤니티나 여러 글에서 어렵지 않게 접하게 되지만, 객체 지향 프로그래밍에서 가장 중요하다고 하는 ‘클래스’의 개념을 명확하게 이해하기는 쉽지 않습니다. 애초에 추상적인 개념이니 명확하게 이해하는 것이 이상한 거라고 봐야 할까요? 그런데 파이썬이나 다른 객체 지향 언어를 공부하다보면 ‘메타 클래스’니, ‘추상 클래스’니 하는 용어들이 눈에 띄곤 합니다. 아니, 클래스도 뭔지 감이 잘 안오는데 추상 클래스는 뭐고 또 메타 클래스는 뭐란 말일까요? 일단 파이썬에서 출발해보죠. 클래스에 대해서 간단히 짚고 넘어가겠습니다. 우선 클래스가 무엇인지를 이해하기 위해서는 클래스를 설명하기위해… 더 보기 »메타 클래스와 추상 클래스

숫자키패드를 활용하는 오토핫키 팁

키보드를 선택할 때, 숫자 키패드 영역이 있는 풀배열 키보드를 선택하는 사람은 “숫자를 입력할 일이 많은” 사람일 것입니다. 주로 엑셀이나 계산기를 사용할 일이 많은 경우에 숫자 키배드를 사용하는 것은 분명 편리함이 있습니다. 하지만 숫자를 입력할 일이 많다고 해서 항상 숫자 키패드가 유용한 것은 아닙니다. 1, 2, 3,.. 과 같이 숫자와 함께 콤마를 입력해야 하는 경우라면 이야기가 달라지죠. , 키 역시 오른손으로 눌러야 하는 영역에 있기 때문에, 숫자 키패드를 사용해야 한다면 오히려 손이 왔다 갔다 하면서 입력이 불편해집니다.

더 보기 »숫자키패드를 활용하는 오토핫키 팁

한/영키와 한자키

흔히 ‘풀배열’이라고 하는 키보드 배열은 미국의 키보드 배열 표준으로 101키/104키를 사용하는 배열이 있다. 우리 나라의 키보드 배열은 여기에 ‘한/영’키와 ‘한자’키를 더한 103키/106키가 표준으로 제정되어 있다. 추가된 두 개의 키는 스페이스 바의 오른쪽에 있기 때문에, 한국 표준 배열에서는 스페이스 바가 짧거나, 오른쪽 ctrl, alt 키가 작은 사이즈로 되어 있는 경우가 많다. 이러한 차이 외에도 미국 표준 배열은 일자로된 엔터키를 사용하고, 역슬래쉬 키가 엔터키 위에 있는데 비해, 한국 표준 배열은 역방향의 ㄴ자 모양 엔터키를 사용하고, 역슬래쉬가 백스페이스의 왼쪽에 위치한다.

한/영키와 한자키가 없는 101/103키의 키보드 배열을 사용하여 한국어 버전 윈도를 사용할 수 있게 하기 위해 윈도에서는 키보드 드라이버 수준에서 이 오른쪽 ctrl, alt 키를 한/영키나 한자키로 배치하거나, shift + 스페이스바를 사용하여 한/영 전환을 하게 하는 기능을 제공한다. 한국에서 생산되는 대부분의 노트북 키보드에서는 실제로는 한/영키와 한자키가 없고 ctrl, alt 키로 들어가 있는데 (물론 키 캡에는 ‘한/영’, ‘한자’로 표기한다.) 드라이버에 의해서 그 입력이 한/영, 한자키로 작동하게끔 되어 있다.

더 보기 »한/영키와 한자키

스페이스 키를 두 번 연타하여 엔터키로 만들기

작가와 같이 일반인들과 비교도 할 수 없을만큼 많은 글을 타이핑하는 분들은 흔히 오른쪽 새끼 손가락의 통증을 호소하는 분들이 많습니다. 아무래도 한글의 경우, 오른쪽 쉬프트 키의 사용이 잦은데다 엔터키도 많이 누르게 되니 오른손 새끼 손가락을 그만큼 많이 혹사하게 되는 것이죠. 그래서 스페이스 바를 두 번 연타하면 엔터로 작동하면 좋겠다는 생각을 하시는 분들이 종종 있는 것 같습니다. 그래서 오늘은 오토핫키를 사용해서 스페이스 키를 두 번 연타하여 엔터키로 만드는 방법에 대해서 알아보도록 하겠습니다.

더 보기 »스페이스 키를 두 번 연타하여 엔터키로 만들기

엑셀 수식 사용법

엑셀은 기본적으로 표 형식의 데이터를 관리하는 프로그램입니다. 입력된 데이터를 가공하여 원하는 정보를 추출하거나 계산해내는 것부터 특정한 기준으로 데이터를 분류, 분석하고 다양한 차트를 통해 시각화하는 기능까지 일상적인 사무 업무에서 데이터를 다루는 일에는 (너무 대용량의 데이터만 아니라면) 거의 모든 분야에서 사용될 수 있습니다. 그 덕분에 많은 직장인들의 필수적인 도구로 자리잡고 있습니다.

엑셀을 활용하는 여러 가지 스킬이 있지만, 그 중에서도 수식을 사용하는 것이 가장 기본적인 능력입니다. 우스개처럼 말하는 ‘엑셀 팡션’은 결국 수식을 통해 사용됩니다. 오늘은 엑셀에서 수식을 입력하는 방법에 대해서 살펴보겠습니다.

더 보기 »엑셀 수식 사용법

ASCIIMATICS TUI – 샘플 앱 예제

지금까지 우리는 몇 개의 글을 통해 asciimatics의 기본적인 사용법과 이 라이브러리를 사용하여 TUI를 구성하는 방법에 대해서 살펴보았습니다. 그리고 여기에 데이터 모델을 연결하기 위한 기초작업은 어떻게 준비하는지도 알아보았습니다. 오늘은 이러한 내용들을 바탕으로 간단한 앱을 만들어 보겠습니다. TODO 앱 우선 간단한 할일의 목록과 완료여부를 표시할 수 있는 Todo 앱을 만들어봅시다. 기본적으로 등록된 작업의 목록과, 새 목록을 등록할 수 있는 UI를 하나의 화면에 추가합니다. 작업 목록에서 하이라이트된 항목을 선택(Enter 키 누름)하면 완료 여부가 반전되어 표시되도록 하고, 목록에 아래에는 텍스트 필드와 추가 버튼을 두어… 더 보기 »ASCIIMATICS TUI – 샘플 앱 예제

파이썬 3.12에서 GIL 없는 병렬처리 도입 계획

최근 발표된 파이썬 3.11은 이전 버전 대비 10~60% 이상의 성능 향상을 보여 화제가 되었습니다. 뭐 파이썬이 원래 느려 먹어서 그정도는 쉽게 되는 거 아니냐는 사람들도 있는데, 파이썬3는 이미 파이썬 3.8부터 파이썬2보다 빠르다고 평가를 받아왔고, 계속해서 10% 가량의 성능을 개선해오다가 3.11에서 향상 폭이 커진 것입니다. 표준 파이썬 구현체의 비약적인 성능 개선을 위해 Faster CPypthon이라는 별도의 프로젝트가 기획되었고, 3.10부터 결과물이 나오고 있는 것입니다. 이 프로젝트의 3.12 버전에 대한 이 프로젝트의 목표 중 하나에 관심이 가는데, 그것은 진정한 멀티 스레드 병렬작업을 가능하게 하겠다는… 더 보기 »파이썬 3.12에서 GIL 없는 병렬처리 도입 계획

ASCIIMATICS TUI – 데이터 다루기

입력필드나 드롭다운 메뉴 같은 UI들은 실제로는 어떤 값을 화면에 표시하기 위해 사용됩니다. 지금까지 asciimatics를 사용하여 UI를 구성하는 방법을 살펴보았는데, 앱이 다루는 실제 데이터와 UI가 어떻게 연결되고, 어떤 식으로 사용해야 하는지에 대한 내용은 아직 이야기 하지 않았습니다. 이제서야 이 이야기를 할 순서가 된 것 같습니다. 오늘은 asciimatics로 TUI를 구현할 때, 데이터를 연동하는 방법에 대해서 살펴보겠습니다. asciimatics의 애니메이션 기능을 설명하면서, 이 라이브러리는 애니메이션 구축 측면에서는 실제 애니메이션 영화를 제작할 때 사용하는 스토리보드 기법을 차용했다고 했습니다. 그리고 UI를 구성하는 측면에서는 모델과 뷰를 구분합니다.… 더 보기 »ASCIIMATICS TUI – 데이터 다루기

컴퓨터에서의 반올림 규칙

대부분의 프로그래밍 언어에서는 사칙연산을 포함한 기본적인 산술 기능이나 고급 수학 함수들을 제공합니다. 그리고 여기에 올림이나 내림, 반올림 같은 정밀도와 관련된 기능도 포함됩니다. 숫자를 포맷팅하는 기능을 제공하는 언어는 어떤 숫자값을 소수점 아래 몇 자리까지 표현하는 포맷을 적용할 때 기본적으로 반올림 기능을 사용합니다. 그런데 컴퓨터에서 사용하는 반올림 기능와 우리가 학교에서 배워서 알고있는 반올림이 좀 다른 규칙이라는 건 알고 있나요? 아니, 반올림이 동네마다 다른 규칙을 쓴다니, 그건 어느 동네 수학이죠? 암튼, 컴퓨터에서 부동소수점 소수값을 정수로 변환하는 규칙에 관한 국제 표준이 있습니다. 우리가 학교에서… 더 보기 »컴퓨터에서의 반올림 규칙