이 블로그 검색

2011년 7월 28일 목요일

트위터어플만들기-3

트위터어플만들기 세번째 시간입니다.
트위터는 트윗한 내용들이 쭉 나열되는 형태를 갖는 것이 일반적인 형태입니다.
그러므로 그 뼈대가 되는 리스트를 만들어야 하겠지요.
그럼 리스트를 만드는 클래스를 보도록 하죠.

public class ListData {
 private long twit_id = 0;
 private String friend_name = "";
 private String screen_name = "";
 private String twit_body = "";
 private String twit_image_url = "";

 public ListData() { }

 public ListData(long twit_id, String friend_name, String screen_name,
     String twit_body, String twit_image_url,long twit_time) {
  this.twit_id  =twit_id ;
  this.friend_name = friend_name;
  this.screen_name = screen_name;
  this.twit_body = twit_body;
  this.twit_image_url = twit_image_url;
  }

 public long getId() {
  return twit_id;
 }

 public String getFriendName() {
  return friend_name;
 }

 public String getScreenName() {
  return screen_name;
 }

 public String getTwitBody() {
  return twit_body;
 }

 public String getTwitImageUrl() {
  return twit_image_url;
 }

 public void setId(long twit_id) {
  this.twit_id = twit_id;
 }

 public void setFriendName(String friend_name) {
  this.friend_name = friend_name;
 }

 public void setScreenName(String screen_name) {
  this.screen_name = screen_name;
 }

 public void setTwitBody(String twit_body) {
  this.twit_body = twit_body;
 }

 public void setTwitImageUrl(String twit_image_url) {
  this.twit_image_url = twit_image_url;
 }

}

보다시피 트윗을 구성하는 항목들을 리스트의 구성요소로 갖게 됩니다.
이 항목들은 사용자가 임의로 만들어낸 것이 아닌 트워터를 구성하는 기본적인 요소들입니다.
개발시에 다른 요소들을 추가해서 트위터에 없는 항목을 리스트에 추가할 수도 있겠습니다만 여기서는 기본요소만 다루기로 하겠습니다.
그럼 간단히 살펴보기로 하죠.
friend_name은 트윗한 사람의 이름이고
screen_name은 트윗한 사람이 사용하는 아이디명입니다. 
twit_id는 리스트에는 보여지지 않는데 이것은 목록번호와 같은 것입니다. 트위터에서 임의로 고유한 번호를 할당한 것인데 이것으로 트윗목록을  정렬하는 것 같습니다.
twit_body는 짐작할 수 있듯이 트윗한 내용입니다.
마지막으로 twit_image_url는 트윗한 사람, 자신을 나타내는 프로필 이미지입니다.

그런데 이 리스트만으로는 레이아웃에 붙일 수 없고 어댑터가 있어야 한다는 것입니다.
다음 시간에는 이 리스트를 레이아웃에 붙이는데 매개 역할을 하는 어댑터 클래스를 다루겠습니다. 그럼 무더위에 건강 유의하세요^^

2011년 7월 3일 일요일

트위터 어플만들기2-레이아웃구성하기

트위터 어플 만들기 두번째 시간입니다. 그동안 바쁜 것도 아니었는데 포스트를 이제야 하게 되었네요. 고군분투한다는 것이 무엇인지 요즘에 느끼면서 살고 있습니다. 여러분들도 마찬가지겠지만...
레이아웃 구성은 비교적 쉬운 난이도의 문제지만 막상 해보면 그런 것도 아닌 것이 프로그래스바를 적정하게 배치하거나 동적인 구성을 해줘야 하는 때도 있다는 것입니다.
하지만 어려운 구성은 더 나은 스킬을 요구하기 때문에 이번에는 쉬운 구성으로 레이아웃을 만들어봅시다.

main.xml입니다.
<?xml version="1.0" encoding="utf-8" ?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#ffffff"
android:gravity="center_horizontal"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical" >
<listview
android:background="#ffffff"
android:id="@id/android:list"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
<textview
android:background="@drawable/twitter_logo"
android:gravity="center_vertical|center_horizontal"
android:id="@id/android:empty"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:text="잠시만 기다리세요."
android:textcolor="#0080ff"
android:textsize="18dp" />
</linearlayout>

간단합니다. 트위터의 타임라인을 보여주는 구성이기 때문에 리스트뷰를 붙였고 리스트가 하나도 없는 초기상태에서는 텍스트뷰의 '잠시만 기다리세요.' 라는 문구가 나타나게 됩니다.
이렇게 간단한 구성이라면 눈감고도 구성하시겠지요?
하지만 약간의 설명이 필요한 분들을 위해서 설명을 곁들이도록 하겠습니다.
3번째 줄 android:orientation="vertical"은 화면을 수직으로만 보여지도록 고정시키고 있는데 이것은 화면전환이 되면 어플이 초기화가 되면서 Activity가 새로 만들어지게 되고 로그인이 풀어지게 되어서 로그인을 다시해야 하는 문제가 발생합니다.그것을 인위적으로 막기 위해 화면을 수직으로만 고정시킨 것입니다. 또 횡적 구성의 레이아웃인 main_land.xml이라는 또다른 레이아웃구성이 필요하고 로그인을 유지하도록 하는 코딩이 추가되어야 하는 번거로움을 한번에 해결하는 것이기도 합니다.

gravity는 화면의 수평과 수직의 가운데에 내용이 나타나도록 하기 위해 필요한 코드입니다. 그 외에는 설명이 필요치 않는 코드들이네요.
의외로 간단한 구성입니다. 트위터라는 것이 간단한 문구들을 수시로 업데이트하는 형식이라 사용자의 액션에 실시간으로 반응해야 하기 때문에 복잡한 구성은 될 수가 없는 것이라고 할 수 있습니다.

 우리나라의 의사소통 수준은 외국에 비하면 무인도 수준이기 때문에 보다 자유로운 의사소통 툴이 필요하다고 생각합니다. 그런 면에서 트위터는 아주 좋은 의사소통 툴이지요. 우연히 방송인 김주하씨 트위터를 방문해 보았는데 생각보다 많은 트윗들이 달려 있어서 놀랐습니다. 아무튼 좋은 현상이라고 할 수 있겠습니다만.
김주하씨가 여성들에게 가장 닮고 싶은 여성언론인이라고 하네요. 김주하씨가 말씀을 논리적으로 잘하는지는 잘 모르겠지만 목소리 톤이 기억에 남긴합니다. 워낙 tv를 보지 않은 편이라서 tv쪽이나 언론에 대해서는 문외한입니다. 창피하긴 하지만 사람마다 장단점이 있는 법.
천재는 머리가 똑똑해서 천재가 아니고 비논리적인 것을 논리적으로 이해하는 것이라고 하네요. 아마 저도 천재인가...퍽!.윽...무더위에 건강에 주의하시고 돈도 많이 벌어서 부자되세요. 여러분. 알라뷰.

2011년 6월 3일 금요일

트위터 어플만들기 1.

트위터 어플을 만들기 위해서는 특별한 라이브러리가 필요합니다. http://twitter4j.org를 방문해서 페이지 중간에 있는 Download 아래 twitter4j-2.2.2.zip을 클릭하고 파일을 다운로드해서 압축을 풀어놓도록 합니다.
다음으로 프로젝트를 생성합니다.
이클립스를 열고 File/new/android project /프로젝트명에 Twit이라고 입력합니다.
Build Target은 Google APIs 2.2 8에 체크합니다. 어플리케이션 이름에는 TwitTest
패키지네임에 twit.com.twittest, create activity에 TwitTest, 그 아래 min version에 8을 입력하세요. finish를 클릭하면 프로젝트가 생성됩니다.
여기서 보통 프로젝트와는 다른 한 작업을 해주어야 하는데 외부라이브러리를 등록하는 것입니다. 패키지탐색기의 프로젝트명 Twit을 마우스오른버튼 클릭하고 import/file system을 클릭하고 다운받은 파일을 푼 폴더로 들어가서 lib폴더에 체크합니다. 오른쪽 창의 여러 파일 중에 core가 포함된 파일을 체크하고 finish를 클릭하면 임포트됩니다.
프로젝트 탐색기에서 lib폴더와 그 아래 twitter4j-core-2.2.2.jar파일이 보이면 성공한 것입니다. 이렇게 프로젝트 탐색기에서 작업을 해야만 바로바로 인식이 가능합니다. 편법으로 workspace의 프로젝트 폴더로 들어가서 lib 폴더를 만들고 jar파일을 붙여넣을 수도 있지만 이클립스에서 인식이 안 될 수 있으므로 전자의 방법을 사용하십시오.
이 파일을 라이브러리로 등록하려면 프로젝트명인 Twit을 마우스오른버튼 클릭하고 Properties를 클릭/java build path/Libraries/add jars클릭하고 방금 전에 import한 lib폴더 아래의 jar파일을 체크하고 마지막으로 ok를 클릭하면 됩니다.
처음으로 프로젝트를 생성하고 외부라이브러리를 등록해보는 개발자에게는 이 작업도 쉽지 않을 것입니다. 이미 한번 해봤던 개발자에겐 참 쉬운 일이지만 말이죠. 잘 안 되면 프로젝트와 프로젝트 폴더를 지운 후 처음부터 다시 시도해 보세요. 반복만이 고수로 가는 지름길입니다.
그럼 다음 시간에는 레이아웃을 구성해 보도록 하겠습니다.
좋은 하루 보내시고 소원이 있으면 구하세요. 그분께 말입니다.

2011년 4월 27일 수요일

배터리에 관하여...

필자의 스마트폰은 갤럭시110s 이다. 구입시 배터리 두개를 기본으로 준다. 배터리 2개로 인터넷서핑하고 트위터하고 영화감상,음악감상을 하기에 충분하지 않다. 전화기능만 사용하면 상당히 오래 대기할 수 있지만 멀티플레이를 하려면 배터리 두개로도 하루를 겨우 넘기는 시간밖에 사용할 수 없다. 그래서 편법으로 다른 기종의 것이라도 장착가능한 배터리라면 사이사이에 그것을 사용한다. 그 배터리를 두개의 표준배터리 충전을 깜박 잊고 모두 안 해놓은 경우 비상용으로 사용하기도 한다. 같은 삼성제품이면 호환이 가능하다. 규격이 맞지 않지만 억지로 맞추어서 사용하면 된다.(길이가 더 긴 것은 안 되지만 짧은 것은 가능함) 기기에 문제가 발생하지도 않는다.

충전을 하다보면 충전시간이 비교적 오래걸린다. 기기에 직접 연결해서 충전하는 경우,전원을 켜놓은 상태라면 충전시간은 몇배로 늘어나므로 반드시 기기와 직접 연결하여 충전시는 꺼두는 것이 좋다.

충전할 때는 한 콘센트에 다른 제품과 겸하지말고 단독으로 사용하는 것이 좋다. 또 pc의 usb보다는 전원콘센트를 이용하는 것이 보다 안정적이다. 충전속도도 더 빠른 것 같다.

무선으로 배터리를 충전할 수 있는 기술이 얼마전에 나왔다는 소식을 들었다. 이 기술이 빨리 대중화가 되어서 스마트폰 모든 기종에 적용되면 좋을 것 같다는 생각이 든다. 따로 충전할 필요없이 무선인터넷을 사용함과 동시에 충전이 되기 때문에 충전의 번거로움이 사라질 것이기 때문이다.

감사합니다.

2011년 4월 26일 화요일

트위터를 이용한 어플개발.

요즘 sns라는 것이 대세다. sns라는 용어가 정확히 무엇을 말하는지는 아는 바가 없고 단지 트위터, 페이스북 같은 쇼셜앱을 말하는 것으로 알고 있을 뿐이다. 워낙 약자들이 난무하는 세태라 그것들을 전부 외울라치면 상당한 에너지가 들기 때문에 나는 그것들의 핵심만 이해해서 에너지소비를 최소화한다. 여러분들도 저같이 하는 것이 정신건강에 좋을 것이다.

서론은 이쯤에서 그만하고 본론으로 들어가보자.
트위터를 이용해서 어플을 개발하려고 트위터에 대한 정보를 입수하는 과정에서 트위터에 로그인(인증)하는 방식이 달라졌다는 것을 알 수 있었다. 현재 어플리케이션의 로그인방식이 OAuth라는 프로토콜을 사용하는 것으로 바뀌었다.

바뀐 사항을 알기전 나는 기존의 인증방식을 사용한 코딩을 컴파일한 후 트위터의 목록을 가져오려했지만 결과는 NullPointException-아무것도 가져오지 못함-이 발생하였다. 혹시 라이브러리의 변화가 있었는가 검토하는 중에 라이브러리 소스들이 변화되었음을 알 수 있었다. OAuth를 적용한 방식이라는 것인데 일반인들은 이해하기가 어려운 프로토콜이다.

OAuth방식을 일반인들이 쉽게 이해하기란 좀 어려운데, 쉽게 설명해 보겠다.

사진을 올려서 여러사람과 공유하는 사이트(A사이트),사진을 인쇄할 수 있는 사이트(B사이트) 이렇게 두개의 사이트가 있다고 하자. A사이트 회원인 홍길동은 최근에 찍은 가족 사진을 A사이트에 올렸다. 그의 가족과 지인들은 그 사진에 만족해하며 즐거워한다. 그런데 홍길동의 회사 동료가 자기도 그 사진을 보고 싶다고 한다. 그러나 홍길동은 몇몇 특정사진은 회사동료(김말자)에게 공개하고 싶지 않기 때문에 회사동료인 김말자가 A사이트에 들어가서 자기의 모든 가족 사진을 보기를 원하지 않는다. 그래서 사진 몇 장만을 인쇄해서 김말자에게 보여줄 생각으로 B사이트에 들어가 보여줄만한 사진만을 인쇄하고자 한다. 이제 B사이트에서는 현재 홍길동이 인쇄하고자 하는 A사이트로 연결을 해야하는 임무가 주어지게 된 것이다. 그러나 B사이트는 A사이트에 있는 홍길동의 사진을 인쇄하려는 자가 진짜 홍길동인지 알지 못하므로 A사이트로 로그인을 위임하고자 현재 페이지를 A사이트 로그인 페이지로  연결해준다. 홍길동은 A사이트 로그인 페이지에서 로그인을 하여서 정당한 권한이 있음을 증명한다. A사이트는 B사이트로 홍길동이 맞다는 증명서(토큰이라고 함)를 보내준다. 이제 B사이트는 홍길동이 맞다라는 증명서를 이용해서 A사이트에 사진을 인쇄할 수 있게 접근할 수 있는 접근 권한을 요청한다.  A사이트는 B사이트가 가지고 있는 홍길동 증명서와 접근허가권을 교환하여 주며 B사이트는 접근허가권을 이용해서 사진을 인쇄할 수 있게 된다.

실제로는 이것보다 더 복잡한 과정이 들어있지만 정리하자면 이렇다.-이해하기 난해하긴 마찬가지다.
아무튼 어플 개발은 고사하고 이 새로운 개념을 이해하는데만 하루가 걸렸다. 다음부터는 본격적인 개발이슈로 진입해보자.

간단한 저의 소개.

저의 소개를 간단하게 해드릴까 합니다. 그래도 명세기 포털사이트에서 지식브레인으로 활동하고 있는데 그냥 넘어가면 섭섭하니깐.
일단 저의 포털사이트에서의 현황을 보여드릴께요.
http://k.daum.net/qna/member/info.html?userid=-ejqDUFTd8o0
자, 이제 저의 정체를 다 아셨죠?
아이 브끄브끄. 그런데 정체라는 단어가 나와서 말인데
요즘 tv pro인 위대한탄생을 보면서 노래 외적인 것들이 프로그램의 내용을 많이 차지하면서 참 재미있게 진행되고 있다고 느끼고 있습니다. 여러분들은 위대한 탄생에 만족하거나 만족하지 않거나 일텐데 저는 만족여부는 별개로 치고 어떻게 그런 프로그램이 이것저것 섞어놓은 석거찌개마냥 온갖 인간만상을 그렇게나 적나라하게 잘 표현하고 있는지, 저렇게도 프로그램을 만들 수 있구나 하는-물론 그 대부분을 시청자들이 만들어 놓았지만-생각이 들었습니다. 프로그램의 횟수가 더할수록 참가자들의 정체가  마구 드러나는데 재밌더군요.ㅋㅋ

그럼 제 정체가 드러났으니 평가는시청자들의 몫으로 남겨둘까요? 근데 어째 싫은데...

스테이션 종착역-안드로이드퍼브.

내가 안드로이드 개발에 필요한 정보나 기타 안드로이드에 관련된 정보를 얻고 있는 사이트가 있는데 그곳은 바로 안드로이드퍼브이다.
http://www.androidpub.com/
이 사이트는 안드로이드에 대해 모든 것을 다루고 있다고 해도 과언이 아니다.
하드웨어는 물론이고 소프트웨어, 사람까지도 안에 들어있어서 이 사이트 하나면 안드로이드에 대한 모든 것을 설렵할 수 있다고 할 수 있다.
아직 나도 이 사이트를 전부 탐구해보지 못했다. 글조차 아직 등록을 못하고 있는 실정이다.
준회원이상만이 사이트에 글을 올릴 수 있게 되어 있는데 아직은 신입사원 신분인지라 글쓰기를 하지 못하고 있는 것이다. 등업을 신청해 놓은 상태이긴 한데 언제 등업이 될련지는 모르겠다.

안드로이드 어플개발에 관심이 있거나 어플개발을 의뢰할 목적이 있다면 이 사이트에 관련 글을 올려주면 즉각 반응이 있을 것이다.
특히나 꾸준히 올라오는 앱들을 보면 이 사이트를 방문하지 않을 수가 없다. 개발 소스를 제공하지는 않지만 하나씩 뜯어보다 보면 개발에 도움이 될 것이다.
안드로이드의 종착역 중에 하나인 이 사이트에 많이 방문해보기 바란다.

감사합니다.