기본 콘텐츠로 건너뛰기

카테고리 씨어리 공부 중

 뭐 그냥 그렇다고요.

 최근 몇 년을 회사 다니고 퇴사하자마자 알바하고, 그러면서 학교도 다니고 하다 보니까 개발은 죽어라 했는데 정작 기초 공부를 별로 안 한 거 같네요. 학교 다니면서 공부 안 하냐고요? 네. 안 해요. 그래서 문제죠. 그래서 이번에 알바도 끝난 기념으로 수학 공부를 해야지 하다가, 도서관에 가보니 마침 카테고리 씨어리에 대해 번역한 책이 있길래 카테고리 씨어리를 공부하기로 했어요.

 뭐 보통 CS하는 사람들은 대부분 리니어 알제브라나 확률 쪽을 공부하는 거 같아서 그쪽을 공부하려고 했는데 뭐 그쪽은 워낙에 취향이 안 맞아서.... 카테고리 씨어리는 아직 제대로 공부한 적이 있어서 재미있는지 없는지 모르니 그냥 하려고요. 언젠가는 확률이랑 선대도 다시 공부하겠죠.

 음. 카테고리 씨어리가 뭔지 간단히 소개하고 싶지만, 그런 게 가능하면, 새삼스레 공부하고 있지도 않겠죠. 전체 내용이나 다른 분야의 사람들이 어떻게 쓰는지는 모르겠고, 그냥 컴싸하는 사람들이 관심 있는 부분만 말하면, 이걸 이용해서 함수들의 알제브라를 구성하거나 타입을 인자로 하는 함수의 합성 같은 걸 하면 어떻게 될까 같은 내용이에요.

 보고 있는 자료는 임근빈씨가 집필한 카테고리론(아마 한국어로 된 유일한 카테고리씨어리 관련 책이 아닐까 합니다.), Michael Barr씨와 Charles Wells씨가 집필한 Category Theory for Computing Science(제목에 끌렸고, 모든 문제에 솔루션이 달려있다는 것 때문에 선택했는데 좀 많이 기네요.), Jaap van Oosten씨가 집필한 Basic Category Theory(그냥 구글 검색해서 제일 처음에 있더라고요)등을 보고, 유튜브에 올라온 Martin Codrington씨의 Category Theory: The Beginner’s Introduction와 Steve Awodey씨의 Category theory foundations(게임 개발자를 위한 코딩 스쿨의 서광열 님이 추천해 주셨습니다. 감사합니다.)를 보고 있습니다. 뭐 좋은 교재나 강의 있으면 추천 부탁드립니다.

 딱히 이걸 하는 게 소프트웨어 개발의 도움이 된다거나 할 것 같아서 배우는건 아니에요. 그냥 취미로 하는 거죠. 카테고리 씨어리에서 소프트웨어 개발에 도움될만한 부분은 모나드와 모노피즘과 애로우같은 것들인데, 그런 건 사실 그건 수학적으로 엄밀히 몰라도 쓸 수 있는 거라서. 뭐 프로그래머들이 언제는 함수를 수학적으로 엄밀히 정의하고 쓰나요.

 공부하다 알게 된 거 있으면 개발 블로그 쪽에 쓰도록 하겠습니다.

댓글

이 블로그의 인기 게시물

노트북 하판에 구멍내기

지난번 상판을 뜯어냈던 것 으로는 온도가 딱히 내려가지 않았다. 그래서 조금 더 극단적인 방법을 취해보기로 했다. 노트북 아래 바람구멍을 내서 발열을 돕는 것이다. 당연히 하판에 구멍을 뚫는 것만으로는 크게 소용없겠지만, 쿨링 패드를 사용해서 아래쪽에서 끊임없이 바람을 보내고 있기 때문에 구멍을 뚫는 것만으로 꽤 효과가 있을 거라고 기대됐다. 말하고 보니 이게 노트북에서 모니터를 뜯는 것보다 더 극단적인 방법인지 모르겠지만, 손이 더 많이 가기 때문에 가능하면 하기 싫었던 일이다. 우선 본격적인 작업에 앞서 간단하게 할 수 있는 작업으로 키보드를 분리해냈다. 어차피 모니터도 없는 노트북 USB로 키보드를 연결 못 시키는 상황이 오면 그때는 정말 버려야 할 때라고 생각하고 뜯어버렸다. 당연히 아무 곳에나 구멍을 뚫는 것은 크게 소용없다. 어디까지나 발열을 돕기 위한 것이므로 열이 많이 날 것 같은 곳에 구멍을 뚫어야 한다. 그래서 찾은 타깃은 다음과 같다. 1. 하드디스크 해봐야 40~50도 정도이긴 하지만 그래도 HDD의 발열도 생각보다 크다. 특히 금속 재질이기 때문에 노트북같이 밀폐된 공간에서는 다른 부품의 열을 받아 자체적으로 발생하는 열보다 온도가 더 올라가기도 한다. 2. SSD 사실 SSD는 발열이 그리 크지 않다. 냉정하게 생각해봤을 때 굳이 구멍을 낼 이유는 없을 것 같지만, 기왕 작업하는 김에 같이 구멍을 뚫었다. 3. 배터리 평소 배터리는 발열이 심한 파트는 아니다. 특히 내가 쓰는 환경과 같이 24시간 전원을 꽂아놓고 쓰는 경우 더더욱 배터리는 크게 영향을 주지 않는다. 하지만 온도가 올라가면 위험한 파트이기 때문에 특별히 구멍을 뚫었다. 4. RAM RAM은 특별히 오버클럭을 하지 않으면 딱히 발열이 심하지 않다. 그래서 아무 작업도 안 하려고 했다. 하지만 RAM 교체를 위해 부분적으로 열릴 수 있는 구조로 돼 있었기 때문에 판을 여는 것만으로 소기의 목적을 달성할 수 있었기 때문에 그냥

[책] 이상한 나라의 사각형

이상한 나라의 사각형 이라는 제목 때문에 이상한 나라의 앨리스 의 짝퉁 소설처럼 보일 수도 있지만, 원제는 Flatland: A Romance of Many Dimensions 로, 앨리스와는 전혀 상관이 없다. 소설의 주인공은 Flatland 의 수학자인 사각형(Square) 이다. 그는 어느 날 우연히 Lineland 에 발을 들였던 것을 계기로 Spaceland 의 주민인 구(Sphere) 의 도움을 받아 Spaceland 라는 이상한 나라를 여행하며 새로운 지식을 깨닫게 된다. 자신의 세상에 돌아와서 이 지식을 널리 퍼트리려 하지만, 2차원인 Flatland 에서 3차원인 Spaceland 를 묘사할 수 없었다. 결국 다른 사람들을 설득하는 데 실패하게 되고 질서를 어지럽힌다는 죄목으로 감옥에 수감되며 소설은 끝난다. 2차원 세계인 Flatland에 대한 설정뿐 아니라 2차원의 주민이 3차원을 보고 이해하게 되는 과정과 1차원의 주민과 다른 2차원의 주민들을 설득하려고 하는 과정의 묘사가 훌륭하기로 유명하다. 덕분에 SF소설로서도 유명해 다른 SF소설에 영향을 주기도 하고, 여러 차례 영상화가 된 적도 있다. 하지만 이 소설은 본질적으로 빅토리아 시대의 폐쇄적인 지식인 사회와 엄격한 계급 사회를 비판하는 풍자 소설이다. 그래서 소설에서 묘사되는 Flatland 를 당시의 영국 사회와 연결하여 생각해 볼 때 제대로 볼 수 있다. Flatland를 사회 풍자 소설로 볼 때 우리는 구 와 사각형 의 행동을 제대로 이해할 수 있다. 주인공 사각형 입장에서 구 는 자신이 몰랐던 세상을 알려주는 스승이자 선구자다. 하지만 그도 그저 자신이 본 것을 알 뿐이다.  Spaceland 의 주민이라면 한낱 소매치기라도 Flatland 에서 신과 같은 능력을 가질 수 있을 뿐 그가 특별했던 것은 아니다. 그래서  사각형 이 3차원 이상의 세계를 유추해냈을 때  구 는 그의 생각을 허황된 생각이라고 무시한다. 사각형 또한 마찬가지다. 그의 지성은 구보다 날카롭

노트북 상판 뜯기

4년쯤 전에 노트북을 산 적이 있다. 지금도 그렇지만 작은 모니터에서 코드 보는 걸 매우 싫어해서 일단 큰 화면이 최우선사항이었다. 다음은 크롬이 원활하게 돌아갈 수 있도록 16GB 이상의 RAM이 들어있는 것이었고, 마지막은 OpenCL과 OpenGL이 적당한 성능으로 돌아갈 수 있도록 nvidia GPU가 있는 것이었다. 그중에서 가장 저렴한 모델을 고르니 무게가 2kg이 넘고 사용시간은 4시간이 안 되는 Gigbyte의 U35가 나왔다. 결국 너무 무거운 무게 때문에 들고 다니지 않고 일반 컴퓨터보다 저전력, 저소음이라는 이유로 집에서 서버 대용으로 사용하고 다음 노트북 을 구매할 때는 무게를 제일 우선으로 고르게 됐다. 문제는 이 노트북이 최근 발열이 잘 안 되기 시작했다. 오래 써서 수명이 다 돼가서 그런지 1년 가까이 거의 24시간 켜놓은 것이 문제인지 모르겠지만, 조금이라도 발열을 시키기 위해서 상판을 열고 사용한다. 근데 이렇게 쓸 거면 상판을 떼고 모니터가 필요하면 외부 모니터를 사용하는 게 어떨까 싶었는데 이래도 GPU가 잘 동작하는지 확인하기 귀찮아서 안 하고 있었다. 근데 기종은 다르지만 어떤 컴갤러가 망가진 노트북 분해해서 쓰는 글 을 보고 별문제 없을 것 같아 분해해버렸다. 이 노트북은 이미 부품 교체하느라 여러 번 뜯어봤던지라 별문제 없을 거로 생각했는데 하나 예상치 못한 문제가 생겼다. 무선 랜카드의 안테나가 모니터 쪽으로 연결된 것이었다. 위 이미지의 붉은 네모가 안테나에서 나온 케이블인데 이게 노란 원으로 표시한 부분에 연결돼 있었다. 잠시 망설이기는 했지만, 네트워크는 그래도 최악의 경우에는 유선을 이용하면 되기 때문에 분리했다. 예상했던 대로 무선 네트워크는 제대로 동작을 안 했다. 수신율이 떨어져서인지 패킷 유실이 많거나, 응답시간이 너무 길었다. 처음에 계획했던 대로 유선 랜을 사용하면 되지만, 이대로 무선을 포기하기는 약간 아쉬웠다. 그래서 일단 모니터에 안테나가 어떻게 설치돼 있는지 확인해보기로 했다.