cygwin 에서 쉘을 실행 시킬 때 나오는 에러

 

윈도우 환경에서 텍스트 작업으로 \n을 리눅스 환경에서 인식 되지 않는 문제

 

해결 방법

 

dos2unix 원하는파일명

 

'Programing > etc' 카테고리의 다른 글

쉘 스크립트(shell script) - 명령어  (0) 2014.10.23
Bitbucket - SourceTree OpenSSH 키 등록  (0) 2014.04.03
addr2line 사용법  (0) 2014.03.25
tinyxml 문제점??  (0) 2013.01.08
킹스툴즈 2008 ( 비주얼스튜디오 문서화 )  (0) 2012.06.12
Posted by 부우산사나이
:

addr2line 사용법

Programing/etc 2014. 3. 25. 18:07 |

http://www.novasky.net/1435

'Programing > etc' 카테고리의 다른 글

Bitbucket - SourceTree OpenSSH 키 등록  (0) 2014.04.03
$'\r': command not found  (0) 2014.04.02
tinyxml 문제점??  (0) 2013.01.08
킹스툴즈 2008 ( 비주얼스튜디오 문서화 )  (0) 2012.06.12
obb  (0) 2012.05.22
Posted by 부우산사나이
:

Cocos2dxEditText.java 파일에서


    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event)
    {
        if(keyCode==KeyEvent.KEYCODE_BACK) {             
            // 여기에 처리할 코드 넣기
          }           
   
        return true;
    }


이렇게 추가 해주면 된다.

Posted by 부우산사나이
:

안드로이드는 홈키나 전화 받을 때 라이프 사이클로 인해


onPause()과 onResume() 함수가 호출된다.


이것들이 호출되면 화면상에 보여지고 있는 텍스쳐를 다 날려버리고


다시 로딩한다.


그래서 홈키로 인해 나갔다가 다시 들어가면 로딩시간이 길어지게 된다.


해결 방안으로는


CoCos2dxGLSurfaceView.java에서


@Override
    public void onResume() {   
        //super.onResume();
        this.queueEvent(new Runnable() {
            @Override
            public void run() {
                Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleOnResume();
            }
        });
    }

    @Override
    public void onPause() {
        this.queueEvent(new Runnable() {
            @Override
            public void run() {
                Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleOnPause();
            }
        });
       
        //super.onPause();
    }


super.onResume(), super.onPause() 호출 하는 부분을 주석 처리하면


홈키 눌렸다가 들어가도 전혀 로딩시간이 필요가 없다,


다시 로딩을 안하니 테스트로 하루종일 해봤으나 별 문제가 없어 보이나


추천하지 않는다. 왠지 불안하니깐.


그래서 더 찾아보니


안드로이드 3.0 이상 부터 지원하는 함수 하나가 추가가 되어 있었다.


setPreserveEGLContextOnPause 이 함수이다.


이함수에서 setPreserveEGLContextOnPaus(true); 로 셋팅하면


텍스쳐를 날려버리지 않고 들고 있게된다.


Posted by 부우산사나이
:

안드로이드 2.2 이하는 4메가 이상 폰트를 로드 할 수 없다.


로드가 안된 상태에서 텍스트를 셋팅하다 보면 어플이 뻗는다.


해결 방안으로는 로드 실패시 시스템 폰트로 로드 시키거나.


sd카드에서 폰트를 로드시키면 된다.


1번 해결 방안

paint.setTypeface(typeFace);
               
FontMetricsInt fm = paint.getFontMetricsInt();
 int h = (int) Math.ceil(fm.bottom - fm.top);
               
//폰트가 제대로 안만들어 진 상태 그래서 기본 폰트 사용
 if(h == 0)
{
        paint.setTypeface(Typeface.create("Arial", Typeface.NORMAL));
}



2번 해결방안


final Typeface typeface = Typeface.createFromAsset(pContext.getAssets(), pAssetName);

createFromAsset 이 함수 말고 createFromFile 이 함수 사용 하면 된다.

final Typeface typeface = Typeface.createFromFile("mnt/sdcard/폰트경로")

이렇게하면 1메가 넘는 폰트도 사용할 수 있다.


어차리 요즘은 2.2이하는 거의 없으므로 그냥 시스템 폰트 쓰는걸 추천한다.




Posted by 부우산사나이
:

ActivityManager activityManager = (ActivityManager) sContext.getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);

 

memoryInfo.availMem : 가용 할 수 있는 메모리

memoryInfo.totalMem : 총 메모리

memoryInfo.lowMemory : 메모리 부족 상태인지 확인 플래그

Posted by 부우산사나이
:

코코스에서는 키패드 불려내면 기본적인 키패드밖에 지원해주지 않는다.

 

그래서 여러가지 키패드를 불려내고 싶으면 구현해야한다.

 

CCTextFieldTTF::attachWithIME()

 

이 함수가 키패드 불려내는 함수 인데

 

이 것을 새롭게 하나 구현 하면 된다.

 

bool CCTextFieldTTF::attachWithIME( int keyType )
{
 bool bRet = CCIMEDelegate::attachWithIME();
 if (bRet)
 {
  // open keyboard
  CCEGLView * pGlView = CCDirector::sharedDirector()->getOpenGLView();
  if (pGlView)
  {
   pGlView->setIMEKeyboardState(true, keyType);
  }
 }
 return bRet;
}

 

이런식으로 구현

 

CCEGLView::setIMEKeyboardState(bool bOpen, int keyType) 이 함수 또한 새로 구현 한거임

 

CCEGLView소스는 안드로이드,win32,ios 플래폼 세군데 있는데 일단 함수는 세군대 다 만들어주고

 

난 안드로이드에서 패드 불려낼꺼니깐 안드로이드 CCEGLView  cpp,h 파일에서 구현 해주면 된다.

 

void CCEGLView::setIMEKeyboardState(bool bOpen, int keyType)
{
 setKeyboardState_KeyTypeJNI((int)bOpen, keyType);
}

 

이런식으로

 

결국엔 안드로이다 함수를 불려야 하므로 JNI통신을 해야한다.

 

이부분이 JNI통신 하는 부분

void openKeyboard_KeyTypeJNI(int keyType) {
  JniMethodInfo t;

  if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/lib/Cocos2dxGLSurfaceView", "openIMEKeyboard_KeyPadType", "(I)V")) {
   t.env->CallStaticVoidMethod(t.classID, t.methodID, keyType);
   t.env->DeleteLocalRef(t.classID);
  }
 }

 

당연히 이클립스에서 해당 java파일에서 openIMEKeyboard_KeyPadType 이 함수 부분 구현해야 한다.

 

여기서 가장 중요한것은

 

setInputType 이 함수가 키패드 타입을 셋팅 할 수 있는 함수라는 것이다.

 

//키패드 타입 설정

Cocos2dxGLSurfaceView.this.mCocos2dxEditText.setInputType(msg.arg1);

final InputMethodManager imm = (InputMethodManager)

Cocos2dxGLSurfaceView.mCocos2dxGLSurfaceView.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
//키패드 보이게 호출

imm.showSoftInput(Cocos2dxGLSurfaceView.this.mCocos2dxEditText, 0);

 

Posted by 부우산사나이
:

JSON 예제 파일 내용

{ Unit : { Name : Jaeho, Age : 20 }, Temp : 111 }

 

 

public string GetString(string key,string jsonResult){
    try

{


   JSONObject jsonObj = JSONObject.Parse(jsonResult);  
   return jsonObj.GetString(key);   


  }catch(Exception e){
    return "";
  }
 }
 public JSONObject GetObject(string key,string jsonResult){
  try{
   JSONObject jsonObj = JSONObject.Parse(jsonResult);  
   return (JSONObject)jsonObj.GetObject(key);
  }catch(Exception e){
      return null;
  }
 }
 

 

JSONObject jsonObj = JSONObject.Parse(jsonResult);
  
   return jsonObj.GetString(key);   

 

JSONObject szUnit = WemeManager.getObject("Unit", szAuthData);
string szName = WemeManager.getString("Name", szUnit .ToString());

 

Posted by 부우산사나이
:

Cull Off  컬링 끄기

       Front 앞면 컬링

       Back 뒷면 컬링

Posted by 부우산사나이
:

var shader1 : Shader = Shader.Find("Diffuse");
var shader2 : Shader = Shader.Find("Transparent/Diffuse");

function Update()

{
     if (Input.GetButtonDown("Jump"))

{
       if( renderer.material.shader == shader1 )
                    renderer.material.shader = shader2;
                else
                                renderer.material.shader = shader1;
}

}

Posted by 부우산사나이
: