본문 바로가기

전체 글

(67)
이클립스 .Project 관련 오류 이클립스에서 프로젝트를 시작하면서 복사. 붙여놓기 열심히 했더니 오류가 터졌다. 평상시에 사용하던 자바가 아니다. 단축기도 먹지를 않는다. 싸함이 느껴졌다. 내가 어디를 잘못했는가 거슬러올라가보았다. 그러다 찾았다. 이클립스에서의 .project 설정을 안해놨다. 다시 .project의 설정을 열심히 복사, 붙여넣기 설정을 완료하니 제대로 돌아간다. 오류도 뜨고 단축키도 잘 먹는다. .project - 이클립스 워크스페이스 상에서 프로젝트를 생성하게 되면 자동으로 생성되는 파일 - 프로젝트 파일 정보가 담겨있다 - "."으로 시작하니 Unix계열에서는 숨김파일 - 프로젝트가 웹 프로젝트인지 자바 프로젝트인지에 구별 가능함 - 자세한 도움말 : https://help.eclipse.org/2021-03/i..
Clean Code - 4주차 이번 주 목차 17장 냄새와 휴리스 부록A 동시성Ⅱ 부록B org.jfree.date.SerialDate 부록C 휴리스틱의 교차 참조 목록 17장 냄새와 휴리스틱 - 주석 C1: 부적절한 정보 : 일반적으로 작성자, 최종 수정일, SPR번호 만 주석으로 넣는다. C2: 쓸모없는 주석 : 오래된 주석, 엉뚱한 주석, 잘못된 주석은 아예 달지 말자. C3: 중복된 주석 : 구구절절 설명하는 주석 달지 말자. C4: 성의 없는 주석 : 간결하고 명료하게 주석 달자. C5: 주석 처리된 코드 : 주석으로 처리된 코드는 즉각 삭제하자! - 환경 E1: 여러 단계로 빌드해야 한다 : 한 명령으로 전체를 체크아웃해서 한 명령으로 빌드할 수 있어야 한다. E2: 여러 단계로 테스트해야 한다 : 모든 단위 테스트는 한 ..
Clean Code - (3 - 2)주차 이번 주 목차 13장 동시성 14장 점진적인 개선 15장 JUnit 들여다보기 16장 SerialDate 리팩터링 13장 동시성 - 동시성이 필요한 이유? 동시성은 결합을 없애는 전략이다. 즉 무엇과 언제를 분리한다. 다음은 동시성과 관련한 일반적인 미신과 오해다. 1. 동시성은 항상 성능을 높여준다. (때로 성능을 높여준다. 대기 시간이 아주 길어 여러 스레드가 프로세서를 공유할 수 있거나, 여러 프로세서가 동시에 처리할 독립적인 계산이 충분히 많은 경우에만 성능이 높아진다.) 2. 동시성을 구현해도 설계는 변하지 않는다. (단일 스레드 시스템과 다중 스레드 시스템은 설계가 다르다.) 3. 웹 또는 EJB 컨테이너 등을 사용하면 동시성을 이해할 필요가 없다. (실제로는 컨테이너가 어떻게 동작하는지, 동..
Clean Code - 3주차 이번 주 목차 9장 단위 테스트 10장 클래스 11장 시스템 12장 창발성 9장 단위 테스트 - TDD 법칙 세 가지 첫째 법칙 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙 : 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙 : 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. - Clean Code 155 Page 인용 - 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다. 적당한 테스트 코드를 작성하자. 무리하지 말자. - 깨끗한 테스트 코드 유지하기 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다. 단위 테스트란 테스트 코드이다? 유닛 테스트 (un..
ResultSet 객체의 커서를 조작하는 메소드 first() 커서의 위치를 조회 결과 값의 첫번째로 이동 last() 커서의 위치를 조회 결과 값의 마지막으로 이동 next() 커서의 위치를 순방향으로 이동 previous() 커서의 위치를 역방향으로 이동 getRow() 커서의 인덱스 값을 조회 isFirst() 커서의 위치가 처음인지 여부 조회 isLast() 커서의 위치가 마지막인지 여부 조회 beforeFirst() 커서의 위치를 가장 처음으로 이동: rs.first() 메소드의 이전 공간으로써 비어있는 공간 afterLast() 커서의 위치를 가장 마지막으로 이동: rs.last() 메소드의 이후 공간으로써 비어있는 공간 예시 rs.last(); //커서를 마지막으로 이동 result = new String[rs.getRow()][10]; ..
Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY. Operation not allowed for a result set of type ResultSet.TYPE_FORWARD_ONLY. 위와 같은 오류가 발생했다. Statement stmt = null; ResultSet rs = null; StringBuffer sb = null; try{ stmt = dbconn.create(); sb = new StringBuffer(); sb.append("SELECT * FROM TABLE\n"); System.out.println(sb.toString()); rs = stmt.executeQuery(sb.toString()); rs.last(); String[][] result = new String[rs.getRow()][6]; rs.beforeFirst(..
Clean Code - 2주차 스터디 후기 5장 형식 맞추기 @RequestMapping(value = "/rowDataMngr/rowDataMngrIndex") public ModelAndView getRowData(HttpServletRequest request, HttpServletResponse response) throws Exception{ ModelAndView model = new ModelAndView("/view/rowDataDownMngr/row_data_mngr_index.jsp"); HashMap inMap = new HashMap(); try { bindForMap(request, inMap); Map companyInfoMap = rowDataMngrService.getCompanyList(inMap); model.ad..
Clean Code - 2주차 이번 주 목차 5장 형식 맞추기 6장 객체와 자료 구조 7장 오류처리 8장 경계 5장 형식 맞추기 - 형식을 맞추는 목적 코드 형식은 중요하다! 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. - Clean Code 96 Page 인용 - 그래서 우리 회사의 코드는 10년 전의 스타일을 그대로 유지하고 있다. 처음부터 스타일과 규율을 잘 잡는 코드습관을 가지도록 하자. - 적절한 행 길이를 유지하라 신문 기사처럼 작성하라. 이름은 간단하면서도 설명이 가능하게 짓는다. 이름만 보고도 올바른 모듈을 살펴보고 있..