본문 바로가기

Programing

(393)
[스프링] 스프링 레퍼런스 4 한글 작업中 [기존 레퍼런스 한글 번역 및 링크들]Version 1.2.2 - http://ldg.pe.kr/framework_reference/spring/ver1.2.2/html/index.html > http://pds4.egloos.com/pds/200707/24/20/spring-reference-rogerrb.pdf3.1 - http://blog.outsider.ne.kr/tag/spring_reference_documentation
[Spring] 테스트 코드에서 private 필드 처리 면접을 보러 갔다가 까칠하게 생긴 면접관한테 이런 질문을 받은 적이 있다.클래스에 private 필드가 있는데 테스트를 어떻게 수행하겠느냐?당시 자바에 대한 공부를 하고 갔기에 리플렉션에 대해서 알고 있어서 리플렉션을 이용하면 private 필드도 접근이 가능하다고 알고 있어서 그렇게 대답을 하였다. 어제 테스트 코드를 작성하다가 private 필드를 조작할 필요가 있었다. 처음에는 리플렉션을 생각했는데 코드가 길어지고 리플렉션 사용법도 찾아봐야 해서 public 세터를 통해 값을 넣을 수 있게 만들었다.위의 그림에서 세 세터는 실제 테스트를 위해서 만들어진 것이다. 어떻게 보면 객체지향개념중 캡슐화를 깨뜨린 것이다. 오늘 스프링 테스트 프레임워크를 공부를 하다가 스프링에는 리플렉션을 사용하기 쉽게 만들..
1582년 10월 4일의 다음 날은? 간단히 생각해서 10월 5일이라 할 수 있으나 실제로는 1582년 10월 15일이다. 1582년에서 실종된 10일은 그레고리력을 처음 적용하면서 율리우스력에 의해 그동안 누적된 오차를 교정하기 위해서 건너뛴 기간이다. 태양의 황경이 0도가 되는 춘분이 1582년에는 10일 정도 어긋나게 되었다. 교황 그레고리우스 13세는 더 정교한 그레고리력을 1582년 10월 15일에 처음 적용했고, 10월 5 ~ 14일의 날짜는 그 해 달력에서 제외시켰다. 율리우스력은 4년마다 윤년을 두지만, 그레고리력에서는 4년마다 윤년을 두되 매 100번째 해는 윤년이 아니고, 매 400번째 해는 윤년이라는 차이가 있다. 언어에서 테스트를 해보면 어떻게 될까? [C#]닷넷에는 System네임스페이스에서 DateTime이라는 클래..
[문서] 요구사항 명세 요구사항 명세서는 누가 작성하는게 맞는가?내가 속한 팀의 경우는 개발자를 작성하도록 팀장이 지시했다. 문제는 팀장이 원하는 것과 개발자가 생각하는 갭이 생길 때였다. 회의는 팀장이 들어가고 큰 줄기만 정해주고 문서작성은 설계의 일환이라면서 개발자에게 문서 작성을 시키니 당연한 결과였다. 그럴바에는 처음 고객과 만날 때 부터 개발자를 동행을 할 것이지. 차이 말고도 문제는 또 있다. 요구사항 명세서가 실제 프로젝트에 도움이 안될 경우에 개선을 할 수가 없다. 힘든 것은 만든 놈이라고 개발자가 죽어라 투덜투덜 대면서 만들어도 관리자는 도움이 되던 안되던 형식적으로 필요하다고 한다. 나도 개인적으로 프로젝트에서 중요한 것은 문서보다도 동작하는 코드가 아니냐고 해도 그 분은 산출물(artifact, 즉 문서)이..
엘리베이터 피치 2008년 9월 18일에 텍스트파일에 적은 걸 옮긴다. 무슨(What)일을 하는 코드를 작성할 것인가?언제까지(When) 작성을 끝내려고 하는가?어디서(Where) 사용될 거라고 생각하는가?왜(Why) 이 소프트웨어를 작성하는가?어떻게(How) 소프트웨어를 작성할 것인가? 엘리베이터 피치 - 소프트웨어를 설명하는 '100개 이하의 단어' 찾기무슨 일을, 왜 할 것인지를 설명하는 짧은 문장 긴 것< 짧은 것이 기술
소프트웨어 품질의 특성 왜 이걸 엑셀로 작성했는지 모르겠지만, 책에 있던 내용인 것 같다.파일 생성시간 : 2010-09-01 19:12 소프트웨어 품질의 특성외적 특성정확성(correctness) - 시스템의 사양과 설계, 구현에 있어 오류가 없는 정도유용성(usability) - 사용자가 시스템을 배우고 사용하는 데 있어서의 용의함효율성(efficiency) - 메모리와 실행 시간 같은 시스템 리소스의 최소 사용신뢰성(reliability) - 정해진 상황에서 언제든지 필요한 기능을 수행할 수 있는 시스템의 능력 - 고장 사이의 시간무결성(integrity) - 시스템이 프로그램이나 데이터에 대한 허용되지 않거나 잘못된 접근을 막는 정도적응성(adaptability) - 시스템을 변경하지 않고 설계된 환경에서 뿐만 아니라 ..
[HTTP & Spring MVC] 파일 다운로드 구현시 파일명 지정 HTML에서 a 엘리먼트로 하이퍼링크를 지정을 했을 경우 다운로드되는 파일의 이름은 URL 주소의 이름이 파일이다. 예를 들어 /download?filename=a.txt 라는 HTTP GET을 했을 경우 다운로드 받는 파일명은 a.txt인데 실제 받는 파일명은 download라는 이름이 된다. 이럴 경우 HTTP 응답 헤더중 Content-Disposition 를 지정해주면 된다. 바이너리일 경우를 위해 Content-Transfer-Encoding도 같이 지정한다. HttpServletResponse response를 사용한다면,,, response.setHeader("Content-Disposition", "attachment;filename=\""+filename+"\";"); response.s..
[후펴파는 스프링] 스프링 컨테이너 계층 정리 스프링 프레임워크는 객체지향 원리를 지향하다 보니 계층적이고 인터페이스도 오발라게 많다.클래스다이어 그램으로 그려두면 한눈에 볼 수도 있고 정리를 한다는 생각으로 만들어보았다.스프링 버전은 4.1.4.RELEASE 기준이다. 크게 우선 두 가지 컨테이너(BeanFactory와 ApplicationContext라는 인터페이스)로 구분할 수 있을 것이다.간단하게 패키지적인 관점에서 보면 아래와 같다.하지만 객체지향개념중에 클래스나 인터페이스에서 가장 중요한 것은 어떤 역할을 수행하느냐이다. 이런 역할들은 메소드를 통해서 정해진다. 실제 계층구조를 인터페이스 메소드를 포함해서 그려보면 아래와 같이 복잡해진다. (이미지가 커서 글씨가 작으므로 클릭하여 확대해서 보거나 다운받아 보길 권장한다.)또한 인터페이스만으..