본문 바로가기

Application/C/C++

(73)
[강좌] 블럭쌓기 만들기 1일차 일단.. 강좌 들어가기 전에.. 전 사실 동영상 강의라던가 그런걸 많이 보질 않아서 지루하게 강좌를 이끌어갈듯 합니다만, 이것은 차차 나아질거라 생각합니다. 첫 강의는 완벽하게 독단적으로 할 생각입니다. 원칙적으로 제 강의를 가져다가 이름만 바꿔서 자기가 썼다고 구라를 치시건 뭘 하건 그닥 상관은 없습니다. 프로그래밍 언어를 제가 만든것도 아니고.. 이런 지식 정도야 인터넷 좀 뒤지면 어디서든 나오는거니까요.. 그렇다고 라이센스를 포기한건 아닙니다.. 하지만 제가 어떻게 막을 수 있는 방법이 있는것도 아니고요. 뭐 막 퍼가시더라도 한가지 부탁이 있다면, 퍼가실땐 끝까지 퍼가시라는겁니다. 비록 제가 엄청난 고수는 아닐지라도 이것저것 물어보면 굉장히 곤란한 질문(EX: 네이트온 해킹이 가능한가 등) 이외에는..
C 포인터 - 변수와 포인터 Source : http://i7dayz.egloos.com/1093041 서론 C Language를 공부하면서 가장 이해하기 어려운 것이 무어냐고 물어본다면, 아마도 거의 대부분 "바로 포인터(Pointer)라는 녀석이다!" 라고 말할 것입니다. C에서 다른 건 다 이해가 되어도 "포인터 만큼은 죽어도 모르겠다" 라고 말하는 경우를 제 주변에서도 심심치 않게 봐왔습니다. 사실 C는 어려울 수밖에 없습니다. C를 그저 프로그래밍의 기초 과정에서 배우는 옛날 언어라고 생각하고 가볍게 볼만큼 만만한 녀석이 전혀 아닙니다. C는 어셈블리(Assembly)의 사촌입니다. 다시 말하면, C는 하드웨어 - 특히 마이크로프로세서(CPU)와 친한 녀석입니다. 때문에 하드웨어에 대한 기반 지식없이는 C를 제대로 이해할 ..
포인터는 왜 어려울까? Source : http://minjang.egloos.com/2291148 왜 C/C++를 가장 강력하고 또 가장 어려운 언어라고 할까? 아마 대부분 이 물음에 ‘포인터’로 답할 것이다. 포인터는 강력함과 동시에 수 많은 어려움을 선사하여 많은 C/C++ 개발자를 괴롭힌다. 포인터로 고생하는 초보자들은 어디서나 볼 수 있다. 심지어는 포인터만 다룬 책들도 많이 있다. 도대체 포인터는 왜 이렇게 어려울까? 먼저, C/C++의 포인터 문법 자체가 복잡하다. 대부분 주소 값을 얻거나(&) 그 주소 값의 내용을 읽는 것(*)만 알아도 되지만 포인터 형태가 조금만 복잡해져도 사실 쉽지 않다. int *a[3]은 매우 간단하지만 int (*a)[3]만 되어도 그리 쉽게 머리 속에 그림이 잘 안 그려진다. 게다가 ..
리눅스 채팅 클라이언트 Source : http://blog.naver.com/muwoo850502/50032210312 1: #include 2: #include 3: #include 4: #include 5: #include 6: #include 7: #include 8: #include 9: #define PORT 7777 10: #define BUFSIZE 1024 11: void signalHandler(int signo); 12: int sockfd; 13: /*argv[1]은 수와 점 표기의 ip주소*/ 14: main(int argc,char 15: *argv[]) 16: { 17: struct sockaddr_in servAddr; 18: char 19: sendBuffer{BUFSIZE],recvBuffer[..
리눅스 채팅 서버 Source : http://blog.naver.com/muwoo850502/50032210336 1: #include 2: #include 3: #include 4: #include 5: #include 6: #include 7: #include 8: #include 9: 10: #define PORT 7777 11: #define MAXPENDING 5 12: #define BUFSIZE 1024 13: 14: main() 15: { 16: int servSockfd; 17: int clntSockfd; 18: struct sockaddr_in servSockfd; 19: struct sockaddr_in clntSockfd; 20: char recvBuffer[BUFSIZE]; 21: char se..
주변광 센서를 이용한 보다 스마트한 기기 구현하기 Source : http://www.ednkorea.com/print.asp?articleId=9537 ALS(Ambient-Light Sensor)는 오랫동안 업계에서 사용되어 왔지만 애플(Apple)의 아이폰 같은 스마트폰의 성공에 힘입어 인지도가 높아졌다. 아이폰은 주변 상황에 따라 디스플레이의 조명을 조정하여 전력 소모량을 줄이고 배터리 사용 시간을 늘리기 위해 ALS를 도입했다. 또한 ALS과 흡사한 근접 디텍터를 활용하여 사용자 행동 패턴에 따라 스스로 조명을 재설정하도록 하기도 했다. 이처럼 전력 소모량을 줄여야 하는 대형 LCD의 스마트폰이 현재 ALS의 주요 사용처이지만 앞으로의 양상은 다를 듯하다. 각종 애플리케이션들이 에너지 절약은 기본이고 향상된 사용자 편의성을 중요하게 여길 소지가..
D3DFORMAT 다양한 종류의 표면 포맷을 정의한다. 구문 typedef enum _D3DFORMAT { ...(values) } D3DFORMAT; 포맷에는 몇개의 종류가 있다. 부호 없음 포맷 부호 첨부 포맷 믹스 포맷 FOURCC 포맷 버퍼 포맷 부동 소수점 포맷 IEEE 포맷 백 버퍼 또는 디스플레이 포맷 모든 포맷은, 왼쪽에서 오른쪽으로 최상정도 비트 (MSB)로부터 최하정도 비트 (LSB)의 순서에 나타나고 있다. 예를 들어, D3DFORMAT_ARGB 는, MSB 채널 A (알파)로부터 LSB 채널 B (파랑)의 순서이다. 표면 데이터를 암벽 횡단 할 때 데이터는 LSB 로부터 MSB 의 순서로 메모리에 저장 된다. 이것은, 메모리내의 채널의 순서가, LSB (파랑)로부터 MSB (알파)의 순서인 것을 의미..
[CPP] 디버깅에 관하여 Source : http://tomeii.com/bbs/board.php?bo_table=tipntech&wr_id=108&page=6 저도 디버깅쪽은 잘 못하지만 그래도 경험에 비추어(...) 얘길한다면, 우선 디버깅에 대해 나온 사이트는 잘 모르겠습니다. 사용법이라고 해봤자, 거기서 거기거든요. Visual Studio의 기본 기능만으로도 거의 대부분의 오류를 디버깅 할 수 있습니다. 우선, 디버깅 할때 제일 많이 뜨는 오류가 Access Violation 인데요, 잘못된 메모리 참조 오류입니다. 사실 다른데에서 오류가 나는 일은 극히 드물며, 포인터를 잘못 썼을경우에 나타나지요. 이런 경우 사용자가 프로그램을 쓰다가 프로그램이 죽는 일이 발생할 수 있으므로, 안정성에 문제가 생기며, 더욱 문제가 되..