본문 바로가기

전체 글

[ Refactoring ] Inline Temp 간단한 수식의 결과값을 가지는 임시 변수가 있고, 그 임시 변수가 다른 리팩토링을 하는데 방해가 된다면 이 임시변수를 참조하는 부분을 모두 원래의 수식으로 바꿔라 double basePrice = anOrder.basePrice(); return (basePrice > 1000) return (anOrder.basePrice() > 1000) 동기 대부분의 경우 Inline Temp는 Replace Temp with Query의 한 부분으로 사용된다. 진짜 동기는 그쪽에 있다. Inline Temp가 자신의 목적으로 사용되는 유일한 경우 메소드 호출의 결과값이 임시 변수에 대입되는 경우 임시 변수가 Extract Method와 같은 리팩토링에 방해가 된다면 인라인화 하라 절차 임시 변수를 final로 선.. 더보기
[ Refactoring] Inline Method 메소드 몸체가 메소드의 이름만큼이나 명확할때는 호출하는 곳에 메소드의 몸체를 넣고, 메소드를 삭제하라 int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; } int getRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; } 동기 이럴때는 메소드를 제거한다. 때로는 메소드의 몸체가 메소드의 이름만큼이나 명확할때가 있다. 메소드의 몸체를 메소드의 이름만큼이나 명확하게 리팩토링 할수도 있다. 필요없는 인디렉션은 짜증나게 한다 메소드가 잘못 나뉘어졌을때 메소드를.. 더보기
[Refactoring] Extract Method 그룹으로 함께 묶을 수 있는 코드 조각이 있으면 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아낸다. void printOwing(double amount) { printBanner(); //print details System.out.println ("name:" + _name); System.out.println ("amount" + amount); } void printOwing(double amount) { printBanner(); printDetails(amount); } void printDetails (double amount) { System.out.println ("name:" + _name); System.out.println ("amount" + amount).. 더보기
[ openfire ] 2010.11.22 Roster 삭제 현상. 클라이너트 패치 때문에 잠깐 로그아웃했다가 다시 접속을 하였는데 친구리스트 삭제 현상 발생. 원인 : 파악중... 원인파악 가설 : 1. 테스트 한다고 지웠는데 마치 현재 발생한것 처럼 느끼는 것은 아닌가? ( Roster Table 친구삭제시 로그추가 요함) 2. 실제로 지웠졌다? (모두 특정 유저만 삭제되었다.) 1) 클라이언트 오작동으로 해당 친구 리스트 모두 삭제? 더보기
[ openfire ] 메신져 관련 데이터 정리 접속하는 유저들이 점점 많아지고 있는 관계로 정리를 할 필요성을 느끼고 있고, 그에 따른 내용을 블로그로 옮겨서 정리하도록 할까 합니다. 메신져 유저 증가로 인하여 메신져 부담감이 점점 증가하고 있습니다. 문제점 : * 유저 증가로 인하여 DB에 부담이 증가하지 않는가? * 최대 접속 인원은 어디까지 가능할 것인가? * 친구추가 / 채팅추가 / 친구삭제 / 친구 찾기 / voice 채팅 원할하게 동작하는가? 현재 문제점을 하나 둘씩 발견을 하게 되고 해결해 나가고 있는 상황입니다. 그리 좋은 상황은 아닙니다. 일단 가장 큰 문제점은 순간 최대 접속은 4천8백까지 받았습니다. 문제는 그 이상을 받아서 테스트를 하고 싶지만, 문제는 그 이상 증가하지 않습니다.ㅡ.ㅜ 테스트 환경은 다음과 같습니다. * pos.. 더보기
openfire 세팅과 피진 메신져 연동. * http://www.igniterealtime.org/projects/openfire/ 오픈파이어를 다운로드 받은 후, 포트 변경(?) 또는 기타 플로그인을 올려 좀더 원할한 환경을 제공하고 있습니다. 몇몇 분들이 서버 세팅은 어떻게 하느냐 또는 어떻게 운영이 되냐 물어보시는데요. 일단 저의 테스트 환경은 상당히 크다는 점 말씀드립니다. 지금 문제가 있긴 합니다만, 아직 미결 과제로 열심히 분석중입니다. 기본적으로 몇 만이 건딜수 있다고 합니다..하지만 저는 ㅠㅠ 최고 4천7백 조금 넘겨봤습니다. 클라이언트도 C++ 로 만들었는데 뭔가 로직이 잘못됬는지 아니면 다른부분들이 잘못된지 모르겠지만 실제 7천이 있다면 그중 5천정도 받구 나머지는 떨구는 문제가 있어서 지금 열심히 분석중이구요. 일단 모르시면.. 더보기
[ SVN ] Svn 경로 변경. remote server의 svn 경로가 변경이 되는 경우, 귀찮으시면 소스를 내려받거나 합니다. 만약에 작업물이 존재한다면 기존 프로젝트의 경로를 svn remote 서버의 주소와 연결해야 하는 문제가 있습니다. tingcobell@tingcobell:~/igloo/openfire> svn info Path: . URL: svn://10.10.5.105/igloo/trunk/messenger/msg_src Repository Root: svn://10.10.5.105/igloo Repository UUID: d9ef06db-e32a-0410-b4ec-d749159bc6b0 Revision: 15731 Node Kind: directory Schedule: normal Last Changed Author.. 더보기
Postgresql pg_hda.conf 환경설정. 요즘 미친듯이 바뻐서 정말로 오랜만(?) 거의 한달 만에 포스팅 하는것 같아요. 정말 정말 미친듯이 바쁘게 하루 하루 보내고 있습니다. 하루하루가 고달프면서 잠을 청할때는 ㅡㅜ 이 바닥 언제 떠나나 하면서 깜빡하면 해는 뜨고... 하루하루 의식이 몽롱해지네요.. 쫌... 정신좀 차려야 하는데... this file is usually located in $PGDATA directory, but not always (hi, “genius, let’s do it differently” debian guys). if you’re using modern postgresql you can check where the file is located: # show hba_file ; hba_file ----------.. 더보기