CharSyam
Tag | Location | Media | Guestbook | Admin

'프로그래밍/실수담'에 해당하는 글(6)
2009/11/21   실수를 줄이는 방법은? (2)
2009/10/07   “절차를 체계화 하기” 보다 좋은 “절차를 자동화하기!!!”
2009/09/18   대박 실수 – 계약에 의한 프로그래밍의 필요성
2009/08/27   [WindowsMobile] RAPI 를 쓸 때, Trusted 되지 않음 프로세서는 특정 레지스트리에 못씀
2009/04/19   Temp Folder 핸들링시에 주의사항 (3)
2009/04/18   윈도우 모바일 실수담 T.T


2009/11/21 03:02 2009/11/21 03:02
실수를 줄이는 방법은?

아, 오늘도 또 대형사고를 쳐버렸습니다. 신규 서비스를 배포했는데, 바로 버그가 발견되서, 롤백해야 되는 아픈 순간이…

더더욱 문제는, 버그의 원인이, 어려운 것도 아니고, 아주 간단한 것을 실수해 버렸기 때문입니다. 그것도  두가지나!!!

첫번째는, 코드의 문제입니다. 아주 간단한 룰을 꺼꾸로 써버려놓고, 대충 테스트를 하고(딱 버그가 일어나기 직전까지만…) 아 문제없다라고 생각하고 넘어가버렸습니다. 반대로, 그 제대로 테스트를 했을 경우에는 해당 버그가 발생하지 않는 케이스 였다라는게 더더욱 문제였습니다.

QA 기간에 QA에서 버그를 발견하지 못하는 것은 QA의 책임은 아니라고 생각합니다. 개발자가 변경 사항에 대해서 더 자세히 알려주고, 테스트케이스에 대해서 고민했다면… 아마도 쉽게 발견했을지도 모르겠습니다. 일단, 저는 이번에 그러지 못했습니다.

두번째는, 배포직전에 백업을 조금 잘못해서, 롤백하는데 대략 1~20분 정도 시간이 걸렸습니다. 사실 이 부분도 큰 문제라고 생각합니다. 1번의 실수는 그래도 단지 실수일 뿐이지만… 두번째는 잘못된 행동이기 때문입니다.

물론, 어떻게 보면, 변명의 여지도 있습니다. 아주 바뻐서, 모두 다 제대로 챙기기에는 힘들었을 수도 있습니다. 하지만… 제대로 해야 하는 것들을 제대로 하지 못한 것을 단지 실수로 여기기 보다는, 여기서 개선점을 찾아내야 한다고 생각합니다.

그래서 “회고” 가 있는 것이겠죠.

이제부터는 기능을 구현하기 전에, 이것을 어떻게 테스트 해야 잘 할 수 있는가 부터, 고민을 해야겠습니다. 그리고,  할 수 있는한, 점검표를 만들어서 실제로 점검하면서 할 수 있도록 해야겠습니다.(단순 반복 작업)

그리고 귀찮다고 대충하는 것은 정말정말 피해야겠습니다.



2009/10/07 03:10 2009/10/07 03:10
“절차를 체계화 하기” 보다 좋은 “절차를 자동화하기!!!”

우리는 반복되는 작업의 실수를 줄이기 위해서 작업의 절차를 체계화하는 작업을 하게 됩니다.

항상 빌드시 마다, 리소스의 버전을 올린 다음 배포한다고 할 때, 그냥 담당자가 알아서 할 수

있습니다. 그런데, 담당자가 차례를 잘못 기억할 수 도 있고, 담당자가 아닌, 다른 사람이

해당 작업을 수행해야 하는 경우도 생길 수 있습니다.

  그렇다면, 이런 과정에서 실수하게 되는 것들을 어떻게 하면, 줄이거나, 아예, 제로로

만들 수 있을까요?

첫번째는 해당 작업을 체계화 또는 순서화 시키는 겁니다.

예를 들어, 다음과 같은 간단한 체크 리스트를 만들 수도 있습니다.

순서 확인
1. 리소스의 버전 업 하기  
2. 빌드 하기  
3. 빌드 결과물 인증하기  
4. 인증한 결과물 인증 확인  
5. 결과물 설치 파일 만들기  
6. 서버에 결과물 배포  

이제 우리는 해당 작업을 할 때 마다, 위의 체크 리스트를 확인 해서, 실수를

줄일 수 있습니다.

그런데 이렇게 체계화 하는 것보다 더 좋은 방법이 있습니다.

그것은, 위의 절차를 자동화 시켜버리는 것입니다.

build 라고 치면, 자동적으로 리소스의 버전을 업하고, 빌드하고, 해당 결과에 인증서를

통해서 인증하고, 설치 파일을 만드는 것입니다. 이렇게 될 경우, 사람이 위의 체크리스트

기반으로 체크하는 것보다, 훨씬 빠르게 진행할 수 있습니다. 그리고 해당 시간에, 작업자는

배치 스크립트등만 가볍게 돌려주고, 자신은 다른 작업을 할 수 있습니다.

이렇게 자동화를 할 수 있는 것들에는 여러가지가 있을 수 있습니다.

1. 유닛테스트 실행하고, 결과 리포트 하기

2. 한방 빌드

3. LOC 나 Code Coverage 측정

이렇게 점점 자동화를 하고 나면 생기는 장점을 다시 정리하면

1. 작업자의 실수를 줄여준다. 품질이 올라간다.

2. 작업자의 시간을 아껴준다. 그 시간을 자기계발등으로 쓸 수 있다.



2009/09/18 01:08 2009/09/18 01:08
대박 실수 – 계약에 의한 프로그래밍의 필요성

메모리를 많이 쓰면 저 세상으로 황급히 가시는 프로그램때문에, 최대한 메모리를 아끼는

(그러기에는 이제는 너무 string 객체에 익숙해져 버렸지만…) 작업을 해야했다.

다행히도, 동시에 그 객체를 건드리는 일이 없었기 때문에, 아이디어가 나온게, 정적으로

한번만 할당하고, 계속 그 메모리를 이용하자였다.

그리고 이 메모리를 끊어서 줘야 하는 경우가 생겼는데, 이를 위해서 간단히 한 바이트를

기억해두고, 0으로 변경 후, 전송하고, 다시 원래대로 돌리는 작업을 하게 되었다. 그런데,

그러니 문제가 생겼다. –_-, 깜빡하고 마지막에 되돌리는 것을 잊은 것이다. –_-

 

중간에는 잘 나오니, 테스트도 쉽게 넘어가 버리고… 마지막에 혼자서 대박 버그를 만들어

버린것이었다.

 

이 때 배운 교훈,

1. 같은 흐름의 동작이라면, 나뉘기 보다는 하나로 구성해라.

뭐, 컴파일 시점에 속도를 조금이라도 더 올리기 위한것이 아니라면, 같은 조건이 들어가야

하는 함수들은 하나로 묶어두는 것이 좋다.(즉, 한군데만 고치고 다른곳에 적용이 안되는

케이스다 T.T, 로직이 다른 형태로라도 여러군데 있으면 안되고, 한군데서 처리해야 한다.)

2. 실수 할 수 있는 부분을 미리 정의하자.

이번 실수는 충분히 예상할 수 있던 부분이었다. 일이 바뻐서, 중간에 까먹기 때문에 생기는

문제라. 미리 완료해야 할 목록으로 만들어 두었다면 충분히 사전에 막을 수 있었다.

TDD를 한다든지나 Code Review를 한다든지, 이번 실수는 Code Review 와 Test 를

했음에도 불구하고, 대충하면 –_- 큰일난다라는 것의 교본이다. T.T

온라인 코드리뷰는 조금 힘든 듯, 작성자로 부터 설명을 듣고, 그 이후에 맞는 지 확인하는

것이 더 좋다라는 T.T



2009/08/27 00:17 2009/08/27 00:17
[WindowsMobile] RAPI 를 쓸 때, Trusted 되지 않음 프로세서는 특정 레지스트리에 못씀

말 그래로 입니다.

 

Windows Mobile 프로그램을 쓰다 보면, ActiveSync로 설정을 단숨에 바꾸고 싶어하는 경우가 생깁니다.

 

그러나!!! 몇일 삽질하다 보니, 신뢰받지 못하는 프로그램(아마도 인증을 받지 못한 프로그램은) 레지스트리

 

특정 영역에는 쓰기 권한이 없어서, Write 가 되지 않습니다 -_-

 

그냥 포기하고, Windows Mobile 안에서 실행되게 하는게 좋을 듯 합니다.

 

ps. GeoTrust 가격이 워낙 비쌉니다. 한번에 25000원...

Tag : , , ,


2009/04/19 00:22 2009/04/19 00:22
Temp Folder 핸들링시에 주의사항

보통 임시로 Temp 디렉토리에 파일을 쓰고, 파일이 여러개면 해당 파일을 날리는 작업을 할 때가 있다.

예를 들자면,

  • 백신등에서의 PC최적화
  • 개인적으로 Temp를 삭제하는 프로그램의 경우

위의 케이스가 일반적인 경우에는 전혀 문제가 되지 않지만, 때로는 정말 치명적인 문제를 일으킬 수 있다.

그것이 무엇인가? 라고 생각한다면 바로 두둥~~~~

Temp 폴더를 C:\, D:\ 이런 곳으로 설정해서 쓰는 사람들이 있다는 것 –_-, 일부러 그런 것인지, 아니면 실수인지는 모르겠지만, 위와 같은 경우가 꽤 있다. 이런 경우에 그 PC는 바로 날라가는 것!!!

프로그래밍적이라기 보다는 간과하고 넘어가기 쉬운 일인데, 절대적으로 피하는 것이 좋다.

나 같은 경우는 무조건, Temp를 써야하면, 임의로 temp 안에 새로운 임시 폴더를 만들고 그곳을 이용하고 해당 폴더를 삭제한다. 주의하자.

오늘 스터디 하다가 나왔던 실수담 중에 하나라는 ^^



2009/04/18 23:43 2009/04/18 23:43
윈도우 모바일 실수담 T.T

사실 윈도우 모바일과 윈도우 프로그래밍은 비슷하다. 뭐, 경험이 아직 일천해서, 몇 가지 부분을 빼고는 아직까지는 많이 비슷하다. (그 약간의 차이에 물론 몇 일에서 몇 시간 까지 삽을 몇 번 많이 뜨긴 했다.)

예를 들어서 이런 것이다. WideCharToMultiByte 라든지 MultiByteToWideChar 의 경우 옵션이 몇 가지 있다. CP_ACP(현재 자신의 윈도우 OS 언어셋으로 처리한다.) CP_UTF8(UTF-8로 처리한다. 유니코드므로 언어에 상관없다.)

위의 CP_ACP의 경우 즉, 한국어 윈도우즈면 EUC-KR로 영문이면 영어로, 일본어면 EUC-JP 로 동작하게 된다. 그런데, 괜히, 한글 에뮬레이터만 쓰다가 영문 에물레이터를 잠시 썼는데, 위의 사실을 까먹은 것이다.

즉, 영문 윈도우 모바일 에뮬레이터를 쓰면서, CP_ACP로 유니코드가 한글로 변환이 안 된다고 몇시간을 허비했다. T.T

딴사람들은 이런 실수를 안 했으면 한다. 즉, CP_ACP는 해당 국가 OS에서는 해당 국가 셋만 지원한다.



BLOG main image
CharSyam
 Notice
 Category
전체 (90)
(19)
(3)
프로그래밍 (61)
게임 (1)
Server Setting (5)
대학원 (1)
 TAGS
죽음의 행진 윈도우즈 모바일 구글테스트 회계 부정 공짜경제학 MACOSX 일일빌드 C# CeRegSetValueEx 문제 프로젝트 지속적인 통합 촘스키 세월이 젊음에게 모듈 분할 뷰 이미지로드 경제학 3.0 CAB 지식인의 책임 구본형 주식 Design Pattern RAPI DTM_SETIMAGE 디자인패턴 정제 뷰패킷 XML 고수 DQ4 Window Mobile 6
 Calendar
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 Recent Entries
YES24 총알 배송 광고
CMake – CMakeLis...
Autotools 관련 좋은 링...
고수와 전문가의 차이
Zookeeper 설치 방법
 Recent Comments
오~ 이 책도 땡기는군요...
ohyecloudy - 05/25
항상 정리해야 되는데,...
CharSyam - 05/13
잘 정리하셨네요. ^^
고감자 - 05/12
네, 저도 동감합니다....
CharSyam - 2009
http://www.thisisgame....
ParkPD - 2009
 Recent Trackbacks
Discount patio furniture.
Discount furniture.
Furniture competition.
Furniture design compe...
Acomplia ribona.
Acomplia.
Premarin.
Premarin vaginal cream.
스크럼과 XP
The note of Legendre
 Archive
2010/07
2010/06
2010/05
2010/04
2010/03
 Link Site
 Visitor Statistics
Total : 38342
Today : 44
Yesterday : 73
rss
Powered by Tistory & Designed by webnoon.net