Search

'4. 테크니컬&팁'에 해당되는 글 26건

  1. 2015.04.08 Apache 2.2 & Weblogic 연동 상세 설정
  2. 2013.12.20 우분투 한국 미러 사이트 문제
  3. 2013.05.09 모두가 원하는 개발자 되기 10단계
  4. 2013.04.03 java final 에 대한 상세한 이해.
  5. 2013.03.19 Jeus 6.0 code too large for try statement 오류.
  6. 2013.03.19 java.lang.UnsatisfiedLinkError ocijdbc11
  7. 2012.01.20 Unable to find setter method for attribute 해결방법
  8. 2011.11.01 안드로이드 INSTALL_FAILED_DEXOPT 오류.
  9. 2011.08.09 안드로이드 메모리 부족을 호소할때.
  10. 2011.06.28 넥서스S 루팅 아주 쉽게 하기 (2)
  11. 2011.06.24 안드로이드 화면 전환(방향전환)시 onCreate를 다시 호출하는 문제.
  12. 2011.06.24 안드로이드 ListView에서 WebView 사용시 클릭 문제 (3)
  13. 2010.12.08 안드로이드 SDK 단축키
  14. 2010.11.12 옵티머스Q - 가상키보드 프로그램 사용법
  15. 2010.08.25 옵티머스Q도 OSP 기능이 됩니다. (2)
  16. 2010.08.25 안드로이드 - OSMonitor 프로그램 소개
  17. 2010.08.13 현재 만들고 있는 안드로이드 프로그램. (1)
  18. 2010.08.12 [개발] 안드로이드 버전 설정 (1)
  19. 2010.08.10 [개발] xml을 이용한 Resource 사용법
  20. 2010.07.14 JavaScript Object 속성 보기 (1)
  21. 2010.03.31 Your Account has been locked.
  22. 2009.11.20 NoClassDefFoundError에 이리저리 클래스를 찾아 다니시는 당신에게..
  23. 2008.10.09 addBatch 사용시 SQLException 특이한거
  24. 2007.07.13 이클립스 유로파 철자 검색 해제 (2)
  25. 2007.04.01 IBM DB2에 대한 간단 리뷰
  26. 2006.10.24 Nate On 가끔 뉴스가 짜증날때. (1)

프로젝트를 하다보니 아파치와 Weblogic관련 설정해서 상세하게 설명된 문서들이 많지 않아

내용을 정리해봅니다.


목적

- Apache 2.2 와 Weblogic Server 11gR1 상세 설정

- Weblogic 은 WAS1에는 A업무를 WAS2에는 B업무를 올린다.

- 아파치 서버에서는 각각을 분리하여 아래와 같이 처리하는것이 목표

- html/gif 와 같은 파일은 WEB서버에서 처리

- dom1로 시작하는 URL은 WAS1에서 처리

- dom2로 시작하는 URL은 WAS2에서 처리


환경

OS : 윈도우 7 32bit

apache : Apache http server 2.2

weblogic : Oracle Weblogic Server 11gR1

 


설치 과정

- 아파치 설치 (상세설치는 생략)

- C:\Program Files\Apache Software Foundation\Apache2.2 경로에 설치됨

- Weblogic 설치 (상세 설치는 생략)

- C:\oracle\Middleware 경로에 설치함

- 도메인 생성

- dom1 7001 포트 사용

- dom2 7002 포트 사용


- 아파치 Weblogic 모듈 복사

- C:\oracle\Middleware\wlserver_10.3\server\plugin\win\32 경로에 보면 so 파일들이 보인다.

- mod_wl_22.so 파일을 C:\Program Files\Apache Software Foundation\Apache2.2\modules 경로에 복사



WAS 어플리케이션 설정

- domain1에 c:\Temp\domain1 어플리케이션 deploy

- context path : /dom1

- http://localhost:7001/dom1/temp.jsp 로 어플리케이션 확인

- domain2에 c:\Temp\domain2 어플리케이션 deploy

     - context path : /dom2

- http://localhost:7002/dom2/temp.jsp로 어플리케이션 확인



Apache 설정


설정파일 경로 : C:\Program Files\Apache Software Foundation\Apache2.2\conf

httpd.conf 파일을 아래와 같이 수정함


- 130 라인 : LoadModule weblogic_module modules/mod_wl_22.so 추가

- 181 라인 : DocumentRoot "C:/Temp/htdocs" 로 설정


마지막 라인에 아래 내용 코딩

<Location />

  SetHandler weblogic-handler

  PathTrim /

</Location>


<IfModule mod_weblogic.c>

WLExcludePathOrMimeType *.html

WLExcludePathOrMimeType *.gif


MatchExpression /dom1* 

WebLogicHost 127.0.0.1

WebLogicPort 7001


MatchExpression /dom2* 

WebLogicHost 127.0.0.1 

WebLogicPort 7002


</IfModule>


위의 설명을 하기 위해 엄청 적었군요..

Location은 뭐하는 옵션인지 모르겠습니다. 관련 내용을 쓰든 안쓰든 크게 상관이 없어 보이긴 합니다만,,, 우선 이렇게 설정했습니다.


IfModule mod 설정이 중요합니다. 관련 내용에 대한 옵션이 정확하게 기술된 문서를 찾다가 아래와 같은 웹로직에서 제공하는 공식문서를 찾았습니다.

Using Web Server Plug-Ins with WebLogic Server : http://docs.oracle.com/cd/E11035_01/wls100/plugins/plugin_params.html



WLExcludePathOrMimeType 해당 옵션은 Weblogic으로 proxy하지 않을 패턴을 기술합니다.

gif 나 js 나 html 이나 웹서버에서 처리할 리스트를 기술합니다.


MatchExpression 은 해당 패턴이 들어올 경우 Weblogic으로 proxy하는 옵션입니다. 

/dom1* 으로 시작하는 패턴의 URL이 들어온 경우 127.0.0.1:7001 쪽으로 proxy됩니다.

처음에 WebLogicHost와 WebLogicPort를 한번만 기술했었는데  MatchExpression을 기준으로 여러번 할수 있더군요.

위는 싱글 Server를 기준으로 했으므로 weblogichost 옵션을 사용했지만, 클러스터 구성되어 있는 경우 WebLogicCluster 옵션을 사용해도 될것같습니다.



화면 테스트


http://localhost/dom1/temp.jsp

http://localhost/dom2/temp.jsp

http://localhost/dom1/temp.html


위의 리스트를 테스트 하여 정상적으로 원하는 화면이 보여진다면 OK.


저작자 표시 비영리
신고

댓글을 달아 주세요

우분투 한국 미러 사이트 문제

4. 테크니컬&팁 2013.12.20 10:50 Posted by 지누셩

우분투가 설치되면 기본적으로 미국이나 한국서버를 APT서버로 설정합니다만, 둘다 느립니다.

미국의 경우는 뭐 모든 국가에서 접속하니 그런가보다 하지만,

한국의 경우 카이스트 서버가 기본인데 미국보다 느리다는 느낌을 자주받습니다.


그래서 다음 미러를 많이들 사용하시죠.

문제는 다음이 정말 패키지 업데이트가 잘 안되는 느낌이라는 겁니다.

우분투 12.04 를 사용하는데, 업데이트가 없답니다. 그러나 미국으로 잡으면 업데이트가 무려 백여개가 나오는 상황을 수도 없이 봤습니다.


그래서 한국미러는 포기하고, 아래의 미러를 사용중입니다.


JAIST 미러 사이트

ftp://ftp.jaist.ac.jp/


요기 속도는 엄청빠르다 수준은 아닙니다만, 관리가 잘되는 느낌입니다.

저작자 표시 비영리
신고

댓글을 달아 주세요

원문 링크는 요기


엔드류 올리버라는 외국인이 작성한 글을 변역한것이라 의미전달이 잘 되지 않는것 같아서..

개인적으로 정리해서 기록합니다.


개발자가 개발만 할수 있다고 좋은 개발자는 아니다. 자기자신이 셀프 마케팅을 해야 좋은 개발자로 높은 연봉에 오래살아남을수 있다.


팁1 블로그

블로그 개설후 한달에 한번 이상은 꼭 글을 쓰고, 썼던 글들도 정리하는 습관을 가지라..

이게 사실 쉬운것 같지만 어려운일이다. 특히 한번 썼던 글을 다시 보고 불필요한 부분을 정리해 내는게 보통일은 아니다.

그러나 블로그에 한번 작성한 글은 검색엔진을 통해 다른 사람들이 쉽게 접할수 있고, 많은 사람들에게 자신의 존재를 알릴수 있는 좋은 기회가 된다.

나도 티스토리를 시작하고 현재까지 몇년동안 이런저런 글을 많이도 썼는데,

내글을 보고 회사에 입사하는데 도움이 되었다는 사람도 봤고, 내가쓴글 때문에 윗분에게 불려가서 일부 내용을 수정해 줄것을 요구받은적도 있다.. 그냥 하나의 블로그일지도 모르지만 무수하게 많은 사람들이 보게 되고, 그로인해 영향을 받기도 한다.

개인적으로 개발관련된 내용들도 자주 적고 있는데, 대부분의 글들은 검색을 통해 쉽게 찾지 못한 내용을 쓰거나, 오랫동안 고생했던일들에 대해 정리하고 기록하는데 사용했다.

이게 나에게도 좋은일이 되고(생각의정리, 및 기록) 남들에게도 상당히 도움이 될것이다. 나도 검색을 통해 개발관련 문제들을 해결하듯, 그에 대한 보답으로라도 조금은 기여를 하게 되겠지?


팁2 오픈소스

위의 글을 쓴 사람은 오픈소스를 했던 사람들이 그러지 않은 사람들에 비해 더 일자리를 구하기 쉽다고 이야기 한다.

난 조금 다르게 생각하는데, 오픈소스에 참여할 정도의 사람이라면 그만큼 개발에 대한 열정이 있는 사람이라 생각한다. 돈이 다가 아닌 정말 남을 위해 내가 만든 코드를 공유할수 있다는것은.. 정말 대단한 열정이라 생각한다.

이런 열정을 가진 사람들이야 말로, 돈만 쫒는 사람에 비해 더 높은 대우를 받고, 일자리를 구하기도 쉽다고 생각한다.

돈이 다가 아니기에...


팁3 한 직장에 너무 오래 머물지도 너무 자주 이직하지도 마라.

적절하다. 너무 오래 한 직장에서 하나의 일만 하게 되면, 세상이 어찌 돌아가는지 모르게 될것이고, 쉽게 뒤쳐진다. 쉬운일 하던일만 접하다 보면 어느덧 해당 분야에 인력이 넘치거나 도퇴될지도 모른다..

그렇다고 너무 자주 이직을 한다면 당신은 조직에 적응하지 못하는 사람이란 인식을 줄지도..


팁4 눈으로는 새로운것을 쫓되, 실용적인 것에 손을 놓지 마라.

언어는 그냥 도구일 뿐이라 생각한다. 내가 오랫동안 자바를 했지만, 그렇다고 다른 언어를 못하는것은 아니다. 위의 글을 작성한 사람은 이런것을 이야기 하는게 아닌가 생각된다. 루비가 좋더라도 시장에서 루비개발자가 좋은 대우를 받는것은 아니다. 나도 자바가 현재 주력언어이지만, 언제든 다른 언어를 도입할 기회가 된다면 적당한지 한번 타진하게 된다. 그래서 유닉스 스크립트로도 만들어보고, 펄도 사용해 보고.. 그런거겠지..


팁5 읽는 사람을 배려해 문서를 작성하라.

아주 중요한 부분이라 생각한다. 나도 남들과 대화할때 그 사람의 위치와 지식정도를 어느정도 인지하고 그에 따라 단어를 선택한다. 개발자라면 충분히 알만한 단어들도 초보자들에게는 생소한 단어일수 있고, 기획자에게 상속이든 자카르타 프로젝트라든지 이런거 설명해봐야 시간낭비일것이다. 정말 무엇인지 알고 싶어한다면 알기쉽게 설명해 주는 편이지만, 몰라도 된다면 그냥 흔히들 알고있는 오픈소스(자카르타프로젝트) 뭐.. 이런 단어를 선택하는게 더 상대방을 배려한 단어라 생각한다. 당신이 알고 있는 단어를 다른사람이 알고 있다고 절대로 생각하면 안된다고 생각한다.

개발을 하다보면 문서를 작성할일도 많은데, 해당 문서를 누가 보느냐에 따라 단어를 달리 선택하든 좀더 상세히 기록하든... 


팁6 간결성이 생명이다.

옳은말이다.. 코드도 최대한 간결하게 작성하고, 필요없는 부분은 과감히 삭제하고...

그리고 다른사람에게 설명할때도 간결하게,,, 회의때도 간결하게 요점만 간단히 말하는 습관을 가지는것이 좋다고 생각한다.


팁7 관중을 놀라게 하라.

정말 정말 어려운일중에 하나다.

다른사람을 놀라게 한다는것은 정말 다른사람들과 갭이 커야만 가능한것이 아닌가..

그리고 남들에게 무엇인가 발표해야 하는 상황도 자주 있지도 않고, 어떤 경우에는 거의 없을지도 모른다.

그러나 남들에게 설명할 기회가 있다면 주저하지 말고 경험을 만들고, 발표하고, 그리고 발표할땐 해당 부분에 대해 정말 전문가가 되어야 한다고 생각한다.

근데 정말 이런 기회가 흔하지 않다.


팁8 현실적인 개발자가 되라.

외국과는 좀 다를지 모르겠다. 국내의 이야기를 하자면, 현실적인 개발자라는 것은 분위기 파악을 잘하는 개발자가 아닐까 라는 생각을 해본다. 한가지 기술에 목을 매지도 않고, 주변을 봐가며 야근이든 칼퇴든 해야하고, 상황이 내가 총대 매고 가야하는 상황이면 그렇게 하는것이 옳다고 생각하는데... 이런게 그리 쉽거나 한건 아니라...



팁9 툴을 이용해 어려운 문제를 해결하라.

툴은 도구일 뿐이다. 만약 땅을 파야한다면 크기와 규모에 맞는 도구가 필요하다고 생각한다. 화단을 파야하면 삽으로 충분하고, 건물을 올려야 하는데 땅을 파야 한다면 중장비가 필요하듯.

단순하게 10줄짜리 코드를 작성해야 하는데, 이클립스를 설치할 필요는 없다는 것이고,

파일비교를 하는데, Differ 툴이 필요한 경우도 있지만, 프로그램을 작성해서 해결해야 할 경우도 생긴다.

글쓴이는 메모리릭을 찾기 위해 AspectJ기술을 이용했다고 예를 들지만, 나 같았으면 이클립스에서 Search기술을 이용했을지도 모르고 (흔히 실수하는 부분을 찾는방법), 아니면 정말 간단하게 글쓴이처럼 프로그램을 이용해 처리해야 할수 도 있고, 안된다면, 모니터링툴을 도입해야 할지도..

툴은 도구가 아닌가.. 도구 하나두개 정도는 사용법을 알아야 하고, 얼마나 잘 사용하느냐에 따라 얼마나 일을 빨리 처리하는지가 결정나는것이라 생각된다.



팁10 겸손을 잃지 마라.

내가 최고인줄 알고 지냈던적이 있다, 그러나 난 별거 아니고 세상엔 정말 괘물같은 실력을 가진 개발자가 널리고 널렸다는 생각을 하게 된적이 있다.. 지금 잘 나간다고 그게 계속 잘 나갈 꺼라는 장담은 금물이고, 언제는 내 머리가 20대 같지 않을것이고, 경험에 너무 의존하거나 10년전 코드를 들이대면서 이게 최고라고 우길지도 모른다...

난 그게 두렵고, 내가 최고가 아니란것을 잘 안다. 그래서 자랑을 하지 않고, 우쭐되는것을 즐기지도 않는다.

겸손해라.. 남들이 못하는것을 해냈을때, 별거 아니었다고 말하는 습관을 가지는것도 좋은 방법이다.

앞으로도 쭈욱 겸손하게 지내고 싶다. 그 겸손함이 다른사람들이 보기엔 당신을 당신이 지금 서있는 위치보다 더 높고 위대한 사람으로 평가할것이다.





저작자 표시 비영리
신고

댓글을 달아 주세요

생각지도 못한 결과가 나와 황당해 했는데.. 이건 final을 이전까지 내가 잘못알고 있었기 때문이었다.

아래 소스를 좀 보자.


Test1.java

public class Test1 {

     public static final String STR="1";

}



Test2.java

public class Test2 {

     public static void main(String[] arg) {

System.out.println(Test1.STR);

     }

}


위와 같은 간단한 코드가 있다고 치자.

컴파일을 아래와 같이 하자.

javac Test2.java

위와 같이 컴파일 하면 Test2.java가 사용하고 있는Test1도 같이 컴파일되어 class파일이 두개 다 생성된다.


그리고 실행을 해보자.

결과는 1


Test1.java를 수정한다.


public class Test1 {

     public static final String STR="2";

}


컴파일을 아래와 같이하자.

javac Test1.java


java Test2 로 실행하면 어떤결과가 나올까?

결과는 2가 아니라 1이 나온다.. 잉???

실재로 Test1.java를 컴파일하면 Test1만 class 파일이 새로 생성된다.


생각같아서는 Test2가 Test1의 객체를 호출해서 결과를 받아올거 같으나..

final이라는 문장으로 인해 Test1을 참조하지 않는 결과가 나오는것이다...

즉, 컴파일시 Test2 객체는 Test1의 STR이라는 값이 static final이라는 단어의 덕분으로.. 이 값은 변경되지 않는다고 판단하여 어플리케이션의 속도??를 높이고자 Test2객체가 해당 값을 가지고 들어가 버린것이란 판단이다.


Test1에서 사용한 STR이 만약 자주 변경되어야 하는 값이라면...

final을 붙였다가는 잘못된 값이 출력되는 객체들이 생길수도 있다는 것이다..


이클립스와 같은 개발툴을 사용한다면 알아서 Test2를 컴파일해줄지도 모르지만,

위와 같이 직접 컴파일을 하거나 모든 java파일을 컴파일하지 않는 (이전 객체를 유지하고자 하는경우도) 경우도..

황당한 결과가 나올수 있을거 같다..


주의 하자..



저작자 표시 비영리
신고

댓글을 달아 주세요

해당 오류는 구글링 하면 잘 알수 있겠지만,

jsp 소스가 너무 길어서.. try 문 안에 너무 많은 문자열? 이 들어 가서 그럽니다.

문서상으로는 64k 를 넘어가서 그렇다고 하네요.. 자세한 사항은 구글링으로 찾으시면 ....


암튼.. 고생고생해서 해당 오류가 나는 소스를 고쳐야 하나 말아야 하나 고민하고 있었는데..

아래와 같은 부분을 추가해서 해결할수는 있네요.


WEB-INF/web.xml


<servlet>

<servlet-name>jsp64k</servlet-name>

<servlet-class>jeus.servlet.servlets.JspServlet</servlet-class>

<init-param>

<param-name>genStrAsCharArray</param-name>

<param-value>true</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>jsp64k</servlet-name>

<url-pattern>*.jsp</url-pattern>

</servlet-mapping>


위와 같이 입력후 컨테이너 재시작 한번 해주시면 64k이상이 되어도 jsp가 잘뜹니다.


단.. 제우스만 해당 로직이 먹을겁니다. jeus관련 서블릿이니까요.. 


아.. 이건 그냥 위험부담을 안고가는거라..

정말 100%해결하고 싶으시다면 코드를 줄여서 해결하는걸 추천합니다. 위는 그냥 꼼수~

저작자 표시 비영리
신고

댓글을 달아 주세요

오라클 11g로 이번에 이관하면서

자바에서 위와 같은 오류가 발생했다.


구조적으로 본다면

JDBC에서 thin 방식이 아닌 oci방식을 사용하면서 발생한 문제인데,

이유는 정말 간단했습니다.


오라클 클라이언트를 11g 64bit용을 설치해서 발생한 문제였습니다.

java도 당연히 64비트용을 설치했지만, 어떤 이유인지 기본동작은 32bit로 작동했던거 같습니다.


java -d64 옵션을 주니 정상적으로 라이브러리를 찾아가더군요.


그래도 잘 안되면 아래와 같은 코드를 추가해 보자. 


ORACLE_HOME=/oracle홈폴더정보

LIB_PATH=${LIB_PATH}:$ORACLE_HOME/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib

export ORACLE_HOME LIB_PATH LD_LIBRARY_PATH


이 오류가 발생한다면 위의 옵션을 주고 한번 수행해 보세요~


저작자 표시 비영리
신고

댓글을 달아 주세요

JSP를 이용하여 프로그램을 작성하였고,
아래와 같은 오류를 보게 되었습니다. 으흠..

Unable to find setter method for attribute XXX

위의 오류는 jsp에서 User defined TAG Lib를 사용하면서 발생한 문제인데..

제가 한것이라고는 기존 jeus 5.0에서 실행되던 앱을 jeus 6.0에 포팅한것뿐..
아무튼 원인은 아래와 같습니다. 

<tag>

<name>popinput</name>

<tag-class>com.어쩌구.PopupInputTag</tag-class>

<body-content>JSP</body-content>

   <attribute>

     <name>type</name>

     <required>true</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>

     <name>name</name>

     <required>true</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>

     <name>attributebtn</name>

     <required>false</required>

     <rtexprvalue>true</rtexprvalue>

   </attribute>

   <attribute>
... 어쩌구. 

 taglib를 정의한 xml파일의 일부.

 public void setAttributeBtn(String pAttributeBtn) {

        this.sAttributeBtn = pAttributeBtn;

    }

Tag lib를 구현한 java파일의 일부.

원인은 아무튼 setAttributeBtn이라는 부분때문이었습니다.
당연히 어트리뷰트 이름이 모두 소문자 이므로... Method도 setAttributebtn으로 되어 있어야 하는데..
B가 대문자였던겁니다.

그런데.. 제우스 5.0에서는 위의 코드가 잘 돌아갔고..
제우스 6.0에서는 위의 코드가 돌아가지 않았습니다....

아마도 제우스 5.0 이 개발자 편의를 위해 허용한 부분이었겠지요??

저같이 고생하지 마시라고 적어봅니다.
 
저작자 표시 비영리
신고
TAG jeus 6, JSP

댓글을 달아 주세요


갑자기 실행이 되지 않았다.

[2011-11-01 14:28:47 - LGBooks] ------------------------------
[2011-11-01 14:28:47 - LGBooks] Android Launch!
[2011-11-01 14:28:47 - LGBooks] adb is running normally.
[2011-11-01 14:28:47 - LGBooks] Performing com.xxxxxxxxxx.activity.IntroActivity activity launch
[2011-11-01 14:28:47 - LGBooks] Automatic Target Mode: using device 'xxx'
[2011-11-01 14:28:47 - LGBooks] Uploading xxxooks.apk onto device 'xxx'
[2011-11-01 14:28:48 - LGBooks] Installing xxxooks.apk...
[2011-11-01 14:28:50 - LGBooks] Installation error: INSTALL_FAILED_DEXOPT
[2011-11-01 14:28:50 - LGBooks] Please check logcat output for more details.
[2011-11-01 14:28:50 - LGBooks] Launch canceled!

위와 같이 오류가 발생했다.
단말을 재부팅해보고 기존 어플리케이션도 삭제해 보고...
이클립스도 재실행 해봐도 도무지 같은 메시지만 표기됨..흐미..

자 그런데.. 여기에 힌트가 있었다.
 Please check logcat output for more details.
로그켓 체크해봐라~~ 흐미..

확인해보니 아래와 같은 부분이 보였다.

11-01 14:28:48.704: E/dalvikvm(1405): Invalid name: 'phoneModel��'
11-01 14:28:48.704: E/dalvikvm(1405): Trouble with item 6193 @ offset 0x200c0
11-01 14:28:48.704: E/dalvikvm(1405): Cross-item verify of section type 0004 failed
11-01 14:28:48.704: E/dalvikvm(1405): ERROR: Byte swap + verify failed
 
설치는 정상적으로 잘되었으나 실행시 오류가 발생한것으로 보인다.
달빅에서 이름이 뭔가 잘못되었다고 나온다. 폰모델??? 아.. 방금전 코딩한 부분의 변수이름이 보였다.
그리고 변수뒤에 붙어 있는 특수 문자... 으흠.. 

파워포인트에서 복사해서 붙여 넣은 문자열에 뭔가 문제가 있었던거 같다.
그래서 해당 문구가 들어있는 모든 텍스트를 삭제하고 하나하나 타이핑 해주었다.

해결.. ㅡ0ㅡ;;;;;;;;
 
저작자 표시 비영리
신고

댓글을 달아 주세요

넥서스S를 사용중입니다.
여기저기 커스텀 펌웨어와 이것저것 깔아보는 즐거움에 상당히 만족하며 사용하고 있습니다.
그런데 얼마전 MIUI로 OS를 올려서 사용하고 있는데..
갑작스럽게 저장공간 부족이라는 메시지를 보게 되었습니다.

잉? 별로 설치한 것도 없는데.. 말이죠..

저장공간을 살펴 보았습니다.
저장공간 1G중 남은양은 1메가 이하..
후덜덜.. 뭔가 잘못된것을 느끼고..
여거저기 찾아보니..

Tombstones가 문제가 되고 있다는것을 알았습니다.
루팅후 루트익스플로워 같은 프로그램을 이용하여
/data/tombstones 이라는 폴더에 접근해 보니
특정 파일이 무려 900M이상 차지하고 있더군요..

지워도 되는지 안되는지 고민을 하다가 여기저기 검색으로 알아보니..
해당 파일은 디버깅을 위한 그냥 로그 정도로 인식되더군요.
과감하게 해당 파일만 삭제.. ㅎ
혹시나 몰라 폴더는 그냥 남겨 두었습니다. 

내장 메모리 사용량이 100M이하로 줄었습니다. ㅎ
혹시 문제가 되시는 분이 있으면 요것도 한번 확인해보세요. 
저작자 표시 비영리
신고

댓글을 달아 주세요

잘 되는줄 알았으나 잘 안되더군요.. 
이글은 무시해 주세요..


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

넥서스S 루팅관련글을 열심히 읽었는데.. 너무 어렵고 힘들더란..
문제는 내 노트북은 맥북이고.. 맥os라.. 윈도우 환경에서 작업이 힘든..
vmware는 장치를 잘 인식 못해주고..

그래서 찾은 아주 쉬운 방법

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

간단 요약하면
넥서스s를 usb 디버깅 모드로 설정한다.
넥서스S를 끄고 전원+볼륨업 키를 눌러 부트로더 화면으로 들어가 대기한다.
pc에서 위의 링크에서 다운로드한 파일을 이용하여 명령어를 날려준다.
알아서 재부팅되고 끝~

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. dothezi 2011.11.21 22:38 신고  댓글주소  수정/삭제  댓글쓰기

    감사하긴 한데요 이거를 어떤 파일을 클릭하고 무슨 명령어를 쳐야하나요?

화면을 전환하면 이상하게 데이터를 Reload를 하길래 확인해보니
onCreate를 다시 호출하는것으로 판단되더군요. 헐.
문제는 대부분 onCreate에서 데이터의 로딩을 한다는것이죠.

간단하게 아래와 같은 방법으로 reload를 방지할 수 있습니다.

AndroidManifest.xml 파일
<activity android:name=".boarddetail.BoardDetailActivity" android:label="@string/app_name"
             android:configChanges="orientation|keyboard" android:theme="@style/WindowTitleBar">
        </activity>
orientation이 화면 전환 이고.. keyboard가 키보드가 튀어 나올때의 옵션인것 같습니다. "|" 기호가 있는걸 확인하세요.
오.. 이거 옵션좋군요.
저작자 표시 비영리
신고

댓글을 달아 주세요

ListView에 WebView를 사용하면 해당 WebView에는 클릭 이벤트가 먹지 않습니다. ㅜㅜ

그래서 아래와 같은 방법을 사용하시면 클릭이벤트가 먹습니다.
<WebView android:layout_width="70dp" android:layout_height="wrap_content" 
            android:scrollbars="none"  android:clickable="false" android:focusable="false"
            android:id="@+id/board_item_row_boardwriter_webview" android:layout_marginRight="5dp"/>
헉..
그래도 먹지 않습니다.
focusable이 false로 되어 있으면 되는데.. 실제로는 먹지 않아서 소스에서도 한줄 추가해 주셔야 합니다.
WebView webView = rowHolder.getBoardWriterWebView();
webView.setVisibility(View.VISIBLE);
webView.setFocusable(false);
webView.loadDataWithBaseURL(null, p.getWriter(), "text/html","UTF-8", null);
오.. 이제 되는군요.
이러면 Webview 영역을 클릭하여도 ListView의 클릭이벤트가 먹네요..

요약 : 안드로이드 특징인지 ListView 안에 클릭 가능한 객체(WebView나 버튼 등)가 존재하면
ListView 를 클릭했을때 이벤트를 호출하지 않습니다. Button이나 WebView가 해당 이벤트를 먼저 가로Event를 먹습니다. 그래서 WebView 의 focusable을 false 로 만들어 주면 가능하며 xml에서 설정해도 적용되지 않으므로 코드상에 한번더 설정해줘야 합니다.

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. 다루 2012.03.28 10:11 신고  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다 ㅠㅠ

    이문제로 몇일간 고생했는데

    정말 좋은 정보 주셔서 감사합니다 ㅎ

  2. Favicon of http://susemi99.tistory.com BlogIcon 쎄미 2012.10.23 11:28 신고  댓글주소  수정/삭제  댓글쓰기

    고맙습니다 ^^

  3. Favicon of http://rainmaker0303.tistory.com BlogIcon 무대포개발자 2013.01.01 20:28 신고  댓글주소  수정/삭제  댓글쓰기

    좋은 자료네요 퍼갈게요 ^^

안드로이드 SDK 단축키

4. 테크니컬&팁/4.4.Android 2010.12.08 13:29 Posted by 지누셩
이번에 나온 진저브레드 SDK는 UI가 많이 바뀌었습니다.
기본적으로 키보드 부분이 제거되어 보이네요..



쿼티 키보드와 버튼들이 기본적으로 없으므로 단축키를 알아야 실제로 안드로이드를 구동하기 쉬울것 같아 정리하여 보았습니다.

백버튼 : ESC 키
홈버튼 : Home 키
찾기버튼 : F5 키
설정버튼 : PageUp 키 혹은 F2 키

통화버튼 : F3 키
잠금버튼 : F4 키 혹은 F7
최대화면/취소 : Alt + Enter 키
마우스 트랙볼변경 : F6

기타 더 많은 키가 있을것 같습니다만.. 아직 찾질 못했네요..

저작자 표시 비영리
신고

댓글을 달아 주세요

우선 LG에서 만들어서 기본적으로 포함되어 있는 가상 키보드 어플리케이션의 경우 사용하기 상당히 불편했습니다.

그래서 마켓에 올라오는 키보드 프로그램들을 설치해보았습니다.

유명한것으로


키보드프로, 한손 키보드, 한글키보드, 딩굴 한글 입력기 등 참 많죠..


그러나 아시다 시피 이런 프로그램들을 설치해서 사용하는것은 문제가 있었습니다.

해당 프로그램들을 기본 입력기로 설정한후 쿼티 키보드를 사용하는 경우

키보드 어플리케이션이 오작동하거나 튕기는 증상이 발생했었죠.


자.. 여기 해결책이 있습니다.


마켓에서 '키보드스위치'를 검색해 보시면

이희진님이 만드신 '키보드스위치 for ROOT USERs' 라는 프로그램이 있습니다.


어플 설명은 아래와 같습니다.


마켓에 있는 딩굴같은 소프트키보드를 설치하면 쿼티자판이 제대로 동작하지 않습니다..ㅡㅜ

그래서 이렇게 만들었습니다.

*** 일단 이게 시스템 권한이 필요한 앱이라서 루팅하신 분들만 사용하실수 있습니다.


설치해보세요~~ 강추합니다. ^^



저작자 표시 비영리
신고

댓글을 달아 주세요

cyon 홈페이지에서는 옵티머스Q는 OSP에 대한 내용이 없는 상황입니다.
즉, 지원하지 않는것처럼 보입니다.

그러나 아무것도 하지 않고 그냥 프로그램 설치만 하면 정상적으로 OSP를 사용할 수 있습니다.

Cyon 홈페이지에서 프로그램을 다운로드 받습니다.


위와 같이 SKT의 SU950 이라는 모델을 선택합니다.
그러면 아래와 같이 OSP라는 프로그램을 다운로드 받을수 있는 부분이 나타납니다.

해당 프로그램을 다운로드 하여 설치합니다.

컴퓨터에 USB를 이용하여 옵티머스Q를 연결한 상태에서
설치한 LG On-Screen Phone 프로그램을 실행합니다.
몇가지 설정창이 나타납니다.

- 케이블 방식을 이용하여 연결
- 폰 모델명은 SU950으로 설정
- 비밀번호 입력 (초기 비밀번호는 0000입니다.)

그러면 짜잔.. 아래와 같이 나타는군요.



컴퓨터 화면에 폰과 똑같은 모양의 화면이 나타납니다.
핸드폰의 화면과 동일한 화면이 보여지게 됩니다.
컴퓨터에서 조작해도 폰에서도 동일하게 동작하며.. 폰에서 동작해도 컴퓨터에 동일하게 표시됩니다.

배경도 옵티머스Q UI가 나타나는것을 보면 아마도 개발은 하였으나 발표는 못하고 있는 상황인듯 합니다.
옵티머스Q의 2.1 업데이트를 한후에 아마도 가능할것 같습니다.
가끔 유용하게 사용할 수 있겠네요.

저작자 표시 비영리
신고

댓글을 달아 주세요

  1. Favicon of http://raycat.net BlogIcon Raycat 2010.08.25 22:44 신고  댓글주소  수정/삭제  댓글쓰기

    이거 목록에 lu2300이 안보여서 헷갈렸네요..ㅎ.ㅎ

안드로이드를 사용하면서 느끼는 것이지만..
역시 멀티 테스킹은 장단점이 극명하게 생기는 기술인것 같다.
현재 안드로이드는 멀티 테스킹을 지원하게 되어 있는데 특정 어플리케이션이 CPU를 과도하게 잡아 잡수시는 어의없는 상황을 만들게 된다.

나중엔 OS가 해당 프로세스들을 잡아 주는 기능을 넣어줬으면 한다.

많은분들이 Task Killer류의 프로그램을 사용하는것으로 알고 있는데 가장 유명한 프로그램이 아마도 Advanced Task Killer 라는 프로그램이 아닌가 생각된다.

그런데 사실 해당 프로그램은 개인적으로 상당히 마음에 안들었다.
메모리에 상주하는 프로그램을 보여주는기능과 원하는 어플리케이션을 선택하여 kill할수 있는 기능은 상당히 유용하지만.. 그게 다이다.
어떤 어플리케이션이 얼마나 메모리를 차지하고 얼나마 cpu를 차지하는지 알려주었으면 하는데.. 그런 기능은 제공되지 않았다.

그래서 찾아낸 프로그램이 바로 OSMonitor라는 프로그램이다.

해당 프로그램은 위와 같은 아이콘을 가지고 있다. OSMonitor라는 이름으로 마켓에서 무료로 다운로드 받을수 있다.

가장 마음에 드는 기능이 바로 CPU의 사용률을 보여주는 화면이다.
현재 Process의 갯수와 총 CPU의 사용률을 보여주며..
아래로는 해당 프로세스를 보여준다.
위의 스샷에는 이름모를 이상한 프로세스들이 많은데 대부분은 시스템에서 사용하는 프로세스이다.
설정을 변경하면 해당 시스템 프로세스를 숨기는 기능을 제공한다.
Load라 쓰여진 부분이 CPU의 사용율을 보여준다.
특정 프로세스가 %수치가 높으면 해당 프로세스가 CPU를 잡수시고 있다는 뜻이고.. 이 프로세스 때문에 배터리를 우걱우걱 처드시는 좀비같은 프로그램이라 생각하면 된다.
가끔 브라우저 프로그램도 CPU를 우걱우걱 잡수시고 있다. 원하는 프로세스를 길게 누르면 kill 할수 있는 기능을 제공한다.

두번째 탭에서는 network관련 내용을 보여준다. IP를 확인 할수 있다.. 뭐. 별필요는 없어 보인다.

3번째 탭은 현재 커넥션이 이루어 지는 IP의 정보를 보여준다.
너무 양도 많고 복잡해서 고급 사용자가 아니면 해독하기 힘들거 같다.

Misc 라는 탭에서는 시스템에 대한 전반적인 정보를 보여준다.
현재 CPU가 몇 Hz로 동작하는지를 실시간으로 보여준다. CPU가 사용중이면 클럭이 뛰는것을 볼수 있다.
배터리 상태정보와 기타 파일시스템의 사용량도 보여준다.


어드밴스 타시크 킬러 프로그램이 국내에서 상당히 많은 사용자를 확보하고 있는데 이유를 정확히 모르겠다.
사실 기능도 떨어지고 편의성도 많이 떨어지는 프로그램이라 생각된다. 사실 범인을 모르는 상태에서 모두가 범인일지 모르니 다 죽이는 꼴이 아닌가..

현재 사용하는 단말기가 옵티머스Q이기 때문에 사실 메모리 관리는 별로 관심을 안가지게 되는게 사실이다.
메모리야.. 512M니.. 늘 펑펑 남아 돌아가니까.. 그러나 초기 안드로이드 모델들은 사용할수 있는 메모리 양을 늘리기 위해 타스크 관리 프로그램들을 이용하는데~~ 사실 큰 의미가 있는지는 개인적으로 잘 모르겠다.
어짜피 메모리는 시스템에서 알아서 관리해 주지 않는가?

문제는 CPU를 잡아 잡수시고 있는 범인을 색출해 내고 해당 범인만 죽여주는 방법이라 생각한다.
이런 방법을 이용할수 있는 사용자라면 타스크 킬러 프로그램대신 OSMonitor를 한번 사용해 보시는건 어떨지..
살짝 추천해 본다.



저작자 표시 비영리
신고

댓글을 달아 주세요

개인적으로 안드로이드 프로그램을 공부해 보고 싶어 뭘하나 만들고자 했습니다.
그래도 마켓에 올리고 사람들이 사용해 주길 바라는 개발자의 마음이 있기에..
정말 중요하면서 간단하지만 정말 필요한게 무엇인지 찾아보던중..

아.. 안드로이드에서의 지하철 프로그램들은 왜 다들 이모양이냐.. 라는 생각을 하게 되었습니다.

그래서 만들기 시작한 지하철 노선도 프로그램..


처음 시작을 어떻게 해야 하나 상당히 고민을 하였으나..
지하철 이미지를 우선 만들고..
지하철의 위치와 정보를 따로 만들어 해당 이미지위에 좌표를 그리던.. 하자.. 라는 식으로 진행하였습니다.

처음에 Scroll 객체를 이용해서 View를 집어 넣었더니.. 이건뭐..
안드로이드가 문젠지 단말기가 문젠지.. 정말 버벅거려서..
Scroll객체를 제거하고 View만 통으로 집어 넣고..
move를 감지해서 이미지를 다시 그리는 식으로 만들었더니 그나마 좀 좋아졌습니다.

좌료를 하나하나 excel에 기록해서 지하철정보와 함께 만들어 놓고.
[현재는 1호선 / 2호선 정보만 입력한 상태]
그리고 경로를 선택하면 원하는 지점까지의 최적경로를 찾아내기 위한 노력을 했습니다.
아.. 이놈의 알고리즘.. ㅜ0ㅜ

처음엔 정말 별거 아닐거라 생각하고 최적의 경로를 검색하는 로직을 작성하는데..
이게 잘 안되는겁니다.ㅜ0ㅜ
그래서 생각해낸 Tree구조.. 시작점을 최상위 root로 잡고 child를 그려나가는 식으로...
성능이 안나오지 않을까 걱정했으나 아직까지는 큰 문제는 없어 보입니다.

그런데.. 이게 쉽지가 않군요..
찾긴 찾는데.. 원하는 방향을 찾지 못하네요..

아무튼 거의 중요한 부분들은 틀을 만들고 구현하는데 성공하였습니다.

이제 사용자 편의성을 개선시키고..
남은 지하철 3~9호선 + 분당선 좌표 집어 넣고..
마켓에 1.0을 릴리즈 하는 일만 남았네요.

아무튼.. 웹프로그래밍만 하다가 오랜만에 어플리케이션을 만들려니.. 이거 머리에 쥐가 나겠습니다. ㅜ0ㅜ


저작자 표시 비영리
신고

댓글을 달아 주세요

  1. RoyPark 2013.09.28 20:51 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 지하철 어플 관련해서 질문하고 싶은데요!!
    보통 노선도를 보여주고 해당역을 클릭하면 정보를 볼수 있는데, 이미지위에 해당 역을 클릭한다는게 이해가 안가네요… 설명좀 부탁드리면 안될까요? 이미지 위에 어떻게 각각의 역을 객체로 만드는지 모르겠습니다. (이미지는 확대 축소가 가능한 상태에 이동도 가능한 상태라는 가정하에!!)

[2010-08-12 10:08:08 - xx] WARNING: Application does not specify an API level requirement!
[2010-08-12 10:08:08 - xx] Device API version is 8 (Android 2.2)


기본적으로 프로그램을 실행하면서 위와 같은 Warning을 보게 되었다.
위의 오류는 현재 어플리케이션의 API Level의 요구사항을 설정하지 않았다는 오류 같아 보인다.
현재 안드로이드 2.2의 가상 머신을 돌리고 있는 상황이다.

위와 같은 경고 메시지를 보지 않기 위해 아래와 같이 해결할 수 있다.

- AndroidManifest.xml 파일 - 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="--"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:label="@string/app_name" android:name="MainWindow">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
<uses-sdk android:minSdkVersion="4" />

</manifest> 

위와 같이 minSdkVersion을 설정할 수 있다.
참고로 위와 같이 4로 설정하면 안드로이드 1.6 이상에서 구동가능으로 설정된다.
참고로 안드로이드 버전별 API Level은 아래와 같다.

Platform Version API Level
Android 2.2 8
Android 2.1 7
Android 2.0.1 6
Android 2.0 5
Android 1.6 4
Android 1.5 3
Android 1.1 2
Android 1.0 1

현재 안드로이드 1.5 이하를 사용하는 단말기가 거의 없는 상황이기 때문에 정말 최소로 잡고 싶다면 1.5를 기준으로 하면된다. 대부분의 단말에서 동작하게 하기 위해서는 1.6이상으로 잡자.

참고로 현재 가장 낮은 국내의 안드로이드 단말기는 LG전자의 안드로원 모델이다.
기본 펌웨어 버전이 안드로이드 1.5이고 이후 1.6 펌웨어가 만들어져 출시되었다.

즉 Level 4 이상으로 잡으면 현재 국내에 출시한 모든 안드로이드 단말기에서 동작이 가능한 어플리케이션을 만들수 있다.
저작자 표시 비영리
신고

댓글을 달아 주세요

  1. 2010.08.13 10:30  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

res / values 폴더에 xml파일을 만든다.

string.xml 파일은 기본으로 제공된다.
다른 파일을 사용하고 싶으면 동일한 폴더에 원하는 이름으로 xml 파일을 만들어 아래와 같은 형식으로 사용할 수 있다.
해당 폴더의 모든 xml 파일은 동일하게 인식한다.

단. 동일한 이름의 name을 사용하는게 발견되면 eclipse 툴에서 오류를 발생시킨다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">지누셩의 프로그램</string>
    <string name="app_name">한글도 영문도 상관없음.</string>
</resources>

해당 값을 읽어 오는 방법

xml에서 사용하는 방법
  • "@string/hello" 와 같은 형식을 이용하여 값을 읽어 올수 있다.
  • string.xml 파일이 아니라도 상관없음. value.xml 파일도 동일하게 "@string/app_name"형식으로 읽어온다.

java소스에서 사용하는 방법
  •  getString(R.string.hello);
단..Activity 객체를 상속받은 메인 클래스에서만 해당 값을 읽어 올수 있음.


저작자 표시 비영리
신고

댓글을 달아 주세요

자바스크립트를 이용하여 Object의 정보를 보기 위해서는 아래와 같이 보통 작업할 것이다.

alert(objectName);

그러나 돌아오는 대답은 대부분 'object Element' 라는 아주 단순한 값뿐.

그럼 아래와 같이 해보자.

var txtValue;
for(var x in objectName) { txtValue += [x, objectName[x]]+"\n"; }
alert(txtValue);
그럼 아래와 같은 결과를 볼 수 있을 것이다.


너무 길게 되니 짤리네요. alert를 이용하여 위와 같이 나타낼수 있지만
div테그를 이용하여 해당 값을 그쪽에 넣는것도 좋은 방법일듯합니다.
저작자 표시 비영리
신고

'4. 테크니컬&팁 > 4.3.JavaScript' 카테고리의 다른 글

JavaScript Object 속성 보기  (1) 2010.07.14

댓글을 달아 주세요

  1. slog2 2010.12.21 10:41 신고  댓글주소  수정/삭제  댓글쓰기

    Error: Error enumerating properties on scriptable plugin object 라고 뜨네요..

Your Account has been locked.

4. 테크니컬&팁 2010.03.31 14:47 Posted by 지누셩

AIX 6 을 사용중 아래와 같은 메시지를 보았다면?

AIX Version 6
Copyright IBM Corporation, 1982, 2009.
login: wasadmin
wasadmin's Password:
[compat]: Your account has been locked; please see the system administrator.

AIX 5.x 버전에서는 위와 같은 오류를 본적이 없는데 아마도 6이상에서 만들어 진거 같다.

대략 추측을 해보면.
- 개정이 잠겼다.
- 패스워드를 몇번 이상 틀렸기 때문일것으로 판단된다.

이럴경우 어찌해야 하나 검색을 한참을 했지만 결과가 없어서..

root 개정으로 해당 개정의 password를 초기화 하여 주었다.

루트로 => passwd 사용자 개정
# passwd wasadmin
Changing password for "wasadmin"
wasadmin's New password:
Re-enter wasadmin's new password:

그런후 wasadmin으로 다시 로그인하니 패스워드를 변경하라고 메시지가 뜨더군요.
새로운 패스워드로 변경후 사용이 가능합니다.


저작자 표시 비영리
신고
TAG AIX

댓글을 달아 주세요

배치를 작성하고 있었다. 서버에 jeus가 설치되어 있었으므로 jeus.jar를 잡아 주었지만.
아래와 같은 에러를 뿜어냈다.

*****************************************************************
Exception in thread "main" java.lang.NoClassDefFoundError: jeus/util/JeusException
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:810)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:147)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:475)
        at java.net.URLClassLoader.access$500(URLClassLoader.java:109)
        at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:848)
        at java.security.AccessController.doPrivileged1(Native Method)
        at java.security.AccessController.doPrivileged(AccessController.java:389)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:371)
        at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:442)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:260)
        at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:60)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:257)
        at javax.naming.InitialContext.init(InitialContext.java:233)
        at javax.naming.InitialContext.<init>(InitialContext.java:209)

JeusException을 찾을수 없다는 오류를 뿜어냈다..
이것이 무시무시하다..
jeus.jar 파일에 모두 들어 있을 법한 JeusException이 jeus.jar가 아닌 jeusutil.jar에 들어 있을 줄이야..
그럼 그거 하나만 잡으면 다 되는것이냐...
아니다...ㅡ,.ㅡ;;

잡아주고 잡아주고 잡아주고.. 한 4~5개 정도 잡아줘야 NoClassDefFoundError를 더이상 보지 않게 될 것이다.ㅡ,.ㅡ

문제는 이게 클래스가 어느 jar파일에 들어 있는지 찾기 어렵다는것이다.

자..  파인드자르 싸이트를 소개한다. ㅎㅎ

http://www.findjar.com/index.x


저작자 표시 비영리
신고

댓글을 달아 주세요

개발환경 :
웹로직 10.0 MP1
오라클 10.2.0.3

이런 오류가 떨이진다..

java.sql.SQLException: executeBatch, Exception = null
        at weblogic.jdbc.wrapper.JDBCWrapperImpl.invocationExceptionHandler(JDBCWrapperImpl.java:141)
        at weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:164)
        at com.tys.frameplus.dataplus.core.DataManager.updatePrepared(DataManager.java:836)
        at com.tys.frameplus.dataplus.core.DataManager.execute(DataManager.java:340)
        at com.tys.frameplus.dataplus.core.DataManager.execute(DataManager.java:204)
        at com.tys.frameplus.dataplus.core.DataManager.execute(DataManager.java:190)
        at com.tys.frameplus.dataplus.core.SQLProcessor.execUpdate(SQLProcessor.java:709)
        at com.tys.frameplus.dataplus.core.SQLProcessor.execute(SQLProcessor.java:342)
        at com.tys.frameplus.dataplus.core.SQLProcessor.execute(SQLProcessor.java:199)
        at com.tyli.egis.core.vi.dc.ExcelMGT.ExcelEJB.modifyAcntCodAdmn(ExcelEJB.java:429)
        at com.tyli.egis.core.vi.dc.ExcelMGT.ExcelEJB.process(ExcelEJB.java:125)
        at com.tys.frameplus.core.ejb.GenericEJB.preProcess(GenericEJB.java:127)
        at com.tyli.egis.core.vi.dc.ExcelMGT.ExcelEJB_49r0y4_EOImpl.preProcess(ExcelEJB_49r0y4_EOImpl.java:61)
        at com.tyli.egis.core.vi.dc.ExcelMGT.ExcelEJB_49r0y4_EOImpl_WLSkel.invoke(Unknown Source)
        at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:174)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:335)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
        at com.tyli.egis.core.vi.dc.ExcelMGT.ExcelEJB_49r0y4_EOImpl_1001_WLStub.preProcess(Unknown Source)
        at com.tys.frameplus.core.invoker.RemoteEJBInvoker.invoke(RemoteEJBInvoker.java:74)
        at com.tys.frameplus.util.BizInvokerUtil.delegate(BizInvokerUtil.java:83)
        at com.tys.frameplus.util.BizBrokerUtil.callBizBroker(BizBrokerUtil.java:160)
        at com.tys.frameplus.util.BizBrokerUtil.callACBizBroker(BizBrokerUtil.java:82)
        at com.tys.frameplus.util.BizBrokerUtil.callDCBizBroker(BizBrokerUtil.java:100)
        at com.tyli.egis.core.vi.ac.ExcelMGT.ExcelEJB.importAcntCodAdmn(ExcelEJB.java:414)
        at com.tyli.egis.core.vi.ac.ExcelMGT.ExcelEJB.process(ExcelEJB.java:75)
        at com.tys.frameplus.core.ejb.GenericEJB.preProcess(GenericEJB.java:127)
        at com.tyli.egis.core.vi.ac.ExcelMGT.ExcelEJB_49r0y4_EOImpl.preProcess(ExcelEJB_49r0y4_EOImpl.java:61)
        at com.tyli.egis.core.vi.ac.ExcelMGT.ExcelEJB_49r0y4_EOImpl_WLSkel.invoke(Unknown Source)
        at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:174)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:335)
        at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
        at com.tyli.egis.core.vi.ac.ExcelMGT.ExcelEJB_49r0y4_EOImpl_1001_WLStub.preProcess(Unknown Source)
        at com.tys.frameplus.core.invoker.RemoteEJBInvoker.invoke(RemoteEJBInvoker.java:74)
        at com.tys.frameplus.core.BizBroker.delegate(BizBroker.java:100)
        at com.tys.frameplus.miplatform.ActionController.callBizBroker(ActionController.java:203)
        at com.tys.frameplus.miplatform.eam.MiController.processRequest(MiController.java:130)
        at com.tys.frameplus.core.GenericController.doPost(GenericController.java:62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at com.tys.frameplus.miplatform.GenericAuthFilter.processFilter(GenericAuthFilter.java:154)
        at com.tys.frameplus.miplatform.GenericAuthFilter.doFilter(GenericAuthFilter.java:67)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3393)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(Unknown Source)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2140)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2046)
        at weblogic.servlet.internal.ServletRequestImpl.run(Unknown Source)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:200)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:172)

자바에서 제공하는 executeBatch 함수와 addBatch함수를 이용하여 개발하고 있는데.. (성능을 위해서..)
이런 특이한 오류가 발견되는것이 아닌가.. 음..

입력하려는 데이터는 약 1200건 정도..
데이터가 많은 양도 아닌데.. 오류가 발생하여 이상하다고 생각..
아래와 같은 것을 시도해 보았다..

1. JDBC드라이버 버전을 높은것으로 변경
오라클에 버그가 무지 많은것은 아는사람은 다 아는것.. ㅡ,.ㅡ
jdbc드라이버도 버그가 상당하다.
기본적으로 웹로직 10에서 제공하는 버전은 10.2.0.2
최신의 버전은 10.2.0.4

그래서 10.2.0.4로 업데이트를 해보았다..

동일한 증상. ㅡ,.ㅡ

뭘어떻게 하면 될까.. 모르겠다. 아웅.. 짜증나.

- 추가 09/08/10

어떤분이 해당 내용으로 질문을 하셨길래 정리해보았습니다.

우선 결론부터 말씀드리면..
답을 모르겠다입니다.ㅜㅜ

그냥 어쩌다가 해결이 되었는데....

제가 취한 조치는 아래와 같습니다.
1. 혹시 ibatis나 이런거 사용하신다면 쿼리에 줄바꿈/Tab과 같은 특수문자가 들어가는 경우가 많은데요. 이런 경우가 의심되어 모두삭제
2. 진짜 쿼리에 문제가 있는경우가 의심되더군요.. 일부만이라도 쿼리를 바꿔보세요.
3. 오라클 Function 을 사용하는 경우 . Function에서 오류가 발생했을 가능성.
4. parameter를 넣어주는데 null이 들어가는경우.. 혹은 parameter갯수나 위치가 바뀐경우.

위와 같이 저는 추축하고 있습니다만..
어찌어찌하다보니 해결이 되었습니다. 저는 4번을 강력히 의심하고 있답니다. ^^

답이 되었는지.. 도움이 되었는지 모르겠네요. ^^

신고

댓글을 달아 주세요

사용자 삽입 이미지




신버전인 이클립스 3.3 유로파 버전에 추가된
Spelling 체크..
이거 은근 상당히 짜증나는 기능이 아닐수 없습니다.

해지 방법은 위와 같습니다.
General -> Editors -> Text Editors -> Spelling
메뉴에서 위와 같이 Enable Spelling Check를 해지해 주시면 됩니다.
신고

댓글을 달아 주세요

  1. 2007.07.16 00:21  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

IBM DB2에 대한 간단 리뷰

4. 테크니컬&팁 2007.04.01 21:34 Posted by 지누셩
오라클만 사용하다가 급작스럽게 IBM DB2에 대한 관심을 가지게 되었습니다.
오늘 간단히 설치해 보고 장점 및 단점을 소개합니다.

사용환경

윈도우 XP professional
IBM DB2 9 Enterprise Edition Trial Version

설치

윈도우의 경우 오라클과는 다르게 InstallShield 를 사용합니다.
설치가 빠르고 편리합니다. 역시.. 전문 소프트웨어를 사용하는것이 유저입장에서는 편리하다군요


편리한 기능

사용자 삽입 이미지

제어센터 프로그램입니다.
이 프로그램은 Swing으로 만들었는데, SWT를 이용하여 GUI를 만들었다면 더욱 럭셔리 하지 않았을까 생각해봅니다. 아쉬운 부분이죠~
이 프로그램은 TOAD나 오렌지를 생각나게 합니다. 또한 Microsoft의 SQL 2000 프로그램에 기본적으로 포함된 관리 프로그램과 유사한 모습을 보이기도 했습니다.
이 프로그램에서는 새로운 DB생성, Table생성, Table 데이터 관리, 기타 많은 기능을 포함하고 있어 콘솔화면을 이용한 방법보다 편리한 기능을 제공하고 있습니다.

사용자 삽입 이미지
명령편집기
이 프로그램은 SQL 쿼리를 GUI를 이용하여 실행해 볼수 있는 화면을 제공합니다.
TOAD나 오렌지에 비하면 현저하게 기능이 떨어지지만, 충분히 활용할 만한 기능인것 같습니다.
원하는 쿼리를 만들어 실행하면 그에 해당하는 데이터 및 정보를 보여줍니다.

사용자 삽입 이미지
쿼리를 실행한 후 테이블 모양으로 해당 데이터를 확인할 수 있습니다.

사용자 삽입 이미지
제어센터에서는 위와 같은 다양한 기능을 제공합니다.

사용자 삽입 이미지
헬스 센터는 해당 DB서버가 사용하는 메모리및 DB에서 Error, Warning, 확인메시지 대하여 표현해 줍니다.

신고
TAG DB2, IBM, 비교

댓글을 달아 주세요

Nate On 가끔 뉴스가 짜증날때.

4. 테크니컬&팁 2006.10.24 10:32 Posted by 지누셩
네이트온이 기본적으로 윈도우가 시작하는 동시에 시작되는 프로그램으로 많은 분들이 등록하여 사용할 것이다.
그러나..
시작시 네이트온 때문에 너무 컴퓨터가 버벅거리는 안타까운 현상이 발생하게 되는것이다.
가장 큰 이유는... 네이트 뉴스~~

한참을 이 뉴스 창이 뜨지 않게 하는 방법에 대하 찾았지만 쉽게 찾을수 없었는데..
역시 있기는 했다.

뉴스창이 보이는가? 뉴스창을 보면 오른쪽 상단에 설정이라는 버튼이 있었던 것이다.
설정을 누르면 위와 같이 화면을 볼수 있다.
뉴스온 보기 설정에서 자동으로 보지 않기를 선택하면..
네이트온 시작시 뉴스창이 뜨지 않게 할 수 있다.
신고

댓글을 달아 주세요

  1. Favicon of http://girl114.com BlogIcon kiss your eye.. 2006.10.24 10:34 신고  댓글주소  수정/삭제  댓글쓰기

    이건 가끔이 아니라 항상 짜증나더군요 ㅎㅎ =:-)



 

티스토리 툴바