최근 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
이전 이야기 보기 다음 미디어개발팀 입사 후 내가 속한 조직은 미디어본부 미디어개발팀이었다. 미디어다음을 주력으로 생활, 여성, 법률, 어린이 서비스 등 다음의 주요 컨텐츠 서비스를 담당하는 팀. 나와 같은 날 입사한 미디어본부 입사동기는 나 포함 총 다섯명. 아쉽게도 이름은 기억나지 않는다. 출근 후 팀원분들과 식사를 마치고 지형님은 사무실 구경을 시켜주셨는데, 역삼동의 데이콤 빌딩 구석 구석을 둘러보며 생각보다 큰 회사 규모에 압도되었다. 구경이 끝난 뒤 팀 자리에서 컨설팅 해주시는 분이라며 얼핏 보기에 도인 비슷한 분위기를 풍기는 한 분을 소개 받게 되었는데, 지형님께서는 유명하신 분인데 내가 알아보지 못하는 것을 의아해 하셨다. 그분은 김창준(현. 애자일 컨설팅)님으로 이후에 직간접적으로 내가 프로그래머로서 의미 있는 삶을 사는데 많은 영감을 주셨다. 자세한 이야기는 뒤에 하겠다. 얼마뒤 지형님은 데이콤 빌딩 말고 또 다른 곳에 다음커뮤니케이션의 공간이 있다고 나를 데리고 택시를 타셨다. 목적지는 KIDC. 그곳을 구경하며 생각보다 서버가 어마어마 하게 많다는 사실에 감격에 젖었다. 이전에 내가 본 서버 장비라곤 많아야 5대 정도였는데, 손으로 셀 수 없을 만큼 어마어마한 양에 압도될 수 밖에... 그곳을 담당하고 계신 엔지니어께서 daum.net 메인 페이지를 담당하는 서버를 보여주셨는데, 단 세 대의 웹서버와 다음 고유의 기술로 엄청난 트래픽을 감당하는 것을 자랑스러워 하셨고, hot-plug 라는 신기한 개념도 시연해주셨다. 이 분이 훗날 나와 함께 블로그 서비스를 개발한 신승철(현. YouNoodle) 님이시다. 아주 개성이 강해서 인상에 크게 남았다. 우리 팀에서 내가 처음 맡게 된 업무는 어린이 서비스 중 <날개 쪽지> 라는 아주 단순한 서비스였는데, 기획서를 받아든 나는 여기서 큰 도전에 직면하게 된다. 다음커뮤니케이션은 웹 개발에 Java를 주로 사용하고 있었다. 이전에 Java 를 해보기는 했지만, 실
다음 글은 현재 속한 팀에서 공감과 개선을 이끌어 내고자 공유했던 내용이다. 비슷한 상황을 가지고 있는 사람에게 참고가 될 수 있을까해서 포스팅 해본다. 돌아보기 이상적인 개발자의 일상 출근 후 코드를 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. 신입사원들은 면접 때 코드를 직접 짜는 실기시험을 봅니까? 아니오
강태훈님, 첫 포스트가 죽을뻔한 사연이라고 하셨던 게 기억나는데, 상기 포스트가 그것인가 보군요. IT난상토론에서 한팀으로 논의 진행해서 즐거웠고, 반가웠습니다. 제가 첫 코멘트를 남기는군요.
답글삭제제가 두번째 코멘트인가요? ^^
답글삭제차분하게 의견을 제시해 주시는 모습이 기억에 남는군요.
다음 기회가 있다면 더욱 좋은 시간이 될 수 있을 것 같습니다.
반가웠습니다.
태그에 사고라고 되어 있길래 난 또 그 "사고" 인줄 알았다.....ㅡ,.ㅡ;
답글삭제흐음... 발바닥에 이제 살좀 빠지겠네...
답글삭제와우감사합니다
답글삭제