간만에 읽은 추리소설.
작가의 진행에 휘둘려 생각지도 못한 반전을 접하자 나도 모르게 손으로 머리를 치게 되었다. 아!
Posted by ekwang

둘다 아주 잘 커야 합니다.


아들 품띠 득템.



요셰프 새옷 득템.

요셰프 사라마 파예즈 살라마


Posted by ekwang
Android/Application2014. 10. 30. 16:42

남는 시간에 몇가지 android application 관련 공부를 좀 하다가,

쉽게 그럴싸한 app을 만들 수 있는 방법으로 포털이나 정부에서 제공하는 open api를 이용하는 방법으로

방향을 잡았다.


몇가지 OPEN API 제공 사이트

- 네이버 : http://developer.naver.com/wiki/pages/OpenAPI

- API STORE : http://www.apistore.co.kr/api/apiList.do

- DAUM API : http://dna.daum.net/apis/dashboard

- 공공 데이터 포탈 : https://www.data.go.kr/#/L21haW4=


그 외 google, twitter, facebook, kakao 등에서도 각 회사에서 제공하는 여러 서비스들에 대한 open api를 제공하고 있다.


open api 사용을 위해서 기본적으로 

open api 사용에 대한 권한 획들을 위한 OAUTH

서비스 request를 위해 REST, HTTP(POST, GET)

받아온 결과의 출력을 위한 XML(parse) 에 관련된 class들을 찾아보고 이해하면

제공되는 API들을 쉽게 사용할 수 있을 것이다.


Naver에서 제공하는 cafe API를 이용해서 원하는 cafe의 최신글만 android widget으로 출력하여 접근 용이하게 하는 app을 만들던중... 최신글의 list를 출력 해주는 service가 없어서 개발 중단. --;

Posted by ekwang
Android/Application2014. 9. 3. 10:55


간단한 Android Network Application을 작성하기 위한 기본 지식.


 Android application의 main(UI) thread에서의 network 관련 동작의 실행은 warning이 발생하게 된다.

Network request의 경우 예상치 못한 delay가 발생하여 실행이 지연될 수 있기때문에 

main thread의 동작을 방해하기 때문이다.

하여 network연동을 할때는 별도의 thread에서 처리를 하도록 한다.


이때 사용할 수 있는 class는 Thread(+runable)와 Handler(thread에서 발생한 결과를 main thread로 전달 하기 위한) 또는 AsyncTask 가 있다.

AsyncTask의 경우 별도의 Handler가 필요없이, 필요한 함수를 override하여 그곳에서 UI thread에서 처리가 필요한 내용들을 구현하는 것으로 간결히 처리 할 수 있다.


http 처리를 위해서 android에서는 HttpURLConnection과 Apach의 HttpClient를 지원하며

공식적으로는 GB이상에서는 HttpURLConnection(+URL)를 권장한다.


우선 network이 사용가능한 상태인지 확인을 위해 아래의 method를 사용한다.

ConnectivityManager.getActiveNetworkInfo()


 서버를 통해 전달받은 결과는 InputStream을 통해서 읽어들일 수 있고

InputStream을 통해 전달된 byte array를 String으로 변환하기 위하여 InputStreamReader, BufferedInputStream등이 사용된다.

inputstream을 통해서 data를 읽을때는 전송될 정확한 size를 알 수 없기 때문에 적당한 사이즈만큼만 read()를 하고 -1이 return되면 종료한다.


참고 : http://developer.android.com/training/basics/network-ops/connecting.html




Posted by ekwang
Web/HTTP2014. 9. 3. 01:15
  • Representational State Transfer.

De facto 표준.

  • HTTP Uri + HTTP Method.
  • URI : resource의 위치.
  • Method : resource 에 대한 행위.Action.

 POST(create), GET(select), DELETE(delete), PUT(create or update)

제약된 4가지 Action만이 존재 하므로 URI 설계의 어려움과 중요성이 존재한다.


참고.

http://bcho.tistory.com/category/%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90%20/WEB%202.0


Posted by ekwang
Android/Application2012. 12. 3. 12:00

Android JB부터 MediaCodec class가 추가되어

device에서 지원 하는 codec을 NDK로의 추가 구현 없이도 유연하게 사용할 수 있게 되었다.


MediaCodec을 이용하여 codec으로부터의 output data를 application이 쉽게 얻을 수 있다는 말이다.


여기저기 기웃 거려보아도 동작하는 sample code가 없기에

시간을 좀 들여서 작성을 해보았다.

본인이 Android Application 개발자가 아니라 Android API 사용에 유창하지 않으니

API level 16부터 추가된 MediaCodec, MediaExtractor, MediaFormat 등의 사용에 참고만 하였으면 하는 바램이다.





Posted by ekwang
Android/Tools2012. 11. 20. 23:54

우분투에서 eclipse에 ADT plugin 을 설치 하였는데,

보이지가 않는다!


java version 이 1.6이하라서 그렇네.


java -version 해서 1.6 이하일 경우 update후 ADT를 재 설치 하면 해결.


update JDK to 1.6

Posted by ekwang
Linux/Ubuntu2011. 12. 15. 01:21

grub2에서 boot menu 의 순서를 변경하는 방법을 알아보자.

#cd /boot/grub/grub.cfg 
#ls -l 
 

-rwxr-xr-x   1 root root  6698 2011-10-01 21:40 00_header*

-rwxr-xr-x   1 root root  5522 2011-04-21 22:20 05_debian_theme*

-rwxr-xr-x   1 root root  6933 2010-10-06 21:23 07_os-prober*

-rwxr-xr-x   1 root root  7269 2011-10-01 21:40 10_linux*

-rwxr-xr-x   1 root root  6344 2011-10-01 21:40 20_linux_xen*

-rwxr-xr-x   1 root root  1588 2010-09-25 02:14 20_memtest86+*

-rwxr-xr-x   1 root root  7545 2011-10-01 21:40 30_os-prober*

-rwxr-xr-x   1 root root   214 2010-10-06 21:23 40_custom*

-rwxr-xr-x   1 root root    95 2010-10-06 21:23 41_custom*


00_, 05_, 07_  와 같은숫자의 순서에 따라 /boot/grub/grub.cfg 파일에서 menuentry 등록 순서가 결정이 된다.
즉, 위의 파일들을 rename 하는 것으로서 부팅 menuentry 순서를 변경 할 수 있는 것이다.

예 를 들어 아래와 같이 변경하게 되면 linux 가 window보다 상위에 위치하게 된다. 
#mv 10_linux 06_linux

수정을 마쳤으면 변경된 순서를 적용하기 전에 grub.cfg 파일은 백업을 해두고,

#/usr/sbin/update-grub

update-grub 을 하면 새로운 grub.cfg 파일이 생성되고 reboot.

두번째 방법은 grub.cfg를 직접 수정하는 것이다.

#vi /boot/grub/grub.cfg

...
menuentry 'Ubuntu, with Linux 2.6.35-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos2)'
        search --no-floppy --fs-uuid --set 2742a9ed-e2ac-4411-ac63-53117647ac54
        linux   /boot/vmlinuz-2.6.35-23-generic root=UUID=2742a9ed-e2ac-4411-ac63-53117647ac54 ro   quiet splash
        initrd  /boot/initrd.img-2.6.35-23-generic
}
... 

 

menuentry의 위치를 변경 하는 것으로 grub menu에서 부팅 순서를 변경할 수 있다.
또는 
set default="0" 값을 변경 하면 됨.

 


 
Posted by ekwang
Android/Tools2011. 12. 15. 00:17

오랫만에 집에있는 노트북에서 android source 를 받으려고 했더니 아래와 같은 문제가 발생한다.

$repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

Getting repo ...

   from git://android.git.kernel.org/tools/repo.git

android.git.kernel.org[0: 149.20.4.77]: errno=Connection refused

fatal: unable to connect a socket (Connection refused)  


생각해보니 android.git.kernel이 공격을 당해서 android git repository가 변경이 되었었지..
오래전에 받아둔 repo를 그대로써서 문제가 된것이다.

$vi ~/bin/repo

#!/bin/sh


## repo default configuration

##

REPO_URL='https://android.googlesource.com/tools/repo'

REPO_REV='stable'


구버젼 repo의 REPO_URL은 위의 주소가 아닌 git://android.git.kernel.org/... 로 되어 있을 것이다.
REPO_URL을 변경해 주거나, 깔끔하게 repo를 삭제하고 다시 받는게 좋다.

Posted by ekwang
Android/Tools2011. 12. 13. 09:31

Windows 환경에서 CTS 테스트를 진행 하는 방법에 대한 설명.
CTS tool 중 ddmlib-prebuilt.jar, junit.jar, hosttestlib.jar 를 사용하여 auto test가 진행되고
testResult.xml 파일을 생성해준다.

1.     우선 아래 사이트에서 최신 CTS를 다운 받고 압축을 적절한 위치에 푼다.

http://source.android.com/compatibility/downloads.html

Android 2.3 R9 Compatibility Test Suite (CTS)

 

2.     첨부의 cts.cmd 파일을 적절한 위치로 copy한 후 본인의 CTS 설치 경로에 맞게 편집 한다. (현재 파일 첨부가 안되어 cts.cmd 파일이 없음. 아래 내용을 cts.cmd에 저장하여 사용하면 됨.)

cd D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\tools
 

java -Xmx512m -cp "cts.jar;D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\tools\ddmlib-prebuilt.jar;junit.jar;hosttestlib.jar" com.android.cts.TestHost "D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\host_config.xml"

 

3.     window cmd창에서 cts.cmd 파일 실행. cts_host> 프롬프트가 보이면 정상임을 확인 후 exit

 

4.     \android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\testcases 경로에 있는

TestDeviceSetup.apk 와 본인이 테스트할 apk를 설치 한다. (ex. CtsMediaTestCases.apk)

 

 >  adb install r Development.apk (Dev Tool 이 없으면 설치 해야 됨)

 > adb install r TestDeviceSetup.apk

 > adb install r CtsMediaTestCases.apk

 

5.     다시 cts.cmd를 실행. cts_host> 에서 상황에 맞게 아래 cmd 입력.

package명이나 testcase, test 명은 CtsMediaTestCases.xml 파일에서 확인 할 수 있음.

<TestSuite name="android">       

                <TestSuite name="media">           

                        <TestSuite name="cts">               

                                <TestCase name="MediaPlayerStreamingTest">                   

                                        <Test name="testRTSP_H263_AMR_Video1"/>

 

1)     CtsMediaTestCases.apk package의 전체 항목 테스트

cts_host>start --plan CTS -p android.media

2)     CtsMediaTestCases의 원하는 TestCase 항목만..

cts_host>start --plan CTS -p android.media.cts.MediaPlayerStreamingTest

3)     CtsMediaTestCases의 원하는 TestCase 의 원하는 Test .

cts_host>start --plan CTS -t android.media.cts.MediaPlayerStreamingTest#testRTSP_H263_AMR_Video1

  

6.     결과 확인

\android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\results

Posted by ekwang