콘솔 panel is disabled

Posted 2009/07/01 15:33 by openmaya
firefox 3.5가 정식 릴리즈 되었다.


어절씨구나 좋다 하며 필수 플러그인인 firebug를 설치 하였다.. 여느때와 마찬가지로 자바스크립트 디버거를 하려는데 오류는 안나고 아래와 같이 나온다.


뭘 어찌라는건지..  둔한 나는 버그인가 싶어 뒤져도 보고 그랬더랬다.
언어는 한글인데 그림은 한글로 안바뀐 것이었다는 ㅋ
탭을 선택하면 나오는 삼각형 콤보 버튼을 클릭해서 enable할수 있다.


나처럼 둔한 사람들에게 도움이 되기를... ㅋ

Tag : 파이어 폭스

static method의 테스트에 대한 고민

Posted 2009/07/01 10:13 by openmaya
  테스트 코드를 먼저 작성하게 되면서, 스프링이라는 프레임웤에 익숙해 지면서, 형식적으로 정해져가는 코드들의 모습을 보면서,,,, TDD까지는 아니더라도 테스트를 먼저 작성하고 EasyMock을 사용하게 되면서, 뭐랄까 테스트 코드에 의해 강요되는 나의 코드들을 발견하게 되었다.
  그예로 의존관계에 있는 클래스들은 모두 setter를 이용해 넣어 주어야 한다는 점이었다. 사실, 나혼자 작성하는 경우에는 모두 setter로 작성하게 되니 상관없는것이었지만, 충분히 이에 되한 협의나 이야기가 이루어 지지 않은 상황에서 문제발생하기가 쉽다는 단점을 알게 되었다. 
  지금도 문제로 고민하고 있는 점이며, 특히 내가 작성한 코드가 아니라 다른 개발자가 편의를 위해 유틸클래스로 정의된것을 사용하게 될때 특히 문제가 된다.. 더군다나 나의 경우는 그 유틸클래스가 HTTP 요청을 하는 클래스였으니 테스트 하기 번거롭다는 것은 두말할 나이 없다.   이건 뭐 URL만 넣어주면 되게끔 구현되어있어서 사용하기는 매우 쉬우나 method 전체를 static으로 만들어 놓은 상황에서 이넘을 setter로 생성하는 것 또한 모양이 아니올시다이다.
  그렇다고 억지로 이 요청에 대한 응답을 보내주는 mock server를 만들자니 호출하나를 위해 비용이 너무 발생한다는 것을 알수 있다. 
  일단 지금은 그 Util클래스가 프로젝트 전반에 걸쳐 사용되고 있어서 쉽게 건드릴수 있는 부분이 아니라서 결국엔 불필요하게 HttpUtilwrapper 인터페이스를 선언해 필요옵션을 넣어 호출하도록 작성하고 이를 mock으로 선언해 테스트 코드를 작성한 상태이다.
  블로그 글이란 모름지기 해결책을 제시해야 좋은것인데 고민만하고 코드는 없이 말만 주저리주저리 하고 있다.. 하지만, 해결하게 되면 이글을 보는 모든 분들과 이야기 해보고 싶다.

Tag : 테스트

BO가 항상 DAO만 호출하는 것은 아니다.
외부 서버에서 정보를 읽어와야 하는 경우도 있는데 
이를 비동기로 호출할때의 경우가 좀 고민된다.

BO테스트 코드 작성시 선처리로 mock으로서의 DAO같은경우는 단순히 호출과 리턴값만 명시해주면 되지만, 이 경우는 과연 어떻게 해야할지..

예를 들자면 다음과 같은 동작이다.
외부 서버 호출시 응답시간이 오래될수도 있으므로 그중간에 다른 작업을 미리 해놓고 싶은거다.

future = otherServer.getData(parameter);
...이런저런 다른작업...
Object result = otherServer.await(future);

이렇게 동작하는 경우 BO테스트도 또한 값만 정의해 명시해주면 되는데.

이때 OtherServer클래스는 과연 어떻게 테스트 해야할까.



Tag : java, test

Test를 위한 Test Data 선작업에 대한 고민

Posted 2009/04/30 11:47 by openmaya
우선 첫번째로 테스트 코드는 코드자체만으로 동작가능해야 한다는 생각에서 출발한다.
일반적으로 DAO테스트는 CRUD를 함께 테스트 하곤 하지만 추가적인 경우에 별도의 테스트 메소드에서 돌아가도록 구현한다.
이때 난 두테이블의 관계역할을 하는 테이블에서 select하는 어떠한 메서드를 출력하고 싶다.
그러기 위해서는 두 테이블에 해당 데이터를 입력해주어야 하고 그 관계테이블에도 정보를 넣어주어야 한다. 데이터 또한 아무렇게나가 아니라 각 필드속성에 맡는 셋팅이 필요한것이다.
느껴지는가? 테스트 하고 싶은건 select하는 메서드 하나뿐인데, 이미 해당 테스트 메서드는 20줄을 넘고 있다.


1. 지인의 의견으로 미리 샘플데이터를 가지고 있는 Test코드용 DB를 가지고 있으면 안되는가
- 이건 처음 생각과는 좀 동떨어져 보인다.
2. 필요 테스트 데이터를 입력해주는 유틸클래스를 구현해준다.
-  이런식으로 Sample Data를 생성하는 클래스를 작성해보았다. 이 클래스는 어떻게 테스트 해야할까, 뭐랄까 테스트를 위한 코드작성이 너무 많아지는 느낌이다.

깔끔한 해결책없을까... 고민중..

또하나는
테스트 코드를 작성하기에 앞서서 선처리로 데이터를 셋팅해주어야 하는데 그 데이터와 관련되는 위치는 다음 세가지 정도인듯 싶다.

1. iBatis를 사용할경우에 물론 DAO의 결과값는 sqlmap.xml파일에 쿼리로
2. 데이터에 대한 검증은 DAO테스트에서
3. BO테스트시 해당 메서드 테스트의 선작업으로 mock인 DAO의 result값으로 

세가지를 한꺼번에 해결할 방법은 없을까 고민중.

Tag : java test

BO의 Test에 대한 고민

Posted 2009/04/30 11:35 by openmaya
말그대로 비지니스 로직 객체를 테스트 하고자 함인데..
로직에 대한 정의를 더 알아봐야 할듯하다.
모호하다.

테스트 커버리지에서 흔히말하는 Path를 로직으로 생각한다면 단순히 안에서 사용하는 DAO같은 mock객체의 리턴값만 셋팅해 그 결과에 의한 if문 분기로 인해 BO의 리턴값이 어떻게 변화하는지만 Assert하면 될것같다.

Tag : bo, easymock, test

5 Request

Posted 2009/04/28 23:18 by openmaya
A request message from a client to a server includes, within the first line of that message, the method to be applied to the resource, the identifier of the resource, and the protocol version in use.

역) 클라이언트로부터 서버로의 request 메시지는 메시지의 첫번째 라인에 자원에 적용될 메소드, 자원식별자, 그리고 사용된 프로토콜 버전을 포함한다.

Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3


5.1 Request Line
The Request-Line begins with a method token, followed by the Request-URI and the protocol version, and ending with CRLF. The elements are separated by SP characters. No CR or LF is allowed except in the final CRLF sequence.

역) Request-Line은 method 토큰(역주 : 한단어로 이해) 으로 시작하는데, 그 뒤에 Request-URI와 프로토콜 버전, 그리고 CRLF로 끝난다. element들은 SP문자로 구분되며, 마지막 CRLF 문자열을 제외한 어떠한 CR, LF도 인정되지 않는다.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

5.1.1 Method
The Method token indicates the method to be performed on the resource identified by the Request-URI. The method is case-sensitive.
역) Method토큰은 Request-URI에 의해 식별된 자원을 수행하기 위한 방법을 나타낸다. method는 대소문자를 구분하지 않는다.
Method = "OPTIONS" ; Section 9.2
| "GET" ; Section 9.3
| "HEAD" ; Section 9.4
| "POST" ; Section 9.5
| "PUT" ; Section 9.6
| "DELETE" ; Section 9.7
| "TRACE" ; Section 9.8
| "CONNECT" ; Section 9.9
| extension-method
extension-method = token



The list of methods allowed by a resource can be specified in an Allow header field (section 14.7).  The return code of the response always notifies the client whether a method is currently allowed on a resource, since the set of allowed methods can change dynamically.  An origin server SHOULD return the status code 405 (Method Not Allowed) if the method is known by the origin server but not allowed for the requested resource, and 501 (Not Implemented) if the method is unrecognized or not implemented by the origin server. The methods GET and HEAD MUST be supported by all general-purpose servers. All other methods are OPTIONAL; however, if the above methods are implemented, they MUST be implemented with the same semantics as those specified in section 9.
역) method의 리스트는 14.7장의 Allow header field에 명시될수 있는 자원에 의해 허용된다.
역) response의 return code는 언제나 클라이언트에 method가 현재 자원에 허용되는지 알리는데, 그 이유는 허용된 method 모음은 수시로 바뀔수 있기 때문이다.
역) orgin server는 그 method가 origin server에 의해 알려진 것이라면 405(비허용 method) status code를, method가 origin server에 구현되지 않았어나 인식되지 않는것일때 501(구현되지 않음)status code를 리턴해야 한다. 
역) method GET 과 HEAD는 모든 일반적인 목적의 server들에 의해 지원되야만 한다.
역) 모든 다른 method들은 OPTIONAL하다; 그러나 그 이상의 method들이 구현된다면, 그것들은 9장에 명시된 그것들로서 같은 의미로 구현되야만 한다.

5.1.2 Request-URI
The Request-URI is a Uniform Resource Identifier (section 3.2) and identifies the resource upon which to apply the request.
역) Request-URI는 3.2장에서의 URI이고 request 적용시에 자원을 식별한다.
Request-URI = "*" | absoluteURI | abs_path | authority


The four options for Request-URI are dependent on the nature of the request. The asterisk “*” means that the request does not apply to a particular resource, but to the server itself, and is only allowed when the method used does not necessarily apply to a resource.  One example would be
역) Request-URI를 위한 네가지 옵션은 request의 성격에 의존하고 있다.
역) 별표"*"는 request 특정 자원이 아니라 그 자신의 서버에 적용되며, 그리고 오직 사용된  method가 구지 자원에 적용 될 필요는 없을때 허락된다.
역) 하나의 예가 있다.

OPTIONS * HTTP/1.1


The absoluteURI form is REQUIRED when the request is being made to a proxy. The proxy is requested to forward the request or service it from a valid cache, and return the response. Note that the proxy MAY forward the request on to another proxy or directly to the server specified by the absoluteURI. In order to avoid request loops, a proxy MUST be able to recognize all of its server names, including any aliases, local variations, and the numeric IP address. An example Request-Line would be:
역) absoluteURI 폼은 request가 하나의 proxy를 만들 때 요구된다.
역) proxy는 request로의 포워딩이 요청되거나 검증된 cache로부터 그것을 서비스하고, response를 리턴한다.
역) proxy는 다른 proxy또는 닥접 absoluteURI에 명시된 서버로 직접적인 요청이 포워드될수도 있다.
역) request의 무한반복을 막기위해 proxy는 그 서버의 이름, 어떤 별명, 지역변수들 그리고 숫자형의 IP주소 모두를 반드시 알 수 있어야 한다.
역) Request-Line의 한 예가 있다.

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1

To allow for transition to absoluteURIs in all requests in future versions of HTTP, all HTTP/1.1 servers MUST accept the absoluteURI form in requests, even though HTTP/1.1 clients will only generate them in requests to proxies.
The authority form is only used by the CONNECT method (section 9.9).


추후 번역 예정






주군의 윈도우 프로그래밍

Posted 2009/04/16 11:02 by openmaya
학교 수업에서의 간단한 MFC코딩이 다인 나로서는 미지의 세계이다..

요즘엔 AIR로 윈도우 프로그래밍을 대신하고 있지만

맥북을 사용하는 관계로 노트북에서도 사용할수 있다는 장점이 이

Eclipse Maven2 and Subversion Plug-in Update Site URL

Posted 2009/02/27 11:31 by openmaya


2009년 2월 27일자 현재

Maven2
http://m2eclipse.sonatype.org/update/

이클립스 가니메테 기준 사이트 추가하고 Install누른 후에 중복되는 항목은 최신항목으로 바꾸어 주어야 설치가 가능하고 그래도 설치가 진행되지 않으면 Integration항목만 빼고 나머지 설치후 진행하면됨.
업데이트 사이트 주소는 계속 바뀌므로 홈페이지를 참조하는것이 더 좋다.

참조 -> 




Subversion플러그인(subclipse)
버전(Eclipse 3.2/Callisto, 3.3/Europa, 3.4/Ganymede +)
http://subclipse.tigris.org/update_1.4.x

이하 버젼은 사이트 참조
http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA

마찬가지로 중복되는 항목은 제거해 주어야 함.



 

Tag : maven2, plugin, subclipse, SubVersion, 이클립스


이클립스 메이븐 설치를 하고나면 메이븐 프로젝트를 생성할때 왠지 다음과 같은 오류가 뜬다. 뭥미 =.=; 내가 뭘했다고 ;;


-vm어쩌고 저쩌고 옵션을 eclipse.ini에다가 넣어주라고 하고 있다.

구글링을 열심히 해서 해결했다  [바로가기]

어차피 옵션이니 이클립스 바로가기 아이콘을 생성한후 속성에서
바로가기 탭의 대상안에 다음과 같이 넣어줬다.

D:\MyProject\eclipse\eclipse.exe
-vm "D:\MyProject\java\jdk\jre\bin\javaw.exe"

"이클립스실행파일경로 -vm jre가설치된파일경로"
정도 되겠다.


Tag : error, maven2, 이클립스

VirtualBox 2.0.4 for mac

Posted 2008/11/12 12:02 by openmaya
맥북을 사용하게 되면서 가장 아쉬웠던 부분은 
그것을 사용하려는 목적에서 부터 비롯된 것이었다.

유닉스 기반의 그래픽 인터페이스, 프로세스화된 작업체계에 일
단 현혹되었던 난,
(솔직히 디자인, 속된말로 간지가 1순위였지만... ㅎㅎ)

또다른 우분투정도로 생각하고 학과 수업을 모두 수용할수 있다는 확신을 가지고 있었다.

이클립스를 사용해 진행되는 웹과정 수업들과, 리눅스로 진행되는 임베디드 하드웨어, 리눅스 시스템 프로그래밍 등 일단은 문제 없어 보였다..

자바의 유명한 웹 프레임워크의 사용은 자바의 최신 버젼을 요구했고 맥의 자바는 애플에서 따로 배포하는 통에 결국 제대로 된 진행은 중간고사 즈음에야 가능했다. 뭐 이부분은 지금에와선 큰문제는 아니다. 잘쓰고 있다 ㅋ

페도라 6에서 진행되는 임베디드와 시스템 프로그래밍 수업에선 타겟보드와의 연결을 위해 필요한 nfs 서비스 문제로, 할수 없이 가상머신을 설치 할수 밖에 없었고 여러 프로그램중 윈도에서 익숙해진 VMware 의 맥용인 Fusion을 잘 설치하였으나.. 이건 윈도우랑 다르다는 아킬레스에 걸리게 된다. 히밤 윈도우랑 달랐다. 이전에 정리해뒀던 네트워크 설정이 없었다는 것

임베디드수업에서 타겟보드와 연결을 위해서는 시리얼 포트로 콘솔을 연결하고 파일전송은 리눅스의 nfs서비스를 이용하게 되어있다. 시리얼 포트는 문제가 없었지만 이 nfs서비스로 연결을 하기 위해서는 같은 네트워크 안에서 독립적인 IP주소가 필요한데 VMware Fusion같은경우 브릿지 연결만을 연결한다는..  !@#$!#@$%!#!@#%!@ 결론적으로는 분리된 네트워크를 형성한다는 말이다. 쩝

맥에 작년부터 기본으로 제공되는 부트캠프나, 유명한 페러렐즈, virtualbox도 써보긴했지만 마찬가지였다..  결국 가상머신은 윈도우 설치에 목적을두고, 일단 공짜이면서 가장 가볍게 돌아가는 virtualbox를 설치하였었다. 

뭔가 제목이랑 동떨어지게 맥을 사용하면 힘들다는 주제의 글이 되어가고 있지만, 사실 난 여러 프로그램회사의 노력으로 맥을 사용하기 좋은 세상이 오고 있다고 이야기하고 싶다.

그리고 가장 와닿는 virtualBox를 통해 그 이야기를 하고 싶어 잔소리를 늘어놓았다. ㅋㅋ
사실 10월 초에 2.0으로 버젼업한 virtualBox는 network 설정을 대폭 강화하였는데 내 눈에 가장 눈에 뜬것은 하드웨어 설정으로 가상머신마다의 독립적인 가상 네트워크 장치가 제공된는 것이었다. 기존에도 비슷한 말이 있긴했지만 단순히 가상머신에서 사용할 네트워크 장치를 명시하는 정도였을뿐이다. 

하지만 이번엔 윈도우 VMware에서 처럼 가상머신에 같은 네트워크상의 독립적인 IP를 부여할수 있게 함으로서 맥에서 페도라를 통해 target보드와 통신을 할수 있게 해주는 것이었다. 아직은 내공이 부족해 맥자체에서도 충분히 가능하리라 생각됨에도 불구하고 가상머신을 사용하고 있지만, 개발환경에 따라 영향을 받기도 하는 임베디드에서 동일한 환경을 만들어 개발을 시도할수 있는 기회를 준다는 점에서 나에겐 굉장한 버젼업이라는 생각이 들었다.

요즘 환율이 !@#!@$!@#!@#!@#같이 올라서 새 맥북의 가격이 그것 앞에서 고개 숙이고 마는 분위기지만 다음 분기에 좀더 착한 가격으로 돌아왔을때에 vitualbox의 버젼업은 망설임없이 맥북을 지르는 하나의 포인트가 되지 않을까 생각이 든다. ㅎ


 
 
 
 
저작자 표시 비영리 동일 조건 변경 허락

Tag : Embedded, Linux, MacBook

« PREV : 1 : 2 : 3 : 4 : 5 : ... 6 : NEXT »