태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

'방법'에 해당되는 글 3건

  1. 2009.07.20 버그를 잡는 몇 가지 방법 (7)
  2. 2008.09.04 자석에 방법당한 지갑 (3)
  3. 2008.06.11 방법당하다 by python-mysqldb 1.2.1_p2 (5)

버그를 잡는 몇 가지 방법

Thoughts 2009. 7. 20. 10:00
Plan A
1. 오류 발생 지점 확인
2. 오류 발생지로부터 범위를 확대해가며 역추적
3. 버그 진원지 파악
4. 소탕


Plan B
1. 문제를 적는다
2. 열심히 생각한다
3. 버그를 수정한다


Plan C
1. 귀여운 곰인형을 찾는다
2. 옆에 앉히고 이상 동작을 설명한다
3. 깨닫는다
4. 고친다


Plan D
1. 의심한다. 이게 버그인가?
2. 다시한번 의심한다. 이게 진짜 버그인가?
3. 프로그램은 정상 동작을 하고 있으며, 이를 잘못 쓰는 세상이 나쁜거라고 납득한다
4. 하지만 세상을 바꾸긴 힘드니, 투덜투덜 해본다
5. Plan A/B/C 중 하나로 넘어간다



... ... ...



Plan X
X. 세스코를 부른다


-----

웃자고 하는 이야기입니다... OTL 아니, 울자고 하는 이야기인가?

'Thoughts' 카테고리의 다른 글

starry night by gogh  (4) 2009.10.14
아 X 같은 인터넷뱅킹 욕나오네  (4) 2009.08.02
버그를 잡는 몇 가지 방법  (7) 2009.07.20
인생의 한 때  (5) 2009.06.09
궁금증: 일그러진 상  (8) 2009.06.07
노무현 전 대통령 서거  (0) 2009.05.23
tags : 디버깅, 방법
Trackbacks 0 : Comments 7
  1. Favicon of http://localhost/ xenosoz 2009.07.20 13:23 Modify/Delete Reply

    `우선 밥을 먹는다'도 도움이 되는 경우가 있어요 :$

  2. Favicon of http://shurain.egloos.com 슈레인 2009.07.20 14:50 Modify/Delete Reply

    1. 밥은 먹었는가?
    2. 잠은 잤는가?
    3. 문제가 해결 되었는가?

    루프

  3. Favicon of http://deisys.net dgoon 2009.07.20 16:21 Modify/Delete Reply

    ... 슈레인 짱인듯 -_-b

  4. 지아 2009.07.21 13:10 Modify/Delete Reply

    버그가 떠오를때까지 코드를 노려본다. =33

  5. Favicon of http://deisys.net dgoon 2009.07.21 15:50 Modify/Delete Reply

    지아 /// 코드가 쫄아서 버그를 내놓는다. ㅋㅋㅋ

  6. etnalry 2009.07.22 10:13 Modify/Delete Reply

    찾기 힘든 버그는 때때로 문제가 있을리 없다고 확신하며 의심해보지 않은 부분에 있다.

Write a comment


자석에 방법당한 지갑

Daily life 2008. 9. 4. 08:31
필요한 일이 있어서 손톱 정도 크기의 강력 자석 6개를 구입했습니다.

집에 가져다 두었습니다.

다음날, 지갑에 있던 카드들이 모두 사용불능이 되었습니다. ... 분명 다른 주머니에 넣었는데 왜 ... ㅠ_ㅠ

그런고로 한동안 현금인출, 카드사용 모두 불가. ㅠ_ㅠ 재발급 받으러 갈 시간도 별로 없는데...

하여 밥 사주시는거 환영 :'(


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

추석 연휴가 시작되었습니다  (0) 2008.09.12
나에게 알맞는 전공은? -_-  (6) 2008.09.07
자석에 방법당한 지갑  (3) 2008.09.04
관악정을 찾을수가 없다 ... ㅠㅠ  (5) 2008.08.24
지름: CafeAlpha 1권~11권  (2) 2008.08.09
지름: 분홍이 !  (6) 2008.07.29
Trackbacks 0 : Comments 3
  1. Favicon of http://shurain.egloos.com 슈레인 2008.09.04 09:05 Modify/Delete Reply

    그런 자석은 어디서 사나여 집에다 작은 모터 만들어서 장식으로 돌려둘까 하는데...

  2. Favicon of https://deisys.tistory.com 가난한 d-goon 2008.09.04 09:25 신고 Modify/Delete Reply

    슈레인 // 문방구... =_=

  3. Favicon of https://deisys.tistory.com 가난한 d-goon 2008.09.04 10:10 신고 Modify/Delete Reply

    슈레인 // 나는 어제 그... 뭐더라, 뱅글뱅글 돌아가는 장식품? 그거 만들까 생각해봤는데 ㅎㅎ

Write a comment


방법당하다 by python-mysqldb 1.2.1_p2

Tech 2008. 6. 11. 18:38
할일이 좀 있어서 python-mysqldb 모듈을 가지고 간단한 프로그램을 만들었다. 사용법은 참 간단했다.

import MySQLdb
db = MySQLdb.connect(host="localhost", user="deisys", db="deisys", passwd="xxxxxx")
cursor = db.cursor()

여기서부터는 cursor 를 가지고 놀면 된다. cursor.execute("show tables"), cursor.execute("create table test (id int)") 뭐 이런 식으로 ... 그래서 테스트를 위해서 엔트리 1억개를 insert 하는 코드를 만들었다. 대충 이런 모양이다.

 ...
 29 # Generate a bunch of (from, to) pairs and insert into the table
 30 values = []
 31 for x in xrange(0, VN):
 32     from = x
 33     digest.update(str(x))
 34     to = hash(digest.hexdigest()) % CN
 35     values.append( (from, to) )
 36     if from % CHUNK_SIZE == CHUNK_SIZE-1:
 37         query = "INSERT INTO info_test (from, to) VALUES " + ", ".join([str(x) for x in values])
 38         cursor.execute(query)
 39         values = [ ]
 ...

그런데... 몇분쯤은 걸리겠지 하는 생각에 엔터를 눌렀는데, 실행이 순식간에 끝난다. 엉? 엔트리 1억개를 넣는건데 1초도 안걸리다니, 요즘 DB가 졸 짱쎄졌구나! 라는 생각에 터미널 창에서 select * from info_test limit 1000; 을 때려 보았다.

mysql> select * from info_test limit 1000;
Empty set (0.00 sec)

mysql> _

엉? 뭐지? -_-; 그리고 삽질 시작. (cursor.close(), db.close() 도 밑에서 잘 해 주었다)

한시간쯤 뇌가 날아갔다가, 군것질을 하고 돌아오셨다. 그동안 몇몇 테스트를 해보면서 내린 결론은,

insert만 안된다

는 것. 왜 그럴까... insert는 쓰기 작업이고, 자주 일어나고, 연속적으로 일어나는 경우가 많으니까 아마도 어댑터가 나름 캐싱했을것 같은데 ... -> 빙고!

썅썅봐 -_-; db.close() 앞에 db.commit() 을 넣어주니까 제대로 들어간다. API에 보면,

commit(...)

Commits the current transaction


라고 달랑 한줄 나와있고, 나는 트랜잭션을 쓴 적이 없다. -_-; 아니 저게 없으면 방법당한다고 어디 한마디라도 써놓던가... ㅠㅠ 그리고 예의상(매너?) cursor.close() 나 db.close() 에서 들고 있는 캐시는 다 처리해 주어야 하는것 아님? -_-+

예전에 하둡님도 close 할때 flush 안해주셔서 초큼 난감했었는데, 이거 요즘 유행인가보다.

'Tech' 카테고리의 다른 글

Statement vs Expression  (4) 2008.07.22
emacs: switch indentation  (0) 2008.07.18
방법당하다 by python-mysqldb 1.2.1_p2  (5) 2008.06.11
Troubleshooting: apt-get update -> Dynamic MMap out of room  (0) 2008.06.05
스팸폭탄 맞았음  (0) 2008.05.23
Chunker's rolling out!  (3) 2008.03.27
Trackbacks 0 : Comments 5
  1. Favicon of http://rein.upnl.org rein 2008.06.12 00:10 Modify/Delete Reply

    DB 쿼리가 기본적으로 트랜잭션인건 MySQL빼고는 다 그런...듯한 것 같아요;

    일종의 dry-run이 되어주기도하고 (먼산)

    + db.auto_commit 인가를 True로 해주면 모든 쿼리가 바로바로 실행됩니다(아마)

  2. Favicon of http://deisys.net deisys 2008.06.12 09:31 Modify/Delete Reply

    rein // autocommit 쓰고 있음 ...ㅎㅎ

  3. Favicon of http://deisys.net deisys 2008.06.12 10:06 Modify/Delete Reply

    rein // 아니, autocommit 을 쓰면 졸라 느려지네? =_=/

  4. Favicon of http://www.waityet.net waityet 2008.06.14 09:40 Modify/Delete Reply

    ㅋ..저 코드라면 autocommit 하면 짱 느려지시겠지 =_=;;
    근데..확실히
    cursor나 connection을 close할때 commit을 안해주심은..
    뭔가 아리송하네...

  5. Favicon of http://deisys.net dgoon 2008.06.14 09:59 Modify/Delete Reply

    waityet // 좀 해주면 오죽 좋음!?

Write a comment