분류: Uncategorized

단위테스트를 위한 주민등록번호 생성

최근 Service 개발에서 반복적인 Account 생성이 필요한 테스트 케이스가 있어서 작업 중 Remote Server에서 주민등록번호 Validation 을 하는 바람에 급히 검색하여 다음과 같은 내용을 알아내었다. 예를 들어 640713-1018433 이 주민번호를 예로 들어보죠우선 주민등록번호 마지막자리수만 제외하고, 각각의 자리수마다 다음과 같은 수를 곱하여 전체를 더한다. 6 4 0 7 1 3 1 0 1 8 4 3 … 계속 읽기 »

GAE Model Serialization/Deserialization

GAE로 개발 중 Datastore record의 snapshot을 만들기 위해 Model class의 Instance 를 Serialize 하기 위한 방법을 모색하기로 했다. Model.to_xml()을 이용하여 serialize 는 하였으나, reverse method 가 없어서 직접 구현하던 중 누군가가 이미 해놓지 않았을까 해서 검색해보니 python doc 에서 pickle 이라는 library를 사용하면 손쉽게 구현할 수 있다는 사실을 알게 되었다 더 찾아보니 appengine cookbook 에서 … 계속 읽기 »

Google App Engine Translation Funtion

import urllib import urllib import os import django.utils.simplejson as simplejson os.environ["DJANGO_SETTINGS_MODULE"] = “django.conf.global_settings” TRANSLATE_URL = ‘http://ajax.googleapis.com/ajax/services/language/translate’ def translate(input_lang, output_lang, q): params = urllib.urlencode({‘v’: ’1.0′, ‘q’: q, ‘langpair’: ‘%s|%s’ % (input_lang, output_lang)}) response = urllib.urlopen(TRANSLATE_URL, params) data = response.read() response.close() decoded = simplejson.loads(data) return decoded['responseData']['translatedText']

World of Warcraft 제작진에 내 이름이…

그동안 내 이름이 올라가 있는 지 미처 몰랐는데, 오랜만에 출근했더니 누군가 알려주더라. 아직 한 일이 많진 않지만 내 이름 석자를 확인하니 왠지 뿌듯하고, 앞으로 더욱 분발해야 겠다는 각오를 다져보게 한다.

JNDI DataSource Loading for TDD

Tomcat 등의 Servlet Container를 사용하여, 웹애플리케이션을 개발할 때, DataSource를 Servlet Container의 Context 에 JNDI Resource로 bind 하여 사용하는 경우가 많다. test case를 실행하기 위해 JNDI remote provider 를 제공하는 application server (glassfish, jboss 등)를 사용할 수도 있으나, 이러한 것은 test의 원자성을 저해하기 때문에 test 환경 자체에서 JNDI resource를 생성할 수 있는 방법을 생각해 보았다. Sun에서 … 계속 읽기 »

내가 저장 프로시저를 사용하지 않는 이유

원문 : http://codebetter.com/blogs/jeremy.miller/archive/2006/05/25/145450.aspx 나는 스스로 다른 포스트에서 저장 프로시저에 관해서는 다루지 않겠노라고 했지만, sproc에 관한 에릭의 포스트가 내 뚜껑을 열리게 하고 말았어. 애자일 이전 시기인 4년 전에, VB6/ASP 코딩을 하던 나는 에릭의 pro-sproc 입장에 열렬히 동의했으며, PL/SQL을 가득 채워서 작성했지만, 요즘 sproc 질문에 관한 나의 대답은 확고하게 “필요없음” 또는 최소한 “결백을 입증하기 전까지는 유죄” 라는 … 계속 읽기 »

Subversion Worst Practices

서브버전으로 프로젝트를 박살 내는 10가지 방법 10. 버전 제어 시스템에 대해서 논쟁한다. 집중화 또는 분산화? 완벽한 시스템을 묘사하기 위해 체크리스트를 만든다. 모든 시스템을 비교한다. 이것을 매 3년마다 반복한다. 그냥 CVS를 사용한다. 기억하라! 버전 제어 시스템은 종교이다. 9. 물 불 가리지 말고 바꿔라 테스트 하지 마 연습하지마 가능한 한 빨리 서브버전으로 교체하기만 하면 된다. 사용자에게 불평하지 … 계속 읽기 »

테스트 주도 설계에 대한 소개

이 글은 TDD를 쉽게 이해하기 위하여 Introduction to Test Driven Design (TDD) 이라는 글을 축약하여 번역한 것입니다. 테스트 주도 설계 (TDD) (Beck 2003; Astels 2003)는 테스트 선행 개발과 개발을 하기 위한 혁신적 접근이다. TDD의 기본적인 목적은 무엇인가? 어떤 관점에서는 TDD의 목적이 사양에 있지, 검증은 아니라고 한다(Martin, Newkirk, and Kess 2003). 다른 말로, 기능적인 코드를 작성하기에 … 계속 읽기 »

Struts2 에서 확장자 제거하기

Struts2에서 Action의 기본확장자는 action이다. REST의 관점에서 보면 URL은 Resource를 가리키고 있을 뿐이어서 action이란 접미어가 붙는 것은 restful 하지 않아 보인다. 그래서 struts.properties의 struts.action.extension에 아무것도 할당하지 않으면 간단히 확장자를 제거 할 수 있다. struts.action.extension= struts.properties 하지만, 이렇게 하면 welcome-file을 사용할 수 없고, *.jsp, *.gif, *.jpg등 struts action이 아닌 resource들은 접근 할 수도 없다. 그래서 다음과 같이 … 계속 읽기 »