전에는 나 자신도 미처 눈치채지 못하고 그냥 버릇처럼 써왔던 것인데, 자주는 아니지만 그래도 간혹, 지금도 html body 끝에 링크된 jQuery 사용 JavaScript 파일이 아래처럼 무조건 jQuery의 ready() 함수로 감싸서 작성된 것을 목격하게 된다.

$(document).ready(function() {
  // Stuff to do as soon as the DOM is ready; 
});

혹은 더 짧게,

$(function() {
 // Handler for .ready() called. 
});

하지만 DOM parsing 작업을 방해하지 않으려고 </body> tag 바로 위에다 스크립트를 추가했다면, 이미 웹 브라우저에선 DOM 해석을 끝낸 시점이기 때문에, 굳이 DOM이 준비되어 있는지 확인하는 작업은 불필요하단 얘기다.

물론 이렇게 한다고 해서 얻을 수 있는 성능상의 이득은 거의 없지만, 불필요한 작업인 것은 분명하다.
추가 참고 문서: You Don’t Need the DOM Ready Event

Lea Verou씨가 Best of Fluent 2012에서 했던 강연 동영상에서 나왔던 내용으로 다음과 같은 것이 있다.

function wordCount(text) {
  return text.split(/\s+/).length;
}
 
// Hex color 
/^#([a-f\d]{3}){1,2}$/i.test(str);
 
// A 6+ letter password with at least: 
// one number, one letter and one symbol 
/^(?=.*\d)(?=.*[a-z])(?=.*[\W_]).{6,}$/i
 
// Any number that's Not divisible by 50 
/\b(?!\d+[50]0)\d+\b/
 
// Anything that doesn't contain "foo" 
/^(?!.*foo).+$/

함께 소개된 RegExp playground 사이트도 웹 브라우저에서 간단한 Regular Expressions를 실험해 볼 수 있는 도구로 안성맞춤이고, 해당 패턴을 tweet으로 공유할 수도 있다.

영상 끄트머리에도 얘기되었는데 정규식 패턴을 짤 땐 그 정확도도 중요하지만, 너무 정확도에 치중한 나머지 실제 적용하면 들인 노력에 비해 그 성능이나 실용성 면에서 별 큰 이득이 없을 수도 있다는 점을 명심해야 한다.

node.js와 함께하는 대표적 NoSQL DB 가운데 하나인 MongoDB를 설치해서 이것저것 실험해보고 있는데, 우연하게 mongodb.log 파일을 열어보니 DB를 실행할 때마다 다음과 같은 경고문을 찍어내고 있었다.

** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

알아보니, mongod가 적절하게 운용되려면 시스템 자원의 운용과 관련해서 리소스 한계치 설정 값(ulimit settings)을 권장치 만큼 지정해 줄 것을 장려하고 있다.

경고 문구에 찍힌 현 Mac 시스템의 Number of files 값은 터미널에서 ulimit -a 혹은 launchctl limit 명령을 주면 확인할 수 있는데, 기본 설정 값이 명령에 따라 각기 open filesmaxfiles라는 이름으로 표시되며 그 값은 256으로 정해져 있다. (관련 문서 – Where are the default ulimits specified on OS X (10.5)?)

테스트 목적으로 MongoDB를 운용한다면 별 신경을 안 써도 되겠지만, 대용량 DB를 다루면서 빠른 응답속도가 요구되는 production 환경에선 이 시스템 자원의 운용에 관한 설정이 무척 중요해질 것이다.
MongoDB의 Number of files 관련 경고 메시지를 없애는 법(이)란 제목의 글 마저 읽기 →

터미널에서 많이 쓰이는 명령으로 특정 디렉터리를 만든 후 해당 디렉터리로 바로 이동하려고 할 때 다음과 같은 명령을 자주 쓴다.

$ mkdir foo
cd foo

하지만 이 mkdir와 cd 작업을 명령어 하나로 한꺼번에 수행해주는 방법이 있는데, ~/.bashrc 파일에 다음과 같은 함수를 저장한 후 사용할 수 있다.

function mkcd {
  if [ ! -n "$1" ]; then
    echo "Enter a directory name"
  elif [ -d $1 ]; then
    echo "\`$1' already exists"
  else
    mkdir $1 && cd $1
  fi
}

그러면, 터미널에서 다음과 같은 명령어 하나로 두 작업을 동시에 처리해준다.

$ mkcd foo

덤으로, cd 명령을 좀 더 유연하게 사용할 수 있는 것으로 다음과 같은 fuzzy cd 명령어를 등록해 놓으면, 이동하고자 하는 디렉터리의 이름 중 일부분만을 입력해도 자동으로 인식해서 해당 디렉터리로 이동시켜주므로 타이핑의 수고를 아주 약간 더 줄일 수 있다.

function cf {
  shopt -q nocasematch || resetcase=1
  shopt -s nocasematch
  for i in *; do [ -d "$i" ] && [[ "$i" == *"$1"* ]] && cd "$i" && break; done
  [ $resetcase ] && shopt -u nocasematch
}

WordPress에서 장문의 긴 글을 작성했을 때, 만약 해당 글을 index 페이지에선 그 내용을 다 보여주지 않고 글 앞부분의 도입부만을 보여주고 싶을 때를 대비해 more tag로 처리하는 기능을 제공한다. 그런데 이 기능을 그대로 가져다 쓰면 웹 접근성 면에서 문제가 생길 수 있다.

이렇게 해서 자동 생성된 링크 텍스트는 기본적으로 그냥 무의미한 more…로 표시되는데, 만약 글의 앞뒤 문맥을 인지하지 못한 상태에서 해당 링크를 스크린 리더를 통해 접근했을 땐 해당 링크가 어느 곳을 가리키는지 알 수가 없는 것이다. 하지만, 다행히 WordPress의 the_content() 함수를 제대로 쓰면 이 more tag의 내용을 입맛에 맞게 수정할 수가 있다.

the_content() 함수는 일반적으로 WordPress에서 사용되는 The Loop라는 PHP 코드 안에서 쓰이는데, 보통 WordPress 테마 파일의 index.php나 혹은 최신 WordPress에서 기본 제공하는 Twenty Twelve 테마 같은 경우 post의 종류에 맞는 여러 군데의 템플릿(template)에 사용되고 있으며 상황에 맞게 각기 따로 수정해 주어야 한다. WordPress의 more tag 접근성 문제(이)란 제목의 글 마저 읽기 →