최근 Service 개발에서 반복적인 Account 생성이 필요한 테스트 케이스가 있어서 작업 중 Remote Server에서 주민등록번호 Validation 을 하는 바람에 급히 검색하여 다음과 같은 내용을 알아내었다. 예를 들어 640713-1018433 이 주민번호를 예로 들어보죠 우선 주민등록번호 마지막자리수만 제외하고, 각각의 자리수마다 다음과 같은 수를 곱하여 전체를 더한다. 6 4 0 7 1 3 1 0 1 8 4 3 x x x x x x x x x x x x 2 3 4 5 6 7 8 9 2 3 4 5 ----------------------- + + + + + + + + + + + + 즉, (6*2)+(4*3)+(0*4)+(7*5)+(1*6)+(3*7)+(1*8)+(0*9)+(1*2) +(8*3)+(4*4)+(3*5) = 151 그러면 151 이란 수가 나온다. 이 151을 매직키인 11로 나누어 나머지만 취한다. 151 / 11 = 몫: 13 <-- 버림 나머지: 8 마지막 단계로 매직키인 11에서 나머지 8을 빼면 3이란 수가 나오 는데, 이숫자가 주민등록번호 마지막 자리의 숫자와 일치하면 대한민국 국민이다. 11 - 8 = 3 --> 정상적인 주민등록번호임 출처 : http://blog.naver.com/foenix/40040223161 이 내용을 다음과 같은 메서드로 만들어 보았다. public static String getSSN() { Random rand = new Random(); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(rand.nextLong()); String s1 = new SimpleDateFormat("yyMMdd").format(cal.getTime()); String s2 = null; while(s2 == null || s2.length() < 6) { s2 = Integer.toString
다음 글은 현재 속한 팀에서 공감과 개선을 이끌어 내고자 공유했던 내용이다. 비슷한 상황을 가지고 있는 사람에게 참고가 될 수 있을까해서 포스팅 해본다. 돌아보기 이상적인 개발자의 일상 출근 후 코드를 SVN으로부터 업데이트 받는다. CI 의 리포트 확인. CI 리포트에 오류가 있을 (빌드가 깨져있을) 경우 수정할 수 있다면 직접 수정후 테스트 한 뒤 commit 담당자가 수정하도록 ticket 발급 Stand up meeting 을 가지고 어제 일을 반성하고 할 일에 대해 구성원간 공유를 한다. Issue Tracker에 등록된 ticket이 있는 지 확인하고 처리한다. Story에 기반하여 자신이 할 일을 정의해 eclipse 의 task 목록에 등록한다. (Issue Tracker에 자동으로 등록된다.) 등록한 task 에 대한 test case 를 만든다. test case가 성공하도록 구현한다. 더 이상 task에 대한 구현 사항이 없다면 코드를 commit 한다. 구현 과정에서 특기할 만한 것이 있다면 wiki 에 공유. 오늘 할 일이 끝나면 퇴근. 조엘 테스트 1. Source Control(소스 컨트롤)을 사용하십니까? 예 2. 한번에 빌드를 만들어낼 수 있습니까? 아니오 3. daily build(일별 빌드)를 만드십니까? 아니오 4. 버그 데이타베이스를 가지고 있습니까? 아니오 5. 새로운 코드를 작성하기 전에 버그들을 잡습니까? 아니오 6. up-to-date(최신) 스케줄을 가지고 있습니까? 아니오 7. spec(설계서)를 가지고 있습니까? 아니오 8. 프로그래머들이 조용한 작업환경을 가지고 있습니까? 아니오 9. 돈이 허락하는 한도내의 최고의 툴들을 사용하고 있습니까? 예 10. 테스터들을 고용하고 있습니까? 아니오 11. 신입사원들은 면접 때 코드를 직접 짜는 실기시험을 봅니까? 아니오
얼마전에 제 홈페이지에 3월 21일에서 25일까지 운영된 "휴대폰 정보 조회"라는 페이지를 만든 적이 있습니다. 위 화면이 그것인데, 입력창에 전화번호를 입력하면, 해당 전화번호에 대한 정보가 아래 화면 처럼 나오게 됩니다. 휴대폰 주소록에 등록된 몇 몇 사람들의 전화번호를 입력해본 결과 LG텔레콤 사용자의 정보는 모두 검색되는 듯 했습니다. 하지만, 이 것은 제 홈페이지에서 해당 정보를 가지고 있는 것이 아니고, 구글에서 " 폰 정보 조회 "라고 검색하면 나오는 페이지 에서 이미 누구나 볼 수 있었던 것이며 (2006년부터 가능했다고 함), 저 역시 이 내용을 확인하기 위한 목적으로 거의 5분에서 10분 사이만에 이 페이지를 만든 것입니다. 단순히 해당 페이지에서 전화번호를 입력받아 링크하듯이 저 또한 똑같이 동작하도록 입력창에 전화번호를 입력받아 해당 사이트로 링크하도록 한 것입니다. 단순히 링크만 한 것이기에 이 점 문제되리란 생각은 하지 못하고, 내용확인 후 LG텔레콤에 항의하리라 다짐하고 있었습니다. 하지만, 당시가 금요일밤이었고, 월요일에 사건이 터지는 바람에 행동으로 옮기지는 못하였습니다. 다음은 이 페이지의 전체 소스입니다. (경찰에 원본을 압수당해 기억나는 대로 다시 작성한것이며 동작에는 거의 차이 없습니다.) <html> <head> <title>휴대폰 정보 조회</title> <script type="text/javascript"> <!-- function getInfo() { var number = document.phoneInfo.number.value; // 발견 지점 : http://mshop.or.kr/popwindow/pop_phoneinfo.jsp
강태훈님, 첫 포스트가 죽을뻔한 사연이라고 하셨던 게 기억나는데, 상기 포스트가 그것인가 보군요. IT난상토론에서 한팀으로 논의 진행해서 즐거웠고, 반가웠습니다. 제가 첫 코멘트를 남기는군요.
답글삭제제가 두번째 코멘트인가요? ^^
답글삭제차분하게 의견을 제시해 주시는 모습이 기억에 남는군요.
다음 기회가 있다면 더욱 좋은 시간이 될 수 있을 것 같습니다.
반가웠습니다.
태그에 사고라고 되어 있길래 난 또 그 "사고" 인줄 알았다.....ㅡ,.ㅡ;
답글삭제흐음... 발바닥에 이제 살좀 빠지겠네...
답글삭제와우감사합니다
답글삭제