개발
-
리팩토링 / 마틴 파울러 - (3) Chapter 02. 리팩토링 개론개발/자습중 2018. 2. 12. 13:45
두번째 챕터는 본격적으로 리팩토링에 대한 개념을 잡는 시간이다. 리팩토링은 단순히 코드 정리 작업을 의미하지 않는다.리팩토링의 핵심은 소프트웨어를 더 이해하기 쉽게, 수정하기 쉽게 만드는 것이므로 코드 정리 작업보다는 좀 더 광범위한 개념이 될 것이다.또한 기능을 개선하기 위한 작업이 아니므로 리팩토링 전후의 소프트웨어 기능은 변하지 않는다. 따라서 리팩토링은 '성능 최적화'와 상반되는 개념이라고 할 수 있다. 왜냐하면 성능 최적화를 수행할 경우, 필요한 성능을 얻기 위해 어쩔 수 없이 코드가 더 복잡해질 수 있기 때문이다. 리팩토링을 하는 이유와 효과에 대해서는 저자가 언급한 랄프 존슨의 비유로 축약한다."....이러한 최초 단계의 리팩토링은 '우선 창 밖이 보이게 뿌연 유리창부터 닦는 일'과 같다고 ..
-
리팩토링 / 마틴 파울러 - (2) Chapter 01. 맛보기개발/자습중 2018. 2. 9. 14:13
모든 공부는 개념 정리부터 시작한다.이 책도 마찬가지로 첫 장에서 리팩토링의 개념을 짚어보고, 대충 리팩토링이 어떤 것인지 예제를 보여주고 있다.나도 모르는 사이에 리팩토링을 하고 있었다니...! 하고 놀라면서 첫 장을 정리한다. 리팩토링이란 - 겉으로 드러나는 코드의 기능은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정- 버그가 생길 가능성을 최소화하며 코드를 정리하는 정제된 방법- 코드를 작성하고 난 뒤 설계를 향상시키는 일 기억해둬야 할 점 1. 적절한 테스트 코드를 작성하는 것이 리팩토링의 기본이다. '간단한 수정 → 테스트'를 리듬처럼 반복할 때만 리팩토링을 빠르고 안정적으로 완료 가능 2. 너무 긴 메소드는 분해하여 기능을 재분배해야 한다. 코드를 잘게 쪼개면..
-
리팩토링 / 마틴 파울러 - (1) 발단개발/자습중 2018. 2. 9. 14:00
첫번째 프로젝트에 투입되었을 때는 이미 기존 개발자들이 1차 오픈 대상 기능을 80% 이상 구현해둔 상태였다. 나는 1차 오픈 이후 철수한 프리랜서들이 만들어둔 코드를 유지보수하면서 2차 오픈 대상 기능을 만들어야 했는데,공통 메소드 같은 것들은 거의 다 완성되어 있었기에 편하기도 했고, 남이 짜놓은 소스를 다시 들여다보면서 수정해야 하기도 해서 고생도 많이 했다. 하루는 급작스럽게 조건 처리 로직이 변경되면서 정기배포 2시간 전에 급하게 조건문을 수정해서 배포했다.당연히 테스트할 시간이 부족했지만 부장님이 잘못되면 책임지시겠다는 말을....바보같이 믿고 찝찝해하며 배포를 진행했다.이런 경우는 거의 95%의 확률로 배포 당일날에는 발견하지 못했던 에러를 배포 다음날에 발견한다.이 날도 역시 배포 직후 테..
-
데이터 정렬하기개발/Javascript & jQuery 2018. 2. 7. 13:58
배열 내 데이터를 정렬할 일이 생겼을 때, 편하게 sort 함수나 reverse 함수를 써서 정렬할 수도 있고괜히 정렬 알고리즘을 짜서 정렬할 수도 있다.오늘은 한가하니까 두 방법을 모두 써서 배열 내 데이터를 정렬했다. 1. Array.prototype.sort(), Array.prototype.reverse() 를 사용하여 정렬 오늘은 작정하고 공부를 하는 날이니까 여유롭게 기술문서를 보러갔다.https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort sort() 함수에 대한 기술을 먼저 보러 갔더니 눈에 띄는 구절이 있다. sort () 메서드는 배열의 요소를 적절한 위치에 정렬하고 배열을 반환합니다..
-
기본 로직을 활용하여 특별한 날 생성하기개발/Javascript & jQuery 2018. 2. 6. 16:23
다이어터에게 보상데이가 있는 것처럼, 자기 자신에게 선물을 주는 날을 만든다는 사람의 글을 봤다. 한달에 하루나 이틀 정도 날을 잡아서 그날만큼은 자기가 좋아하는 간식을 사먹는다는 그 아이디어가 정말 귀엽고 좋다고 생각했다. 하루에 만원쓰기 운동을 시작한지 며칠 안됐지만 벌써부터 지쳐가는 내 자신을 한심하게 보느니그냥 이렇게라도 숨통을 틔워줄 겸, 마침 지금 혼자서 만들고 있는 가계부 프로그램에 도입해도 좋을 것 같다는 생각도 들어서 잠깐 코드를 짜봤다. 기본적인 로직은 로또 번호 발생기와 동일하다.여기에 특별한 날을 한달에 2일 이상 잡을 경우 오름차순으로 정렬하여 출력하는 로직만 추가했다. 자바스크립트 내장함수를 몇 개 사용했는데, 이것도 나름 깊이있게 공부하려다보니 쓰잘데기없이 말이 많아져서 따로 ..
-
HTML Help Workshop 으로 도움말 파일 만들기개발/Tool 2018. 2. 5. 09:08
마이크로소프트에서 프리웨어로 배포 중인 HTML Help Workshop 을 써서 도움말 만드는 법을 잠시 탐구해봤다. 검색해보니 이 툴이 불편해서 다른 프로그램을 쓴다는 분들이 꽤 많았다.아마 이 툴에서는 이미 생성된 HTML 파일을 묶어서 chm 파일로 컴파일해주는 기능만 제공하기 때문이 아닐까 싶다....나도 HTML 파일은 테스트용으로 대충 몇 개 만든 상태에서 도움말 파일을 만들었다. HTML Help Workshop Ver 1.32 다운로드 링크 → https://www.microsoft.com/en-us/download/details.aspx?id=21138 파일들을 몰아넣을 폴더를 하나 생성해준 뒤, 이미 만들어둔 HTML 파일들을 넣어주고 HTML Help Workshop을 실행한다.Fi..
-
Spring + MyBatis + DB = 작은 웹사이트 - (9) CRUD개발/Web Project (1) - Spring MVC + java + DB 2018. 1. 28. 21:01
전체 글 목록을 읽어오는 기능과 페이징 처리 기능을 넣었으니 새로 글쓰기, 상세 데이터 조회, 글 수정, 글 삭제 기능을 구현해서 CRUD 풀셋을 완성할 차례다. 처음 밝혔듯이 원래는 상세 조회, 수정, 삭제, 입력을 모두 하나의 jsp 에서 처리할 수 있게 구현하려고 했으나...구체적인 설계 계획없이 일단 만들기 시작하다가 꼬이면서 수정, 입력을 각각의 별도 화면에서 처리하는 것으로 바꿨다. 1. 글 신규 작성 + CKEditor 삽입 목록 조회 화면에서 글 쓰기 버튼을 클릭하면 loaction.href 를 이용하여 글 작성 화면으로 이동한다 $("#toWrite").click(function(){location.href="/home/note/writeNoteView"; }); //게시물 작성 화면@R..
-
Spring + MyBatis + DB = 작은 웹사이트 - (8) 페이징 처리 로직개발/Web Project (1) - Spring MVC + java + DB 2018. 1. 26. 14:15
처음부터 페이징 처리 로직을 혼자서 짜본 적이 없어서 삽질을 좀 많이 했다.다른 분들 소스도 많이 찾아봤는데 나는 페이징 처리에 필요한 계산은 다 객체 안에 숨겨서 끝내버리고 싶고객체 계산결과에 따른 화면 처리 역시 js에서 함수로 빼서 처리하다보니 이런 결과물이 나왔다.기본 로직은 다른 분들이 공개해두신 소스와 별 차이가 없을 것....이라고 추정...한다... 실제로 사용한 페이징 객체는 아래와 같다. package common.vo; public class PagingVO {private static final int NOTE_PER_PAGE = 10;//페이지 당 게시물 수private static final int BLOCK_PER_PAGE = 5;//화면 당 페이지 블록 수private int..