글쓴이 보관물: koasing

USIM 제한 해제와 관한 정보

때늦은 정책이긴 하지만, 여하튼 이번에 SKT 및 SHOW에서 방통위 주관으로 USIM 관련 제한을 해제한다고 한다.
가장 중점이 되는 IMEI 화이트리스트는 여전히 철폐가 요원하지만, 여하튼 국내 정식출시 단말 사이의 USIM 이동성은 개선될 전망.

언론과 SKT, SHOW 공식 트위터 등을 통해 흘러나온 정보를 정리해보면 다음과 같다.
신뢰도는 맞으면 좋고 아니면 말고~ 수준이므로 그냥 참고만 하고, 공식 정보통으로의 자료 이동 및 사용을 금지한다.
특히, “가능성” 등의 언급은 모두 글쓴놈 추측이라는 의미이므로 주의할 것.

1. 요약

TOPIC

기존

개선

가입후 USIM 기변 제한

가입 다음월까지 USIM기변 제한
+ 할부구매시 3회차 납입때까지 제한

가입즉시 USIM기변 가능
(할부구매시 3회차 납입때까지 제한가능성)

통신사 제한 폐지

국내 정발 단말기는 SKT/KTF USIM만 사용가능
(해외통신사 USIM 사용 불가)

통신사 제한 해제
(단말기가격 완납 이후 해지예정)

USIM 단독가입 허용

USIM 단독가입 불가
단말기 새로 사거나 중고단말기 보유해야 함

USIM 단독가입 가능

1. USIM기변 제한기간 폐지

펼쳐라

현행 자사/타사간 USIM기변은 가입일 기준 다음달 말까지 무조건 제한되며, 할부구매의 경우는 할부금 3회 납부할 때까지 제한된다.
즉, 4월 15일에 휴대폰을 구입하는 경우 2개월 후인 6월 1일부터 자사간 USIM기변이 허용되며, 타사간 USIM기변을 신청할 수 있다.
(할부의 경우는 3회 납부 후, 즉 5, 6, 7월에 요금 내고 8월 1일부터 기변 가능하다.)

6월 이후 가입자는 이러한 제한기간 없이, 가입직후부터 자사/타사간 USIM기변이 가능해진다고 한다.
다만 할부구입시 3개월 제한은 계속 유지될 가능성이 높다. 할부구매 후 바로 타사 USIM기변하면 독점 판매하는 의미가 없으니까.

여하튼, 여기에 연동하여 IMEI 화이트리스트 공유절차도 개선될 것으로 보인다.
현행은 타사간 USIM기변 / 휴대폰 타사 이용 신청을 해서, 단말기 IMEI 정보를 타 통신사에 제공해야 이동이 가능한데,
개선 이후는 최초개통시 자동으로 통신사 화이트리스트에도 올라가게 바뀌던지, 개통시 바로 이동성 신청이 가능하도록 개선될 전망이다.

접어라

2. 통신사 제한 폐지(Country Lock 해제)

펼쳐라

현재 국내출시되는 모든 단말은 SKT/KTF USIM만 사용가능하며, 해외 통신사 USIM은 이용 불가하도록 락이 걸려 있다.
X1등 일부 단말은 USIM 언락하여 사용가능하지만 이는 논외로 하고…

여하튼 개선이후에는 이러한 통신사 제한이 폐지되며, 해외 USIM을 국내출시 휴대폰에 꽂아 쓸 수 있도록 바뀔 전망이다.
즉, 해외 유학이나 파견 등 장기간 해외에 나가게 되는 경우, 현재 사용하는 단말을 가져가서 USIM 개통하여 사용이 가능하다.
현지 통신사 가입하는게 로밍보다 저렴함은 당연하고, 현지번호 부여 등의 메리트가 상당히 많다.

다만, 기 출시폰을 언락해 줄 가능성은 그리 높지 않다. 타사간 USIM이동 풀릴 때에도, 기존 출시폰들은 안 풀어줬다.
또, 판매시부터 언락으로 풀리지 않는다. 해외 통신사처럼 몇 개월 이상 연체 없이 사용 후 요청해야 단말기 할부가 끝나야
제공한다고 하며(거의 확정사항), 현금완납으로 구매하는 경우에는 일정기간 지나야 풀어줄 것 같다.

해외처럼 휴대폰 오픈마켓 판매가 활성화된다면 USIM언락폰이 바로 팔릴 수도 있겠지만, 국내망에서는 큰 효과가 없을 것 같고…
그리고 해외에서 구매한 휴대폰에 SKT/SHOW USIM 꽂아 사용하는 것은 여전히 불가능하다. 인식은 되지만 네트워크 접속이 안 된다.
IMEI 화이트리스트를 폐지해야 하는데, 이건 국내사정상 어려우므로 국내 출시될 때까지 기다리거나 개인 전파인증을 받아야 한다.

관련 이야기는 3절에서.

접어라

3. USIM 단독가입 허용

펼쳐라

현재는 가입시 반드시 단말기 전산등록을 해야만 개통이 가능한데, 2011년 이후부터는 USIM만으로 개통가능하게 바뀐다고 한다.
뭐 USIM이동성 활성화 등의 이야기는 제끼고, 이 부분은 문제점을 좀 이야기해야 하겠다.

USIM 단독가입 허용에 반드시 뒤따라야 하는 것은 단말기 오픈마켓이 활성화인데, 이 문제는 곧 IMEI 화이트리스트 철폐와 연결된다.
솔직히 중고단말 쓰자고 USIM가입하는 경우는 드물거고, 국내외에 출시된 신형 단말에 USIM 꽂아서 바로 쓰는게 목표이니까.

그런데, 문제는 우리나라는 세계에서 둘 뿐인 IMEI 화이트리스트 적용국가라는 점이다.(나머지 하나는 터키)
국내에서 사용하려는 모든 단말은 IMEI 번호를 전산등록해야 하며, 미등록 단말은 SKT/KTF망 접속이 불가하다. (로밍 접속은 가능)
즉, 국내에서 쓰려는 단말은 적어도 개통이력을 남겨서 IMEI 정보를 등록해야 한다.

해외 구매 단말은 치차하고, 이러한 제한은 국내 출시된 제품에도 똑같이 적용된다.
즉, 오픈마켓에서 새 제품을 구매해 봐야 USIM만 꽂아서는 사용할 수 없고, 대리점 가져가서 기변신청을 해야 한다는 이야기이다.
(그래서 개통이력 없는 새 제품으로의 USIM기변이 안 되는 것. 중고제품은 이미 개통이력이 있으므로 상관 없다.)

언락폰 구매해봐야 전산등록해야 하는 것은 똑같고, 통신사 구매하면 보조금 주는데다 할부 끝나면 똑같이 언락해 준다는데,
과연 오픈마켓에서 출고가 비싸게 다 주고 살 사람이 있을까?
그나마 단말기제조사에서 전파인증을 받아서 통신사 미출시 휴대폰을 자유롭게 판매할 수 있다는 점에 기대볼 수 있겠지만,
이쯤 되면 통신사에서도 대처할 것이니 아무래도 힘들어 보인다.

접어라

와이브로 넷북은 과연 저렴한 것인가?

요즘 와이브로 가입하면 넷북은 공짜로 받을 수 있다고 한다.
근데 정말 공짜일 리는 없고… 한 번 요금을 따져보자.

1. 요금제
넷북 요금제 가입조건은 [무제한50 요금제 * 24개월 약정] 이다.

2. 단말기 가격
보통 무료넷북은 [462,000원 * 36개월 할부]를 끼고 들어간다.
SHOW는 이자를 안 받는 대신, 할부채권료 3만원을 받는다. 대리점 대납이 만연해 있긴 하지만.

공짜가 아닌데? 여기에서 약정과 캐시백을 이용한 낚시가 시작되는 것.
요금제 유지조건으로 매 월 1만원씩 할인이 제공되어 360,000원 할인되며…
차액은 102,000원은 매 6개월마다 캐시백 형식으로 보전해 준다.[footnote]계약서가 없으니 약간 똥줄이 타지만, “공짜 넷북”이 아니게 되므로 허위광고로 민사를 때려버릴 수는 있다 lol[/footnote]

3. 월 요금 계산(추가요금 없을 때)

무제한50 요금제+넷북 무료

– 기본요금 27,000원
– 사용요금 0원
– SHOW 결합할인(10%) -2,700원
– 자동이체 할인(1%) -243원
– 부가세 2405원

– 단말기(넷북) 대금 12,833원
– 단말기 약정할인 -10,000원

합계 29,290원 – 매 6개월마다 17,000원 캐시백
36개월 총 납입금액 952,440원

접어라

무제한30 요금제+넷북 구입

– 기본요금 19,800원
– 사용요금 0원
– 결합할인(10%) -1,980원
– 자동이체 할인(1%) -178원
– 부가세 1764원

합계 19400원 + 넷북가격 (대충 평균 35만원 정도)
36개월 총 납입금액 698,400 + 넷북가격

접기

4. 결론
넷북이 공짜라곤 하는데 딱히 그렇지만도 않다.
많이 써야 월 20GB 정도 사용하니까, 30GB 요금제와의 차액(25만원 정도)를 넷북 요금으로 납부하는 셈.
(30GB 요금제 가입시에는 와이브로 단말기를 따로 구입해야 하지만, 보통은 공짜로 준다.)

1GB 요금제는 36개월에 352,800원 나오니, 60만원(!)을 넷북 요금으로 내는 셈이다.
와이브로 단말 가격 생각하면 좀 줄어들지만, 그래도 손해가 큰 부분이다.

즉, 얼마나 쓸 지 생각해보되, 기왕 샀다면 많이 써서 뽕을 뽑도록 하자.

현명한 선택.

스마트폰 가입자는 ‘봉’‥”다 쓰지도 못하고..” 기사를 보고, 문득 든 생각.

뭐 남는 무료혜택을 다른 형태(데이터->음성 등등)로 전환하는 것은 좋겠지만, 이월은 의미가 없다. 어짜피 남는 사람은 이월해 줘도 다 못쓴다.
월 150MB 쓰는 사람이 남는 350MB를 이월해서 담달에 850MB를 받아봐야, 100MB는 그대로 버려진다는 이야기이다.

먼저 쓴 글

여하튼 요금할인이나 Flexible 요금제를 요구하는 것도 좋으나, 그 전에 합리적인 소비자로 돌아갈 필요성이 있다.
“단말기 공짜” 라는 알바의 말에 현혹되어, 자신의 사용량을 훌쩍 넘어서는 비싼 요금제에 가입하는 경우가 많은데…
자신의 월평균 사용량을 따져보고, 그정도 사용량을 커버치면서 가장 저렴한 요금제를 찾아볼 필요가 있단 이야기이다.

대체로 복합 요금제(SKT 올인원xx, SHOW i-XX 요금제)는

단말기 할인금액 차이 < 기본요금 차이 < 무료제공 통화량

이 성립한다. 예를 들어, SKT 요금제를 따져보면…

[#M_SKT 요금제|접기|

구분올인원35올인원45올인원55올인원65올인원80올인원95
기본료35,000원45,000원55,000원65,000원80,000원95,000원
국내음성통화료
(1초당 통화 기준)
1.8원
무료제공국내음성
통화
150분200분300분400분600분1,000분
데이터통화100MB500MB700MB1GB1.5GB2GB
단, 테더링(휴대폰을 PC 등에 연결하여 모뎀으로 사용하는 경우) 데이터 무료통화 제외
메시징3,000원 상당4,000원 상당10,000원 상당
문자메시지(SMS), 컬러메일(MMS), 모바일메신저로 사용할 수 있음
무료 데이터통화
초과할 경우
요율
0.2원/0.5KB
더블할인제도
추가 가입할 경우
혜택
5,000원7,000원10,000원12,000원15,000원20,000원
11번가 쿠폰 혜택5,000원7,000원10,000원12,000원15,000원20,000원

접기

이런 식이다.

자, 예를 들어 올인원45와 올인원55를 비교해 보자.

단말기 할인금액 차이 3천원 + 쿠폰금액 차이 3천원 = 총 혜택 차이 6천원 < 기본요금 1만원 < 무료통화 약 10만원[footnote]무료통화 50분 = 10,800원 데이터 200MB = 81,920원[/footnote]

이다. 게다가 이는 어떤 요금제를 골라서 비교하건 항상 성립한다.

자, 현재 통화량(음성/데이터/문자를 모두 포함)이 이미 올인원45만으로도 커버되는 양이라고 하자.
아니 구체적으로, 월 180분 통화에 인터넷은 적당히 200MB정도 쓴다손 치자. 문자도 200통 조금 못 보내고.
알바의 “55로 가입하면 단말기 공짜에요! 45로 가입하면 월 3천원씩 나가구요.” 꾀임에 빠져서 올인원 55에 가입했다면… 넌 이미 손해다.
단말기 할부금 고작 3천원 이익보자고 만 원이나 비싼 요금제에 가입한 것이니까. 산수계산은 초딩도 하겠다.

각 통신사 홈페이지에 들어가 보면, 최근 3개월간 통화사용량 통계를 볼 수 있다.
이를 바탕으로 하여, 그 중에서 가장 저렴한 요금제를 찾아보는 작업을 선행해서 가장 이익이 되는 쪽을 채택할 필요가 있겠다.

SHOW는 복합 요금제 안에서만 선택이 가능하니 더 생각할 필요가 없겠다.
SKT는 여기에 음성다량/문자다량 요금제, 그리고 할부지원 포기하고 PDA 슬림요금제를 선택할 수도 있다.
다만 음성다량/문자다량은 무료제공 데이터량이 없으니 큰 의미가 없으며, 올인원에서 한 단계 올리는게 더 유리[footnote]데이터통화 30MB = 12,288원이기 때문이다. 음성다량/문자다량 요금제는 무선인터넷을 조금만 써도 요금 폭탄을 맞을 수 있다.[/footnote]하다.

반면 PDA 슬림요금제 + 데이터요금제 조합의 경우, 전화통화가 극단적으로 적으면서 인터넷 사용량이 많은 경우 유리하다.
특히나 이 조합은, 통화량에 따라 요금이 달라지므로, 전화통화가 0에 가까울수록 유리하다.
데이터 100MB (올인원35 vs 안심데이터100) 은 월 통화량 20분 미만,
데이터 500MB (올인원45 vs 안심데이터150) 은 월 통화량 22분 미만,
데이터 2GB (올인원95 vs 안심데이터190) 은 월 통화량 45분 미만인 경우 안심데이터 쪽이 유리하니 참고하자.
(특히 메인 통화용 폰이 따로 있는 상황에서 스마트폰을 세컨드로 가입한 경우, 통화량이 없으므로 이쪽이 100배 유리하다.)

_M#]스마트폰 요금제 ‘비싼값 못한다’ 기사 보고나서 추가.

이쯤되면 위 이야기를 적용할 수 없겠다.
현행 요금제에서 예측하는 음성/데이터통화량의 비율이 실제 사용자들의 음성/데이터 비율과 동떨어져 있기 때문에,
최저 지점을 찾는다고 해도 음성통화량 초과분 때문에 상당한 요금이 나가게 되는 것.
음성/데이터 비율이 조정되지 않는 이상 딱히 답이 안 나온다는 이야기이며,
근본적으로 Flexible 요금제 도입하거나 또는 이통사에서 음성/데이터 비율을 조정할 필요가 있다.

여하튼 정리.

1. 자기 월사용량 따져보고, 무료제공량을 남김없이 사용할 수 있는 요금제를 선택하자.
2. 이월요금은 큰 의미가 없다. 차라리 Flexible 요금제부터 도입해라.
3. 여하튼 휴대폰요금 조낸 비싸다 ㅅㅂ

USIM 관련 뻘소리.

선불폰 사고 USIM가지고 만지작거리다 떠올라서 써보는 글.

1. 예전 2G 시절의 가입자 식별

일단 2G 휴대폰부터 떠올려보자. 이때는 USIM같은 것은 없었고, 단말기 구매후 가입신청서만 작성하면 끝이었다.
그럼 가입자 식별 = 과금은 어떻게 했을까?

이 때에는, 단말기에 내장된 ESN(Electronic Serial Number) 이라는 것을 사용했다.
간단히 말해서, 배터리 빼면 보이는 단말기 시리얼 번호가 곧 식별수단이란 의미이다.
단말기 ESN은 (합법적인 범위 내에선) 조작이 불가능하기 때문에, ESN을 알면 가입자 식별, 단말기 식별이 모두 가능하다.

LGT는 여전히 2G 망을 사용하고 있다. 해서 3G WCDMA와는 완전히 동떨어진 세상이다.

2. 현재 3G에서의 가입자 식별

그런데, 3G로 넘어오면서 이제 나라를 넘나들 필요가 발생하게 되었다.
세계의 유명한 통신사들이 “내 휴대폰을 가지고 해외에서 자동 로밍이 되도록 하자!”고 결의한 것.[footnote]믿으면 골룸.[/footnote]
하여, 주파수 대역을 데이터 통신용으로 850/900/1800/1900MHz, 음성 통신용으로 2100MHz로 통일하고 각종 전파규격도 맞췄다.

다만 모든 휴대폰이 이를 다 지원하는 것은 아니다.
2개(900/1800MHz)를 지원하면 듀얼밴드, 3개를 지원하면 트리밴드 단말기라고 하며, 사용 영역이 제한되게 된다.
4개를 모두 지원하면 쿼드밴드 단말기라고 하며, 기술적으로 세계 어디에서나 3G 통신이 가능하다.

여튼, 3G로 넘어오면서 ESN은 망간 호환성 문제로 기술적으로 제외(obsolate)되었고, 가입자 식별 기능과 단말기 식별 기능을 서로 분리하게 된다.
가입자 식별은 USIM이라는 엄지손톱만한 칩에 저장하고, 단말기 식별은 세계적으로 공유하는 단말기 시리얼인 IMEI를 사용하게 된 것.
이렇게 함으로써, 이제 가입자 식별만으로도 충분히 과금 정보[footnote]누가 얼마나 썼는지에 대한 정보. 어떤 단말로 쓰건 상관이 없기 때문에, 단말기 식별 정보는 필요가 없다.[/footnote]를 획득할 수 있으므로, USIM만 바꿔 끼우면 단말기 변경이 가능하게 된다.
물론, 실제로는 단말기 소유권 추적을 위해 가입시 IMEI 정보를 제공하긴 하지만.

3. USIM 잠금과 Unlocked phone

자 이제, 기술적으로는 USIM만 있으면 휴대폰을 자유롭게 교체할 수 있게 되었다. 근데 이걸 통신사가 좋아할까?
3세대에서는 특정 통신사 전용 단말기라는 개념이 없다. 즉, 특정 인기 단말기를 이용한 가입자 뺏어오기가 불가능하다는 의미.

이를 유지하기 위해 정책적으로 도입된 것이 통신사 제한, 흔히 말하는 USIM 락이다.
단말기에서 특정 통신사의 USIM만 받아들이도록 소프트웨어로 잠그는 것이다. 타 통신사의 USIM을 끼우면 사용 불가라고 오류를 낸다.
이렇게 함으로써 3G 기반으로 하드웨어를 구현하면서도 2G때의 단말기 판촉전을 유지할 수 있게 된다.

물론 이러한 잠금장치가 없는 휴대폰도 있다. 흔히 말하는 언락폰(Unlocked phone)이다.
홍콩, 이탈리아, 벨기에에서는 휴대폰 출고때부터 언락폰이라고 하며, 홍콩은 아예 법으로 통신사 제한 행위가 금지되어 있다고 한다.
그 외에도 소프트웨어 언락이 가능한 기종도 있다. HTC는 코드를 구매하면 언락이 가능하며, 삼성은 펌웨어 덮어쓰기로 가능하다고 한다.
(소니에릭슨 X1은 HTC OEM이기 때문에, HTC 코드 판매업체에서 간단히 언락코드를 살 수 있다.)

국내법상 이러한 잠금 해제 행위는 현 시점에서는 불법이 아니다. 아예 법적 규제가 없고, 따라서 처벌받지도 않는다.
그리고, 좀 비싸긴 하지만 언락폰도 전파 인증을 받으면 통신사 가입할 수 있다. SKT보다는 통합 KT가 잘 해주는 듯.
실제로 아이폰, 넥서스 원 등 인기 스마트폰은 정식 유통되기 전에 개인 전파인증을 받고 가입한 사람이 꽤 있다.

국내 사업자간 USIM 이동성이 풀리면서, 현재 국내 출시되는 모든 3G 휴대폰은 SKT 및 통합 KT의 USIM만 인식하도록 락이 걸려 있다.
영세 업체에서 3~5만원 정도 지불하면 언락할 수는 있지만, 해외여행 한두 번 다녀오는 정도라면 로밍 서비스를 이용하는게 간편하고 저렴하다.
유학이나 장기 출장인 경우에도, 현지에서 휴대폰을 아예 새로 사는게 대부분이다. 물론 언락해서 가지고 가도 된다.

4. IMEI Whitelist

자, 언락폰은 통신사 안 가리고 USIM을 넙죽넙죽 받아먹는다고 했다.
해외 통신사 USIM이야 로밍으로 인식할테니 제끼고, 그럼 언락폰에 SKT USIM을 꽂으면 어떻게 될까? KT USIM은 어떨까?
답은 양쪽 다 “못 쓴다” 이다. 시계는 뜨겠지만, 네트워크에 연결할 수 없다고 오류를 낼 것이다.

이는 IMEI Whitelisting 때문이다. 망에 접속가능한 IMEI를 제한함으로써, 미인증 단말기는 사용할 수 없도록 하는 것이다.
개통 시점에서 IMEI가 등록되므로, 흔히 말하는 망내 USIM 기변은 “개통이력이 있는” 단말기만 가능하다.
미개통 신규단말은 USIM 기변이 안 되지만, 개통이력 있는 중고 단말은 USIM 기변할 수 있는게 이 때문이다.

게다가, SKT에 가입하면서 IMEI를 등록할 때, 친절하게 KT에도 등록해 줄 리가 없다. 반대도 마찬가지.
즉, 기본값으로는 SKT 단말에 KT USIM을 꽂으면 사용이 안 되며, 반대도 안 된다.
상대편 USIM을 쓰려면 상대편 망에 등록해주는 절차를 밟아야 하며, SKT는 “타사간 USIM 잠금 해제”,
통합 KT는 “휴대폰 타사 이용 서비스” 라는 이름으로 서비스 중이다.

여튼, 국내 출시된 폰은 타사 등록이 가능하다. 그럼 해외에서 가져온 언락폰은?
SKT든 통합 KT든 일단 가입 = IMEI 망 등록을 거부한다. 해외 통신사까지 경쟁상대로 삼기에는 너무 빠박하니까.
근데 여기에 태클을 건 것이 아이폰이고, 정책적으로도 “개인 인증을 받으면 허용하라” 쪽으로 결론이 났으며,
해서 해외 언락폰도 국내 통신사에 가입할 수 있는 길이 열렸다. 물론 개인 인증은 더럽게 비싸다.
단일 항목에 10만원 + 인증서 발급비 3만원이며, 하나 추가시 10만원씩 늘어난다.
3G / WiFi / Bluteooth를 지원하는 기기는 33만원을 인증비로 내야 한다는 이야기.

재미있게도, 해외 통신사들은 IMEI Whitelist를 사용하지 않는다. 유독 우리나라 통신사에서만 이를 적용하고 있다.
통신사의 기득권 유지를 위한 정책적인 뒷받침이라고 해야 할까, 결국 로비의 승리라고 할 수 있겠다.

5. 정리

결국 우리나라에서 3G 망을 자유롭게 이용하려면 다음 관문들을 통과해야 한다.

  • 단말기에 걸린 USIM 통신사 잠금 해제 : Unlock
  • 자사 네트워크의 IMEI Whitelist 등록 : 개인 전파인증 및 개통하기
  • 타사 네트워크의 IMEI Whitelist 등록

소프트뱅크 선불폰 740SC

실제로는 검정색. 카메라가 구려서 원…

이번에 MPEG 출장을 다녀 오면서, 일본에서 선불폰을 하나 질러왔다.

지출내역

  • 단말기 6,300엔
  • 충전기 1,155엔
  • USB케이블 880엔
  • 액정필름 350엔
  • USIM 공짜
  • 충전비용 3,000엔(면세)

해서 합계 11,685엔 썼다. 가져간 예산 20,000엔 중 60%를 쏟아부은 셈이고, 그냥 미친짓.

2014. 3. 24 추가

2013년부터인가, 선불폰도 가입시 외국인등록증을 요구한다고 한다. 소프트뱅크 홈페이지에도 개정된 것으로 보이니 참고바람.
즉슨, 90일이상 체류비자를 받지 않으면 가입 불가능하다. 왜 그런지는 이해불가.

이 글은 2010년 1월 기준으로 작성된 것이므로 현재 정책과는 맞지 아니하다. 기록을 위해서 남겨둠.

여하튼, 가입을 희망하는 사람을 위한 몇 가지 이야기를 적어본다.

펼쳐라

1. 뭐가 좋은가?

  • 일본 휴대폰 번호인 080 번호가 부여되면서, 다른 사람이 나에게 전화를 편하고 저렴하게 걸 수 있게 된다.
  • 전화 받는 비용(inbound call fee)이 없다.
    로밍은 망임대를 비용이 별도로 과금되므로, 내가 전화를 받더라도 분당 200~250원 정도를 내야 한다. ㅅㅂ!
  • 다른 사람→선불폰인 경우 로컬전화로 과금되지만, 다른 사람→로밍폰이면 국제전화로 과금된다.
    참고로 보통 로밍폰→로컬전화는 500원, 로밍폰→국제전화는 1200원이다. 계산은 알아서.
    소뱅 화이트플랜 사용자라면 낮시간대에는 거는 사람도 공짜.
  • 일정 금액을 내면 무제한으로 휴대폰 메일을 주고받을 수 있다. 이것만 잘 써도 뽕은 뽑는다.
    (일본은 통신사간 SMS가 호환이 안 되며, 우리나라로 치면 MMS인 휴대폰 메일을 사용한다.)
  • 대충 이 정도. 요즘 환율이 쉣이라 거는 전화는 오히려 비싼 편이다. 뒤에서 설명한다.

2. 뭐가 나쁜가?

  • 초기비용이 비싸다. 단말기를 할부 없이 일시불로 주고 사야 한다.
    프리페이드 단말기는 보통 가입시 할부가격의 반값 정도에 공급되지만, 그래도 비싼건 여전하다.
  • 충전한 금액은 유효기간 60일이다. 즉, 충전일로부터 60일 지나면 잔액이 사라진다.
  • 따라서 2~3달, 길게 잡아도 6개월정도 머물때에나 의미가 있지, 여행기간 1달 정도로는 큰 의미 없다.
    체류기간 6개월 이상이면 어짜피 외국인 등록을 할 테니 후불폰을 만드는게 유리하다.

3. 대충 설명

  • 거는 전화는 6초당 9엔이이다. 지금 환율이 대충 12.5배니까, 1분에 1100원 좀 넘는다.
  • 메일을 쓰려면 무제한 메일 서비스(300엔/30일)에 가입해야 한다. 가입 후 해지 안하면 자동 연장된다.
  • 잔액이 0엔이 되면 전화건 메일이건 받기만 가능하다. 무제한 메일 가입해도 잔액 0원일 때에는 못 보낸댄다.
  • 충전은 3000엔, 5000엔 단위로 가능하며, 편의점에서 충전카드를 판다. 아니면 인터넷으로 충전할 수도 있다.
    충전금액은 충전일을 포함하여 60일간 유효하며, 이 기간이 지나면 잔액 상관없이 소멸된다. 적당히 충전해서 적당히 쓰자.
  • 잔액 0엔인 상태에서 360일이 지나면 자동으로 계약 해지된다. 즉 수신도 불가.
  • 해외 로밍은 당연히 이용 불가. 국제전화 발신은 가능하며 국제전화 요금은 일반 후불제 가입자와 같다.

4. 가입때 필요한 것

  • 여권. 90일짜리 단기입국도 상관없다. 즉 비자 없어도 된다는 이야기.
  • 숙소 주소를 적은 종이. 하루 묵을 민박집 주소도 상관 없다. 호텔은 안 된다는 점에 주의.
  • 넉넉한 돈. 까놓고 말해서 이게 가장 중요하다.
  • 이상 끝. 외국인 등록증이나 다른 서류는 전~혀 필요 없다. 진짜.

5. 가입하는 방법

  • 일단 소프트뱅크 샵에 가야 하는데, 웬만한 데에서는 선불폰을 취급 안 한다.
    취급하는 샵은 프리페이드 재고 있음이라고 붙여놓기도 하니 잘 찾아보자. 인터넷으로 찾으면 나올지도 모르겠다.
    여튼 필요한 것들을 들고, 취급점에 들어간다. 프리페이드 가입하러 왔다고 이야기하면 알아서 해준다.
  • 휴대폰을 고른다. 선불폰 기종은 여기(소뱅 홈페이지)를 참고하면 된다.
    730SC가 5천엔 정도고 740SC는 6천엔 정도 하는 것 같다. 가게마다 다르댄다.
    소비세 명목으로 5% 추가되니까 짱구를 잘 굴리도록.
  • 여권하고 숙소 주소를 주고, 후리가나 불러주고 희망번호를 고르면 가입 신청서를 정리해서 준다.
    숙소 주소는 호텔은 안 되는 것 같다. 실제 거주여부는 확인 안 하니 민박집 아무데나 주소를 적어가자.
    번호는 080-xxxx-yyyy 로 나가며, yyyy 부분의 희망번호를 알려주면 찾아서 있는지 없는지 알려준다.
  • 가입신청서를 최종 확인한 다음, 맨 위에 여권 이름을 수기로 적고 사인하면 가입 완료.

6. 그 외

  • 가입만으로는 전화 받기도 안 된다. 소프트뱅크가 바보가 아닌 이상, 카드등록 이력이 1장 이상 있어야 수신이 된다.
    즉, 좋던 싫던 적어도 1장은 사야 한다. 3천엔, 5천엔 카드 중 쓸 만큼 골라서 등록하자.
  • 약관상 단말기 구매 없이 USIM만 가입할 수도 있다. USIM 언락된 폰을 가져가서 가입할 수 있다는 이야기.
    다만 일본 폰이 아닌 이상 메일은 못 쓴다.

    접어라

    휴대폰 할인 정리

    파코즈 포스팅용 정리

    ** 본문의 모든 금액은 24개월 기준이며, 대리점 정책 등에 의해 바뀔 수 있다.

    1. 출고가, 할부원금

    펼쳐라

    휴대폰 제조사(삼성, LG 등등…)에서 단말기를 파는 가격출고가라고 한다.
    요즘 공짜폰이 많으니까 출고가를 무시하는 경향이 있는데, 출고가는 더럽게 비싸다.
    100원폰도 출고가 따져보면 50만원 가까이 한다. 참 신기한 세상.

    여기에서 본사정책에 의한 보조금, 제조사 판매장려금을 할인해 준다. 보통 말하는 “전략폰”이 여기에 해당한다.
    특정 단말이 특정 시점에 갑자기 싸게 풀리는 경우가 있는데, 전략폰으로 지정되면서 보조금이 증가하는 경우다.
    물론 불법이지만, 알음알음 하는거니까 넘어가기로 한다.

    참고로 인기있는 폰이 전략폰 지정되는 경우는 없다. 잘 팔리는데 돈주고 깎아줄 이유가 없으니까.
    대부분 후속모델 내지는 경쟁모델이 나와서 재고떨이를 하는 경우거나, 아예 컨셉부터 보급형으로 제작된 폰이 주로 지정된다.
    예를 들면 엑스페리아 X1. 아이폰 vs 옴니아 경쟁으로 90만원 단말이 70만원 할인되어 공짜로 풀리고 있다. 안습.

    또, 일부 대리점에서는 기기가격 일부를 대납하기도 한다. 대리점 보조금도 일단은 불법.
    특히 특정 부가서비스 가입을 조건으로 할인하는 경우가 잦으며, 대부분 가격은 비싸면서 별 쓸모는 없는 부가서비스인 경우가 많다.
    물론 무선인터넷 요금제 같은 경우는 오히려 유리할 수 있으므로 잘 따져보자.
    (요금제 할인이 생기면서 요금제 가입조건은 많이 사라졌다.)

    여튼 보조금 및 판매장려금, 대리점 보조금 등을 제하고 실제로 소비자가 내야 하는 금액할부원금이라고 한다.
    물론 일시불로 납부할 수도 있고, 할부를 끊을 수도 있다. 여하튼 이 문서에서는 할부원금이라 칭한다.

    접어라

    2-1. 약정할인

    펼쳐라

    SKT : T기본약정 (8~13만원)
    KT : 쇼킹스폰서 기본형 (8~14만원, 아이폰 214,000원)
    KT : 쇼킹스폰서 결합형 (메가패스 결합할인 전용)
    LGT : 의무약정

    일정기간 회선을 유지하기로 약정하고 할부원금을 선할인받는 제도를 약정할인이라고 한다.
    일시불로 가입하는 경우에도 혜택을 받을 수 있고, 할부조건도 자유롭게 정할 수 으나, 할부할인보다 혜택이 적다.

    약정기간을 채우지 못하고 해지, 명의변경 등이 발생하면 위약금을 한방에 납부해야 한다.
    위약금은 다음 공식으로 결정된다(3사공통).

    위약금 = 약정금액 * (약정 남은 날짜) / (약정 전체 날짜)

    즉, 24개월(730일) 약정 걸고 쓰다가 6개월(180일)만에 해지하면, 약정금액의 75%를 지불해야 한다.

    보통 현금완납폰은 약정폰이라고 보면 된다.
    출고가에서 보조금, 판매장려금, 대리점 보조금 등을 빼서 할부원금을 약정금액에 맞춘 다음, 약정을 걸어서 0원으로 떨어뜨리는 것.

    접어라

    2-2. 할부할인

    펼쳐라

    SKT : T할부지원(일반폰 180,000원, 스마트폰 220,800원, T옴니아 400,800원)
    KT : 쇼킹스폰서 고급형(200,000원)
    LGT : 제보바람

    단말기 할부유지를 조건으로 할부금액을 후할인받는 제도가 할부할인이다.
    할부원금 자체는 변하지 않지만, 월 할부금액에서 얼마씩 할인이 들어가게 된다.

    예를들어 할부원금 300,000원 스마트폰을 24개월 할부가입한다고 하면…
    SKT : 월할부금 12,500원 – T할부지원 9,200원 = 실납부금 3,300원 (+이자)
    KT : 월할부금 12,500원 – 쇼킹스폰서 8,333원 = 실납부금 4,167원

    각 통신사별 주의할 점.

    SKT
    할부시 연 5.9% 이자가 붙는다. 따라서 실납부금에 이자를 더해야 한다.
    할부원금 220,800원, 24개월 시 총이자 13,824원이며, 할부원금에 비례하므로 계산해 보도록 한다.

    KTF
    할부기간 및 할부원금에 따라 1~3만원의 채권보전료가 1회 발생한다. 추가 지불 금액에 해당하므로 따져보도록 한다.

    접어라

    3. 요금제할인

    펼쳐라

    SKT : T더블할인
    KTF : 쇼킹스폰서 i형(할부할인) / 골드형(할부할인) / 골드형 플러스(약정할인)
    LGT : 제보바람

    약정할인/할부할인에 특정 요금제 사용을 조건으로 추가 할인을 하는 것이 요금제할인이다.
    약정할인의 경우 약정금액=선할인금액이 (추가할인금액*약정기간) 만큼 증가하며, 할부할인의 경우 월 할인금액이 증가한다.

    SKT
    SKT는 할부할인을 유지하면서 요금제할인을 해지할 수 있다고 한다.
    (요금제 변경시에도 할부할인은 계속됨. 약정할인은 미확인.)

    KT
    아이폰은 i형만 가입 가능하며, 요금제에 따라 할부할인 금액이 달라진다.
    그 외의 기기는 세 프로그램 모두 180,000원 + 요금제 할인이 된다. 고급형보다 약간 적으므로 주의할 것.

    KT는 요금제할인만 해지할 수 없다. 쇼킹스폰서 i형에서 쇼킹스폰서 고급형으로 넘어갈 수 없다는 의미.
    같은 프로그램 내에서 요금제 변경은 허용되므로, 24개월동안 i형 요금제를 써야 한다. 아니면 할부할인을 포기하던지.

    접어라

    아는 만큼 싸게 살 수 있다.

    NTFS Hard link, Junction, Symbolic Link

    리눅스 저널링 시스템과 비슷하게, NTFS에서도 하드 링크, 심볼릭 링크 등을 지원한다. 그것도 이미 윈도우 2000때부터 지원했던 모양.
    물론 거의 묻혀있던 기능이지만, Vista 들어서 UAC 가상화를 지원하면서부터 매우 중요하게 사용되고 있다.

    각설 대충 간단히 설명하면 다음과 같다.

    펼쳐라

    * Hard link : 리눅스의 그것과 정확하게 같은 기능을 한다. 파일에 대한 접근점(Entry point)을 추가로 생성한다.
    하드 링크는 같은 파일의 서로 다른 이름이므로, 하나를 삭제(=Unlink)해도 다른 하드 링크가 남아있는 한 파일은 살아 있다.
    파일 접근점은 데이터와 같은 볼륨에 존재해야 한다. 다른 볼륨의 파일을 가리키는 하드 링크는 만들 수 없다는 이야기.

    * Symbolic link : 리눅스의 그것과 정확하게 같은 기능을 한다. 실은 유닉스 시스템과의 호환성 때문에 Vista 들어서 지원된 기능.
    리눅스와 마찬가지로 심볼릭 링크는 대상 확인을 하지 않는다. 존재하지 않는 파일/폴더에 대한 심볼릭 링크 작성도 가능하다.
    다만, 리눅스와는 달리 대상을 파일 자격으로 가리키는 <SYMLINK>, 폴더 자격으로 가리키는 <SYMLINKD>를 구분하여 사용한다.
    폴더를 <SYMLINK>로 링크하면? 안 열린다. 반대도 마찬가지.

    * Junction or Soft link : 역할은 <SYMLINKD>와 유사. 폴더에만 사용할 수 있으며, 정식 번역도 “폴더 교차점”이다.
    하드 링크와 달리 다른 볼륨의 폴더를 가리킬 수도 있다. Vista 이전에는 심볼릭 링크가 없었으니 교차점을 사용해야 했다.
    교차점은 NTFS 고유의 기능이므로, NTFS 폴더만 가르킬 수 있다. 네트워크 폴더에는 사용할 수 없다는 의미이다.
    (심볼릭 링크는 네트워크 폴더에도 사용 가능.)

    접어라

    문제는, 윈도우 2000이나 XP에 포함된 윈도우 탐색기는 이 기능들을 제대로 지원 못한다.
    하드 링크야 그렇다손 쳐도, 교차점을 삭제하면 재귀적 삭제를 돌면서 원본 데이터를 날려먹는 문제가 있다. 자료 날려먹기 딱 좋은 기능.
    이게 Vista 들어서부터 교차점을 제대로 인식하게 되었고, UAC 구현의 핵심으로 작용하게 된다.
    UAC는 결국 프로그램을 모래상자 위에서 돌리는 기능인데, Application Data 폴더를 교차점으로 지정함으로써 이를 구현하게 된 것.

    물론 일반 사용자는 이런거 신경쓸 일은 없을 것이다.
    나처럼 여러 하드디스크에 데이터가 널려 있는 경우 딱히 지랄지랄 안 하고도 한 폴더에 모아서 관리하는 정도에나 쓸만한 기능이다.

    만약 이러한 기능에 흥미가 있다면, 가급적 심볼릭 링크를 사용하는 것을 권한다.
    하드 링크는 파일 관리가 복잡해지기 때문에 거의 사용하지 않으며, 교차점은 XP에서 파일 날려먹을 가능성이 있다.
    물론 심볼릭 링크는 XP에서 아예 지원을 못하지만, 적어도 잘못 지워서 파일 날려먹는 것보다는 나을 테니까 뭐.

    … 단축 아이콘(Windows Shortcut)과 차이점이 뭐냐고?
    그럼 넌 이런 기능 몰라도 된다. 그냥 단축 아이콘 써라.

    32bit, 4GB, 램디스크.

    컴퓨터 구조라는 수업을 들어보면, 현재 x86 아키텍쳐에서 주변장치들은 메모리처럼 특정 주소에 매핑된다는 것을 알 수 있다.
    물론 이 부분은 사용자는 건들 수 없고, 커널 수준에서 관리를 하게 된다. 드라이버는 커널에서 주소를 받아다가 하드웨어하고 통신하는거고.

    근데 안타까운 것은, 32bit OS에서 메모리 4GB를 설치하는 경우, 이 공간이 불가피하게 메모리와 겹치면서, 일부 메모리를 사용할 수 없다는 것이다.
    이게 용량이 작으면 그냥 넘어가겠는데, 그래픽카드 및 기타 주변장치에 따라서 적게는 200MB에서 크게는 1GB가 넘는 공간을 뺏긴다.
    나도 4GB를 물렸지만, 실사용 공간은 3.25GB밖에 안 된다.

    물론 64bit OS를 설치하면 이 문제는 말끔하게 해결된다. 헌데 PAE를 활성화하고 상용 툴을 이용하면, 32bit OS에서도 이렇게 묻힌 부분을 램디스크로 재활용할 수 있다는 글이 꽤 전부터 심심치 않게 올라오고 있다. 그리고 실제로 해보면 되는 것 같다. 사용가능한 공간은 2GB로 유지되면서, 2GB짜리 램디스크가 잡힌다.
    근데, 이게 과연 안정적일까…?

    우선 2GB인 경우부터 살펴보자.

    2GB 메모리인 경우.

    대충 개념도이다. 가로 전체는 8GB 공간을 나타내는데, XP/Vista/Win7 32bit는 메모리 주소공간 4GB 이상을 관리할 수 없다.
    어쨌든, 물리적 메모리와 커널 예약공간은 서로 멀찍이 떨어져 있다. 연속적으로 존재할 수도 있겠으나, 개념적으로는 차이가 없다.
    어쨌든 메모리가 2GB인 경우, 커널 예약공간이 2GB를 넘나드는 미친 경우[footnote]그래픽카드 메모리가 1.5GB 정도면 가능할 수도 있다… 오 쉣.[/footnote]가 아닌 이상 물리적 메모리와 커널 예약공간이 겹쳐서 손해볼 일은 발생하지 않는다.

    자 이제, 4GB인 경우를 살펴보자. 단, PAE를 켜지는 않은 경우이다.

    4GB, noPAE인 경우.

    안타깝지만, 이 경우 커널 예약공간때문에 일부 물리적 메모리가 가려지는 것을 볼 수 있다. 안타깝지만, 저 공간은 못 쓴다.

    그런데 PAE를 켜면 문제가 좀 복잡해진다.

    4GB, PAE인 경우

    일단 PAE를 켜면 BIOS나 OS에서 4GB 경계는 없어진다. 색이 옅게 표시되었음을 잘 보도록.

    그런데, 이렇게 4GB 경계가 없어졌을 때 커널 예약공간은 어떻게 되는가? 라는 의문이 생긴다.
    1과 같은 경우라면 물리적 메모리와 겹치는 부분이 없으니 4GB를 온전히 쓸 수 있을 것이고, 그 중 일부를 램디스크로 잡아도 문제가 없을 것이다.
    2와 같다면? 단지 주소공간의 4GB 경계만 없어졌을 뿐, 실질적으로 PAE를 껐을 때와 차이는 없다. 다만 저 상태로 그냥 램디스크를 쓴다면 시스템 불안정을 초래할 수 있다. 윈도우로 말하자면 BSOD, 리눅스라면 커널 패닉.

    불행하게도 XP 32bit는 2처럼 작동하는 것 같다. 하여 램디스크로 커널 예약공간을 당겨다 쓰는 것을 추천할 수 없다. 뭐 쓰겠다면 말리지는 않겠지만, 뒷감당은 스스로 하면 된다.
    신뢰할 수 있는 정보는 아니지만, 서버 2008 32bit는 PAE를 켰을 때 64GB까지 지원하며, 4GB 장착상태에서 1처럼 작동한다고 한다. 64bit로 넘어가기는 꺼려지는데 메모리가 아까운 사람이라면 서버 2008을 써 보는것도 나쁘지는 않을 듯 하다. 물론 라이센스 구하기가 힘들다.

    여기서 한 발짝 더 나가서, 8GB라면 어떻게 될까? 물론 PAE를 켠 상황이 되겠다. PAE를 끄면 4GB 이상은 접근조차 못한다.

    8GB 메모리인 경우.

    램디스크 부분을 제외하면, XP 32bit에서 메모리는 저런 식으로 할당되게 된다. 실제 사용가능한 부분은 짙은 파란색으로 표시된 부분이며, 그 중 일부가 커널 예약공간으로 할당된다. 옅은 파란색으로 표시된 부분은 비관리 공간(Unmanaged area)이라고 하며, BIOS에서는 인식되지만 OS 수준에서 관리하지 않으므로 사용할 수 없다[footnote]물론 특수한 API를 사용하면 사용가능할 수 있다고는 하지만, 일반적으로 사용하는 WIN32 API에서는 안 된다.[/footnote].
    그렇다면, 그림에 긁어둔 것처럼 저 부분을 램디스크로 사용할 수 있지 않을까? 글쎄 아직 테스트를 안 해봐서 모르겠다. 내 컴퓨터는 4GB 밖에 안 물려둬서… 혹시 누가 테스트 가능하다면 결과를 보고해주기 바란다. 또, 위에서 언급했다시피 서버 2008은 8GB 전부를 관리한다. 64GB까지 지원하므로 메모리가 아까우면 그 쪽으로 넘어가면 되겠다. 아니면 64bit OS를 사용하던지.

    배열, 포인터, 배열 포인터, 그 미묘한 상관관계

    대체로 C/C++에서 배열과 포인터 부분이 어려운 부분이라는 점은 대부분 공감하는 사실이다.
    나 또한 이 부분이 어렵고, 이해 안 되고, 쓰기 싫어서 대체로 외면하곤 한다. 속도 최적화와는 거리가 좀 있는 분야를 다루고 있기도 하고.

    헌데 이런저런 사정 – 물론 쓰잘데기 없는 것이긴 하지만 – 이 좀 있어서 배열과 포인터에 관련된 내용을 찾아보았다.
    일단 VC++ 2005에서 돌려본 것이니, 적어도 틀린 것은 아닐 것이다.

    1. 문제의 시작

    펼쳐!

    꽤 근래에 디스어셈블로 비교해 본 것이기도 하지만, 근본적으로 배열이나 포인터나 다를 것은 없다.

    int a[3];
    (…)
    a[i] = 3;
    *(a+i) = 3;

    위 두 코드는, 디스어셈블 뜯어보면 똑같은 코드가 나온다는 이야기.

    이제 형식상의 문제인데, C 수업을 착실히 들은 사람은 알겠지만 a[i]라는 배열에서 a는 첫 번째 원소의 주소를 나타내는 포인터 상수[footnote]int * const. 틀리면 댓글주셈.[/footnote]라고 하였다.
    자 그렇다면, &a 는 무엇을 나타낼까?

    컴파일을 해 봐도, &a는 틀린거야! 라면서 오류를 뿜어내지는 않는다. 그 값을 출력해도 a와 다를 것은 없다.
    그런데, 이상하게도

    int a[3];
    int *p1 = a;
    int *p2 = &a;

    라는 코드를 실행하면, 세 번째 줄에서 오류를 내뿜는다.
    그렇다면, & 연산자는 주소 연산자니까 * 를 하나 더 붙이면 될까…??

    int a[3];
    int *p1 = a;
    int **p2 = &a;

    한 번 돌려보자. 역시나 오류를 내뿜는다. 아ㅅㅂ 뭐가 문제야.

    접어!

    2. 작은 결론

    펼쳐!

    오랜시간 뒤적이지는 않았지만, 여튼 내가 내린 결론은
    “& 연산자가 반환하는 주소는 형태가 좀 지랄같다.”
    이다. 정확하게는
    “& 연산자는, 피연산자를 하나의 원소로 갖는 가상의 배열에서, 피연산자가 위치하는 부분의 시작주소”
    를 반환한다. 아ㅅㅂ 거 조낸 복잡하네.

    예를 들어서…

    int data;
    &data; // 형식이 뭔데?

    를 생각해 보자.
    data는 그냥 int형이 되겠다. 따라서 &data는

    { int, int, int, …, int, int data, int, …, int, int, int }

    라는 가상의 배열에서 data의 위치이다.
    자, 이런 배열을 만들려면 뭘 써야 하는가? 당연히 int * 지.

    이제 좀 더 가보자.

    int a[3]; // 이번엔 배열이다.
    &a[0]; // 이건 뭐야…
    a; // 이건 왠지 알거같아…
    &a; // 이건 또 뭐고.

    자 우선. &a[0]. 연산자 우선순위상 [] 가 먼저 연산되니까, &의 피연산자는 int형이다.
    또 쓰기 귀찮다. 결국 위에서 본 data와 경우가 같다. 형태는 int *.

    다음은 a. 이건 수업시간에 들은 것처럼 첫 번째 원소의 주소, 그러니까 &a[0] 인 것은 확실하다…
    그런데 뭔가 미묘하게 다르다. 이놈의 자료형은 int [3] 이다. 응?
    이 말은 무슨 말이냐면, “int *와 비슷하긴 한데[footnote]실제로는 int * const 에 해당한다. 배열 주소가 바뀔 수는 없으니까…[/footnote], 길이가 3으로 명백해!” 라는 의미이다. 아ㅅㅂ 머리아프다.

    여하튼 여기에서 체크해 두어야 할 것은, 배열도 결국에는 유도 자료형이라는 말이다.
    int a[3] 은 “int형 3개를 원소로 갖는 배열 a를 만들어!” 가 아니고, “int형 3개를 이어붙인 배열구조를 갖는 변수 a를 만들어!” 라는 의미다.
    아아… C 배운지 3년찍고 4년만에 겨우 이해했다. 변수가 배열이 아니라, 배열 형태를 갖는 변수다. ㅅㅂ 무슨소리래.

    어쨌든 마지막, &a. &의 피연산자 형태는? int [3]인 배열이다. 그렇다면 다음과 같이 되겠다.

    { {int, int, int}, {int, int, int}, …, {int, int, int}, {a[0], a[1], a[2]}, {int, int, int}, …, {int, int, int}, {int, int, int} }

    라는 배열에서 a 배열의 위치란 말이지. 반환형은? “int 3개를 이어붙인 구조의 배열” 형태의 변수를 가리키는 포인터, 즉 int (*)[3] 이다.
    아ㅅㅂ 복잡하다… 이건 또 뭐여… 하겠지만, 그냥 납득해라. 글쓰는 나도 뭔소린지 제대로 모르겠다.
    일단은, int 3개짜리 배열을 통짜로 가리키는 포인터라고만 알아두면 되겠다. 이 말을 이해했다면 이 글을 읽을 필요도 없는거고…

    참고로, 포인터를 그 맴버로 갖는 배열과, 배열 자체를 가리키는 포인터 하나를 구분하기 위하여 다음과 같은 방법을 사용한다.

    포인터를 맴버로 갖는 배열 : int *p[n] : int형 포인터 n개 모인 새로운 자료형을 갖는 변수 p.
    배열 자체를 가리키는 포인터 : int (*p)[n] : int형 n개가 모인 자료형을 가리키는 포인터 p.

    구분 참 지랄같지만, 여튼 둘이 다르다는 것만 이해해 두자. 참고로 이런 구분방식은 함수 포인터에서도 나온다. 젭라…

    그렇담 &&a 도 있을 수 있지 않을까? 미안하지만 그딴건 없다 -.- 대신 int (**)[3] 은 있다.

    접어!

    3. 머리아픈 문제

    펼쳐!

    문제는 이중 배열이다. 이제부터 고민할 내용은 이거다.

    int a[2][3];

    이제부터 &a, a, &a[0], a[0], &a[0][0], a[0][0] 여섯 개를 다 살펴보아야 한다.
    불친절하게도 그림이 없으니, 알아서 메모지에 그림 그리면서 판단하면 되겠다.
    일단 배열구조는 다음과 같겠지.

    { {n00, n01, n02} {n10 n11 n12} }

    1. a[0][0]
    이건 간단하다. n00 자체를 가리킨다.

    2. &a[0][0]
    &의 피연산자는? int 형이다. 따라서 다음과 같겠다.

    { int, int, …, int, n00, n01, n02, n10, n11, n12, int, …, int, int }

    하여 형태는 int * 되시겠다.

    3. a[0]
    a[0]은 무엇을 가리키는가…?? a 배열의 첫 번째 원소일 것이다.
    그렇다면 a 배열의 첫 번째 원소는 무엇인가? 이중 배열의 첫 번째 원소이니, 그냥 1차원 배열이다.
    가리키는 대상은 {n00, n01, n02} 이고, 그 형태는 int [3]이다.

    4. &a[0]
    &의 피연산자는? 위에서 본 것처럼 int [3]형이다. 따라서…

    { {int, int, int}, {int, int, int}, …, {n00, n01, n02}, {n10, n11, n12}, {int, int, int}, …, {int, int, int} }

    가 된다. 반환형은? 당연히 int (*)[3].

    5. a
    a는 위에서 살펴본 바, 이중배열 전체를 다 가리키는 것이 분명하다.
    이제는 좀 보이겠지. 형태도 int [2][3] 이다.

    6. &a
    그리기 귀찮다. 이쯤 되면 보일게다.
    형태는 int (*)[2][3].

    접어!

    이 정도면 뭐 대충 감잡았을지도 모르겠다.

    물론 나도 제대로 이해한 것은 아니지만, 어쨌든 무언가 다르게 보이기 시작했다. 그리고 머리가 좀 더 아파지기 시작했고.
    어쨌든 본문 내용을 한 줄로 줄이면, “포인터 ㅅㅂ 조낸 어려워.”

    … 쓰고 나서 보니까 내용이 영 지저분하다. 나중에 시간나면 정리해야지.

    HV3 파일의 구조

    세 번째 연타로 쓰는 HV3 시리즈.
    혹시라도 HV3 파일 파서나 여튼 비슷한 작업을 하고 싶은 사람(있을지는 모르겠지만…)은 사용하면 좋을 것이다.

    단순히 HV3 파일을 풀어주는게 필요한 사람은 이쪽을 보면 된다.
    http://koasing.tistory.com/116

    1. Container & Attribute 구조

    Kipple. 씨는 HV3 구조가 XML과 비슷하다고 하였다.
    그런데 난 XML 구조를 모른다 -.- 전공도 아니고 아직까지 써 본 적도 없으니까.

    각설, 여튼 HV3 구조를 설명하기 전에 컨테이너와 속성의 구조를 설명하겠다.
    (개념이 아니다. 개념은 안드로메다네이버 사전에서 검색해보는게 빠를 것이다.)
    (뭐 이 문서를 이해할 정도의 수준이라면 이미 저 둘의 개념 정도는 잡혀 있겠지…)

    모든 데이터는 Little Endian으로 기록된다. 어짜피 PC에서 사용할 목적이라 그런 것 같다.

    1. 컨테이너
    컨테이너는 데이터를 구분하는 단위이며, 파일 데이터를 제외한 모든 정보는 컨테이너의 속성 부분에 기록된다.

    char TYPE[4] : 컨테이너 종류를 기술하는 매직 워드이다. Null Termination은 사용하지 않는다.
    int ATTRIBUTE_LENGTH : 속성 필드의 전체 길이를 기술한다. 각 속성들의 헤더 길이도 포함한다.
    int CONTAINER_LENGTH : 하위 컨테이너들의 전체 길이를 기술한다. 각 컨테이너들의 헤더 길이도 포함한다.
    int RAW_DATA_LENGTH : 속성이나 컨테이너가 아닌, 진짜 막바로 저장되는 데이터의 길이이다.
    char ATTRIBUTES[ATTRIBUTE_LENGTH] : 이 컨테이너의 속성 필드들이 기록된다.
    char CONTAINERS[CONTAINER_LENGTH] : 이 컨테이너의 하위 컨테이너들이 기록된다.
    char RAW_DATA[RAW_DATA_LENGTH] : 이 컨테이너에 속하는 데이터가 기록된다.

    이 때 ATTRIBUTE_LENGTH, CONTAINER_LENGTH는 기록되는 전체 길이, 즉 속성과 하위 컨테이너의 헤더 길이를 포함함에 주의해야 한다.

    2. 속성
    속성은 컨테이너에 속하는 데이터 중 정형화되어 있는 데이터를 말한다. 하나의 컨테이너는 여러 개의 속성을 가질 수 있으며, 속성 헤더에 각 속성의 종류와 길이를 저장함으로써 데이터를 구분한다.
    데이터로 문자열을 저장할 때 반드시 Null Termination을 사용하는 것 같지는 않다. 하지만 가급적 써 주는 것이 디코더의 호환성 문제를 해결하는데 도움이 될 것이다. 또한 문자열 저장에는 UTF-16LE를 사용한다. 뭔지 모르겠다고? Just google it.

    char TYPE[4] : 속성 종류를 기술하는 매직 워드이다. Null Termination은 사용하지 않는다.
    int LENGTH : 속성 데이터의 길이를 기록한다. TYPE, LENGTH는 계산에 넣지 않으며 순수 데이터의 길이만 기록한다.
    char DATA[LENGTH] : 이 속성의 데이터를 기록한다.


    2. Container & Attribute 목록

    현재까지 알려진 컨테이너와 속성의 TYPE 목록이다. 꿀뷰가 업그레이드됨에 따라서 추가되는 필드가 존재할 수 있으며, 보고되는 대로 업데이트할 지는 모른다(…) 내키면 하고 아니면 말고.
    XML에 해당하는 만큼, 컨테이너와 속성 순서는 아마 바뀌어도 상관 없을 것 같지만, 테스트해 보지는 않았다. 가급적 이 문서에 있는 순서를 지키도록 한다. 또, 매직 워드는 대문자로 기록하도록 한다. 역시 소문자로 바꿔서 테스트해 보지는 않았다. 데이터가 없는 경우에는 컨테이너나 속성을 기록하지 않는다. 기록했을 때의 동작여부 또한 테스트해 보지 않았다.

    HV30 c HV3 파일 최상위 컨테이너이다.
    VERS a HV3 버전을 저장한다. 현재는 HV3Maker의 버전을 대신 사용한다.
    FSIZ a HV3 파일의 전체 크기를 저장한다. 스트리밍때 필요한 듯.
    HEAD c 헤더 데이터 컨테이너
    GUID a Global Unique ID
    UUID a Univiersal Unique ID
    FTIM a File Timestamp
    DIRE a 제본방향. int형 데이터로 1=좌->우(국내 출판방식) 2=좌<-우(일본 출판방식)
    TITL a 제목
    ISBN a ISBN을 저장한다. 문자열로 저장하므로 주의할 것.
    WRTR a 작가
    PUBL a 출판사
    DATE a 출판일
    GENR a 장르
    COPY a 저작권 표기
    LINK a 웹 링크 데이터가 있다면 URI를 기록한다.
    MAKR a HV3 포맷으로 만든 사람
    COMT a 기타 코멘트
    LIST c 파일 리스트 컨테이너
    FINF c 파일 하나의 정보를 저장하는 컨테이너
    NAME a 파일 이름. 상대 경로를 포함할 수 있다.
    POS4 a HV3 파일 내에서의 절대 위치. FILE 컨테이너의 시작부분을 가리킨다.
    SIZE a 파일 크기. FILE 컨테이너의 크기가 아니므로 주의할 것.
    CRC3 a CRC32 데이터
    MTIM a File Timestamp
    BODY c 파일 전체를 담는 컨테이너
    FILE c 하나의 파일을 담는 컨테이너. RAW_DATA로 이미지 파일을 담는다.