달력

52025  이전 다음

  • 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

1) Visual Studio의 속성페이지에서 링커-입력-추가종속성에서 관련 lib를 추가한다.

2) 소스에서 다음과 같은 지정문을 작성한다

      #pragma comment(lib, "libName.lib")

3) 프로젝트에 임포트 라이브러리를 추가한다. (솔루션 탐색기-프로젝트 우클릭-추가-기존 항목-임포트 라이브러리 선택)

'유용한 정보~' 카테고리의 다른 글

등과 등등 정확히 어떤 뜻일까??  (0) 2011.02.11
캡슐화  (0) 2010.09.25
갤럭시 vs 아이폰4g 비교사양  (0) 2010.09.14
iPhone4, OS4.0의 자이로스코프기능  (0) 2010.09.14
Posted by 와일드_
|

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

babylon

카테고리 없음 2011. 7. 11. 13:19
프로그램을 설치하다가, 옵션을 빼는것을 실수해서 부가유틸을 설치했는데,

뭔가 싶어 확인해보니 괜찮은거같아 포스팅합니다.

바빌론(babylon)이라는 유틸?인데

텍스트 위에서 Ctrl+마우스오른쪽 클릭을 하면, 해당 단어에 대한 뜻이 사전에서 검색되어 나옵니다.

가끔 모르는 단어(영단어, 한글단어)가 나올때 유용할거같습니다.

상세한 리뷰는 생략........ 
Posted by 와일드_
|
동적 할당이 한번이라도 들어간 프로그램을 다루다보면, 
메모리를 해지할때, 즉 free(...) 함수를 호출할때 예외가 발생하고 종료되는 경우를 겪어봤을 것이다.

주위의 사람들을 둘러보니
이럴때 대처 방식은 이랬다.

'그냥 메모리 해지 하지 말자'


but,,,,,,,, 메모리 관리는 철저히 관리되어야 한다.

적절한 곳에 free(...)를 호출했는데도 에러가 난다면, 
이유는 다음과 같을 것으로 예상되니 확인해보길 바란다..

1) 동적할당할때 지정해준 사이즈를 확인한다.
2) memset(...) 함수를 사용했다면, 이때 지정해준 크기와, 동적할당시 지정해준 크기가 같은지 확인한다.
3) 동적할당된 변수를 사용할때 인덱스가, 범위를 벗어나서 사용하고 있지는 않은지 확인한다.

 

'C Programming' 카테고리의 다른 글

구조체로 malloc 사용법 및 구조체의 사이즈  (0) 2010.11.01
Posted by 와일드_
|

등5(等)[등ː]
ꃃꃟ①『명사나 어미 '-는' 뒤에 쓰여』 그 밖에도 같은 종류의 것이 더 있음을 나타내는 말. ¶울산, 구미, 창원 등과 같은 공업 도시/정치, 군사, 경제, 사회 등 여러 면에 걸친 개혁/주인공의 성격이나 행동 등이 잘 나타난 대목/강과 도로가 빠져 있는 등 허술하기 짝이 없는 지도.
②『명사 뒤에 쓰여』 열거한 대상이 복수임을 나타내거나 그것들을 한정함을 나타내는 말. ¶남부군 사령부의 주최로 거리가 가까운 전남, 전북, 경남 등 3도 유격대의 씨름 선수를 초빙하여 씨름 대회를 열었다.≪이병주, 지리산≫ ꄘ①들03.ꄘ①따위①.

등등1(等等)[등ː-]
ꃃꃟ『명사나 어미 '-는' 뒤에 쓰여』 그 밖의 것을 줄임을 나타내는 말. ¶농산물 도매 시장에는 사과, 배, 귤 등등의 온갖 과일이 넘친다./립스틱, 매니큐어, 껌, 동전 등등 잡다한 물건이 방바닥에 쏟아졌다./이 건물 안에서 탁구도 치고 영화도 보고 노래도 부르는 등등 여러 가지 오락을 즐길 수 있다.


벌써 5년정도는 된거같다.
등, 등등을 어쩔때 써야하는지 궁금했었는데
귀찮다는 이유로 지금껏 미뤄만 오다가 검색을 해보았다.

검색후 10초만에 찾게되었고, 이해하게 되었다.(__);

이게 궁금하게된 이유는
어떤때는 '등' 혹은 '등등' 이라는 말을쓰면
그 이외에는 없다는 말이라는 소리를 어디선가 주워들어서인데,,

알고보니 종류가 동일한 것들이 더 있음을 나타낼때는 '등'
             종류가 다른 것들이 더 있음을 나타낼 때는 '등등'  이었던 것이다..

뭐 .. 앞으로는 알고 쓰자!!

'유용한 정보~' 카테고리의 다른 글

DLL 임포트 라이브러리 지정 방법 3가지  (0) 2012.03.28
캡슐화  (0) 2010.09.25
갤럭시 vs 아이폰4g 비교사양  (0) 2010.09.14
iPhone4, OS4.0의 자이로스코프기능  (0) 2010.09.14
Posted by 와일드_
|

C, C++프로그래밍을 할 줄 알면서, Objective-C로 되어있는 아이폰 프로그램 코드를 보자니
생소한 코드 형태 때문에 헷갈리시는 분들이 읽으시면 도움이 되실것 같네요.

C언어와 Objective-C와의 가장 큰 차이점은 바로 '절차지향'언어이냐, '객체지향'언어이냐입니다.
C언어는 절차지향 언어로 프로그램 코드가 위에서 아래로 순차적으로 실행되고,
Objective-C는 C언어 위에 올려져 있는 계층적인 구조입니다. C언어를 확장하여 '객체'를 생성하고 다룰 수 있는 언어를 새로 만들어 낸 것입니다. 따라서, Objective-C언어는 객체지향언어의 특징을 갖습니다.

객체의 개념은 알고 있다고 가정하고,
기존의 언어(C, C++)와의 차이점을 중심으로 많이 다른 부분을 중심으로 설명하도록 하겠습니다.

제가 정리해본것은 7가지정도가 있습니다.
1)
일단, C언어의 printf("Hello World\n"); 라는 코드는 Objective-C언어에서 NSLog(@"Hello world"); 라는 코드와 동일합니다. @는 Objective-C언어의 문자열상수라는 것을 뜻합니다. 따라서 @를 붙이지 않으면 에러가 나게 됩니다.

2)
클래스로부터 나온 것을 인스턴트, 이 인스턴스가 수행하는 내용을 '메서드'라고 하는데,
메서드를 호출하는 것을 Objective-C에서는 수신자에게 메시지를 보낸다고 표현합니다.
호출하는 방식은 다음과 같습니다.
[receiver message];
                                                                수신자    메시지

3)
클래스 선언 방식은 좀 차이가 납니다.
우선 선언부분과 구현부분으로 나뉩니다.
선언 부분은 다음과 같습니다.
@interface ClassName : NSObject
{
//Class Variable
}
//Class Method

구현 부분은 다음과 같습니다.
@implementation ClassName
//Method implement
@end

4)
선언 부분과 구현 부분에서, 변수선언, 메소드 선언, 메소드 구현하는 부분을 각각 살펴보자면
변수 선언은 C언어나 C++에서의 선언방식과 동일합니다. 예를들어 int a; 같은거죠.
메소드 선언방식은 약간 다른데요, void add(int a); 라는 메서드 선언은 -(void) add : (int) a;와 동일합니다.
메소드 구현하는 부분은 위의 선언 부분에 { }만 넣어서 안에 구현 코드를 넣어 주는것은 동일합니다.

5)
위의 2)번에서 수신자에게 메시지를 보내는 방식으로 메서드를 호출할 수 있다고 하였는데, C++언어에서와 동일하게 점 연산자(.)를 사용해서 프로퍼티에 접근할 수 도 있습니다. 이는 Objective-C 2.0부터 지원되게 된 것이라고 합니다.

6)
메서드에 여러 인수를 넘겨줄때에도 조금 달라서 설명드립니다.
void add(int a, int b); 라는 코드는 Objective-C에서는 -(void) add : (int) a : (int) b;로 됩니다. 마찬가지로 3개,4개 넘길때도 ' : '로 구분만 해주면 됩니다.

7)
self, super라는 키워드가 적용됩니다. self라는 키워드는 매서드 내에서 사용하면 자기 자신을 가리킵니다.
즉, AAA클래스의 인스턴스의 add()라는 메소드가 있다면 그 안에 [self aaa]; 라고 작성하게 되면 AAA클래스의 매소드인 aaa가 호출됩니다.
비슷하게, super라는 키워드는 부모클래스를 가리킵니다. 동일한 맥락에서 이해하시면 됩니다.


이정도 차이점만 인지하고 있다면, iPhone프로그래밍을 하실 준비가 어느정도는 되었다고 생각됩니다.
나머지 다른 차이점이나 특성들은 그때그때 습득하면 되겠습니다~
Posted by 와일드_
|

동적 할당을 하기 위해 다음과 같이 선언한다고 가정하자.
#include <stdlib.h>
DATA* data = (DATA *)malloc(sizeof(DATA));


위와 같이 선언하면, DATA구조체의 사이즈만큼의 메모리가 할당된다.
여기에서 DATA의 구조를 다음과 같이 가정하면,

typedef struct DATA DATA;
struct DATA{
     int a;
     int b;
     char c;
};


sizeof(DATA)의 결과로, 9byte가 나와야 한다. -> int(4) + int(4) + char(1) = DATA(9)
하지만 실제로 찍어보면 12byte가 나올 것이다.


이유인즉슨, 32bit의 컴퓨터에서 보다 빠른 연산을 위해 4바이트 단위로 메모리를 할당하기 때문에 생기는 현상이다.
이것을 패딩비트(padding bit)라고 한다. 혹은 메모리 정렬(memory alignment)이라고도 한다.
컴파일러의 옵션을 통해 패딩비트가 발생하지 않도록 할 수 있다고 한다.

'C Programming' 카테고리의 다른 글

메모리 해지시 발생하는 에러의 원인  (0) 2011.07.10
Posted by 와일드_
|

Unix 프로그램 코드중에

fd = open("data", O_RDONLY);
라는 문장은 뭘 뜻하는것일까?
현재 작업 디렉토리에서 파일 data를 개방한다.
두번째 인자의 O_RDONLY는 파일을 읽기 전용으로 개방하도록 시스템에 명령한다.

nread = read(fd, buf, 1024);
라는 문장은 뭘 뜻하는것일까?
fd(File Descripter)가 갖고 있는 값으로 개방된 파일을 알 수 있다. buf 변수에 최대 1024글자를 읽어서 저장하라는 명령이다.
nread는 ssize_t형 변수로 실제로 읽어들인 문자의 수를 가리킨다.
즉, 파일에 1024 이상의 글자가 있다면 nread는 호출뒤 값이 1024이다.

한편, open이나 read 호출시 에러가 발생한다면 -1을 반환한다.
또한 여기에서 알 수 있는것은, 파일 접근 프리미티브가 문자 또는 바이트의 단순한 선형 열(linear sequence)만을 다룬다는 것이다.


간단하게 파일 접근 프리미티브를 살펴보았는데, 아래에서 각각에 대해 자세히 살펴 보자.

1. open 시스템 호출
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char* pathname, int flags, [mode_t mode]);

첫 번째 인수 pathname은 개방될 파일의 경로이름을 갖고 있는 문자열이다.
다음과 같이, 절대적 경로이름도 될 수 있고 상대적 경로이름도 될 수 있다.
1) /usr/dinobei/test(절대적)
2) dinobei/test(상대적)
3) test(상대적)
3번처럼 pathname을 설정하면, 현재 디렉토리에서의 test파일을 개방하게 된다.

두번째 인수 flag는 fcntl.h 파일안에 #define으로 정의되어있는데(상수)
fcntl.h 파일은 다른 표준 인클루드 파일처럼 /usr/include에 존재한다.
정의된 상수중 흥미로운것을 들자면 다음과 같이 세개가 존재한다.
O_RDONLY      읽기전용으로 개방된 파일
O_WRONLY     쓰기전용으로 개방된 파일
O_RDWR         읽고 쓰기용으로 개방된 파일

에러(예를들어 파일이 없는 경우)가 날 경우에만 -1이 반환되고, 그 외에는 음이 아닌 정수가 할당되는데
프로그래머는 이를 알 필요가 없다.
Posted by 와일드_
|

캡슐화

유용한 정보~ 2010. 9. 25. 14:14
객체지향적 설계를 할때,
중복 코드를 볼 때마다 캡슐화 할 곳이 있는지를 찾아보세요!

캡슐화의 개념은, 프로그램 일부의 정보를 다른 부분으로부터 보호하는 것이다.
가장 간단한 형태로 클래스의 데이터를 private로 선언하여 다른 부분으로부터 보호할 수 있다.

하지만, 보호해야할 정보가 속성 전체이거나, 특정 행위(메소드)라면 어떨까?


속성 전체를 A라고 하고
특정 행위를 B라고 하자

A와 B를 모두 캡슐화 하고자 한다면, 모두 private로 선언해도 될 것이지만, 속성이 너무 많다면??
하나하나 속성을 private로 하는것보다 전체를 묶어서 class로 만들고, 그 class를 참조하는 형식으로 한다면 훨씬 간단해질 것이다.

즉, 새로 만든 class는 기존의 클래스에서 분리되어 캡슐화 되어 있기 때문에 기존 클래스는 변경할 필요가 없는데, 이것이 캡슐화의 장점이다.
Posted by 와일드_
|

<ListView

          android:drawSelectorOnTop = "true" or "false"

/>

위의 옵션은

리스트중에 사용자가 선택을 했을때, 선택된 아이템 위에

아이템을 뒤덮는(?) 화면을 연출할지 말지를 선택한다.

(default는 false)

실제 테스트결과 어차피 클릭할때 주황색으로 표시가 되는데,

true로 할 경우 선택된 아이템의 글씨가 보이지 않게 되서

오히려 false가 더 낫다는 느낌이 들었다.

(뭐.. 그냥 그렇다고..)

관련 매소드는 다음과 같다.

Posted by 와일드_
|