2015년 4월 27일 월요일

Eclipse 에서 Project 공유하기(git/share project)


* Git 대박 메뉴얼 : 




* Eclipse 에서 Project 공유하기(git)


#Step 1. 로컬 저장소 셋팅

Eclipse > Team > Share Project > Git > Configure Git Repository (저장소 설정)
1. Use or create repository in parent folder of project 체크
(* Eclipse에서 프로젝트  저장위치와 Git Repository 를 다른  path에 지정하라고하나 그렇게 하면 오류가 난다. )
2. 화면 하단 "Create Repository" 클릭
3. finish
----------------------< Repository설정완료



#Step 2. 원격 저장소 셋팅

1. bitbucket.org : 원격 저정소 생성 
- Create Repository
- 해당 Repository > Overview > Command line  > I have an existsing project  에서 

2. Remote Repository Sync(push)
Eclipse > Team > Add Index > Commit > Push Message  입력 후  > Commit & Push  클릭 

> Destination Git Repository > Location >   위에서 복사한  https:// yourday .... 붙여 넣기  >  finish

Android: onNewIntent

안드로이드는 일반적으로 액티비티에서 액티비티를 호출 할 경우,

onCreate() ->  onStart() -> onResume() 의 순서로 호출이 된다.

그런데 만약 어떤 액티비티에서 자기 자신을 호출하며, 약간의 값만 수정할 경우가 있을 수 있다.

이런 경우 일반 호출 방식으로 하게 되면, 액티비티 스택에는

동일한 액티비티가 중복되어 쌓일 것이다.

자기 자신을 호출하며, 갱신만 할 방법은 없을까?

onNewIntent란 놈이 있다.

이놈은 항상 실행되는 것이 아니고 일정 조건을 갖추었을 때, 자동 호출이 된다.

onNewIntent가 호출되는 조건은 두가지가 있다.



첫째로, 인텐트에 Activity Flag값을 주는것이다.

예)
Intent intent = new Intent(Activity.this,Activity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);


두번째 라인에 intent.addFlags(intent.FLAG_ACTIVITY_SINGLE_TOP)를 보자.

인텐트에 flag값을 주는 부분이다.  FLAG_ACTIVITY_SINGLE_TOP 속성은

foreground 상태의 액티비티에서 자신을 호출 할 경우 자기 자신을 재활용 하는 속성값이다.


두번째로, Androidmanifest.xml 에서 속성을 주는 방법이다.

 예)
<activity android:name=".TestActivity" android:launchMode="singleTop">
</activity>



위 코드와 같이 매니페스트 파일에서 액티비티에 launchMode 의 속성을 singleTop으로

준다. singleTop 은 위에서 설명한 FLAG_ACTIVITY_SINGLE_TOP과 같은 속성이다.


2015년 4월 26일 일요일

Design: 5 Best Websites to Download Free Design Source (Free Design Source)


 5 Best Websites to Download Free Icons

:  5 Best Websites to Download Free Design Source



5. http://iconfinder.com



* 무료로 앱디자인이나 웹디자인 소스를 제공하는 사이트는 많으나, 위에 사이트가 괜춘하다. 
특히  freepick.com이 거의 무료 디자인 소스 사이트의 포털인듯하다. 



2015년 4월 24일 금요일

Android : 이클립스 단축키 추가하기 (Eclipse add shourtcut)

이클립스 단축키 추가
(* Eclipse add shortcut)


1. Window > Preference 메뉴를 클릭한다.
2. General > Keys 로 이동한다.


3. Command에서 단축키를 수정할 또는 추가할 명령어를 선택한다. 



4. 화면 하단부 Binding에 원하는 단축키를 누른다.
 [Apply] 버튼 또는 [OK] 버튼을 클릭한다.

(* 단축키를 누를때 오른쪽 Conflicts 란에 기존에 단축키들과 충돌이 일어나는지 확인후 OK버튼을 누른다)

Android Error: Conversion to Dalvik format failed with error 1

Android Project Export Error : Conversion to Dalvik format failed with error 1 



* 해결책 01 : 


Confirmed the problem is caused by ProGuard command line in the file
[Android SDK Installation Directory]\tools\proguard\bin\proguard.bat

Edit the following line will solve the problem:

Edit the following line will solve the problem:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*

to

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9


* 해결책 02 : 


You can solve this issue easily (with Eclipse Android Developer Tools, Build: v22.0.1-685705)
by turn off 
Eclipse > Menu > "Project" > "Build Automatically" 
while exporting (un)signed Android application. After that, don't forget to turn it on again.

Android : enum 열거형 데이터 타입(Handler 활용)

* enum Type은 구조체 대신 사용(Java 구조체가 없다. )


//enum 선언
public enum NetworkState {
     NETWORK_ON, NETWORK_OFF, AUTH_ON, AUTH_OFF
};

private NetworkState[] networkStates = NetworkState.values(); // 배열로 가지고온다.


//핸들러 생성
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
  try {
switch (networkStates[msg.what]) {
case AUTH_ON:

     break;
case AUTH_OFF:

     break;
default:
     break;
}
} catch (Exception e) {

}

       } //end method__

}; //end handler

//sendMessage
Message msg = mHandler.obtainMessage(NetworkState.AUTH_ON.ordinal(), 0, 0);
mHandler.sendMessage(msg);



* enum Data Type 설명 : 

enum은 데이터 타입 정의 해서 필요한 값만 사용 할 수 있게 사용하기 딱 좋은 데이터 형이다.
예를 든다면 통신사 타입을 사용 하는 변수가 필요하다 하자.

보통은 문자열 또는 정수형으로 "SKT", "KT"... 또는 "1" - SKT, "2" - KT 등으로 상호간 약속을 하고 이 테이더 를 사용하게 된다.
이 약속을 잘 지킬 경우 문제가 없어지지만 그렇지 않을 경우 에러가 발생 할 수 있다.

바로 함수에서 파라미터로 이 값을 전달 받을 케이스다.

void setTelecomType( int type);

이런 정수형으로 타입을 받을 때 서로 약속 한 정수 값이 아닌 다른 값이 왔을 경우 함수 안에서 일일히 if 문으로 데이터 유효성 검사를 해야만 하는 것이다. 저런거 많이 봤다... 하지만 이 경우 enum을 사용할 경우 위와 같은 걱정은 사라진다. enum으로 정의한 값만 올 수 있기 때문에 별도 다른 값이 올 수 없다. 특히 java는 enum이 byte 형태의 데이터가 아닌 별도 object 이므로 데이터가 혼용될 가능성은 낮다.

위에서 예를 든 통신사를 실제 enum으로 구현해 보자.


/**
 * 통신사  enum 값 정의
 */
public enum ETelecom {
    /** None */
    None, 
    /** SKT */
    SKT,
    /** KT */
    KT,
    /** LGT */
    LGT,
    /** MVNO */
    Other;
}
 

간단히 enum을 정의 해 사용 가능 하다.

PHP : JSON (Multi-Row/JSONArray) Sample Code

PHP :  JSON (Multi-Row/JSONArray) Sample Code

<?
$_zb_url = "http://$_SERVER[HTTP_HOST]/admin/";
$_zb_path =$_SERVER["DOCUMENT_ROOT"]."/admin/";
REQUIRE_ONCE $_zb_path."incs/lib.php";

header("Content-Type:application/json");

if(!$connect) $connect = dbconn();

$stmt = db_query("select * from list where app_no = $app_no");
$resultArray = array();

while($data=mysql_fetch_object($stmt)) { // $data->phoneNumber
$resultArray[] = $data;
}

//Android 측 Code에서는 JSONArray 객체로 받아야 한다.
$json = json_encode($resultArray); //array > json 변환
echo $json;

?>



#결과값 : 

[{"no":"12","app_no":"4","number":"0609002218","regdate":""},{"no":"13","app_no":"4","number":"0609002219","regdate":""},{"no":"14","app_no":"4","number":"0609002246","regdate":""},{"no":"15","app_no":"4","number":"0609002247","regdate":""},{"no":"16","app_no":"4","number":"0609002248","regdate":""},{"no":"17","app_no":"4","number":"0609002249","regdate":""},{"no":"18","app_no":"4","number":"0609050113","regdate":""},{"no":"19","app_no":"4","number":"0609050116","regdate":""},{"no":"20","app_no":"4","number":"0609050117","regdate":""},{"no":"21","app_no":"4","number":"0609057099","regdate":""},{"no":"22","app_no":"4","number":"0609057100","regdate":""},{"no":"23","app_no":"4","number":"0609057575","regdate":""},{"no":"24","app_no":"4","number":"0609058877","regdate":""},{"no":"25","app_no":"4","number":"0609059009","regdate":""}]