Head First Javascript

Head First Javascript by Michael Morrison

Head First 시리즈는 따로 언급하지 않아도 너무나 유명한 입문서 시리즈다.

그동안 여러 간단한 웹 애플리케이션을 개발하면서, 불편하지 않을 정도로는 Javascript를 익히고 사용해왔기 때문에, 내게 적합한 책이라고 생각한 것은 아니었지만, Head First 시리즈의 유명세를 직접 경험해보고 싶은 마음이 강했다.

이 책을 읽고 나서, 과연 이 책에 대한 소문이 헛소문이 아님을 확인할 수 있었을 뿐만 아니라, 입문서로서의 본보기를 볼 수 있었다.

일반적인 프로그래밍 서적들은 흔히 커다란 분류 체계를 세워놓고 각각의 분류에서 세부사항을 하나씩 설명하는 방식을 취한다. 분류 체계는 물론 중요하다. 분류 체계를 이해하는 것은 그 분야 전체를 이해하는 것을 의미한다. 하지만, 어떤 분야 (이를테면, 프로그래밍 언어)에 익숙하지 않은 입문자에게는, 그러한 분류 체계(이를테면, 변수(variable), 자료형(type), 연산자(operator), 표현식(expression), 클래스(class) 등과 같은 분류)는 이해하기 어려울 뿐만 아니라 학습에 방해가 될 수도 있다.

이 책은, 먼저 목적 또는 필요를 제시하고, 그것을 충족시키기 위한 방법 (이를테면, Javascript의 문법, 라이브러리 요소)을 설명하는 방식을 취하고 있다. 이러한 방식은 입문서로 추천한 적이 있는 Essential C++과 같은 책에서도 보인 적이 있다.

또다른 중요한 요소는 방법을 설명한 후에는 이를 실제로 연습해볼 수 있도록 하는 것이다. 이 책에서는 ‘연습’이라는 중요한 단계를 건너뛰지 않도록 책에 직접 프로그램을 작성할 수 있도록 해두고 있다.

마지막 단계는, 여러가지 방식을 통해서 학습자가 학습한 내용을 여러 번 정리할 수 있도록 하여 마음 속에 새기는 과정이다.

이러한 Head First의 학습 방식 자체는 특별한 것은 아니지만, 기술 입문서에서만은 독특하다고 할 수 있을 것 같다. 그것이 바로 Head First 시리즈가 유명해진 비결일 것이다.

그리고, 한가지 언급하고 넘어가야할 점은, 상당히 낮은 선행 지식을 요구한다는 점이다. 설명 자체가 선행 지식을 거의 필요로 하지 않을 정도로 쉽게 되어있다. 적절한 비유를 사용해 이해를 도와주는 것도 인상 깊다.

한편, 이러한 입문서는 반대로, 입문자가 아닌 학습자에게는 오히려 좋지 않다. 분류 체계가 없는 것은 입문자에게는 이점이지만, 익숙한 분류 체계에 끼워맞추기만 하면 되는 학습자에게 분류 체계가 제시되지 않는 것은 오히려 학습 효율을 떨어뜨리는 것이다. 반복적인 내용도 마찬가지다. 물론, 입문자가 아닌 학습자가 Head First 시리즈를 고르는 것은 잘못된 일이다.

현재 번역되어 있는 Head First 시리즈는, 국내 출간일 순으로, Java, EJB, Servlets & JSP, Design Patterns, HTML with CSS & XHTML, Object Oriented Analysis & Design, PMP, SQL, Javascript (서명에서 Head First 생략) 로 총 9권이다. Moviemaking, Algebra, C#, Physics, Statistics이 아직 번역되지 않았고, Ajax, PHP & MySQL, Rails, Web Design등과 같은 주제로도 출간될 예정이다. C#, Statistics 같은 경우에는 아직 번역되어 나오지 않은 것이 아쉽다.

앞으로 입문서 추천을 누군가가 부탁한다면, Head First 시리즈를 강력하게 추천할 생각이다.

Head First Javascript 더 읽기"

Silverlight 2 with Expression Blend

지난 번에는 Visual Studio 2008을 이용해서 Silverlight 2 애플리케이션을 개발하는 과정을 따라가봤는데, 이번에는 Scott Guthrie의 ‘First Look at Using Expression Blend with Silverlight 2’라는 튜터리얼을 보면서 Expression Blend를 사용해 Silverlight 2 애플리케이션을 개발해보았다.

Microsoft Expression 제품군은 디자인에 초점이 맞춰진 웹/데스크탑 애플리케이션 개발 도구인데, 그 중 Expression Blend는 WPF와 Silverlight 애플리케이션 개발 도구다. 현재 출시되어 있는 Expression Blend 2는 Silverlight 1 애플리케이션 개발만을 지원하기 때문에, Silverlight 2 애플리케이션을 개발하기 위해서는 Expression Blend 2.5 Preview (June 2008 버전)을 설치해야한다.

저번 글에서 언급했던대로, Expression Blend에서는 Silverlight 애플리케이션의 Interactive Design View를 제공한다. WYSIWYG 방식으로 디자인이나 컨트롤의 속성을 변경할 수 있도록 해준다. Visual Studio 2008을 이용할 때와 비교해, 손으로 마크업을 작성해주어야 하는 번거로움이 훨씬 줄어들었지만, 다음과 같은 단점들이 보인다.

첫번째는 코드 작성에 대한 지원이 부족하다는 것이다. 특히, Intellisense 지원이 없는 것으로 보인다. 따라서, Expression Blend로 디자인하고 Visual Studio 2008로 프로그래밍하는 것이 편리하다. 애초에 제품이 분화되어 있는 이유가 원래부터 디자이너와 개발자의 역할 분담을 위한 것으로 보이지만, Intellisense와 같은 기본적인 기능은 있어야 할 듯 하다.

두번째는 아직 Silverlight 기능에 대한 지원이 불완전하다는 것이다. 특히, Silverlight의 주요한 디자인 요소 중 하나인 스타일 지원이라든가, 애니메이션 지원이 아직 없다. 즉, 현재는 손으로 작성해야한다는 얘기다.

이러한 여러 상황들을 볼 때, Microsoft의 Silverlight 출시는 Microsoft 답지 않게(?) 급하게 서두른 감이 있다. 아직은 부족하나, 소프트웨어 개발 도구 제품에 있어서 뛰어난 역량을 보여온 Microsoft인만큼, 베타 버전이 아닌 정식 릴리즈를 기대해본다.

Silverlight 2 with Expression Blend 더 읽기"

'Introduction to Information Retrieval' 스터디 진행 상황

지난 4월 말에 최철호군과 함께 Introduction to Information Retrieval 스터디를 시작했습니다.

서로에게 설명하고 이해가 가지 않는 점을 토론하는 방식은 상당히 성공적이었습니다. 아무래도 스터디 상대가 검색 시스템을 비롯한 소프트웨어 엔지니어링 경험이 많다보니 적합한 방식이었던 것 같습니다.

실은 아직, 원래 목표로 했던 Chapter 9까지의 진행을 완료하지 못했습니다. 5월말까지 한 달 동안 Chapter 5까지 진행했으나, 서로의 사정으로 계속 미뤄지다보니 흐지부지 되어버렸네요.

스터디를 시작할 때는 Introduction to Information Retrieval 웹 사이트에 공개된 PDF를 제본해서 공부하고 있었는데, 그동안에 이 책이 출판되었고, 얼마전에 아마존에서 주문한 책이 도착했습니다. 역시 책이 도착하니 의욕이 좀 나서 Chapter 6, 7을 읽어버렸습니다. 일단 다음 주 정도에 최철호군을 한번 만나서 1차 완료를 해버릴 생각입니다.

스터디를 일단락 지은 다음에는 Web Search에 관련된 Chapter 19-21을 읽고, 본격적으로 Machine Learning에 관련된 Chapter 13-18을 읽을 생각입니다. 단숨에 하기는 힘들테지만, 적어도 연말까지는 이 책을 떼고 싶네요.

'Introduction to Information Retrieval' 스터디 진행 상황 더 읽기"

다음의 언론사와 기사 광고 매출 배분 Daum Shares News Ad Revenue With News Provider

다음에 대한 뉴스 공급 중단

지난 7월 7일 조중동이 다음에 뉴스 공급을 중단했으며, 8월 1일에는 경제지인 매경, 한경도 뉴스 공급을 중단할 예정이다.

조중동의 뉴스 공급 중단 이후, 7월 15일자 코리안클릭의 통계를 바탕으로 한 분석 기사를 보면, 다음 뉴스 트래픽은 크게 변동이 없었고 조중동의 트래픽은 의미있는 수준으로 감소했다고 한다. 중앙일보의 PV가 50% 이상 감소한 것을 예외로 보고, 조중동의 트래픽 감소분은 원래 방문자 비중이 10~20% 사이였던 것을 생각해보면, 예상가능한 수준이라고 보면 된다.

조중동이 애초에 뉴스 공급을 중단한 배경에는 다음 아고라 등을 통한 조중동 광고중단 운동에 따라, 다음 측에 요구한 서비스 중단 또는 검열 요구가 받아들여지지 않은데에 있지만, 뉴스 공급 중단이 가능했던 이유에는 트래픽의 감소가 크지 않을 것이라는 판단이 있을 듯하다.

뉴스 공급 중단을 통해 조중동이 잃는 것은 다음에 뉴스를 공급함으로써 얻는 수익과 다음으로부터 유입되는 트래픽으로 인한 자체 광고로부터의 수익에 불과한 반면, 다음이 뉴스 품질 저하로 인해 잃는 것은 뉴스 서비스 뿐만 아니라 서비스 전반에 영향을 미치는 트래픽 저하와 이에 따른 광고 수익 감소이다. 조중동을 비롯한 신문사와 온라인 서비스를 위한 자회사의 수익구조를 정확히 알지 못하므로 단정지을 수는 없지만, 신문사에서 온라인 매출이 주요 수익원 중 하나가 된지는 얼마되지 않았다. (‘언론사 입장에서 포털은 수익모델 입장에서 큰 유통창구’로 보는 견해도 있다.) 다음의 경우에는 광고 수익이 주요 수익원이므로 그 중요성이 전혀 다르다고 볼 수 있다.

조중동 기사 제외가 사용자의 이탈을 야기할 정도로 서비스 품질에 영향을 미칠 것인가는 쉽게 판단할 수 있는 문제는 아니다. 다음 사용자들의 평균적인 연령, 정치적인 성향 등에 따라서 다를 수 있기 때문인데, 말하자면, 중요한 것은 ‘인식되는’ 서비스 품질인 것이다. 한편, 8월 1일로 예정된 몇몇 경제지의 기사 공급 중단은 중요한 영향을 미치는 것이 아닌가 하는 생각이 든다. 정치적 성향과 달리 경제적 합리성은 품질의 저하를 참아낼 수 없기 때문이다.

당장 통계 분석 기사에서는 큰 감소분이 나타나지 않았지만, 역시 기사에 언급된대로 일주일은 사용자가 뉴스의 품질 저하를 인지하고 사용하는 서비스를 바꾸는 데에는 짧은 시간이고, 정확한 판단은 수개월 간 지켜본 다음에야 가능할 것이다.

뉴스 기사에 대한 배너 매출 배분

이러한 시점에서, 다음은 언론사가 제공한 뉴스 기사에 의한 배너 매출을 언론사에 배분하는 방식을 도입하겠다고 발표했다.

서명덕 기자는 이에 대해 ‘명백한 굴복’이라며, 이러한 발표가 미디어로서의 다음의 위치를 기존 언론사들에게 양보한 것이라고 평가했다. 다음에 미치는 영향에 대해서도 서 기자는 ‘수익에 악영향이 있을 것’이라는 점과 이는 ‘불가피한 선택’이라는 점을 분석하고 있다. 서명덕 기자의 평가와 분석은 어느 정도 수긍은 가지만, 다음의 선택이 일방적으로 잘못된 것만은 아니라고 본다.

다음이 발표한 비즈니스 모델은, 컨텐트로의 링크를 통해 트래픽을 제공하거나, 컨텐트에 대한 비용을 지불하고, 광고로부터 수익을 얻는 일반적인 포탈의 비즈니스 모델에 비해 언론사에 더 많은 이익을 주는 모델이다. 언론사로서는 인링크 방식을 사용해 접근성이나 컨텐트 외적인 서비스 품질을 얻으면서도 아웃링크의 수익을 유지할 수 있다. 아직도 오프라인 미디어 기반의 언론사들이 온라인 미디어 – 포탈과의 공존에 대해 회의적으로 여기는 상황에서 이러한 방식은 오프라인 미디어들이 포탈에 대해 가지는 경계심을 어느 정도 해제해주는 효과가 있으리라 생각한다.

아무래도 기존의 모델에 비해 다음의 수익을 희생해 언론사의 수익을 늘려주는 것이므로, 조중동의 다음으로의 뉴스 공급 중단과 연계해서 생각하지 않을 수는 없다. 조중동을 비롯한 오프라인 미디어로서는 소규모의 수익은 희생할 수 있다는 입장이었겠지만, 다음이 더 많은 기대수익을 보장한다면, 이에 대해 다시 생각해보지 않을 수 없다.

다른 중요한 한가지는 새로운 비즈니스 모델이 기존의 비즈니스 모델을 구축할 가능성이다. 이러한 모델은 수익을 창출하기를 원하는 언론사들과, 뉴스를 적은 비용으로 유치하기를 원하는 소규모 포탈에게는 강력한 유인이 될 수 있으리라고 생각한다. 하지만, 네이버가 시장지배력을 확보하고 있는 상황에서 언론사의 기사 공급을 강제할 수 있는 힘을 가지고 있으므로, 네이버 또는 시장 전체가 이러한 모델로 교체되는 일은 없을 것이다. 2위 사업자인 다음의 입장에서도 같은 이유로 새로운 모델이 필연적인 방향은 아니라고 생각해 왔겠지만, 역시 뉴스 공급 중단 등의 사태로 인해, 그러한 가정이 깨어진 점, 그리고 언론사와의 문제를 해결하는 방법으로서 이러한 모델의 이점이 돋보였을 수 있다.

더 나아가서 만약 이러한 모델이 성공한다면, 즉 뉴스 제공에 보수적인 언론사의 뉴스를 유치하고, 같은 비즈니스 모델을 가지는 온라인 미디어들이 충분히 시장을 점유한다면, 기존의 모델을 오랫동안 고수할 네이버와의 경쟁에서 승리할 수 있는 요인이 될 수도 있다. 하지만, 역시 이러한 성공은 네이버가 지배적인 위치를 점하는 상태에서는 상당히 불확실한 것이다.

한편, 뉴스 공급 중단에 대한 대책으로, 비즈니스 모델에 변화를 주는 방법 만이 존재하는 것은 아니라는 점에서, ‘불가피한 선택’으로만 보기는 힘들지 않을까 싶다. 사실 회사에서 일어나는 중요한 결정들은 대부분 여러가지 안들 중에서 여러가지 이점을 취할 수 있는 것을 선택하지, ‘굴복’하거나 ‘불가피한 선택’을 하는 경우는 매우 드물다. 그러한 오해들은 회사의 문제나 해결 과정을 마치 개인의 것처럼 보는 시각에서 나오는 것이 아닌가 싶다.

다음의 언론사와 기사 광고 매출 배분 Daum Shares News Ad Revenue With News Provider 더 읽기"

Developing Silverlight 2 Application

작년 12월에 Silverlight 1.0 애플리케이션 맛보기 개발에 대한 글을 쓴 적이 있다. 어제 새벽 2시 정도에 잠을 깨는 바람에 Silverlight 2 애플리케이션 개발을 위한 튜터리얼을 보면서 실제로 개발하는 과정을 체험해보았다.

Silverlight 1.0은 Javascript 만을 지원했고, GUI 애플리케이션 개발을 위한 라이브러리에 기본적으로 포함되어있는 레이아웃이나 컨트롤(위젯)들을 포함하고 있지 않았기 때문에, 이렇다 할 애플리케이션을 개발하기가 쉽지 않았다.

Silverlight 1.1 Alpha가 2007년 9월 경에 릴리즈 되었고, 2.0으로 이름이 바뀌면서 2008년 3월에 Beta 1, 6월에 Beta 2가 릴리즈 되었다.

Silverlight 2의 가장 큰 변화는 바로 작은 크기의 CLR을 포함함으로써 Javascript 외의 .Net 언어들, 예를 들어 C#을 사용해 Silverlight 바이너리를 생성할 수 있다는 것이다. 이에 따라, .NET Base Class Library이라든가 LINQ 등의 훌륭한 기능을 활용할 수 있게 되었다.

두번째는 레이아웃이나 컨트롤들이 추가되었다는 점이다. XAML 수준에서 컨트롤 확장이 가능하다는 것도 굉장히 놀랄만한 점이다.

세번째는 Web Services나 AJAX를 위한 WebClient, HttpWebRequest 뿐만 아니라, Socket 까지 지원하는 네트워킹 지원이다. 네트워크를 통해 받은 XML, JSON, RSS/ATOM Feed등을 처리하기 위한 클래스들이나 LINQ와의 연동 등도 훌륭하다.

Silverlight 2 애플리케이션을 개발하기 위한 좋은 튜터리얼은 Silverlight 홈페이지에도 링크되어 있는 Scott Guthrie의 튜터리얼이다. 이 튜터리얼은 Visual Studio 2008을 이용해 Silverlight 2 애플리케이션을 개발하는 과정을 설명하고 있다.

Visual Studio 2008에 Silverlight Tools for Visual Studio 2008을 설치하면,

  • 프로젝트 템플릿을 이용해  Silverlight 2 관련 프로젝트를 생성할 수 있으며,
  • XAML의 Syntax Highlighting은 물론이고, XAML의 렌더링 결과를 실시간으로 확인할 수 있으며,
  • 자체 웹 서버를 통해 브라우저를 통해 Silverlight 2 애플리케이션을 실행하고 디버깅할 수 있다.

아직은 부족한 면이 어느 정도 있는 편이다.

  • XAML 디자인이나 컨트롤 속성 편집 모두 WYSIWYG 방식이 아니라 XAML을 직접 수정할 수 밖에 없다.
  • 스타일이나 데이터 바인딩 등은 XAML에서 attribute 값의 형태로 참조되는데, XAML 에디팅 과정에서 이들에 대한 Intellisense 기능을 활용할 수 없다.

WYSIWYG 디자인은 Expression Blend에서 잘 지원이 되는 듯 한데 (그래서 Expression Blend 튜터리얼도 읽어볼 예정이다), 그동안 데스크탑 애플리케이션의 WYSIWYG 디자인이 주욱 Visual Studio에서 이루어져 온 것을 생각하면, 왜 Silverlight 애플리케이션의 WYSIWYG 디자인은 Visual Studio에서 지원되지 않는 것인지 궁금하다. 아직은 베타라서 그럴 수도 있다고 생각된다.

한편, Scott의 튜터리얼에서는 WatermarkedTextBox라는 컨트롤을 사용하는데, 얼마전에 릴리즈된 베타2에서 이 컨트롤은 제외되었고, 그 기능은 TextBox 컨트롤로 이전될 예정이라고 한다. 역시 아직은 베타 상태기 때문에, 개발 상의 변화가 베타 릴리즈 마다 꽤 크게 이루어지는 것을 볼 수 있다.

팀원 중 한 분이 팀 내에서 사용하는 장비 관리 도구를 Flex로 개발한 결과물을 보면서, 웹 애플리케이션의 귀결은 역시 RIA라는 것을 확인할 수 있었다. 현재의 소프트웨어 개발자가 HTML과 웹 언어를 사용해 웹 애플리케이션을 하나 쯤 개발할 줄 아는 것처럼, RIA 기술을 사용해 웹 애플리케이션을 뚝딱 만들어낼 수 있는 세상이 오는 것인가?

Developing Silverlight 2 Application 더 읽기"

아스트랄계 전생 테스트

아스트랄계 전생 테스트라는 것인데, 비교적 평범한 삶을 살았군요.

아스트랄계에서 추출한 당신의 전생 정보 내역을 분석해본 결과,
당신은 레이리안력 234년 라이시안대륙의 작은 마을 에 살았던 자경단이 습니다.
그 당시에, 당신은 라이시안대륙의 작은 마을 에서 주민들을 몬스터로부터 보호했 었습니다.
당신이 인생에서 가장 행복했던 때는, 첫째를 아내가 임신했을 때 이고,
당신이 인생에서 가장 불행했던 때는, 이계의 인물의 등장에 징집당했을때 였으며,
당신의 죽음은, 검강의 폭풍에 아내의 이름을 부르며 사망하며 이루어졌습니다.

아스트랄계 전생 테스트 더 읽기"

Convenience Over Correctness

Steve Vinoski의 ‘Convenience Over Correctness‘라는 글에 대한 글이다.

Steve Vinoski는 CORBA Guru라고 불리우고 대형 CORBA 벤더 중 하나였던 IONA의 수석 아키텍트 (chief architect and fellow)였으며 CORBA 분야에선 바이블이라고 볼 수 있는 Advanced CORBA Programming with C++의 저자 중 한명이다. 현재는 CORBA와 같은 approach에 회의를 느끼고 IONA를 그만두었으며 최근에 그의 블로그를 보면 REST에 특히 관심을 보이고 있다.

예전에 A Note on Distributed Computing라는 제목의 페이퍼에 관해 요약한 적이 있다. 당시에 Sun RPC나 CORBA 등의 예를 들어 이 문제를 논해주면 좋겠다고 언급했었는데, ‘Convenience Over Correctness’가 바로 그런 글이다.

RPC 시스템의 본질

RPC-oriented systems generally represent remote services using the same abstractions and facilities used to represent local services, thus letting developers stay conveniently within the comfortable confines of their programming languages.

RPC 시스템의 본질은 A Note on Distributed Computing에서 언급된 문제들 – partial failure 등과 같은 문제를 가지고 있음에도 불구하고 프로그래머의 편이성을 얻기 위한 시스템이란 것이다.

RPC 시스템의 문제점들

그는 이어서 ‘A Note…’에서 언급된 문제 이외의 문제를 얘기하는데, 첫번째는 ‘Impedance Mismatch’ 문제로, CORBA IDL을 CORBA가 지원하는 여러 언어들로 mapping할 때 발생하는 문제를 얘기하고 있다. 두가지 이상의 언어를 대상으로 RPC 시스템을 만들어본 사람이라면 금방 이해할텐데, 서로 다른 언어의 타입 등을 mapping하기란 쉽지 않고, 설령 mapping이 가능하더라도 그것이 그 언어에 자연스럽지 않다는 것이다.

두번째 문제는 ‘Scalability Concerns’ 문제다. 분산된 시스템은 흔히 performance나 scalability를 위해 캐싱이나 필터링, 모니터링, 로깅 등을 관장하는 intermediary 시스템을 두는데, 이를 RPC 시스템에서 표현하기 위해서는 RPC call을 위한 정보 이상의 정보 즉, 메타데이터가 필요하다. 이를 위해서 현대의 RPC 시스템에서는 Java나 C# 등에서 지원하는 annotation을 이용하는데, 이러한 접근은 transparency라는 환상을 위해 복잡성을 추가할 뿐이라는 것이다.

이 문제에 있어서, Steve는 REST를 대안으로 내세운다. 네트워크의 영향을 시스템이 인지하면서도 깔끔한 layering과 separation of concerns를 유지한다는 것이다. REST를 다시 programming language 아래로 숨기려는 시도들을 비판하고 있다.

그는 RPC 시스템이 개발자의 편이성을 위해서 그 문제를 정확히 인지하고 있음에도 불구하고, 취약한 abstraction layer들과 임시 방편(bandages)들을 쌓아 올린 것에 불과하다고 본다. 그리고, distributed computing과 programming languages의 역사가 distributed computing의 necessary complexity를 너무 어려운 문제로 보고 프로그래머의 편이성을 위해 제대로 동작하지 않는 시스템을 만들어냈다고 비판한다.

대안

그는 RPC 시스템 대신 message queing 시스템이 발전했어야 한다고 강조하며, message queuing 시스템이 상용 제품에서도 대단히 비싸고 OSS 제품들도 최근의 XMPPAMQP 구현 외에는 없다는 점에 대해서 유감을 표하며, Facebook ThriftCisco Etch가 XMPP/AMQP를 지원하거나 RESTful HTTP에 기반해야 하지 않겠냐는 의견을 피력한다.

결론

결론은 Steve의 글을 인용하는 것으로 마무리 하겠다.

(Facebook Thrift and Cisco Etch); perhaps both cases are instances of those not knowing history being doomed to repeat it.

It’s time for RPC to retire. I won’t miss it.

의견

한마디로 말하자면, Steve의 의견은 ‘Convenience가 정말 중요하고 실재하는 것인가? 오히려 Correctness가 중요하지 않은가?’인데, 내 생각은 ‘Convenience의 이익은 생각보다 크고 Correctness보다 Convenience가 중요할 때도 있다.’라는 것이다.

그럼에도 불구하고 Steve의 생각들은 구구절절 옳기 때문에, 주어진 문제에 따라서 접근 방법을 다르게 해야한다고 생각한다. 이를테면, intermediation이 많이 게재되거나 게재될 가능성이 있는 시스템에서는 애초에 RPC 접근을 하기 보다는 MQ 접근을 한다든가, RPC 시스템을 만들더라도 완벽한 transparancy에 목매지 않는 것이 그것이다.

기술이 항상 옳은 방향으로 발전하는 것은 아니지만, 실제적인 프랙티스로 반영되지 않는 것은, 그 기술의 방향이 옳지 않다는 것 이외의 다른 이유들 – 그런 기술을 수용하기 위한 기반 기술들이 마련되지  않았다라든가 – 이 있을 수 있다고 보는 편이다. 아직은 MQ/RESTful HTTP는 실험적이다. 하지만, 이들을 주시하고 지켜볼 일이다.

Convenience Over Correctness 더 읽기"

VMware causes host keyboard problem in Ubuntu

Ubuntu에서 VMware를 사용하고 계신 분이라면 이미 경험해봤으리라고 생각하지만, 이 문제의 원인과 Workaround를 찾아내는데도 오랜 시간이 걸렸기 때문에 혹시 도움이 될까 해서 적어둔다.

증상

잘 사용하다가 갑자기 Control, Shift 등의 키가 동작하지 않는다. xev 등에서 체크해봐도 이벤트는 발생하지 않는다.

발생 조건

Linux Host에 Windows Guest로 VMware를 사용하고 있다. gutsy에서는 아무런 문제 없이 VMware를 사용하고 있었는데, hardy로 업그레이드 하고나서부터 발생하기 시작했다. VMware는 윈도우 모드로 사용하고 있고, guest OS에 VMware Tools를 설치하고 seamless 모드 (키보드 입력 없이 마우스 이동 만으로 포커스)를 사용하고 있다.

원인

처음에는 hardy의 문제 – 특히 Xorg 7.3의 문제라고 생각하고, 결국 hardy를 새로 깔게 되었지만, 결국 찾아보다보니 VMware와 Ubuntu (정확히는 Xorg 7.3)사이의 문제이고, 어느 쪽의 버그인지는 정확히 모르겠다.

Ubuntu와 VMware 각각에 버그 리포트들도 존재하지만, (증상이 복잡하다보니 아래 외에도 여러 유사 증상에 대한 리포트가 존재한다.) 원인은 밝혀져있지 않은 상태다.

해결책

해결책은 현재 없는 상태고, Workaround만이 존재하는 상태다.

두가지 해결책이 있다.

  1. 문제가 발생할 때마다, setxkbmap을 실행해주는 방법. (본인의 경우에는 실행아이콘을 패널에 등록.)
  2. Seamless 모드를 끄는 방법. (http://shhan.tistory.com/87 를 참고.)

VMware로 포커스를 주는 빈도에 따라 문제가 발생할 확률이 높기 때문에, 두가지 방법 모드 매우 불편하다.

다른 분들(태미 님, 한상헌 님)은 대체로 2번 방법을 사용하시는 것 같은데, 오늘부터 본인도 2번 방법을 사용하기로 했다.

VMware causes host keyboard problem in Ubuntu 더 읽기"

Metal Gear Solid, Battlefield Themes

Battlefield theme을 찾다가 주요 게임 theme들을 오케스트라로 연주한 Youtube 동영상들을 찾게 되어 소개한다.

"Play! A Videogame Symphony" in Lillestrøm, Norway – October 26th 2007.

특히 Metal Gear Solid와 Battlefield의 곡들은 시리즈를 이어가며 같은 theme을 사용하고 있는데, 이 음악들이 그 게임들을 좋아하는 이유 중의 중요한 이유 하나일 것이다. Zelda는 플레이해본 적이 없어서, Zelda의 theme에 감동을 느끼지는 못하겠고, Halo의 theme은 별로 좋아하지 않는 곡이다. 한편, Dreamfall은 언젠가 반드시 한번 플레이해봐야할 게임.

보너스로 Battlefield의 최신작인 Battlefield: Bad Company에서 첼로와 바이올린으로 연주된 Battlefield Theme. 이 곡은 Bad Company 홈페이지에서 다운로드 받을 수 있다. Bad Company는 1-2주일 내로 구입할 듯. (Xbox 360 버전으로 구입할지, PS3 버전으로 구입할지 고민 중.)

Metal Gear Solid, Battlefield Themes 더 읽기"

Foxmarks Bookmark Synchronizer

서로 다른 데스크탑에 존재하는 firefox의 북마크를 동기화해주는 역할을 하던 Google Browser Sync가 Firefox 3에서 더이상 지원되지 않게 되면서, Foxmarks Bookmark Synchronizer를 사용하기로 했습니다. Google Browser Sync처럼 실시간으로 동기화되지는 않고, 동기화할 때마다 5초 정도 기다려주어야 하는 불편함이 있긴 합니다. 좀 더 좋은게 나올 때까지 그럭저럭 버틸 수 있지 않을까 싶네요.

그 외에도, del.icio.us Complete 대신 Yahoo!에서 제작한 Delicious Bookmarks를 북마크와 동기화 하지 않는 Classic 모드로 사용하게 되었고, Tab Mix Plus도 개발 버전을 사용하게 되었습니다.

Foxmarks Bookmark Synchronizer 더 읽기"