radio 버튼 처리를 위한 테스트 코드를 작성해 보았다. 초기 로딩 화면은 다음과 같다. 테스트 코드는 다음과 같다. mWeb inApp HTML5 this is M area mobile web this is I area inapp this is H area html5 여기서 한가지 고민되는 부분이 있었다. radio 버튼을 클릭할 때마다 text를 변경하며 노출해야 하는데 위의 테스트 코드와 같이 hide(), show()를 이용하여 처리를 하다보면 버튼 항목이 추가되었을 때 늘어난 항목 만큼 조건절에 모두 추가해 줘야 한다. 그래서 루프를 이용하여 다음과 같이 처리하였다. 조금은 코드가 깔끔해 졌다. ^^ 개발을 하다보면 시간에 쫓겨 이와 같은 고민을 하지 못하고, 그냥 지나쳐 버리곤 했는데 학습 ..
시간이 지나면 xml namespace에 대해서 자꾸 까먹어 블로그에 정리 한다.XML 문서 내에서 유일한 엘리먼트 이름이나 속성 이름을 제공하기 위해 사용된다.XML은 사용자가 자유롭게 엘리먼트를 정의할 수 있는 장점을 가지고 있지만 사용되는 엘리먼트가 XML 문서에서 중복될 수도 있다.이름이 같은 엘리먼트에 의해 발생할 수 있는 이름 충돌을 해결하기 위해 사용되는 것이 namespace이다.네임스페이스를 사용하기 위해 "xmlns"라는 속성을 사용한다."xmlns" 속성값은 네임스페이스를 식별하기 위한 네임스페이스 이름이며, XML문서 내에서는 유일해야 한다. 엘리먼트 이름은 기본 네임스페이스를 선언하는 엘리먼트 명을 지정하고 xmlns 속성은 기본 네임스페이스를 지정하기 위한 속성이다. 기본 네임스..
jquery를 이용하여 checkbox 핸들링 테스트를 해보았다. 체크 박스 전체 석택체크 박스 전체 해제체크 되어 있는 값 추출서버에서 받아온 데이터 체크하기 (콤마로 받아온 경우) 1번째 checkbox2번째 checkbox3번째 checkbox4번째 checkbox 한 가지 고민스러운 것은 서버에서 받아온 데이터가 콤마가 아닌 리스트 형태일 경우 어떻게 처리하는 것이 좋을까 이다. service layer에서 리스트 형태의 checkbox 데이터를 콤마 형태로 가공한 후 view에 던져줘야 할까?아니면 리스트로 받은 데이터를 view에 던져주어 데이터 가공 작업을 위임할까? okjsp에 질문올려서 다른 분들은 어떤 방법을 사용하고 있는지 알아봐야 겠다.
tree를 이용하여 화면을 개발하였는데 jquery를 잘 모르다보니 초반에 너무 삽질을 많이 했다. 지금은 웬만큼 익숙해졌지만 좀 더 간결하고 깔끔하게 짤 수 있는 방법을 찾기 위해 지속적인 테스트를 해보려고 한다. 브라우저는 크롬을 사용하였고, console.log 를 이용하여 디버깅을 하였다. 이제는 jquery selector에 대한 부담이 없어졌다. 이제 클라이언트 개발도 어느 정도 자신감이 생기기 시작했고, 두려움이 사라지고 있다. 물론 이것만 알았다고 해서 자만하지 말고, 더더욱 발전할 수 있도록 반복 숙달하자. 결과 화면
Array 객체에서 특정 요소를 넘겨주면 해당 요소가 Array 객체에 존재하는지 알고 싶었다. 자바의 contains 메서드가 존재하지 않을까 찾아보니 javascript Array객체에서 제공하는 메서드는 없었고 대신 prototype을 이용하여 함수를 구현하는 예제는 있었다. prototype이 뭘까 궁금하여 그 특성에 대해서 정리해 보았다.자바스크립트의 모든 객체는 프로토타입이라고 불리는 또 다른 객체를 내부적으로 참조할 수 있다. - 모든 function 에는 Prototype 객체를 가르키는 prototype 이라는 프로퍼티가 존재 객체의 속성을 액세스 했을 때 그 객체의 속성에서 못찾으면 prototype 속성에서 찾는다. - prototype은 각 객체간 프로퍼티를 공유할 수 있게 하기 위..
@Testpublic void if테스트() {boolean isSuccess = false;isSuccess = userIdCheck(); // 실패 return if (isSuccess = false) {assertThat(isSuccess, is(false));} else {fail("failed test case!!");}} public boolean userIdCheck() {return false;} 위의 테스트 코드는 실패일까? 성공일까?답은 실패이다. userIdCheck() 메소드에서 false를 return 받은 후 if 조건문에서 false라면 assertThat 테스트 코드를 만나야 하지만 fail 코드를 만나게 되어 테스트는 실패하게 된다. 이유가 무엇일까? if (isSucces..
Array 배열에 있는 요소 중 특정 배열의 요소를 삭제하고 싶을 때에는 javascript의 delete 연산자를 사용하면 된다.var numberArr = new Array();numberArr.push("1");numberArr.push("2");numberArr.push("3"); delete numberArr[1]; for (var idx in numberArr) {console.log(numberArr[idx]);} 출력 결과 5년 넘게 개발을 해오면서 delete 연산자 오늘 처음 알게 되었다.javascript를 너무 등한시하다 보니 모르는게 너무 많다는 것을 느낀다.이젠 자바스크립트도 제대로 한번 공부해봐야 겠다. delete 연산자를 사용하게 되면 문제가 있다.alert(numberAr..
javascript에서 for문 코드를 작성하다가 문득 java에서 지원하는 foreach가 있지 않을까라는 생각이 들었다.혹시나 하는 마음에 검색을 해보니 비슷하게 지원하는 기능이 있었다. 아래는 간단한 테스트 코드이다.var numberArr = new Array();numberArr.push("1");numberArr.push("2");numberArr.push("3"); for (var idx in numberArr) {console.log(numberArr[idx]);} 아래는 출력 결과 javascript에서 for문을 사용할 때에는 되도록 foreach를 사용하는 편이 좋을 듯 싶다.왜냐하면 코드가 간결해지고, 깔끔해지기 때문이다.
다음과 같이 동일한 이름으로 된 input file name을 submit하면 스프링의 CommonsMultipartResolver 는 "not supported by MultipartResolver" 라는 에러를 뱉어낸다. 이유인 즉슨, 스프링 2.5에서는 동일한 input type name upload를 지원하지 않기 때문이다. 이를 해결하기 위해 검색을 해보니, SimpleFormController를 이용하여 해결을 할 수 있다고 나온다.하지만 지금 진행하고 있는 프로젝트는 @Controller와 같이 애노테이션 기반으로 개발을 진행하고 있다. 그렇기에 다른 방법을 생각해 봤고, 나는 아래와 같이 처리를 하게 되었다. 1. application-context.xml 2. MultiFileSuppor..
Java generic에는 T(type), E(element) 가 있는데 이 둘의 차이점을 모르겠다.일단 이 둘의 차이점이 뭔가 확인하기 위해 다음과 같이 테스트 코드를 작성하였다. Element 클래스는 E 를 받을 수 있게 처리하였고, Type 클래스는 T 를 받을 수 있게 코드를 작성@Datapublic class Element { private E id;private String pw; } @Datapublic class Type { private T id;private String pw; } 도메인 클래스 생성 후 다음과 같이 Junit 테스트 코드를 작성위에서 생성한 Type, Element 클래스에 String 타입을 전달하였다.package generic; import static org...
자바 공감 세미나에 가서 lombok 이라는 프로젝트를 알게 되었는데 이 프로젝트가 상당히 흥미로운 기능을 가지고 있다. 대게 VO(Value Object) 및 도메인 객체 사용 시 getter, setter를 생성하는데 lombok 라이브러리를 추가하여 @Data 애노테이션을 달아 주면 컴파일 시점에 getter, setter, hashCode(), toString(), 생성자를 자동으로 생성해 준다. 자동으로 생성한다고 하여 소스 코드 상에 getter, setter가 생성 되는 것이 아닌 bytecode에 생성이 된다. @Datapublic class LombokTest { private String name;private String id; } 사실 VO 클래스를 사용하다 보면 getter, se..
오늘의 주제는 properties 에 관한 내용이다.오래 전 겪었던 일이지만 properties 파일을 볼때마다 그때의 악몽이 새삼 떠오른다. 내용인 즉슨, 프로퍼티에 다음의 값이 저장되어 있었다. remote.domain.name=http://test.co.kr http를 이용하여 다른 웹 어플리케이션 서버에 요청을 보낼 때 http://test.co.kr/remote.do?code=1111 와 같이 URI 값을 append하여 전송하는 로직을 개발하였다. 헌데, 테스트를 해보면 상대방의 도메인으로 데이터를 전송하지 못하는 것이었다. 프로퍼티 설정 값이 잘못 되었나?로직을 잘못 만든 건가?파라미터 부분이 잘못 생성되었나? 여러 가지 삽질 끝에 원인은... remote.domain.name에 설정한 값의..
시스템 구성은 다음과 같다.아파치 - 톰켓 ___ test.co.kr 홈페이지 |__ biz.test.co.kr 홈페이지 하나의 톰켓 instance 위에 서비스 되었던 test.co.kr에 추가로 biz.test.co.kr 서비스를 탑재하였다. 헌데 이상한 현상이 발생하였다.biz.test.co.kr 홈페이지 접속하여 로그인 한 후 test.co.kr로 접속하면 세션 공유 현상이 발생하지 않았는데다음과 같은 방법으로 테스트를 해보면 세션 공유 현상이 발생했다.test.co.kr 접속biz.test.co.kr 접속 후 로그인다시 test.co.kr 접속하면 로그인이 되어 있는 현상 위에서 정의된 메인 도메인과 서브 도메인은 서로 다른 서비스를 위해서 구축된 것이기 때문에 세션 공유가 발생하면 안 된다.원..
ftp upload ## FTP ## ftp.server=주소 ftp.port=21 ftp.remotedir=경로 ftp.userid=계정 ftp.password=패스워드 노가다를 줄이기위해 ant를 이용하여 ftp 업로드 기능 스크립트를 만들어보았다. 일일이 수작업으로 파일질라에서 업로드를 진행해왔는데 이제와서야 자동화를 하게 되었군..ㅋㅋ * 설치 작업절차 1. 먼저 이클립스의 프로젝트에 build.xml 파일을 생성하여 파란색란의 스크립트를 붙여넣는다. 2. build.properties를 생성하여 빨간색란의 정보를 붙여 넣은 후 업로드할 서버의 정보를 기입한다. 3. build.xml 파일의 이 부분을 자신의 프로젝트 설정과 맞추어준다.(현재는 내 설정이 들어가있음) 4. 첨부한 파일 2개를 이클..
자바5.0이 나오면서 새로추가된 기능으로 코드가 간결해진다. 단, 기존 1.4에 익숙해져있는 개발자들이 이 문법을 봤을때는 살짝 거부감이 들지도 모른다.. 나 또한 1.4만 써오다 이런게 있다고만 알았지 정작 사용해보지는 않았기 때문이다. 하지만 지금 회사에서 대리님 한분이 사용을 하시길래 개념을 확실히 잡고자 이렇게 정리했다.. import java.util.ArrayList; public class Generic { public static void main(String[] args) { // 기존 JDK 1.4에서 사용했던 방식 ArrayList a1 = new ArrayList(); a1.add("aaa"); a1.add("bbb"); a1.add("ccc"); for (int i = 0; i <..