번역서 정보 | 번역서 질문&의견 | 번역 이야기 | 문서 창고 | 방명록

근황 - 2014-12-06

류광, 2014/12/06 23:49
Artificial Intelligence: Modern Approach 3rd 번역 시작.

저번 달에 Functional Programming in Scala라는 책의 번역을 마쳤습니다. 스칼라 입문서는 아니고, 제목 그대로 스칼라로 하는 함수형 프로그래밍에 대한(함수형 프로그래밍에 방점이 찍혀 있는) 책입니다. functional을 함수"형(型)"이라고 번역하는 게 바람직한가에 대해서는 조만간 글을 한 번 쓰겠습니다.

이번 달부터는 Artificial Intelligence: A Modern Approach 제3판을 번역하고 있습니다. 인공지능 분야에서 이 책이 전산학의 TAOCP 시리즈와 비슷한 지위를 가지고 있다고 들었습니다. 예전에 번역한 게임 인공지능 관련서나 GPG 시리즈에서 이 책이 여러 번 참조되는 것을 보면서 이 책이 꼭 번역되었으면 좋겠다고 생각했는데요. 고맙게도 제이펍이 이 책을 내기로 했고, 더욱 고맙게도 제게 번역을 의뢰해주셨습니다.

인공지능은 그 자체로 흥미로운 분야이지만, 요즘 뜨고 있는(이미 뜬?) 소위 '빅데이터(거대자료)'의 자료 발굴(데이터 마이닝) 문제와 관련해서도 중요한 분야입니다. 그런만큼 이 책이 이제라도(제1판이 나온지 20여년만에) 번역되는 것은 의미가 크다고 생각합니다.

번역 외 활동은 별로 이야기할만 한 것이 없네요. 루아나 C++로 이거 저거 만들고 있긴 한데 너무 개인적이거나 어설퍼서요.... 제 GitHub 저장소의 커밋 기록이 멈춘지 3개월이 넘었는데 좀 더 분발하겠습니다.

top
트랙백 0 : 의견 # + 0

브라우저 해킹 vs 보안 독자 증정 이벤트 결과 발표

류광, 2014/11/11 18:18
브라우저 해킹 vs 보안 독자 증정 이벤트 문제 해설.

브라우저 해킹 vs 보안 독자 증정 이벤트를 이 시점에서 마감합니다. 답을 보내 주신 분이 두 분 밖에 없어서 자동으로 두 분이 대상자로 선정되었습니다. 두 분께는 따로 편지 드리겠습니다.

문제가 좀 어려웠나요? 본질적으로 어려운 문제는 아니지만 아마 이쪽에 관심이 없는 분에게는 이런 북마클릿의 의도 자체가 생소하지 않았나 합니다.

문제는 다음과 같았습니다.

[인용]

문제: 다음은 현재 서핑 중인 웹 페이지를 GpgStudy 게임 개발 소식의 사용자 임시 보관함에 등록하는 북마클릿입니다(원래는 한 줄인데 너무 길어서 줄을 좀 바꾸었습니다. 이 점이 답에 영향을 미치지는 않습니다). 이 코드에서 setTimeout(function ... 3000) 부분은 어떤 의미일까요?

javascript:(function(){var d=document;var s=d.createElement('script');
s.type='text/javascript';s.charset='UTF-8';
var h=encodeURIComponent(d.location.href);
s.src='http://gpgstudy.com/news/js/draft?u='+h;d.documentElement.appendChild(s);
setTimeout(function(){if(typeof gnd_added_=="undefined")
location.href='http://gpgstudy.com/news/add/draft?u='+h},3000)})()

해당 호출이 무슨 일을 하는지, 왜 그런 일이 필요한지 서술하시면 됩니다. 힌트: 짐작하셨겠지만 브라우저의 보안 기능과 관련이 있습니다.

채점 기준은 다음과 같습니다.

  • 북마클릿의 전체적인 목적은 현재 페이지 안에 결과를 표시하려는 것임을 언급 : +10점
  • setTimeout(...) 부분은 외부 JavaScript 코드의 적재가 실패하는 경우를 대비하는 것임을 언급: +10점
  • 적재 실패 이유 언급
    • https 페이지 안에서 http 자원을 적재하려 하면 적재가 실패할 수 있음을 언급: +10점
    • 현재 페이지의 Content Security Policy 설정 때문에 적재가 실패할 수 있음을 언급: +10점
      • Content Security Policy를 번역서에 쓰인 용어인 '내용 보안 정책'이라고 표현: +5점
  • setTimeout과 전역 변수를 이용한 방법 이외의 적재 실패 판정 방법 제안: +15점

추가로 설명하자면...

이 북마클릿의 전체적인 목적은 "현재 페이지를 GpgStudy 게임 개발 소식의 사용자 임시 보관함에 추가하되, 그 결과를 현재 페이지 안에 표시한다"는 것입니다. 간단한 북마클릿은 그냥 해당 URL(javascript: ... ) 안의 코드로 모든 일을 수행하지만, 이처럼 페이지 안에 새로운 HTML 요소를 추가하는 등의 좀 더 복잡한 작업을 수행하는 북마클릿은 현재 페이지 안에 동적으로 <script> 태그를 생성해서 외부 JavaScript 코드를 적재하는 방법을 사용합니다. 지금 예에서 setTimeout 호출 이전의 부분이 바로 그것으로, http://gpgstudy.com/news/js/draft?u={현재 페이지 URL}에 있는 JavaScript 코드를 가져옵니다. 그 JavaScript 코드는 임시 보관한 추가 성공 여부를 현재 페이지 안에 적절히 표시하고요.

그런데 웹사이트 또는 개별 웹페이지에 따라서는 현재 페이지 안에 외부 JavaScript 코드를 적재하지 못하는 경우가 있습니다. setTimeout 호출 부분은 그런 경우를 위한 대비책입니다. 앞에서 말한 외부 JavaScript 코드는 gnd_added_라는 변수를 정의하는데, 만일 3초가 지나도 그 변수가 정의되어 있지 않으면(typeof가 "undefined") 그 JavaScript 코드가 제대로 실행되지 않은 것으로 간주하고 사용자를 GpgStudy 게임 개발 소식의 임시 보관함 추가 페이지로 직접 재지정합니다.

적재가 실패하는 이유는 크게 두 가지인데, 하나는 HTTPS 페이지에서 HTTP 자원을 적재하려 드는 것이고, 또 하나는 웹페이지의 Content Security Policy(CSP, 내용 보안 정책)입니다. CSP를 이용하면 웹페이지별로 모든 외부 스크립트를 거부하거나, 특정 기원에서 비롯된 스크립트만 허용하도록(이를테면 구글 애드센스를 위해 google.com만 허용하는 등) 설정하는 것이 가능합니다. HTTPS - HTTP 경계 문제와 CSP 둘 다 번역서에서 다루고 있으니 참고하시고요.

그 외에, SOP(동일 기원 정책)은 무관하다고는 할 수 없지만 너무 광범위한 이유라고 생각합니다. 웹페이지에 외부 JavaScript 라이브러리(이를테면 구글 CDN의 jQuery 등)를 포함시키는 것은 아주 일상적인 일인데요. 지금 문제에서 염두에 둔 것은 그런 일상적인 관행과는 반대로 외부 JS의 적재를 명시적으로 금지하는 설정(CSP)이었습니다. 그리고 http://gpgstudy.com/ 서버 자체가 반응을 안 할 수도 있는데, 비현실적인 일은 아니겠지만 이벤트 취지와는 좀 안 맞는 답이겠고요.

setTimeout과 전역 변수 설정 여부를 이용해서 적재 실패를 판정한 후 사용자를 다른 페이지로 보내는 것은 사실 그냥 제가 궁여지책으로 고안한 것일 뿐이고(아무 반응이 없는 것보다는 나은), 아마 더 나은 방법이 있을 것입니다. CSP 자체를 우회하는 방법도 어쩌면 있겠지만 그것은 '공격'의 영역이므로 GpgStudy 게임 개발 소식을 위한 북마클릿에 사용할 수는 없겠고요.


재미있고 유익한 이벤트였죠?^^ 참여해 주신 모든 분께 축하&감사드립니다.

언제 북마클릿에 대해, 개발자는 물론 사용자에게도 도움이 될만한 내용으로 한 번 글을 써보겠습니다.

top
트랙백 0 : 의견 # + 0

알림 - 브라우저 해킹 vs 보안 독자 증정 이벤트 기간 연장

류광, 2014/11/10 16:31

원래 오늘 해답과 당첨자를 발표해야 하는데요. 참여가 생각보다 저조하고, 또 gpgstudy.com 메일 서버가 일부 웹메일 서비스에서 보낸 편지를 제대로 받지 못한다는 보고가 있어서 기간을 내일(화) 오후 6시까지 연장합니다.

중요: 이제부터는 event@gpgstudy.com 이 아니라 비공개 방명록에 답을 써주세요.

그리고 혹시 event@gpgstudy.com 으로 메일 보내셨는데 아무런 답장도 못 받으셨다면, 수고스럽겠지만 위의 비공개 방명록에 다시 올려 주세요.

진행이 매끄럽지 않은 점 사과 드립니다. 연장된 하루 동안 좀 더 많은 분이 참여했으면 좋겠습니다!

top
트랙백 0 : 의견 # + 0

브라우저 해킹 vs 보안 독자 증정 이벤트

류광, 2014/11/03 23:52
브라우저 해킹 vs 보안 독자 증정 이벤트 소식.

본문 열기

top
트랙백 0 : 의견 # + 0

Browser Hacker's Handbook 번역서 나왔습니다.

류광, 2014/10/28 05:01
Browser Hacker's Handbook 번역서 "브라우저 해킹 vs 보안" 출간 소식

본문 열기

top
TAG 번역서
트랙백 0 : 의견 # + 0

◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [53] : NEXT ▶