태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

'버그'에 해당되는 글 2건

  1. 2010.05.10 iterator invalidation (5)
  2. 2010.05.04 자출 두번째날 (5)

iterator invalidation

Tech 2010. 5. 10. 17:08
의외로 이런 실수를 하는 사람이 꽤 많다.

numbers = range(100)
for x in numbers:
    numbers.remove(x)

이렇게 하고 나면 numbers 는 어떤 모양이 될까? 아마도 코드 작성자의 의도는 하나씩 모두 날려서 [] (빈 리스트)가 나오는거였을텐데, (내 맘대로 추측)

>>> print numbers
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
>>> 

실제로 해보면 이런 녀석이 남는다. 왜 그럴까? 참고로 - for x in numbers[:]:, 혹은 for x in list(numbers): 이렇게 for statement 를 고치면 의도대로 동작하긴 한다. 그렇다고 좋은 코드라는건 아니고 ...

무슨 언어에선가는 반복중인 컨테이너를 고치려고 하면 컴파일 타임에 알려준다고 하는 것 같았는데 ... 이런 류의 버그는 은근히 찾기가 어렵다. 간단한 (정말 기초적인) 테스트 코드 정도로도 조기 발견이 가능한 부분이고, 가능하면 테스트에서 잡히기 전에 코더의 본능이 먼저 경고해 주어야지.

그래도 STL 에는 "이 녀석은 반복자를 무효화시킵니다 ~ 조심하세요 ~" 라고 레퍼런스가 말해주긴 하는데, 파이썬 레퍼런스엔 그런 이야기가 없었던 것 같다. - 날로 읽어서 확실치는 않다.

... 사실 이건 SICP 3장이 떠올라서 주절거리는 글이다. 저 비슷한 느낌으로 스트림을 생성해가는 ㅂㅌ적인 코드들... OTL. compound but tricky 라는 느낌이랄까. 내가 수학을 못해서 그렇게 느끼는걸지도 모르지만.

아 피곤해. 두서없는 글이 되었구먼. 결론은 내가 부족하다는 거? (저건 내가 만든 버그는 아니다)

Trackbacks 0 : Comments 5
  1. Favicon of http://www.wildartist.org WILD ARTIST 2010.05.10 20:57 Modify/Delete Reply

    예전에 제가 했던 실수군요 ㅎㅎ 파이썬은 아니었지만 ㅋ
    지금 생각해보면 아련한 추억이군요 ㅋㅋ
    역시 저런 상황에서는 while문이 진리?

    • Favicon of http://deisys.net dgoon 2010.05.10 23:12 Modify/Delete

      난 그냥 새 list 만들어서 대체 -_-; 해버리는데 ... 메모리는 O(n) 이고, 속도도 O(n) ... 좀 손보면 낫겠지만, 저거 그대로 돌리면 맞는 결과가 나와도 속도가 O(n^2) OTL.

  2. Favicon of http://www.wildartist.org WILD ARTIST 2010.05.17 09:37 Modify/Delete Reply

    while len(numbers) > 0: numbers.pop()
    하지만 numbers = [] 하면 끗 ㅋㅋㅋ 새 리스트로 대체하는게 역시 짱이군요
    역시 스크립트 언어란..

    • Favicon of http://deisys.net dgoon 2010.05.17 12:15 Modify/Delete

      아... 근데 일일이 다 꺼내줘야 하는 경우도(클린업) 있긴 있어서 ㅎ

  3. Favicon of http://ad.coachfactoryoutletsv.com/ coach outlet 2013.04.01 21:49 Modify/Delete Reply

    아름다운 여자가 해바라기하는 걸 좋아해요

Write a comment


자출 두번째날

Daily life 2010. 5. 4. 07:45
첫날 삽질을 좀 하고 나니까 이제 길을 알 것 같다.

싸구려 헬멧이랑 버프, 장갑을 들고 여섯시 반에 집앞에 착! 나와서 길을 건너 원당 초등학교 뒷길로 달렸다.

파파존스-국민은행 옆으로 나와서

봉천고개 넘어 - 상도 - 상도터널 - 한강대교 - 회사

코스를 밟아 회사 도착. 40분 살짝 안걸렸다.

... BikemateGPS(ver 2.2.5)를 쓰고 있는데, 날짜 다루는데 버그가 있다. 오늘이 5월 4일인데, 출근 기록이 5월 3일로 분류되어 있다. 아마도 로컬 타임을 제대로 못써서 생기는 문제가 아닐까 하는데 ... 버그리포팅 하러 가봤는데, 이미 이런 문제가 잔뜩(...)리포팅 되어 있고, 그네들은 "IPhone SDK 쪽의 버그같은데 Work around 해볼께~" 라고 답변을 달아뒀다.

... 근데 아무리 봐도 이런 Timeshift는 로컬 타임을 제대로 못가져와서 생긴 버그 아님? (...) 내가 오전 9시 넘어서 기록을 넣으면 5월 4일로 제대로 들어갈 것 같은데 ...



저녁에는 강남에서 SICP 스터디가 있다. 스터디에 가던가... 아니면 야근 크리 맞던가 둘 중 하나인데 ... ... 불길한 예감이 든다. 으헉으헉 ㅠㅠ

'Daily life' 카테고리의 다른 글

무슨 헛소리니  (0) 2010.05.12
크...큰일났다!  (0) 2010.05.10
자출 두번째날  (5) 2010.05.04
자출/자퇴 첫날  (0) 2010.04.30
다육몬 진화: 불꽃 -> 풀꽃  (2) 2010.04.25
불꽃 - 다육이  (5) 2010.03.05
Trackbacks 0 : Comments 5
  1. Favicon of http://www.gsong.pe.kr gsong 2010.05.04 11:28 Modify/Delete Reply

    오오 자전거 출근! 회사에 샤워실이 있나 보군요. 부럽 ㅠ.ㅠ

  2. Favicon of http://www.waityet.net waityet 2010.05.04 13:29 Modify/Delete Reply

    왜 가난한 d-goon 이지?;
    잘 살고 있는거 같은데 말이지 ㅋ, 이것저것 돈을 써서 없는것 뿐아니냐!!??
    야근 크리 기원.

  3. comkid 2010.05.04 17:43 Modify/Delete Reply

    우왕ㅋ굳ㅋ 야근 크리없이 스터디 오실 수 있길 빌어봅니다~

  4. Favicon of http://deisys.net dgoon 2010.05.04 23:27 Modify/Delete Reply

    gsong // 회사에 샤워실 없어요 ㅋ 용산초등학교 수영장 월간쿠폰 샀음둥
    waityet // 아니라고!
    comkid // 현실은 OTL

  5. Favicon of http://zooty38.egloos.com 짱어 2010.05.09 13:39 Modify/Delete Reply

    오 내용보다 어플에 눈이 더 가는 한사람. 어플이 탐나서 받으려 했더니 유료네 ;ㅁ;)

    오빠 다음에 보면 엄청 날씬해져있는 거 아냐? 근육디군!!

Write a comment