|
재미있는 글을 보고서.. 나도 포스팅 알다시피, 비트연산자 << n 은 n 비트 만큼 왼쪽으로, >> n 은 n 비트만큼 오른쪽으로 비트를 이동(shift) 한다는 의미이다. 예를 들어, int n = 1; n =<< 1; 위와 같이 하면 n 의 값은 1 비트씩 왼쪽으로 밀려서 답이 2 가 된다. ( 일반적으로 2^n 값을 곱하거나 나눌 때, 비트 연산자를 종종 활용한다. 비트연산의 장점은 비트 단위에서 직접 조작하므로 일반 사칙연산보다 더 빠르다는 것.. 단, 이러한 연산법은 양수일 경우에만 제대로 동작한다. 자세한 내용은 아래 다시 설명 ) 그러다면 아래와 같은 비트 연산의 결과는 어떻게 될까? ( 테스트 환경은 Intel 계열 CPU ) Quiz 1) int n = 1; n =<< 31; cout << n << endl // n 은 얼마?? Quiz 2) int n = 1; n =<< 32; cout << n << endl // n 은 얼마?? Quiz 3) int n = 1; n =<< 33; cout << n << endl // n 은 얼마?? Quiz 4) int n = -2; n =<< 31; cout << n << endl // n 은 얼마?? Quiz 5) int n = -256; n =>> 31; cout << n << endl // n 은 얼마?? Quiz 6) int n = -256; n =>> 33; cout << n << endl // n 은 얼마?? Quiz 7) int n = 1; n <<= -123; cout << n << endl // n 은 얼마?? C99 표준문서 의 6.5.7 Bitwise shift operators 를 보면 다음과 같이 정의되어 있다. If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined. The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with zeros. If E1 has an unsigned type, the value of the result is E1 * 2^E2, reduced modulo one more than the maximum value representable in the result type. If E1 has a signed type and nonnegative value, and E1 * 2^E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined. The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral part of the quotient of E1 / 2^E2. If E1 has a signed type and a negative value, the resulting value is implementation-defined. 우측 피연산자 값이 음수이거나 좌측 피연산자의 범위보다 큰 경우의 행위는 정의되지 않았다 (undefined) E1 이 양수인 경우에는 E1 << E2 는 E1 을 E2 비트만큼 왼쪽으로 이동, 이 것은 E1 에 2^E2 을 곱한 것과 같다. E1 이 음수인 경우의 동작은 정의되지 않았다. E1 이 양수인 경우 E1 >> E2 역시 E1 을 E2 비트만큼 오른쪽으로 이동, 이것은 E2 를 2^E2 를 나눈 것과 같다. 그러나, E1 이 음수인 경우, 결과는 구현에 따라 달라진다 (implementation-defined) 결국, C99 표준에 정의되지 않은 사항은 CPU 명령어 정의에 따라 달라지게 되는데... Intel CPU 에서의 동작은 다음과 같다. 우선, << , >> 연산자의 오른쪽 피연산자는 short 일때 4 자리(0 ~ 15까지), int 일때 5 자리(0 ~ 31 까지), 64 비트형인 long long 일때 6 자리 (0 ~ 63 까지) 의 범위에 대해서만 유효하다. 다시 말하면 오른쪽 피연산자는 short 일때 하위 4 비트만 사용하며, int 일때 하위 5 비트만 사용하며, long long 일때 하위 6 비트만 사용한다. 쉬프트 연산은 왼쪽 피연산자 값의 범위 (비트 길이) 내에서만큼만 쉬프트 연산이 이루어진다. 즉, Quiz 2 의 n <<= 32 에서 32 는 100000 이 되고, 하위 5 비트는 00000 이므로 n <<= 32 는 n <<= 0 과 같다. Quiz 3 의 n <<= 33 는 33 이 100001 이며 이중 하위 5 비트는 00001 이므로 n <<= 33 은 n <<= 1 과 같아지는 것이다. n << x 이면 일반적으로는 n 이 2^x 만큼 곱한 것과 같아지게 되는데, Quiz 1 의 경우는 1 << 31 의 답이 1 * 2^31 이 아닌 -2147483648 ( -1 * 2^31 ) 이 된다. 이렇게 되는 이유는 int 의 경우 최상위 비트가 부호 비트가 되어 부호 비트가 0 에서 1 로 바뀌면서 음수값을 취하게 되기 때문이다. ( 최상위비트 참고 ) Quiz 1 의 결과 00000000 00000000 00000000 00000001 // 1 을 10000000 00000000 00000000 00000000 // 31 만큼 좌측을 이동, 부호 비트가 1 이 되며 답이 -2147483648 만약 n 이 unsigned int 였다면, 답은 양의 정수 2147483648 이 된다. Quiz 2 의 결과 00000000 00000000 00000000 00000001 // 1 을 00000000 00000000 00000000 00000001 // <<= 32 는 <<= 0 과 같으므로, 결과는 변함 없어 답은 1 Quiz 3 의 결과 00000000 00000000 00000000 00000001 // 1 을 00000000 00000000 00000000 00000010 // <<= 33 는 <<= 1 과 같으므로, 결과는 1 비트 좌측이동하여 답은 2 Quiz 4 의 결과 11111111 11111111 11111111 11111110 // -2 을 00000000 00000000 00000000 00000000 // <<= 31 로 31 만큼 좌측 이동. 결과는 0 이 된다. 왼쪽 피연산자가 음수인 경우에 << 의 경우는 왼쪽으로 비트를 이동하면서 0 으로 채운다. 그런데, implementation-defined 되 있는 >> 연산자는 동작방식이 다르다. << 연산자의 경우 양수/음수 모두 이동한 자리를 0 으로 채운다. 반면에 >> 연산자의 경우 양수일 경우에는 오른쪽으로 비트를 이동하면서 이동한 자리는 0 으로 채우는데, 음수일 경우에는 이동한 자리를 1 로 채우게 된다. 그래서 Quiz 5 의 경우 오른쪽으로 이동하고 난 후의 남은 31개 비트를 모두 1 로 채우므로 답은 -1 이 된다. Quiz 5 의 결과 11111111 11111111 11111111 00000000 // -256 11111111 11111111 11111111 11111111 // 31 만큼 우측 이동, 음수의 경우 이동한 자리는 1 로 채워짐. 답은 -1 Quiz 6 의 결과 11111111 11111111 11111111 00000000 // -256 11111111 11111111 11111111 10000000 // 33 만큼 우측이동, >> 33 은 >> 1 과 같아서 답은 -128 >> 연산자 역시 << 연산자와 마찬가지로 int 의 경우 오른족 피연산자의 하위 5 비트에 해당하는 값만큼만 이동을 한다. 그러므로 int n 의 경우 n =>> 33 은 n=>> 1 과 같아진다. 음수일 경우 >> 연산을 하여 이동한 자리를 0 이 아닌 1 로 채우는 이유는 아마도 n =-2, n >>= 1 일때 n = -1 이 되는 것과 같이 음수인 경우 나눗셈 연산이 정상적으로 동작하도록 하게 하려는 의도였을 것이다. 하지만 음수는 2 의 보수로 계산되기 때문에 음수인 경우에는 n 비트 쉬프트 연산의 결과가 2^n 곱셉/나눗셈의 결과와는 동일하게 동작하지 않는 경우도 종종 생긴다. ( 2^n 꼴의 수가 아닌 경우 이러한 경우가 발생 ) 예를 들면 n = -10 일때 n =>> 3; 의 결과는 n /= 8; 과는 다른 결과가 나온다. ( n =>> 3 이면 n = -2, n /= 8 이면 n = -1 ) 11111111 11111111 11111111 11110110 // -10 11111111 11111111 11111111 11111110 // 우측으로 3 비트 이동한 후의 결과, -2 가 됨 끝으로, Quiz 7 과 같이 쉬프트 연산에 있어서 오른쪽 피연산자의 값이 음수일 경우 역시 오른쪽 피연산자의 하위 5 개 비트의 값에 해당하는 크기만큼만 비트 이동을 하므로, -123 이 11111111 11111111 11111111 10000101 이며 이중 하위 5 비트는 00101 이므로 결국 n <<= -123 은 n <<= 5 와 같다. 그러므로 1 <<= 5 한 결과는 32. 비트연산은 다양한 최적화 테크닉에 있어 중요한 부분을 차지하고 있고, 의외로 많은 사람들이 헷갈려 하는 부분이당( 나 포함 )... 'IT Story > Programming Language' 카테고리의 다른 글
|
BLOG ARTICLE Programming | 17 ARTICLE FOUND
- 2008/10/24 비트 이동 연산자 ( << , >> ) 의 결과
- 2008/10/15 최대공약수(GCD) 와 최소공배수(LCM) (7)
- 2008/10/12 웹페이지에 있는 원하는 파일 자동 다운받기 (12)
- 2008/10/02 2008 ACM-ICPC Asia Regional Contest - Seoul (제8회 대학생 프로그래밍 경시대회)
- 2008/07/28 2008 구글 코드 잼 (Google Code Jam) 2라운드 진출! (3)
- 2008/07/17 2008 Google Code Jam Begins! (4)
- 2008/07/13 C++ 과 C# 의 차이... (4)
- 2008/07/12 2008 ACM-ICPC Asia Programming Contest - Seoul 대회 일정 발표 (2)
- 2008/06/03 제 1회 자바 알고리즘 경진대회 결과 (7)
- 2007/11/05 2007 ACM-ICPC Asia Programming Contest - Seoul 대회 결과
- 2007/09/30 int main() vs void main() (7)
- 2007/09/12 Google's Plans for Google Code Jam
- 2007/09/01 [Book] 조엘 온 소프트웨어 (Joel On Software)
- 2007/07/22 온라인 프로그래밍 경시대회 TopCoder 소개 (14)
- 2007/07/02 ACM ICPC 문제 풀지말라?? (4)
- 2007/06/19 프로그래머의 위기지학
- 2007/06/17 Agile 방법론 세미나 ( with 김창준 ) (1)
|
'Contest > Algorithm' 카테고리의 다른 글
|
|
문제 - 모 웹사이트에서 다른 사람이 올린 내가 찍힌 사진을 다운받을 일이 생겼다. 'IT Story > Gossip' 카테고리의 다른 글
|
-
FlashGet v1.96.1073 : 최고의 다운로드 가속기
FROM 동해랑: 동해바다의 파도... 浪 2008/10/12 08:55 삭제FlashGet v1.96.1073.exe 본 프로그램은 사용에 아무런 제한이 없는 쉐어웨어입니다. 하나의 파일을 여러개로 나누어 다운로드를 받음으로써 전송속도를 증가시키는 원리를 사용하여 매우 많은 인기를 얻고 있는 "FlashGet" 입니다. ☞ 개선사항 ㆍ BT 모듈 최적화 ㆍ 그외 소소한 버그 수정 및 개선 "Download Accelerator", "GetRight" 와 같은 성격의 프로그램으로 다운로드 속도 증가와 더불어 여러 개의 다운로..
-
Firefox3 Add-on: DownThemAll!: 대량 다운로드용
FROM 동해랑: 동해바다의 파도... 浪 2008/10/12 08:55 삭제소개처 : https://addons.mozilla.org/ko/firefox/addon/201 제작처 : http://www.downthemall.net/ 용도 : 대량 다운로드 도구 Flashget의 그것과 꽤나 비슷해보인다... 현재 탭/모든 탭 또는 드래그(drag)한 부분에 있는 링크로 연결된 것을 다운로드 받게 해준다. 굳이 자신이 지금껏 다운로드했던 DB[각주:1]를 계속 이어나가고자 한다면.. 굳이 이 플러그인을 쓸 필요는 없겠지만....
-
-
김준형 2008/10/20 15:30 댓글주소 수정/삭제 댓글쓰기
http://www.hira.or.kr/rdc_hospsearch.hospsearch.do?method=hospital&pgmid=HIRAA030101000000
죄송합니다만 위 주소에서 검색결과를 다운받거나 엑셀파일로 변환할 방법은 없을까요?
치과만 다운받을려는데 너무 노가다네요
검색결과랑 링크되어있는 2단게페이지까지만 좀 받고싶은데 죽을맛입니다.
부탁드리겠습니다.
우편물 발송목적으로 정보를 옴겨야되는데 암담하네요 ㅠㅠ -
임수창
2008/10/22 01:59
댓글주소
수정/삭제
댓글쓰기
질문이 있습니다.
어떻게 웹페이지에 서류파일을 걸어놓고 사람들이 클릭하면 다운로드 받게할수 있냐요?
contact@gorillapaper.com -
-
디믹 2008/11/17 02:04 댓글주소 수정/삭제 댓글쓰기
감사합니다.

언젠가 블로깅하다 이포스트를 지나치듯 보고 다시 기억을 떠올려 겨우겨우 검색해서 찾아왔어요 -ㅅ-;;;
구글에서 "1.jpg 이미지 일괄 다운" 로....
1.jpg 라는 단어가 큰 역활을 흐흐;;;
|
2001 년부터 ACM-ICPC(세계 대학생 프로그래밍 경시대회) 아시아지역 대회와 겸해서 치뤄지는 전국 대학생 프로그래밍 경시대회, 올해도 어김없이 개최된다. 2008 년 11월 6일 - 11월 7일, 백범 김구 기념관. 새정부 들어 정보통신부가 없어져서, 그 전까지 본 대회를 주관하던 정부 주무부서가 정보통신부에서 행정안전부로 바뀌었다. ( 개인적으로는 교육과학기술부가 담당하는 것이 맞지 않나 싶었지만... 알아보니 정부부처가 통폐합되면서 기존에 정보통신부에서 맡아오던 IT 관련 업무가 행정안전부로 이관되었다고. ) 주최는 행정안전부, 대회 메인 스폰서는 IBM. ( IBM 은 Regional Contest 에서는 별 존재감이 없긴 하지만... ) Secondary 스폰서는 예년과 마찬가지로 NHN 이 맡고 금년들어 Nexon 이 새로 스폰싱을 한다. 이런면을 보면 알고리즘 문제풀이 경시대회의 가치에 대해서 IT 기업체들도 그 중요성을 공감하는 분위기가 확산되는 듯 하여 흐믓하다. 올해의 경우 대회 포스터가 꽤나 맘에 들게 나왔다. C / C++ / Java 라는 대회 사용언어와 "Think / Create / Solve" 라는 대회의 슬로건을 잘 형상화 한 듯. 한편, 본 대회와 관련해서는 2 가지 article 에 대해서 써야 하는데... 2008 년 IT 대학생 프로그래밍 경시대회 ( 교내대회 ) 2008/09/20 전국대학생 프로그래밍 경시대회 및 ACM-ICPC Asia Regional Contest 의 국내 예선, ICPC Korea National Programming Contest, 2008/09/27 포스팅 거리가 자꾸 밀리는 군.. -0- 'Contest > ACM-ICPC' 카테고리의 다른 글
|
|
'Contest > Google Code Jam' 카테고리의 다른 글
|
|
구글에서 전세계 프로그래머들을 대상으로 주최하는 프로그래밍 경시대회, Google Code Jam (이하 GCJ) 이 오늘 (7월 17일) 시작되었다. 구글 코드 잼 홈페이지 구글 코드 잼 2008 개최 - 구글코리아 공식 블로그의 소개글 구글 코드 잼 2008 임박... 전세계 프로그래머들의 경연장 2007 년에는 Google Code Jam - Latin America 대회만 열렸는데 ( 라틴 아메리카 국가의 사람들만 참가가 가능한 지역 대회 ), 구글은 이 대회를 끝으로 더이상 기존의 TopCoder 플랫폼을 이용한 GCJ 는 열지 않고, 구글에서 자체적으로 개발한 대회 플랫폼을 통해 대회를 치루겠다 공언한 바 있다. 그간 몇번의 알려지지 않은 Beta 대회와 정식으로 열린 Beta 대회 와 Practice Contest 를 통해 공개된 GCJ 의 새로운 대회 방식은 TopCoder 와 ACM-ICPC 의 장점들을 섞어놓은 듯한 모습이다. 우선 각 문제마다 배점이 다르다는 점이 ACM-ICPC 와 다르다. ACM-ICPC 에서는 모든 문제가 같은 비중을 갖고 있으며, 문제를 푼 횟수로 등수를 산정하기 때문에 쉬운 문제부터 찾아서 빨리 푸는 전략이 당연한 정석으로 되어 있다. 반면 TopCoder 에서는 문제의 난이도에 따라 배점 차이가 커서 ( 250, 500 ,1000 점... 문제의 난이도에 따라 배점이 2 배씩 차이가 난다! ) 어려운 문제를 먼저 푸는 전략을 쓰기도 한다. 그리고 쉬운 문제는 틀려도 어려운 문제를 맞춰서 등수가 뒤바뀌는 경우도 많이 발생한다. GCJ 에서는 문제 별로 배점이 다르며, 같은 문제마다 Input case 의 Boundary 가 다른 2 가지 Input 이 주어진다는 점이 특이하다. 즉, Small Input 과 Large Input 의 두가지가 제공되는데, Small Input 은 검사할 범위가 작으므로 쉽게 해결할 수 있으며, 맞는지 틀리는지 여부를 바로 알 수 있다. Large Input 은 Small Input 보다 입력값의 범위도 더 크며, 실행 결과는 TopCoder 처럼 대회가 종료된 이후에 알려주기 때문에 스스로 생각하기에 완벽하다고 생각되는 솔루션을 충분히 테스트를 거친 후에 제출해야 한다. Qualification Round 의 경우 Small Input 은 문제당 5점, Large Input 은 문제당 20 점이었다. 주어진 모든 Test Case 를 통과해야만 점수를 받을 수 있으며, 테스트 케이스에 대해서 하나라도 틀릴 경우 0 점이다. ( All or Nothing 방식. 부분점수란 없다. ) 그리고 ACM-ICPC 와 마찬가지로 점수 ( 문제푼 횟수) 가 같을 경우에는 빨리 푼 순으로 시간이 산정되며, Small Input 문제를 틀리는 경우 Penalty Time 이 추가된다. GCJ 는 TopCoder 와는 달리 별도의 플랫폼이 필요없이 웹 브라우저만 가지고 대회를 치룰 수 있었다. 플랫폼에 자유롭게 한 것은 많은 참가자들을 배려한 부분으로 보여진다. 또한, 개발 언어에 대해서도 특별한 규정이 없었다. Input 에 대해서 원하는 Output 만 출력한다면 어떤 개발 언어를 사용하든지 문제가 될 것은 없다는 의미인 것 같다. GCJ 는 7월 17일 시작하여 4 번의 온라인 라운드와 준결승 오프라인 라운드로 나누어 치뤄지며, 최종 결선에 오르는 100 명은 미국 마운틴 뷰의 구글 본사에서 최종 결승전을 치룬다. 대회 상금 총 상금은 8 만달러 규모... 우승상금 1 만달러. 재미있는 것은 우승자에게 부상으로 전세계 어느곳이든 구글의 사무실에서 식사를 10 번 할수 있는 기회를 제공해 준다는 것이다. ( 최대 10 명까지 친구를 데리고 갈 수 있다 한다! ) 직원에게 무료로 제공하는 맛있고 럭셔리한 식사로 유명한 구글의 근무환경에 대한 자부심이 엿보인다. PS) 아직도 참가 신청과 참여가 가능하므로 관심있는 분들은 참가를... 'Contest > Google Code Jam' 카테고리의 다른 글
|
-
Radiant 2008/07/20 09:15 댓글주소 수정/삭제 댓글쓰기
맨날 눈팅만 하다가 실제로 덧글 남겨봐요 ㅎㅎ
SRM에서 오타로 Radient를 사용중인 유저입니다 ㄱ-
사실 코드잼도 관심 많았는데, 지난번 TCO '08의 쓰라린 추억때문에 그냥 접어버렸습니다.. ㅠㅠ
역시 세계 레벨의 벽은 높은것 같아요 ㅠㅠ -
Radiant 2008/07/21 00:23 댓글주소 수정/삭제 댓글쓰기
일단 참가는 할 예정인데, Internet Competition 날에 너무 중요한 면접이 겹쳐서
완전 곤란한 상황이 되었습니다 ㅠㅠ
그래도 다행히 면접은 오전이라 어떻게든 양립이 가능할 것 같기는 한데,
혹시라도 곤란한 상황이 생길까봐 불안하네요;;;
|
아주 좋은 글을 읽었다. C++ 과 C# 의 차이점 정리 이분, 개발/개발언어 관련해서 꾸준히 좋은 글들을 많이 쓰신다. 저분의 블로그는 2007 년 Tistory 100 대 블로그에 오르기도 했더군.. (부럽다 ㅋ) 마이크로소프트에서 C++ 는 Naive Language 라 하고, C# 을 Managed Language 라고 표현한 것을 읽은 적이 있다. 분명 C# 은 개발자 입장에서 더 강력한 기능을 손쉽게 제공하고, 또 버그가 날 가능성을 줄여주는 파워풀한 현대적인 개발언어임에는 분명하다. 하지만 글에서 언급한 것과 같이 컴파일 한 바이너리가 커지는 문제, C++ 에 비해 느린 실행속도 등을 고려해 볼때 임베디드 시스템 개발용 언어로는 부적합 하다고 생각된다. 아무리 임베디드 시스템의 하드웨어 성능이 점점 좋아지고 있다고 해도... 리소스를 1byte 라도 절약하고 속도를 1milli sec 라도 줄여야 하는 상황에서 소프트웨어 개발 레벨에서 부터 이런 방식으로 리소스를 갉아먹는 건 매우 좋지 않다고 본다. 내가 아는 어느 팀에서는 임베디드 시스템의 OS 로 Windows CE 를 쓰고, 개발 언어로 C# 을 쓰는데, 여러가지 고민 끝에 선택한 결과겠지만, 내가 볼때 이 결정은 개발자가 편할수는 있지만 소비자나 회사의 입장에서는 불리하다고 판단된다. Windows CE 라는 플랫폼 자체가 제품 당 OS 라이센스를 지불해야 하는 금전적 부담이 있으며, Windows CE 가 Linux 에 비해 갖는 장점은 개발자에게 친화적이고 소프트웨어 호환성이 좋다는 점 등인데, 진지하게 원가를 고려해 보고, 또 소프트웨어 변화가 적은 임베디드 환경을 생각해 본다면 좀 힘들더라도 Linux 에서 사용자가 편리한 UI 를 개발해서 서비스 하는 것이 맞다고 생각된다. 개발언어 역시 마찬가지로, C# 으로 개발을 하게 되면 개발자 입장에서 최신 언어를 사용한다는 만족감과 개발의 편리성은 증대되겠지만 제품 입장에서 보면 리소스와 퍼포먼스 측면에서 손해를 보게 된다. 추가로, 디바이스 드라이버나 연동부분의 legacy code 는 대개 C/C++ 로 되어 있어 호환성에도 문제가 생기게 된다. 결론은... 상용화 과제에 있어서는 개발자가 유리한 방향으로 개발을 해서는 안되고 사용자가 유리한 방향으로 개발이 진행되어야 하는데... 그것이 사실 쉽지 않다. 사실, 만약 Windows 개발에 익숙한 나에게 Linux 환경에서 개발해야 하는 과제가 주어지면 나 역시 불평 불만이 많을 것이다... ㅋㅋ 사실, 개발 난이도의 증가에 따른 개발비용과 리스크의 증가등도 분명 중요한 고려사항이 될 수 있다. 하지만 기술적인 어려움을 논외로 하고, 비지니스 측면을 진지하게 고려한다면 힘들더라도 항상 사용자 위주로 생각하면서 개발을 해야 할 것이다. 'IT Story > Programming Language' 카테고리의 다른 글
|
-
hyperdash
2008/07/13 21:15
댓글주소
수정/삭제
댓글쓰기
C/C++이 최고지....
VC8.0이 되면서 안전한 API들도 추가되었고
다른 언어로 대체하는 것보다는 한차원 높은 개발 방법론이 더 중요하지 않을까? -
blueecho
2008/07/15 04:28
댓글주소
수정/삭제
댓글쓰기
개인적인 생각으로도 아직은 C#은 무리인거 같아. 하지만 뭐... 혹시 알아?
시스템의 발전 속도가 너무 빨라서 말야.. -_-;;
나같은 경우도 예전에는 메모리를 줄이면서 성능을 포기하는 경우가 많았는데 요즘은 메모리 많이 쓰더라도 최대한 성능 좋은 쪽 아니면 전력소모 작은 쪽으로 가는걸로 봐서 개발에도 트랜드가 있지 않을까 싶네 그랴.. ^^;;
뭐.. 이런 문제야 실무 수행하는 자네들이 더 잘 알겠지만 말야.. 흐흐~
사용자 위주의 개발이라고 해도 개발자 입장에서는 좀 더 편하게 하고 싶은 맘도 있고 말야... 뭐, 앞으로는 다품종 소량생산이라고 하니 TTM관점에서는 개발자가 빨리 개발할 수 있는 환경도 나름대로는 의미있다고 생각되네...
하여간, 덕분에 좋은 글 읽고 간다. ^^
|
'Contest > ACM-ICPC' 카테고리의 다른 글
|
|
ACM-ICPC 서울지역 대회를 빼면 국내에서 대학생 이상 일반인을 대상으로 정기적으로 열리는 알고리즘 문제풀이 대회는 없다시피 했는데, ( TopCoder 나 IPSC 같은 주최자가 외국인 대회들 말고... ) 썬 코리아에서 지난 5월에 자바 알고리즘 경진대회 라는 것을 개최했다더라.. http://sdnkorea.com/blog/580 역시나 예상했던 것 처럼, 문제풀이 대회에서 이름을 날리던 TopCoder 의 상위 멤버들이 1-2-3 등을 모조리 휩쓸어버렷다. 낭중지추(囊中之錐 ) 라고 내가 좋아하는 고사성어가 있는데, 송곳은 주머니에 감춰놔도 삐쭉 쏫아 나와 자신의 존재를 알린다는 뜻. 한마디로 잘하는 사람은 어느 대회에서 든지 간에 입상한다?? 라고나 할까... ㅋ 대회 결과 1등 - 팀번호 12. Andromeda Express / 팀원 : 구종만(JongMan), 김진호(Astein), 정현환(libe) 2등 - 팀번호 08. Ryumeo & (Zzi|Jin)liet / 팀원 : 류원하(ryuwonha), 강지훈(zizavino), 송은진 3등 - 팀번호 01. C# / 팀원 : 최백준, 안재원(i274), 김우현(wooyaggo) 시상내역 - 금상(1팀) : 상장 및 100만원 상품권 - 은상(1팀) : 상장 및 50만원 상품권 - 동상(1팀) : 상장 및 30만원 상품권 최백준이란 분은 예전에 TopCoder 에서 GumX 라는 아이디로 상당히 인상적인 ( yellow rating 에 있었음.. ) 활약을 보이던 분인거 같은데 지금은 탈퇴를 했는지 TopCoder 에서 검색이 안된다. 3 등 팀이 작년도 ACM-ICPC 서울대회에서 은상을 받았던 서강대학교 KURU 팀이다. (구글링 해본 결과 팀원도 모두 같군.. ) 팀원 세 명이 모두 졸업을 하지 않은 상태이고 그대로 올해에도 출전할 가능성이 높아서 금년에도 좋은 성적을 거둘 것 같다. 대회 주최측에 문의를 해본 결과 파트타임 대학원 학생도 학교에 소속되어 있고, 학생증으로 자신의 신분을 증명할 수 있으므로 대회 참가가 가능했다. 그래서 나도 참가 자격은 있는 셈이었는데 사실 입상은 어렵더라도 재미삼아서라도 참가해 볼까 했는데 팀원 모으는 것이 정말 어렵더라.. -0- (결국 생각만 하다가 참가 못했음) 내년에도 대회가 열린다면 대학원 동기들을 꼬셔서라도 함 참가해 보고 싶다는 생각이 팍팍 든다. PS ) 썬 코리아가 대회를 키우고 좀 더 많은 참가자들을 참여시키려면 대회도 썬 코리아의 회사 블로그 내에 만들어 놓지 말고 단독 대회 홈페이지로 만들고, 또 기출문제와 전체 순위도 공개하면 어땠을까 하는 바램이다. 암튼 1회성이 아닌 매년 개최되는 정기적인 대회가 되었으면 한다. ;) 'Contest > etc' 카테고리의 다른 글
|
-
-
soyoja
2008/06/29 20:36
댓글주소
수정/삭제
개인적인 의견을 말씀드리자면 ^^
현재 TopCoder 의 한국인들 중에서 Rating 이 파란색 이상인 분들은 총 48 명입니다. 그중에서 졸업하여 대회 참가가 안되는 사람, 개인사정으로 참가 못하는 사람등을 제외하면 실제 대회 참가자들 중에서는 Rating 이 Blue 이상만 되어도 충분히 상위권이 가능하다고 생각합니다.
바꿔말하면, 사실 문제풀이 대회의 참가자들 대부분은 Div2 수준의 코더들이며, Div1 의 코더들이 팀을 이룬다면 ICPC 를 비롯한 국내 레벨의 문제풀이 대회에서는 대개 입상권을 노려보는 것이 가능하다고 생각됩니다.
-
-
질문 2008/07/26 23:15 댓글주소 수정/삭제 댓글쓰기
제가 알기론 ACM-ICPC준비하는 사람이 모두 TopCoder를 하는 것이 아니아서 상위권은 아니라고 보고요
현재 3등팀 아이디 색이 없음, 블루, 그린인데, 저 팀은 좀 운빨인거 같네요 -
지나가다 2008/10/18 13:36 댓글주소 수정/삭제 댓글쓰기
이런거 대관절 어떻게 하는건지......................
C# 팀은 과내에서 상당히 유명한 사람들이라 심심풀이로 검색해보니까 이런 것들도 하고 있군요..
한분이 수업시간마다 교수님을 물고 늘어지기로 유명해서..-_-a
인상적인 활약을 했다는 최백준님은 제가 봤을 때는 일종의 '기인'입니다.
코딩을 그렇게 잘하면서 귀찮아서 간단한 학교프로그래밍 점수는 바닥쪽이 많다는...
|
대회 홈페이지에 공개된 Final Standing 입니다.
- 제 7회 전국 대학생 프로그래밍 경시대회 수상 결과 ( 학교 순위로 상위 10개 학교를 선정하여 수상하며 중복되는 학교의 경우 상위 1개 팀만 수상함. 상금 : 대상 월드파이널 출전경비 지원, 금상 100만원, 은상 70만원, 동상 50만원 ) 대상 서울대학교 WE ARE BUT MEN, ROCK 금상 ICU (정보통신대학교) Winter Coders KAIST (한국과학기술원) Cow Bessie 은상 서강대학교 KURU 연세대학교 Keaboard Warrior 포항공과대학교 Poscat 동상 경희대학교 Zraler 숭실대학교 Inspiration 고려대학교 DaTulRae 인하대학교 Oh Duck Square 총평 - 서울대의 2년 연속우승 서울대는 작년에 이어 2 년 연속으로 우승을 차지하였다. 온라인 예선에서 서울대의 세 팀이 1-2-3 등을 차지한데 이어 본선인 서울대회에서도 1-3-5 등을 차지하며 두터운 선수층을 과시하였다. 이 독주체제를 무너뜨릴 팀이 과연 언제 등장할지 관심사다. - 중국의 계속되는 거센 도전 2005년 대회에서 상해교통대학 (Shanghai JiaoTong Univ.) 이 우승을 차지한 이래 작년과 올해 연속으로 중국팀이 2 위를 기록한다. 다행히 올해도 대회 우승은 한국팀이 수성하기는 했으나 중국팀은 국가차원의 대대적인 지원속에 매년 실력과 참가팀이 급증하는 추세라 향후에도 중국의 도전은 계속 거세질 전망이다. - 여전한 전통의 강호들 ICU 와 KAIST, 포항공대, 연세대는 올해도 10위 이내의 성적을 기록하며 전통의 강호임을 입증하였다. 현재 월드파이널 출전은 서울대와 중산대가 확정적이며, 3위 ICU 도 와일드 카드로 월드파이널 출전 가능성이 열려있는 상태이다. 한편, KAIST 는 월드파이널 출전을 위해 아시아 타지역 예선에 기대를 걸어야 하는 상황이다. - 작년과 올해의 순위변화 작년에 금상 (5위) 를 기록하며 깜짝 스타로 떠오른 카톨릭 대학은 작년의 멤버 대부분이 졸업을 하며 올해는 입상에 실패하였다. 반면 작년에 수상하지 못했던 서강대와 경희대가 좋은 성적을 거두면서 수상에 성공하였다. 2006년 입상에 실패했던 고려대학교도 올해는 다시 입상에 성공하였다. - 꾸준한 숭실대 2003 년 이래 5 년 연속으로 입상에 성공, 대학생 프로그래밍 경시대회 7년 동안 6번 입상(은상 2회, 동상 4회) 하는 꾸준함을 과시한다. - 예선에서 돌풍을 일으킨 팀들의 부진 온라인 예선에서 5위를 기록하며 좋은 성적이 기대되었던 한양대가 본선에서는 부진하였다. 예선 11위의 아주대 역시 입상권 팀으로 예상하였으나 본선에서 간발의 차이로 아쉽게 입상에서 실패하였다. 'Contest > ACM-ICPC' 카테고리의 다른 글
|
|
몇몇 컴파일러(VC++ 6.0, VC++ 2005 등... ) 에서 int main() 과 void main() 이 둘다 컴파일 에러없이 잘 동작하는 반면, dev C++, g++ 과 같은 컴파일러에서는 void main() 은 컴파일 에러를 낸다. 늘 습관처럼 int main() 을 쓰던터라 이번기회에 int main() 과 void main() 의 차이에 대해 자세히 찾아보았다. 우선 결론부터 말하자면 int main() 이 C/C++ 표준에 맞는 표기이며, void main() 은 잘못된 표기인 것이다. 그러므로 void main() 으로 코딩을 한다면 설사 컴파일러가 컴파일 에러를 발생시키지 않는다 할지라도 프로세스 상에서는 main() 이 올바르지 않은 종료조건을 OS 에 리턴하고 자신을 종료할 가능성이 있게 된다. 왜 그렇다면 많은 서적과 예제에서 여전히 잘못된 표기인 void main() 을 쓰고 있을까? 초창기의 C 에서는 void 타입의 함수란 존재하지 않았으며, return 이 의미가 없는 경우에는 int 형 garbage 를 리턴하는 함수를 썼다 한다. 초기의 이러한 전통때문에 리턴값이 별 의미없는 int 형 함수들이 시간이 지나면서 프로그래머들의 취향에 따라 void 형 함수들로 고쳐 사용되었는데 이 과정에서 main() 함수도 void main() 으로 많이 사용되어진 것이 아닌가 추측된다. void main() 으로 실행할 경우 default 로 정상종료를 시키는 컴파일러들이 많아짐에 따라 프로그래머들은 별 문제 없이 이러한 코딩습관을 갖게 되었고, 사용자들이 이런 습관대로 쓰는 경우가 많아지자 컴파일러 제작사들도 사용자들의 습관에 따라 void main() 을 warning 이나 컴파일 에러없이 컴파일 되도록 만들게 되었다... 이것이 유력한 주장이다. 참고 : http://www.eskimo.com/~scs/readings/voidmain.960823.html 또다른 참고 : http://libe.tistory.com/2861180 'IT Story > Programming Language' 카테고리의 다른 글
|
-
Hikikomori
2007/09/30 09:32
댓글주소
수정/삭제
댓글쓰기
히히, 전 이제 막 씨언어 접한 학생인데,
학교에선 맨날 교수님이 Visual C 로, 문자 출력시에 void main()을 쓰더라구요,
전 dev++에 익숙해서 그런지 맨날 void 쓰니까 막햇갈려서,
그래서 그냥 int main() 이것만 써요,ㅋ
왜 그럴까 궁금했는데, 이제 쫌 알겠어요, 게시글 굿또! -
hyperdash
2007/10/02 01:06
댓글주소
수정/삭제
댓글쓰기
호옷... 이거 1학년때가 생각나는군....
k = 1;
k++ + ++k = ?
++k + k++ = ?
뭐 이런거 고민하고 그랬었지... -
|
구글 공식 블로그에 불과 몇시간 전에 공개된 내용이다. 'IT Story > Gossip' 카테고리의 다른 글
|
|
'Book' 카테고리의 다른 글
|
|
리퍼러를 분석해 보면 ACM-ICPC(세계대학생 프로그래밍 경진대회) 나 프로그래밍 경시대회 정보를 검색하다 이곳에 오는 분들도 꽤 되는 것 같다. 그래서 오늘은 TopCoder 에 대해서 소개하고자 한다. 'Contest > TopCoder' 카테고리의 다른 글
|
-
TopCoder 시작하기..
FROM Mission Top Secret Destination Unkown..~ 2007/08/08 01:54 삭제저희 동아리 위키 페이지에서 몇 줄만; - 룰 - Algorithm Competition 의 라운드하나는 다음 과정으로 나뉘어진다. Coding phase: 75분. 문제를 보고 코딩을 한다. 문제별로 최대 점수가 있고, 해당 문제를 여는 시점부터 시간이 계산되어, 답을 제출할 때까지 시간이 길수록 점수가 낮아진다. 대개는 문제 최대 점수와 난이도는 비례한다. 만약 easy 를 열고, 답을 제출하지 않은 뒤, 다시 medium 을 열어서 풀고, 다시..
-
Flex 코딩으로 돈버는 방법
FROM 열이아빠의 RIA 이야기 2008/11/02 22:55 삭제우연히 아래와 같은 제목의 글을 보게 되었습니다. Flex on TopCoder http://gurufaction.blogspot.com/2008/10/flex-on-topcoder.html 오호. 원래는 Java 와 .NET 만 참여할 수 있었는데 추가적으로 Flex 개발부분이 들어갔나 봅니다. Flex.org 에 관련된 내용이 잠깐 언급이 되어있는데 날짜가 10월 9일이니깐 얼마된것은 아니네요. http://flex.org/company/topc..
-
Top Coder에 도전하세요!
FROM [장선진] 삶을 위한 소프트웨어 2009/01/01 20:20 삭제평소 소프트웨어(Software) 개발에 관심이 많거나, 특히 알고리듬(Algorithm)이나 소프트웨어 디자인(Software Design)에 관심이 많다면 Top Coder(http://www.topcoder.com)라는 사이트에서 자신의 능력을 다른 사람들과 함께 겨루어 보는 것도 참 좋은 일이라고 생각합니다. 전 세계에서 소프트웨어에 관심이 많은 사람들이 모여서 자신의 능력을 겨루고 있는데 재미있는 점은 우리나라의 순위입니다. 현재 우리나라의..
-
송규욱
2007/08/08 01:47
댓글주소
수정/삭제
댓글쓰기
안녕하세요.. 졸업하시고도 열심히 하시네요..
저도 TopCoder를 시작해보려고하는데.. 앞으로 종종 찾아오겠습니다.. -
JM
2007/11/27 14:54
댓글주소
수정/삭제
댓글쓰기
안녕하세요, 구종만입니다.

부탁드릴 게 있어서 몇번 irc 에서 찾았는데 그때마다 안계시더군요.. ^^;; 그래서 와서 리플 남깁니다.
혹시 이 블로그 엔트리를 알고스팟 오픈렉쳐 게시판에 올려주시면 안될까요? 귀찮으시다면 제가 와서 퍼가도 (^^;
괜찮습니다.
탑코더나 각종 대회에 대한 소개글이 필요한데.. 잘 써놓으신 것 같아서 전재하고 싶습니다. ㅎㅎㅎㅎ
미리 고맙습니다~ ^^ -
-
Raina 2008/01/31 17:00 댓글주소 수정/삭제 댓글쓰기
오 이런것도 있네요.
조만간 시간내서 저도 한번 시작해봐야겠네요.
재미 있을 것 같아요.
좋은 정보 감사합니다. ^^ -
doodoori2
2008/10/19 03:02
댓글주소
수정/삭제
댓글쓰기
이번에 처음 참가해보았는데요 ㅎ
방마다 다른 문제가 뜨는건가요? 아니면 모든 Room에 같은 문제가 들어가는건가요?ㅎ
점수 채점 방식도 좀 궁금하더라구요a
영어를 읽는데는 많은 에너지를 소모해야해서 ㅠㅋㅋ-
soyoja
2008/10/20 09:43
댓글주소
수정/삭제
같은 Division 내의 모든 방에 같은 문제가 뜹니다.
Rating 1200 점을 기준으로 1200 이상이면 Divison 1, 1200 점 미만이면 Division 2 로 나뉘어지며, Division 별로는 문제가 다르지만, 같은 Division 내에서는 방이 달라도 문제는 같습니다. ^^
채점방식은 SRM 이 완전히 완료된 이후에 문제 출제측에서 준비한 모든 test case 에 대해서 모두 통과했을 경우에만 System Test Pass 가 되며 점수를 받게 됩니다. ^^
-
-
-
|
서광열님의 소프트웨어 개발 이야기 에 올라와 있는 ACM 문제 풀지말라 요지는 ACM-ICPC(세계 대학생 프로그래밍 경시대회) 유형의 문제들은 딱 떨어지는 정답을 만들기 위해 단순화시킨 요구사항과 언제나 정답이 있는 문제이기 때문에 저학년의 프로그래밍 공부에 도움이 될지 몰라도, 학부 고학년 수준에 이르게 되면 눈높이 수학식의 문제 풀이 연습밖에 되지 않기 때문에 프로그래머로서의 깊이있는 사고능력과 다양한 디자인 능력을 오히려 방해한다는 것이다. ACM-ICPC 에 출전했었고, 현업에 있는 지금도 ACM-ICPC 유형의 알고리즘 문제들을 재미삼아, 공부삼아 푸는 입장에서 이 주장에 대해 일부 공감이 가면서도 반론을 제기하고 싶다. 우선 이 블로그의 의견에 동의하는 것은, 많은 ACM-ICPC 준비생들이 빠지기 쉬운 오류 중 하나로 알고리즘이나 기출문제들을 공식처럼 외우고, 쉬운 문제들을 빨리, 많이 푸는 기계적인 연습을 해서 자신이 기존에 풀어본 문제와 비슷한 유형이 출제되거나, 혹은 본인이 알고있는 알고리즘을 끼워넣으면 바로 풀리는 문제를 풀수있게 훈련을 한다는 것이다. 보통 이런 사람들은 아는 문제는 쉽게 쉽게 금방 풀지만 조금만 응용이 되거나 사고를 요구하는 문제에는 손을 놔버리는 경우가 많다. 또한 실제 이런식으로 공부를 하면 연습할때는 문제를 많이 푼 것 처럼 보여도 실제 대회나 프로젝트에 임하였을때는 그동안 공부한 것이 큰 도움이 되지 못하는 경우가 많다. 알고리즘을 공식처럼 끼워서 푸는 문제상황은 대회에서나 현업에서나 그리 잘 발생하는 경우가 아니기 때문이다. ( 가끔 있긴 있다. ) ACM-ICPC 의 본래 취지를 생각해보면 책에서 배운 알고리즘을 외워서 예제처럼 집어넣으면 바로 풀리는 문제들을 푸는 대회는 아닐 것이다. 다만 ACM-ICPC 출전자들의 수준차는 IOI 부터 준비한 최상위권 학생들부터 일반학생들에 이르기까지 다양한 스펙트럼을 보여주고 있어 실제 대회에서 모두 어려운 문제들로만 출제가 된다면 변별력도 없고, 준비한지 얼마 되지 않는 학생들에게 대회에 대한 의미가 없을 수 있기 떄문에 쉬운 문제 2-3 문제에 어려운 문제가 혼용되어 출제하는 것이라 생각한다. 사실, 개인적으로 ACM-ICPC 에 대해 많은 추억을 갖고 있는 입장으로서 이 글에 대해서는 반론을 많이 제기하고 싶다. 우선, ACM-ICPC 유형의 문제들은 다양한 패턴의 풀이가 나오는 경우들이 많다. 같은 문제를 풀더라도 O(N^2) 로 푸는 사람이 있는가하면 O(N) 혹은 O(1) 로 푸는 방법도 있을 수 있다. 자신이 처음에 구상한 알고리즘과 자료구조를 갖고 문제를 풀어본 후, 자기보다 더 깔끔하고 효율적으로 문제를 푼 사람의 소스코드를 보면 많은 것을 배울 수 있다. 동일한 Spec 의 문제를 다른사람은 어떻게 접근하여 해결했는지를 배울 수 있는 중요한 기회이며, 현업의 실제 프로젝트에서는 이런 방식의 경험을 하기가 상당히 어렵다. 또한, boundary test 나 overflow 와 같이 실제 프로젝트에서 치명적으로 발생하는 유형의 버그에 대한 경험을 다양하게 해볼 수 있다. ACM-ICPC 의 문제들은 솔루션의 무결성을 점검하기 위해 다양한 test data 를 제공하는데, 모든 test case 를 통과할 수 있는 깔끔하고 완벽한 솔루션의 중요성을 직접 체험할 수 있는 더없이 좋은 기회가 바로 이런 알고리즘 문제풀기라 할 수 있다. 현업에서는 개발 - QA 테스트를 통해 진행되는 프로세스를 ACM 문제풀이를 통해 단순화시켜 경험해 보고 있다고 볼 수 있는 것이다. 특히, 알고리즘(algorithm) 이란 학문은 책으로만 배워서는 안되며, 실제 알고리즘을 다양한 응용사례에 맞게 직접 구현해 보는 것이 무엇보다도 중요한데, 알고리즘의 공부에 있어서 ACM-ICPC 유형의 문제를 풀어보는 것은 정말 좋은 공부방법이라 할 수 있다. Google 이나 IBM, Microsoft 와 같은 회사들이 기술면접에서 ACM-ICPC 유형의 알고리즘 문제를 면접때 제출하는 것은 여러가지로 시사하는 바가 크다고 생각한다. (사실 위와 같은 대기업 뿐만 아니라 외국의 IT 회사들은 많은 회사가 이런 소위말하는 "압박면접" 을 채택하는 것으로 보인다. 외국 회사의 기술면접 스타일에 대해서는 "조엘 온 소프트웨어" 를 보면 잘 나와있다. ) ACM-ICPC 와 같은 문제풀이의 장점을 한 가지만 더 들자면 ACM-ICPC 나 TopCoder 와 같은 대회 참가를 통해서 세계 각국의 수준높은 프로그래머들을 많이 만날 수 있고(온라인 상이서 혹은 오프라인 상에서) 그들의 솔루션과 소스코드를 분석해 볼 기회가 생기며 - 앞서 말했듯이 같은 문제를 나와 다른 자료구조와 알고리즘, 다른 코딩 테크닉을 활용해서 그들이 어떻게 풀었는지를 보는 것은 정말 중요하다 - 이러한 과정에서 본인에게 굉장한 motivation 을 줄 수 있는 기회가 된다. 추가로 이런 대회에서 성적이 좋으면 본인의 이력서에 멋진 이력으로 추가할 수 있다. 그리고 무엇보다도 재미 라는 즐거움이 있다. ^^ 'Contest > ACM-ICPC' 카테고리의 다른 글
|
-
Neon
2007/07/03 00:27
댓글주소
수정/삭제
댓글쓰기
문제를 외워서 푼다고 생각하는 사람은 그렇게 골치아픈 문제를 왜 풀려는 걸까요?
똑똑한 학부 1~2학년생이 한참 들여다보면 뭐든지 풀 수 있다는 말도 참 어이없게 들립니다. 3명이 그런식으로 문제 풀면 금새 6~7문제 풀고 월파 나가겠네요. -
JongsooLee 2007/07/03 02:03 댓글주소 수정/삭제 댓글쓰기
정말 ACM 문제가 안 좋으니 풀지 말란 소리는 아닌 것 같은데...^^
"알고리즘도 중요하지만 알고리즘만 중요한 건 아니고 다른 중요한 것도 많으니...넓게 보세요."라고 얘기하는 것처럼 보임.
근데 그 포스트 보니 제목을 좀 자극적으로 쓰기는 했다...ㅎ
|
http://agile.egloos.com/2807583 여기에 많은 공감을 하게 되는 것은, 내가 보아온 많은 훌륭한 프로그래머들이 밥벌어 먹고 살기 위한 프로그래밍이 아닌, 자기 자신을 위한 프로그램을 만들고, 이로 부터 자신의 목적에 맞는 많은 생산성 향상과 즐거움을 얻는 것을 보면서 감탄한 적이 많았기 때문이다. 국내의 대표적인 백신 프로그램인 V3 도 안철수씨의 개인 PC 에 감염된 바이러스를 제거하기 위해서 만든 V1 백신이 그 시초였고, 현재 100만명 이상이 사용하고 있는 대표적인 사진 관리 프로그램중 하나인 포토웍스( http://www.andojung.com ) 도 andojung 님의 개인적인 취미로 부터 시작된 훌륭한 프로그램이었다. ( 사실 andojung 님은 전에 나의 회사 고참이기도 했다... ㅋㅋㅋ ) 많은 프로그래머들이 개발업무에 있어서 보다 효율적이고 퍼포먼스를 높이기 위해 부가적인 유틸을 만들어서 개발에 활용하기도 한다. 예를 들어 내가 본 예를 들자면 대량의 데이터를 읽고 처리하는 프로그램을 개발함에 있어, 데이터를 일일히 raw 상태로 읽지 않고 빠른 처리를 위해 데이터 파싱 프로그램을 별도로 만들어 활용한다든가, DB 작업을 할때 대량의 가상 유저 DB 를 무식하게 노가다로 만드는 것이아니라 제너레이터 프로그램을 따로 제작해서 이로 부터 데이터를 생성해서 DB 에 자동 인서트하는 쿼리 프로그램을 만든다든가 하는 것들이었다. 물론 그냥 노가다로 하는게 훨씬 더 빠른 경우도 많다. =) 그래서 현업에서는 대부분의 사람들이 별도유틸 제작시간보다 노가다 시간이 훨씬 긴 경우에만 별도 유틸을 제작할 생각을 하는 것 같기는 하다. 중요한것은 노가다를 하고말고가 아니고 항상 어떻게 하면 같은 일을 하더라도 자신의 코딩능력을 활용해서 효율적으로 일을 하느냐가 아닐까 싶다...; 그럼.. 내가 만든 위기지학의 프로그램이 있는가? 물론 있다 ;) 전에 회사에서 틈틈이 영어공부를 하기 위해서 만든 단어장 암기 프로그램... ㅋㅋㅋ (클릭하시면 크게 보실수 있어요~ ) 한창 영어공부를 열심히 하던 시절, 딴짓하면서도 단어를 외울 수 있게 고안된 프로그램이다. 나름대로 원본 토플단어장으로 부터 파싱해서 데이터 수집, 버튼 안누르고도 자동으로 단어가 넘어가는 타이머, 틀린단어 체크 및 로그 기능등 편리하다고 생각되는 기능들을 추가해서 만든 프로그램이다. (UI 가 허접한 이유는 화면에 띄어놓아도 다른 사람들 눈에 안띄게 하기 위함.. ㅋㅋ) 사실 이것과 비슷한 프로그램들도 여럿 있기는 하지만 그래도 직접 만들어서 써서 그런지 애착이 많이 가는 넘중 하나다. ㅎㅎ 'IT Story' 카테고리의 다른 글
|
|
예전 홈페이지에 써놓았던 글을 여기로 옮겨왔다. 벌써 반년이나 지난 일이구나... 2006 년 11월 9일. 오늘 agile 방법론 세미나를 회사에서 했다. 마이크로 소프트웨어를 비롯해서 여러 컴퓨터 잡지에 프로그래밍과 개발방법론에 관해 많은 기고를 하고 몇몇 업체에 agile 방법론 컨설팅으로 이 분야에서 꽤 유명한 김창준 씨가 직접 와서 세미나를 진행했다. 김창준씨 소개 http://xper.org/wiki/xp/_b1_e8_c3_a2_c1_d8 애자일 방법론 소개 http://agile.egloos.com 사실 그리 많지 않은 개발 경험이지만 학교와 멤버쉽, 그리고 회사에서 여러 프로젝트와 외주관리를 진행해보면서 가면갈수록 개발방법론과 소프트웨어 공학에 대해 의구심이 드는 경우가 많았다. 바로 현실과 이상의 괴리라고나 할까. 내가 만나본, 많은 개발경력을 가지고 있고 업체에서 손꼽히는 뛰어난 개발자들 조차도 소프트웨어 개발 방법론을 제대로 내재화하여 실제 프로젝트에 적용하는 사례는 거의 보지를 못했고, 또 매번 프로젝트를 할때마다 그리는 UML 다이어그램들이 실제 프로젝트의 퍼포먼스 향상에 도움을 주는 것을 체감하기 힘들었기에 이러한 이론적인 방법론들이 과연 현업에서 어떻게 적용되야 하고, 또 얼마나 효과가 있을 것인지 의문이 들었던 것이다. (이상의 생각은 사실 작년 11월 경에 가졌던 생각이고, 요즘에 드는 생각은 설계와 좋은 방법론에 따라 표준화 된 소프트웨어 개발은 생산성 향상에 분명 도움이 될 수 있다. 문제는 어떻게 하면 소프트웨어 개발에 있어 좋은 설계를 만들고, 이를 바탕으로 중간에 일어날 수 있는 요구사항의 변경이나 설계시에 발견하지 못했던 많은 오류들을 적절히 컨트롤해 가면서 설계를 개발과 매칭할 수 있는가... 이다. 그리고, 설계를 하는 사람은 반드시 많은 개발경험과 소프트웨어 지식을 갖춘 아키텍쳐가 되어야 한다는 생각에는 변함이 없다.) 나의 질문 : 방법론 세미나를 들을때마다 드는 의문인데, 현업에서는 이러한 방법론을 내재화하여 개발 효율성과 결과물의 성능 향상에 도움을 주도록 적용하는 사례가 거의 없다시피 하며, ( 나와 내 주위의 경험상으로 볼떄. ) 현업에서 적용시키기 어려운 점 이 많습니다. 이러한 부분에 대해서 어떻게 생각하시는 지? 김창준 : ( 대략 3 분정도 침묵이 흐른 후 ) 현업에 적용시키기 어렵고, 노력을 많이 해야 한다. 하지만 이러한 방법론이 실제 개발에 있어서 가장 효율적이고 좋은 방법이라고 생각한다. 사실 이러한 대답에 좀 실망을 많이 했다. agile 방법론이 좋다! 라는 이야기는 이미 수도없이 들어왓기 때문에, 실제 현업에서 성공적으로 적용되는 사례 ( 개발자가 내재화 할 수 있는 ) 에 대해서 자세하게 듣고 싶었는데 그러한 부분에 대해서는 언급이 거의 없었던 것이다. 외부 회의때문에 끝까지 세미나를 듣지 못해서 아쉬웠는데. 어쨌든 나름대로 개발방법론의 적용과 현업 개발자간의 괴리감에 대해서 다시 한번 생각해 볼 수 있는 시간이 되어서 나 자신에게도 의미가 있던 것 같다. 'IT Story' 카테고리의 다른 글
|
-
soyoja
2007/06/18 20:18
댓글주소
수정/삭제
댓글쓰기
안녕하세요... 글을 남겨주시고... 솔직히 많이 놀랬습니다. ^^
제 개인블로그는 별로 찾아오는 분이 안계셔서요....
창준님 입장에서는 분명 불쾌할수 있는 이야기일텐데... 논리적으로 잘 설명해 주셔서 정말 감사하고 제가 머슥해지네요... ;;
항상 프로젝트를 진행해 보면 최초 설계와 적절한 개발방법론을 적용해서 실제 프로젝트에서 개발자가 얼마나 더 효율적으로 일을하고, 프로젝트의 생산성 향상에 기여할 수 있는지가 늘 의문이었는지라 이런 글을 쓰게 되었습니다. 말씀하신 성공사례에 대해서는 저도 글을 찾아서 읽어보고.. 지금 진행중인 프로젝트에도 어떻게 참고할 수 있을지 더 생각해 봐야 할것 같네요...
글 마지막 부분의 경력에 관한 이야기는 저의 선입견으로 쓴 글이니 웃어 넘겨주셨으면 합니다... ^^ 오해의 소지가 있을만한 글이라서 지웠습니다~
그럼 오늘도 좋은 하루 되세요..
추신 ) 헉... 댓글 지우셨나... ;;






