[첫화면으로]"Perl/WWW-Mechanize" 페이지의 변경 내역

마지막으로 [b]


현재 버전 . . . . 2018-1-17 8:59 am 수정한 사람: Raymundo ["객체의 메모리 사용량 지속 증가" 절 추가]
10 번째 수정본 . . . . 2012-3-14 4:37 pm 수정한 사람: Raymundo [content() 메쏘드의 반환값 - ]
 

변경사항 (가장 최근의 "일반적인 수정"부터) (다른 변경사항 없음)

-21,12 +21,16
[http://cpansearch.perl.org/src/JESSE/WWW-Mechanize-1.72/Changes Change 문서]를 보면 아마도 2008.9.27에 나온 1.49_01 버전부터 인 듯.
문제는, 항상 디코드되는 게 아니라, 웹페이지의 인코딩이 뭔지 알 수 없거나 실패할 경우는 디코드하지 않은 상태로 반환하기 때문에, 반환값을 일일이 검사해야 하는 경우가 있다. 예를 들어 euc-kr로 인코딩한 웹페이지인데 메타 태그에는 iso-2022라고 적혀 있는 식이라면 디코드하지 못 한다.
== # get()에서 실패하면 die ==
<code>get($url)</code> 해서 웹페이지를 긁어올 때 404에러 등이 나면 그 시점에 die해 버린다. [http://cpansearch.perl.org/src/JESSE/WWW-Mechanize-1.72/Changes Changes]를 보면 1.49_01부터는 autocheck 의 기본값이 1로 되어 있어서 그렇다. <code>new(autocheck => 0)</code>으로 하고 직접 리턴값 또는 success 를 불러서 검사할 수 있다.
== # 객체의 메모리 사용량 지속 증가 ==
크롤링 봇 등 장시간 사용되는 프로그램의 메모리 사용량이 지속적으로 증가하여 살펴보니 Mechanize 객체의 크기가 계속 커지고 있었다. 그래서 객체 하나를 계속 사용하지 않고 필요할 때마다 새로 생성하고 버리는 식으로 했는데, 문서를 보니 방문 페이지 히스토리를 담는 스택의 크기가 무한대여서 그랬던 듯. 객체를 생성할 때 `stack_depth => 고정값` 옵션을 주니 그 후로는 이런 문제 없음
<div class="comments">