1. ubuntu 10.04 를 vmware에 설치.
그리고 기타 등등 세팅.(메모리 용량 768(1.5기가 필요하다고 함) & 하드 25기가로 했음.)
<스냅샷 하나 찍어둠 - 스탭샷은 Shutdown 후에 찍는게 빠르고 안정적임.>

지금부터 http://source.android.com/source/download.html ==> 이 사이트 참고

2. 위의 사이트 참고하여 첫번째 필요 소프트웨어들 설치
(본인 jdk5 대신 6를 설치 하였음)

$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
위에서 두번째의 JDK가 아마 깔리지 않을 것임.

시스템 -> 관리 -> 소프트웨어 소스 두번째인가 세번째 탭에서 archive 쪽으로 된 체크박스 두개 설정하고,
아래 두줄을 각각 ADD 한 다음에...
deb http://ko.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://ko.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

close 하면 뜨는 창에서 확인눌러서 목록 update
(이는 SUN JDK5를 깔기 위함입니다.)
< 참고 http://mtsparrow.blogspot.com/2010/03/ubuntu-910-sun-java5-jdk.html >

도중에 나오는 메시지들은 TAB 키를 이용하여 OK/ACCEPT 해줌

아래도 해줌(옵셔널이지만 했음)
$ sudo apt-get install valgrind

아래는 10.04에선 필요 없음
$ sudo apt-get install lib32readline5-dev

<스냅샷 찍어두었음>

3. 소스 다운로드 (역시 위의 사이트 참고)

$ cd ~
$ mkdir bin
$ export $PATH=$PATH:~/bin ==> 앵간하면 bash 기본에 넣어주어야 함(bashrc 파일 편집 맨 아래 PATH=$PATH:~/bin 추가)
$ echo $PATH


$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo

$ mkdir andro16
$ cd andro16

$ repo init -u git://android.git.kernel.org/platform/manifest.git  ==>프로요(2.2)로 설정될 것이다 아마.. 추측에..
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b dount

$ repo sync ==>다운로드 1.6
[다운로드 대기]

$ cd ..
$ mkdir andro21
$ cd andro21

$ repo init -u git://android.git.kernel.org/platform/manifest.git  ==>프로요(2.2)로 설정될 것이다 아마.. 추측에..
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

$ repo sync ==>다운로드 2.1
[다운로드 대기]

잘은 모르겠지만 바로 dount 받기는 안되더라? @_@;

$ repo sync
이제부터 다운 받기 시작한다.. 미친듯한 다운로드의 물결 >_<~!

문득 실수했다 싶은게.. mydroid16 / mydroid 21 식으로 할껄 실수했다는거 ㅠ
일단 나한테는는 mydroid = mydroid 16이고, mydroid21이 생길것이라고 계획중이다.

mv 명령으로 rename 했다.

4. LG 소스 받기
내 경우
덮어서 압축을 풀었다.




5. 그 다음은?
컴파일을 해봤는데, 잘 되었다.
폰에 있는 패키지가 전체가 다 있는게 아니더라 ㅠ;
입력기도 안들어있고;; ㄷㄷ
그리고 실험을 하려고 하여도 굽는 방법을 모르니;(fast boot도 안된다;)



참고사항
adb 쉘에서..
키보드 먹통 체크
cat /dev/input/event1 ==> 키보드
cat /dev/input/event4 ==> 터치버튼(백/홈)
먹통시 여기서 뜨면 프레임웍 문제,
안뜨면 커널 문제

라이트 건드리기
echo 1 > /sys/devices/platform/android-keyled/enable 키보드 라이트
echo 1 > /sys/devices/platform/android-keyled/shift 쉬프트 라이트
echo 1 > /sys/devices/platform/android-keyled/setting 터치버튼 라이트

마켓 사용 가능하게 하기
setprop gsm.sim.operator.numeric "310260"
setprop gsm.operator.numeric "310260"
setprop gsm.sim.operator.iso-country "us"
setprop gsm.operator.iso-country "us"
setprop gsm.sim.operator.alpha "T-Mobile"
setprop gsm.operator.alpha "T-Mobile"

:

프로젝트 폴더를 Dropbox에 아예넣고 쓰는 방법도 있겠지만,
이경우 각종 빌드에 사용되는 파일까지 포함이 되는 문제가 있을 것이다.
(특히 Visual Studio의 ncb 파일은 눈물이 난다ㅠ)

또는 배치파일로 복사해 넣는다고 하더라도, obj 파일등이 같이 들어가서 너무 큰 공간을 차지하고, 복사에도 시간이 걸립니다.
이런 경우 이런 배치 파일과 list 파일을 활용 하면 편하게 사용이 가능하였다.

backup.bat
xcopy ImportantSource "G:\My Dropbox\ImportantSource" /E /Y /I /EXCLUDE:C:\excludelist.txt
여기서 중요한 곳이 바로 저 excludelist.txt 파일이다.
이 파일은 한줄에 하나씩 복사시에 파일명에 포함될 경우에 제외시킬 문자열을 포함 할 수 있다.

excludelist.txt
.obj
.res
.pch
.pdb
.tlb
.idb
.ilk
.ncb
.sbr
.sup
.bsc
.manifest
mt.dep
BuildLog.htm
.user
.aps
위의 예는 Visual Studio의 경우인데, 다른 활용도 물론 가능 할 것입니다.

이런식으로 파일들을 만들어놓고 활용한다면, 깔끔하게 용량이 작은 source파일만을 복사해서 dropbox에 싱크 시킬 수 가 있습니다.
(물론 복사를 실행시켜야 한다는 불편함은 있습니다 ㅠ;)

가입시 추천인으로 부탁드려요 ^^;
:

PC에서 특정 폴더를 어디서나 그 내용일 컴퓨터가 꺼져 있어도 들어가고 싶다 이런 생각을 해 봤을 것이다.
Dropbox가 그 해결책이다.

내 경우는 소스 백업이나, 기타 밖에서 열어보고 싶은 파일들, 또는 잽싸 노트북↔데스크탑 이동할 만한 몇메가 내외의 파일을 이동할때 주로 쓴다.
해외 서버임에도 속도는 꽤나 만족스럽고 괜찮다 ^^

한가지 헷갈리지 말아야 할 것은 Windows 버전등의 PC 버전에서는,
네이버의 nDrive 같은 웹하드마냥 하드가 하나 더 생기는 것이 아니라,
하드디스크의 My Dropbox라는 폴더는 그대로 두고, 그것을 복사해서 업로드 해 준다는 것이다.
(모바일 버젼에서는 그렇게 올려둔 파일을 싱크를 하는것이 아니라, 하나씩 볼 수가 있다.)

즉, 이게 자동화된 Sync된 백업에 유리한 것이지,
하드디스크가 부족하다고 쓰라는 서비스는 절대로 아니다는 것이다!

하지만 잘 생각해 보면 이것이 얼마나 편하고 안정적인 서비스인지 알 수 있다.
혹시나 Dropbox에 문제가 생기더라도(회사가 망하던, 계정이 털리던), 하드에 파일이 살아있다는 장점이 있는것이다.
또는, 하드가 날아가더라도, Dropbox가 그날 동시에 문제가 생기지 않는한은 최신 버젼의 파일에 접근이 가능하다.
즉, nDrive 등과는 전혀 다른 특징을 가지고 있다.

아울러 PC 여러대에 Dropbox를 설치한다면,
그 여러 PC가 모두 최신의 파일을 자동으로 Sync하여 가지게 된다는 장점까지 가진다.
즉, 노트북에서 작업하다가 PC에 와서 그냥 프로젝트를 열면 작업이 가능한 것이다.
(편의성에 따라서 복사해 오거나 하는 그런건 필요 할 것이다.

싱크용 프로그램은 Windows/MAC/Linux에서 제공이 되고,
싱크가 아닌 하나하나씩 다운 받는 용도라면 Android/iPhone 등의 기타 OS 용으로도 존재한다.
아울러 설치를 하지 않고 파일을 한두개 열어보고 싶다면, 홈페이지를 통해서도 열람이 가능한다.

개발자다 보니까, 이 Dropbox를 소스용도로 추천을 하는 이유는! 바로 이것이다...
버전 관리! 모든 버전을 다 보유하지는 않지만, 무료주제에 몇십revision정도를 몇일 정도는 보관해 준다.(정확한 정책은 모르겠다.)
혹시나 실수로 덮어쓰거나 지운 파일도 홈페이지에 가서 roll-back이 가능하다 -ㅁ-!!

두번째로는 편하게 다른 사람과 특정 폴더의 공유가 가능하다는 것이다.

제공 무료 용량은 2Gb 인데, 편리성을 위한 공간은 저정도면 충분하다고 생각이 든다.
그리고 추천인을 모집하면 인당 250메가를 준다 ^^;

추천인 가입 (저를 추천인으로 해서 가입합니다. - 저한테 무료 이용 공간이 더 주어집니다.)

:

안드로이드 폰을 산김에 위젯을 만들어 보았습니다
마땅한 D-Day 어플이 없어서 말입니다.
논문 바쁜데 뭔짓인지..;

일단 Android 어플리케이션 개발 환경을 Eclipse + Android SDK + JDK로 구축을 합니다.
1. JDK 설치 http://java.sun.com/
(윈도우 시스템의)환경변수 에서 설치경로로 JAVA_HOME을 설정하고, path에 %JAVA_HOME%\bin을 추가한다.

2. Android SDK 설치 http://developer.android.com/sdk/
(윈도우 시스템의)환경변수 에서 path에 (위에 이어서) [압축푼곳]\tools를 추가한다.

3. Eclipse 설치 http://www.eclipse.org/downloads/ 
압축을 푼다.

4. Eclipse와 Android SDK의 연동 - Android Development Tools(ADT) 설치
Eclipse 실행후에 help - install new S/W 에서 https://dl-ssl.google.com/android/eclipse/ 를 추가한다.
그리고 목록의 플러그인들을 설치한다.
Android SDK 의 경로를 Windows - preference 에서 Android - SDK Location을 찾아서 위의 2.에서 풀었던 경로를 지정해 준다.
Eclipse를 재시작해 준다.(자동으로 되었던것 같다.)

5. 재시작 하면 메뉴를 뒤지거나 툴바를 보면 Opens the Android 어쩌고라 써 있는 핸드폰 아이콘이 생겨있을 것이다. 실행하면 창이 뜬다.
거기서 Package 를 추가한다 원하는 버젼을 설치한다. 내 경우 1.5만 하면 되지만, 그 윗버젼과 관련된것과 해당되는 API들도 모두 설치해 주었다.

6. Virtual Devices 항목에 가서(안 보이면 Eclipse 재시작) 에뮬레이터를 만들어 주자.
원하는 버젼으로 만들고 해상도를 고르면 된다. 내 타깃이 HVGA 이므로 HVGA로 했다.

7. 이제 개발을 시작해 보자.
저 개발 환경 설정 부분은 전이 미리 해놨던거 기억 더듬은 것이니 걍 참고만 하세요 ^^;
더 쉬운 방법이 있을지도 모릅니다 -_-;

저는 아래의 부분만 따라 하는데 30분 남짓 걸린것 같습니다.
정말 개발이 쉽게 잘 만들어놓은듯 합니다.

위젯을 만들려면 다음 과정을 거칩니다.
http://kasperholtze.com/android/simple-android-widget/
저는 위의 강좌를 따라 했습니다.
[나중에 제가 하면서 변경한 방식을 추가 예정]
위젯을 1x1 칸만 차지하게 하기 위해서 xml 편집에서 dp를 70dp x 70dp로 바꾸었고,
Text를 2가지를 넣었고(Title, 날짜), 둘중 날짜에만 shadow property를 적용 하였었습니다.
(shadow는 eclipse에서 미리적용되어서 보이지 않더군요. 에뮬로 실행해야 보입니다.)
업데이트 주기를 저 예제는 1초로 해놨는데(1000ms) 저는 더 길게 30분으로 했습니다.(리소스 절약)
참고로 Javascript의 D-Day를 그냥 가져다가 대부분 쓸 수 있었어서 관련 API를 찾고 머리 싸맬 필요가 없더군요 -ㅇ-;
그리고 배경 화면을 포샵에서 70x70 픽셀로 리사이징 해서 넣어주었구요.(역시 연산량이 줄 것이므로(?)ㅋ)


안해본 기능은 D-Day를 설정하도록 하는 frame을 띄우는 것과, 설정한 날짜를 저장하는것을 못해봤네요.
(그냥 하드 코딩 했습니다 일단 ㅡㅡ; 제가 필요한 날짜는 하나니까요.;;ㅋ)
논문 다 쓰고 해봐야 겠네요.

여기에서 만든 위젯을 설치하려면,
apk로 export 한 뒤에 장치에서 설치 하는 방법을 쓰시면 됩니다.
설치를 위해서는 Astro 탐색기를 마켓에서 받아 까셔서 활용하시면 되구요.ㅋ
:

LG 070 사용 할 때에,
기본 설치시에 myLGNet라는 SSID가 공개되고, 암호는 123456789a 라는것을 아마 아실껍니다.

SSID : myLGNet
NWName : LG Dacom
PW : 123456789a 

그리고 숨은 SSID가 있다고도 알려져 있지요.
찾아보니까 나오기를 다음과 같이 나오더군요.

SSID : #LG@Vo1P*Service&
NWName : LG VoIP Phone
PW : 5d8aca1a03490942bbb1063c96a3267ce7264bc9**********************d0 (뒤 절반 가렸습니다.)

WPA-개인(TKIP)을 사용하며, 암호가 좀 깁니다만 저걸 쓰더이다...;
그래서... 전 제가 쓰는 WiFi 장비들에 기냥 저걸 등록해 놨습니다 ㅡㅡ;
어딜 가도 070공유기가 있으면 누가 막아놔도 쓸 수 있습니다.

뒤에 절반도 공유기를 잘 만들어 놨다면 알려드리겠습니다만...
아쉽게도 접속 하면 네트워크가 완전 공개되어 버리더군요 ㅡㅡ;
두개의 네트워크를 전혀 격리를 시켜놓지 않았습니다;;


어쩌자고 저렇게 만들었는지 한심할 따름이네요 ㅠ;

:

현재 몇일인지 알려주는 D-Day의 확장판(?) 이다..
첫 실행시에는 바로 다음 기념일이 보이고,
◀Next/Prev▶ 버튼을 눌러서 이전/다음 기념일을 보여준다.
100일 단위와 연단위를 섞어서 차례대로 보여준다.

아울러 생각난김에 대충 짜서 소스가 지저분 하다 ㅡㅡ;




<p align="center"><b><script language="Javascript">
var now = new Date();
var ONE_DAY = (1000 * 60 * 60 * 24);
var then = new Date("Feb 28, 2009");
var gap = Math.floor( (now.getTime() - then.getTime())/ONE_DAY );
document.write("만남" + gap + "일째<br>");
 
var nextanni = gap;
document.write("<a href='javascript:prev_day()'>◀</a><span id='dDay' style='display:inline-block;font-size:11px;font-weight:normal;width:160px'>-</span><a href='javascript:next_day()'>▶</a>");
 
function update()
{
 var next = new Date();
 var hdr = new String();
 next.setTime( then.getTime() + nextanni*(1000*60*60*24) );
 if(nextanni%100)
  hdr = ( next.getFullYear()-then.getFullYear() ) + "년/";
 hdr += nextanni + "일";
 document.getElementById("dDay").innerHTML = ("[" + hdr + "]" + next.getFullYear() + "년 " + (next.getMonth()+1) + "월 " + next.getDate() + "일");
}
 
function next_day()
{
 var nextdaydate = new Date(then);
 nextdaydate.setTime( then.getTime() + (Math.floor(nextanni/100)*100 + 100)*ONE_DAY );
 
 var nextyeardate = new Date(then);
 var curanni = new Date();
 curanni.setTime( then.getTime() + nextanni*ONE_DAY );
 nextyeardate.setFullYear( curanni.getFullYear() );
 if( nextyeardate.getTime() <= curanni.getTime() )
  nextyeardate.setFullYear( curanni.getFullYear() + 1 );
 
 var next = nextdaydate;
 if( nextyeardate.getTime() < nextdaydate.getTime() )
  next =  nextyeardate;
 nextanni = Math.floor( (next.getTime()-then.getTime())/ONE_DAY );
 
 update();
}
 
function prev_day()
{
 var nextdaydate = new Date(then);
 nextdaydate.setTime( then.getTime() + (Math.ceil(nextanni/100)*100 - 100)*ONE_DAY );
 
 var nextyeardate = new Date(then);
 var curanni = new Date();
 curanni.setTime( then.getTime() + nextanni*ONE_DAY );
 nextyeardate.setFullYear( curanni.getFullYear() );
 if( nextyeardate.getTime() >= curanni.getTime() )
  nextyeardate.setFullYear( curanni.getFullYear() -1 );
 
 var next = nextdaydate;
 if( nextyeardate.getTime() > nextdaydate.getTime() )
  next =  nextyeardate;
  nextanni = Math.floor( (next.getTime()-then.getTime())/ONE_DAY );
 
 update();
}
 
next_day();
 
</script></b>
</p>

내 경우는 사이드바 쪽에 적당한 아이템을 만들고 집어넣었다.

ps: 이소스는 시작 당일을 기준으로 D=0 에서 시작한다.
:

stdafx.h 또는 적당한 파일 맨위에 다음 한줄을 추가하면 보이더라.

#pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")


이렇게 하면, 우리가 그리워 하던 printf를 마구마구 쓸 수 있다.
(그러고보니, 쓸일은 없겠지만, CString이나 Tchar[]가 %s로 될지 궁금하다;)
:

검색어들

(*) = 괜찮은거

결과 추리기
이미 애플에 있네 ㅡㅡ;
http://www.macnn.com/blogs/2009/04/16/apple-reveals-advanced-sports-monitoring-and-head-gesturing-systems.html

Head Tilitng
http://portal.acm.org/citation.cfm?id=1613858.1613866

위 발표때의 나머지 발표문들(?)
http://portal.acm.org/citation.cfm?id=1613858





https://www.dropbox.com/referrals/NTMzMDE4MDE5

:



Test Version : first release
멜론의 파일명을 분석해서 가수/앨범별로 분리를 해줍니다.
일차 목적은 폴더별로 cover.jpg를 넣어서 커버 아트를 표시 하기 위해서 만들었습니다 ^^;
특히 코원 제품은 멜론의 커버아트를 지원하지 않기에 필요하죠;;
이차 목적은 나중에 파일 지울때 편하기 위해서 이렇게 만들었습니다.

목록 클릭 : 같은 가수 & 앨범인것이 선택됨
<< , >> 클릭 : 가수명과 앨범명에 - 가 들어있어서 자동으로 되지 않는 경우가 수동으로 처리 가능.
(클릭후 선택 체크하기 를 클릭 하여 v 를 해줘야 옮기기 를 할때 옮겨짐)

ps:
신곡만 순위로 받는 폴더는 따로 관리하시면 좀 더 편리할껍니다.
(앨범 통채로 받는 폴더만 정리하시란 얘기입니다.)
:

1. 인터넷 익스플로러 자동 전화번호 제거
아래처럼 나와서 엄청 불편하신분들 계실껍니다.
    

시작메뉴-실행을 하고 다음을 입력합니다.
regsvr32 /u "C:\Program Files\Skype\Toolbars\Internet Explorer\SkypeIEPlugin.dll"
원인은 맘대로 플러그인을 깔아버려서 생기는 일입니다. 지저분하고, 인식을 지멋대로 하기도 해서 별로 쓸만하지 않더군요.
덤으로 툴바 아이콘도 함께 사라집니다 ^^;

2. 원하는 발신번호 표시
일단 핸드폰으로 인증이 되며, 문자 2통값으로 몇십원 소모가 됩니다.
즉, 핸드폰은 갖고 계셔야 합니다.
한글 사이트가 자동으로 뜰테니 그걸 기준으로 설명하겠습니다.
www.skype.com 에 로그인 하시고, 계정→발신자ID 에 가셔서, 대한민국을 고르시고, 핸드폰 번호를 입력하시면,
SMS가 날아오고 날아온 인증ID로 인증해 주시면 됩니다.
24시간 정도 뒤에 문자가 하나 더 날아오고 그때부터 SKYPE로 거시면 입력하신 핸드폰 번호가 상대방에게 보여집니다.
: