* 성경 얘기, 프로그래밍 얘기, 철도 얘기로 가득하던 내 블로그가 어째 여행 블로그처럼 바뀌어 간다. 그렇다고 무슨 외국처럼 거창한 델 가는 것도 아닌데..;;

(1) 그린벨트 안도 아니고, (2) 청계천처럼 하천 근처가 아니고, 경주나 서울 올림픽 공원 일대처럼 (3) 유물 유적이 있는 것도 아닌 대도시 도심 한복판에 갑자기 녹지 공원이 있으면, 본인은 어떻게 해서 여기는 개발되지 않고 공원이 들어설 수 있었는지 궁금증을 느낀다.
아무 이유 없이 그렇게 되지는 않았을 것이기 때문이다. 주변의 건물들보다 더 중요한 무언가가 있다가 빠져나갔는데, 그 부지가 또 개발되지 않고 공원으로 보존된 경우가 대부분이다.

대전에는 서대전네거리 역 교차로의 한 귀퉁이에 서대전 시민 공원이 있다. 거기는 놀랍게도 부지의 절반 이상이 사유지라고 한다. 물론 1970년대 더 옛날에는 아예 군부대가 있었는데 이전하면서 사유지가 된 것임. 지주 되시는 분이 그래도 건물 한두 채쯤은 너끈히 지어서 임대료만으로 먹고 살 재산권을 많이 희생한 덕분에 공원이 유지되어 온 것일 텐데.. (게다가 위치도 최강 역세권이다!) 2010년대 중반이 돼서야 국가에서 공원 부지를 정식으로 매입하려는 중이라고 들었다.

거기 말고 서울 하면 가장 먼저 떠오르는 공원은 여의도 공원이 아닐까 싶다. 얘는 처음엔 황무지였다가 일제 강점기 때 여의도 공항 활주로로 쓰였고, 나중에 김포와 서울 공항이 생긴 뒤엔 여의도 광장을 거쳐 공원으로 탈바꿈했음을 모르는 분이 별로 없을 것이다.
도심은 아니지만 월드컵 경기장 인근의 하늘 공원은 원래 난지도였다가 지금처럼 환골탈태한 것이다.

서울 보라매 공원은 옛날에 공군 사관학교가 있던 곳이었다. 1985년이니 지금으로부터 30여 년 전에 이전한 셈이며 그나마 서울 지하철 7호선의 역명 덕분에 '보라매'라는 이름이 그럭저럭 대중적으로 알려졌다.
같은 7호선이 지나는 광진구의 서울 어린이 대공원은 원래 처음엔 골프장이 있었는데 서울시에서 매입하여 박통 시절에 유원지를 만든 것이다.
인서울 영역에 골프장이 있었다는 게 실감이 안 간다. 더구나 골프가 지금보다 훨씬 더 사치스러운 스포츠였을 시절에 말이다.

한강 인근의 선유도 공원은 원래 수돗물 정수장이 있던 곳이 공원으로 바뀐 것이다. 수풀과 시멘트 구조물이 적절히 섞여 있다 보니 본인은 이 공원이 현실에서 툼 레이더 맵 실사판과 가장 닮은 장소라는 생각을 오래 전부터 해 왔다. 얘 역시 서울 지하철 9호선에 동일 이름의 지하철역이 생긴 것 덕을 봤다.

자, 그리고 이와 비슷한 맥락으로 2010년대에는 전철역 덕분에 이름이 알려진 공원이 하나 더 있다. 바로 서울숲(분당선)이다. 원래 서울숲에서 가장 가까운 역은 2호선 '뚝섬'이었으나(7호선 '뚝섬유원지'가 아님) 더 가까운 곳에 역이 추가로 생겼다.
먼 옛날엔 서울숲 부지에 골프장과 경마장이 있었다고 한다. '동대문 운동장'만큼이나 아련한 추억이 아닐 수 없다. 골프장은 모르겠다만 경마장은 역시 30년 전쯤에 이미 과천으로 이전했다.

중랑천과 한강이 합류하고 강변북로와 동부 간선 도로가 만나며 성수대교 북단이 근처에 있는 이 금싸라기 땅에 처음에는 물론 아파트를 지으려는 계획도 나왔고 심지어 야구 돔구장을 지으려는 계획도 논의되었다고 한다. 그러나 중간에 IMF도 거치고 이런 저런 우여곡절 끝에 여기는 공원으로 보존될 수 있었다.

얼마 전에 응봉산에 올라서 서울숲을 내려다보고 나니 여기 가고 싶은 생각이 더 들었다. 그래서 등산까지 갈 수는 없을 정도로 바쁠 때는 산책으로 운동을 대신하려고 서울숲을 한번 찾아가 봤다.

사용자 삽입 이미지사용자 삽입 이미지
사용자 삽입 이미지사용자 삽입 이미지

사용자 삽입 이미지사용자 삽입 이미지

서울숲 안은 나무들이 우거진 곳, 넓은 공터, 연못이 모두 갖춰져 있고 경치가 괜찮았다.
참고로 서울숲 일대의 부지는 중앙에 있는 성수대교 북단 교차로의 좌우 상하 2*2 격자로 나뉘는 형태이다.
(A B)
(C D)

서울숲의 입구가 있으며, 가장 넓고 지하철역과 가장 가깝기도 하기 때문에 실질적인 서울숲 공원 역할을 하는 구역은 B이다. 그리고 대각선 건너편에 있는 C는 생태 공원이다. 꽃사슴을 구경할 수 있다.
D에는 곤충 식물원과 수도 박물관이 있지만, 한편으로 대부분의 부지가 상하수도 관련 시설이어서 보안 봉인이 돼 있기도 하다. 차도를 건너면 성수대교 붕괴 사고 희생자 위령탑으로도 갈 수 있다고 하는데 난 이쪽은 제대로 못 가 봤다.
끝으로 A는 서울숲이 아니며 삼표 산업이라는 기업의 공장이다. 당인리 발전소와 더불어 강변북로를 달리면서 볼 수 있는 공장 시설 두 곳 중 하나이다. 아마 이 공장은 언젠가 외곽으로 이전하지 않을까 싶다.

참고로 B~D는 자동차 도로 밑으로 길이 이어져 서로 통한다. 그렇기 때문에 건너가기 위해서 차도를 횡단한다거나 하지는 않아도 된다.

사용자 삽입 이미지사용자 삽입 이미지

생태 공원(C 구역) 쪽으로 가 봤다. 사슴을 방목하는 영역은 다 울타리와 철망이 둘러져 있어서 사람이 드나들 수 없게 돼 있었다. 산책 가능한 영역은 얼마 되지 않는다.

사용자 삽입 이미지

나의 원래 계획은 D 구역도 한 바퀴 돌고 다시 B 쪽으로 나가는 것이었다. 그런데 이게 웬걸? 생태 공원에는 강변북로를 횡단하여 한강 공원으로 가는 다리가 놓여 있었다. 둘이 서로 이렇게 연결된 것이다. 그것도 자전거도 다닐 수 있게 계단이 아니라 경사로 형태로 말이다.
이에 본인은 계획을 변경하여 그리로 나갔다. 매주 1회 이상 이 다리 아래를 자동차로 지나 왔음에도 불구하고 본인은 이 다리의 존재를 모르고 있었다.

사용자 삽입 이미지

여기는 한강이다. 저 멀리 동호대교와 옥수 역이 보인다. 본인은 옥수가 아니라 중랑천 + 응봉산 방면으로 갔다.

사용자 삽입 이미지

응봉산과 그 아래를 철길을 달리는 ITX-청춘 열차이다. 그 뒤 귀가하는 길은 응봉산을 오른 뒤에 돌아가는 길과 같다. 저기서 서울숲으로 바로 가는 길이 이렇다는 걸 처음 알았다. 서울에서 의외로 가까운 곳에 이런 숲 컨셉의 공원과 강변이 있으니 이 정도면 답사할 가치가 있고 블로그에 이렇게 사진까지 올릴 가치가 있다.

여담을 보태자면, 강남에는 양재 시민의 숲이라고 숲을 표방하는 공원이 있다. 이 역시 2011년에 개통한 신분당선의 역명에도 들어갔으니 2012년에 개통한 분당선 선릉 이북 구간과 시기적으로 비슷한 구석이 있다. 본인 역시 예전에 거길 방문해서 각종 위령비 사진을 찍었고 근처의 윤 봉길 의사 기념관도 들렀었다.
다만 이 공원의 경우 그냥 아시안 게임과 올림픽 개최를 기념하여 조성되었으며, 더 과거에 부지에 무슨 사연이 있었다거나 하지는 않아 보인다.

끝으로, 분당선 서울숲 역은 광역전철 분당선이 압구정로데오 이후로 한강 이북으로 진입한 뒤 만나는 첫 역이다. 강은 서울 지하철 5호선처럼 하저터널로 건너고 말이다. 서울숲 바로 다음은 종점인 왕십리이다. 뚝섬 역과는 500미터 남짓밖에 떨어져 있지 않다.
분당선 서울숲-왕십리와 야탑-모란 사이에는 절연 구간이 있다. 직-교류 절연이 아니라 같은 교류-교류 절연이다. 그래서 남영-서울역만치 유명하고 노골적이지는 않지만 일부 전동차의 일부 칸에서는 여기를 지날 때 객실 형광등이 아주 잠깐 꺼졌다가 다시 켜지는 걸 볼 수 있다. 서울숲 하니까 역시 철도와 관련하여 이런 게 떠올랐다.

Posted by 사무엘

2016/06/23 19:29 2016/06/23 19:29
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1241

등산 답사기: 불곡산 (성남)

경기도 성남과 광주는 산들로 가로막혀 있어서 전통적으로 생활권이 서로 단절돼 있다. 성남 분당에서 어디서든 동쪽으로 끝까지 진행해 보면 결국 인적이 뜸해지고 산이 나오는데, 그 산을 넘으면 행정구역이 바뀐다. 본인은 바로 거기 일대를 탐험하고 싶어진 관계로, 하루 날 잡아서 분당의 동남쪽에 있는 불곡산을 찾아갔다.

사용자 삽입 이미지

불곡산 등산 진입로는 분당동 주민센터, 정자동 이마트, 분당 서울대 병원 근처 등 여러 곳이 있다. 본인은 그 중 이마트를 선택해서 정상을 향해 북쪽으로 산을 올랐다. 위의 사진은 등산 진입로 근처의 풍경이다. 지난번에 검단산을 오를 때처럼 날씨는 흐린 편이었다.

사용자 삽입 이미지사용자 삽입 이미지

불곡산은 전반적으로 등산로가 넓고 잘 닦여 있었다. 가끔 벤치와 운동 기구가 놓인 공터도 있었다.

사용자 삽입 이미지

이렇게 줄을 잡고 암반을 타고 오르는 험한(?) 구간이 딱~ 한 군데 있었다. 하지만 다른 곳으로 우회도 가능했다.

사용자 삽입 이미지

그렇게 한번 암반을 오르자 산등성이에 진입하고 이정표가 나타났다. 정상은 여기서 그리 멀지 않은 곳에 있었다.

사용자 삽입 이미지사용자 삽입 이미지

정상에는 역시 운동 기구와 함께 책꽂이가 비치된 정자가 있었다. 단, 이 산은 내가 지나간 곳만 그런지는 모르겠지만 전망대 같은 건 전혀 없어서 역시 산 아래 경치는 감상할 수 없었다.
전망대가 없고 정상 표지석도 꽤 찾기 힘든 곳에 짱박혀 있어서 난 처음엔 여기가 정상이 아닌 줄 알았다.
어쨌든 산에서 제일 높은 곳에 땅밟기를 성공했으니 1차 목표는 달성했다.

사용자 삽입 이미지

정상에서는 곧장 광주 방면으로 하산할 수도 있고, 산등성이를 따라 분당동이나 태재고개 등 북쪽으로 산행을 계속할 수도 있었다.
북쪽에 정상보다는 낮지만 '형제봉'이라는 다른 봉우리가 있다고 해서 본인은 그쪽으로 향했다. 등산로는 역시나 전반적으로 폭도 크고 돌 밟을 일이 없을 정도로 아주 잘 닦여 있었다.

사용자 삽입 이미지사용자 삽입 이미지

형제봉은 불곡산 정상에서 1km 정도 떨어져 있었다. 여기도 간단한 정자와 운동 시설이 있었지만 역시나 전망대 같은 건 없었다.

사용자 삽입 이미지

형제봉까지 들른 뒤, 본인은 분당동이 아니라 반대편 광주 방면으로 하산하기 위해서 태재고개 쪽으로 계속 산을 탔다. 성남을 넘어 광주로 진입할 때쯤 되자 언제부턴가 등산로가 좁아지고 산의 분위기가 확 달라졌다.
태재고개를 몇백 m 앞두고 수풀 속에서 위와 같은 이정표가 나타났다. 여기서 지체없이 광주 뒷골 방면을 선택했다. 태재고개에는 무엇이 있는지 궁금했지만 광주의 산기슭 마을이 어떻게 생겼는지도 궁금해서 말이다.

사용자 삽입 이미지

오옷, 드디어 이런 건물들이 눈에 들어왔다. 아기자기한 빌라들이 늘어서 있는 광주시 오포읍 신현리 마을 어딘가에 착륙했다. 가장 가까운 길 모퉁이에는 '상태길68번길'이라는 표지판이 있었다.
큰길을 향해 몇백 m 정도 걸어가니 마을 입구가 있고, 근처에 버스 정류장도 보였다. 버스를 타니 말로만 듣던 지방도 57호선에 차들이 바글바글 몰려 있었다.

이곳을 떠날 때는 시내버스 17번을 탔다. 덕분에 지금까지 말로만 듣던 성 요한 성당, 율동 공원, 분당동 주민센터를 비롯해 성남대로와 분당선 일대만 돌아다닐 때는 접할 수 없던 분당 시가지 내륙 쪽의 모습을 차창 밖으로나마 잘 구경할 수 있었다. 버스가 워낙 꼬불꼬불 돌아서 다니니 투어용으로는 좋았다. =_=;;

사실, 북쪽의 분당동 주민센터 쪽에서 입산해서 형제봉부터 들른 뒤 불곡산 정상까지 남쪽으로 내려가는 경로도 생각할 수 있었다. 동선의 관점에서는 그게 더 낫다. 하지만, 불곡산 정상에서 광주 방면으로 곧바로 하산하는 경우 귀가하는 연계 교통편이 문제가 됐다.
상태마을보다 더 외진 농촌 마을에 도달하게 되며, 이마저도 탐험이 목적이라면 오히려 더 나은 선택이다. 허나 여기는 대중교통이 아예 없는지라 버스를 타려면 어차피 상태마을까지 북쪽으로 몇백m~수 km를 걸어가야 한다.

그래서 최종적으로는 하산하자마자 곧장 버스를 탈 수 있는 지점에 도달하게 북남이 아니라 남북으로 코스를 짰다. 기왕 남쪽에서 북쪽으로 가려면 산길로 이동하는 게 낫다고 판단해서이다.
단순히 헬스장의 러닝머신 위를 뛰거나 동네 주변을 조깅하는 것에 비해 등산은 여행과 탐험이라는 장점이 있다. 하지만 집에서 상대적으로 멀리 외진 곳으로 나간다는 특성상, 중간에 취소를 할 수 없다는 단점이 있다. 가기 전에 시간과 체력 분배, 교통편 같은 계획을 잘 짜야 된다. 이것도 많이 해 보면 계획 짜는 것 자체에 재미가 붙는다.

Posted by 사무엘

2016/06/21 08:31 2016/06/21 08:31
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1240

등산 답사기: 검단산 (하남)

이번에는 서울 동부의 하남에 있는 검단산을 올랐다. 성남에 남한산성과 인접한 동명이산 '검단산'도 있지만, 하남 검단산이 등산 대상으로서 훨씬 더 유명하다.
덕분에 청량산 이후로 거의 한 달 만에 하남시를 다시 방문했다. 이 산 입구는 애니메이션 고등학교와 가깝고 하남 내부에서도 여러 시내버스들의 종점이기도 하다. 서울 지하철 5호선이 여기 부근까지 연장 공사 중이었다.

애니메이션 고등학교라 하면 본인이 기억하고 있는 건 거의 10년 가까이 전에 학생들이 <블랙박스>라는 현대 문명 풍자 애니메이션을 만들어서 캐나다 오타와에서 열린 무슨 애니메이션 공모전에서 입상했다는 것이다. 안산에 있는 디지털미디어 고등학교와는 커리큘럼이 어떤 차이가 있는지 모르겠는데, 아무튼 등산을 가느라 말로만 듣던 유명한 학교의 근처를 덤으로 지나게 됐다.

사용자 삽입 이미지

애니메이션 고등학교 근처에서 출발하는 등산로는 유 길준 묘지를 경유하는 경로와, 현충탑을 거치는 경로로 두 갈래가 있었다. 본인은 전자를 선택했다. 전자가 약간 더 길고 완만하고, 진입로도 더 큼직하게 잘 만들어져 있었다. 위의 사진과 같은 큼직한 길이 유 길준 묘지가 나올 때까지 이어졌다.
단, 산속으로 깊이 들어갈수록 경사가 급해지고 바닥은 점점 돌밭으로 변해서 오르기가 힘들어졌다.

사용자 삽입 이미지

유 길준 묘를 지난 뒤부터 등산로는 더 험하고 좁아졌다.
방금 전에 본 이정표에 따르면 여기가 해발 285m 정도의 고도였다. 이정표는 400미터대에서 한 번 더 나왔다.

사용자 삽입 이미지

검단산은 지금까지 오르던 산보다는 다소 높은 산이었다(해발 657m). 걷고 또 걸으면서 산을 올랐다. 드디어 뭔가 전망대처럼 생긴 장소가 나왔다.
이 산은 날씨가 좋을 때 오르면 서울의 아차산처럼 꼭대기에서 한강을 내려다볼 수 있으며 특히 팔당댐을 볼 수 있다. 경치 하나만 기대하고 검단산을 선택했는데 이 날은 하필 날씨가 도와주지 않았다. 아래는 그저 뿌옇기만 할 뿐, 중앙 고속도로도, 한강도 "전혀 보이지 않았다." ㅠㅠ 순수하게 등산 그 자체와, 하산 장소에만 의의를 둬야 했다.

참고로 정상은 사진의 전방에 뿌옇게 보이는 저 봉우리의 꼭대기였다. 아직 저만치 더 가야 했다.

사용자 삽입 이미지

정상을 앞두고 마지막으로 만난 이정표이다.

사용자 삽입 이미지

그리고 정상 직전에 헬리패드가 나타났고..

사용자 삽입 이미지사용자 삽입 이미지

정상에 거의 2시간 만에 도달했다. 여기가 딱히 구름 속에 들어간 것도 아닌데 산 아래가 어쩜 이렇게 하나도 안 보일 수가 있나 모를 지경이었다.

사용자 삽입 이미지사용자 삽입 이미지

하산은 팔당댐 인근의 작은 마을인 '아랫배알미' 방면으로 했다. 주변 풍경은 전반적으로 이런 식이었다. 해가 안 나고 하늘은 우유처럼 완벽한 흰색이었다.
아랫배알미 마을에서 하남 시내로 가는 마을 버스가 하나 있는데(2-1), 수요가 수요이다 보니 차는 한두 시간에 한 대꼴이었다. 산중턱엔 이 버스의 시각표가 어느 나무에 걸려 있었다.

사용자 삽입 이미지사용자 삽입 이미지

예전에 다른 산도 그렇고 산기슭에 이렇게 초록색 페인트가 칠해진 등산로가 종종 보였다.

보통 서울 외곽의 산속이나 산기슭에는 군부대가 있는 경우가 드물지 않은데, 팔당댐 근처의 검단산 기슭에 있는 것은 군사 시설은 아니었다. 그 대신 군사 시설에 준하는 다른 보안 시설이 있었으니 바로 상수도 취수장이었다. 평범한 집이나 공장처럼 생긴 건물이 철조망으로 둘러져 있고 '사진 촬영 금지' 경고문까지 붙어 있었다. 그리고 여기 강 일대는 단순히 위험해서 "수영 금지"가 아니라 그냥 접근 금지, 경작 금지 등 여러 제약이 가해져 있었다.

사용자 삽입 이미지

서울에는 한강 이북을 따라 달리는 도로가 강변북로이고, 이남은 올림픽대로이다. 이와 비슷한 맥락으로 여기는 한강 이북으로 국도 6호선이 지나고, 이남인 저기는 국도 45호선이다.
강 건너 저 멀리 뿌옇게 보이는 산은 예빈산 내지 예봉산이다. 나중에 날씨가 맑을 때 저기를 올라서 팔당댐과 한강을 다시 구경해야겠다.

사용자 삽입 이미지

오늘은 팔당댐 사진은 아쉽지만 이거 하나로 때웠다. 시간과 체력이 허락한다면 저기를 건너가서 도보나 자전거 여행을 할 수도 있었지만 난 그러지는 않았다.

사용자 삽입 이미지

하남시 배알미동.
여기서 마을 버스를 탄 뒤 시내에서 서울 지하철역으로 가는 버스, 서울 지하철을 순서대로 갈아타며 귀가했다.
단순히 도시의 팽창을 방지하기 위해서가 아니고, 혹은 '공항이나 청와대, 군부대 근처여서' 같은 이유도 아니라 상수원 보호를 위한 그린벨트라니, 여기는 강이 송두리째 말라 버리는 천재지변이 없는 한 그린벨트가 풀릴 일은 절대 없겠다는 생각이 들었다. 색다른 장소를 구경했다.

그리고 한강도 상류로 올라가서 이렇게 폭이 좁아지는 걸 보는 것도 이색적이었다. 서울에서는 한강이 지하철 1정거장 거리 이상의 어마어마한 폭을 자랑하는 하류이니 말이다. 물론 그 물은 왕창 더러워져 있기 때문에 그대로 마실 수 없으며 사실 수영조차도 권장되지 않는다. 서울의 덩치가 커지면서 취수 시설은 역사적으로 점점 더 상류 쪽으로 옮겨져 왔다.

Posted by 사무엘

2016/06/18 08:33 2016/06/18 08:33
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1239

보다시피 요즘 운동을 빙자한 등산과 여행을 많이 다니느라 올해 상반기엔 프로그램 개발이 많이 더뎠다. 그래서 이번엔 4개월이라는 시간 동안에 버전을 0.1밖에 못 올렸다.
그 와중에도 개발 아이디어는 계속 떠올라서.. 8.x 중후반 정도까지 갈 것 같던 버전업 이정표가 9.0까지는 너끈히 갈 지경이 됐다. 이게 불행인지 다행인지.. 참 총체적인 난국이구나.

입력기와 타자연습의 변화 사항은 지난달에 공지한 것 그대로이고 더 변한 게 없다. 그러니 이전 글을 참고하면 된다. 이벤트 처리 수식은 글쇠배열의 추가 옵션으로 이렇게 깔끔하게 구현됐다. 옵션 3개밖에 없던 대화상자가 옵션이 8개로 늘면서 덩치가 제법 두툼해졌다.

사용자 삽입 이미지

그러니 여기서는 이벤트들 중 "문자 연속 입력 단절 감지하기"라는 개념에 대해서만 추가 설명을 좀 하겠다.

<날개셋> 한글 입력기는 지금까지 전통적으로 조합 상태 여부에 따라서 동일한 글쇠가 서로 다른 문자를 입력하거나(T변수), Bksp가 서로 다른 단위로 한글을 지우는(글자 or 낱자) 것을 지원했다.
그런데 이번 8.5에서는 이에 덧붙여, 굳이 한글이 아니더라도 일명 '타이핑'이라고 불리는 연속된 문자열 입력을 시작했는지, 아니면 그게 단절됐는지 그 타이밍을 알 수 있게 했다. 이것은 굉장히 의미심장한 새로운 기능이다.

연속 입력의 단절은 마우스 클릭이나 화살표 키로 cursor의 위치가 일괄 변경됐을 때, 윈도우의 키보드 포커스가 바뀌었을 때 같은 외부 요인에 의해 발생한다. 텍스트 에디터/워드 프로세서들은 undo도 연속된 문자열 입력은 한번에 없애 버리지만, 이런 단절이 일어나면 보통 undo 단위를 분리한다.
그러니 연속 입력이라는 건 이 undo 단위와도 완전히 같지는 않지만 얼추 비슷한 개념이다. 또한, 한글이 입력(=조합) 중이라면 응당 문자 연속 입력 중이지만, 문자 연속 입력 중이라고 해서 반드시 한글 조합 중인 것은 아닌 것으로 관계가 성립한다.

8.5에서는 Backspace 동작방식 설정 대화상자가 아래와 같이 바뀌었다. 제1동작과 제2동작을 세로로 배열하던 걸 가로 형태로 바꿨기 때문에 대화상자가 예전보다 좀 커졌다.

사용자 삽입 이미지

이번에 새로 추가된 기능은 '연속 입력 상태 여부'이다.
이전 버전까지는 오로지 '한글 조합 중 여부'에 따라서 제1동작(조합 중일 때)과 제2동작(그렇지 않을 때)을 구분했다. 거기에다가 '한 번 정해진 동작을 계속 적용'하는 옵션 하나만이 지원되었다. 이 옵션을 켜면 1과 2 중 한번 정해진 동작이 Backspace를 연타하는 동안 계속 유지되었고, 그렇지 않으면 이전 Backspace의 결과로 인해 한글 조합 여부가 달라지기만 해도 동작 방식이 바뀌었다.

그런데 상태 판단 기준을 '연속 입력 상태 여부'로 바꾸면, 조합 상태를 막론하고 연속 입력 중일 때는 제1동작이 선택되고, 그렇지 않으면 제2동작이 선택된다. 굳이 Backspace만을 연타하고 있지 않아도, 당장 한글을 조합 중이지 않아도 타이핑 중이라면 낱자 단위로 지우고 달라붙기 기능 같은 걸 쓰고 싶다면 이 기능이 굉장히 유용하게 쓰일 것이다. 즉, 한 Backspace 동작의 지속성은 '연속 입력 상태 여부'가 가장 길고, 그 다음이 '조합 여부 + 연타'이며 제일 짧은 건 그냥 '조합 여부' 옵션인 것이다.

그럼 이 '연속 입력 상태' 정보를 Backspace에서만 활용 가능한가 하면 물론 그렇지 않다. 지우기뿐만 아니라 입력에서도 활용 가능하다.
다만, 연속 입력 상태라는 아무래도 한 글자 입력이라는 단위를 초월하는 영역의 정보이다. 그렇기 때문에 이건 <날개셋> 한글 입력기를 사용하는 구현체가 공급해 주지, 한글 입력기가 직접 관리하고 있지는 않는다.

글쇠배열 수식에서 T 변수는 "지금이 조합 중인가?"를 나타내는데, 그런 것처럼 "지금이 연속입력 상태인가?" 같은 정보가 변수로 따로 주어지지는 않는다. 단지, 연속입력 단절이 발생했을 때 이벤트가 발생하고, 그 이벤트 때 특정 수식을 실행시킬 수 있다. 여기서 뭔가 사용자 변수(소문자)의 값을 변화시켜서 그 값의 변화를 감지함으로써 연속입력 단절을 간접적으로 알 수 있다. 이 수식은 글쇠배열의 추가 옵션 대화상자에서 설정 가능하다.

세벌식 글쇠배열과 관련해서 내가 당장 머리에 떠오르는 활용 방법은 최종 배열에 있는 쉼표와 마침표이다.
쉼표와 마침표는 평소에 문장 부호로 많이 쓰이지만 자리수 구분이나 소수점 때문에 숫자 입력 중에도 많이 쓰인다. 그렇기 때문에 Shift를 누른 상태에서도 계속 그대로 입력 가능한 게 좋다. 하지만 그런 제한된 경우 말고 평소에 쉼표와 마침표가 한 글쇠배열에 중복 등재되어 있는 것은 낭비이다.

마치 / 자리에 /와 ㅗ를 조건부로 모두 배당하는 것처럼, Shift+쉼표/마침표는 숫자를 연속 입력하는 중일 때에만 쉼표와 마침표가 찍히고, 나머지 상황에서는 다른 기호나 특수글쇠가 입력되게 할 수 있다. '공통 전처리'와 '연속 입력 단절 이벤트' 수식에다가는 어떤 소문자 변수 플래그를 끄고, 숫자가 입력된 직후에는 그 플래그를 켜게 해서 Shift+쉼표/마침표는 그 플래그의 존재 여부에 따라 서로 다른 문자가 입력되게 하면 된다.

이거 작업을 하면서 Backspace 설정을 저장하는 방식이 바뀌었다. 8.5에서 저장한 입력 설정은 8.4 등 이전 버전에서는 Backspace 옵션이 보존되어 있지 못할 것이다.
그럼 새 기능 소개는 이 정도로 마치고, 지금부터는 미래의 떡밥이랄까 썰이나 좀 나누고자 한다.

썰1. 제5의 빠른설정

<날개셋> 한글 입력기에 '빠른설정'으로는 두벌식/세벌식, 쿼티/드보락이라는 가장 널리 쓰이는 글쇠배열을 낱자 결합과 오토마타까지 한번에 세팅해 주는 '기본 글자판 설정'이라는 게 3.0 시절부터 존재했다. 그 뒤엔 복벌식· 신세벌식과 한글 로마자 입력 방식을 세팅해 주는 추가적인 빠른설정이 2006년에 나온 3.9에서 추가되어 이 형태가 지난 10년 간 유지돼 왔다. 그 뒤, 이번 8.5의 바로 다음 버전에서는 아주 중요한 빠른설정이 하나 더 추가될 예정이다.

내 프로그램 내부에서는 낱자 결합 규칙이라는 걸 오로지 A+B → C 한 형태만을 규정하고 있다. 그러나 한글 입력 방식에서 낱자 결합 규칙이라는 건 한 낱자를 만드는 미시적인 규칙과, 낱자와 낱자를 결합해서 겹낱자를 만드는 거시적인 규칙으로 구분되는 경우가 대부분이다.

PC에서야 키보드에 글쇠 수가 충분히 많으니 어지간한 낱자는 한 타 만에 바로 입력되고 미시적인 규칙은 별로 중요하지 않다. 그러나 글쇠 수가 매우 적은 모바일용 입력 방식에서는 ㅁ+가획 → ㅂ(나랏글), ㅇ+ㅇ → ㅁ(천지인) 같은 미시규칙이 제각각이고, 그 반면 거시규칙은 어느 입력 방식이나 차이가 없다. ㅂ이나 ㅅ 각각의 낱자를 어떤 방식으로 입력하건 겹받침 ㅄ의 입력은 가능해야 하며 ㅂ+ㅅ의 결합으로 ㅄ을 입력한다는 건 변함없다는 뜻이다.

그리고 도깨비불 현상은 미시규칙이 아니라 언제나 거시규칙 단위로 발생한다. ㅄ은 ㅂ과 ㅅ으로 분리되지만 ㅂ이 ㅁ과 가획으로 분리되지는 않으니 말이다. 그리고 휴대전화 입력기들은 backspace도 각각의 입력 단계가 스택에 저장되는 게 아니라 저 거시규칙 단위로 적용되는 편이다. 이런 미시/거시규칙 구분이 없이 정말 임의로 특수 도깨비불을 처리해야 하는 입력 방식은 한글 로마자 방식 정도밖에 없다(ch, l, x 등;;).

물론 <날개셋> 한글 입력기는 특수 도깨비불 규칙과 결합 축약 규칙들을 이용해 저런 동작들을 모두 구현할 수 있다. 그러나 사용자가 거시구조 단위에서 발생하는 파생 동작을 미시적으로 일일이 다 세팅을 해 줘야 한다. ㄶ, ㅀ의 입력을 구현하기 위해 나랏글이라면 중간의 ㄴ+ㅇ, ㄹ+ㅇ 같은 가상의 상태를 모두 넣어야 하고 그런 임시 낱자는 가상 낱자에다 한글 출력 치환까지 써서 표현하는 방법을 정해 줘야 한다. 일종의 노가다이다.

'초· 종성 공유 낱자 결합 규칙' 옵션을 쓰면 초성에는 미시규칙만 존재하고 종성에는 이를 바탕으로 최대 2단계의 거시규칙이 존재하는 일종의 'special case'에만 한해서 위의 작업들을 모두 자동화할 수 있다. 현대 한글을 입력하는 대부분의 휴대전화 입력 방식들이 이 기능의 혜택을 입을 수 있다.

그러나 옛한글까지 동원되면 어떨까? 초성과 종성에 서로 다른 거시규칙이 적용돼야 하고 그 단계수도 3단계까지 있을 수 있는데 이건 답이 없다.
이럴 때 미시규칙으로부터 거시규칙을 곱한 product들을 자동으로 관리하고 가상 낱자, 특수 도깨비불, 낱자 축약, 다단계 낱자 분리 등의 규칙들을 임시 낱자까지 감안하여 일관되게 자동으로 생성해 주는 것이 제5의 빠른설정이 하는 일이다.

제5의 빠른설정은 종성을 입력하는 중에 종성에 존재하지 않는 초성을 입력하려는 시도가 감지됐을 때(예: 옛한글의 정치음· 치두음) 이것을 종성에다 임시로 표현하거나 아니면 초성으로 옮겨 준다.
그리고 '허용 한글 범위' 제약에 걸리지만 중간 과정에서 불가피하게 입력되는 글자들을 자동으로 찾아 주며(예: '썅'을 입력하는 과정에서 '쌰'를 불가피하게 입력해야 하므로),
종성-초성 음절간 연속입력이 불가능한 경우는 말할 것도 없고 미시결합과 거시결합이 충돌하는 경우를 모두 찾아 준다(예: 천지인에서 ㅝ와 ㆌ는 입력 순서가 동일하기 때문에 충돌함)

그야말로 <날개셋> 한글 입력기가 지금까지 꾸준히 추가해 온 복잡한 고급 기능들을 총괄제어하는 끝판왕이 될 것이다.

썰2. 한자의 추가 지원 가능성

말이 나왔으니 말인데..
<날개셋> 한글 입력기는 공식적으로 유니코드의 BMP(기본 외국어 평면) 영역에 있는 28000여 자의 한자에 대해서 독음과 부수에 의한 입력을 지원한다. 한중일 통합 한자, 호환용 한자, 그리고 확장 A까지이다. 그 이상 확장 B부터는 지원하지 않고 있다.

물론 유니코드에 등록된 모든 한자들은 부수, 획수, 음 같은 기본적인 신상 정보가 Unihan이라는 이름으로 인터넷에 공개돼 있기 때문에 소프트웨어 개발자들이 이를 활용 가능하다. 그러나 <날개셋> 한글 입력기에서 유니코드의 모든 한자들을 그렇게 지원하는 것은 현실적으로 쉽지 않으며, 그래야만 할 필요도 없다.

그도 그럴 것이 확장 B부터는 코드 번호가 16비트 범위를 초과하는 surrogate 영역에 있기 때문이다. 이것까지 받아들이려면 한자 처리와 관련해서 16비트 크기를 전제하고 만들어진 파일 구조나 API를 여러 군데 확장해야 한다. 단순히 데이터만 추가로 집어넣어 주면 되는 게 아니라는 뜻이다.

그런데 그 확장 작업이 꼭 필요할 정도로 명분과 가성비가 성립하느냐 하면 그렇지 않다. 내 프로그램은 엄연히 중국어 입력기가 아니라 한글 입력기이고, 한국어 문화권에서는 이미 있는 BMP 영역의 확장 한자도 일상생활에서 거의 쓸 일이 없기 때문이다.
괜히 쓸데없이 한자 후보 목록만 복잡하게 만들고 목록을 불러오는 시간을 잡아먹는다고, 평상시에는 이미 있는 것조차도 오히려 숨기고 4888자 상용 한자만 불러오게 하는 옵션이 따로 있을 정도이다.

독음 입력의 경우 확장 B까지 추가되면 '가, 이, 사' 같은 음은 정말 헬게이트 수준으로 딸려 나오는 한자 후보가 너무 많아질 것이고, 무엇보다도 이런 한자들의 한국어 한자음은 누가 무슨 근거로 제정하느냐 하는 문제가 생긴다. 본인은 이와 관련된 자료를 지금까지 접하지 못했다. 이제 surrogate에 있는 한자들은 현대 중국어에서 막 쓰인다기보다는 그냥 옛 문헌에서나 아주 가끔 등장한 레어템 벽자(僻字)들이거나, 아니면 어디서 인명용으로 인위로 만들어진 듣보잡 글자들이 아닐까 생각도 한다.

다만, 한글 독음은 그렇다 치더라도 '부수로 한자 입력' 기능은 그래도 확장 B의 모든 한자를 입력할 수 있으면 좋긴 하겠다는 생각을 한다. 물론 이건 언제까지나 '한글' 입력과 관련된 다른 기능들이 모두 구현되고 완성된 뒤에나 해 볼 만한 생각이다. 우선순위가 아주 낮은 희망사항일 뿐이다.

한자는 현재 전세계에서 현역으로 쓰이고 있는 문자들 중 유일한 표의/표어문자이며, 정말 다른 문자들은 엄두도 못 낼 엄청난 양의 글자 수를 자랑하고 있다. 자세히 뜯어 보면 한자도 정사각형 안에서 뭔가 심오· 오묘한 제자 원리를 갖추긴 한 듯하지만, 근본적으로 배우기가 너무 어렵고 숫자로 치면 아라비아 숫자가 아니라 로마 숫자 같은 접근을 한 문자이다.
문자라는 게 정해진 유한한 틀과 체계가 없이 중구난방으로 임의 생성이 가능하다면 그건 엄밀히 말해 문자가 아니라 아직 그림의 범주를 못 벗어난 상태가 아니겠는가? 문자표에서 끝도 없이 펼쳐져 있는 한중일 통합 한자 리스트를 보면.. 뭔가 참 막막하다는 느낌이 든다.

썰3. 파일 포맷이 또 바뀐다면?

<날개셋> 한글 입력기가 현재 사용하는 입력 설정 파일 포맷은 2008년에 나온 5.0 버전 때 큰 틀이 잡혀서 지금까지 이어지고 있다. 3.0 방식이 나온 이후로 4년 만에 바뀐 것이다.
이 포맷은 압축을 하지는 않지만(어차피 무슨 이미지나 문서 포맷도 아니고 파일 크기가 굉장히 작음..) 날개셋문자 수식 같은 정보들을 최대한 조밀하게 기록하고 나름 확장성도 생각해서 설계되었다. 하지만 긴 세월이 흐르면서 새로운 chunk들이 덕지덕지 추가되면서 내부 구조가 좀 지저분해져 있긴 하다.

유니코드에 한글 자모가 더 추가되어서 내부 자모 순서가 재조정되는 이변이라도 발생하지 않으면 이 파일 포맷이 가까운 미래에 또 바뀔 일은 매우 희박하다.
만약 파일 포맷을 바꾸게 되면, 그때는 지저분한 chunk들을 정리하고 다음 사항을 반영하려 한다.

첫째, 내부에 저장되는 데이터 중 (1) 한글 입력기의 동작을 실제로 바꾸는 설정/옵션과, (2) 동작에 영향을 주지는 않지만 사용자에게 표시되는 데이터(후보 설명문 같은), (3) 제어판을 열지 않은 이상 사용자에게 전혀 보이지 않는 단순 주석 데이터(오토마타 상태 설명문 같은) 영역을 더 엄격하게 구분해서 필요하다면 (2)나 (3)은 손쉽게 생략 가능하게 할 것이다.

둘째, 이때쯤 수식에 ++와 -- 단항 연산자를 추가해 넣을 의향이 있다. C언어가 제공하는 것처럼 전위형과 후위형 모두 말이다. <날개셋> 한글 입력기의 수식은 C언어 스타일이지만 이런 단항 증가/감소 연산자를 현재 지원하지 않기 때문이다.
이 연산자가 제공되지 않은 이유는.. 단항 연산자는 프로그래밍에서 반복문을 구현할 때 사실 가장 많이 쓰이는데 내 프로그램의 수식은 그렇게 프로그래밍까지 가능한 환경이 아니기 때문이다. 그리고 사용자 변수라 하더라도 한도 끝도 없이 1씩 증가/감소시키는 것보다는 a=(a+1)%N처럼 순환을 전제로 하는 증가가 더 많이 쓰이기 때문이다. 이런 여건을 감안했을 때 ++와 -- 연산자는 딱히 유용하지 않다고 판단되어서 넣지 않았다.

사실, 먼 옛날에는 +=, -= 같은 합성 대입 연산자조차 지원하지 않았다가 지난 4.4 버전에서 10종이 대거 추가되었다. 가감승제 4, 나머지 1, 비트 3 (and or xor), 비트 좌우 이동 2 이렇게 총 10종류이다.
내 프로그램은 내부적으로 연산자의 식별 번호를 우선순위 순으로 부여하고 있는데 새로 추가된 연산자들은 메모리에 저장되는 코드값과 디스크에 이미 저장된 코드값이 달라서 번거롭게 보정을 해 줘야 했다. 마치 문자의 코드값과 사전 배열 순서가 동일하지 않게 되는 것처럼 말이다.

3.x 파일 포맷에서는 합성 대입 연산자들이 나중에 추가된 관계로 그런 보정이 존재했지만, 5.0에서 파일 포맷이 바뀔 때 연산자 저장 방식을 동기화시켰다. 지금 또 연산자가 추가되면 나중에 파일 포맷이 바뀔 때 새로운 순서가 반영될 것이다. ++와 --는 고려 대상이긴 하지만 위에서 언급한 이유도 있고 해서 우선순위가 막 높지는 않다.

썰4. 게임 체계의 개편

예전에 말한 적이 있나 모르겠는데.. 장기적으로는 현재 타자연습에 있는 게임도 체계를 크게 고치려 생각 중이다.
방어력 업그레이드를 없애고, 둠/퀘이크의 아머 내지 스타크래프트의 실드 같은 보조 맷집 정도만 넣지, HP와 관련하여 그 이상 더 복잡한 다단계 체계를 두지는 않을 것이다. 체력을 100 이상으로 비정상적으로 많이 비축해 놓을 수 없게 할 것이다.

그 대신 체력 보충 바이러스가 더 자주 나오고 위력이 강해진다. 한 번만 받아도 어느 주인공이든 전체 체력의 절반이나 전부가 곧장 회복된다. 어려운 레벨에서는 죽기 직전이 됐다가 바이러스 한 방 먹고 살아나는 스릴이랄까 '들쭉날쭉' 기복이 더 커진다. 이를 위해 어쩌면 레벨의 난이도를 지금보다 더 낮출 수도 있다.

현재의 게임 체계는 레벨 1부터 시작해서 체력과 방어력 업그레이드를 무슨 경험치처럼 채워야만 상위 레벨에서 버티기가 더 수월해지는 구조이다. 이걸 타파하려 한다.
주인공들 중 '한별'은 오타 페널티가 있는 대신 저렇게 맷집을 축적하는 게 가장 유리한 주인공이었다. 그 메리트가 없어지는 대신, 점수가 가장 높다거나 다른 방법으로 보상을 줄 생각이다.

한별은 어려운 대신에 잘 다루면 가장 강력한 주인공이고, 미르는 오타를 내도 되는 대신에 다른 페널티가 큰 주인공, 그리고 아름은 그 중간.. 이 구도는 변함없이 유지된다.
그런데 떨어지는 단어를 쳐서 없애는 게임에서 현실적인 변수는 저런 타자의 용이성과 체력 맷집밖에 없는데.. 체력 맷집 체계를 단순화· 평준화시키고 나니 다른 방법으로 주인공별 차별화를 어떻게 시킬지가 고민이다.
현재로서는 머리가 아파서 구상 단계에 머무르고 있다. 아이고~ =_=;;

Posted by 사무엘

2016/06/15 08:31 2016/06/15 08:31
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1238

등산 답사기: 응봉산

산이라 하면 아무리 못해도 해발 200~300미터 이상은 돼야 등산의 대상이 되고 동네 뒷산 대접이라도 받을 수 있을 것 같다. 하지만 서울 시내엔 100미터 남짓에 불과해 그냥 어지간한 고층 건물 높이밖에 안 되는 언덕도 있다. 낮을 뿐만 아니라 딱히 산맥이 길게 이어져 있지 않아서 능선 산책로도 별로 없다. 강서구에 있는 우장산, 동부에 있는 천장산, 봉화산 같은 산이 그 예이다.

서울 지하철 5호선이 상일동과 마천 방면으로 찢어지는 지점에는 일자산이라는 낮은 산이 있어서 전방을 가로막고 있다. 일산선의 정발산 역에는 근처에 호수 공원과 더불어 말 그대로 정발산이 있는데, 얘 역시 산이라고 부르기에는 민망한 감이 있는 그냥 언덕(hill)이다.

이번에 본인이 답사하여 소개하고자 하는 산은 응봉산이다. 얘 역시 '등산'이라는 말을 붙이기에는 좀 낮은 산이다. 그래도 산까지 가는 데 자동차의 도움을 받지 않고 청계천과 중랑천 공원을 거쳐서 자전거만으로 이동해서 추가적인 운동을 했다.
응봉 역의 출구로 나가니 '응봉산 팔각정'을 가리키는 이정표는 쉽게 찾을 수 있었다. 가파른 주택가 골목길을 한참을 올라가자 드디어 흙으로 된 산길이 등장했다.

사용자 삽입 이미지

흙길로 진입하기 전에도 잠시 이런 공원이 있었다.

사용자 삽입 이미지사용자 삽입 이미지

올라가는 길은 대략 이러했다. 나름 꽃도 예쁘게 피어서 풍경이 아니라 식물들 사진을 찍는 사람도 보였다.

사용자 삽입 이미지

내 앞에 펼쳐진 하천은 중랑천이다. 강 건너편을 좌에서 우로 훑으면 웬 공장이 있고, 그 다음에 서울숲과 성수대교(저 멀리 한강을 건너는 빨간 다리)가 순서대로 보인다. 그렇잖아도 여기는 중랑천이 한강과 합류하고, 동시에 동부 간선 도로가 강변북로와 합류하기 직전 지점이다.

중랑천을 횡단하여 내가 있는 쪽으로 가까이 오는 저 다리는 응봉교가 아니라 용비교이다.
생각 같아서는 여기서 별로 멀리 떨어지지도 않은 서울숲까지도 자전거로 가고 싶었다. 하지만 저 다리는 자동차로만 건널 수 있으니 무효다. 저기는 나중에 따로 가 보게 될 듯.
응봉과 서울숲 모두 전철로는 왕십리 역에서 한 정거장 거리이다. (각각 중앙선과 분당선)

사용자 삽입 이미지

응봉산을 오르면 이렇게 중앙선(수도권 전철 노선명)/경원선(원래의 노선명) 선로를 위에서 내려다볼 수 있다! 응봉산의 가장 매력 포인트가 아닐 수 없다.
응봉산 전체와 그 아래를 지나는 중앙선 전동차를 같이 찍은 사진도 있다. 마치 일본에서 후지산을 배경으로 달리는 신칸센 사진을 찍듯이 말이다.

사용자 삽입 이미지사용자 삽입 이미지

정상에 도달하면 넓은 공터에 이런 전망대와 팔각정이 있다. 낮고 부담 없이 오를 수 있으니, 여름엔 여기에 돗자리 깔고 누워서 잠도 자고 싶을 것 같다. 서울 도심 한복판에 이런 공원과 하천, 언덕에다 철길까지 있는 곳은 그야말로 천혜의 요지임이 틀림없다.

사용자 삽입 이미지

저기도 응봉산 만만찮은 고지대 같은데, 실제로 그러하다. 상왕십리-신금호-행당 사이는 '대현산'이라고 응봉산과 비슷한 높이의 산이 있다. 하지만 저기는 꼭대기까지 온통 건물들이 지어져 있다.
이런 식으로 궁극적으로는 서울 시내 지도를 뒤져서 해발 100미터대의 고지대들에 대해 전반적으로 다 찾아보는 것도 가능할 듯하다. 특히 대학교 위주로 말이다. 서울 시립대 근처에는 배봉산이 있고, 고려대 근처에는 개운산, 경희대 근처에는 천장산이 있다.

서울 현충원의 터가 있는 산은 '서달산'이라고 불리는 야산이다. 한강 근처에 나름 굉장히 입지가 좋은 곳인데 이 승만 시절부터 여기는 국군 묘지로 조성되었다.
끝으로, 일반인은 접근할 수가 없겠지만 용산의 주한 미군 부지도 일명 '둔지산'이라고 불리는 나지막한 언덕 고지대라고 하는데 실제로 그런지는 잘 모르겠다.

Posted by 사무엘

2016/06/12 19:33 2016/06/12 19:33
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1237

경부 고속도로의 서울 톨게이트 근처 구간은 지리적으로 흥미로운 게 많다. 일단 고속도로의 선형부터가 꽤 길게 곧은 직선인 데다, 그냥 직선이 아니라 거의 동일 경도를 지나는 수직이다. 그리고 지방도 23호선과 분당-수서 고속화도로가 양 옆으로 나란히 지난다.

여기는 행정구역상 성남시 궁내동이다. 고속도로의 동쪽은 잘 알다시피 분당 신도시이다. 그런데 서쪽에는 무엇이 있을까?
분당이야 전철도 지나고 사람들이 바글바글한 부촌 겸 상업 업무 지역이지만 지방도 23호선의 곁에 있는 저 마을은 그린벨트이기라도 한지 뭔가 딴 세상 같았다. 아기자기한 빌라들이 놓여 있고, 건물들 뒤엔 바로 언덕 내지 산이 병풍처럼 둘러져 있는데.. 본인에게는 오랫동안 선망의 대상이었다. 그래서 여기를 탐험할 의향으로 드디어 태봉산을 올랐다.

사용자 삽입 이미지사용자 삽입 이미지

궁내동 경로당에 도착했다. 거기 근처는 저렇게 아주 한적한 마을이다.

사용자 삽입 이미지

바로 옆에 있는 오르막길이 등산로의 시작이었다. 이것만 쭉 오르는 것도 생각보다 힘들었다. 무슨 급수탑 같은 상수도 시설을 지난 뒤부터 길이 비포장으로 바뀌고 본격적인 산길이 시작됐다.

사용자 삽입 이미지사용자 삽입 이미지

저 멀리 경부 고속도로와 네이버 본사가 보인다. 이 산에서 그나마 전망이 가장 좋은 지점이 여기였다. 등산로는 마을에서 바로 보이는 낮은 언덕이 아니라, 더 깊숙한 곳에 있는 더 높은 산을 타는 형태였다. 그러니 아래의 마을이나 도로는 다른 언덕과 나무들에 가려져서 잘 보이지 않았다.

사실, 이 궁내동 뒷산은 무슨 북한산이나 청계산만치 막 높고 전망 좋고 사람들이 많이 찾는 유명한 산은 아니다. 그냥 여기 주민들이 운동삼아 찾는 수준이었다. 가끔씩 등장하는 이정표 말고는 등산로나 쉼터 같은 게 잘 마련돼 있지도 않았다. 여러 산들을 다녀 보니 산에도 '급'이라는 게 있고 등급 차이가 존재한다는 걸 알 수 있었다.

사용자 삽입 이미지

사용자 삽입 이미지

그래도 이곳도 산은 산인지라, 종아리가 배김이 느껴질 정도로 굉장히 가파른 비탈길을 꾸준히 오르자 가장 높은 지점인 정상이 금세 나왔다.
여느 산의 정상처럼 바위나 전망대가 있는 것도 아니고, 여기서부터는 능선을 타면서 꾸준히 산책을 계속할 수 있었다.

사용자 삽입 이미지

이제는 등산로가 아니라 그냥 산책로이다. 길은 계속 이런 형태로 이어졌다. 상록수와 낙엽수의 차이를 알 수 있는 장면이 나와서 한 컷 사진으로 남겼다.

사용자 삽입 이미지

이 산을 오른 다른 사람들의 블로그를 보니 흰 바탕에 울릉도체의 저 평면 표지판만 있었는데, 저렇게 검은 배경의 고딕체 + 입체 표지판은 나중에 또 세워진 것 같다.

사용자 삽입 이미지

한참을 더 걷자 산불 감시 초소가 나왔다.
여기서 산책을 계속해서 쇳골마을 쪽으로 갈 수도 있으나, 별안간 방향을 틀어서 궁내동 쪽으로 돌아가는 샛길도 있어서 본인은 그 길로 하산했다.
남쪽 끝자락까지 가면 보바스 기념 병원이라든가 대장동· 미금동 쪽으로 도달 가능한 듯했는데 그건 다음을 기약해야겠다.

내 구닥다리 카메라는 명도차 조절이 안 돼서.. 숲이 좀 나오게 찍으려면 푸른 하늘을 포기하고 하늘을 허옇게 만들어야 된다..;;
그리고 산불 감시 초소는 충분히 크고 공중에 노출되지 않았나 싶은데.. 나중에 인터넷 지도에서 항공 사진을 토대로 위치를 찾으려 해도 도무지 알 수 없었다.

사용자 삽입 이미지

갑자기 침엽수 위주의 울창한 숲길이 등장한지라 이런 비탈길을 쭈욱 내려갔다. 이 사진은 뒤을 돌아보면서 오르막을 찍은 것이다. 그러자 역시 중앙 하이츠빌 빌라 "2차"의 뒤에 있는 계단형 등산로를 통해 하산을 완료했다.
여기가 어딘지를 파악할 필요가 있었다. 고개를 하나 넘어서 출발지와는 한 단계 떨어진 다른 마을에 도착했다면, 그건 또 그거대로 문제였다. 하지만 알고 보니 여기는 궁내동 경로당 내지 하이츠빌 "1차"로부터 몇백 m 정도밖에 떨어지지 않아 있었다.

예전에도 한번 언급한 적이 있지만, 본인의 등산 원칙은 "하산할 때 왔던 곳으로 되돌아가지 않는다"이다. 이런 이유로 인해 본인은 등산을 갈 때는 차를 가져가지 않는다. 하산 후에 차가 있는 곳으로 가기 위해 또 대중교통을 이용하는 건 난감한 짓이니까..;;
하지만 이번에 궁내동을 방문할 때는 예외적으로 차를 가져갔다. 그리고 이것은 다음과 같은 여러 이유로 인해 결과적으로 잘한 선택이 됐다.

  • 주차: 반쯤 시골인 동네인지라 주차 여건이 나쁘지 않았다. 골목길은 다들 주차 가능한 흰색 실선 위주여서 적당히 아무 집 담벼락에 차를 댈 수 있었다. 길가에 무슨 경고문이 붙어 있는 건 '주차금지'가 아니라 죄다 '상수도 매설 지역. 무단 경작 금지'였다.
  • 방문 동선: 이곳은 본인의 집에서는 멀지만, 판교에 소재한 본인의 직장에서는 5km 남짓으로 무척 가깝다. 그래서 회사에서 야근· 철야 근무가 있던 날에 차를 가져가서는, 퇴근과 동시에 여기로 바로 이동했다. 밤엔 차에서 한숨 잔 뒤 이른 아침에 산을 올랐다. 이렇게 하니 동선이 괜찮았다.
  • 등산 동선: 태봉산은 비슷한 높이의 다른 산봉우리들과 연결되어서 산맥이 일종의 C자 모양으로 형성돼 있다. 한참을 뺑 돈 뒤에 궁내동 방면으로 하산하자, 결국은 산에서는 계속 새로운 길만 따라 갔지만 결과적으로 "출발했던 곳으로 되돌아올 수 있었다."

다음에 또 여기 올 일이 있을지는 모르지만, 다음엔 내가 내려왔던 그 입구에서 산을 다시 올라가서 남쪽 끝까지 더 진행하는 걸 생각할 수 있겠다. 이쪽 동네와 산의 분위기는 이렇다는 걸 알 수 있었다.

Posted by 사무엘

2016/06/10 08:36 2016/06/10 08:36
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1236

서울대는 관악산 기슭에 있고 국민대는 북악산 기슭에 있는데, 난 정작 내가 적을 둔 학교 근처에 있는 산을 올라 본 적이 없었다. 그래서 하루 날을 잡아서 곧장 달려갔다.
3호선 독립문 역은 서대문 형무소를 관람하기 위해 예전에 방문한 적이 있었는데 이번엔 등산을 위해 한 번 더 방문했다.

사용자 삽입 이미지사용자 삽입 이미지

독립문 역 주변의 공원 풍경은 대략 이렇다.

사용자 삽입 이미지

이것은 서대문 형무소의 뒤에서 인왕산 쪽을 바라보며 찍은 사진이다. 안산을 오르기 위해서는 이쪽으로 가야 한다. 형무소 뒤에는 "이 진아 기념 도서관"이 있다.

사용자 삽입 이미지

이 건물은 미국에 어학연수를 갔는데 거기서 교통사고로 죽은 딸을 기리기 위해, 유족이 재정을 후원하여 설립한 구립 도서관이다.
이 도서관을 지나면 등산로 계단이 나오는데 그 옆에는... 군부대가 있다.
이른 아침 7시 무렵에 여기를 지나니 군인들이 연병장에서 아침 점호를 하는 게 내려다 보였다. 우와..;;

사용자 삽입 이미지

안산은 능선만 도는 둘레길, 그리고 정상으로 향하는 암벽 등산로 등이 잘 닦여 있었다. 예전에 올랐던 인왕산이 저 멀리 저렇게 보인다. 아래에는 아파트와 한성 과학 고등학교가 있다.

사용자 삽입 이미지사용자 삽입 이미지

높이 올라갈수록 아래에 내려다 보이는 것은 더욱 많아진다. 위의 사진에서는 나오지 않았지만 여기서도 저 멀리 내부순환로를 볼 수 있다.

사용자 삽입 이미지사용자 삽입 이미지

안산의 정상에는 봉수대가 있다. 물론 조선 시대의 오리지널은 아니고, 나중에 레플리카를 만든 것이다.
봉수대란 통신 수단으로서 불 내지 연기를 피우던 곳이다. 물과는 아무 관계 없으니 '수'라는 음에 낚이지 말 것. 水 가 아니라 燧라는 아주 생소한 한자이다.

사용자 삽입 이미지

나는 왔던 길로 되돌아가지 않기 때문에 하산은 서쪽의 연세 대학교 방면으로 했다.
하산하는 길엔 '무악정'이라는 정자와 마주쳤다. 북악산에 팔각정이 있는 것처럼 이 산도 중턱에 이런 정자가 있더라.
이 외에도 안산에는 약수터가 많이 있었다. 하지만 이들의 수질은 대부분 음용 부적합 판정이 떨어져 있었다. 대장균이 검출됐다고 말이다.

안산은 정상까지 오르는 일부 암반 구간을 제외하면 대부분 길이 잘 닦여 있었다. 단, 일부 등산로는 군사 작전 지대라고 민간 등산객의 출입이 금지되기도 했다.
연세 대학교 쪽으로 계속 내려가다 보니 연대 신촌 캠퍼스의 최북단에 있는 강의동인 대우관(상경대학 건물) 주차장에 잘 착륙했다. 하산이 결과적으로 등교가 됐다. 본인은 학교에 들른 김에 오랜만에 연구실에서 볼일을 좀 보고 귀가했다.

북악산과 안산은 다음이나 네이버 같은 인터넷 지도에 등산로가 바로 표시되어 있지 않아서 지금까지 선뜻 갈 생각을 못 하고 있었다. 하지만 정작 근처의 지하철역에만 가면 등산로 안내는 곳곳에 아주 잘 돼 있다. 더구나 안산보다 더 낮은 산에도 등산/산책로가 표시되어 있기도 하다.
북악산이야 청와대와 너무 가까워 표시를 숨긴 것이겠지만 안산은.. 그 군부대 때문에 생략한 건가 싶은 생각이 든다. 아무튼, 안산 탐방도 재미있었다.

Posted by 사무엘

2016/06/08 08:37 2016/06/08 08:37
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1235

등산 답사기: 북악산 -- 下

북악산은 북한산보다 남쪽에 있는 산이긴 한데, 북악산 자체도 사실 내부에 분지가 있어서 북부와 남부라는 두 파트로 나뉘어 있다고 생각하면 편하다.
성곽이 둘러져 있고 가장 높은 정상이 있고 청와대를 배경으로 보이는 그 산은 남부이다. 그리고 남부의 서쪽에는 창의문 안내소가 있고, 동쪽에는 말바위 안내소가 있어서 등산객들을 통제한다. 남부에 입산하려면 신분증을 제시하고 번호표 목걸이를 받아야 한다.

그 반면, 숙정문으로 나가서 움푹 파인 분지를 향해 내려가면 삼청각이 보이고, 숙정문 안내소에서 또 목걸이를 받거나 반납할 수 있다. 팔각정을 비롯해 북악산의 주요 관광지는 사실 북악산의 북부에 있다. 북부는 어차피 청와대가 보이지도 않으며, 목걸이 통제 구역이 아니다. 난 이 사실을 뒤늦게 깨달았다. 항공/위성 지도로도 지면의 고도는 거의 짐작할 수 없으므로.
지난번에 북악산을 수평 횡단했을 때는 북악산의 이런 지형적 특성을 모두 이해하지 못하고 남부를 반쪽짜리만 구경했던 관계로, 이번에는 북악산을 수직 종단하면서 나머지 구간을 마저 구경했다.

사용자 삽입 이미지

먼저, 북악산 남부에 진입도 예전에 다녀갔던 창의문 내지 와룡 공원이 아니라, 삼청 공원에서 했다. 위의 사진은 삼청동 골목길의 모습이다. 이로써 청와대의 왼쪽과 오른쪽 주변을 골고루 답사해 보게 됐다. 여기는 서울 도심과 가깝고 데이트 코스로 좋지만, 딱 봐도 차 세울 만한 곳은 없게 생겼다. 자차를 갖고 방문하기는 곤란하다.

내가 내린 버스 정류장은 '삼청공원 입구'와 '교육과정 평가원'이라는 명칭이 뒤섞여 쓰이고 있었다. 한국 교육과정 평가원이 한때 여기 근처에 있었지만, 지난 2010년에 이전했기 때문이다.

사용자 삽입 이미지

북악산을 오르는 자동차 도로는 늘 그렇듯이 청와대 쪽은 철망이 몇 겹으로 둘러져 있다.
창의문에서 정상으로 오를 때는 주변에 차도가 없이 가파른 경사를 계단으로 오르느라 정신 없었다. 그러니 이런 광경을 딱히 볼 일이 없었다.

사용자 삽입 이미지

이제부터 시멘트 오르막길이 끝나고 등산로가 나왔다. 성곽 둘레길보다는 인위적인 느낌이 덜한 비탈길을 오른 뒤, 지난번에 들렀던 성곽 둘레길과 합류를 했다.

사용자 삽입 이미지

드디어 숙정문을 나서서 북악산의 남부에서 북부로 건너가기 시작했다.
길이 어떻게 되느냐 하면, 그냥 앞만 보고 쭈욱 올라서 팔각정으로 갈 수도 있고, 중간에 성북천 발원지라는 지점에서 오른쪽으로 꺾어서 더 길고 험한 등산로를 타고 동쪽으로 갈 수도 있다.
후자는 제2 산책로인데, 요게 일명 '김 신조 루트'이다. 그 시절에 남파된 북한 무장공비들이 청와대로 침투할 때 이용한 경로라고 해서..

사용자 삽입 이미지

김 신조 루트는.. 뭐 그렇게까지 특별한 게 있지는 않았다. 이런 식으로 길이 쭉 이어졌다.

사용자 삽입 이미지

북악산의 북부를 오르면서 이전에 지나 온 남부를 바라본 모습이다. 서울 성곽이 쭉 둘러져 있는 게 보인다.

사용자 삽입 이미지

이것은 '호경암'이라는 바위이다. 성곽 둘레길에는 1· 21 사태 교전 때 총알이 박힌 소나무가 있더니만, 여기는 총알이 박힌 바위가 있었다.
그 시절에 단순히 시가전뿐만 아니라, 도주한 무장공비를 소탕하기 위해 산 속에서 치열한 교전이 벌어졌음을 알 수 있다.

사용자 삽입 이미지

하늘마루 전망대에 도착했다. 내부순환로, 국민 대학교, 평창동 등이 모두 보이고 경치가 아주 좋았다. 산꼭대기에까지 무슨 건물을 어떻게 지었는지, 근처에는 사람이 거주 가능한 것으로 보이는 군사 시설도 있었다.

사용자 삽입 이미지사용자 삽입 이미지

하산 예정 지점인 국민 대학교 인근과, 다른 방향인 평창동의 모습이다.

사용자 삽입 이미지

전망대에서 더 진행한 끝에, 드디어 '하늘교'라고 불리는 하얀 다리에 도달했다. 북악산과 북한산을 연결하는 통로이다.

사용자 삽입 이미지

아래로는 자동차 도로가 있다. 이 등산로 위에서 도로 쪽으로 오르내리는 통로는 일단은 주변에 보이지 않았다.
여기서도 차도를 따라 팔각정으로 가는 길이 있었다. 하지만 본인은 그쪽으로 가지 않고 북한산, 국민대 방면으로 진행하여 북악산을 하산했다.
개인적으로 북한산 팔각정은 교회 친구들과 함께 차를 끌고 가 본 적이 있다. 하지만 밤이어서 전망이 제대로 보이지 않으며, 사람들로 바글바글하고 정신없기까지 한 때 간 것이어서 딱히 등산 기분은 못 냈다.

가는 길목에는 뭔가 호국 불교 냄새가 물씬 풍기는 '여래사'라는 절이 있었다. 그리고 한참을 더 내려간 끝에..

사용자 삽입 이미지

지난번엔 와룡공원 쪽으로 하산하면서 성균관 대학교를 봤는데, 이번에는 더 외곽에 있는 국민 대학교를 처음으로 구경했다. 오오!
국민 대학교 건물은 가끔 내부순환로를 차로 달릴 일이 있을 때 가끔 보긴 했다. 내부순환로는 '정릉 터널'을 통해 북악산을 횡단하는데, 그 옆엔 '북악 터널'이라는 도로와 터널이 더 있었다.

그리고 여기는 북악산과 북한산이 만나는 곳이다 보니 북한산 등산로도 근처에 있었다. 노래에 메들리가 있는 것처럼 시간과 체력이 허락하는 사람이라면 이런 식으로 하루 종일 산을 몇 콤보로 오를 수도 있겠다. 하지만 본인은 거기까지는 차마 하지 않고 돌아왔다.

앞으로 등산 이야기가 좀 더 올라올 듯하다. 이러다 내 블로그가 프로그래밍 블로그에서 여행· 등산 블로그로 성향이 바뀌는 건 아닌가 모르겠네..;;
북악산과 북한산 사이에 저런 길이 있는데, 사실은 서울 완전 북쪽 끝에 북한산과 도봉산의 경계엔 '우이령'이라는 고갯길이 있다. 거기도 안보상의 이유 때문에 거의 40년 동안 민간인 출입이 금지돼 있다가 2010년 무렵에 금지가 풀렸고, 지금도 신분증 지참에 "예약 + 하루 통행 인원수 제한"까지.. 북악산보다도 더 까다로운 제약이 남아 있다. 조만간 거기도 가 볼 생각이다.

Posted by 사무엘

2016/06/05 08:31 2016/06/05 08:31
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1234

1. C++의 new/delete 연산자

C++의 new와 delete 연산자에 대해서는 먼 옛날에 한번 글을 쓴 적이 있고,  연산자 오버로딩에 대해서 글을 쓸 때도 다룬 적이 있다.
new/delete 연산자는 메모리를 할당하고 해제하는 부분만 따로 떼어내서 operator new / opertor delete라는 함수를 내부적으로 호출하는 형태이며, 이건 클래스별로 오버로딩도 가능하다. 그리고 객체 하나에 대해서만 소멸자를 호출하는 일명 스칼라 new/delete와, 메모리 내부에 객체가 몇 개 있는지를 따로 관리하는 벡터 new[]/delete[]가 구분되어 있다는 점이 흥미롭다.

new는 메모리 할당이 실패할 경우 한 1990년대까지는 NULL을 되돌렸지만 요즘은 예외를 되돌리는 게 malloc과는 다른 점이라고 한다. 하긴, 요즘 세상에 메모리 할당 결과를 무슨 파일 열기처럼 일일이 NULL 체크하는 건 굉장히 남사스럽긴 하다.

1980년대의 완전 초창기, 한 터보 C++ 1.0 시절에는 벡터 delete의 경우, 원소 개수를 수동으로 써 주기까지 해야 했다고 한다. pt = new X[3] 다음에는 delete[3] pt처럼. 안 그래도 가비지 컬렉터도 없는데, 이건 너무 불편한 정도를 넘어 객체지향 언어의 기본적인 본분(?)조차 안 갖춰진 막장 행태로 여겨진지라 곧 시정됐다. 객체의 개수 정도는 언어 차원에서 메모리 내부에다 자동으로 관리하도록 말이다.

그런데 스칼라이건 벡터이건 메모리를 n바이트 할당하거나 해제하는 동작 자체는 서로 아무 차이가 없는데 operator new/delete와 operator new[]/delete[]가 따로 존재하는 이유는 난 여전히 잘 모르겠다.

new char[100]을 하면 operator new(100)이 호출되고, 생성자와 소멸자가 있는 new TwentyFour_byte_object[4]를 호출하면 x86 기준으로 24*4+4인 operator new[](100)이 호출된다.
operator new[]라고 해서 딱히 내가 할당해 준 메모리에 저장되는 객체의 개수나 크기를 알 수 있는 것도 아니다. 단지, new[]의 경우 내가 되돌려 준 메모리 바로 그 지점에 객체가 바로 저장되지는 않는다는 차이가 존재할 뿐이다. 맨 앞에는 오브젝트의 개수 4가 저장되기 때문.

즉 다시 말해 벡터 new[]는 operator new[]가 되돌린 포인터 값과, new operator[]를 호출한 호스트 쪽에서 받는 포인터 값에 미묘하게 차이가 생기며 서로 일치하지 않게 된다. 마치 다중 상속으로 인해서 this 포인터가 보정되는 것처럼 말이다.
그래도 스칼라/벡터 처리는 operator new/delete가 전혀 신경 쓸 필요가 없는 영역이며, 여전히 new/delete operator가 자동으로 하는 일일 뿐인데 그것 때문에 메모리 할당 계층 자체가 둘로 구분되어야 할 필요가 있는지는 여전히 개인적으로 의문이다.

그리고 하나 더.
operator new/delete는 오버로딩이 가능하다고 아까 얘기했었다.
global scope에서 오버로딩을 해서 오브젝트 전체의 메모리 할당 방식을 바꿀 수 있으며, new의 경우 추가적인 인자를 집어넣어서 placement new 같은 걸 만들 수도 있다. "메모리 할당에 대한 답은 정해져 있으니 너는 저 자리에다가 생성자만 호출해 주면 된다"처럼.. (근데 new와는 달리 delete는 왜 그게 가능하지 않은지 모르겠다만..)

global scope의 경우, Visual C++에서는 operator new/delete 하나만 오버로딩을 해도 new[], delete[] 같은 배열 선언까지도 메모리 할당과 해제는 저 new/delete 함수로 자동으로 넘어간다. 물론 new[]/delete[]까지 오버로딩을 하면 스칼라와 벡터의 메모리 요청 방식이 제각기 따로 놀게 된다.

그러나 클래스는 operator new/delete 하나만 오버로딩을 하면 그 개체의 배열에 대한 할당과 해제는 그 함수로 가지 않고 global 차원의 operator new[]/delete[]로 넘어간다.
이것도 표준에 규정된 동작 방식인지는 잘 모르겠다. 결정적으로 xcode에서는 global도 클래스일 때와 동일하게 동작하여 스칼라와 벡터 사이의 유도리가 동작하지 않았다.
메모리 할당이라는 기본적인 주제를 갖고도 C++은 내부 사연이 무척 복잡하다는 걸 알 수 있다.

2. trigraph

아래와 같은 코드는 보기와는 달리 컴파일되는 올바른 C/C++ 코드이다. 그리고 Foo()를 호출하면 화면에는 What| 이라는 문자열이 찍힌다.

void Foo()
??<
    printf( "What??!\n" );
??>

그 이유는 C/C++엔 trigraph라는 문자열 치환 규칙이 '일단' 표준으로 정의돼 있기 때문이다.
아스키 코드에서 Z 뒤에 나오는 4개의 글자 [ \ ] ^ 와, z 뒤에 나오는 4개의 글자 { | } ~, 그리고 #까지 총 9개의 글자는 ?? 로 시작하는 탈출문자를 통해 등가로 입력 가능하다.
이런 치환은 전처리기 차원에서 수행되는데, #define 매크로 치환과는 달리 일반 영역과 문자열 리터럴 안을 가리지 않고 무조건 수행된다. 그래서 문자열 리터럴 안에서 연속된 ?? 자체를 표현하려면 일부 ?를 \? 로 구분해 줘야 한다.

이런 게 들어간 이유엔 물론 까마득히 먼 역사적인 배경이 있다. 천공 카드던가 뭐던가, 저 문자를 한 글자 형태로 입력할 수 없는 프로그래밍 환경에서도 C언어를 지원하게 하기 위해서이다. 1950~70년대 컴퓨팅 환경을 겪은 적이 없는 본인 같은 사람으로서는 전혀 이해할 수 없는 환경이지만 말이다.
C(와 이거 호환성을 계승한 C++도)는 그만치 오래 된 옛날 레거시 언어인 것이다. 그리고 C는 그렇게도 암호 같은 기호 연산자들을 많이 제공하는 언어이지만 $ @처럼 전혀 사용하지 않는 문자도 여전히 있다.

오늘날 PC 기반 프로그래밍 환경에서 저런 trigraph는 전혀 필요 없어진 지 오래다. 그래서 Visual C++도 2008까지는 저걸 기본 지원했지만 2010부터는 '기본 지원하지는 않게' 바뀌었다. 이제 저 코드는 기본 옵션으로는 컴파일되지 않는다. /Zc:trigraphs 옵션을 추가로 지정해 줘야 한다.

C/C++ 코드를 가볍게 구문 분석해서 함수 블록 영역이나 변수 같은 걸 표시하는 IDE 엔진들은 대부분이 trigraph까지 고려해서 만들어지지는 않았다. 그러니 trigraph는 IDE가 사용하는 가벼운 컴파일러들을 교란시키고 혼동시킨다. 한편으로 이 테크닉은 소스 코드를 의도적으로 괴상하게 바꾸는 게 목표인 IOCCC 같은 데서는 오늘날까지 유용하게 쓰인다. 함수 선언을 void foo(a) int a; { } 이렇게 하는 게 옛날 원래의 K&R 스타일이었다고 하는데 그것만큼이나 trigraph도 옛날 유물이다.

차기 C/C++ 표준에서는 trigraph를 제거하자는 의견이 표준 위원회에서 제안되었다. 그런데 여기에 IBM이 적극적인 반대표를 던진 일화는 유명하다. 도대체 얼마나 케케묵은 옛날 코드들에 파묻혀 있으면 '지금은 곤란하다' 상태인지 궁금할 따름이다. 하지만 IBM 혼자서 대세를 거스르는 게 가능할지 역시 의문이다.

3. Visual C++ 2015의 CRT 리팩터링

도스 내지 16비트 시절에는 C/C++ 라이브러리를 DLL로 공유한다는 개념이 딱히 없었던 것 같다. 다음과 같은 이유에서다.

  • 도스의 경우, 근본적으로 DLL이나 덧실행 같은 걸 쉽게 운용할 수 있는 운영체제가 아니며,
  • 메모리 모델이 small부터 large, huge까지 다양하게 존재해서 코드를 한 기준으로 맞추기가 힘들고,
  • 옛날에는 C/C++ 라이브러리가 딱히 공유해야 할 정도로 덩치가 크지 않았음.
  • 예전 글에서 살펴 보았듯이, 16비트 Windows 시절엔 DLL이 각 프로세스마다 자신만의 고유한 기억장소를 갖고 있지도 않았음. 그러니 범시스템적인 DLL을 만드는 게 더욱 까다롭고 열악했다.

모든 프로세스들이 단일 주소 공간에서 돌아가긴 했겠지만, small/tiny 같은 64K 나부랭이 메모리 모델이 아닌 이상, sprintf 하나 호출을 위해서 코드/세그먼트 레지스터 값을 DLL 문맥으로 재설정을 해야 했을 것이고 그게 일종의 썽킹 오버헤드와 별 차이가 없었지 싶다. 마치 콜백 함수를 호출할 때처럼 말이다. 이러느니 그냥 해당 코드를 static link 하고 만다.

그 반면 32비트 운영체제인 Windows NT는 처음부터 CRT DLL을 갖춘 상태로 설계되었고, 그 개념이 Visual C++을 거쳐 Windows 9x에도 전래되었다. 1세대는 crtdll, msvcrt10/20/40이 난립하던 시절이고 2세대는 Visual C++ 4.2부터 6까지 사용되던 msvcrt, 그리고 3세대는 닷넷 이후로 msvcr71부터 msvcr120 (VC++ 2013)이다. 2005와 2008 (msvcr80과 90)은 잠시 매니페스트를 사용하기도 했으나 2010부터는 그 정책이 철회됐다.

그런데 매니페스트를 안 쓰다 보니 Visual C++의 버전이 올라갈 때마다 운영체제의 시스템 디렉터리는 온갖 msvcr??? DLL로 범람하는 폐단이 생겼고, 이에 대한 조치를 취해야 했다. C/C++ 라이브러리라는 게 생각보다 자주 바뀌면서 내부 바이너리 차원에서의 호환성이 종종 깨지곤 했다. 이런 변화는 함수 이름만 달랑 내놓으면 되는 C보다는 C++ 라이브러리 쪽이 더 심했다.

그 결과 Visual C++ 2015와 Windows 10에서는 앞으로 변할 일이 없는 인터페이스 부분과, 내부 바이너리 계층을 따로 분리하여 CRT DLL을 전면 리팩터링을 했다. 본인은 아직 이들 운영체제와 개발툴을 써 보지 않아서 자세한 건 모르겠는데 더 구체적인 내역을 살펴봐야겠다.

사실 C++ 라이브러리는 대부분의 인터페이스가 템플릿 형태이기 때문에 코드들이 전부 해당 바이너리에 static 링크된다. 하지만 그래도 모든 코드가 static인 건 아니다. 메모리 할당 내지 특정 타입에 대한 템플릿 specialization은 여전히 DLL 링크가 가능하다.
C++ 라이브러리가 어떤 식으로 DLL 링크되는지는 마치 함수 타입 decoration 방식만큼이나 그야말로 표준이 없고 구현체마다 제각각인 춘추전국시대의 영역이지 싶다.

4. Windows의 고해상도 DPI 관련 API

요즘이야 컴퓨터 화면의 해상도가 PC와 모바일을 가리지 않고 워낙 높아져서 프로그램의 UI 요소나 각종 아이콘, 그래픽도 크기 조절에 유연하게 대처 가능하게 만드는 게 필수 조건이 됐다. 폰트의 경우 저해상도에 최적화된 힌팅이 필요 없어질 거라는 전망까지 나온 지 오래다.
그러나 태초에 컴퓨터, 특히 IBM 호환 PC라는 건 텍스트 모드만 있다가 그래픽 모드라는 게 나중에 추가됐다. 그것도 그래픽 모드는 320*200이라는 막장급의 낮은 해상도에 4색짜리인 CGA에서 첫 시작을 했다.

시작은 심히 미약했다. 이런 저해상도 저성능 컴퓨터에서는 쑤제 도트 노가다로 최적화된 그래픽이나 비트맵 글꼴이 속도와 메모리 면에서 모두 우월했기 때문에 그게 세상을 평정했다.
그러나 컴퓨터 화면이 커지고 해상도가 크게 올라가면서 단순히 픽셀보다 더 고차원적인 단위를 도입할 필요가 생겼다. 물론 예나 지금이나 메뉴와 아이콘, 프로그램 제목 표시줄의 글자 크기는 제어판에서 간단히 고칠 수 있었지만 영향을 받는 건 오로지 그것뿐. 대화상자 같은 다른 요소들의 크기는 변하지 않았다.

그 고차원적인 단위를 일명 시스템 DPI라고 부른다.
평소에야 이 단위는 언제나 관례적으로 100%로 맞춰져 있었으며, 이게 125나 150% 같은 큰 값으로 맞춰져 있으면 응용 프로그램은 창이나 글자의 크기도 원칙적으로는 이에 비례해서 키워서 출력해야 한다.

대화상자는 픽셀이 아니라 내부적으로 DLU라는 추상적인 단위를 사용해서 컨트롤들을 배치하며 이 단위는 시스템 DPI를 이미 반영하여 산정된다. 하지만 CreateWindowEx를 써서 픽셀 단위로 컨트롤을 수동으로 생성하는 코드들이 이런 시스템 DPI를 고려하지 않고 동작한다면 프로그램의 외형이 많이 이상하게 찍히게 된다.

여기까지가 Windows 95부터 8까지 오랫동안 지속된 프로그래밍 트렌드이다. 시스템 DPI는 단순히 메뉴와 아이콘의 글자 크기와는 달리 운영체제 전체에 끼치는 여파가 매우 크다. 이건 값을 변경하려면 운영체제를 재시작하거나 최소한 모든 프로그램을 종료하고 현 사용자가 로그인을 다시 해야 했다.

시스템 DPI라는 개념 자체에 대한 대비가 안 된 프로그램도 널렸는데, 응용 프로그램들이 시스템 DPI의 실시간 변화에까지 대비하고 있기를 바라는 건 좀 무리였기 때문이다. 시스템 메트릭이 싹 바뀌기 때문에 이미 만들어져 있는 윈도우들이 다 재배치돼야 할 것이고 후유증이 너무 크다.

그런데 지난 Windows 8.1은 이 시스템 DPI에 대해서 또 어마어마한 손질을 가했다.
간단히 결론부터 말하자면 사용자가 재부팅 없이도 DPI를 막 변경할 수 있게 했다. 실행 중에 DPI가 변경되면 WM_DPICHANGED라는 새로운 메시지가 온다. 그리고 응용 프로그램은 자신이 실시간 DPI 변경에 대응 가능한지 여부를 운영체제에 별도의 API 내지 매니페스트 정보를 통해 지정 가능하게 했다.

DPI 변경에 대응 가능하지 않은 레거시 프로그램들은 시스템 DPI가 바뀌었는지 알지도 못하고 virtualize된 샌드박스 속에서 지낸다. DPI가 150%로 바뀌면서 사용자의 화면에 보이는 창 크기가 100에서 150으로 늘었지만, 응용 프로그램은 여전히 자신의 최대 크기가 100인줄로 안다. 그래서 100*100 크기로 그림을 찍으면 그건 운영체제에 의해 1.5배 비트맵 차원에서 크게 확대되어 출력된다.

그 프로그램은 처음부터 시스템이 150% DPI인 것을 알았으면 그에 맞춰 실행되었을 수도 있다. 그러나 실행 중의 DPI 변경까지 예상하지는 못하며, 그런 API가 도입되기 전에 개발되었기 때문에 운영체제가 그래픽 카드의 성능을 활용하여 그런 보정을 해 주는 것이다.
물론 이렇게 확대된 결과는 계단 현상만 뿌옇게 보정된 채 출력되기 때문에 화질이 좋지 못하다. 응용 프로그램이 고해상도 DPI 변화를 인식하여 직접 150*150으로 최적화된 그림을 다시 그리는 게 바람직하다.

그리고 시스템 DPI는 제어판 설정의 변경을 통해서만 바뀌는 게 아니다.
Windows 8.1부터는 모니터별로 시스템 DPI를 다르게 지정할 수 있다. 그래서 100%(96dpi)짜리 모니터에서 돌아가고 있던 프로그램 창을 125%(120dpi)짜리 커다란 모니터로 옮기면 거기서는 동일 프로그램이 그 DPI에 맞춰서 동작해야 한다. 물론 DPI가 바뀌었다는 메시지는 운영체제가 보내 준다.

이렇듯, 응용 프로그램은 처음에는 (1) 고해상도 DPI를 인식할 것만이 요구되었다가 나중에는 (2) 실행 중에 DPI가 변경되는 것에도 대비가 되어야 하는 것으로 요구 조건이 추가되었다.
옛날에는 시스템 전체의 화면 해상도나 색상수를 재부팅 없이 실시간으로 바꾸는 것도 보통일이 아니었는데 이제는 DPI의 변경도 그 범주에 속하게 되었다.

재부팅이 필요하다는 이유 때문에 그런지 Windows Vista는 전무후무하게 DPI의 변경에 마치 시스템의 시각 변경처럼 '관리자 권한' 딱지가 붙어 있기도 했는데 이것도 참 격세지감이다.

Posted by 사무엘

2016/06/02 08:32 2016/06/02 08:32
, , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1233

등산 답사기: 북악산 -- 上

한동안 너무 바빴던 나머지, 남한산성 이후 다음 등산 때까지 블로그에 다른 글을 올릴 시간이 거의 없었다.
그래도 이번에도 아주 흥미진진한 산행을 다녀왔다. 이번에 간 곳은 청와대 뒷산인 북악산이었다.

북악산은 자명한 이유로 인해, 서울에 있는 산들 중 아마 유일하게 신분증 까고 번호표 목걸이를 해야 입산 가능한 산이지 싶다. 인왕산은 사진 찍는 걸 감시하는 초소만 있던데 북악산은 그에 덧붙여서 저런 절차도 필요하다.

인왕산과 북악산은 빨간 날의(일요일 + 공휴일) 다음 날은 입산 금지이다. 감시 초소 직원들도 한 주에 하루 정도는 출근 안 하고 쉬어야 할 테니까. 북악산은 거기에다 아침 9시부터 오후 3시까지 입산 가능 시각도 정해져 있다. 현재 북악산에 있는 사람들의 신원이 모두 파악돼 있어야 하며, 해가 떨어진 뒤에는 산 속에 아무도 없게 마치 민통선에 준하는 수준의 관리를 하는 듯하다.

인왕산은 감시 초소는 있지만 저 정도까지 등산객들을 일일이 파악하고 통제하지는 않는다. 그도 그럴 것이, 해가 지고 나면 어차피 청와대 쪽으로 사진 찍는 것 감시는 할 필요가 없어지니 말이다.

사실, 청와대 근처에 있는 산들에 우리가 이 정도라도 접근하여 등산을 할 수 있게 된 건 생각보다 오래 되지 않았다.
21세기 이전엔 그런 거 없었다. 1968년 1월에 북한 무장공비가 청와대 바로 근처까지 쳐들어왔던 전대미문의 사건의 여파로 인해, 북악산과 그 일대의 산들은 민간인 접근 절대엄금으로 봉인돼 버렸기 때문이다.

서울 지리를 잘 모르던 시절에는 난 북한산과 북악산의 차이도 잘 몰랐다. 북악산은 북한산보다 훨씬 서울 중심부 안에 있다. 본인은 북악산을 오르기 위해 무작정 '창의문'으로 향했다. 예전에 인왕산을 올랐다가 돌아오면서 버스 차창 밖으로 스쳐 지나쳤던 곳이다.

사용자 삽입 이미지

창의문의 바로 옆에 있는 최 규식 경무관의 동상을 가까이에서 다시 접했다.

그는 용감한 정의인으로 종로 경찰서장에 재직 중, 1968년 1월 21일 청와대를 습격하여 오는 공산 유격대와 싸우다가 장렬하게도 전사하므로 정부는 경무관의 계급과 태극 무공 훈장을 내렸다.
비록 한때의 비극 속에서 육신의 생명은 짧았으나 의를 위하는 그의 정신은 영원히 살아 남으리라.
1969년 1월 21일
조각 및 제작: 이 일영
글: 이 은상
글씨: 김 충현


알고 보니 저 동상은 고인의 순직 1주기를 기념해서 만들어졌다.
태극 무공 훈장은 우리나라의 무공 훈장 중 최상위 등급으로, 이 정도 훈장은 6· 25 전쟁에서 나라를 구한 급의 영웅이 아니면 살아서는 못 받는다고 생각하면 된다. 또한 군인이 아닌 경찰에게 이런 훈장이 추서된 사례도 현재까지 저분만이 유일하다.
바로 몇 년 전(1965), 강 재구 소령이 수류탄 투척 훈련 중에 부하가 실수로 떨어뜨린 수류탄을 몸으로 감싸고 산화하여 동일한 태극 무공 훈장이 추서됐다는 것도 기억해 두면 좋다.

사용자 삽입 이미지

북악산을 오르면서 작년에 갔던 인왕산과 부암동 쪽을 본 모습이다. 인왕산과 북악산은 모두 산 속에 성곽과 감시 초소가 있고, 아예 군부대도 있다.

사용자 삽입 이미지

산을 오르는 길은 성곽을 따라 대략 이런 형태였다. 이 사진에는 보이지 않지만 성벽 너머로는 철조망이 둘러져 있다.
계단을 따라 산을 오를 수 있었는데, 경사가 꽤 가파른 편이었다.

사용자 삽입 이미지

북악산 주변은 경치가 이러했다.
우리가 평소에 서울 시내 쪽에서 바라보는 북악산의 전면은 바위가 참 인상적이다. 하지만 지금 여기는 이미 북악산의 뒤쪽으로 가는 것이고, 산을 타면서 딱히 그런 바위를 볼 일은 별로 없었다. 앞쪽은 영구 봉인돼 있으니 말이다.

사용자 삽입 이미지

저기가 바로 북악산과 북한산 사이에 조성된 마을인 평창동이다. 각종 고급 카페와 레스토랑, 그리고 부자· 유명인사들이 사는 단독 주택들이 가득하여 마치 서울 안의 딴 세상 같다. 교통이 왕창 불편하겠지만, 다들 차를 끌고 다닐 테니 별 문제가 되지 않을 것이다.

사용자 삽입 이미지사용자 삽입 이미지

북악산의 정상은 생각보다 금방 도달할 수 있었다. '북악산'이 한때는 '백악산'이라고도 불렸다. 창의문에서 북악산 정상까지는 지도상의 직선 거리가 짧은 만큼 경사가 굉장히 급하다.

사용자 삽입 이미지

1· 21 사태 때 북한군과의 교전 중에 총알이 박힌 소나무라고 한다. 그런데 일부러 저렇게 표시를 해 놓은 게 좀 징그럽게 보인다.

사용자 삽입 이미지

성곽을 따라 가다가 '청운대'라고 불리는 다른 봉우리에도 도달했다.

사용자 삽입 이미지사용자 삽입 이미지

사용자 삽입 이미지사용자 삽입 이미지

그 뒤 걷는 길은 성곽 안에 있기도 하다가 성 밖으로 나가기도 했다. 철조망이 저렇게 있으니 무슨 GOP 철책처럼 보였다.
이거 사진이 도대체 어떻게 찍혔는지 광량 조절이 이상하게 됐다. -_-;;;

사용자 삽입 이미지

정상을 도착한 뒤에 지금까지 걸어 온 길이 저렇다.

사용자 삽입 이미지

그리고 '숙정문'이라고 불리는 대문에 도착했다. 나름 사대문 중 하나이며 '북대문'에 해당하는 대문이다. 얼마 전에 남한산성을 본 적이 있다 보니 모습이 친근했다.
본인은 조선 시대에 있었던 서울 성곽과 '대문'에 대해서 지금까지 진지하게 생각해 본 적이 없었는데 이제야 좀 개념이 생겼다.
남대문은 서울 역 근처에 있는 그 숭례문이고, 동대문은 국도 6호선상에 있는 그 흥인지문이다.

서대문(돈의문)은 서울 지하철 5호선 서대문 역 근처에 있긴 했지만 일제 강점기 때 헐려서 현재 전해지지 않는다. 옛날엔 노면 전차가 이 문을 통과했는데, 전차 노선을 복선화하려다 보니 이 성곽이 걸림돌이 됐다고.. 얘는 사대문 중 유일하게 복원이 못 되고 2016년 현재 존재하지 않는 문이다.

마지막으로 북대문이 바로 저 숙정문이지만, 높은 산 속에 있는 관계로 다른 문들만치 유명하거나 사람들이 막 드나들지는 않았다고 한다. 쉽게 말해 존재감이 별로 없다. 남대문하고는 접근성이 가히 넘사벽급으로 차이가 나지 않은가..;;

사용자 삽입 이미지

난 처음에는 창의문에서 숙정문, 와룡 공원까지 북악산을 성벽을 따라 수평으로 횡단하는 코스를 생각하고 왔다.
차를 이용해서 북악산을 오르면 아까 같은 정상으로는 못 가지만, 그래도 성벽 둘레길보다 높은 곳으로 가서 '팔각정'이라고 불리는 정자에 도달할 수 있다.

그러면 도보 등산로와 자동차 길은 서로 완전히 분리되어 있느냐 하면 그렇지 않다.
창의문과 와룡 공원 사이에, 청와대와 더 가까운 지점에 '삼청 공원'이 있고 거기에도 북악산 숙정문을 경유하여 팔각정까지 가는 등산로가 있다. 이건 북악산을 횡단이 아니라 종단하는 코스인 셈이다.

북악산에는 일명 '김 신조 루트'도 있고 북한산 형제봉과 연결되는 '하늘다리'도 있는데 거기로 가려면 숙정문의 밖으로 나가서 서울 성곽보다 훨씬 더 북쪽으로 계속 올라가야 한다.
위의 사진은 그 종단 등산로를 위에서 내려다보면서 찍은 것이다. 이 등산로는 나중에 북악산에 다시 와서 개척하게 됐다.

사용자 삽입 이미지

건물이 이 정도로 보이기 시작하니 이번 등산도 거의 끝이 난 것 같다. 옛날에는 저기도 다 산이었을 텐데 산중턱까지 다 개발되고 도로가 생기고 길이 닦인 것이다.

정작 와룡 공원에는 가 보니 별 거 없었다. 공 병우 박사가 운영하던 한글 문화원의 소재지가 와룡동이었던 걸로 기억한다.
여기서는 마을 버스를 타고 지하철역으로 가면서 지금까지 말로만 듣던 성균관 대학교 서울 캠퍼스, 감사원, 통일부 같은 건물들을 구경할 수 있었다. 등산을 하면서 서울에 이런 곳도 있다는 걸 알아 가는 건 즐거운 일이다.

안국 역과 혜화 역이 지리상으로는 생각보다 굉장히 가까이 있다는 걸 처음 알았다.

Posted by 사무엘

2016/05/30 08:26 2016/05/30 08:26
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1232

« Previous : 1 : ... 117 : 118 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : ... 230 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Site Stats

Total hits:
4001571
Today:
1747
Yesterday:
6203