지난번 상판을 뜯어냈던 것 으로는 온도가 딱히 내려가지 않았다. 그래서 조금 더 극단적인 방법을 취해보기로 했다. 노트북 아래 바람구멍을 내서 발열을 돕는 것이다. 당연히 하판에 구멍을 뚫는 것만으로는 크게 소용없겠지만, 쿨링 패드를 사용해서 아래쪽에서 끊임없이 바람을 보내고 있기 때문에 구멍을 뚫는 것만으로 꽤 효과가 있을 거라고 기대됐다. 말하고 보니 이게 노트북에서 모니터를 뜯는 것보다 더 극단적인 방법인지 모르겠지만, 손이 더 많이 가기 때문에 가능하면 하기 싫었던 일이다. 우선 본격적인 작업에 앞서 간단하게 할 수 있는 작업으로 키보드를 분리해냈다. 어차피 모니터도 없는 노트북 USB로 키보드를 연결 못 시키는 상황이 오면 그때는 정말 버려야 할 때라고 생각하고 뜯어버렸다. 당연히 아무 곳에나 구멍을 뚫는 것은 크게 소용없다. 어디까지나 발열을 돕기 위한 것이므로 열이 많이 날 것 같은 곳에 구멍을 뚫어야 한다. 그래서 찾은 타깃은 다음과 같다. 1. 하드디스크 해봐야 40~50도 정도이긴 하지만 그래도 HDD의 발열도 생각보다 크다. 특히 금속 재질이기 때문에 노트북같이 밀폐된 공간에서는 다른 부품의 열을 받아 자체적으로 발생하는 열보다 온도가 더 올라가기도 한다. 2. SSD 사실 SSD는 발열이 그리 크지 않다. 냉정하게 생각해봤을 때 굳이 구멍을 낼 이유는 없을 것 같지만, 기왕 작업하는 김에 같이 구멍을 뚫었다. 3. 배터리 평소 배터리는 발열이 심한 파트는 아니다. 특히 내가 쓰는 환경과 같이 24시간 전원을 꽂아놓고 쓰는 경우 더더욱 배터리는 크게 영향을 주지 않는다. 하지만 온도가 올라가면 위험한 파트이기 때문에 특별히 구멍을 뚫었다. 4. RAM RAM은 특별히 오버클럭을 하지 않으면 딱히 발열이 심하지 않다. 그래서 아무 작업도 안 하려고 했다. 하지만 RAM 교체를 위해 부분적으로 열릴 수 있는 구조로 돼 있었기 때문에 판을 여는 것만으로 소기의 목적을 달성할 수 있었기 때문에 그냥...
사악한 디자인 - 크리스 노더 사악한 디자인 은 크리스 노더 가 쓴 Evil by Design: Interaction Design to Lead Us into Temptation 의 번역서다. 이 책은 사용자의 심리를 이용해 행동을 유도하는 여러 기법을 다룬다. 소재는 흥미롭지만, 결론부터 말하면 추천하지 않는다. 먼저 확실히 해두고 싶은 점은 있다. 내가 이 책을 추천하지 않는 이유는 소개하는 기법들이 틀렸다고 생각해서가 아니다. 사회적 검증, 손실 회피, 희소성, 보상처럼 사용자의 선택을 이해하는 데 도움이 되는 개념을 폭넓게 다루고, 이를 실제 서비스에서 어떻게 활용하는지도 보여준다. 다만 유용한 내용을 다룬다고 해서 읽기 좋은 책이 되는 것은 아니다. 첫 번째 문제는 책의 구성이다. 이 책의 핵심은 사람은 언제나 이성적으로 판단하지 않으며, 디자인은 그런 심리를 이용해 사용자의 행동을 유도할 수 있다 는 것이다. 저자는 이를 교만, 나태, 식탐, 분노, 시기, 색욕, 탐욕이라는 기독교의 7대 죄악으로 나누어 설명한다. 제목과 목차만 보면 꽤 매력적이다. 하지만 읽다 보면 이 분류가 내용을 이해하는 데 도움되지 않는다는 것을 깨닫는다. 사실 이건 설명을 위한 틀이 아니라 마케팅 훅이다. 예를 들어 탐욕은 누구나 알고 있는 대로 필요 이상으로 가지려는 욕구다. 하지만 식탐이나 색욕은 디자인에 적용하기 어렵다. 그래서 저자는 식탐을 자제력의 부족으로 설명하고, 색욕은 성적인 욕망을 넘어 대상이 무엇이든 강렬한 욕구를 품는 것으로 정의한다. 이렇게 각 범주의 의미가 겹치도록 정의했기 때문에 욕심에 의한 행동이 무언가를 강하게 원하기 때문인지, 자제력을 잃었기 때문인지, 필요 이상으로 소유하려는 마음 때문인지 어떻게 구분 할지 애매해진다. 저자도 색욕을 출발점으로, 시기와 탐욕을 그 결과로 설명한다. 그렇다면 원인과 결과로 이어지는 것들을 같은 수준의 범주로 나누는 방식이 적절한지부터 묻게 된다. 물론 대중서의 목차가 학문적으로 엄밀한 분류 체계일...
이 책은 컬러, 그리드, 타이포그래피, 그래픽 요소, UX의 다섯 가지 주제에 대해 기본적인 이론을 살펴본 뒤, 총 89개의 사례에서 버려지는 디자인과 통과되는 디자인을 비교하여 설명한다. 각 사례에는 하나의 대표 주제가 있으며, 각 사례에서 어떤 효과를 위해 무엇을 바꾸었는지 해설한다. 이 책의 장점은 풍부한 사례다. 이론으로만 접하거나 개별 요소를 따로 살펴볼 때보다, 여러 요소가 함께 놓인 실제 화면을 볼 때 이해하기 쉬운 부분이 있다. 수정 전후의 디자인을 직접 비교할 수 있다는 점도 좋다. 다만 사례마다 특정 디자인 요소를 주제로 붙여 전개하는 방식은 아쉽다. 반대로 단점은 사례를 기반으로 설명하다보니 설명이 짜임새 있지 못하다는 것이다. 문제가 있는 디자인은 대개 한 가지 요소에만 문제가 있지 않다. 여러 요소를 함께 수정해야 하고, 각각의 수정이 화면에 미치는 영향도 다르다. 이렇다 보니 사례별로 주제를 선정하는 방식은 좋은 전달 방식이 아니라는 생각이 든다. 이 책은 사례의 주제에 해당하는 요소뿐 아니라 다른 수정 사항도 함께 설명한다. 그러다 보니 정작 사례의 주제보다 다른 요소의 개선을 더 많이 이야기하기도 한다. 개별 수정의 이유는 이해할 수 있어도, 해당 사례가 왜 그 주제의 사례로 제시되었는지는 의문이 남는다. 예를 들면, 1장 컬러 편에는 ' 다채로운 색상의 인덱스 디자인 '이라는 주제로 웹사이트를 다룬 사례가 있다. 이 사례의 주제는 다채로운 색상을 사용하여 디자인을 심심하지 않게 만드는 것이다. 하지만 실제 개선한 사례를 보면, 버튼에 네거티브 기법을 적용한 것보다 시선이 먼저 가는 메인 이미지에서 복잡한 정보를 제외하고 사용자의 행동을 유발하는 CTA 버튼을 추가한 것이 가장 먼저 눈에 띤다. 그리고 저자가 설명하고 있지는 않지만, 메뉴 버튼의 크기를 늘려 사용성을 높인 것도 효과적이다. 동시에 CTA가 있는 메인 이미지를 복잡한 정보를 제공하는 아래 화면과 분리한 것도 효과적이다. 하지만 이런...
프로그래머의 뇌 는 프로그래머들이 흔히 말하는 '좋은 코드'란 무엇인지, 그리고 코드를 어떻게 하면 더 잘 읽을 수 있는지를 인지과학의 관점에서 설명하고, 이를 바탕으로 프로그래밍을 더 효과적으로 수행하는 방법을 제시하는 책이다. 이 책에서 소개하는 실천적인 조언의 상당수는 낯설지 않다. 클린 코드 , 리팩터링 , 실용주의 프로그래머 같은 서적에서 이미 제시된 조언들이다. 이 책의 차별점은 새로운 원칙을 제시하는 데 있다기보다, 기존의 원칙이 왜 효과적인지를 인지과학에 근거해 설명한다는 데 있다. 이 책은 좋은 코드를 독자의 기억과 사고에 불필요한 부담을 주지 않는 코드로 바라보고, 그 부담을 줄이는 방법을 설명한다. 이미 다른 책에서 접할 수 있는 내용을 굳이 다시 알아야 하느냐고 물을 수도 있다. 내가 생각하는 이 책의 가치는 우리가 경험적으로 알고 있던 현상에 이름을 붙여 준다는 데 있다. 나 역시 코드를 어떻게 작성해야 하는지는 알고 있었지만, 이를 다른 사람에게 설명할 때는 코드 리뷰를 통해 그때그때 개별적인 조언을 건네는 데 그치곤 했다. 이 책을 읽고 나서는 파편화되어 있던 경험에 적절한 이름과 설명을 붙이고, 그 조언이 필요한 이유까지 이야기할 수 있게 되었다. 이름을 붙이면 현상을 식별하고 동료와 논의하는 데 도움이 될 뿐 아니라 기억에도 더 오래 남는다. 이 책의 표현을 빌리자면, 관련 정보를 장기 기억에 저장하고 필요할 때 인출하기도 쉬워지는 것이다. 이 책을 읽어야 하는 또 다른 이유는 클린 코드 나 리팩터링 에서 제시하는 규칙을 교조적으로 받아들이는 데 그치지 않고, 그 배경에 있는 원리를 이해할 수 있다는 점이다. 원리를 알고 있으면 책에서 제시한 규칙이 그대로 적용되지 않는 상황에서도 다른 해결책을 찾을 수 있기 때문이다. 다만, 이 책은 인지과학을 사용해 프로그래밍을 설명하는 책이지, 인지과학 자체를 설명하는 책은 아니다. 따라서 같은 현상에 대한 여러 이론적 논쟁을 다루지 않고, 실용적 설명을 위...
수학을 왜 공부해야 하는가? 수학자들은 세상의 진리를 탐구하기 위해서라고 할 것이고, 변태들은 단순히 재밌어서라고 할 것이다. 하지만 나는 진리 탐구에는 관심이 없다. 그리고 수학이 흥미롭다고 생각하지, 재밌다고 생각하지도 않는다. 그럼에도 수학을 공부하는 이유는 수학이 사고 훈련에 도움되기 때문이다. LLM에게 코드 작성을 시키면 정말 못하는 것이 하나 있다. 바로 추상화다. 다른 부분은 몰라도 추상화만큼은 정말이지 신입 개발자 수준의 모습을 보여준다. LLM이나 신입 개발자들이 하는 추상화는 그저 비슷한 코드 몇 개를 하나의 함수로 합치는 수준에 불과하다. 추상화란 무엇일까? 추상화는 여러 개의 구체적인 대상에서 본질적으로 필요한 성질만 남기고, 나머지 차이를 버려 하나의 일반적인 개념으로 표현하는 것이다. 그렇다면 추상화를 잘하려면 어떻게 해야 할까? 추상화의 첫 번째 단계는 추상화할 대상과 범위를 정하는 것이다. 그리고 그 대상의 필수적인 성질이 무엇인지 깊이 생각해야 한다. 어떤 성질은 주어진 대상의 본질적인 것이고, 어떤 성질은 그 본질적인 성질을 만족하기만 하면 부수적으로 따라오는 것이다. 반대로 지금 눈앞에 있는 코드에 공통점이 있더라도 그것이 우연히 공유하고 있을 뿐이고, 실제로는 추상화 범위에 포함해서는 안 되는 경우도 있다. 좋은 추상화는 이 경계를 잘 찾는 일이다. 이런 구분이 없이 일단 코드가 같기 때문에 같은 클래스나 함수로 추상화하는 경우를 보면 나는 이렇게 묻는다. 이 구조가 정말로 필연적인가? 그리고 이것이 수학에서 사고하는 방식이다. 아니, 수학이라고 하면 범위가 너무 넓을 수도 있다. 최소한 대수학에서는 그렇다. 정수, 행렬, 다항식은 겉보기에는 전혀 다른 대상이다. 하지만 대수학에서는 그 대상 자체가 아니라 그 위에 어떤 연산이 정의되고, 그 연산이 어떤 법칙을 만족하는지를 본다. 그렇게 군, 반군, 모노이드, 환, 체 같은 대수 구조가 만들어진다. 이 책은 역사 속 대수학이 발전한 과정을 따라간다. 고대...
댓글
댓글 쓰기