'2007/05'에 해당되는 글 4건

  1. 2007/05/18 invoker 의 역할 (1)
  2. 2007/05/16 결혼..?
  3. 2007/05/08 주민등록번호 알고리즘
  4. 2007/05/05 Tomcat 에서 invoker 사용하기
Memo2007/05/18 09:46
아무래도 저는 궁금한것은 쉽게 넘어가지 못하는 성격인것 같습니다.
이전 포스트를 보시면 알 수 있겠지만, 책을 구입후 처음부터 invoker 이라는 녀석을 사용해서 Servlet 를 이용하도록 되어 있는데, invoker 에 관한 주변설명이 없어서 역할이나 목적등을 쉽게 이해하기가 힘들었습니다. 일단 무언가를 시작하는 입장이기에 의문보다는 전체적인 흐름에 포커스를 마추고 따라가다보면 일정 시점에서 궁금증을 해결 할 수 있을 거라 생각했으나, 자주 등장하고, 또한 사용 빈도가 높은 무언가를 목적이나 역할도 모르는채 이용한다는것이 조금 앞뒤가 안맞는다는 생각에 이것저것 알아보기 시작했습니다.

그래서 도달한 결론은 Thread 라는 것이었죠. :-)

이 invoker 이라는 녀석은 컨테이너 레벨에서 단독으로 동작하는 쓰레드 였습니다. Servler 을 invoker 로 매핑을 시켜주면, 매핑되어있는 URI 로 서블릿을 실행할 수 있는 역할을 하는 것이죠. 조금 더 구체적으로 설명을 해 보자면, 클라이언트가 서블릿을 호출하면, 메모리에 로드되어 있는 서블릿의 Context 를 할당받아, Java Application 의 main() 메소드에 해당되는 서블릿의 service() 메소드를 호출해 주는 역할을 합니다.


실제 학습을 하는데 있어서 이것이 무엇을 위해 존재하는지 정확한 역할을 몰라도 따라하기 식으로 학습해 나아가면 크게 문제가 없는부분이 상당수가 있습니다. 그 따라하는 과정 자체를 학습해 버리니까요. 하지만 이것들을 기반으로 하는 상위의 무언가를 배워나갈때 걸림돌이 되느냐, 아니면 촉매제가 되느냐 하는 차이가 발생할 수 있습니다. 사용되는 빈도수가 높으면서도 정확한 목적을 모른채 사용해 나간다면 자기 자신이 답답해 하는것이야 말로 정상적인 사고방식은 아닐까요? :-)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 구라구렁이
TAG invoker
Gossip2007/05/16 15:41
지난 13일, 친구가 결혼을 하였습니다.
아직까지 결혼이라는것에 대해서 구체적인 생각을 해 볼 여유가 없었기 때문일까요? 어색한 기분을 떨쳐버리기가 많이 힘들었습니다. 친구녀석들과 이런 저런 말을 해 보아도, 어색한것은 마찬가지 인듯 합니다. 다만, 친구들 중에서 가장 먼저 결혼에 성공한 녀석이다 보니 친인척들의 결혼식에 참여했을때와는 느낌이 많이 다르다는 말들은 한결같이들 하더군요. :-)

친구녀석의 결혼식에서 미묘한 사건을 겪었습니다. 입장에 따라서 충분히 이해할 수도 있을법도 하지만, 개인적인 감정으로 봤을때는 많이 실망스러운 사건이었지요. 모든 사람마다 다른이들에게 말하기 힘든 사정이라는 것은 분명히 존재하고, 그러한 것들을 전후 사정도 모른채 무작정 나무라고 싶은 생각은 없습니다. 하지만 최소한 들어올때 다르고 나갈때 다른듯한 모습을 보이는 것은 친구라는 관계를 떠나서 사람대 사람 으로서 최대한 보이지 말아야 할 모습은 아니었을까요?
정확한 전후사정을 이곳에 남길 수는 없지만, 이렇게라도 흔적을 남기고 있다는것은, 그 일을, 그리고 그녀석을 아마도 한동안은 잊지 않을거라는 나만의 다짐일지도 모르겠습니다.


영섭이 이녀석!! 결혼 축하한다~ :-)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 구라구렁이
TAG 결혼, 친구
Memo2007/05/08 11:06

지금은 대부분의 상업적 목적을 가지는 웹사이트들이 주민등록번호 인증제도를 도입하지만, 그리 오래되지 않은 시절에는 대부분 직접 주민등록번호를 체크하는 루틴을 가지고 있었습니다. 속설에 의하면 허위 주민등록번호로 가입하는것을 막기 위해서 의도적으로 유출이 된 알고리즘이라고 하지만, 오히려 역효과로 인해서 주민등록번호 생성기가 웹을 휩쓸었던 시절이 도래하기도 했었지요.
현재는 주민등록번호 생성기 등을 제작해 배포하는 것은 큰 문제가 된답니다.

var sn = "1234561234567";
var key = "234567892345";
var sum = 0;

for( var i=0; i < key.length; i++ ) {
    sum += parseInt( sn.charAt(i) ) * parseInt( key.charAt(i) );
}

digit = ( 11 - (sum % 11) ) % 10;

res = ( parseInt(sn.charAt(sn.length - 1)) == digit )? "True" : "False";
window.alert( res );



이러한 알고리즘에 관심이 있으신분은 대부분 개발자 혹은 개발자지망생 일거라 예상되고, 코드는 비교적 간단하다고 생각되는 JavaScript 를 이용했습니다. 한번 읽어보시면 알고리즘 정도는 눈에 들어오시겠죠? :-)

아, 참고로 2000 년 이후 출생자는 이 알고리즘이 적용되지 않는것으로 알고 있습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 구라구렁이
Memo2007/05/05 19:16

책을 구입하고 느닷없이 시작하는 첫번째 Servlet 예제.
마치 당연하다는 듯이 invoker 를 사용하는데, 문제는 이에관한 주변설명이 전혀 없다는 것입니다. 책이 조금 예전에 발행되었기에 최근에 Tomcat 에서 정책이 변한것인가 싶어서 여기저기 한참 기웃거리다가 알아낸것은, 책이 발행되는 시점에서는 이미 보안상의 이유로 인해서 Tomcat 에서 invoker 는 기본적으로 "주석" 처리가 되어있었다는 것을 알게 되었습니다.
시작부터 책에 실망을 조금 하게 되는군요. :-)


[Tomcat_Home]/webapps/project/WEB-INF/web.xml 파일

    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
    </servlet>

invoker 을 설정해 주는 부분과


    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

invoker 을 매핑해 주는 부분을 작성해 줍니다.
([Tomcat_Home]/conf/web.xml 을 수정하는 경우에는 각각에 해당하는 주석을 제거해 줍니다.)


 

[Tomcat_Home]/conf/context.xml 파일

<Context reloadable="true" privileged="true">

옵션을 준다.



보안상의 이유와, 하나의 서버에 여러개의 Web Application 이 동시에 작동하는 경우에 이런식으로 컨테이너 전체의 설정을 변경해야 하는 방식은 옳지 않다는 생각이 들었습니다. 아직은 첫발을 내딛는 입장이기 때문에 일단은 시키는 대로 따라가 봐야 겠습니다.

[2007.6.26] 각각의 독립 Application 에 invoker 설정하는 법을 알아내어(?) 수정하였습니다. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 구라구렁이