블로그 이미지
신세계 SSG.COM / IT개발 1팀 / 상품, 제휴 / 김지영 FreeEnd

카테고리

전체 (82)
끄적끄적 (14)
News (1)
Movie (11)
Security (1)
Design Patterns (2)
Operating System (4)
Database (8)
Framework (4)
Solution (7)
Language (1)
Web (4)
Lib (3)
TEST_Tools (4)
ETC... (7)
Software Factory (0)
Total226,791
Today72
Yesterday108


달력

« » 2018.06
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

공지사항

글 보관함


환경

WAS : tomcat 7.0
환경 : JDK 1.6, SPRING 3.0


문제발생!!
 
 아. 아직도 오장 육부가 뒤집힌다. 얼마전부터 서프라이즈 하게 혼자 뭣좀 해보려구 개발 환경 하나 잡고 있다. 벌써 오래전부터 준비해온 일이지만, 매번 이 시동거는게 힘들어 매번 빈둥거리다가 드디어 몸좀 움직였다.

 이클립스 다운받구, JDK받아 환경 잡구, 프로젝트 만들어 spring 3.0 라이브러리 넣고.. 작업준비를 끝내고.. web.xml 설정에 들어갔다. 뭐 내가 익숙한하게 ContextConfig환경 잡고.. 컨트롤러는 멀티액션 컨트롤러로....
자자. 환경 설정도 끝났다. 그리고 테스트 Controller 만들어서 호출하는 순간!!! 에러발생. 분명 파라메터로 method 잘 날려줬구.. 설정도 이상이 없었는데... 문제는 하나도 없었다. 설정문제는 아닌듯한데.. 일단 에러는 다음과 같다.
 

2011. 11. 10 오후 4:15:17 org.springframework.web.servlet.mvc.multiaction.MultiActionController handleNoSuchRequestHandlingMethod
경고: No request handling method with name 'form' in class [com.freeend.web.test.TestController]


  어라. 다시보니 에러도 아니고 경고.. 우라질. 메소드를 못찾는데 경고냐. 에러지. 썅.
여튼 문제 계속 찾아봤다.
 


원인탐색

 우선 에러 메시지는 이런 의미이다. MultiActionController가 파라메터로 받은 method 값을 이용해 해당 요청이 원하는 Controller의 메소드를 찾았지만 해당 메소드를 찾을수 없다는 에러이다. 

난 완벽하지만 혹시나.  자. 설정을 다시 확인했다.

 
web.xml 

<context-param>     
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>


spring-servlet.xml

<bean id="methodNameResolver"
        class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
    <property name="paramName">
        <value>method</value>
    </property>
    <property name="defaultMethodName">
        <value>form</value>
    </property>
</bean>

<bean id="actionBean" abstract="true">
    <property name="methodNameResolver" ref="methodNameResolver" />
</bean>

<bean name="/test/test1.do" parent="actionBean"  class="com.freeend.web.test.TestController">  
</bean>


 역시나 아무리 생각해봐도 문제는 없다. 역시 난 빈틈 없음. 틀리지 않아.
 그럼 뭐가 문제인가!!
 역시 구글신께 물어봤다. 네이버 버려. 구굴이 甲이여.

 역시. 조선人 보단 양키가 낫다. ㅋㅋ 

Nick's Blog (http://tcob.com/c/tech)

That’s a terrible blog post title, I know. Nevertheless, I just burned 90 minutes trying to figure out why a simple Spring MultiActionController setup left me with an error: “No request handling method with name ‘list’ in class.” Google was little help, so I resorted to Bing.

Eventually, I found a buried forum response with my exact problem, I had referenced the wrong package’s type! If you’re running in to this, make sure you do this:

import org.springframework.web.servlet.ModelAndView;

and not this:

import org.springframework.web.portlet.ModelAndView;

This will teach me to be more mindful of what Eclipse decides to add for me automatically


란다. 오호홋 감사.

 문제는 ModelAndView의 import가 잘못되어 Resolver가 파라메터로 받은 값과 똑같은 메소드를 찾지 못한거다. 왜냐!! 리턴값이 다르기 때문이지.

 
해결

이런. 어쨌든. 이 문제의 잘못은 이클립스의 자동완성기능에 있었다. 누구나 코딩을 할때.. 아래와 같이 할껄.


저러고 걍 엔터 누르겠지.
 마지막에 port... 뭐시기인지 그 밑에 serv... 뭐시기인지 확인도 않하고 걍 엔터 눌렀겠지...
이게 문제였다. 이 바부. 이런 바보가 양키도 있다. ㅋㅋㅋ 조선人만의 문제가 아니라 글로벌적인 문제였던 것이다.

어쨌든 이클립스가 지멋대로 

import org.springframework.web.portlet.ModelAndView;

이렇게 추천해줘서 내가 선택한 import를 

import org.springframework.web.servtle.ModelAndView;
이렇게 수정해서 해결하였다.

 아. 고마워 양키. 너의 올해 3월의 실수가 날 도왔어. ^___________^. 이상 지영옹.
Posted by 지영옹 FreeEnd
TAG spring
환경
WAS : Resin 3.1, Resin 4.0
개발언어 : Java, JSP
JDK : 1.6



문제발생!!

 새로운 시스템을 개발중이다. Spring으로 개발중인데 아직 개발환경 세팅이 모두 명확히 정해지지 않았다. WAS는 Resin 3.1으로 정해졌는데, 이게 해당 개발사에서 Eclipse 플러그인 지원을 중단하였다. 해서 다른 배포사에 있는 플러그인으로 작업중인데.. 외부 어플리케이션으로 등록해 사용하기때문에 디버그가 잘 되지 않는다. 그래서 환경이 크게 차이 없는 Resin 4.1 환경을 따로 구성해서 4.1에서 개발, 디버그 작업을 하고 3.1에서 개발 된 내용을 테스트 하는 방법으로 개발을 하고 있다.

 허나!! 3.1에서 확인후 4.1로 돌아오면 가끔 에러가 나질 않는가!!! 이런 얼어죽을 형과 아우를 번갈아가며 농락하는 어처구니없는 환경에서 에러는 예상했지만 도통 원인을 찾을수 없었다. 에러는 다음과 같다.


 [11-10-31 17:11:38.692] {http://*:80-1} java.lang.NoSuchMethodError:com.caucho.make.ClassDependency.<init>(Ljava/lang/Class;J)V
     at _jsp._include._home_0layout__jsp.init(_home_0layout__jsp.java:165)
     at com.caucho.jsp.JspManager.preload(JspManager.java:354)
     at com.caucho.jsp.JspManager.compile(JspManager.java:234)
     at com.caucho.jsp.JspManager.createPage(JspManager.java:187)
     at com.caucho.jsp.JspManager.createPage(JspManager.java:168)
     at com.caucho.jsp.PageManager.getPage(PageManager.java:339)
     at com.caucho.jsp.PageManager.getPage(PageManager.java:269)
     at com.caucho.jsp.PageManager.getPage(PageManager.java:252)
     at com.caucho.jsp.QServlet.getSubPage(QServlet.java:294)
... 중략...



  원인탐색

 왜 자기 빌더에서 자기 라이브러리를 참조하지 못할까. 한참을 WAS 설정에서 클래스 패스가 빠진곳이 있나만 확인해보다가... 에잇. 천재 키다리 아저씨 구글한테 물어보기로 했다.

 역시나 양키놈들 대단하다. 그이름도 아름다운 알렉스라는 양키놈이 대답해주길..

ALEX
This particular error caused by classes compiled against older version of resin. Can you remove the WEB-INF/work directory? Resin puts all generated .java code there by default unless it's redefined in <work-dir> or @work-dir under the web-app tag.

http://forum.caucho.com/showthread.php?t=25555


라신단다. 

문제는 이거다. JSP 파일을 java로 변환할때 RESIN 3.1이하셧고 이걸 빌드는 4.1이 할라해서 3.1 라이브러리를 참조하는 부분을 4.1컴파일러가 빌드를 못해 일어나는 문제였던 거이였다. 


  해결

 오나전 감사한 ALEX에게 감사의 박수만 보내면서 우리 ALEX가 가르쳐준대로 /WEB-INF/work 디렉토리를 걍 지워버렸다.
 아. 깔끔해. 헌데 문제가 하나 더생겼네. 이거 4.1이 컴파일한 놈을 3.1이 또 못읽을꺼 아녀!! 
 요건 다음에 해결하자. ^^; 지영옹.




 


Posted by 지영옹 FreeEnd
TAG resin

 작업일 : 2011년 10월 22일쯤?
 작업도구 : 철사 옷걸이 2개, 니퍼, 인두, 납, 동선, 절연테이프. 벽지조금
 작업시간 : 총 30분정도.

 내가 총각때 내 방에서 안방의 유선 방송 케이블을 몰래 끌어다 내 TV겸용 모니터에 꼽아 텔레비를 도둑 시청하곤 했다.

뭐 지금은 결혼해서는 우리 사랑스런 마누느님께서 가장 사랑하시는 현빈님이 광고하는 열라큰 3D티비 (과연 티비를 사랑할까 현빈을 사랑할까) 를 사오시고 IPTV를 신청해주셔서 거실에서 감사히 누워 시청하고 있지만, 서재에서 주로 작업 및 공부..... 에잇. 주로 게임하는 나로써는 게임과 티비를 동시화면으로 보고 싶어 HDTV안테나를 찾아보았다..





헉. 2만 3천원. 따른것도 찾아보니 2~3만원대다.

 2만 3천원이면 점심이 5끼며, 친구랑 둘이서 7천원짜리 압구정곱창볶음 2인분에 소주 3병을 먹고 2천원이 남는다. 이런 큰돈을 어떻게... 내 용돈을 이런곳에 허투루 쓸수 없음.

 그래서 혼자 스스로 내 힘으로 한번 만들어 보기로 했다. 아자아자!!!







HDTV란!!

 자. 우선 HDTV에 대해서 알아보자. 
 HDTV란  High-definition television의 약자로 과거 아날로그 방식의 방송과 달리 전파에 디지털 신호를 실어 고화질의 선명한 영상과 소리를 전송하는 방식을 사용한 방송을 수신하는 TV를 말한다. 방식이 조금 다르긴 하지만 기존 방송 주파수인 UHF 채널로 방송을 송신하고 있다. 하지만 기존의 아날로그 안테나로 바로 HDTV를 수신하기는 조금 무리가 있다.

 기존 아날로그 TV안테나는 일반적은 공중파 방송인 1~13번 사이의 주파수에 맞게 설치되어 있어 14~60번 사이의 HDTV채널을 수신하는데에는 문제가 있다. 이때문에 HDTV는 기존에 설치된 아날로그TV 안테나를 통해서는 HDTV 주파수를 수신하기 힘들며, HDTV가 주파수를 가장 적합하게 수신할 수 있게 위치를 조정하거나 추가로 안테나가 필요하다. 게다가 HDTV의 송신소는 아날로그 방송의 송신소보다 적다. 때문에 많은 사항을 고려해서 제작, 설치 해야 한다.

 이제 일반 UHF안테나를 이용해도 상관 없다는 사실을 알았으니 우리집에서 수신가능한 송신소와 주파수 대역을 찾아보자.








주파수 대역 확인!!!

다음 주소를 따라가면 자신의 지역에 맞는 송신소를 찾을 수 있으며 해당 송신소에서 발송하는 HDTV 채널을 확인 할 수 있다.

http://dtvguide.kbs.co.kr/DTVLineUpService/info1_1.htm
 
  
 우리집은 은평구에 소재하고 있으며 우리집은 불광 송신소의 주파수가 가장 적합하다고 나온다.
 






이제 우리집은 KBS는 48과 51, MBC 는 59, SBS는 58이 가장 잘 수신된다는 것을 알았다.
이제 해당 채널이 실린 주파수를 알아내면 된다. 해당 주파수는 아래 주소를 들어가면 확인 할 수 있다.

http://blog.naver.com/creeras/37046736


송신소 채널에 따른 주파수를 찾은 결과는 아래와 같다.

방송 / 채널 / 주파수
KBS1 / 48 / 677
KBS2 / 51 / 695
MBC / 59  / 743
SBS  / 58  / 737

주파수 확인결과

평균 주파수는 713이다. 이제 이 주파수가 우리집에서 정상적으로 수신 가능한지 알아보자.







주파수 수신 계산!!!

주파수 수신 가능여부를 계산하기 위해 HDTV 수신문의를 위한 전파예측모델을 이용했으며 이는 아래 블로그의 정보를 기준으로 계산 되었다.

http://digiex.tistory.com/19


위 블로그에 근거 가장 해당 주파수를 잘 적용할 수 있는 Walfisch-Ikegami 모델을 이용했으며 해당 정리로 계산 하였다.

 



 해당 손실을 추가하고 계산하면..




음.. 뭔소리냐...



 L이 뭐고 W가 뭐라고?




이런 ㅅㅂ....




안해 때려쳐

 


-_- 나 고급 개발자야. 이런 계산~ 못해~










 


ㅅㅂ 사버려










아 ㅅㅂ 배송비까지 28천원이잔하!!!!!! 못사 못사.

자자 정신차리고.

계산은 무리다. 구글링 ㄱㄱ

득템!! 이분께서는 공학쟁이시군요! ^_____________^
http://cafe.naver.com/momshouse.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=19262&

다행이 똑똑한 분이 계산 해 주셨다.
이분을 따라하자! 그래. 음.. 뭐 우리집도 남산 송신소에서 발송하는 전파 수신 감도는 양호니깐..  일단 똑같이 진행하자!!

네 변의 길이는 15cm. 뭐 안대면 10cm 제작하지머.
15cm고고 씽!!









 역시 무늬는 지브라. 난 얼룩말이 좋아.
주파수를 싣고 달려달려.
이제 껍대기를 뱃기고 철사를 꺼내 15cm짜리 사각형을 만든다. 참고로 밑에는 전선과 연결할 부분까지 제작하여야 함.








자. 15cm짜리 사각형 파리채 완성. 이제 가운데 양파망만끼면 바로 물고기 그믈로. 팽팽하게 해서 파리채로 으흐흐.
용도는 다양하겠구마.

 이제 제일 중요한 커넥터를 제작해야 한다. 이 작업이 제일 중요하다.
마누느님께서 주무실때 몰래 작업해야 한다. 일반적으로 건너방에는 테레비가 없다. 게다가 서재에는 티비가 없을 뿐더러 책상때문에 보통 벽에있는 TV커넥터가 보이지 않아 제격이다.

 우리는 용돈을 아끼는 유부남 부대. 과감히 벽에 붙은 TV커넥터를 뽑는다. 단. 마누느님에게 걸리지 않게. 



 (여러분. 오늘의 재료중에 벽지조금으로 살짝 붙여두세요. 이 작업 놓치시면 밥도 못얻어먹음다. ㅠㅠ)






아썅 이작업이 제일힘들었음. 저 똥그란거 빼낼라고 니빠로 여기저기 쑤셨던거 생각하면... ㅠㅠ
 자 여튼 우린 특템했으니 성공한거야.

 이제 안테나의 성능을 높히기 위해 철사 위에 동선을 감는다.
동선을 감기 전후로 성능 향상은 약 20%가 차이 난단다.

 축동선 바르니 철사 옷걸이 안테나가 "+1 철사 옷걸이 안테나"로 !!!





자 다 감았으면.. 센스 있게 사진대로 동선 꼬다리 좀 만들어 두었지?
아까 그 동선 꼬다리를 동그란 커넥터에 칭칭 감고 납질을 한다.
난 이과출신. 공대출신 공돌이. 납땜하난 자신있어~
국민학교때 라디오도 만들었다규.

자. 이제 다 만들었으면 일단 안테나 역할을 하는 부분은 다 만들었음. 이제 테스트를 하면 대.
TV에 과감히 꼽아꼽아!!!! 쑥!









아.. ㅠㅠ
실패. ㅅㅂ 다 갔다 버려.


























아.. 곱창2인분에 소주 3병...
포기할수 없다!!!!!

아. 역시 과학적인 증명에 의해 남산 송신소에서 송신하는 10번대의 HDTV채널은 수신 불가능한것 으로 밝혀짐.

자. 이제 아까 그 블로그놈의 계산식에서 내 주파수를 대입해서 나온 값이 10cm로 고고.
그냥 10cm는 아쉬우니 2cm씩 들쭉날쭉해서 8cm대역대도 소화해버리자.

마누라님 일어나시기전에 빨리 작업!!
덕분에 사진도 못찍음.. ㅠㅠ







바로 테스트!!!







옴매. 마누라님. 저 3만원 굳었어요 ^______________________________________^






















뭐라고? 이번달 용돈 27만원이라고?????????????????????????????????????????????????????
이봐. 안테나 산게 아니잖아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



이상. 지영옹. ㅠㅠ

Posted by 지영옹 FreeEnd