2010년 7월 29일 목요일

[인셉션] 음악은 에디뜨 피아프의 음악들을 변형한 것


트위터의 한 멘션에서 영화 [인셉션]의 모든 음악은 에디뜨 피아프의 음악을 기반으로 했다는 글을 읽었다.
원문은 영국 가디언 지의 기사 "Inception soundtrack created entirely from Edith Piaf song".

단지 오프닝 음악이 에디뜨 피아프의 <Non, je ne regrette rien>를 좀 느리게 재생한 것이란 것만 알고 있었는데, 그 정도가 아니었던 것이다. 에디뜨 피아프의 모든 노래를 다 분해해서 재조립하며 만든 음악인 것이다.

영화 자체는 완전히 놀란 감독의 창조물인데, 역설적이게도 음악은 몽땅 모티브가 있는 거란 뜻이다.
이놈의 장난꾸러기들.

아래 동영상은 위의 기사에서도 참고한, 유튜브에 올라온 비디오.


그런데, 이 동영상을 보다보니 문득 몇배 느리게 재생한 것인지 궁금해져서 직접 확인해봤다.
영화의 설정대로 12배 또는 20배 느리게 재생한 것은 결코 아닌 것 같고…

여러가지로 확인해보니, <Non, je ne regrette rien>를 정확히 3.254717배 느리게 재생했을 때 OST의 첫 음악 <Half Remembered Dream>과 박자가 일치했다.
아래는 그 결과.


아무리 생각해봐도 놀란과 짐머… 엄청난 장난꾸러기임에 분명하다.
그런데… 그 장난은 너무나 천재적이다!

2010년 7월 24일 토요일

[인셉션]에서 느낀 다른 영화의 흔적들

[인셉션]의 두번째 감상을 마쳤다.
이제 첫 감상에서 놓쳤던 장면들이 꽤 찾은 것 같기도 하면서, 더욱 미궁에 빠지는 기분이다. 헐~

그런데, 이리저리 다른 영화의 흔적들이 꽤 눈에 띈다. 슬슬 중독되어가는 것 같다.


1. 포스터

[다크 나이트] 포스터 중 가장 인상적이고 무서운 포스터는 바로 조선생 등짝 포스터다.
그런데, 인셉션의 포스터는 이 등짝 포스터와 상당히 닮았다.

서로 다른 감독이 만들었으면, 표절시비라도 터졌을 듯한 포스터…


색의 배치나 전반적 구도부터, 바닥의 물, 하늘의 구름까지…



2. Gravity 그리고, Therapy

놀란 감독은 영문학도답게(런던 대학교 영문학과 출신) 단어의 사용에 신중하다.
[다크 나이트]에서도 need와 deserve라는 단어를 명확히 구분해서 썼다. 엔딩 부근 고든의 대사를 보라.

그런데, 재미있게도 조커가 광기를 설명할 때 사용했던 gravity(중력)이란 표현을 또 사용한다.

Cobb: I hope you do understand the gravity of that request.
코브: 제 요청의 막중함(중력)에 대해 이해해주셔야 됩니다.

굳이 gravity란 단어 대신 다른 단어를 써도 되었을텐데…

또, therapy란 단어도 사용되었다. (정확한 대사는 잘 기억나지 않음. ㅠ.ㅠ)
이 역시 조커가 사용한 단어다.
갱들 모여서 고민하고 있을 때 불쑥 들어와서 group-therapy session(정신병 집단치료) 받냐며 비아냥거렸다.

그렇다. 두 단어 모두 조커가 쓴 표현들이다. 이제 고담시를 넘어 꿈속 세상까지 혼란에 빠뜨리려는 거냣!



3. [배트맨 비긴즈]

와타나베 켄, 마이클 케인 그리고, 킬리언 머피까지 [박쥐선생 시작하다]에서도 활약했던 멤버가 셋이나 출연했다.

이 중 킬리언 머피는 [박쥐선생 시작하다]에서 스캐어크로우 역을 맡으면서 머리에 두건을 뒤집어썼는데, [인셉션]에서도 또 비슷한 걸 뒤집어썼다.

어이, 놀란 선생… 킬리언 머피가 싫으면 얘기하라구. 그렇게 괴롭히지만 말구… (응?)



4. [미행]

크리스토퍼 놀란 감독의 장편 데뷰작은 [미행(Following, 1998)]인데, 이 영화에서 주인공과 함께 도둑질을 하는 자의 이름은 코브(Cobb)이다.
(알렉스 호라는 사람이 연기했는데, 다른 직업이 있었으며, 유일무이한 출연작이 [미행]이었음)

[인셉션]에서 디카프리오가 연기한 코브(Cobb)의 직업 역시 도둑에 가깝다.



5. [유주얼 서스펙트]

이 영화는 생각하기에 따라서는 전체가 하나의 거대한 낚시다.

그런데, [야곱의 사다리], [노웨이 아웃] 같은 수작들과 어깨를 나란히하는 대형 낚시영화 [유주얼 서스펙트]에서 고바야시 변호사 역을 맡았던 명배우 피터 포슬스웨이트가 나온다.
물론, 영화 내에서의 진짜 실명은 알 수 없고, 컵 회사 이름일 뿐이지만. (지금 쓴다고 스포일링이라진 않겠지?)

이 양반도 대형 낚시 영화 전문 배우로 뛰기로 했냐는 생각이 들었다.



6. [여왕폐하의 007]

설산을 배경으로 촬영된 장면들은 다분히 [007] 시리즈를 연상시킨다.
사용된 장비들은 주로 [뷰투어킬]을, 일부 장면은 [나를 사랑한 스파이]의 오프닝 씬을 생각나게 했다.

하지만, 산 위에 지어진 건물은 분명히 [여왕폐하의 007]에 등장하는 스펙터 기지의 변형이었다.
쉴트호른에 있는 피츠 글로리아 말이다.


덧. 이 외에 [다크 시티], [13층], [매트릭스], [라비앙로즈] 등 많은 영화들이 있지만, 너무 잘 알려진 내용은 포스팅 하기 싫음.

건담 스톱모션 황비홍 버전

끌량을 돌아다니다 발견한 건담 스톱모션.
뒤져보니 이 시리즈가 몇 편 있는데, 그 중 최강의 작품은 이것인 것 같다.


덧. <북두의 권>을 연상시키는 장면이 있다. 켄시로 요즘 뭐하고 있을까? 지구가 핵전쟁으로 도탄에 빠진지 11년 지났는데…

007 게임 신작 <블러드 스톤> 오프닝 시퀀스 공개

by BLUEnLIVE | 2010/07/18 10:07

차기 007 영화의 제작이 무기한 지연되는 지금, 차기 007 게임 소식이 들려 다소 아쉬운 마음을 달래준다. 차기작 제목은 <블러드 스톤(00...


007 게임 신작 <블러드 스톤>의 오프닝 시퀀스가 공개되었다.
건배럴 시퀀스가 빠져서 약간 아쉽기는 하지만, 그래도 충분히 멋지게 만들어진 것 같다.


덧. [카지노 로얄]의 오프닝 시퀀스를 약간 차용한 듯한 장면이 있다. 은근 반갑다.

2010년 7월 22일 목요일

인셉션: 25가지 완벽 분석 가이드 (DVD Prime 펌)

1. 본 글은 DVD Prime에 늑대발님께서 올린 글을 원저자의 허락 하게 100% 그대로 퍼온 것임
2. 강력한 스포일러가 있는 글임. 영화 감상을 앞둔 분은 안 읽기를 추천함.



강력 스포일러(누설)이 담긴 글입니다. 영화 감상을 앞둔 분들은 피해주세요


펼치기..



[인셉션] 간단 감상기


오늘 인셉션을 보고 왔다.
시사회 표를 못 구해서 미리 보진 못했지만, 개봉일에라도 볼 수 있어 다행이었다.

한번 보고 제대로 리뷰 할 수 있는 영화가 도저히 아니라, 지금 리뷰를 쓸 엄두는 나지 않고, 생각의 편린들만 정리함.

1. 꿈에 대해 평소에 무의식적으로 생각하거나 느낀 것들이 구체적으로 나옴.
   그러한 고찰에 대해 깜짝깜짝 놀란 내용들이 있었음.

2. 엔딩이나 영화의 구성에 대해 다양한 해석이 가능한 영화인데, 그 중 나의 결론을 도출하기가 너무 힘듦.

3. 2번에도 불구하고, 간단하게 생각해서 잘 만들어진 블록버스터 액션 영화로 보기에도 상당히 재미있음.

4. 음악이 굉장히 멋있고, 화면과 잘 어울림.
   (정작 한스 짐머 아찌가 작곡할 땐 영화 대본도 안 보고 했다고)

5. 네이버 모 블로그에서 영화의 전편에 해당하는 만화를 다운받을 수 있는데, 안 봐도 감상에는 아무 지장 없음.

6. 박지훈 대협이 ([다크나이트]에 이어 이번에도) 번역을 맡으셨는데, bloody를 무려 졸라로 번역하셨음.
   게다가, father-in-law아버지로…

7. 판화가 에셔의 작품 <Ascending>을 연상시키는 입체 미로가 나옴.

Ascending, Escher


8. 마이클 케인과 와타나베 켄 그리고, 킬리언 머피가 나오니 자꾸 [박쥐선생 시작하다]가 생각났음.

9. [다크나이트]와 종종 비교하는데, 비교 불가임. 아예 장르가 다름.
   [다크나이트]는 철학적인 고민꺼리가 많은 영화지만, [인셉션]은 오락 영화임. 즐겁게 보고 즐기면 됨.

10. 죽전 CGV에서 봤는데, 화질이 그야말로 엉망이었음. 스크래치블러링에…
  상영을 좀 많이해서 그렇다고 생각야하나 고민했음. 개봉일에!!

11. 영화 시작시간 20분이 지나도록 미친듯이 광고 때리는 CGV. 이건 정말 왕+캐짜증이었음.

12. 이제 잠시만 쉬시고, [박쥐선생 3편] 찍어주시고, 그 다음 작품으론 제발 [007] 딱 한 편만... (캐굽신)

13. 레오나르도 디카프리오의 연기는 제대로 물이 오른 수준이었음.


2010년 7월 19일 월요일

만화 <이끼> vs 영화 [이끼]: 제거된 설정들


스포일러 주의! 스포일러로만 구성된 포스트임!

강우석 감독의 영화 [이끼]는 잘 알려져있다시피 윤태호 작가의 만화 <이끼>를 영화화한 것이다.
그리고, 역시 잘 알려져있다시피 영화는 만화의 일부 내용을 제거하고, 나머지를 거의 그대로 담았다.

문제는 이런 제거 과정을 통해 원작의 코드가 많이 훼손되었다는 거.
이 영화는 강우석의 한계를 극명하게 드러낸 영화다. 이 영화에서 좋은 평을 들을 수 있는 부분은 원작의 힘이며, 나쁜 평강우석의 잘못이라고 봐도 무방하다.
([블레이드 러너]나 놀란의 [배트맨] 시리즈가 얼마나 원작을 잘 해석했는지를 느낄 수 있었음)

원작에서 변형되거나 제거된 설정을 간추리면 아래와 같다.


스포일러 만땅의 바뀐 설정 펼치기..


역시 <이끼>는 강우석의 그릇에 맞지 않는 영화다.
이걸 제대로 영화화하려면 "봉테일" 봉준호 감독 정도는 되어야 한다. 아깝다…

덧. 만약에 이 영화의 판권을 헐리우드로 수출한다면 크리스토퍼 놀란 정도는 되어야 제대로 영화화할 수 있을 것 같다.

2010년 7월 18일 일요일

차기 007 영화의 감독을 맡아줬으면 싶은 감독들

[로드 투 퍼디션]의 샘 멘데스

MGM의 상태가 상당히 좋지 않아 차기 007 영화의 제작이 계속 지연되고 있다.
덕분에 차기 007 영화에 대한 어떠한 예측도 할 수 없는 상태다.
공식적인 차기 감독으로 샘 멘데스가 선정되긴 했지만, 이후 제작이 지연되었으니…

시간을 조금 앞으로 돌려보자.
마틴 캠벨 감독은 [카지노 로얄]을 감독하면서 다른 감독들이 못하던 것을 했다.
다름 아닌 원작 소설의 코드를 제대로 살리는 것이었다.

그럼으로써 제임스 본드라는 캐릭터에 커다란 입체감이 부여되었다.
(아쉽게도 다음 작품인 [퀀텀 오브 솔러스]에서 대부분 제거되었음)

007 영화의 감독을 맡아 원작의 코드와 캐릭터의 입체성을 살려낼 수 있다고 생각하는 감독들을 정리해봤다.



시리즈 부활의 일등공신

1. 마틴 캠벨

마틴 캠벨은 [골든아이]와 [카지노 로열] 두 편의 007 영화를 감독했다.
이 두 편을 감독하면서 007의 코드를 제대로 살려 시대에 부합하면서도 원작 소설의 코드를 잘 살린, 그래서 죽어가는 시리즈에 새로운 생명력을 부여한 작품을 만들었다.

즉, 원작의 코드를 제대로 이해하는 것을 영상으로 보여준 감독이다.

특히, [카지노 로열]에서 보여준 오프닝 달리기(!) 씬과 기차에서 베스퍼와의 대화(말싸움?) 씬은 그가 얼마나 원작의 코드를 잘 이해하고 있는지를 보여주는 장면들이다.
두 장면 모두 원작 소설엔 등장하지 않는 장면들이지만, 원작을 제대로 이해하고 있다면, 제임스 본드 비긴즈인 [카지노 로열]에서는 반드시 필요한 장면이었다.
(우리나라에선 기차 씬은 지루하게 왜 들어있는지 모르겠다는 평가도 많았음)



2. J.J. 아브람스

007에서도 떡밥을 한번…



[로스트]를 통해 진정한 떡밥의 제왕으로 떠오르신 쌍제이 님.
하지만, 이상하게도 잘 언급되지 않는 그의 능력은 시리즈 부활 능력이다.

일단 [미션 임파서블 3]를 보자.

전작 두 편은 비록 흥행은 성공했으나, 원작 TV 시리즈의 코드를 하나도 살리지 못한, 그야말로 이름만 빌려온 영화였다.

팀플레이를 통해 악당들을 깔끔하게 제거했던 시리즈를 다 갈아엎어, 진정한 주인공인 짐 펠프스가 배신하고, 원맨쇼로 문제를 해결하게 만든 1편이나, 아예 오우삼 감독에게 맡겨 홍콩 총질 영화가 되어버린 2편과는 달리, 3편은 원작의 팀플레이를 제대로 보여준 작품이었다.
이로써 [미션 임파서블]은 시리즈물로서 새로운 생명력을 얻게 되었다.

이후 그는 이 능력을 [스타트렉]에서 다시 한 번 보여준다.
프리퀄이자 시퀄이 되는 작품을 보여줌으로써 시리즈 정통성을 거의 그대로 유지하면서도 재미있는 작품을 만들어, 새로운 시리즈로서의 생명력을 부여했다.



3. 크리스토퍼 놀란

[배3] 끝낸 뒤에 어케 안될까요?



원작의 이해 및 재해석 능력에 있어 극강의 수준을 보여주시는 놀란님.
이미 [배트맨 비긴즈]와 [다크 나이트]에서 더 이상 설명할 수 없는 높은 경지를 보여주셨다.
그 두 편에서 그가 얼마나 원작 만화의 코드를 제대로 이해하고 재해석했는가에 대해선 더 쓸 말이 없다.

모 네티즌님 표현으론 영화계의 허준이시라고…

사실, 007 영화는 제작과정에서 EON 프로덕션에서 감독을 마음대로 좌지우지하려는 경향이 있는데, 이게 종종 영화가 막장으로 빠지는 근본적인 원인이 된다.

하지만, 놀란이라면 그런 태클따위엔 전혀 흔들리지 않고 그만의 작품을 만들 수 있을 것이다.

덧1. 얼마전 BBC와의 인터뷰에서 007 영화를 맡고싶단 말씀을 하셨다. 제발… (굽신굽신)

덧2. 이 분은 영국 출신이라 제작진(특히 EON 프로덕션)들이 원하는 조건 중 하나를 더 만족한다.


덧1. 판타지 계열 007 시절엔 스티블 스필버그제임스 카메론도 기대했었지만, 이미 그분들의 007 세상은 아닌 듯 싶다.

덧2. 제작진의 차기 007 영화 목표 수익은 6억불이다. (현재까지 최고는 [카지노 로열]의 5.9억불)
그런 목표를 달성하려면 그게 걸맞는 감독을 선임해야 한다. 제작진의 어설픈 간섭은 버리고.

007 게임 신작은 <블러드 스톤>

차기 007 영화의 제작이 무기한 지연되는 지금, 차기 007 게임 소식이 들려 다소 아쉬운 마음을 달래준다.
차기작 제목은 <블러드 스톤(007 Blood Stone)>.


- 제작/배급: Bizarre Creations, Activition
- 공개일정: 2010년 말
- 종류: 3인칭 시점 액션, 멀티유저 플레이(최대 16명)
- 지원 플랫폼: PC(Windows), Xbox 360, PS3, Nintendo DS
- 트레일러


- 관련 기사: ACTIONTRIP
- 공식 홈페이지: 007 Blood Stone

[이끼]: 강우석의 한계가 명확히 드러나는 스릴러


이끼는 (익히 알려진 바대로) 강우석 감독의 한계가 명확히 드러나는 스릴러 영화였다.

강우석 하면 역시 [투캅스]다. 코믹과 드라마가 잘 어우러진 표절영화.
(그렇다. 그는 표절영화로 상업성을 인정받은 감독이다)

영화 [이끼]는 여러모로 웹툰 <이끼>표절이란 생각이 드는 영화였다.

1. 원작의 장면들과 대사는 상당수 등장하지만, 분위기는 사뭇 다름
   원작은 지극히 영화적인 만화인데, 이 영화는 지극히 만화적인 영화일 뿐임.


2. 원작에서는 류해국과 박민욱의 팽팽한 긴장감 역시 압권인데, 이 부분이 완전히 제거됨
   오히려 박민욱이 유머를 맡는 어이상실은 뭔지…

3. 영화에서의 (원작에서 가장 중요한 부분 중 하나인) 류목형의 본질은 만화와 사뭇 다르다.
   원작의 장면을 거의 다 사용했음에도 가장 중요한 내용이 빠졌다. 이건 도대체 뭥미?

4. 유해진이 분한 김덕천은 원작과 괴리가 너무 큰 캐릭터.
    이건 뭐 장난하잔 것도 아니고… 바꿀라면 몽땅 바꿀 것이지…

5. 엔딩 장면의 나름 반전은 어이 없음이 그야말로 홀딱 깨는 수준이었음.
   그런 내용을 넣으려면 그 캐릭터 자체를 몽땅 바꿨어야 함

6. 강우석 감독의 이러한 스릴러 영화에 맞지 않는 어설픈 유머 코드는 불편함.
   인터뷰 내용을 보니, 긴장을 줄이기 위한 의도적인 유머라는데, 이 영화에선 긴장이란 걸 애초에 찾을 수가 없음.
   (원작을 안 본 마눌님과 함께 봤는데, 이건 스릴러 영화가 아니란 총평이었음. 어허허)

7. 정재영이 분한 천용덕의 포스는 압권이었음. 원작과 다른 얼굴임에도 싱크로율이 굉장히 높음.
   어설픈 유머를 보여줌에도 포스가 죽지 않음. ㄷㄷㄷ

8. 박해일은 다른 영화에서의 모습과 달리 발음이 샘. 치아교정기라도 낀 발음이었음.

한줄 요약: 만화 <이끼>의 합법적인 표절일 뿐. 열연한 정재영만 고생했다는 생각.

2010년 7월 13일 화요일

크리스토퍼 놀란, 007 감독 희망!


크리스토퍼 놀란 님께서 007 영화를 감독하고 싶으시단다!
Entertainment Weekly, MI6 등의 보도에 따르면 놀란은 BBC와의 인터뷰를 통해 007 영화를 감독하고 싶단 얘길 했단다.

이 얘기를 듣고 쾌재를 불렀다. 놀란과 007 이라니!!!

지금의 007 영화가 어떤 상태인가.
[카지노 로열]에서 리얼리티 세상으로 돌아왔다가 [퀀텀 오브 솔러스]에서 어설픈 판타지 세상으로 가버렸다.
([퀀텀 오브 솔러스]를 종종 리얼 계열로 얘기하는데, 절대 아니다. 싸움질 판타지 계열이다. [람보], [코만도] 처럼)

즉, 지금의 [007]은 리얼리티와 판타지의 경계에서 영화를 좌지우지하는 놀란의 능력을 100% 발휘할 수 있는 상태인 거다.

또한, 놀란이 보여준 능력 중 최강은 "원작을 코드를 제대로 읽어 재해석"하는 능력이다. [배트맨 비긴즈]를 보라!

게다가, 놀란은 EON의 제작진이 그렇게도 원하던 영국 출신이 아닌가!

놀란 감독 님 제발 그 생각 끝까지 밀어붙여주삼. 비록 MGM이 다 죽어가는 상태지만…
놀란 표 [007]이 나오면 일단 극장에선 5번은 달리겠삼!!!


덧. 어젯 밤 유선에서 [미션 임파서블 3]를 하는 걸 보고 [007] 차기작은 쌍제이가 감독해주면 하는 생각을 했다.
그런데, 놀란이라면… 양보 가능하다!

2010년 7월 11일 일요일

자바 스크립트에서 trim()에 대한 단상

자바 스크립트는 trim() 함수를 지원하지 않는다.

그래서 정규식을 활용해서 구현해서 사용하는 것이 일반적이다.

 

주어진 문자열의 앞뒤를 동시에 트림하는 함수를 구현한 가장 일반적인 함수는 아래의 형태이다.

 

function trimboth1(str) {
  return str.replace(/^\s+|\s+$/g,'');
}

그런데, 인터넷을 뒤지다가 Faster Javascript Trim이라는 글을 찾았다.

글의 요지는 간단하다. 정규식을 이용하는 것이 가장 빠른 것이 아니라는 것.

 

코드의 길이가 좀 길어지더라도 더 빠른 함수가 필요하다면 아래와 같은 형태가 좋은 것 같다.

 

function trimboth2(str) {
  var space = '\s';
  var left=str.length, right=-1, i;
  for (i=0; i<str.length; i++) {
    if (space.indexOf(str.charAt(i)) == -1) {
      left = i;
      break;
    }
  }
  for (i=str.length-1; i>=left; i--) {
    if (space.indexOf(str.charAt(i)) == -1) {
      right = i;
      break;
    }
  }
  if (left>right) return '';
else return str.substring(left, right+1);
}

Syntax Highlighter 3.0.83 적용!

by BLUEnLIVE | 2009/12/20 21:02

텍큐닷컴에서는 Syntax Highlighter를 지원한다. 비록 업데이트도 늦고(이건 뭐 파일만 바꿔치면 되는 건데... 쩝...) 한계도 좀 있지만, 고...


이미 이 바닥에선 살아있는 전설이 되어버린 Syntax Highlighter가 3.0으로 업데이트되었다. (이하 SH3이라 부름)


텍큐닷컴은 자체적으로 SH2를 지원하지만, 구버전인 2.0.320만 지원한다.
(지금은 2.1.364, 2.1.382를 거쳐 3.0.83까지 나왔음)

텍큐닷컴판 SH의 가장 큰 장점은 사용법이 무척 단순하다는 점이다.
코드를 입력한 뒤에 코드 앞뒤에 [code 언어] [/code]만 쓰면 끝이다.

하지만, 단순한 만큼 파라미터를 지정할 수 없고, 업데이트는 전무하다는 단점이 있다.
게다가 텍큐닷컴이 폐쇄 또는 합병의 절차를 밟고 있기 때문에 큰 것을 기대할 수도 없다.

몇 가지 상황을 고려해서, 아예 2.x 브렌치를 포기하고 3.x로 갈아타기로 했다.

3.0은 기존 버전에 비해 다음과 같은 개선이 있다.

1. 플래쉬 완전 제거

기존의 1.x, 2.x에서는 copy to clipboard 기능을 구현하기 위해 플래쉬를 사용했다.
하지만, 3.x에서는 플래쉬를 완전히 제거하고 브라우저의 기본적인 복사 기능만으로 이 기능이 동작하도록 구현했다.


2. 화면에서 코드 직접 선택 가능

2.x까지는 코드를 선택해보면 일부분만 선택되었다. (그래서 copy to clipboard 기능이 있었음)
하지만, 3.x에서는 원하는 범위까지 코드의 선택이 가능하다.

게다가 더블클릭하면 코드 전체를 선택해준다.


3. 자동 하이퍼링크 생성

코드 중에 하이퍼링크가 있으면 하이퍼링크를 클릭할 수 있도록 해준다.


4. XRegExp 사용

3.x는 정규식 확장 중 하나인 XRegExp를 사용한다.
(그래서 어쩌라고!)


5. CommonJS 완전 호환

(그래서 어쩌란 거냐고!)


6. CSS 지원 강화

CSS의 지원이 강화되었다. 게다가 SASS 3.0도 지원한다.
(다시 한번 말하는데, 그래서 어쩌란 거냐고!!!)


그런데, 이 SH3를 텍큐닷컴에서 그대로 사용할 수 없다.
적용은 가능하지만, 일부 코드가 정상적으로 출력되지 않는다.

그래서 약간의 수정을 가했다.

1. 치환자 입력을 위해 \#를 #로 변환

기존의 티스토리/텍스트큐브 용 SH에서도 적용했던 건데, 지금 와서 없애긴 뭣해서 다시 적용했다.
\#라고 입력하면 #로 출력해준다.
즉, [#\#_HELLO_#\#]이라고 쓰면 [##_HELLO##_]와 같은 치환자로 변신하는 것이다.


2. 코드 맨 앞과 맨 뒤의 <br /> 또는 엔터 제거

왜 생기는지는 모르겠지만, 가끔 이런 형태가 생기는 경우가 있더라.
그래서, 코드 맨 앞뒤에 엔터나 <br />이 있는 경우 제거하도록 했다.


설치하는 방법은 아래와 같다.

1. 파일 업로드

아래 파일을 다운받아 압축을 푼 뒤에 스킨 편집 → 파일 업로드를 통해 업로드한다.



2. 스킨 수정

아래의 코드를 스킨에 삽입한다.

여기서 주의할 점이 몇 가지 있다.


a. <body>에 코드를 삽입해야 함

<head>가 아니라 <body>의 맨 앞에 넣어야 한다.
텍스트큐브닷컴은 <head> 내에 자바 스크립트 코드를 집어넣으면 씹어먹는다.


b. css는 소문자로 업로드 됨

이것 역시 텍스트큐브닷컴의 특성인데, 이미지 파일은 파일명이 그대로 유지되는 것에 비해, css 파일은 소문자로 바뀌어 올라간다.


c. 블로그 이미지 주소를 찾아서 적어야 함

텍스트큐브의 문제점 중 하나인데, 주소에 "./images/"를 적으면 제대로 인식하지 않는다.
그래서, 블로그 이미지 주소를 찾아서 직접 적어줘야 한다.

※ 류청파(koc/SALM) 님이 피를 토하며 댓글을 달고, 관련 글을 쓰셨다. ./images를 적으면 된다고.
하지만, 이론은 이론일 뿐 실제로 적용해보지 않은 이론은 별 쓸모 없더라.
여전히 텍스트큐브닷컴은 종종 상대주소를 인식하지 못한다.

<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shCore.gif"></script>

<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushMsx.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushAvs.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushNasm8086.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushAS3.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushBash.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushColdFusion.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCpp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCSharp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCss.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushDelphi.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushDiff.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushErlang.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushGroovy.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJava.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJavaFX.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJScript.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPerl.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPhp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPlain.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPowerShell.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPython.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushRuby.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushSass.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushScala.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushSql.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushVb.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushXml.gif"></script>

<link type="text/css" rel="stylesheet" href="http://블로그 이미지 주소/shthemedefault.css"/>
<link type="text/css" rel="stylesheet" href="http://블로그 이미지 주소/shcoredefault.css"/>

<script type="text/javascript">
//<![CDATA[
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script>


덧1. SH3는 계속 업데이트 되고, 새로운 테마와 언어 파일을 받을 수 있다.
추가 다운로드는 SH3 홈페이지를 확인하기 바람.


덧2. 내 블로그에서는 주석이 잘못 표시되는 문제가 있었다.
확인해보니, 블로그 스킨(css)에 .commentsdisplay가 정의되어 있었다.
아래의 내용을 style.css에 추가해서 해결했다.

.syntaxhighlighter .comments {
    display:inline;
}

Notepad2 4.1.24 정식버전 관련 패치 모음

by BLUEnLIVE | 2010/06/26 16:13

notepad2 4.1.24 패치버전 공개 (한글판) by BLUEnLIVE | 2010/03/08 21:10 notepad2 4.1.24 패치버전 공개 (영문판) by BLUEnLIVE | 2010/0...



notepad2 4.1.24 한글 패치에 적용한 패치들을 정리했다.


0. 들어가기 전에

다음과 같은 내용은 모두 준비가 되어있다고 가정하고 설명함.

a. Visual C++ v6.0 및 Service Pack 6 설치
b. Platform SDK 설치 (Windows® Server 2003 R2 Platform SDK ISO Download)
c. Scintilla 2.03 다운로드. 현재 Scintilla는 2.12까지 공개되었으나, 2.03을 사용해야 함


1. Kai Liu님의 패치 적용

np2-4.0.22-allpatches.7z 패치를 적용한다.
이 패치는 총 13개의 패치로 이루어져있으며, 코드 폴딩이나 각종 문법을 포함한 다양한 패치로 구성되어있다.

문제는 이 패치는 Notepad2 4.0.22, 그것도 beta5에 적용 가능한 패치라는 거.
대부분은 그대로 적용가능하고, 일부는 눈치껏(?) 적용할 수 있으나, 2개는 완전히 바뀐 구조에 따라 일일이 적용해야 한다.
특히 문법 패치의 경우, 바뀐 포맷을 유심히 본 후, 문자열 중에 기존 문법에 있는 부분은 그대로 사용해야 되고, 없는 부분은 일일이 notepad2.rc에 문자열을 추가해야 한다.

사용자 삽입 이미지

더 이상의 자세한 설명은 생략한다.


패치 대상 세부 내역 보기..



2. 한글 IME 패치

간단하게 단 하나로 끝난다. (아싸!)

a. notepad2 컴파일 삽질기 8 : 한글 IME 패치


3. 기능 추가

okto 님께서 필요하다고 닥달한 기능들이며, 귀차니 님이 큰 축을 담당하시고, 나도 중간중간 밥숟갈을 들었음.

a. notepad2 컴파일 삽질기 부록#5.2 : context-menu 기능 수정

b. notepad2 컴파일 삽질기 부록#6.1 : 메모장 대신 사용 (수정)

c. notepad2 컴파일 삽질기 부록#4 : AutoHotkey 스킴 추가
   이것 역시 앞의 1번에 따라 열심히 패치한다. 역시 설명은 생략한다. ㅋㅋ

d. notepad2 컴파일 삽질기 부록#11 : 포트란 스킴 추가

e. notepad2 컴파일 삽질기 부록#7 : Shift+마우스 휠에 Page Up/Down 기능 부여

f. notepad2 컴파일 삽질기 부록#9 : 다음 바꾸기(Replace Next) 메뉴에 추가

g. notepad2 컴파일 삽질기 부록#10 : 시간/날짜 삽입 순서 변경

h. notepad2 컴파일 삽질기 부록#12 : NBSP 관련 수정  (2010. 7. 11 추가)

그런데... 패치를 정리한 것 맞나? 뭔가 좀...


notepad2 4.1.24 패치버전 재공개 (한글판)

by BLUEnLIVE | 2010/03/08 21:10

notepad2 4.1.24 패치버전 공개 (영문판) by BLUEnLIVE | 2010/03/07 10:48 지난 3월 2일 드디어 notepad2가 4.1.24로 업데이트되었다....


notepad2 4.1.24의 한글 패치를 공개한지 넉달이 되어간다.
그동안 notepad2 자체는 패치되지 않았지만, Scintilla도 2.12로 업데이트 되고, 기타 수정사항도 있어 손을 좀 댔다.

그런데… Scintilla 2.12를 적용하고 나니 찾기 기능이 잘 동작하지 않았다.
급하게 다시 Scintilla 홈페이지를 뒤져봤더니…

DBCS 환경에서는 무조건 case-sensitive 검색만 지원


DBCS 환경에서는 case-sensitive 검색만 지원하도록 수정되었단다. 헐~

그래서 다시 2.03으로 회귀…
하지만, 문법 분석기(lexer)는 여러모로 업데이트 된 것이 있어 그건 2.12의 것을 사용하기로 했다.


1. Scintilla 2.12중 lexer 적용

얼마 전(정확히는 지난 6월 1일) Scintilla 라이브러리가 2.12로 업데이트 되었다.
속도가 일부 향상되고, 약간의 버그가 수정되었다.

하지만, 전술했듯이 검색 기능이 정상적으로 동작하지 않아 다시 2.03으로 회귀했다.
하지만, lexer는 여러모로 업데이트 되었기 때문에 lexer(Lex*.cxx)들과 SciLexer.h만 2.12의 것을 사용했다.


2. 포트란 스킴 추가

notepad2 컴파일 삽질기 부록#11 : 포트란 스킴 추가에서 설명한 포트란 스킴을 추가했다.


3. 파일명이 notepad.exe인 경우 "메모장 대신 사용" 기능 미동작

(구운고구마 님께서 지적해주신 문제임)
동작 원리상, 파일명을 notepad.exe로 바꾼 경우 메모장 대신 사용을 적용할 수 없다.
파일명이 notepad.exe인 경우 메모장 대신 사용 기능을 선택하면 경고벨소리를 들려주도록 수정했다.
※ 관련 포스트: notepad2 컴파일 삽질기 부록#6.1 : 메모장 대신 사용(수정)


4. NBSP를 ASCII에서 붙이면 공백으로 자동 변환

NBSP(Non-break space)를 ASCII 모드에서 붙일 때 공백으로 변환하도로 수정했다.
※ 관련 포스트: notepad2 컴파일 삽질기 부록#12 : NBSP 관련 수정  (2010. 7. 11 추가)


이렇게 수정된 notepad2는 아래 링크에서 다운받을 수 있으며…


동작화면은 아래와 같다.


notepad2 컴파일 삽질기 부록#12 : NBSP 관련 수정

SMI 포맷의 자막을 만들거나, HTML을 직접 작성해본 경험이 있는 사람은 &nbsp;라는 표현을 자주 봤을 것이다.
그런데, NBSP가 뭔지 정확하게 아는 사람은 그리 많지 않은 것 같다.

NBSP는 Non-break Space의 약자로 공백의 일종이지만, 사실 일반적인 공백(0x20)과는 다르다.
줄바꿈을 하지 않는 공백을 의미하며, 유니코드에서는 0xa0이라는 값에 할당되어 있고, ASCII에는 이 개념이 없다.

유니코드를 ASCII 코드로 변환할 때 ASCII 코드에 없는 문자를 변환하는 방식은 정의되어있지 않다.
따라서 표준에 따르면 NBSP를 ASCII로 변환하면 공백으로 만들던, 물음표로 만들던 문제가 되지 않는다.

하지만, 실세계에서는 NBSP는 알아서 공백(0x20)으로 변환해주는 것이 예의다.

notepad2는 WideCharToMultiByte() 함수를 이용해서 유니코드를 ASCII 등으로 변환한다.
그런데, 이 함수에선 NBSP의 변환을 별도로 처리하지 않는다.

따라서, NBSP를 ASCII 모드에서 붙여넣으면 아래와 같은 결과를 보여준다.

구글 크롬에서 Syntax Highlighter 3.0으로 처리한 소스를 복사-붙이기 한 화면


웹 브라우저 중에서 IE나 FireFox에서 복사(copy)를 하면 NBSP를 공백으로 변환한 뒤 클립보드로 보내지만, 구글 크롬은 NBSP를 그대로 내보낸다.
Syntax Highlighter에서 코드를 복사한 뒤에 메모장2에 붙여넣으면 이 현상을 경험할 수 있다.

전술했듯이, 이 현상은 결코 버그가 아니며, 단지 현상일 뿐이다.
하지만, 사용자 입장에서 불편하긴 마찬가지다.

그래서 메모장2를 패치하기로 했다.


1. ScintillaWin.cxx 수정


이 현상을 수정하려면 일단 붙여넣기 부분을 수정해야 된다.
ScintillaWin.cxx 파일에서 void ScintillaWin::Paste() 함수를 찾은 뒤 아래 부분의 위치를 확인한다.

  UINT cpDest = CodePageFromCharSet(
      vs.styles[STYLE_DEFAULT].characterSet, pdoc->dbcsCodePage);

  len = ::WideCharToMultiByte(cpDest, 0, uptr, -1,
      NULL, 0, NULL, NULL) - 1; // subtract 0 terminator

이 부분을 아래와 같이 수정한다. 몇 줄의 코드를 삽입하는 것이며, 기존 코드의 수정은 없다.

  UINT cpDest = CodePageFromCharSet(
      vs.styles[STYLE_DEFAULT].characterSet, pdoc->dbcsCodePage);

  // 여기부터 삽입
  int wlen = wcslen(uptr);
  for (int i=0; i<wlen; i++)
  {
      if (uptr[i] == 0xa0) uptr[i] = 0x20;
  }
  // 여기까지 삽입

  len = ::WideCharToMultiByte(cpDest, 0, uptr, -1,
      NULL, 0, NULL, NULL) - 1; // subtract 0 terminator

이것으로 붙여넣기에서 문제는 해결되었다.


2. Edit.c

사실, 이 현상을 경험할 수 있는 것은 붙이기 명령 외에 하나가 더 있다.

유니코드에서 ASCII로 코드 페이지를 바꾸면 이 현상이 발생할 수 있다.
그래서, 코드 페이지를 바꿀 때도 이 문제가 발생하지 않도록 수정한다.

BOOL EditConvertText(...) 함수를 찾아 아래 내용의 위치를 확인한다.

  cbwText  = MultiByteToWideChar(cpSource,0,pchText,length,pwchText,length*3+2);
  cbText   = WideCharToMultiByte(cpDest,0,pwchText,cbwText,pchText,length*5+2,NULL,NULL);


이 내용을 아래처럼 수정한다. 역시 몇 줄의 코드를 삽입하는 것이며, 기존 코드의 수정은 없다.

  cbwText  = MultiByteToWideChar(cpSource,0,pchText,length,pwchText,length*3+2);
  // 여기부터 삽입
  {
    int i;
    for (i=0; i<length; i++)
        if (pwchText[i] == 0xa0) pwchText[i] = 0x20;
  }
  // 여기까지 삽입
  cbText   = WideCharToMultiByte(cpDest,0,pwchText,cbwText,pchText,length*5+2,NULL,NULL);

이렇게 수정한 뒤 구글 크롬 메모장2로 복사-붙이기를 실행하면 아래와 같이 동작하는 모습을 볼 수 있다.

구글 크롬 따위는 겁나지 않는다능!


2010년 7월 4일 일요일

[더록]의 존 메이슨에 대한 단상

며칠 전 유선방송에서 [더록]을 해줬다.
워낙에 잘 만든 영화라 14년이 지난 지금 봐도 전혀 촌스럽지 않을 뿐더러 오히려 생각하게 만드는 면이 많은 좋은 영화다.

그런데, 존 메이슨에 대해 조금 생각해보니 뭔가 특이한 점이 눈에 띄었다.

John Patrick Mason


잘 알려져있다시피, 션 코너리 경이 연기한 존 메이슨은 007을 지극히 염두에 둔 캐릭터다.

007 영화에서는 그는 MI6 소속이지만, [더록]에선 전직 SAS 출신으로 나온다.
이건 어쩔 수 없는 선택인데, [더록]이란 영화 자체가 행정관료들의 뻘짓으로 인해 계급장을 단 현역/퇴역 군인들이 서로 싸우는 영화이다보니, 그냥 정보원에 대외적으로만 중령 계급장을 달고 있는 MI6 소속의 요원이 끼어들면 뭔가 2% 부족해지는 것이다.

내가 주목한 건 그의 이름이다.

이 영화에서 그의 캐릭터는 존 패트릭 메이슨(John Patrick Mason)이다.
왜 (두 단어인) 존 메이슨이 아니라 가운데 한 단어가 더 들어간 이름이었을까?
더군다나 그 "패트릭"이란 가운데 이름은 거의 불리지도 않는다.

그의 세 단어 이름은 어쩐지 존 윌크스 부스[footnote]링컨 대통령의 '공식적인' 암살범[/footnote]나  리 하비 오스왈드[footnote]캐네디 대통령의 '공식적인' 암살범[/footnote]를 연상시킨다.
어쩌면 그들도 이러한 최고 수준의 스파이에 의해 암살당했을지 모른다는 느낌을 주려고 지은 이름이 아닐까?

2010년 7월 1일 목요일

[Let Me In] 리메이크 트레일러 공개!

by BLUEnLIVE | 2008/11/18 09:20

뜬금없이 okto님께 연락을 받았습니다. 영화나 같이 보자고... 그래서 별 생각도, 정보도 없이 [렛미인]을 보게 되었습니다. 그런데... 이...


엄청났던 영화 [Let The Right One In(렛미인)]의 걱정되는 헐리우드 리메이크 [Let Me In]의 트레일러가 공개되었다.
원작과 색깔이 다소 다른 것 같은데, 역시 원작의 서늘함은 충분히 구현되지 못할 것 같다.


덧. 트레일러 마지막에 나오는 모르스 부호는 Help Me란 뜻이다.
모르스 부호를 12살 짜리가 안다는 건 좀 웃기다. (군대에서 이거 배운 1人)

단단단단 단 단쓰단단 단쓰쓰단 쓰쓰 단 (ㅜㅏㄱㅈㅁㅏ) 응?