java에서 http에 request를 요청할때 post방법과 get방법이 있는데..
그중에서 post방법으로 요청을 하게 될 때 필요한 방법입니다.
핵심은
conn.setDoOutput(true);
이렇게 해 주면 됩니다.

get방식으로 하게 된다면
conn.setDoInput(true);
로 하게 되면 get방식이 됩니다.

try {
    // Construct data
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
    data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");

    // Send data
    URL url = new URL("http://address/");
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.write(data);
    wr.flush();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        // Process line...
    }
    wr.close();
    rd.close();
} catch (Exception e) {
}





안드로이드 개발을 하게 되면서...
웹과의 통신을 하거나.. 스트리밍을 하게 될 때 처음에 이런 에러를 접하게 될 경우가 있습니다.
머 그냥 간단하게 permission 설정을 해주지 않아서 생긴 에러입니다. 이것을 해결 하게 위해서는
manifest파일에 android.permission.INTERNET을 추가해 주면 됩니다.

에러 화면은 이렇습니다. LogCat에 나와 있는 상태가

이런 모습으로 보일 것이고... permission 설정은


현재 진행중인 프로젝트에서 AndroidManifest.xml파일을 열어줍니다.
그리고 나서는


Permissions 탭을 선택하고 나서


Add버튼을 투르게 되면 다이얼로그 창이 하나 나타나게 됩니다.


Uses Permission을 선택하고 OK를 누르고 나갑니다.


마지막으로 Name의 콤보박승에서 android.permission.INTERNET을 선택하고 저장하게 되면 됩니다.
xml파일의 내용을 확인하게 되면

이런식으로 추가된 내용을 확인할 수 있습니다.

이렇게 되면 문제 없이 원하는 대로 실행이 될 것입니다.



다른 사람들이 만든 안드로이드 어플을 에뮬레이터에 설치하는 방법을 모르고 있다가 이제서야 알게 되었네요...
우선 자신이 피요한 .apk 파일을 받아서는 원하는 위치에 둡니다.. 아니면 SDK가 설치된 곳의 tools 폴더이 파일을 이동 시켜 둡니다.
SDK의 tools폴더가 환경변수에 path설정이 되어 있다면 아무 위치에 두어도 상관 없습니다.
그리고 나서 에뮬레이터가 실행되어 있는 상태에서
adb install 파일이름.apk
이렇게 해주게 되면  설치가 됩니다.

설치가 성공되었을 때의 화면 입니다.

삭제하는 방법은
adb uninstall 파일이름.apk
이렇게 하면 삭제가 되고

재설치 하는 방법은
adb install -r 파일이름.apk
하시게 되면 됩니다.






singleton패턴이라고 하면 단 하나의 객체만을 생성해 주는 패턴입니다.
싱글톤 패턴을 만들려면 클래스 안에 자신의 클래스 포인터가 있어야 하고, 전역으로 그 클래스의 변수도 필요하겠죠.
하지만 template방법으로 하게 되면, 단순히 기존의 클래스를 상속하는 것만으로 만들 수 있는 방법을 알게 되었습니다.

#pragma once
#include 
#include 

template < typename T >
class Singleton
{
protected:
	Singleton()
	{
		assert(!m_kInstance);
		long long offset = (long long)(T *)1 - (long long)(Singleton *)(T *)1;
		m_kInstance = (T *)((long long)this + offset);
	}
	~Singleton()
	{
		assert(m_kInstance);
		m_kInstance = 0;
	}

public:
    static T * instance()
    {
        if (m_kInstance == NULL)
			m_kInstance = new T;
        return m_kInstance;
    };
    static void destroyInstance()
    {
		if(m_kInstance) {
			delete m_kInstance;
			m_kInstance = NULL;
		}
    };

private:
    static T * m_kInstance;
};

template  T* Singleton::m_kInstance = 0;

이런식으로 기본의 singleton template 클래스를 만들어 두고 이 클래스를 단순히 상속하여 사용하면 됩니다.
사용 방법은

class MyClass : public Singleton
{
private:
public:
    void MyMethod();
}
이런식으로 상속하여 자신의 원하는 클래스를 싱글톤으로 만들고 이 상속받은 클래스를 사용하는 방법으로는
MyClass::Instance()->MyMethod();
이런식으로 사용하면 되겠습니다.

이런 방법을 사용하게 되니... 단순히 이 클래스를 하나만 정의해 두고, 내가 만든 클래스를 싱글톤 패턴으로 사용하고 싶을 때 이걸 상속해서 쓰면 되는게 편해지더군요. template방법이 어떨 땐 불편할 때도 있었는데.. 이걸 보니.. 좋은점도 있다는 생각이 듭니다.


'C / C++' 카테고리의 다른 글

Collaborative Filtering  (0) 2009.01.19
C++에서 XML 파일 읽기  (0) 2008.09.09
libcmtd.lib LNK2005 - 중복 선언 에러  (0) 2008.05.09
C++ 클래스 안에서 쓰레드를 생성해 쓰기  (0) 2008.02.28


회사일도 하고... 프리로도 일도좀 하다보니 안드로이드 공부하는걸 게을리하게 되었네요...
그러다 보니 2.0버전이 새로 나왔더군요 ㅎㅎ
그러고 나서 2.0을 새로 받아서 실행할려고 보니... 예전과 방법이 조금 틀려져서는... ㅜㅜ/// 여러번 삽질을 좀 하게 되었습니다.

SDK를 다운 받아서는 압축을 풀고 나면
이런 내용들이 있습니다...
예전같은 버전에서는 그냥 압출풀고 Eclipse에서 path만 맞춰주면 되었지만... 이번에는 exe의 실행파일이 있습니다.
처음에는 이걸 멋모르고 실행했더니
이렇게 되더군요... ㅜㅜ///
그래서 주소를 http://dl-ssl.google.com/android/repository/repository.xml을 추가하고는 했더니

이렇게 되길래...Install Selected로 해서 설치를 했지만...

나중에 설치가 끝나고 보면
변화가 없더군요... 정말 여기서부터는 정말 좌절이였는데...

우선 Eclipse에서 Android Plugin을 설치하고 나서 하는 방법이 있어서 그렇게 했습니다.
우선 Eclipse에서 Android Plugin을 설치하는 방법은
[Android] Eclipse에 Android ADT 설치 방법
을 통해서 해주시면 됩니다... 버전이 바뀌어서 보이는 내용은 다를 수 있으나, 순서는 똑같기에...

이렇게 ADT를 설치하고 나면 Eclipse에서
이 부분을 클릭하거나,

Window -> Android SDK and AVD Manager를 선택하도록 합니다...

선택을 하게 되면
이렇게 아까와 같은 화면에서... Avaliable Packages를 선택하면 아까는 안보이는 것들이 이번에는 전부다 보이게 됩니다. 왜그런지는 저도 잘 모르겠습니다... ㅜㅜ// 그래서 이 모든것들을 선택하고 Install Selected로 해서 설치를 하게 되면

이렇게 설치가 되었다는 정보를 볼 수 있습니다. 보면 SDK Platform Android 2.0.1 API 6, revision 1이라는 항목이 보입니다.

정말이지... 처음에 받아서는 안되길래... 얼마나 조마조마하고 신경이 쓰이던지요 ㅎㅎ
더군다나... 안드로이드 공부를 못하고 있다가 오랜만에 해볼려고 하는데 잘 안되서는... ㅜㅜ
그동안 노트북도 포멧하고 해서는... 셋팅도 다시하느라 속도 많이 터졌었는데.. ㅎㅎ
그래도 해결하고 나니... 다시 안드로이드 공부를 버닝해야겠습니다... :-p






putty에서 한글을 사용하다 보면... 제대로 안될때가 많습니다...


이런식으로 한글을 입력하다보면... 한글을 나타나지 않습니다... 이럴 경우 putty와 register를 변경해 주어야 합니다.

우선...
putty에서 사용할 서버의 주소를 등록하고나서
그 주소에서 Window -> Traslation -> Received data assumed to be in which character set : 에서 UTF-8을 선택하도록 합니다.


그런다음 register편집기에서 현재 등록한 putty의 설정을 찾습니다.
HKEY_CURRENT_USER -> Software -> SimonThatam -> Putty -> Sessions 에 보시면 방급 등록한 세션 정보가 있을 것입니다. 그 곳에서 FontCharSet의 값을 보게 되면 0으로 되어 있는데 이곳의 값을 변경하면 됩니다.

16진수로는 81의 값을... 10진수의 값으로는 129를 입력하면 됩니다.

저장하고 나오면 아래와 같이 값이 변경되어 있습니다.


변경된 상태로 서버에 접속을 하고 나서 한글을 입력하고 나면
이것과 같이 입력을 할 수 있습니다.
화면이 좀 작아진듯 하면서 글자체도 변경되어 있습니다. 그래도 적응은 잘 되고 한글을 쓸 수 있다는게 중요하겠죠 :)








Eclipse에 SVN을 사용하기 위해서는 plugin을 설치가 필요합니다.
설치하는 방법을 간단히 정리를 해보면

1. Help ->  Install New Software를 선택합니다.

2. Add 버튼을 누르고 나면 Add Site를 입력하는 곳이 나오는데.. Name은 아무렇게나 입력해도 되지만 주소는는 정확하게 입력해 주어야만 합니다.
  http://subclipse.tigris.org/update 

3. 주소를 입력하고 나면 그림과 같이 2가지 선택하는 것이 나오는데 두개를 모두 선택하고 Next버튼을 누릅니다. 다음은 모두 확인이나 Next를 누르고 나면 설치기 진행이 됩니다.

4. SVN plugin의 설치가 끝나고 나면 view에 SVN Repository를 추가해 줍니다. 방법은 Window -> Show Viw -> Other를 선택합니다.

5. 그러고 나면 SVN 모음이 보이고 그 안에서 SVN Repository를 선택합니다.

6. 마지막으로 Eclipse 맨 아래에 있는 View부분에 SVN Repository가 추가된 것을 확인할 수 있습니다.





여즘들어서 리눅스 프로그래밍을 할 일이 많아져서...
계속 위도우에서 편하게 프로그래밍 하다가... vi에서 하고... 통합개발환경에서의 쉽게 SVN을 쓰다가...
콘솔에서 svn을 쓰자니.. 불편한게 좀..생기네요 ㅎㅎ

그래도 좀 많이 쓰는걸 정리하자면...

1. svn에 등록되어 있는 파일 리스트를 보고 싶을 때

svn list [svn 주소]

2. svn에 등록되어 있는 파일을 현재 개발중인 local로 가져오고자 할때. (처음 받는 경우 )
svn checkout [svn 주소]

3. 수정후 svn서버에 등록하고자 할 경우
- svn commit
- svn commit [파일명]

4. 다른 사용자가 수정한 파일로 현재의 파일을 업데이트 하고자 할 경우
- svn update 
- svn update [파일명]

5. svn 서버에 등록된 파일 및 dir 리스트를 보고 싶을 경우
- svn list
- svn list [svn 주소]

6. svn 서버에 있는 파일고 local에 있는 파일간의 비교, 수정된 파일 및 내용 찾기
svn diff

7, local의 수정된 파일을 원상태로 되돌리고 싶을 경우
svn revert

8. 새로 만든 파일을 svn에 추가 등록하고 싶을 경우
svn add [파일명]


+ Recent posts