예를 들어 lite버전 같은걸 만들려고 하니 귀찮은게 상당히 많다.

check list

1) src 아래 패키지명들 변경.
   이클립스를 사용하여 변경을 누름.

2) 이름 변경.

   String.xml의 string 리소스를 확인

3) res/layout을 하나씩 열어서 문제가 있는지 확인.

    custom view를 만들었을 경우, 에러가 날 수 있음.
    Graphical Layout으로 보면 에러 확인하고 고치기 쉬움.

4) AndroidMenifest.xml 파일 안에 패키지 명 변경.

    Activity나 Service의 name이 제대로 되어 있나 확인.

5) 소스코드들 안의 R 패키지 경로 변경.

    이클립스에서 CTRL+H (또는 Search > Files.. ) 에서 패키지.R을 검색어로 입력하고 아래에 Replaces. 버튼 클릭하면 프로젝트 내 모든 파일들에서 변경 가능.

6) data 저장 폴더 변경
    /data/data/패키지명 을 /data/data/패키지명Lite로 변경 - 5번처럼

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

앱에서 안드로이드 마켓/티스토어 연결하는 법.  (0) 2012.02.10
패키지명 변경시 check list.  (0) 2012.01.29
Preference 쓰기.  (0) 2011.12.13
[TIP] Activity  (0) 2011.11.09
GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
이런 글을 적을 주제가 못되지만, 어떤 분의 질문때문에 짧은 소견을 남겨보고자 합니다.
읽으시기전에, 저 또한 많은 고민을 갖고 대한민국의 IT 분야를 살아가고 있음을 밝히는 바입니다.

직업 프로그래머, 취미 프로그래밍.

얼마전 한 외부모임에서 강의를 직업으로 하시는 분을 뵈었습니다.
HTML canvas에 관한 아티클들을 소개해주시는데 엄청난 내공이 느껴지더군요.
이런분들은 직업으로서 프로그래밍을 하지 않아도 뛰어난 프로그래머같더군요.

예전에 직업을 선택하는 법과 관련된 글(윤석찬님의 블로그에서 본 것 같은데...)을읽은적이 있는데,
정확히는 기억나지 않지만 대충 아래와 같았습니다.

1. 내가 정말 좋아하는 것들 가운데,
    판단기준 : 내가 잠깐 쉬어야겠다고 생각될때 무엇을 하는가?
2. 남들보다 잘하는것들 가운데,
3. 평생을 먹고 사는데 지장이 없는 직업.

수시로 저 자신에게 물어보지만, 저에겐 프로그래밍밖에 답이 없더군요.
만약 다른 답이 나오거나 한가지 이상의 답이 나온다면, 프로그래머보다는 다른 분야를 선택하는 것도 좋을 것 같습니다.

위 질문에서 프로그래머라는 답이 나왔다면, 회사에 대한 고민이 생깁니다.
수많은 글들이 우리나라의 열악한 IT 환경에 대해 말하고 있고, 일부 회사들은 많은 개선을 이룬 것 같습니다만,
아직도 프로그래머의 생산성을 극대화하는 방법을 잘못 알고 있는 회사들이 많은 것 같습니다.

저마다 자신의 기준들이 있을 것이라고 생각됩니다.
저의 경우, 안정 지향적이죠. 안정적인 수입 확보 측면에서 직업 프로그래머가 되고,
집에서 취미 프로그래밍을 하려고 노력합니다.
물론 업무에서 지속적인 지식 습득이 가능한지, 회사 내에서 중요한 업무를 수행하고 있는지 등등이 있겠습니다.

시간이 흐르면 나의 기준도 변할 것이고, 회사도 변합니다.
만약 그렇게 되어 현재 자신이 근무하는 곳이 자신의 기준에 미달된다면 이직을 고려해야 합니다.
물론 인생의 매우 중요한 선택이 될 것이므로 신중을 기해야 한다고 생각합니다.
잠깐의 상황에 의한 잦은 이직은 우리나라와 같은 작은 인력 시장에서는 불리하게 작용할 가능성이 높다고 생각합니다.

이건 제 생각입니다만, 저의 기업을 선택하는 조건은 아래와 같습니다.

1. 내 기준에 부합하는 회사들 가운데
2. 내 능력이 그 회사에 충분한 가치가 있어서 장기적으로 나를 필요로 할 것으로 판단되는 기업이
3. 지금 나를 필요로 한다면

사실 1번을 만족하는 곳(^^)들은 정말 많은데 2번을 만족하는 곳은 많지가 않습니다.
평소에 객관적으로 자신의 능력을 판단하고 1번 기업이 2번 조건을 통과하도록 노력을 하고 있다가,
3번이 만족될때 이직하는 것이 저의 이직에 대한 가장 좋은 방법이 아닐까 합니다.

회사와 저의 관계는 소비자(회사)와 판매자(나)의 관계라는 생각을 합니다.
더 많은 소비자가 나와 판매자의 물건(프로그래밍 스킬, 시간 등)이 더 비싼 값에 팔리길 바랍니다.

그러기 위해 제 물건(2번)들의 가치를 더 높여야 할 것 같습니다.

  1. 2012.01.25 14:02

    비밀댓글입니다

C++, new
작년에 malloc vs calloc이라는 글을 적었습니다.
그때는 급작스런 궁금증때문에 인터넷 검색+발번역을 했는데,
이번에는 new에 대해 신경쓰지 못했던 부분을 알게되었습니다.

흔히, new 나 malloc으로 메모리를 할당받고 난 후, 제대로 메모리가 할당되었는지 체크를 하지않는 경우가 많습니다.
하지만, 메모리가 부족한 상황은 얼마든지 나올 수 있으므로 체크를 해야 맞겠죠.

그렇다면, 어떻게 체크해야 할까요?
임베디드의 세상에서 malloc으로 메모리를 할당받은 후에는 null인지 확인하는 것이 보편적이라는 이야기를 들었습니다.

그렇다면 new는?
C++을 배울때 제대로 공부하신 분들은 이 질문의 답을 정확히 알것입니다.
네, new 는 0을 반환하지 않습니다. 일부러 그렇게 만들지 않는한 말이죠.(오퍼레이터 오버로딩)
대신 bad_alloc exception을 발생시킵니다.
따라서, 메모리할당 여부를 굳이 확인하려면, 아래와 같이 처리해야 합니다. (예제소스)
// bad_alloc example
#include <iostream>
#include <new>
using namespace std;

int main () {
  try
  {
    int* myarray= new int[10000];
  }
  catch (bad_alloc& ba)
  {
    cerr << "bad_alloc caught: " << ba.what() << endl;
  }
  return 0;
}

  1. 몽상귀 2012.02.16 17:36

    Note that you can specify that you want new to return 0 instead of throwing std::bad_alloc using the std::nothrow parameter:

    SomeType *p = new(std::nothrow) SomeType;

    http://stackoverflow.com/questions/550451/will-new-return-null-in-any-case

    즉, new 연산자를 수정하는 행위 없이 호출 할 때 저렇게 하면 된답니다. try-catch 쓰기 싫으시면 ..:D

참 고: https://github.com/blog/272-github-pages

github 는 git repository 를 제공해주는 서비스입니다.
오픈소스 프로젝트를 만들때도 도움이 되지만,  이 서비스를 이용해 자신의 홈페이지를 만들수도 있습니다.

1) 일단, 가입하셔야합니다. (인터넷 참고)

2) {자기아이디}.github.com 라는 이름의 repository 를 만듭니다. (인터넷 참고)

잘 만들어졌는지 시키는데로 따라했습니다.
  mkdir bunhere.github.com
  cd bunhere.github.com
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:bunhere/bunhere.github.com.git
  git push -u origin master

 3) gh-pages라는 branch를 만듭니다.
  cd /path/to/repo-name
  git symbolic-ref HEAD refs/heads/gh-pages
  rm .git/index
  git clean -fdx
  echo "My GitHub Page" > index.html
  git add .
  git commit -a -m "First pages commit"
  git push origin gh-pages

4) 기다립니다.

생각보다 시간(10분)이 많이 걸립니다. 바로 뭔가를 확인하기엔 좋지 않은듯 합니다. 

'Open Source > git / svn / bazaar' 카테고리의 다른 글

[GIT] windows에서 invalid username (wincred)  (0) 2016.10.18
commit.template - default commit message  (2) 2012.07.12
resume in github  (2) 2012.02.15
github에 내 사이트 만들기.  (1) 2012.01.17
svn과 proxy  (0) 2010.08.11
Git 사용법(Manual)  (1) 2010.01.10
  1. 소혼 2012.12.27 09:13 신고

    http://jekyllbootstrap.com/

간략한 소개?
I have about 4 years of browser experience including webkit, mozilla on mobile platform. Now I am working at Samsung Electronics for developing WebKit/Efl.

Before I entered Samsung, I worked at maxmovie.com to develop sites and reservation system about 2 years. I developed it using ASP, COM+.

I spend rest time to develop android application as a hobby.
http://www.linkedin.com/pub/ryuan-choi/23/522/400

좌우명? : 미치면 미치고, 안미치면 못미친다.

전공 : 데이터베이스 (RFID 미들웨어)

경력
웹 사이트 개발(주로 ASP 사용, 아르바이트는 PHP)
2001년 ~ 2002년 : 맥스무비

데이터베이스 관리 및 미들웨어 개발
2002년 ~ 2003년 : 뭉클 게임 회사

브라우저 개발
2008년 ~ : 삼성 (현재)
Skill
언어
C/C++   : ★★★★☆
JAVA     : ★★★☆☆
Python   : ★★☆☆☆
ASP      : ★★☆☆☆ (최근 3년간 사용안함)
VB        : ★★★☆☆ (최근 3년간 사용안함)
SQL      : ★★☆☆☆ (OCP 8i, 최근 3년간 sqlite외에 사용안함)

사용 가능 라이브러리 및 플랫폼
MFC (최근 4년간 사용안함)
안드로이드 플랫폼 6개월(취미로 개발중)
리눅스(GTK, EFL) : 3년(현 회사 이전의 리눅스 지식은 없었다고 생각될 정도로 미미)

공부중
HTML5
영어

2011년이 지나갔지만 2010년 이력서와 별로 달라지지 않은 나의 경험을 보니,
2011년 허망하게 보냈다는 생각이 든다.

하지만 2012년, 그동안 해오던 많은 일들이 결실을 맺고
힘차게 도약하는 한해가 되길 간절히 기도해본다.

'Life is...' 카테고리의 다른 글

선물받은 Tea forte.  (0) 2012.04.10
2011년을 마무리하는 나의 이력서.  (0) 2012.01.09
2010년을 마무리하는 나의 이력서.  (1) 2010.12.27
헌혈.  (0) 2010.11.01
Mr.Children - 쿠루미  (0) 2010.06.21
기회와 위기  (0) 2010.05.11
안드로이드 마켓에 올릴때 에러가 나서 확인.
uses-sdk 와 uses-permission의 위치 문제였다.

이 둘은 <application 이전에 나와야 한다.
패키지가 옛날 SDK에 설치하려한다고 에러가 난다.

확인해보니,

<uses-sdk android:minSdkVersion="15" />  로 지정되어 있었다.
그 밑에  <uses-sdk android:minSdkVersion="7" /> 추가해봤자;;

 
http://tactlee.egloos.com/2661977

'Window > Preferences > Android > Build'에서 'Default debug keystore' 항목을 참조후
해당 파일 제거


 
안드로이드에 애드몹 붙이려고 서핑.
http://stoptospade.tistory.com/66 에 상당히 친절히 나와 있어서 따라 함.
그런데 이런 에러가 발생. OTL
You must have AdActivity declared in AndroidManifest.xml with configChanges

검색해보니 해결책(아래 링크) 발견.
http://narakatech.blogspot.com/2011/11/admob431-you-must-have-adactivity.html
따라 했는데 안됨. OTL

확인해 보니, http://stoptospade.tistory.com/66 에서 정한 옵션보다 더 많은 옵션이 필요함.

아래와 같이 해서 문제 해결
1) 아래 activity를 추가 (옵션 정확하게)
<activity android:name="com.google.ads.AdActivity"             
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

2) project.properties의 정보 수정 android-15로 수정
# Project target.
target=android-15
  1. 지나가는 2012.05.25 14:20

    이것때문에 고생했는데, 감사합니다. ㅠ.ㅠ







오픈소스에 버그를 하나 등록했는데 아래와 같은 Comment를 받았습니다.


"this does not go to the .rodata section in the binary;

use static const char foo[] instead."

 이게 무슨 소린가 하고, 확인을 하기 위해 간단한 프로그램을 작성해보았습니다.



### c++

/* file: constchar.cpp
*
* gcc -S -O0 constchar.cpp -DCONST_POINTER
*/
#if defined(CONST_POINTER)
static const char* name = "hello";
#elif defined(CONST_ARRAY)
static const char name[] = "hello";
#else
static const char* const name = "hello";
#endif

int main()
{
return 0;
}


확인해보니 리뷰 comment대로

static const char* name = "Hello"; (이하 const_pointer)와 static const char name[] = "Hello"; (이하 const_array)

static const char* const name = "Hello"; (이하 const_pointer_const)

이 셋이 서로 다른 코드를 생성하는 것을 알 수 있었습니다.




먼저 .text 섹션을 보겠습니다.

main함수가 동일하기 때문에 위치만 다를뿐 동일합니다.

세 경우 모두, .rodata 섹션에 Hello 가 들어있습니다.

하지만 name(_ZL4name) 심볼의 경우,

const_pointer.s의 경우만 .data 섹션에 있고, const_array.s와 const_pointer_const.s의 경우에는 .rodata 섹션에 같이 있습니다.
생각해보면, const_pointer.s는 name의 값을 바꿀 수 있으니 당연히 .data 섹션에 변수로서 존재해야 합니다.
예를 들어 아래는 정상적인 코드입니다. static const char* name = "Hello";
name = "changed"; 하지만 아래는 컴파일 에러가 납니다. static const char name[] = "Hello";
name = "changed"; 따라서 변경 불가능한 문자열을 만들려고 한다면, const char [] 또는 const char* const를 사용해야 합니다.

그럼 const_array.s와 const_pointer_const.s의 차이는 뭘까요?

const_array.s를 보시면 LC0 label이 없는 것을 알 수 있습니다.

const_array.s의 경우만 name이 직접 Hello를 가르키고 있습니다.

(결론)
상수형 문자열을 쓰고자 한다면 static const char foo[] = "XXX"; 형태가 낫습니다.

참고로 아래 링크는 C언어의 변수 선언시 저장되는 영역에 관한 것입니다.
http://wwww7.com/bbs/zboard.php?id=Study&page=1&sn1=&divpage=1&category=3&sn=off&ss=on&sc=on&select_arrange=headnum&desc=desc&no=57


'프로그래밍 언어 > C/C++' 카테고리의 다른 글

GCC 옵션 : version script  (0) 2012.08.14
[C++] new는 null을 return하는가?  (1) 2012.01.17
static const char* vs static const char []  (0) 2012.01.04
우분투에서 ccache로 컴파일을 빠르게...  (0) 2011.08.31
POD vs non POD  (0) 2011.08.07
memwatch  (0) 2011.05.24

+ Recent posts