2011년 7월 30일 토요일
a] serializable 과 parcelable
사실 의미상 parcel이 패키지니까 +able(할수있다)를 붙여서 parcelable이 더 맞는 표현 인 것 같다.
안드로이드 UI 표현의 hierachy상 객체끼리 이래저래 자료를 주고 받기 힘든 부분이 있을거라고 생각했다. serialize로 해서 되는 구문도 있긴 하더라. Bundle에서 put어쩌구 시리얼 어쩌구 함수가 있는데 이 함수는 시리얼 객체를 저장할수도 있고 실재 에러도 안났다.
꺼내보지는 않았지만.
그리고 parcelable이 안드로이드에 더 적합한 이유는 구현이 복잡하기 때문이다. 그 복잡의 정도는 일일이 넣을 멤버 변수들을 지정해줘야 하는데 있다. 사실 씨리얼라이저블도 객체의 인스턴스(C++에서는 객체의 포인터)를 저장해 놓는 정도 밖에 안된다.
new가 malloc이니까 new해서 메모리에 생성된 객체의 주소만 알 수 있으면 그게 바로 저장의 의미일거다. -> 사실 내 입장에서는 자바의 객체들이 포인터로 밖에는 안보인다. 그래도 컴언어만 20년 넘게 했으니까.
이래저래 찾다보니 국내 블로그에서는 parcelable을 사용한 분들이 string, int 형 그리고 inner class의 class type으로 저장한 분도 계셨다. 하지만 뭔가 부족해 보였다. 자유롭게 전달하려면 void 포인터가 필요하고 거기에 걸맞는 자바 객체는 Object인데 Object 타입으로 주고 받을 수는 없을 것인가?
dest.writeString(imgData);
dest.writeString(geoData);
dest.writeInt(selectedItem);
dest.writeParcelable(imageViewer, 0);
이렇게 구현을 하다보니 string이나 int, array등 기본타입은 문제가 안되는데... 결국 사용자 정의 객체가 문제였다. 그리고 사용자 정의 객체를 저렇게 parcelable로 한다고 해도 그 parcelable에서 또 그 멤버변수를 string이나 int등으로 밖에 쓸 수가 없었다.
메써드를 찾다보니
dest.writeValue(Object v)
가 있더라. 아... 오브젝트 타입으로 보낼수도 있구나. 결국 저게 void point로 보였고, 받는 쪽에서 캐스팅만 잘하면 쓸 수 있다는 희망이 보였다.
하지만 String Array 객체를 저장하려고 열심히 연구중이었는데
dest.writeStringList(thumbsIDList);
가 있다는 걸 알고 한심스러움을 뒤로 하고 fin.
ubuntu] SyntaxError: invalid syntax
2011년 7월 29일 금요일
Math Class
java.lang.Math 클래스
|
1. Math 클래스는 final 제한자로 선언되어 있어 상속할 수 없다.
2. 생성자는 private 제한자로 선언되어 있어 객체 생성을 할 수 없다.
3. 변수와 메소드들은 public과 static 제한자로 선언되어 있기 때문에 객체 생성 없이 클래스 이름만으로 접근할 수 있다.
|
상수
|
값
|
설명
|
Math.E
|
2.718281828459045
|
자연 로그의 밑인 e에 가장 가까운 double 값
|
Math.PI
|
3.141592653589793
|
직경에 대한 원의 원주의 비율인, Pi에 가장 가까운 double 값
|
메소드
|
설 명
|
사용 예
|
ceil()
|
인자로 들어온 값보다 작지 않은 정수 중 같건 가장 가까운 정수를 double 형으로 반환 (올림)
|
ceil(-3.6)
|
round()
|
인자로 들어온 값과 같거나 가장 가까운 정수를 int나 long형을 반환 (반올림), double형이면 long형으로 float형이면 int형으로 반환
|
round(-3.6)
|
floor()
|
인자로 들어온 값보다 크지 않은 정수 중 같거나 가장 가까운 정수를 double형으로 반환 (내림)
|
floor(-3.6)
|
max()
|
인자로 들어온 두 값 중 가장 큰 값을 반환
|
max(3, 4)
|
min()
|
인자로 들어온 두 값 중 가장 작은 값을 반환
|
min(3, 4)
|
sin()
|
삼각함수의 사인 값을 반환
|
sin(30)
|
cos()
|
삼각함수의 코사인 값을 반환
|
cos(45)
|
tan()
|
삼각함수의 탄젠트값을 반환
|
tan(90)
|
abs()
|
인자로 들어온 값의 절대 값을 반환, 음수가 아니라면 인자 값을 그대로 반환, int, long, float, double 형으로 오버로드 되어 있음
|
abs(-3.2)
|
sqrt()
|
인자로 들어온 값의 제곱근을 double 형으로 반환. 음수가 들어왔을 때는 NaN(Not a Number)를 반환
|
sqrt(3)
|
random()
|
0.0과 같거나 크고 1.0 보다 작은 난수를 double 형으로 반환. 정수 값으로 얻기 위해서는 int 형으로 형 변환해야 함
|
random()
|
2011년 7월 28일 목요일
p4:-) 이미지 슬라이딩
우선 예네들을 부르고
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnTouchListener;
멤버변수를 선언하고
private GestureDetector mGesture;
private GestureDetector.OnGestureListener mGestureListener;
on Create에다가 얘들을 붙여주면 된다.
mGestureListener = new OnGestureListener() {
public boolean onDown(MotionEvent e) {
Log.d("hjh", "onDown");
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("hjh", "onLongPress");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
Log.d("hjh", "onScroll");
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("hjh", "onShowPress");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
Log.d("hjh", "onSingleTapUp");
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
Log.d("hjh", "onFling");
return false;
}
};
mGesture = new GestureDetector(mContext, mGestureListener);
vImageView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
mGesture.onTouchEvent(event);
return false;
}
});
그런데 문제는... 다운이나 롱프레스의 경우 문제가 아니지만...
vImageView.setOnTouchListener(new OnTouchListener() { 에서 리스너를 달 때
달리는 넘이 스크롤이 없는 넘이면 스크롤과 플링(옆으로 쏴악 재껴주는... 이미지 슬라이딩의 핵심)
은 로그가 안 찍힌다는 것이다. 즉, 스크롤이 가능한 뷰에 리스너를 달아야 플링 이벤트를
캣치 할 수 있다는 것.
아놔. 구려. 걍 x, y 좌표 계속 캣치해부려. ㅋㅋ
그래도 안들호가 제공하는 API를 써야 편할 듯.
2011년 7월 27일 수요일
p4:-) Image Viewer.
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:topOffset="100dp" android:handle="@+id/handle" android:content="@+id/content">
android:layout_width="fill_parent" android:layout_height="30dp" />
-
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="#fff">
android:layout_height="wrap_content" android:textColor="#000000"
android:text="여기에 제목 같은거" />
android:layout_height="wrap_content" android:textColor="#000000"
android:text="여기에 내용이 들어갑니다." />
슬라이딩 뷰어를 이걸로 구현할수는 없다. 안드로이드 정보의 원천인 안드로이드 펍에도 답이 없더라 ㅠ.ㅠ
어머니 때문에 ImageViewer 를 심플하게 만들었는데... 이제 어느 정도 사용을 하실 줄 아시니
나의 뷰어는 버림을 받았다.
그래서 기능 업뎃 좀 해보려고 ^^ 호호홍
P1:-) 몸무게가 빨리 줄어드는 이유
몸에서 수분이 빠져나가서 그런거란다.
몸에서 빼야할건 지방인데
지방이 들어있는 음식을 먹고 지방을 뺀다는 건 어폐가 있는 것이다.
사실 복합적인 음식을 먹고 지방도 계산하면 되겠지만 그게 어렵기 때문에
단일 식품을 먹는 것 같다.
P3:-) 긍정 프로젝트
사실 내가 생각하는 의식수준은 가장 밑바닥아라고
볼 수 있다. 이것이 깨달음이라고도 볼 수 있지만
문제는 나의 언어수준도 더이상 위트가 존재하지 않게 되었다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
금일 오는 길에 비가 억수같이 와서 옷이 다 젖었다.
어제 어머니께서 비 때문에 택시를 못잡아서 열차를 놓치셨다.
젖은 상태로 있으니 어제 열차를 놓치신게 잘 되었다는 생각이 들었다.
늦게 가도 괜찮았고, 비 맞은 상태로 내려가는건 찝찝하기 때문이다.
오늘 내가 비를 맞아서 간과했던 또 다른 생각이 떠오른 것이다.
2011년 7월 26일 화요일
P2) 안드로이드 마켓등록 시간
예전엔 올리면 2분 안쪽이었는데 이제는 꼬박 하루가 걸린다.
LGU+는 도대체 어느 마켓에 접속하도록 놔뒀는지.
아직도 보이지 않고 있다:-)
믓튼 수원맛집 일탄이 나왔다 :-)
어머니께서 금일 부산으로 내려가시니 앞으로 업뎃은 다른 사람에게 맡길까 고려중이다:-)
아니면 다른 사람 의견받고 크래딧에 적는식으로. . .
이제 소라랑 맛집 가면서 앱을 마무리 지으려고 한다:-)
P1) 몸무게 그대로
거제도에서 이틀 놀고 사회 생활한다고 발렌타인 21 년산에 소즈 맥주폭탄으로 마셨다:-)
라면도 먹고 고기도 엄청:-)
하지만 종완이가 있어 선 단백질 후 잡다한 영양소를 조금이나마 실천할수 있었다:-
놀러갔지만 일부러 수영도 뻑시게하고 턱걸이도 하고 잤다
국밥도 먹고 그랬지만
몸무게는 200 :-D 줄었다 ㅋㅋㅋ
오늘부터는 닭가슴살과 셀러드로 다시 달리는 거야
목표는 58 킬로그램
2011년 7월 22일 금요일
Threads
메소드 명
|
기 능
|
start()
|
스레드를 실행 가능 상태로 전이
|
stop()
|
스레드의 실행을 중지
|
sleep(long millis)
|
지정된 시간 동안 스레드를 쉬게 함
|
wait()
|
현재의 스레드를 기다리게 함
|
suspend()
|
스레드의 실행을 일시적으로 중단
|
notify()
|
wait()메소드에 의해 기다리고 있던 하나의 스레드를 깨움
|
notifyAll()
|
wait()메소드에 의해 기다리고 있던 모든 스레드를 깨움
|
resume()
|
일시적으로 중단된 스레드를 실행
|
UPBIT is a South Korean company, and people died of suicide cause of coin investment.
UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...
-
프루나는 이제 믿을만한 공유가 안되고 있다. 젠장. 영화 다운 받아보면 전부 야동이나 포르노류 밖에는 없다. 신고되어 있는 자료부터 보지만 신고가 안되어 있는 것은 제대로 다운도 되지 않는다. 이젠 유료 사이트를 믿을 수 밖엔... ...
-
Intel의 새로운 MMX - "KNI" KNI 는 Katmai New Instruction 의 약자이다 . 아는 분들은 잘 알고있겠지만 KATMAI( 이하 카트마이로 부름 ) 는 인텔의 다음번 펜티엄...
-
C:\program files\ 베이비론 폴더가 있다. 브라우저 창 다닫고 지우고 다시 실행하면 없어진다.