우리나라 가요계는 지금 유례 없는 불황을 맞이 하고 있다고 한다. 그리고 음반업계에서는 모두 불법 MP3 유통이 원인이라고 한다. 완전히 틀린 이야기는 아닌것 같다. 그렇다고 언제까지 MP3 탓만 할것인가?

요새 CD 플레이어 들고 다니면서 음악 듣고 다니는 사람이 얼마나 될까? MP3 플레이어의 등장으로 CD 플레이어는 어느새 종적을 거의 감추다 시피 했다.

최근 몇년 사이에 음원을 정식으로 살 수 있는 루트가 생겼지만, 2~3년 전만해도 MP3를 구매할 수 있는 루트는 없었던것 같다. 그래서말인데, 2000년대 초반부터 MP3 불법 유통에 반기들 들던 가수들과 음반없계 사람들 중에 정말로 하늘을 우러러 한점 부끄럼 없이 불법 MP3 한 곡이라도 안쓴 사람이 있을까?

이번 post를 통해 나는 MP3를 불법으로 유통 또는 사용하는 사람들의 잘잘못을 따지기 이전에 앞으로 음반 업계가 MP3를 취급하지 않고서는 성장하지 않을 수 없음을 강조하고 싶다. 물론 이 점에 대해서 모르고 있는 사람은 없다. 하지만 음반업계에서 그토록 음원 장사를 기피하고 있는 이유는 무엇일까? 또, 사용자들이 음원 구매를 기피하고 있는 이유는 무엇일까?

1. 먼저 음반업계에서 음원 장사를 기피하고 있는 이유부터 살펴 보자. 그것은 아마도 음원의 불법 유통을 더욱 부축이지 않을까 하는 걱정 때문일 것이다. 하지만 예전에 CD나 카세트 테이프로 음반장사를 하던 시절에는 불법 유통이 없었던가?

미국에는 빌보드 차트가 있다면 우리나라에는 길보드 차트가 있었다. 길보드라는 말은 길거리에서 불법으로 유통되던 Mixed Tape에서 비롯된 말이다. 이처럼 MP3가 있기도 훨씬 전부터 불법 유통은 성행했다. 그래도 불법 유통되던 음반의 양보다는 정품 음반이 유통되는 양이 훨씬 클 수 밖에 없었던 이유는 딱 한가지라고 생각한다. 정품으로써의 소장 가치, 그리고 음원과 함께 제공되던 부수적인 콘텐츠... 콘텐츠라고 하기는 좀 그렇지만 정품 음반을 사면 항상 수록곡에 대한 정보와 가수의 사진들이 음반과 함께 제공되었다. 바로 이 요소가 정품 음반이 불법 음반과 차별되는 가장 큰 요소라고 할 수 있을것 같다.

Apple의 Itunes를 기반으로 한 Music Store를 살펴보면 음원을 구입하면 그 음원이 속해 있는 앨범 자켓 이미지와 함께 가수에 대한 정보까지 다운로드 되어 ipod에서 음원 재생시에 구매한 CD를 사서 보는듯한 그런 인터페이스를 제공하게 된다. 당신은 다운로드 받은 MP3들의 파일이름 또는 Tag 정리를 위해 얼마나 많은 시간을 소비합니까? 아직 Apple Music Store에서는 우리나라 가요를 취급하지 않는 관계로 사용해보지는 않았지만, 그곳에서 구매한 모든 음원들의 파일이름이나 tag정보들은 잘 정리되어 굳이 편집할 필요가 없을듯 하다.

2. 그렇다면 소비자들이 음원 구입을 꺼리는 이유는 무엇일까? 대부분의 사람들은 아직까지는 공짜로 구할 수 있기 때문이라고 한다. 하지만 최근 우리나라에서도 지적 재산권에 대한 인식이 많이 생겼으며, 합리적인 가격에 음원을 구할 수 있으면 충분히 돈을 내고 음원을 구입할 사람도 많이 있으리라 믿는다. 나 역시 그런 사람중에 하나이고, 시도 해봤다. 그러나 내가 음원장사를 하는 업체에 가지고 있는 불만은 다음과 같으며, 그 이유들 때문에 아직까지는 합법적인 경로를 통해 음원을 구매하는것을 꺼리고 있다. (벅스 뮤직에서 구매한 경험이 음원 구입의 유일한 경험이지만 다른 음원 판매 업체도 별반 다르지 않으리라 생각된다)

- 첫번째는, 달랑 음원만 판다는 사실이다. 예전에 정품 음반 구입의 가장 큰 merit중에 하나는 그와 함께 딸려오는 여러가지 부수물이다. 위에서도 언급했지만 가수의 사진들, 그리고 가사집... 그것은 나에게 정품 음반을 구입하는 이유중에 상당히 큰 비중을 차지하지만 음원 판매업체에서는 그런 콘텐츠를 빼놓고 음원만 판매하고 있다.

- 두번째는, 바로 하나의 MP3 플레이어에서만 재생할 수 있다는점. 복사해서 다른 매체에서 저장해서 들을 수 없다는점. 만약 MP3 플레이어 기변을 하게 되면 어떻게 해야 하나??? 뭐 그것에 대한 대책에 있을지도 모르겠지만, 일단 구매한 음원에 대한 자유로운 사용이 제한된다는 사실 자체가 나로써는 상당히 불쾌했다. 컴퓨터와 MP3 플레이어에 동시에 저장할 수 없다는점, 그게 가장 마음에 안들었다.

위와 같은 두 이유 때문에 나는 다시 어둠의 경로로 돌아서려다가 소리바다에서 월 4000원을 내고 음원을 다운 받기 시작했다. 그런데 필터링 되어사 다운 받아지지 않는 곡들도 상당수 있었으며, 음반업계의 반발로 서비스 자체가 폐쇄된다는 소식에 좌절할 수 밖에 없었다.


아무튼... 음반 업계... 살아남으려면 MP3 음원 장사부터 새롭게 개념을 달리해서 시작해야 할것 같다는 생각이 든다. 소비자는 적절한 가격을 주고 음원을 구매해야 겠다는 의식을 가져야 하겠고, 판매자는 소비자 탓만 하지 말고 스스로의 변신을 꾀하여 더 좋은 콘텐츠를 합리적인 가격에 판매할 수 있는 방안을 모색해야 할것 같다. 제발... 음반 업계, MP3 플레이어 제조업체끼리 협력해서 좋은 서비스를 제공하는 날이 왔으면 좋겠다는 생각을 해본다...
Posted by Dansoonie
행복 영화


임수정을 싫어하지는 않았지만 살이 너무 없어서 나에겐 그다지 관심이 대상이 못되어왔었다. 하지만 이 영화를 통해 임수정의 매력을 다시 찾게 되었다...

명수(황정민역)는 술을 과다하게 마시는 방탕한 생활을 하다가 은희(임수정역)가 머무는 한적한 시골의 rehab facility에 들어가게 된다. 무엇때문인지는 몰라도 은희는 명수와 사랑에 빠지게 된다. 그리고 어느날 은희는 명수에게 같이 살것을 제안한다... 자기가 명수가 회복하도록 도와줄테니까 같이 살자고... 그러자 명수가 잠시 고민에 빠진다. 그러자 은희는 결혼하자는 말이 절대 아니고 나중에 자기를 떠나겠다면 미련없이 떠나보내주겠다는 식으로 명수에게 말한다.

결국 명수는 고민끝에 같이 살기로 결심하고 은희의 정성스러운 보살핌 덕분에 완쾌하게 된다. 그러자 한적한 시골 생활의 단조로움을 뒤로한채 다시 서울에 있는 옛 애인에게 돌아간다. 그러자 은희는 명수에게 어떻게 자기한테 그럴 수 있냐고 그러면서 원망한다. 그리고 자기가 명수의 옛 애인보다 더 잘해줄테니까 제발 같이 있어달라고 애원한다...

하지만 결국 명수는 떠난다...

포스터에 있는 "변치 않겠다는 새빨간 거짓말"이라는말... 사실 명수가 은희에게 변치 않겠다고 말한적은 없었던것 같다... 그렇다고 해서 명수의 행동이 쉽게 납득이 가지는 않는다... 아무리 은희가 나중에 미련없이 떠나보내주겠다고 했어도, 사람 마음이 그렇지 않은가보다... 나 역시 그랬다... 말은 그렇게 했어도 사실은 내가 잘해주면 계속 곁에 있어줄거라는 기대를 갖기 때문인것 같다...

아~ 임수정... 그와 같은 여자 있으면 절대 충성 하리라...

절대 극장에서 볼만한 영화는 아니고, 남자 셋이서 볼만한 영화는 더더군다나 아니다...
여자친구와 영화를 보면서 그녀에게 은희와 같은 마음으로 사랑해달라고 말하고, 그녀가 그렇게 해주는한 절대 변치 않겠다고 말해주고 스스로 다짐하라...
그리고 자기 자신도 그대로 그 사랑을 돌려주겠노라 말하라...
그러면 서로간의 사랑을 다시한번 확인시키고 확고히 할 수 있을것이다...

별점: ★★★★★★★★☆☆ (8/10)
명대사: 나는 행복해지고 싶어, 그러니까 나가줘

'Reviews > Movies' 카테고리의 다른 글

[영화평] What Happens in Vegas  (0) 2008.06.09
[영화평] Indiana Jones - Crystal Skull  (0) 2008.06.09
[영화평] Speed Racer  (0) 2008.06.09
[영화평] The Bucket List  (0) 2008.05.06
[영화평] Forbidden Kingdom  (0) 2008.05.05
[영화평] Iron Man  (0) 2008.05.05
[영화평] 킬 위드미 (Untraceable)  (0) 2008.04.20
[영화평] Taken  (2) 2008.04.13
[영화평] Awake (노스포)  (0) 2008.04.09
[영화평] Beowulf  (2) 2007.11.25
Posted by Dansoonie
One of the important roles of a compiler is to notify the coder the number of errors or warnings and their location in the code.
Would anyone disagree?

On Friday, I really got screwed up because of the incorrect stats about the number of errors and warnings in my code, which Microsoft Visual Studio 6.0(VS 6.0 from now on) generated during compilation.

My job is to maintain software, which makes it possible for my colleagues to control the hardware parts that goes in the PDP(Plasma Display Panel) -- I work for a PDP manufacturer. I have to work on 5 different, yet similar versions the program, which I just explained above because we have several product lines depending on the size and resoultion of the panel we are targeting on. This is very very lame since all the programs basically do the same thing. The only differences among them are very minor such as the location of certain variables located in the memory, which the hardware refers to on operation. Poor engineering practice always leads to a disaster !!!
Anyway, I was assigned a job to add a new feature to all the versions. I worked my way and at some point I where I thought I was finished, I pressed the exclamation mark icon to execute the program. VS 6.0 prompt me whether I was going to rebuild the project before I execute it and I chose yes. While the project was being compiled, I was watching the debug window to see if I have created any errors. I got a bunch of warnings about downcasting doubles to ints implicitly and declaring unreferenced variables(none of them from my portion of the code), but I did not see any errors. However, the number of errors and warning, which is displayed at the end of the compilation was indicating that I had a bunch of errors and no warning. And the really exciting(?) part was that the program was executed as if there were no errors. The newly added feature was added in there.
 
Huh ?!@?$#@%#!^*@&%$

How would you react to this situation? What I did was to reconfigure my project settings. This went on for couple of hours switching from project to project but nothing chaged and got worse. After struggling for some time, I finally figure out what was causing this very absturd behavior.

I always copy a project to a new location and do my work there to preserve the original stable version. It is my own way backing up my work and keeping a history. Anyway, the new feature that I added involved the word error. Therefore, the new folder I created to make a copy of the original to work on contained the word error. The word error in the path name for the files were causing the absurd behavior. The word error was replaced with the word 오류, which means error in Korean and the problem was solved.

I have always thought that VS 6.0 had a counter for counting the number of errors and warnings, but I think Microsoft does it somewhat in a perverted way... <- personal opinion.
I think Microsoft counts the number of errors and warnings by parsing the debug window. I'm not saying that parsing would not work. I'm just saying they are doing it wrong and might be doing it inefficiently. Instead of increasing the counter for errors and warnings as they occur during compilation, my guess is that they parse each line of the debug window and searches for the string "error"and "waring" to increment the counter. And it is obvious that they don't parse the full line, but only until they spot either one of the word.

But why? Why did they do it this way? Why Bill?
Posted by Dansoonie

1. Lacking Guidelines & Standards

금요일에 몸이 너무나 아팠습니다. 그동안 병원을 다니면서 입원해야 할지도 모른다는 얘기를 의사선생님으로부터 들었습니다. 하지만 확실한것은 아니었죠. 그래서 회사 동료와 선배들에게 입원해야 할지도 모르는 상황을 설명하고 일단은 그 다음주 월요일에 어느정도 건강이 회복되면 출근해 근무하려 했습니다.

So? 근태를 올리지 않았습니다...

주말에 너무 아픈 나머지 응급실에 끌려갔습니다. 입원할 정도는 아니었지만 그렇다고 정상적인 생활을 할 정도도 아니었습니다. 그래서 월요일 아침에 회사에 전화해서 회사 선배에게 근태를 올려달라고 부탁드렸습니다...

Then? 1주일을 쉰 후에 회사에 가보니 부장님께서 남에게 부탁하여 근태를 올리는 일이 없도록 하라는 메일을 보내셨습니다. 그렇다면 확실하지도 않은 미래에 대해서 근태를 미리 올려야 했단 말입니까? 이 질문에 대해서는 모두들 확답은 주지 않고 그냥 알아서 잘 하라고만 대답해주셨습니다.
Also, 전문연구요원으로 근무중인터라 10월 4일에 훈련 소집이 계획되어있었습니다. 하지만 건강상의 이유로 훈련 일정을 미뤄야만 했다습니다. 그래서 인사과에 찾아가서 얘기했더니 왜 그런 일이 있었는데 보고하지 않았냐고 한소리 들었습니다.

이밖에도 회사생활 하면서 어떻게 하라는 정확한 지침서도 없으면서 잘못한것에 대한 안좋은 소리만 듣게 됩니다...


2. Lacking Responsibilities

2주정도 병가를 내고 쉬었으면 좋겠다는 의사의 소견서를 들고 회사의 부속의원에 갔습니다. 한번은 병가를 내야하는지 말아야 하는지 상담하러 갔고, 한번은 계속 악화되는 증상에 대해 상담받으려고 갔습니다.

So? 내 몸 상태는 내가 잘 아니 내가 알아서 모든걸 하라는 소리만 들었습니다.

Then? 결국에는 응급실에 가게되는 정도까지 이르게 되었으며, 병가에 대한 사내 규정에 대해 잘 몰라서 어쩔 수 없이 월차를 쓰게 되어 혼자 손해만 봤습니다. 인사과에서 조차 병원의 소견서를 보더니 1달동안 병가를 낸다고 하지 그랬냐고 할 정도였는데도 불구하고 의사는 아무런 조언 없이 저보고 알아서 판단하라고 했습니다.

의사가 만약 의학적인 조언을 해주지 않느다면 환자가 판단을 어떻게 내리겠습니까? 이처럼 우리 사회에는 서로 책임을 회피하고 미루려고만 합니다. 이것은 아마도 자신이 맡은 일에 대해 명확하게 정해진 것이 없기 때문에 그런것이기도 하고 가능하기도 한것 같습니다.


3. Lacking Common Sense

우리 회사에 고용되는, 더 나아가 우리 부서에 배치되는 새로운 인력들을 보면  전공이랑 별로 상관 없는 경우가 있습니다. 다들 그렇게 느끼고 있습니다. 하나같이 자기 자신은 그 회사에 가서 할만한 일이 마땅히 없을것 같다고 분명히 얘기 하지만, recruiter는 할일 없으면 할일을 만들어주면 된다고 하면서 뭔가 대단한 일을 시킬것 처럼 얘기를 한다는 사실을 알게되었습니다.

So? 막상 부서에 배치되면 존재의 이유가 불분명해집니다.

Then? 제가 제게 가장 맞는 적합한 일을 찾습니다. 그 일은 정말 하찮은 일도 아니고, 다들 중요하게 생각하고 있는 일이지만 우리 회사에서 생산하는 제품의 일부분에 관한 일은 아닙니다. 그래서 결국에는 그 일을 하는것 조차 눈치보이고 제대로 못합니다. 그리고 다른일도 분면 전공 분야랑 거리가 좀 있으니 잘 하지도 못합니다.

부서에서 필요한 인력을 부서에서 뽑아야지 왜 회사에서 뽑습니까? 이와 같이 일을 하다보면 앞뒤가 맞지 않는 일을 수도없이 많이 겪게 됩니다.



참 쓸 내용이 많은데 다 쓰지도 못하고... 이래서 어떻게 회사가 돌아가는지 모르겠습니다...




Posted by Dansoonie
몇주 전에 나는 감기기운으로부터 시달리고 있었다...
두통과 부어오른 편도선, 그리고 무기력증...
그래서 주말에 병원에 갔고, 의사 선생님이 몸상태가 너무 안좋아 혈액검사를 하자고 했다...
의사 선생님이 검사 결과를 보시더니 급성 간염으로 의심된다고 하셨다.
2주 병가를 내라는 소견서와 함께 하는 회사에 출근했고, 회사 부속의원에 갔다.

부속의원 원장은 소견서를 보더니 별일 아니라는 듯이 내가 알아서 병가를 내던지 말던지 하라고 하셨다. ㅡ.ㅡ;
그리고 마침 병원에서 처방받은 약이 다 떨어져 약을 조금 더 타왔다...

하지만 목은 점점 더 붓기 시작했고 아래의 사진과 같이 되어버렸다.
사용자 삽입 이미지
Oh Jesus !!!

또 다시 회사의 부속의원을 찾아갔지만, 자기가 줄 수 있는 가장 강력한 약을 줬는데 그거 하나 못참고 왜 그러느냐고 그러면서 그냥 기다려보라고 했다.
마침 그 다음다음날에 충남대학병원에 소화기내과에 진료 예약을 해놨었기에 그냥 기다려보기로 했다.

충남대학병원 소화기 내과에서 진료를 받고 이비인후과로 transfer 되었다. 그리고 소화기내과와 이비인후과에서 요구한 혈액검사에 응하느라 6개의 시험관에 피를 뽑았다. 목은 마구마구 부어오르고 있었지만 간이 상태가 좋지 않은 상태라서 항생제를 처방해주지 못한다고 했다.

그래서 할 수 없이 견디다 못해 토요일에는 응급실에 끌려갔다.
아무것도 먹지를 못해서 탈진 상태였고, 목이 저 위에 나온 사진보다 최소한 3배는 더 악화되어있어서 침도 못삼킬 지경이었기에 물도 마시지 못해 탈수 상태에 이르렀다.
동네 병원에서 영양제를 맞고 있는데 갑자기 너무너무 추워졌다...
그러자 의사 선생님이 면역력이 약해져서 그런거라고 증상이 너무 심해졌다고 그러면서 응급실로 후송될것을 권하셨다.

그래서 응급실에 갔다... 거기서 다시 피검사 급하게 하고, 간수치 떨어진것을 확인하고 항생제를 혈관주사로 맞았다. 혈관주사로 항생제를 맞으니 아주 직빵이었다 !!! 맞기 시작한지 30분도 안되어서 목의 통증은 가라앉고 막 배고프기 시작했다...
그날 저녁에 밥을 아주 맛있게 먹었지만 그 후로 몇일은 더 고생했다...
내복 항생제는 혈관으로 직빵으로 맞는 항생제 만큼효과적이지 않았다.
어쨌든, 덕분에 월차 5개 쓰고 일주일 집에서 쉬고 놀았다...

나중에 알고보니 Epstein-Barr라는 바이러스에 감염되었다고 한다.
이 바이러스에 감염되면 간기능이 저하되고 편도선이 부어오르기도 한다고 한다.
바이러스에 감염된것이기 때문에 자연적으로 면역력이 생기게 되니 큰 걱정은 안해도 된다고 한다.
그런데 2차 감염의 위험이 있으므로 지속적인 관찰이 필요하다고 했다.
Posted by Dansoonie

제헌절을 끼고 1주일간 휴가를 내고 미국을 다녀오는 길에 깜짝 놀랄만한 일이 벌어졌다.

최근 10년 동안 타본 항공사 비행기가 기껏해봤자 Northwest와 대한항공이지만, 내가 알기로는 요새 대부분의 여객기에는 비행기의 위치를 실시간으로 탑승자들에게 알려주는 서비스를 하고 있다.

비행기 안에서 영화를 보다가 졸려서 내용이 머릿속에 들어오지 않아서 비행기 위치나 한번 살펴 보았다. 그런데 비행기의 위치와 예상 항로는 다음과 같이 표시되어있었다.

사용자 삽입 이미지


거의 다 왔구나 싶으면서도 깜짝 놀라지 않을 수 없었다... 예상 항로가 북한 영공을 지나가고 있었기 때문이다. 그래서 계속 살펴 보았다. 그 결과 비행기의 항로는 다음과 같이 바뀌었다.

사용자 삽입 이미지


아마도 비행기로부터 서울인천 국제공항까지 그어져 있는 초록색 선은 비행기의 예상항로라기보다는 현재 위치에서부터 도착지까지의 최단 거리인것 같다.

어쨌든, 조국 분단의 현실의 아픔을 깨닫게 되었다기 보다는 북한 영공을 피해가기 위해 들어가는 기름 값이 아까웠고, 추가로 연소되는 기름으로 인해 대기중에 늘어났을 이산화 탄소의 농도와 그에 따른 지구 온난화 현상의 가속화가 걱정이 되었다...

그리고 북한 영공에 들어갈 수 있는 비행기는 어떤 비행기가 있는지 궁금했다. 중국이나 러시아 비행기는 괜찮나?

Posted by Dansoonie

일단, 나는 누구편인가? 사실 병무청의 편도, 싸군의 편도 아니다.
국민의 편이라고 말하고는 싶지만, 내 생각이 전국민의 생각을 대변할 수 없다는걸 잘 알기 때문에 그런 위험한 발언을 하지 않겠다. 특히 전문연구요원으로 군대체복무중인 나로써는 현역으로 입대해서 고생 하셨던, 고생고 계시는, 그리고 고생하실 분들의 생각은 더욱더 잘 모를 수도 있기 때문에 그들은 나와 좀 다른 생각을 할 수 있을것 같다는 생각이 들어서 내 생각을 블로그에 옮겨적는것도 사실은 조금 조심스럽다.

어쨌든, 본론으로 들어가서...
싸이의 병역비리가 처음 보도되었을때 가장 먼저 든 생각은 바로, 왜 이제와서 저러는것일까였다...

사실 모든 국민이 알고 있었다... 사실인지 아닌지 확신만 없었을 뿐, 싸이의 병역비리에 대한 소문은 많았고, 3년전에는 MBC의 한 기자가 싸이의 군 복무 방식이 편법이었음을 방송을 통해 고발하기도 했다는것 같다. 상황이 이랬는데도 불구하고 병무청이 싸이의 병역비리에 대해서 몰랐다는 것은 말도 안된다. 여러가지 정황으로 보아 최소한 실태파악을 하여 사실 확인 후 엄중히 처벌했어야 한다고 생각한다...

병무청으로 부터 완벽하게 뒤통수 맞은것이다... 산업기능 요원으로 근무하고 있을 당시만 해도 병무청으로부터 별다른 규제가 없었기에 그는 아마 병무청의 실태 조사는 형식적인 것일 뿐이며, 눈감아주는것은 관행이라고 생각했을것이다. 나 역시 전문연구요원으로 근무하면서 그런 느낌을 많이 받는다... 다 알면서도 눈감아주는것 같다... 병무청에서는 심지어 싸이의 병역비리 파문이 터진 후에 실태 조사를 나왔음에도 불구하고 매우 형식적인 실태 조사를 했고, 그랬기 때문에 뭔가 다 눈감아줄것과 같은 인상을 받았다... 일단 실태조사를 하러 나온다는 사실을 회사가 3~4시간 전부터 알고 있는 것이 더 웃기다...

이런 현실 때문에 군대체복무 제도가 제대로 정착되지 못한것 같다. 직접 전문 연구요원으로 근무해보니 진짜로 전문연구요원이나 산업기능요원의 취지에 맞게 합법적으로 취직해서 위법이나 편법 행위를 저지르지 않고 의무 복무 기간을 마치는 사람이 얼마나 될지 아주 의심스러워졌다.

어떤식으로 따져보더라도 사실은 현역으로 입대하는것이 여러가지로 산업기능요원이나 전문연구요원으로 일하는것보다 좋지 않은것이 사실이니까 형평성에 문제가 있는것은 사실이다. 하지만 꼭 형평성에 관한 측면에서 모든것을 결정하는것은 어리석다고 본다. 형평성에는 어긋나지만 나라의 입장에서는 메리트가 있기 때문에 만든 제도라고 생각한다면 공익을 위해서라면 그정도 형평성은 희생되어도 된다고 생각했다(본인이 전문연구요원으로 뽑히기 전부터 그렇게 생각했다). 하지만 이제와서 보니 왜 사람들이 형평성을 걸고 넘어지는지 알것 같다...

군 대체복무 제도가 지금과 같은 식으로 정착된 이상 원래 이 제도를 도입하면서 기대했던 성과를 바라는것은 무리다. 원래의 목적이 잊혀진채 본래의 기능을 수행 못하고 있어 국가에 돌아가는 메리트가 없어진 상황이라면 앞으로 형평성의 문제는 더욱 커질 수 밖에 없다고 생각한다.

병무청은 언제나 우리나라의 건장한 청년의 편에 서있는것 처럼 말을 한다. 그래서 유승준도 병역기피 혐의로 우리나라 입국을 원천 붕쇄하여 많은 사람들의 마음을 시원하게 해줬다. 하지만 이제와서 보면 고작 쑈 정도로 밖에 보이지 않는다. 이번에는 또 어떤 이유 때문에 싸이의 병역비리 수사를 시작했는지 몰라도 싸이를 재입대 시킴에 따라 또 우리나라 국군장병의 편에 서 있음을 광고하려는 효과를 보려고 하는것 같다.

하지만 여러분은 다시 생각해보기 바란다... 우리나라 병역비리가 왜 존재하는지...
싸이가 잘못한게 없다고 할 수는 없지만, 그리고 사실 잘못했지만, 그동안 다 알면서도 눈감아주고 문제삼지 않다가 이제와서 싸이의 뒤통수를 때리는 병무청은 더욱 큰 문제가 있다고 본다. 공공기관으로써, 확실한 기준 없이 제멋대로 일을 처리하는듯한 인상을 크게 받았다.

할말이 더욱 많지만 지금은 여기서 그만... 더 많은 이야기는 3년후에 기대해 주세요...

Posted by Dansoonie


 Introduction:
오늘 회사에서 일을 하다가 C#으로 문자열을 빈칸을 기준으로 여러개의 문자열로 나눠야 할 일이 생겼다. String class의 Split Method를 사용하면 가능할것으로 보였다. MSDN .Net Framework Reference(http://msdn2.microsoft.com/en-us/library/b873y76a.aspx)에 보면 만약에 "Darb\nSmarba"을 Split하게 되면 리턴값이 {"Darb", "Smarba"} 된다고 나와있다. 하지만 나는 "Darb\r\nSmarba\r\n"을 Split으로 넘겨줬더니 리턴값이 {"Darb", "", "Smarba", ""}이 되었다.
오늘 나는 C#에서 "Darb\r\nSmarba\r\n"를 {"Darb", "Smarba"} 으로 만드는 방법을 찾았다.



프로그래밍을 배웠지만 아직 사회에 나가서 전문적으로 프로그래밍을 하지 않는 우리나라 사람이라면 아직까지는 C가 C++보다 익숙하고, C++이 Java보다 더 익숙하고, Java가 기타 언어보다 더 익숙하리라 생각된다.


잘은 모르지만 우리나라는 아직까지 학교에서 미국과는 달리 프로그래밍은 C부터 가르친다는 말을 많이 듣는것 같다. 아니라면, 그만큼 나도 나이가 들었고, 요즘 대학생들과의 교류가 상당히 없어졌다는 얘기일것 같다...^^


어쨌든, 밀레니엄학번인 나는 미국 대학에서 프로그래밍을 배울때 C++부터 배웠다. 한때는 C++이 제일 편했지만, Java와 C#과 같은 C++보다는 좀더 객체지향적인 언어를 많이 사용하다보니 polymorphism같은 내용이나 여러가지 구체적이고 세부적인 C++의 내용은 상당히 많이 까먹은것 같다. 한때는 C++이 제일 편했지만, 최근에는 Java 나 C#과 같이 C++보다 객체지향 개념이 강한 언어를 선호하다보니 C++의 복잡한 문법들이 가물가물하다. 지금은 C++이 가장 편하다고 하지는 못하지만, 상당히 제한적이고 간단한 작업을 수행하는 프로그램을 짤때는 C++만큼 편한 언어는 없다.


내가 언급한 상당히 제한적이고 간단한 작업이란 텍스트 기반으로도 쉽게 짜고 사용할 수 있는 프로그램들을 말한다. 그중에 가장 많은 비중을 차지하는 작업이 Text의 parsing(문자열 분석(?))이 요구되는 작업들이다. 가령 역대 로또 당첨 번호들을 텍스트로 읽어들여서 분석하는 것과 같은 일이다... <-- 실제로 작업중이다


C로는 parsing 작업을 많이 해보지 않았으므로, 얼마나 그 작업을 용이하게 할 수 있는지 잘 모르겠다. 그리고 언어에 따른 parsing 작업의 편리함 정도는 아주 주관적인 것이므로 parsing 작업은 C++이 가장 편하다고 하지는 않겠다. 하지만 적어도 나에게는 가장 편하다.


오늘 문득 회사에서 일을 하다가 C#으로 문자열을 분석할 일이 생겼다. 어려운 작업은 아니었고, 문자열에 포함된 빈칸(White Space)를 기준으로 문자열을 나누고 싶었다. C++같으면 이 작업을 iostream으로부터 파생된 class와 extraction operator(>>)으로 쉽게 수행할 수 있다. 하지만 C++에서 사용하던 parsing 방법과 비슷한 효과를 낼 수 있는 방법을 못찾아 잠시 애를 먹었다. Google을 통해 그 방법을 찾아보고 어렵사리 그 방법을 터득하게 되었다. 그래서 parsing 작업이 C++에서는 익숙하지만 C#에서 익숙하지 않은 사람들을 위해 그 방법을 공유하고자 한다. 대단한건 아니지만, google에서 쉽게 찾지 못했으므로 여기에 기록해 두는것만으로도 많은 사람들에게 도움이 될것 같다는 생각에 충분히 가치있는 일이라고 생각된다.


그럼 본론으로 들어가서, C++처럼 iostream으로부터 파생된 클래스와 ">>" 연산자를 사용해서 하는 방법과 똑같은 방법은 없지만(C#에서는 operator overload가 가능한것으로 알고 있는데, 그래서 구현은 가능할것으로 보인다), 예전에 Java를 조금씩 하면서 사용했던 방법과 비슷한 방법으로 parsing하는 방법을 찾았다.


*앞으로 사용될 예제들에서 text_to_parse라는 문자열을 사용하겠다.
Java에는 StringTokenizer class를 사용해서 다음과 같이 문자열을 parsing할 수 있다.

     StringTokenizer st = new StringTokenizer(text_to_parse);
     while (st.hasMoreTokens()) {
         System.out.println(st.nextToken());
     }

StringTokenizer 객체는 string 객체를 매개변수로 받아들여 생성되고, 그 string object를 토큰(쉽게 말해 프로그래머가 원하는 문자열의 단위)으로 분리시켜준다. Default는 가장흔히 쓰이는 빈칸 기준으로 문자열을 나눠준다. 만약 다른 방법으로 나누고 싶다면 문자열 분리의 기준이 되는 문자열을 StringTokenizer 객체 생성시 추가로 매개변수로 넘겨주면 된다. 자세한 내용은 다음 링크를 참고하기 바람.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html


그래서 위의 예제는 빈칸을 기준으로 분리된 문자열을 차례차례 빈칸이 없을때까지 문자열을 나누어 출력하게 된다.


introduction에서 언급했듯이 C#에도 Java에서 StringTokenizer가 해주는 일이 비슷한 String class의 Split이라는 method가 있다. Split method 역시 매개변수로 문자열을 넘겨줘서 문자열을 나누는 기준을 정해줄 수 있다. 하지만 StringTokenizer와 마찬가지로 default는 빈칸이다. 그리고 MSDN .Net Framework Reference에 보면 만약에 문자열이 "Darb\nSmarba"을 Split하게 되면 결과가 {"Darb", "Smarba"} 나온다고 했지만, "Darb\r\nSmarba\r\n"을 넘겨주니 예상했던 것과 사뭇 다른 {"Darb", "", "Smarba", ""}라는 결과를 얻었다.


Split을 조금더 정밀하게 하기 위해서 Regular Expression을 써야 함을 알게 되었고 다음과 같은 방법으로 해결책을 찾았다.
string[] tokens;
tokens = Regex.Split(text_to_parse.TrimStart().TrimEnd(), "\\s+");
결국 "\s+"라는 regular expression을 써서 빈칸에 대한 정의를 좀더 명확히 해줌으로써 문자열에서 빈칸을 완전히 배제하고 문자열을 나눌 수 있었다.


그리고 오늘 Regular Expressions 사용할일 있을때 참고할만한 좋은 자료를 찾았다.
http://opencompany.org/download/regex-cheatsheet.pdf

Posted by Dansoonie