2014년 7월 25일 금요일

이클립스 기존 프로젝트 import 시 에러

이클립스 에서 기존 프로젝트 import 시 "~ overlaps the location of another poject ~"
요런 에러가 난다면 import 할 프로젝트를 다른 경로에 옮긴 후 import 하면 해결

2014년 3월 28일 금요일

버튼 - 안드로이드 개발

버튼은...별거 없다.
버튼 리소스 생성 (참고로 이미지도 따로 올릴수 있다. )

<Button>
     android:id = "@+id/btn"
     android:layout_width = "wrap_content"
     android:layout_height = "wrapcontent"
     android:text = "sss"
/n>

버튼 클릭 이벤트 연결하는 소스

Button btn = (Button)findViewById(R.id.btn)
btn.setOnclickListner(new Button.OnclickListner() {
public void onClick(View v) {
// 버튼 눌렸을때 처리 ...어쩌구 저쩌구
}
});

리소스 - 안드로이드 개발

리소스...는 양이 많아서 일단 리소스를 참조하는 방법만 알아보자.
일단 리소스는 소스코드 상에서, 그리고 리소스(xml)에서 참조가 가능하다.

소스 코드 상에서는

R.타입.id 
-> R.string.mytext 이런식으로 하고

리소스 상에서는

@타입/id 
@string/mytext 요런식으로 참조가 가능하다.

테마 - 안드로이드 개발

테마는 기본적으로 스타일과 비슷한데 스타일과 다른점은 스타일은 뷰단위 적용 , 테마는 액티비티 단위의 적용이라는 것이 다르다.

스타일을 만든 폴더에 theme.xml 파일을 만들어서 작성해도 되고 아니면 style.xml 에다가 작성해도 된다고 한다.

<resources>
<style name = "mytheme">
     <item name = "android:windowNoTitle">true</item>
</style>
</resources>

위에 작성된 테마는 창이 없는 모양의 테마이다.

테마를 적용하는 방법은 다음과 같다.

<activity android:name = "c11_widget.ThemeTest"
     android:theme = "@style/mytheme"
     android:label = "ThemeTest" />
   

스타일- 안드로이드 개발

스타일은 여러가지 속성값의 집합이다. 똑같은 모양의 위젯이라던지를 반복해서 추가해야 할때 매번 속성을 지정하기 귀찮으니까 그때 쓰는게 스타일이다.
안드로이드가 편한게 자주 사용되는 스타일을 시스템 차원에서 제공한다.

res/values 폴더에 styles.xml 파일을 생성하고 이 파일에 쓰면 되겠다.

간단하게
<resources>
< style name = "red0903">
     <item name = "android:textColor">#ff0000</item>
     <item name = "android:textSize">30sp</item>
</style>
</resources>

요런식이다.

뷰 추가하기 -안드로이드 개발

뷰를 추가하는것을 한번 해보자.
특별히 어려운것은 없고 특정컨트롤의 속성을 지정하는 부분만 그때그때 찾아보면서
개발하면 수월할것 같다.

일단 소스코드 상에서도 뷰를 생성할수 있고 xml 파일에서도 생성할수가 있다.
동적생성이나 수정을 할때는 소스코드에서 하면 될것이다.

소스코드나 xml 상의 문법차이가 크지 않다.

<TextView>
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:text = "@String/insa"
android:textSize = "20pt"
android:textStyle = "italic"


간단한 텍스트뷰하나를 추가하는 xml 이다.
일단 문법을 자세히 몰라도 대충 봐도 어떤식인지 알수가 있다.
더 개발하다 보면 뷰를 제어하는데 있어 어떤 문제가 나올지는 모르지만 그건 그때 생각하자.

로그 추가 하기 - 안드로이드 개발

로그 찍는 함수는 정적 함수라서 별도의 객체 생성 없이 바로 호출이 가능하다고 한다.

static int Log.d(String tag, String msg[, Throwable trl])
// Debug 실행중에는 제거

static int Log.e(String tag, String msg[, Throwable trl])
/ Error 심각한 에러

static int Log.w(String tag, String msg[, Throwable trl])
// Warning

static int Log.I(String tag, String msg[, Throwable trl])
// Information

static int Log.v(String tag, String msg[, Throwable trl])
// Verbose 개발중에만 컴파일 됨

static int Log.d(String tag, String msg[, Throwable trl])
-> 요기서 tag가 로그를 출력하는 애로써 나중에 필터링할때 요 이름으로 필터링 가능함

* 자바의 모든 객체는 toString 함수로 문자열 변환이 되므로 모두 로그로 찍을수 있다.

2014년 3월 17일 월요일

카르노맵 (Karnaugh map)

카르노맵(Karnaugh map)이란?
부울함수를 표준형으로 표현할 수 있는 모든 가능한 방법들중의 한가지로 보통 3변수 이상 6변수 이하의 불함수에서 사용한다.

- 진리표를 그림모양으로 나타낸 것이며 벤다이어그램을 확장한 것
- 여러형태의 사각형으로 된 그림으로 진리표의 각 항(최소 또는 최대 항)들은 카르노 맵의
각한 칸의 사각형에 나타냄
- 카르노 맵의 각 칸에서 수평 또는 수직방향으로 인접한칸은 한 변수의 논리상태만 서로 다르다.
- 카르노맵에서 인접항을 2,4,6,8,16... 의 단위로 묶음 으로써 부울변수를 1,2,3,4...개 씩 감소한다.


왜 카르노맵이 필요한가?
보통 논리식이 주어진다면 카르노맵보다는 부울함수나 드모르간의 정리를 이용하는 쪽이 쉽지만, 보통의 설계에서는 논리식은 주어지지 않고, 입력값과 그에 대한 출력값만 주어지게 됩니다. 이 경우, 입력값과 출력값만을 가지고 원래의 논리식을 찾는 과정은 쉽지 않습니다. 이걸 보다 손쉽게 할 수 있도록 하는 방법이 카르노맵입니다.
그렇다고 모든 입/출력에 카르노맵을 적용할 수 잇는 것은 아니고, 입력값이 6개 이하인 경우에... 그 중에서도 3~4개인 경우 매우 유용하게 사용하게 됩니다.


















웹질하다 우연히 봤는데 이게 뭔가 해서 식겁했음...전공을 다 까먹다니....
배움을 멈추지 말아야 함

2014년 2월 14일 금요일

압축 알고리즘 (Huffman)

자주쓰이는 문자에 가장 작은 비트(자릿수)를 할당
적게 쓰이는 문자일수록 큰 비트(자릿수) 할당
예)
대상 문자열 : CDDCACBCBCCCBBCDA

A -> 2번 출현
B -> 4번 출현
C -> 8번 출현
D -> 3번 출현


위에서 부터 빈도수가 큰 트리에 0, 작은 트리에 1 의 비트값을 부여함

부모 노드에서 부터 읽은 비트값 = 문자를 대체할 '비트열' 이 됨!

A -> 001
B -> 01
C -> 1
D -> 000


CDDCACBCBCCCBBCDA -> 1000000100110110111101011000001
( 17 바이트 )                          ( 8바이트 (31비트) )

약 50%의 압축륙을 보이고 있음






2014년 2월 11일 화요일

남의 바구니부터 채울 생각을 하라.

임종을 앞둔 앤드류 카네기에게 누군가가 물었다.
“당신은 역사상 가장 유명한 기업가입니다.
당신이 그토록 성공할 수 있었던 비결은 무엇입니까?”
앤드류 카네기가 대답했다.
“상대방의 바구니부터 철철 넘치도록 가득 채우시오.
그러고 나면 돈을 버는 것은 식은 죽 먹기라오.”
- 제프리 폭스, ‘CEO가 말하는 CEO’에서

2014년 2월 10일 월요일

만장일치로 결정된것은 무효다.

탈무드에 의하면 사형을 언도할 경우,
판사들이 만장일치로 판결한 경우는 무효다.
그 까닭은 재판에서는 언제나 두 가지 견해가 있어야지
한쪽의 의견 밖에 나타나지 않는다는 것은
공정한 재판이 아니라는 생각에서이다.
- ‘유대인의 비즈니스는 침대에서 시작된다’에서

breakpoint 안먹는 문제

브레이크 포인트가 안걸린다. 
("중단점이 현재 적중되지 않습니다. 이줄과 관련된 실행 코드가 없습니다.
전처리기 지시문 또는 컴파일러/링커 최적화가 원인인거 같습니다")
1. 옵션->디버깅->일반->소스 파일이 원래 버전과 정확하게 일치해야 함 

2.  더미 코드 한줄 추가

3. 

1.70 [서명 없는 UTF-8 인코딩 자동 검색] 옵션이 꺼져 있는 Visual Studio 편집기에서 소스 파일에 가비지 값이 보이는 경우가 있을 수 있습니다.
Visual Studio 에서, [도구]->[옵션]->[텍스트 편집기]->[일반]의 [서명 없는 UTF-8 인코딩 자동 검색] 옵션이 기본으로 꺼져 있습니다. [서명 없는 UTF-8 인코딩 자동 검색] 옵션이 꺼져있는 컴퓨터에서는 서명 없는 UTF-8 형식의 파일을 기본 코드 페이지로 열는 경우가 있기 때문에, 편집기에서 가비지가 보일 수 있습니다.

이 문제를 해결하려면

1. [도구]->[옵션]->[텍스트 편집기]->[일반]을 선택한 후 [서명 없는 UTF-8 인코딩 자동 검색] 옵션을 켜십시오. 이 후에도 이 문제가 발생하지 않습니다. 참고. [서명 없는 UTF-8 인코딩 자동 검색] 옵션을 켤 경우, UTF-8 영역과 한국어 (ks_c_5601-1987) 영역에 중복되어 있는 문자들만 파일에 포함되어 있을 경우 서명 없는 UTF-8 파일을 한국어 파일로 잘못 인식하여 가비지가 발생할 수 있습니다.
2. 혹은 해당 파일을 [다른 이름으로 저장]-> [인코딩하여 저장]을 선택하여 서명 있는 UTF-8 파일 형식으로 바꿀 수 있습니다.


http://www.microsoft.com/korea/msdn/vstudio/support/knownIssues/default.aspx 


2014년 2월 9일 일요일

스마트 포인터란?

포인터 타입의 클래스를 생성하여 포인터의 생성 및 삭제를 함수단에서 처리해 줌으로써 (함수에서는 지역변수 사용) 함수가 끝나면 자동으로 메모리 해제를 해주게 됨(일반적으로 new를 사용해서 쓰면 Heap에 저장하게 되므로 개발자가 직접 메모리 해제를 해주어야 하지만 지역변수는 Stack에 쌓이기 때문에 자동으로 해제가 됨)
단점: 두개이상의 스마트 포인터가 하나의 대상을 가리키는 것이 허용되지 않음(삭제가 두번 일어남)->STL 컨테이너의 내부타입으로 사용하기 곤란함

참조 카운팅 스마트 포인터



스마트 포인터와 비슷하지만 동일 대상을 가리키더라도 카운팅 개수를 유지하여 0이 되면 삭제하는 방식

추상 클래스를 인스턴스화할 수 없습니다.

error C2259:  추상 클래스를 인스턴스화할 수 없습니다.
 다음 멤버가 원인입니다.




-> 원인이 되는 멤버(함수)를 선언하지 않아서 생기는 오류

error C2491: dllimport 정적 데이터 멤버을(를) 정의할 수 없습니다.

- from MSDN 
'identifier': dllimport 함수을(를) 정의할 수 없습니다.
데이터, 정적 데이터 멤버 및 함수는 dllimport로 선언할 수 있지만 dllimport로 정의할 수는 없습니다.

 // C2491.cpp
// compile with: /c
// function definition
void __declspec(dllimport) funcB() {}   // C2491

// function declaration
void __declspec(dllimport) funcB();   // OK


시작

시작