반응형

Flex를 설치할 때, flash builder 4.6 을 이용하여 설치를 한다.

필자가 플래쉬 빌더를 설치한 후, 플러그인 형식으로 플래쉬 빌더의 utilities의 Adobe Flash Builder 4.6 Plug-in Utility 를 사용하여 설치를 완료했고, 이클립스에서 Flash 를 활성화 하려는데 에러 16(Error 16)의 에러메시지를 내뱉더라.


삭제 후 재설치를 하여도 되지 않는 현상, 검색을 해보니 아래와 같은 글이 있었다.


http://forums.adobe.com/thread/604540




그냥 뭐 간단히 말해주자면 해당 경로의 cache.db 파일 권한을 재설정해주라는 말이 전부다.


그럼 이쯤에서 윈도우 7 기준으로 해당 경로가 어떻게 되는지 알아보자.


C:\Program Files\Common Files\Adobe\Adobe PCD\cache

 

for 32-bit Windows

 

 

and

 

C:\Program Files (x86)\Common Files\Adobe\Adobe PCD\cache

for 64-bit Windows.


라고 ChrisPaduan 이라는 사람이 친절히 설명해놓았다.


해당 디렉토리의 cache.db를 읽기전용 해제해주면 잘 된다. 여러분, 즐 플렉 하시길 ^_^

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형
Starting Tomcat v5.5 Server at localhost' has encounterd a problem.

 

Server ports (8080, 8009) required by Tomcat v5.5 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

 

어떠한 프로세스가 8080포트가 이미 사용중이기에 새로운 프로세스로 구동할 수 없다는 메시지이다.

 

이 메시지는 OS 상관없이 동일하며, 해당 포트를 사용중인 프로세스를 강제종료하거나 또는 위의 포트를 수정해서 구동하는 방법 등이 있다. 이는 현재 상태가 운영서버인지, 개발서버인지 또는 로컬개발환경인지에 따라 해결방법이 무궁무진하다.

 

대부분의 위의 오류메시지는 로컬개발환경임을 감안하고, 아래의 절차대로 수행한다.

 

1. Windows 기준 - 8080 포트를 사용중인 프로세스 확인

1-1. CMD 켜고 아래의 명령어 입력

> netstat -ano | findstr :8080
해당 명령어의 결과 중, 로컬 주소가 0.0.0.0:8080 인 항목의 PID를 확인한다

> taskkill /pid 1111 /f

/f 옵션은 강제종료를 의미한다.

 

2. Linux 기준 - 8080 포트를 사용중인 프로세스 확인

> netstat -ntlp | grep :8080
해당 명령어의 결과 중, PID 항목을 확인한다

> kill -9 PID

-9 옵션은 강제종료를 의미한다.

 

추가.

과거에 작성한 내용은 불확실한 정보가 너무나도 많아 아예 새로 작성하였다.

특히 SpringBoot를 주력으로 개발하다보니 Windows 상에서 포트충돌나는 일이 많아, 아예 cmd 명령어를 외우고 다닐 지경에 이르렀다. 부디 많은 개발자들에게 도움되었길 바란다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

1. 구글 글래스가 우리나라에 출시되면, 그냥 카메라 달린 ㅈ비싼 안경일 뿐.


우리나라에서 서비스하는 각종 지도관련 서비스, 반쪽짜리라는 건 아십니까. 측량법에 의하여 국내 지도들은 해외에 판매가 불가능하고, 따라서 1:5만 미만의 소축적지도 이상으로는 해외 업체가 구입할 수 없습니다.


 측량법 제27조 (측량성과의 국외반출금지) 누구든지 대통령령이 정하는 경우를 제외하고는 건설교통부장관의 허가없이 기본측량의 측량성과중 지도·연안해역기본도·측량용 사진을 국외로 반출하지 못한다.

측럅법 시행령 제12조 (측량성과의 국외반출) 다음 각호의 1에 해당하는 경우에는 법 제27조의규정에 의하여 기본측량성과중 지도 및 연안해역기본도는 건설교통부장관의 허가없이 국외로 반출할 수 있다. < 개정 1994.5.23, 1994.12.23, 1999.2.8>
1. 대한민국정부와 외국정부간에 체결된 협정 또는 합의에 의하여 상호 교환하는 경우
2. 정부를 대표하여 외국정부와 교섭하거나 국제회의 또는 국제기구에 참석하는 자가 자료로 사용하기 위하여 반출하는 경우
3. 관광객의 유치와 관광시설의 선전을 목적으로 제작하여 반출하는 경우
4. 축척 5만분의 1미만의 축척도를 국외로 반출하는 경우


해외 구글맵을 잠깐이라도 본 사람은 알겠지만 소축적지도에서도 상당히 자세하게 각 나라의 도로등이 표기되는 걸 보셨을겁니다. 이는 소축적지도(물론 대축적지도 포함) + 길 데이터까지 잔뜩 제공한 해외업체의 협력이 있었기 때문입니다.


그에비해, 우리나라는 아직은 휴전국이고 하는 이유(사실 명분이 클듯)로, 그러한 대축적지도는 물론이거니와 저러한 규모의 소축적지도를 법적으로 규정, 판매해온 것으로 알고 있습니다.


아니 막말로 고해상도 첩보위성이 수백개가 하늘에 둥둥 떠다니는데 이제 지도가 뭔 소용일까, 그리고 한국은 미국의 주요 동맹국이라면서 이런걸 외교적으로 해결 못할까. 싶을 정도네요.


이야기가 너무 정치적으로 빠졌지만 여튼 이러한 이유로 구글 글래스가 우리나라에 들어오면 저러한 규제에 발목이 왕창 잡혀서 ㅈ비싼 안경이 될 뿐입니다.



2. 그놈의 은행 보안어플, 나아가서 ActiveX


그나마 지금은 약 1g 정도 상황이 나아지긴 했습니다만, ActiveX라는 놈들 때문에 골머리 썩은게 한두번이 아닐겁니다.

액티브X가 무엇인지 링크를 확인해보시면 더 좋으리라 여겨집니다.


간단히말해서 웹 추가모듈의 편리함을 추구하고 마쏘가 만들어낸 겁나 쩌는 신기술이지만, 이게 너무 쩔고 너무 편리해서 악용되기도 하니까 슬슬 걷어내려다가 아예 마쏘가 포기한 기술이기도 하지요. 액티브X 자체로는 괜찮습니다. 다만 이걸 악용할 소지가 너무 크다는게 문젭니다.


여튼, 이렇게 액티브x(활동고자)로 떡칠이 되다시피하니, 근 몇년간 웹기술은 발전하기가 참 어려웠지요. 그나마 크롬/파폭이 선전하면서 액티브x를 많이 지향하다보니 이제 정부쪽에서도 슬슬 눈치가 보이긴 하나봅니다.


그런데 여기서 또한번 병크를 제대로 터뜨려주신게, 모바일 금융 어플을 사용할 때 백신프로그램 사용 의무화 - 국내 출시폰 백신 어플 기본 설치 - 국내 금융 통합 백신 솔루션 사용 의무화의 3단 병크를 터뜨려주셨슴다. 





거기에 안드로이드의 "알 수 없는 소스 사용"을 체크해야 한다는 조건하에 ㅡㅡ;;

안그래도 요새 피싱사이트가 드럽게 많아서 무서워죽겠는데, 이제 저 통합 모바일 웹에 접속해서 피싱 어플을 다운로드 하고 실행하는 순간, 개인정보가 털리는 건 지금 그 어떤 사태보다도 위험하게 느껴집니다.


어느정도냐구요? 저, 알 수 없는 소스 사용은 안드로이드 어플의 디버깅을 할 때 쓰는거고, 맘만 먹으면 사진이니 폰번호니 뭐니 나발이니 나부랭이니를 다 털어갈 수 있습니다. 


이 시대역행적 사고발상을 가진 정부는 무엇을 하고 있는것일까요. 정말로 답답하기 그지없습니다.

반응형

'어장 바깥세상' 카테고리의 다른 글

쥬라기 월드  (0) 2016.09.19
터미네이터 - 제네시스  (0) 2016.09.19
트랜스포머3 Dark of the moon 리뷰  (8) 2011.06.30
등록금과 물가, 살기 참 힘들죠, 그죠?  (0) 2011.06.10
Katy Perry - Teenage Dream  (2) 2011.04.16
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

JSTL 

Jsp표준 태그 라이브러리(Jsp Standard Tag Library)의 약어

 

jstl을 가지고 할수 있는일

간단한 프로그램 로직의 구사(자바의 변수선언,if문for문 등에 해당하는 로직)

다른JSP페이지 호출(<c:redirect>,<c:import>)

날짜,시간,숫자의포맷

JSP페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성

데이터베이스로의 입력,수정,삭제,조회

XML문서의 처리

문자열을 처리하는 함수 호출

 

위에 있는 여러 가지 기능들 중 제일 마지막에 있는 '문자열을 처리하는 함수 호출'을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.

(*커스텀액션 : xml문법을 따르면서 특정한 동작을 수행하는 태그)
 

jstl을 살펴보면 커스텀액션이나 함수의 이름앞에 c,fmt,fn등이 접두어가 붙어 있는것을 볼수 있다 

표준 액션의 태그 이름 앞에는 모두 jsp라 는 한 종류의 접두어가 사용되는데 Jstl의 커스텀 액션과 함수에는 왜 이렇게 다양한 접두어가 붙는걸까?

그 이유는 Jstl이 다시 5개의 작은 라이브러리로 나뉘어지고 커스텀 액션과 EL 함수는 각각 다른 라이브러리에 속하기 때문이다. 

 라이브러리

기능 

URL식별자 

접두어 

 코어

일반프로그래밍 언어에서 제공하는 것과 유사한 변수 선언,실행흐름의 제어기능을 제공하고, 다른 JSP페이지로 제어를 이동하는 기능도 제공 

http://java.sun.com/jsp/jstl/core

 c

 포매팅

숫자,날짜,시간을 포매팅하는 기능과 국제화,다국어 지원 기능을 제공 

http://java.sun.com/jsp/jstl/fmt 

fmt 

 데이터베이스

데이터베이스의 데이터를 입력,수정,삭제,조회하는 기능을 제공 

http://java.sun.com/jsp/jstl/sql 

sql 

 XML처리

XML문서를 처리할때 필요한 기능을 제공

http://java.sun.com/jsp/jstl/xml 

xml 

 함수

문자열을 처리하는 함수를 제공 

http://java/sun/com/jsp/jstl/functions

fn 

 

위 표를 보면 c.fmt,fn이라는 접두어가 있다. 그리고 이것은 각각 코어라이브러리,포매팅 라이브러리,함수라이브러리의 접두어라 표시되어 있다. 하지만 라이브러리를 구분하는 것은 사실상 접두어가 아니라 위표에 나와있는 URI실별자이다. 접두어는 단지 코딩을 간편하게 하기 위해 사용되는 수단일 뿐이다. 그러므로 Jsp페이지에서 이 접두어를 사용하기 위해서는 먼저 라이브러리의 UTI식별자와 접두어를 연결해야한다. 그런 일은 taglib 지시자를 통해 할수 있다.

 

taglib지시자는 다른 지시자와 마찬가지로 <%@ ~ %>로 종료된다. 이 지시자에는 uri와 prefix라는 두 개의 애트리뷰트를 써야하고 이 두 애트리뷰트에 각각 URI 식별자와 접두어를 값으로 주어야 한다.

 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

                               ↑                                        

                           접두어                         라이브러리를 식별하는 URI

 

taglib는 jsp페이지의 맨 위쪽에 기술한다. 하지만 어디에 써도 상관은 없다.



출처 : http://blog.naver.com/kalmia888/177110388

[출처] JSTL|작성자 시아

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

에러:Choose unique values for the 'webAppRootKey' context-param in your web.xml files


해당 에러는 패키지 파일 이름 변경 후 web.xml 등에서 context-param의 param-value 값을 바꿔주지 않아서 생기는 문제.


패키지 파일 이름과 param-value를 일치시켜주면 해결된다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형


안녕하세요, 김생선입니다.

이번에 간략히 소개해드릴 글은, 안드로이드 4.2 젤리빈 갤럭시 넥서스의 변경점에 대한 글 입니다.

회사 일이 약간 바쁘기에 자주 인사드리지 못하는 점, 양해해주시기 바랍니다. ^^;



먼저 4.2는 얼마전까지만 해도 키라임파이라며 많은 루머가 있었지만, 구글 측에서 4.2 버전은 젤리빈이다, 라는 확언이 있었고 바로 4.2 업데이트가 시작되었지요.

국내에서는 아직까지 업데이트 일정이 잡혀있지 않습니다만, 넥서스 4, 7, 10과 함께 갤럭시 넥서스의 업데이트가 해외에서 있었습니다.
(물론 국내에서도 넥서스 7의 4.2 업데이트는 있습니다.)


그럼 4.2의 변한 모습을 간략하게나마 살펴보도록 하겠습니다.

(2012/09/03 - [어장 스마트폰/어장 안드로이드] - 말랑말랑한 안드로이드 4.1 젤리빈  | 4.1 JellyBean 업데이트와 비교하시면 더욱 좋아요~)



1. 잠금화면



잠금화면의 모습


가장먼저 잠금화면입니다.

기존 젤리빈에서의 잠금화면과 큰 변화는 없어보이지만, 가장 중요한점은 잠금화면 버튼에서 왼쪽으로 스와이프시 카메라, 오른쪽 스와이프시 잠금해제, 상단 스와이프시 구글 나우로 들어가던 메뉴가 사라지고 어떠한 방향으로 스와이프를 하여도 잠금해제가 가능합니다.


구글 나우의 경우에는 하단의 점선 동그라미를 위로 스와이프 하는 방식으로 진입할 수 있으며, 카메라 모드는 잠금화면을 왼쪽으로 스와이프시 진입할 수 있습니다.


이번 4.2 젤리빈의 가장 큰 변경점 중 하나로, 잠금화면에 위젯을 지원한다는 점입니다.



시계 위젯을 클릭했을 때왼쪽의 위젯 선택 영역

잠금화면의 오른쪽잠금화면의 왼쪽


사진에서 보여지다시피 잠금화면에서 위젯이 설정 가능한데, 현재 어플리케이션에서 지원하지 않기 때문인지 사용 가능한 잠금화면 위젯은 안드로이드 기본 위젯 외에는 없습니다. ^^;



2. 카메라


4.1 아이스크림 샌드위치에서도 큰 변화를 보여주었던 카메라 어플리케이션이, 4.2에 들어서는 더욱 많은 변화를 보이고 있습니다.



카메라 초기 화면 포커싱중


얼핏 보기에는 큰 변화가 없어 보이지만, 포커싱부터 시작하여, 



카메라 터치중의 모습 노출 조정


플래시 조정 화이트 밸런스 조정


다양한 카메라 효과를 버튼식이 아닌 스와이프식으로 구성하여 좀 더 세련되고 간편하게(개인적 취향이겠지만^^;) 변하였습니다.



360도 파노라마 메인화면 360도 파노라마 구성중


또한 360도 파노라마 모드를 지원하여 좀 더 다채로운 파노라마 사진을 구성할 수 있는데, 개인적으로는 처리하는 시간이 상당하기에 약간 부족하지 않나 싶습니다.

그래도 기본 어플이 이정도로 지원해준다는 점에서 상당한 의의가 있다고 여겨집니다.

그리고 기본 사진 어플리케이션 자체적으로 사진에 GPS 위치정보를 저장할 수 있습니다. :-)



3. 기타


상단바에서는 큰 변화가 없지만, 상단바에 자체 토글이 생김에 따라 약간의 편의성이 증대했다고 볼 수 있겠습니다.



상단바 상단바 토글 화면


우측 상단의 아이콘을 클릭하면, 해당 타일 형식의 토글 버튼이 생성됩니다.

개인적으로 사운드 토글이 없기에 약간 아쉽다는 생각이 들지만, 사운드 토글 정도야 볼륨버튼으로 조절할 수 있기 때문에 추가하지 않은 듯 합니다.




또한, 기존에 어플리케이션을 삭제하면 "해당 어플리케이션을 삭제하였습니다" 라고 뜨는 확인창을 매번 클릭해줘야 하는 번거로움이 사라지고, 제거를 완료했다는 토스트 메시지가 간략히 추가되어 많이 편해졌습니다.

개인적으로 이 부분, 매우 마음에 듭니다. ^_^



기본 시계 위젯 시계 위젯 접근 화면 


스탑워치 시간 지정 스탑 워치 기본 알람


또한, 기본 시계위젯이 상당히 심플해짐에 따라, 개인 취향에 갈리겠지만 나름 멋진 맛이 있습니다.

전 기존에 사용중이던 위젯을 지울 정도로 이번 시계 위젯이 마음에 드네요.


그리고 기본 알람 및 스탑워치 등이 새로이 변하면서 좀 더 미려한 멋으로 탈바꿈하였습니다.

점점 더 세련되게 변하는 안드로이드를 바라보며 그저 뿌듯하네요.




그러나 약간의 버그인지 무엇인지 알 수 없는 항목도 존재합니다.

해당 화면은 Root Explorer라는 어플리케이션으로 본 Root/storage 화면인데 emulated , sdcard0 항목이 동시에 존재하는 현상이 보이고 있습니다.

실제로는 같은 디렉토리인데 사용자 입장에서는 약간 혼동이 될 듯 합니다.



4. 마치며


안드로이드가 UI 적으로 상당한 탈바꿈을 보인 건, 2.3 진저브레드와 4.0 아이스크림 샌드위치 정도로 볼 수 있습니다.

진저브레드에서는 회색의 UI가 모두 검정색으로 탈바꿈을 하였으며, 4.0 아이스크림 샌드위치에서는 3.0 허니콤에서 사용중이던 타블렛 UI를 스마트폰용으로 바꾸었다는 점에서 큰 변화를 이루고 있습니다.


4.2에서는 폰트와 세부적인 항목을 조금씩 손댐으로써 더욱 멋진 모습으로 변하고 있네요. 나름대로 점점 대만족을 느끼고 있습니다.


단, 아쉬운 점이라면 국내 통신사/제조사에 부딪혀 발빠른 업데이트를 하지 못하는 반쪽짜리 레퍼런스 스마트폰과 제조사 커스터마이징의 안드로이드 버전을 사용하면서 안드로이드 순정 UI를 맛볼 수 없다는 점은 그저 아쉬울 뿐입니다.



다음에 다룰 글이긴 하지만, 4.2 버전은 아래의 링크에서 설치가 가능합니다.

http://forum.xda-developers.com/showthread.php?t=1737849


해당 업데이트를 실행하기에 앞서, 아래의 글을 반드시 읽어주시기 바랍니다.


1. 갤럭시 넥서스만 사용 가능

2. 롬을 업데이트 할 경우, 순정의 경우에는 그냥 업뎃이 가능하지만, 커스텀 롬 등을 설치한 경우에는 풀 와이프 할 것.

3. 해당 링크는 루팅된 롬이라는 것~


정도가 되겠습니다. 롬을 설치해보신 분이라면 그저 쉬운 내용이긴 합니다.


그럼 다음에 뵙도록 하겠습니다.(__)

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형

어플을 개발하다보면 아래와 같이 공지사항 형식의 dialog를 많이 볼 수 있다.





그러니까, 처음 실행시 해당경고사항에 대해 팝업을 띄워주고 다시보지 않음과 같은 버튼을 만들어서 해당 버튼을 클릭하면 다음부터는 실행하지 않는 것인데, 의외로 구현하기가 거시기한 항목중 하나였다.


간단히 말 해서, dialog와 SharedPreference를 함께 쓰는 것이었다.


sharePreference는 어플리케이션의 "설정"창에서 흔히 볼 수 있는 부분인데, 이에 대한 선행이해가 필요할 것이나, 무작정 따라해서 구현할 수도 있기 때문에 일단 적어본다.


개략적인 구성은 아래와 같다.


Preference 항목을 두 개를 만든다고 가정하자, 각각 A와 B 이다.

어플이 실행될 때 마다 A Preference에 어플 버전을 저장하고 dialog를 호출할 때 A Preference와 B(초기값 null) Preference를 비교하여, A와 B가 다르면 dialog를 보여준다.

[다시보지 않기] 버튼을 클릭할 경우, 어플리케이션 버전을 B Preference에 저장한다.


결론적으로 어플이 실행될 때 [다시보지 않기]를 클릭한 경우, 저장된 A와 B가 서로 같기 때문에 dialog를 출력하지 않는다.


만약 어플리케이션 버전업을 할 경우, A Preference에는 새로운 버전이 저장되며, B Preference에는 기존의 버전이 저장되기 때문에 A와 B가 다르고, 다르기 때문에 dialog를 다시 보여준다.


약간 이해가 어려울 지 모르겠지만 뭐 상관없다.


그럼 개략적인 소스를 살펴보자.


/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);


String version;

try {

PackageInfo i = getPackageManager().getPackageInfo(getPackageName(), 0);

version = i.versionName;

} catch (NameNotFoundException e) {

version = "";

}


SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); // UI 상태를 저장합니다.

SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다

editor.putString("check_version", version); // 저장할 값들을 입력합니다.

editor.commit(); // 저장합니다.


String check_version = pref.getString("check_version", "");// 

String check_status = pref.getString("check_status", "");

if (!check_version.equals(check_status)) {

AlertDialog alert = new AlertDialog.Builder(this).setIcon(R.drawable.icon)

.setTitle(R.string.app_notice)

.setMessage(R.string.app_notice_update)

.setPositiveButton(R.string.app_notice_yes, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

})


    .setNegativeButton(R.string.app_notice_no, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

String version;

try {

PackageInfo i = getPackageManager().getPackageInfo(getPackageName(), 0);

version = i.versionName;

} catch (NameNotFoundException e) {

version = "";

}

SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); 

   // UI 상태를 저장합니다.

SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다

editor.putString("check_status", version);

editor.commit(); // 저장합니다.

dialog.cancel();

}

}).show();

}

}



그럼 이제 소스를 차분히 뜯어보자.


String version;

try {

PackageInfo i = getPackageManager().getPackageInfo(getPackageName(), 0);

version = i.versionName;

} catch (NameNotFoundException e) {

version = "";

}


이 부분은 어플리케이션의 버전을 저장하는 부분이다. version 이라는 항목에 String 값으로 저장된다.



SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); // UI 상태를 저장합니다.

SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다

editor.putString("check_version", version); // 저장할 값들을 입력합니다.

editor.commit(); // 저장합니다.


주석이 잘 달려있기 때문에 크게 설명할 부분이 없다.

check_version 항목에 현재 어플리케이션 버전을 저장한다.



String check_version = pref.getString("check_version", "");// 

String check_status = pref.getString("check_status", "");


여기서부터가 이제 중요하다.

저장된 check_versioncheck_status를 가져온다.

check_version은 윗부분에서 현재 어플리케이션을 저장했으며, check_status에서는 아무것도 저장되지 않았기 때문에 null값이 들어간다.



if (!check_version.equals(check_status)) {


check_version과 check_status를 비교한다. string 형이기 때문에 .equals로 비교를 하며, 서로 값이 다를 때를 가정하기 때문에 check_version 앞에 !를 붙인다.



AlertDialog alert = new AlertDialog.Builder(this).setIcon(R.drawable.icon)

.setTitle(R.string.app_notice)

.setMessage(R.string.app_notice_update)

.setPositiveButton(R.string.app_notice_yes, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

})


해당 부분은 dialog 부분이기 때문에 설명 없이 넘어간다.

해당 부분은 ok 버튼을 클릭했을 때를 나타낸다.



.setNegativeButton(R.string.app_notice_no, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {


[다시보지 않음] 항목을 클릭했을 때를 정의한다.



String version;

try {

PackageInfo i = getPackageManager().getPackageInfo(getPackageName(), 0);

version = i.versionName;

} catch (NameNotFoundException e) {

version = "";

}


현재 어플리케이션 버전값을 읽어오기 위한 version 체크 부분이다.



SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); 

   // UI 상태를 저장합니다.

SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다

editor.putString("check_status", version);

editor.commit(); // 저장합니다.

dialog.cancel();


SharedPreference의 pref에 아래의 내용을 저장한다.

check_status에 위에서 호출한 version 값을 저장하고 dialog를 cancle 한다.




이로써 다시보지 않음 dialog를 정의하는 방법에 대해 알아보았다.

negative 버튼을 클릭하였을 때 현재 버전을 check_status에 저장하고, 어플리케이션을 다시 실행하였을 때, check_version과 check_status를 비교하여 같으면 보이지 않고, 다르면 보이는 코드는 이처럼 구현된다.


물론 중복되는 소스도 있고 확실히 좀 더 줄일 수 있는 부분이 몇군데 보이지만 현재로써는 내가 할 수 있는 부분은 이와 같다.

반응형

'어장 Develop > 어장 Android' 카테고리의 다른 글

[Android] addview를 사용할 때의 위치설정  (0) 2012.08.08
Thread로 ProgressDialog 사용하기  (0) 2012.08.03
listview와 intent  (0) 2011.03.16
listview  (0) 2011.03.12
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형




스마트폰 배경화면 바꾸는 것을 좋아하는 김생선씨.

스마트폰을 사용하면서 멋진 배경화면을 자주 바꾸는데, 윈도우7 의 슬라이드 쇼 배경화면 처럼 스마트폰에서도 배경화면을 자동으로 바꿔주는 어플리케이션은 없는가 고민합니다.

그리고 만들어낸 어플리케이션, 바로 "김생선의 쇼 페이퍼"입니다.







안녕하세요, 김생선입니다.

이번에 소개해드릴 어플리케이션은, 쑥쓰럽지만 제가 만든 어플리케이션입니다. 바로, "김생선의 쇼 페이퍼"입니다.

지난해, 학교다닐 적에 공부할 겸 만들기도 한 이 어플리케이션은 일전부터 불편함을 느끼고 만들어보자고 노력했던 어플리케이션이기도 합니다.


간단하게 말씀드리자면 폴더 내 이미지를 랜덤으로 바꿔주는 어플리케이션입니다.

저처럼 배경화면을 자주 바꾸면서도 귀찮음을 느낀 분들, 그리고 매일매일, 1분 1초, 켜고 끌 때 마다 색다른 배경화면을 느껴보고 싶은 분들께 추천해드립니다.



1. 설치하기


해당 어플리케이션은 안드로이드 버전 2.1(이클레어) 이상에서 가능합니다.

또한 설치는 마켓에서 "김생선"을 검색하여 설치가 가능하며, 아래의 링크 혹은 QR코드를 통해서 설치가 가능합니다.


웹페이지에서 설치하러 가기

스캔하여 설치하기



2. 살펴보기


어플리케이션 자체는 크게 어려운 편은 아니라고 생각되어집니다만, 그래도 조심해서 나쁠 것은 없겠지요.

어플리케이션은 크게 두 부분으로 나뉘어집니다.

첫째로, 설명서 부분과, 둘째로 설정 부분이지요.


설명서 로고설명서 내용


또한, 설명서의 맨 마지막장을 보시면 적용하기 쉽도록 버튼을 달아서 바로 적용하실 수 있도록 하였습니다.


설명서 페이지의 맨 마지막장



3. 설정하기


어플리케이션 설정부분이 약간 복잡스러운데, 차근차근 살펴보도록 하겠습니다.



쇼 페이퍼 설정 화면




1. 변경시간 설정 - 자동으로 배경화면이 바뀌는 시간을 설정합니다. 1초부터 하루까지 다양한 시간이 존재합니다.

2. 슬립모드 설정 - 슬립모드 해제시 배경화면을 바꿀 것인지를 설정합니다.

3. 배경그림 스크롤 - 홈 화면에서 스크롤을 할 때, 배경화면도 스크롤 할것인지를 설정합니다.

4. 그림 확대 - 화면의 사이즈보다 작은 그림을 화면 크기에 맞춰 조정합니다.

5. 그림 압축 - 화면의 사이즈보다 큰 그림을 화면 크기에 맞춰 조정합니다.

6. Fade 효과 - 배경화면이 바뀔 때 좀 더 부드러운 효과를 사용합니다.

7. 화면 두번 터치 - 홈 화면에서 더블 터치를 할 경우, 다음 배경화면으로 변경됩니다.

8. 그림폴더 찾기 - 배경화면으로 설정할 폴더를 선택합니다.

9. 도움말 - 어플리케이션에 관한 짤막 이야기를 소개합니다.



4. 적용하기


적용방법은 크게 어렵지 않습니다.




이 화면에서 [배경화면 설정하기] 탭으로 들어가거나, 혹은 설명서에 나온 대로 [배경화면 롱클릭] - [라이브 월페이퍼] - [김생선의 쇼 페이퍼] - [배경화면 설정] 순서대로 하시면 됩니다.


[김생선의 쇼 페이퍼] 클릭하단의 [배경화면 설정] 클릭



그럼 설정값에 따라 자동적으로 변하는 배경화면을 보실 수 있습니다.


5. 마치며


해당 어플리케이션은 Android Wallpaper Slideshow Open API를 기반으로 제작되어졌으며, 따라서 광고도 없는 무료버전입니다.

또한 아무런 권한을 취하지도 않습니다.


더욱 궁금한 점이 있으시다면 댓글 달아주시면 감사하겠습니다. ^_^

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형


지난 6월 말, 구글에서 안드로이드의 새로운 OS 버전인 4.1 버전, 젤리빈을 소개하였습니다.

외형상으로는 아이스크림 샌드위치(ICS)와 크게 다르지 않은 모습이었는데요, 내면에는 많은 발전이 있었습니다.


이번 포스트에서는 간단하면서도 상세하게 아이스크림 샌드위치와 젤리빈을 비교해보고자 합니다.



1. User Interface 변경점


너무나도 많고 세부적이기 때문에 외형상으로 가장 접하기 쉬운부분부터 소개해드리고자 합니다.


일전의 ICS 버전에서 락 스크린은 하얀 원을 기준으로 생김새를 드러냈다면, 이번 젤리빈에서는 둥근 점들이 모인 모습을 보여줍니다.

또한 락스크린에서 Google이라 쓰여져있는 저 부분은 Google Now 라는 것으로써, 사용자의 패턴을 파악하고 그것에 따라 필요한 정보를 보여주는 신개념 서비스라고 볼 수 있습니다.


그리고 어플리케이션을 실행하거나 메시지 창을 띄울 때, 기존과는 많이 다른 방식으로 처리가 되는데요, 모서리에서 슬그머니 기어나오기도 하며 가운데로 쏙 빠지기도 하는 등, 전체적인 부분에서의 효과도 변하였습니다.


젤리빈 락스크린 모습젤리빈 락스크린 모습


이렇게 보다시피 락스크린 화면의 모습이 바뀌었습니다. 하지만 전 ICS 버전의 모습이 더 멋지다고 생각되어지네요.



Google Now 시작화면활용 예, 목적지까지 도착시간 알림현재 사용중인 모습


구글 나우는 원래 언어설정을 영어로 해야만 사용이 가능했지만(시작 후 한글로 변경해도 사용가능), 언제부터인가 한글로도 스리슬쩍 사용할 수 있게 되었네요. 다행입니다.


또한 사진에서 보여지다시피 상태알림창에서 많은 정보를 보다 쉽고 빠르게 확인이 가능합니다.


상단의 위젯은 어플리케이션을 설치한 모습


또한 위젯의 크기변경 등, 많은 부분에서 변화된 모습을 보여주고 있습니다.



2. 버터 프로젝트


그래도 뭐니뭐니해도 젤리빈에서의 가장 큰 변경점은 아무래도 버터프로젝트로 인한 터치감도의 변화가 아닐까 합니다. 이에 대한 비교영상을 준비하였습니다.



좌측은 4.0 버전의 아이스크림 샌드위치이며, 우측은 4.1 버전의 젤리빈 영상입니다.


기기성능 대비 터치감도가 상당히 안좋다는 혹평을 들었기 때문인지, 이번에는 스크롤 할 경우 트리플 버퍼링 연산처리 기술을 사용하여 터치감도를 극대화 시켰습니다.
또한 어플리케이션의 실행속도가 증가하기도 하는 등, 속도의 측면에서도 상당한 발전을 이루었습니다.


3. 오프라인 음성입력 및 NFC 지원 확대


기존의 음성입력은 구글 서버와 통신을 하여 결과를 받아오는 식으로 이루어졌으나, 젤리빈부터는 오프라인 음성입력이 가능하게 되었습니다.

이에 따라, 서버와의 통신시간을 줄여 결과를 더욱 빠르게 받아볼 수도 있게 되었으며, 비행기 및 인터넷 연결이 제한되는 환경에서도 충분히 사용할 수 있게 되었습니다.


그리고 NFC(Near Field Communication)의 지원 확대로 단말기간의 통신이 가능하기도 하며 기존 아이스크림 샌드위치에 있던 안드로이드 빔의 강화판이라고도 보여집니다. 기기간의 데이터 전송은 물론이거니와 연락처를 주고받는 등, 많은 편의성이 증대된 것으로 여겨집니다.



4. 오디오 처리에 관한 개발자 API 확대


지난 2.3 버전, 진저브레드에서의 가장 큰 오디오 특징은 바로 Music Equalizer를 사용할 수 있게 되었다는 점입니다.

그런 면에서 이번 4.1 버전 젤리빈에서는 각종 음향기기에 관한 장치 매뉴얼을 제시하고 보다 깔끔하고 웅장한 음악을 즐길 수 있게 되었습니다.


관련 개발자 항목은 아래와 같습니다.


1. DRM 관련 파일에 접근 가능

2. USB 오디오 도킹시스템 접근 가능

3. HDMI 오디오 확대, 만약 장치가 HDMI를 지원하지 않을 경우, 장치에 맞는 포맷을 제공

4. 음성 녹음에 관한 노이즈 제거 전처리 효과

5. 미디어 라우팅 기능 및 파일 연결 재생


대부분 확대가능한 기기에 따른 개발 항목을 제시하고 있으며, 이로 인하여 사용자 및 제조사는 다양한 포맷의 오디오 독을 제작할 수 있게 되었습니다.




대부분의 주요 기능은 위와 같습니다.

아무래도 제가 가장 마음에 드는 기능은 구글 나우와 버터 프로젝트 - 터치감도 변화 이 두 가지를 꼽을 수 있겠습니다.


구글 나우의 활용도는 아래와 같다고 생각하시면 됩니다.


평일 오전 9시까지 출근하는 김생선씨.

그러나 수요일에는 오전 10시에 안과 검진이 있으며, 구글 캘린더에 해당 사항을 업로드한 상태.


안과검진이 없을 경우에는 회사까지의 최단거리와 시간을 계산해주지만 수요일에는 안과 검진이 있기 때문에 회사의 일정을 캔슬하고 병원까지 걸리는 시간과 해당 노선에 따른 대중교통을 보여준다.


또한 GPS 검색에 의해 주변 주요장소를 구글 나우에서 보여주기도 하며 사용자가 업로드한 스케쥴에 따라 해당 일정을 알려주기도 하며, 알아서 취소되었다고도 알려주기도 한다.


사용자 위치 및 패턴에 기하여 새로운 알림서비스를 제공하는 구글 나우. 제가 사용해본 결과 아직은 크게 만족스러운 결과를 보여주지 않았지만(어쩌면 회사 - 집의 무한반복 패턴 때문일지도...) 약속이 많은 분들의 경우에는 큰 활용도를 지니지 않을까, 조심스레 예측해봅니다.


안드로이드 스마트폰이 더욱 스마트해지는 방법은, 안드로이드 4.1 젤리빈에 달려있다고 보아도 무방하리라 여겨집니다.

반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,
반응형



안녕하세요, 김생선입니다.

이번에는 저번 글에서 미처 다루지 못했던 "퍼센트 배터리" 적용법에 대해 알려드리고자 합니다.

해당 포스트는 갤럭시 넥서스 4.1.1 Deodex Factory 롬에서 적용할 수 있으며, 빌드 번호는 JRO03C입니다.


되도록이면 2012/08/19 - [어장 스마트폰/어장 안드로이드] - 갤럭시 넥서스 4.1.1 젤리빈 업그레이드 이 글을 읽고, 해당 롬을 설치하신분만 적용하시길 바랍니다.

Deodex 롬이 아닌 경우에는 시스템 UI가 모두 손상되어 작동할 수 없게되니 꼭 유의하시기 바랍니다.



1. 준비물


1. 갤럭시 넥서스 4.1.1 버전, 빌드번호 JRO03C, Deodex 버전 - 필수

2. 이 글을 처음부터 끝까지 정독할 수 있는 눈과, 이해할 수 있는 머리

3. 작업을 할 PC



2. 작업 파일 다운로드


일단 해당 파일을 다운로드합니다.

해당 파일은 아래의 파일에서 다운로드 할 수 있으며, 적용한 후의 모습은 아래의 그림과 같습니다.



이미지 설명 : 퍼센트 배터리 적용모습이미지 설명 : 알림바 화면잠금 설정 모습


해당 파일은 보이는 화면과 같이 퍼센트 배터리와 알림바 화면잠금기능을 제공해줍니다.



3. 리커버리 모드로 부팅


위에서 다운로드 한 파일을 갤럭시 넥서스에 삽입합니다. 위치는 어느곳이든 상관 없습니다.

그리고 갤럭시 넥서스의 전원을 끈 후, 볼륨버튼 -, +과 전원버튼을 모두 동시에 눌러서 부트로더로 진입을 해 줍니다.


여기서부터 알아두실 점

위로가는 키는 볼륨 +, 아래로 가는 키는 볼륨 -, 확인 키는 전원버튼입니다.



이미지 설명 : Recovery Mode가 선택된 모습이미지 설명 : 부트로더로 진입한 모습




이 화면에서 볼륨버튼 -, +를 눌러 아래의 화면과 같이 Recovery Mode가 선택되도록 합니다.

선택이 된 후에는, 전원버튼을 눌러서 선택합니다.


잠시 후 재부팅이 되면서 해당 폰에 설치된 리커버리 모드로 부팅이 됩니다.


여기서 한가지 짚고 넘어가실 점은, 이 포스트는 ClockworkMod 리커버리를 기준으로 설명하였으나, 대부분의 리커버리 모드는 인터페이스가 약간 다르지만 메뉴 이름은 모두 동일하기 때문에 조금만 주의깊게 들여다보시면 충분히 이해할 수 있습니다.



4. 작업 시작!


리커버리 모드로 부팅하게 되면 다음과 같은 모습을 보여줍니다.


이미지 설명 : 리커버리 모드 메인화면


저희가 할 것은 갤럭시 넥서스의 내장 메모리에 있는 해당 zip 파일을 선택하는 것이기 때문에, install zip from sdcard를 선택하겠습니다.



이미지 설명 : install zip from sdcard로 진입한 모습


install zip from sdcard를 선택하면 다음과 같은 화면이 보입니다.

저희는 sdcard 내의 zip 파일을 선택하는 것이기 때문에, choose zip from sdcard를 선택합니다.



이미지 설명 : 설치할 zip 파일을 고르는 모습


choose zip from sdcard 메뉴를 선택하면 보이는 화면입니다.

여기에서 아까 저희가 다운로드한 Pete_2012-07-12_battery_lock.button.zip 파일을 선택합니다.


선택한 후에는 확인 버튼에 맞춰 설치를 끝내고 자동 재부팅이 완료되면 퍼센트 배터리를 경험하실 수 있습니다!



5. 주의사항


해당 방법은 처음에도 말씀드렸지만 JRO03C 버전의 4.1.1 갤럭시 넥서스 Deodex 롬에서만 설치가 가능합니다.

만약 odex롬, 혹은 롬 종류를 모르신다면 2012/08/19 - [어장 스마트폰/어장 안드로이드] - 갤럭시 넥서스 4.1.1 젤리빈 업그레이드 을 읽고 해당 롬을 모두 다운로드하여 설치한 다음에 시도해주시기 바랍니다.


odex롬의 경우에 시도하시게 되면 System UI 어플리케이션이 계속 강제종료가 되어서 뒤로가기 및 홈버튼, 상태바를 아예 사용하실 수 없게 된다는 점, 주의하시기 바랍니다.

(제가 odex 롬에서 몇번이나 해당 상황을 겪고 멘붕와서 그랬습니다 여러분 ㅠㅠ)


또한, 리커버리가 설치되지 않았을 경우에도, 위의 링크에서 리커버리를 설치하신 후에 시도해주시기 바랍니다.


그밖의 궁금한 사항 및 질문은 최대한 자세히 댓글로 써주시면 감사하겠습니다.

막연하게 안되요라고만 하시면 저도 도와드리기가 어렵습니다. ^^;


그럼 모두들 즐거운 하루가 되시길 바랍니다, 감사합니다. (__)


출처


 Pete_2012-07-12_battery_lock.button.zip 파일

XDA DEVELOPER - http://forum.xda-developers.com/showthread.php?p=28642966#post28642966


반응형
블로그 이미지

김생선

세상의 모든것을 어장관리

,