------

[ AD ] Port Monitor ( Try to use a Best WebSite Monitoring Tool )

------

일단 커널에서 keypad D/D 를 만들어서 input device로 등록 했습니다

또 리눅스의 커널과 android 중간에서 커널에서 올라온 값들을 android에서

사용되어지는 값들을 매핑해주는 qwerty.kl(<<--통칭해서 이렇게 부르겠습니다.)

위의 작업후에 대부분의 키가 정상 작동하는데 도무지 HOME키가 정상 작동을 하지 않내요

드라이버 에서 input_report_key함수로 event hub까지 올라 가는거 같구요 분명히

qwerty.kl에서도 매핑 되어지는 거같은데 이상하게 적용이 안되어 지는군요 

그래서 질문 합니다 

위의 작업 말고 제가 다른 작업을 할께 더 있는건가요??

아니면 android소스에서 매핑된 key값으로 "HOME"을 콜 하는 부분에 문제가 있는걸까요..

그렇다면 android소스에서 제가 어디를 봐야 key값으로 "HOME"을 콜 하는 부분을 확인할수 있을까요

아무리 찾아도 답이 없어서 이렇게 질문 드립니다


vi KeyInputQueue.java
170     public static KeyEvent newKeyEvent(InputDevice device, long downTime,
171             long eventTime, boolean down, int keycode, int repeatCount,
172             int scancode, int flags) {
173         return new KeyEvent(
174                 downTime, eventTime,
175                 down ? KeyEvent.ACTION_DOWN : KeyEvent.ACTION_UP,
176                 keycode, repeatCount,
177                 device != null ? device.mMetaKeysState : 0,
178                 device != null ? device.id : -1, scancode,
179                 flags | KeyEvent.FLAG_FROM_SYSTEM);
180     }
181
182     Thread mThread = new Thread("InputDeviceReader") {
183         public void run() {
184             android.os.Process.setThreadPriority(
185                     android.os.Process.THREAD_PRIORITY_URGENT_DISPLAY);
186
187             try {
188                 RawInputEvent ev = new RawInputEvent();
189                 while (true) {
190                     InputDevice di;
191
192                     // block, doesn't release the monitor
193                     readEvent(ev);
194
195                     boolean send = false;
196                     boolean configChanged = false;
197
198                     if (false) {
199                         Log.i(TAG, "Input event: dev=0x"
200                                 + Integer.toHexString(ev.deviceId)
201                                 + " type=0x" + Integer.toHexString(ev.type)
202                                 + " scancode=" + ev.scancode
203                                 + " keycode=" + ev.keycode
204                                 + " value=" + ev.value);
205                     }
206

198번줄에 if(false)를 if(true)로 바꿔서 Log정보를 보시는게 어떨까요?
193                     readEvent(ev); -> 이 부분이 아마 cpp 쪽에서  event hub인가에서 키를 읽어 오는 부분일것입니다.

if (true)하면 밑에 log로 자세한 키 값이랑 정보가 나와서 디버깅이 편할것 같습니다.
흠..테스트는 못해봐서 100%보장은 못합니다^^;

안드로이드 Key/Touch event dispatch 과정

1. 리눅스 디바이스 드라이버로 부터 키를 받아들입니다.
소스 : ~Cupcake/frameworks/base/libs/EventHub.cpp

EventHub 개체가 생성될 때 openPlatformInput() 함수는 해당 device를 open합니다

 2. system_server 프로세스에서 key event를 받아들입니다.

소스 : ~Cupcake/frameworks/base/services/java/com/android/server/keyInputQueue.java
~Cupcake/frameworks/base/services/jni/com_android_server_KeyInputQueue.cpp


system_server 는 다른 Android Application처럼 zygote이 spawn하는 Dalvik VM 프로세스입니다. 
KeyInputQueue (KeyInputQueue.java) 에서 Thread가 생성되어 readEvent() 를 통해이벤트가 발생하는지를 계속 체크합니다.  readEvent 는 결국 JNI 를통하여android_server_KeyInputQueue_readEvent() 를 호출하여 KeyEvent를 받아들입니다


3. KeyInputQueue class에서 Thread가 생성되어 readEvent() 를 통해 발생한 이벤트를 계속 체크합니다.  readEvent 는 결국 JNI 함수인 android_server_KeyInputQueue_readEvent() 를 호출합니다. 발생한 이벤트가 있으면 QueuedEvent 에 넣게됩니다.

4. 이벤트는 WindoManagerService의 InputDispatcherThread 쓰레드에 의해서 큐에서 가져오게 됩니다. 이 이벤트는 현재 Activity에 이벤트를 전달하게 되고 Activity Looper는 해당 이벤트를 View에 전달하게 됩니다.


어디서 긁어 온건데.출처가..기억이.-.-;;

 


어떤 부서는 '주문의 정확도'가 평가 기준 이었고, 어떤 부서는 '재고 회전율', 또 다른 부서는 '매출 이익'이 평가 기준이었다.
하지만 그 모든 요소 전부로 평가받는 사람도 , 고객에게 중요한 우선순위대로 평가 받는 사람도 없었다.
'고객 요구 사항 준수'나 '납기일 준수' 등 전체 프로세스에 대해 책임지는 사람도 없었다.



《리엔지니어링 기업혁명》을 통해 기업변혁의 선봉에 섰던 마이클 해머 박사의 유작이자, 그가 남긴 저작의 완결판. 저자가 20여 년에 걸쳐 직접 세계 유수의 기업들과 함께 일하면서 경험한 성공과 시행착오의 모든 결과가 담겨 있다. 이 책은 일의 과정과 결과를 ‘빨리, 싸게, 멋지게’ 변화시키기 위해 필요한 모든 것을 담았다. 일이 무엇을 목표로 세팅되어야 하며, 일의 과정(프로세스)은 어떻게 효율적으로 설계되어야 하는지. 그리고 그 결과, 월급 받는 고용인이 아니라 자신이 오너라고 생각하는 프로페셔널들이 일하는 조직으로 변신할 수 있는 방도를 제시한다.


서문_ ‘지혜롭게 일하는 법’을 찾기 위해 생애를 바친 해머 박사를 위하여
Introduction_ 당신의 회사에도 영웅이 있는가?

1장. 당신이 일하는 프로세스를 새로운 눈으로 보라!
- 벌레의 시야와 독수리의 시야


우리의 일에는 뭔가 문제가 있다 _ 문제를 밝히는 7가지 질문
문제를 밝히는 질문 1 _ Whether(~해야 하는가, 안 해도 되는가)?
문제를 밝히는 질문 2 _ How precisely(얼마나 정확하게 할 것인가)?
문제를 밝히는 질문 3 _ What information(어떤 정보를 활용할 것인가)?
문제를 밝히는 질문 4 _ When(언제 할 것인가)?
문제를 밝히는 질문 5 _ Who(누가 할 것인가)?
문제를 밝히는 질문 6 _ Where(어디서 할 것인가)?
문제를 밝히는 질문 7 _ What(무엇을 할 것인가)?

2장. 관리를 위한 관리, 측정을 위한 측정을 하지 마라!
- 성과와 결과로 평가하는 새로운 기준


성과평가의 씻을 수 없는 7가지 죄악
성과평가시스템의 죄악 1 _ 무엇을 목적으로 하는지 의미 없는 ‘공허함(Vanity)’
성과평가시스템의 죄악 2 _ 나만 괜찮으면 만사 오케이 ‘부서이기주의(Provincialism)’
성과평가시스템의 죄악 3 _ 팔이 안으로 굽는 원리, ‘나르시시즘(Narcissim)’
성과평가시스템의 죄악 4 _ 알거야 - 괜찮겠지 - 이쯤이야, ‘게으름(Laziness)’
성과평가시스템의 죄악 5 _ 전체를 훼방 놓는 지엽적 집중, ‘협소함(Pettiness)’
성과평가시스템의 죄악 6 _ 파급력을 판단하지 못하는 땜질식 조치, ‘어리석음(Inanity)’
성과평가시스템의 죄악 7 _ 진지하지 못한 태도, ‘경솔함(Frivolity)’
성과평가시스템을 바로잡기 위하여 _ 결과물, 그리고 동인

3장. 업무를 토스하는 것만으로는 성과를 만들어낼 수 없다!
- 프로페셔널들로 당신의 조직을 채우는 인적 쇄신


프로들이 일 잘할 수 있는 환경 만들기 _ 임파워먼트
고성과 기업이 필요로 하는 새로운 종류의 인간형 _ 선수를 선발해 게임을 가르친다
변화를 직면한 인간유형의 대응방식 _ 앞서는 자 20 : 뒤따르는 자 60 : 거부하는 자 20
프로페셔널은 쫓아내고 젖은 낙엽들만 남는 기업이 되지 않으려면
시간이 흐르면 자연히 승진할 거라 기대하지 마라
프로페셔널이 되기 위하여 _ 기술, 지식, 트레이닝
혁신의 조력자인가, 훼방꾼인가? _ 정보기술
프로페셔널 집단이 일을 할 때 관리자의 역할 변화

4장. 일을 ‘시키는’ 리더가 아니라 일을 ‘해내게 하는’ 리더가 되라!
- 일하지 않는 잉여인간이 없는 조직문화의 창조


변화를 가로막는 죽은 리더십에 대하여 애도를 보내며
새로운 리더, 인에이블러(Enabler) _ 쉘의 변방에서 만들어낸 위대한 혁명
가장 더럽고 터프한 부분을 맡는 것이 리더
진정한 리더가 조직에 심어주어야 할 5가지의 핵심가치
변화를 만들어내는 리더의 6가지 비밀도구

5장. 올바른 프로세스가 제자리에서 돌아가도록 운용하라!
- 조직운영과 전문성, 그리고 헌신


명령권자도 상사도 아닌 인에이블러, 카탈리스트
프로세스를 원활히 돌아가도록 만드는 코디네이터들의 역량
프로세스 혁신을 만들어내고 일을 변화시키는 데 필요한 전문성
혁신의 제1요소, ‘너 자신을 알라!’
당신의 회사는 명령문화인가, 카우보이문화인가?

6장. ‘빨리, 싸게, 멋지게’, 적게 노력하고 많이 먹으려 하지 마라!
- 비즈니스 사례들에서 얻는 교훈


지나치게 완벽을 추구하는 욕심이 화를 부른 포에이시스의 사례
미봉책으로 실패를 부르고 만 하타웨이의 사례
위기의 테트라팩을 살려낸 프로세스 혁신의 사례

부록1_ 프로세스 디자인의 방법론
부록2_ 고성과 조직을 위한 성과평가시스템 구축


No more Innovation ?

우리는 아지곧 갈 길이 멀었다!
'느리게, 비싸게, 후지게' 일하고 있지 않은가?

#1. 부서장 결재 받고, 옆부서로 토스, 다시 검토, 또 결재, 또 토스 ...
#2. 눈에 보니는 긴축·절약 운운하다, 결국 큰 고기 다 놓치고...
#3. 마감, 규정, 전결만 준수하면 OK, 더 잘할 필요는 없어...
#4. 시스템이 햐야 할 일을, 한 사람의 영웅이 나서서 척척 해결...
#5. 한 회사가 아니라 부서별로 딴 나라, 다른 팀에서 굿을 해도 몰가...

About STL : C++ STL 프로그래밍(4)- 벡터 Vector

#include 
#include 

using namespace std;

// 방의 유저 정보
struct RoomUser
{
	int CharCd; // 캐릭터 코드
	int Level;  // 레벨
};

void main()
{
	// 유저1
	RoomUser RoomUser1; 	RoomUser1.CharCd = 1;	RoomUser1.Level = 10;
	// 유저2
	RoomUser RoomUser2; 	RoomUser2.CharCd = 2;	RoomUser2.Level = 5;
	// 유저3
	RoomUser RoomUser3; 	RoomUser3.CharCd = 3;	RoomUser3.Level = 12;

	// 방의 유저들을 저장할 vector
	vector< RoomUser > RoomUsers;
	
	// 맨 마지막에 추가
	RoomUsers.push_back( RoomUser1 );
	RoomUsers.push_back( RoomUser2 );
	RoomUsers.push_back( RoomUser3 );

	// 방에 있는 유저 수
	int UserCount = RoomUsers.size();

	// 방에 있는 유저 정보 출력

	// 반복자로 접근 -  순방향
	cout << "[순방향]" << endl;
	for( vector< RoomUser >::iterator IterPos = RoomUsers.begin(); 	IterPos != RoomUsers.end(); ++IterPos )
	{
		cout << "유저코드 : " << IterPos->CharCd ;
		cout << "유저레벨 : " << IterPos->Level << endl;
	}
	cout << endl;
	
	// 반복자로 접근- 역방향
	cout << "[역방향]" << endl;
	for( vector< RoomUser >::reverse_iterator IterPos = RoomUsers.rbegin(); IterPos != RoomUsers.rend(); ++IterPos )
	{
		cout << "유저코드: " << IterPos->CharCd ;
		cout << "유저레벨: " << IterPos->Level << endl;
	}
	cout << endl;

	// 배열 방식으로 접근
	cout << "[배열]" << endl;
	for( int i = 0; i < UserCount; ++i )
	{
		cout << "유저 코드 : " << RoomUsers[i].CharCd;
		cout << "유저 레벨 : " << RoomUsers[i].Level << endl;
	}
	cout << endl;

	cout << "[접근]" << endl;
	// 첫 번째 유저 데이터 접근
	RoomUser& FirstRoomUser = RoomUsers.front();
	cout << "첫 번째 유저의 레벨 : " << FirstRoomUser.Level << endl << endl;

	RoomUser& LastRoomUser = RoomUsers.back();
	cout << "마지막 번째 유저의 레벨: " << LastRoomUser.Level << endl << endl;

	// at을 사용하여 두 번째 유저의 레벨을 출력
	RoomUser& RoomUserAt = RoomUsers.at(1);
	cout << "두 번째 유저의 레벨: " << RoomUserAt.Level << endl << endl;

	cout << "[삭제]" << endl;
	UserCount = RoomUsers.size();
	cout << "현재 방에 있는 유저 수: " << UserCount << endl << endl;

	// 삭제
	RoomUsers.pop_back();

	UserCount = RoomUsers.size();
	cout << "현재 방에 있는 유저 수: " << UserCount << endl << endl;
	// 아직 방에 유저가 있다면 모두 삭제한다.
	if( false == RoomUsers.empty() )
	{
		RoomUsers.clear();
	}

	UserCount = RoomUsers.size();
	cout << "현재 방에 있는 유저 수: " << UserCount << endl;
}


vector vs. list

vector 사용법을 보면 list와 비슷한 부분도 있고 다른 부분도 있음을 알게 되리라 생각합니다.
vector과 list의 차이점을 잘 이해한 후 올바르게 사용해야 됩니다 .

vector와 list의 차이를 정리하면 아래 표와 같습니다.

vector List
크기 변경 가능 O O
중간 삽입, 삭제 용이 X O
순차 접근 가능 O O
랜덤 접근 가능 O X
[표 1] vector와 list의 차이

[표 1]을 보시면 아시겠지만 vector와 list의 차이점은 크게 2가지입니다.
  • 중간 삽입, 삭제   ==== Vector
  • 랜덤 접근  == List
중간 삽입, 삭제가 없고 랜덤 접근을 자주 해야 된다면 vector가 좋고,
중간 삽입, 삭제가 자주 있으며 랜덤 접근이 필요 없으면 list가 좋습니다.


vector 멤버 중 일반적으로 자주 사용하는 멤버들은 아래와 같습니다.

멤버 설명
assign 특정 원소로 채운다
at 특정 위치의 원소의 참조를 반환
back 마지막 원소의 참조를 반환
begin 첫 번째 원소의 랜던 접근 반복자를 반환
clear 모든 원소를 삭제
empty 아무것도 없으면 true 반환
end 마지막 원소 다음의(미 사용 영역) 반복자를 반환
erase 특정 위치의 원소나 지정 범위의 원소를 삭제
front 첫 번째 원소의 참조를 반환
insert 특정 위치에 원소 삽입
pop_back 마지막 원소를 삭제
push_back 마지막에 원소를 추가
rbegin 역방향으로 첫 번째 원소의 반복자를 반환
rend 역방향으로 마지막 원소 다음의 반복자를 반환
reserve 지정된 크기의 저장 공간을 확보
size 원소의 개소를 반환
swap 두 개의 vector의 원소를 서로 맞바꾼다

안드로이드 Android HOME Key Activity


HOME키를 가로챌 수는 없지만, HOME키가 눌렸는 지 여부는 확인 할 수 있습니다.

해당 Activity의 startActivity (startActivityForResult..) / finish / startService 등을 override하여

해당 task가 유지되는 case를 제외하고,

onUserInteraction / onUserLeaveHint 등을 override하여

시스템에서 task를 switch하는 case (전화수신등)을 제외하고,

onPause / onStop 에서 HOME키가 눌렸다고 볼 수 있습니다.


이 말이 어렵다...!!!!

[슬립 Hold]
1.Hardware Hold key 를 누르면
---onWindowFocusChanged()
---onSaveInstanceState()
---onPause()

2.해제 : Hardware Hold key 를 누르면
---onResume()
---onWindowFocusChanged()

[팝업창]
1.Hardware Home Key를 길게 누르면.....
---onWindowFocusChanged() ->
2.... 이상태에서 Back누르면 돌아오면..
---onWindowFocusChanged() ->

[팝업창 2]



기타..그냥 Homekey 누르기...또 실행시...????????

'온라인게임' 카테고리의 다른 글

About STL : C++ STL 프로그래밍(4)- 벡터 Vector  (0) 2010.10.12
vector vs list  (0) 2010.10.12
CListBox::AddString  (0) 2010.10.12
vc++, 외부 라이브러리 사용하기  (0) 2010.10.11
visual c++ error c2664  (0) 2010.10.11
CListBox::AddString

int AddString(
   LPCTSTR lpszItem
);

리스트 박스에 문자열 추가 하기

// Add 10 items to the list box.
CString str;
for (int i = 0; i < 10; i++)
{
   str.Format(  _T("item string %d") , i );
   m_myListBox.AddString( str );
}

'온라인게임' 카테고리의 다른 글

vector vs list  (0) 2010.10.12
안드로이드 Android HOME Key Activity  (0) 2010.10.12
vc++, 외부 라이브러리 사용하기  (0) 2010.10.11
visual c++ error c2664  (0) 2010.10.11
디자인 패턴  (0) 2010.10.07
vc++ , 외부 라이브러리(Extern Lib)는 설치만 한다고, 바로 프로젝트에서 사용되는 것이 아닙니다.

1. 소스 코드에서 해당 h파일을 include를 하셔야 합니다.

#include "xxx.h" 이런식이 되겠지요. 헤더 추가안하시면 같은 폴더에 있어도 함수는 사용하지 못합니다.

이것을 안하신 경우 에러메시지는 'xxx함수를 찾을 수 없습니다' 라고 나올 것입니다.

 

2. h파일을 추가한 경우 'xxx.h'를 찾을 수 없습니다. 라고 나오는 경우가 있을 수도 있겠군요.

해당 h파일이 다른 폴더에있다면, 그 디렉토리를 추가해주셔야합니다.

프로젝트 설정에서 구성 속성-> C/C++ -> 일반의 추가 디렉토리(Additional Directory)에, header파일이 있는 폴더의 

전체경로나 상대경로(소스기준)를 입력해주시면 됩니다.





 

 


3.  아래같은 메시지가 나올 수 있습니다.

 

링크에러죠. LNK에러 어쩌고... xxx@@@ABC..어쩌고저쩌고 찾을 수가 없습니다.

이경우는 lib추가가 안된경우입니다.

프로젝트 설정에서 구성 속성-> 링커 -> 입력 -> 추가 종속성에 해당 lib를 추가해주면 됩니다.

헌데 이것은 하셨다고 적어놓으셨더군요. 그렇다면 1, 2번이 안된것 같습니다.

물론 lib도 구성 속성-> 링커-> 일반 -> 추가 라이브러라 디렉토리에 해당 lib가 있는 폴더 추가 하셔야합니다.

 


<끝>

'온라인게임' 카테고리의 다른 글

안드로이드 Android HOME Key Activity  (0) 2010.10.12
CListBox::AddString  (0) 2010.10.12
visual c++ error c2664  (0) 2010.10.11
디자인 패턴  (0) 2010.10.07
모바일 게임 기획  (0) 2010.10.05

'CreateFileA' : 매개 변수 1을(를) 'LPCWSTR'에서 'LPCSTR'(으)로 변환할 수 없습니다.
1>          가리킨 형식이 관련이 없습니다. 변환하려면 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요합니다.

An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.
This type is declared in WinNT.h as follows:

#ifdef UNICODE
   
typedef LPCWSTR LPCTSTR; #else
   
typedef LPCSTR LPCTSTR;
#endif




Pointer to a constant null-terminated string of 8-bit Windows (ANSI) characters.
For more information, see Character Sets Used By Fonts.
This type is declared in WinNT.h as follows:








typedef __nullterminated CONST CHAR *LPCSTR;
Character Set 이 vc 6.0이나 2003에서는 Use Multi-Byte Character Set인데, 2005에서는 Use Unicode Character Set이라 발생하는 문제라고 한다. 그래서 프로젝트 -> 속성 -> 구성속성 -> 프로젝트 기본값(문자 집합) 에서 해당 값을 유니코드 문자 집합 사용에서 멀티바이트 문자 집합 사용으로 체크해 주면 된다. 그렇게 해결하는 것보다는 이렇게 하는게 좋을거다. MessageBox(hWnd, "Hello World!", "API", MB_OK); 대신에 MessageBox(hWnd, TEXT("Hello World!"), TEXT("API"), MB_OK); 라고 해주는 방법. TEXT("") 혹은 _T("") 정도의 매크로가 (아마) tchar.h에 정의되어 있어. 내가 알기로 gcc에도 tchar.h가 포함되어 있고 거기엔 TEXT("")만 정의되어 있을거야. tchar.h가 뭐하는거인지는 직접 찾아보도록 하게나. ㅎㅎ 뭐.. char 만 쓰다가 TCHAR 쓰려면 삽질이 좀 필요할지도 모르지만..

'온라인게임' 카테고리의 다른 글

CListBox::AddString  (0) 2010.10.12
vc++, 외부 라이브러리 사용하기  (0) 2010.10.11
디자인 패턴  (0) 2010.10.07
모바일 게임 기획  (0) 2010.10.05
WinSock 2 client server  (0) 2010.10.03

1.main.c                         2.ClassA.h                  3.ClassZ.h

#include "ClassA.h"        class ClassA               class ClassZ
#inlcude "ClassZ.h"        {                                {
                                          int ax;                         int zx;
int main()                             int ay;                         int zy;
{                                         ClassZ * pz;               ClassA *pa;
     int ma;                       }                                }
     ClassA a;
     ClassZ z;
     int mb;
}

자..정상적인 부분을 이해하셨다면 뭐가 문제인지 아실겁니다~


자..정상적인 부분을 이해하셨다면 뭐가 문제인지 아실겁니다~

main.c에 정체불명의 "ClassA a;"를 만났습니다. ClassA.h를 쫓아갑니다.

ClassA.h에 정체불명의 ClassZ * pz;를 만났습니다. ClassZ.h를 쫓아갑니다.
ClassZ.h에 정체불명의 ClassA * pa;를 만났습니다. ClassA.h를 쫓아갑니다.

ClassA.h에 정체불명의 ClassZ * pz;를 만났습니다. ClassZ.h를 쫓아갑니다.
ClassZ.h에 정체불명의 ClassA * pa;를 만났습니다. ClassA.h를 쫓아갑니다.

다행일지 몰라도 컴파일러는 나름 똑똑한지 계속 무한루프를 돌진 않군요~

"ClassZ * pz;가 뭡니까? 식별할 수 있는게 필요합니다. 이런식으로 나오믄 크기를 걍 int형으로 생각해버리겠습니다"
이렇게 경고를 줍니다~젤 위에 사진의 내용이 이런 식입니다^^


우선 문제가 제가 예전에 무언가 만들다가 상호참조가 자주 발생했었는데
현재는 어떻게 저렇게 만드는지 이해가 가질 않는군요^^

간략히 상호 참조를 해결하려면 ClassA나 ClassZ의 헤더파일에 해더를 인클루드하지말고 간단히 Class가 있다고 정의만 내려줍니다~

ClassZ.h 이파일을 수정해보겠습니다.

class ClassA;

class ClassZ
{
     int zx;
     int zy;
     ClassA * pa;
}

ClassZ.h가 있다면 ClassZ.c파일이 있겠죠~
ClassZ.c파일에서 간단히 #include "ClassA.h"로 인클루드만 하시면 회피합니다.

class ClassA;를 선언함으로써 "글쎄 obj가 없어도 일단 이런 클래스가 있다는 가정하에 님부터 크기를 파악해줘"라는게 됩니다.

그럼 일단 ClassZ.obj를 "ClassA"라는 클래스가 있다는 가정하에 만들게 되고, 오브젝트를 모두 만든후에 링크를 걸때는 classZ.c에 선언된 헤더를 보고 링크를 걸게 되는거죠~


, , , , , , , ,

'온라인게임 > vc++' 카테고리의 다른 글

사용 클래스의 싱글턴으로 구성  (0) 2010.10.08
줄번호 visual studio c++ 2010  (0) 2010.10.08
visual studio 2010 동영상 강좌 / 강의  (0) 2010.10.07
단축키 visual studio 2010  (0) 2010.10.07
Pre-processor(전처리기)  (0) 2010.10.07

4G 와이브로,내년 3월 전국 인터넷 연결
 


KT와 인텔, 삼성전자가 와이브로(휴대인터넷) 확장을 위한 투자에 본격 나선다. 이에 따라 내년 3월부터 와이브로망을 통한 인터넷 사용이 전국으로 확대될 전망이다.

■10월 5대 광역시 와이브로 개통

KT는 1일부터 전국 5개 광역시에서 와이브로망을 사용할 수 있게 됐다고 지난달 30일 밝혔다. 광역시 사이를 잇는 고속도로에서도 와이브로 망 사용이 가능하다.

내년 3월에는 전국 82개 도시에서 와이브로 망을 통한 인터넷 접속이 가능해진다. 5개 광역시와 82개 시에 거주하는 인구는 우리나라 전체 인구의 85%에 이른다.
 
SK텔레콤 역시 지난달 말까지 5대 광역시에 와이브로 망 확충을 마쳤다. 또 이달 말까지는 기타 중소도시에 와이브로 망을 구축하는 등 전국으로 서비스를 확대해 나갈 계획이다. 지금까지 수도권에서만 사용할 수 있었던 와이브로 기반 인터넷이 전국으로 확대되는 셈이다.

■‘움직이는 인터넷’ 생활 속으로

현재 와이브로는 KT ‘에그’와 같은 무선공유기나 별도의 외부 장착형 모뎀을 활용해 이용할 수 있다. 에그는 와이브로 망의 신호를 무선랜(Wi-Fi) 신호로 바꿔 휴대용 기기들을 인터넷에 접속할 수 있게 해주는 공유기다.

인텔은 와이브로 인프라 구축에 228억원을 투자한 데 이어 와이브로 수신기능이 기본 탑재된 칩을 출시했다. 이 칩은 노트북과 넷북 등 휴대용 인터넷기기에 탑재된다. 이달 초부터 LG전자, 삼성전자, 휴렛팩커드(HP), 에이서 등이 이 칩을 탑재한 노트북, 넷북을 출시한다.

와이브로 수신기능이 탑재된 이 칩을 사용하면 별도의 모뎀 없이도 와이브로 망을 통한 인터넷 접속이 가능해진다.

특히 와이브로 망을 통한 인터넷 접속은 무선랜의 단점인 이동성을 갖출 수 있다는 점에서 의미가 크다. 무선랜은 빠른 속도와 무료라는 장점에도 불구하고 특정지역에서만 이용 가능하다. 이동하는 차 안이나 열차 등에서는 사용이 불가능했다. 반면 와이브로는 KTX처럼 고속으로 이동하거나 달리는 차 안에서도 인터넷에 접속할 수 있게 해준다.

표현명 KT 개인고객부문장(사장)은 “추석이나 명절엔 오랜 시간 차 안에 갇혀 있어야 한다. 이럴 때 와이브로 망을 이용하면 휴대용멀티미디어기기(PMP), 노트북 등으로 인터넷에 접속할 수 있게 돼 가족들의 무료함을 달래줄 수 있을 것”이라고 말했다.

특히 아이폰4가 출시되면서 선보인 ‘페이스타임’과 같은 영상통화 기능을 이동 중에도 사용할 수 있게 돼 사용자 입장에서는 비싼 통화료를 절감할 수 있는 장점도 생긴다.

또 스마트폰과 갤럭시탭, 휴대용 게임기 등 최근 출시되는 대다수 기기들이 무선랜 모듈을 탑재하면서 와이브로 망의 사용성은 더욱 높아질 전망이다.

이석채 KT 회장은 “이동하면서 사용할 수 있는 무선인터넷을 계속 보완하면서 ‘모바일 원더랜드’를 완성해 나가겠다”고 강조했다.

/postman@fnnews.com권해주 홍석희기자

■사진설명=이석채 KT 회장(오른쪽)과 스리람 비스와나단 인텔 무선통신사업 협력 총괄매니저가 지난달 30일 서울 세종로 KT올레스퀘어에서 인텔 와이맥스 와이파이 통합칩을 탑재한 노트북으로 무선인터넷 서비스를 시연하고 있다.

'People in' 카테고리의 다른 글

가사 : 언제나 ~ 허각  (0) 2010.11.12
커피 프림의 원료인 팜유는  (0) 2010.10.25
제작 엔터테인먼트  (0) 2010.10.11
3G망과 WiFi(와이파이), 와이브로 비교  (0) 2010.10.07
CLEAN 클린  (0) 2010.10.07

+ Recent posts