발생일: 2011.1.13 문제: 언제였더라? 프렌드 홍이 얘기해줬던가? 어떤 면접에서 면접관이 JVM 을 죽이는 한 줄짜리 코드를 작성해보라고 했다는 이야기가 생각났다. 그럼 브라우저를 죽이는 한 줄짜리 자바스크립트 코드는 어떤 게 있을까? 해결책: 며칠 전 정규식의 중첩 수량자(nested quantifier)와 역추적 폭주(runaway backtracking)에 관한 부분을 보고, 위에서 얘기했던 한 줄짜리 코드 이야기가 생각나서 재밌는 부제(?)를 달아봤다.^^; 아래 코드는 대상문자열인 "AAAAA..." 가 /(A+A+)+B/ 에 매치되는지 테스트하는 정규식 구문이다. /(A+A+)+B/.test("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); 위 코드는 중첩 수량자에..
발생일: 2011.01.03 문제: 마크업의 클래스 값을 구분해 탭의 인덱스를 가져오는 스크립트를 작성했다. 탭의 클래스 이름은 각각 "tab", "tab2", "tab3" 와 같은 식으로 구성되어 있으며 아래와 같이 가져와서 사용했다. function getTabIndex(className) { var reg = /tab(\d)?/; var index = reg.exec(className)[1]; return index - 1 || 0; // 값이 없을 경우, index - 1 이 NaN 을 기대함. } 헌데, 클래스명이 "tab" 일 경우, FF 에서는 기대했던 대로 결과값이 0이 리턴되었지만, IE 에서는 -1 이 리턴된다. 해결책: 정규식에서 그룹에 대한 정규식 매칭 결과가 없을 때 브라우저 별 ..
발생일: 2009.06.24 문제: option에 포함된 text 길이에 따라 동적으로 가로 사이즈가 늘어나는 select box가 있다. 사이즈는 대략 맞으면 되었기 때문에 내부적으로는 font size(대충 11 정도)에 text 길이를 곱한 값으로 select box의 스타일을 설정하는 로직이 있었다. 이제까지는 text에 영어만 있었기 때문에 별 탈 없이 운영되고 있었는데, 이번에 한글이 포함되면서 select box의 가로 사이즈가 정상적으로 늘어나지 않는다. 한글이 2byte 임에도 length를 구하면 1byte로 표시되기 때문이다. 한글을 포함한 문자열의 길이를 구할 수 있을까? 해결책: 검색해보니 한글 포함 문자열의 길이를 구하는 로직에 대해 정리해둔 블로그가 있다. 텍스트 내 캐릭터를 ..