Commonlife's Blog

My daily life

Archive for 8월 2012

MacBook에 Ubuntu 설치 후 다시 되돌아오기

leave a comment »

맥북에 리눅스를 설치하려한 이유

  1. 지금 맥북의 성능이 조금씩 힘들어지기 시작한다.
  2. 애플 노트북이 비싸다.
  3. 다음 노트북을 살 때엔 비 애플 노트북을 구입하여 리눅스를 설치해서 사용하겠다는 계획을 세우게 됨.

 

맥북에서 우분투를 설치한 후의 불편한 점

  1. 스크롤 방향의 반대.
  2. Mac OS와 달리 GUI 환경에서 Root 환경은 Root 계정으로 따로 생성된다. (user A가 환경설정을 다 마친 후 gui상에서 root의 권한이 필요한 경우(terminal 제외) root로 다시 로그인을 하고 환경설정을 다시 해야 한다.)
  3. 재부팅 시 멈춘다.(종료 후 시작은 정상작동)
  4. Mac OS의 경우 /Applications 가 존재하여 응용프로그램 관리가 수월하지만 리눅스의 경우 없다.
  5. 리눅스에서 Mac OS의 영역에 GUI 환경에서 진입할 수가 없었다.(2번의 이유, 이건 나의 부족일 확률이 높음)

 

리눅스를 떠나며…

  1. 어차피 맥북이라 성능향상 효과를 기대할 수가 없다.
  2. 그럴거라면 굳이 지금 우분투를 할 필요가 없다는 생각.
  3. 더불어 리눅스에서 Mac OS X 영역에 접근이 안되니(GUI – 일반계정) 데이터를 중복할 수 밖에 없었다.

 

결국 나의 부족과 맥북의 사양으로 인하여 다시 Mac OS X으로 돌아가기로 했다.

  1. 문제는 리눅스의 swap영역이 Mac OS X의 디스크 유틸리티로 삭제 되지 않는다.
  2. 해결은 리눅스 설치 CD로 부팅 후 다시 리눅스를 설치하면서 swap영역을 지워버렸다.
  3. 이 후 Mac OS X으로 부팅 후 디스크 유틸리티로 리눅스 영역의 파티션을 삭제.

 

그래도 다음 노트북은 비 애플 노트북에 리눅스의 조합이 괜찮을 듯 싶다.

 

Advertisements

Written by tocommonlife

2012/08/17 at 11:01

mac os에 게시됨

Tagged with , ,

2개 이상의, 복수개의 레이아웃을 가진 ListView에서 ViewHolder 사용하기

leave a comment »

ListView를 활용하다 보면 거의 대부분이 두 개이상의 아이템 레이아웃을 활용할 때가 많다.

그럴 때면 ViewHolder를 활용하기가 참 난감하다. 하지만 메모리를 생각하면 ViewHolder를 활용해야 할텐데, 그게 잘 되지 않으니 고민이 깊어진다.

하지만 아래와 같이 활용하면 가능하다.

if (type == LIST_TYPE_01) {
    if (convertView == null) {
        separatorHolder = new SeparatorViewHolder();
        convertView = mInflater.inflate(R.layout.layout_01, null);
        separatorHolder.text = (TextView) convertView.findViewById(R.id.header_name);
        convertView.setTag(separatorHolder);
    } else {
        if (convertView.getTag() instanceof SeparatorViewHolder) {
            separatorHolder = (SeparatorViewHolder) convertView.getTag();
        } else {
            separatorHolder = new SeparatorViewHolder();
            convertView = mInflater.inflate(R.layout.layout_01, null);
            separatorHolder.text = (TextView) convertView.findViewById(R.id.header_name);
            convertView.setTag(separatorHolder);
        }
    }
    // layout 구현
} else {
    if (convertView == null) {
        secondViewHolder = new SecondViewHolder();
        convertView = mInflater.inflate(R.layout.layout_2, null);
        secondViewHolder.frameLayout = (FrameLayout) convertView.findViewById(R.id.frame_layout);
        secondViewHolder.text = (TextView) convertView.findViewById(R.id.text_view);
        secondViewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.check_box);
        convertView.setTag(secondViewHolder);
    } else {
        if (convertView.getTag() instanceof SecondViewHolder) {
            secondViewHolder = (SecondViewHolder) convertView.getTag();
        } else {
            secondViewHolder = new SecondViewHolder();
            convertView = mInflater.inflate(R.layout.layout_2, null);
            secondViewHolder.frameLayout = (FrameLayout) convertView.findViewById(R.id.frame_layout);
            secondViewHolder.text = (TextView) convertView.findViewById(R.id.text_view);
            secondViewHolder.checkBox = (CheckBox) convertView.findViewById(R.id.check_box);
            convertView.setTag(secondViewHolder);
        }
    }
    // layout 구현
}

convertView.getTag()를 호출하기 전에 getTag()에 의해 return되는 객체가 사용하려는 ViewHolder가 맞는 지 체크하고 아닌 경우엔 새롭게 ViewHolder를 만드는 것이다.

Written by tocommonlife

2012/08/03 at 09:16

Android에 게시됨

Tagged with ,