Sunday, July 8, 2012

Eclipse Juno, Android SDK R20, ADT20


2016.6 월에 업데이트 된 ADT 20 쓸만하긴 하지만...


이클립스를 켤 때마다 업데이트 할 때가 되었다는 메시징 깜박깜박~

마침 교육하던 곳이 안드로이드 수업을 할 때가 되어, 수강생들 개발 환경을 맞춰줘야 했다. 큰 맘 먹고 업데이트하라고 지시한다. Android SDK도 R20으로 새로 설치해준다.

'흠... 이만하면 되었겠지? 뭐 빠진게 없나? '

샘플 어플리케이션을 import해서 돌려본다. 이상없다. 강의할 때 사용하는 아주 간단한 앱을 서둘러 만들어본다.  Visual Layout Editor에서 뷰 컴포넌트를 이것 저것 가져다 붙인 후에 여전히, 아직도 지원되지 않는 몇몇 property를 수정해 주려 코드 보기를 한 순간...



< 커서 아래 코드를 보면 엘리먼트 이름이 안보인다 >

< 커서를 아래로 또르륵 내려주면 안보이던 코드가 보인다 >

마구 엉켜있는 코드들, 당황스러움. 다행히 커서를 방향키를 이용해서 아래로 쓸어주니 제대로 된 코드가 보인다. 수정을 하고 저장한다. '흠.. 적용은 되는 군...'

아무래도 이상해서, Eclipse버전과 Android SDK, ADT20 간의 호환성이 문제가 아닐까 의심해본다. 내내 사용하던 Eclipse 버전을 버리고(쓰던 물건을 아주 쉽게 버리는 놈이로군하. 너의 그 무심한 행동하나가 큰 화를 불러오리니...) Eclipse Juno를 다운 받아 설치한다.

다행히 모든 게 잘 돌아간다... 를 기대했으나, 그거슨 나으 허.튼.바.람... 제길슨 똑같다. 이전 버전으로 돌려보려 해써본다. 이미 안드로이드 개발자 사이트에서는 이전 버전의 SDK 인스톨러를 제공하지 않는다. ADT 다운로드 링크도 사라져있다. 꼼수를 부려 SDK R18과 ADT18을 구해서 설치해보려 하지만 (가장 안정적이라고 구글이 적시한 R19와 ADT18을 구해보려했지만, 구하지 못했다. 그리고, SDK R20 상에서는 ADT18을 사용할 수가 없다), SDK R18은 야속하게도 플랫폼 구성을 해주지 않는다.


다운받고, 설치하고, 돌려보던 아까운 두어시간이 흐르고, 그냥 난 현재에 만족하고 현재에서 행복을 찾기로 결심한다. (포기한 게 아니다)

2012년 7월10일 현재, 유일한 해결 방법은 저장을 하기전에 CTRL+SHIFT+F 를 이용해서 코드를 정리하는 것 뿐....


여하튼, 며칠 후...


Eclipse Juno 를 시작할 수가 없네요. 이건 왜 그럴까요?

간단하게 앱을 작성하다, 어느 정도 작성이 되어가는데, 알흠다운 여친님하께서 그만 나가자고 한다. 그렇다. 난 뉴요커가 된(장)냥, 슷하버크스에서 감미로운 음악을 들으며 코딩을 하고 있었던 거시었던 거시었다. 작업하던 내용을 모두 저장한 후 Eclipse Juno를 끄고 나왔다.

집에 도착한 후 작업을 마무리 하기 위해 다시 켠다.나를 반기는 경고창.흐흐흐


< 며칠 사이에 그 동안 만나보지 못했던 다양한 녀석을 만난다 >
로그를 봤더니...



처음 본 녀석이고, 관련 해결 방법도 정확하게 나온 게 없는 듯 하다.
Workspace 에 문제가 있었나 해서 변경해봐도 그대로이고, 임시 방편으로 workspace 밑에 폴더를 뒤져서 <workspace_name>\.metadata\.plugins\org.eclipse.core.resources 에 위치한 snap 파일을 지운 후 다시 켤 수는 있게 하지만, 재부팅 할 때마다 해줘야 하는 번거로움이 있다.

< 이 .snap 파일을 지워주면 이클립스를 다시 켤 수는 있다 >



웃긴건... 가끔은, 아주 가끔은 에러 없이 켜진다는 것이다.미친 놈이 분명하다.
귀차니즘으로 인해 아직까지 'Juno을 다시 다운로드해서 설치해 보지는 않았다'  이 글 쓸 시간에 해볼 걸 그랬나?

2012-07-10 : 이 글을 쓰고 포스팅한 후로 거짓말 처럼 에러가 발생하진 않았다. 하지만, 새로운 Workspace를 만들고 나서는 여전히 발생. Mac에서는 위에 언급한 두 문제 발생하지 않아서, 그 쪽에서 작업하는 중.





Sunday, July 1, 2012

Spring Security

Spring Security 3

[작성중이다가 현재 멈춤 상태임. 볼 것 없슴]

이 문서가 도움이 될거라 기대되는 대상

스프링 프레임워크의 하위 프레임워크인 Spring Security 프레임워크를 이용해 애플리케이션에 보안(security)을 적용하는 방법을 살펴보려고 해.  이 글의 목적은 Spring Security의 일반적인 지식들과 함께 실제 애플리케이션에서의 적용 예를 수박 겉핥기 식으로 살펴보는 것이지만, 때에 따라서는 '왜?'를 설명하기 위해 살짝 안쪽으로 들어갈 수도 있어. 여하튼, 이 문서의 타겟은 Spring Security 입문자야. 자기가 입문자 이상이라고 생각하면 볼만한 게 없을 거라는 얘기지. :)


  • 이 문서는 Spring Security 3 입문자용 수박핥기식 살펴보기 문서임



제공되는 예제를 함께 작성하고 따라해보기 위한 준비


우선 예제를 (혹시나) 따라해보기 위해서는 내가 예제를 만든 환경을 말해줘야겠군.
Eclipse는 springsource.org에서 배포하는 버전(STS-2.9.2.RELEASE) 을 사용했고,
사용자 인증과 권한을 조회하기 위한 데이터베이스로는 Oracle 11g를 사용했고, 내가 참고한 책들은 Spring Recipe, Spring in action, Springsouce.org 의 Spring Security Document 등등 이야. ( 자세한 내용을 보려면 세 번째 문서들을 정독하면 좋겠지만, 간단한 예제들을 통해 알고 싶다면 맨 앞의 Spring Recipe이라는 책이 좋을 듯 해. 초판을 먼저 보고 두번째판은 관심 종목별로 보면 될 듯)

  • Eclipse 3.7
  • Oracle 11g




시작하기 전에, 기본적인 용어 설명


자, 본격적으로 시작하기에 앞서 (읽기가 귀찮더라도) 기본적인 정보들은 살짝 알고 넘어가자.
Spring Security는 원래 Acegi Security라는 이름으로 알려져 있었어.. 그러다가 스프링 포트폴리오 프로젝트에 포함된 이후에 Spring Security라는 이름을 갖게 된거지.

그리고, 몇 개의 용어들:


  • Principal :  번역하자면 (보안 검증의 대상이 되는 대상, 본인) 이 정도가 맞으려나? user, device, system 모두가 될 수 있지만, 대부분은 user가 되겠지.
  • Credential : Principal이 인증을 받기 위해서는 자신을 증명하는 정보를 제시해야 하잖아? 그 때 제공하는 정보를 Credential이라고 해. 로긴하기 위해 패스워드를 제출하잖아? 그게 바로 credendial이 되는 거지.
  • Authentication : 이렇게 제출된 자료와 시스템이 가지고 있던 자료를 비교해서 검증하는 과정을 인증(authentication)이라고 하고,
  • Authorization : 인증된 사용자에게 그게 걸맞는 권한(authority)을 제공하는 것을 권한부여(authorization)이라고 하지.

시스템은 그 인증받은 사람의 역할(role)에 맞는 권한(authority)을 부여하고, 사용자가 해당 리소스에 대한 접근이 허용되는지를 결정(acsess control decision)한 다음에, 리소스에 대한 접근을 제어(access control)하지. 접근하게 하거나 못하게 하거나...





이제 본격적으로 설명을 해볼까요?