Apache 설정 파일(httpd.conf)이나 웹 도큐먼트 루트 디렉토리의 .htaccess 파일에 다음과 같이 추가해주면 된다.

# you probably want www.example.com to forward to example.com -- shorter URLs are sexier. 
#   no-www.org/faq.php?q=class_b 
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

불필요한 www를 때버리고 짧고 명료한 도메인 이름(Class B)으로 살며시 인도해준다. 이렇게 하면, SEO 측면에서도 중복된 검색 결과를 방지하는 효과를 얻을 수 있다.

아래 snippet은 Touch Events를 지원하는 iPhone/iPad에서 기존 mousedown/mouseup events를 대신하는 touchstart/touchend event 탐지 목적에 쓰일 수 있다.

if ('createTouch' in document) {
  // Touch events are supported. 
  // So we can use touch events like 'touchstart' or 'touchend' instead of mousedown/mouseup. 
}

iPad에서의 click event handling은 약간 지체되는 느낌이 있으므로, 되도록이면 대응하는 touch events를 써주는 것이 좋을 것이다.

그리고 참고로, Android에선 Touch Events를 지원하지만 위의 방법을 사용할 수 없다고 하니, 어쩔 수 없이 navigator.userAgent도 살펴봐야 한다.

function supportsTouch() {
  var android = navigator.userAgent.indexOf('Android') != -1;
  return android || !!('createTouch' in document);
}

2010년이 돼서도 차별대우는 어쩔 수 없다.

var isMSIE = /*@cc_on!@*/false;
 
// or shorter one next 
 
var isMSIE//@cc_on=1 

Dean Edwards씨가 몇 년전 쌀짝 공개했던 코드로 알려지게 되었는데, Internet Explorer에서만 채용된 JavaScript의 짝퉁, JScript의 Conditional Compilation Statements때문이란다.

혹은 더 짧게,

if(!+"\v1") // true only in IE 

블로그 형태의 대표적 CMS로 제일 먼저 WordPress가 떠오르지만, 보다 폭 넓은 형태의 “Web Community” 형성을 위한 다양한 user roles을 지원하는 CMS로는 약간 아쉬울 수 있다. 이럴 때 고려할 수 있는 대표적 CMS platfrom의 하나로 Drupal이 명성을 얻고 있는데, 마침 기회가 되어 로컬 시스템에 설치해서 여기저기 둘러보고 있는 중이다.

아무래도, Drupal의 장점이라면 우선 다양한 추가 modules을 통한 맞춤식 기능 확장이라 하겠는데, 처음 Drupal을 설치하면서 자신의 용도에 맞는 modules을 찾기란 무척 당황스럽고 어려운 일인지라, 쓰임새 많은 몇 개의 필수 module들을 적어놓는다.

  • Poormanscron – Drupal의 cron 작업을 특별한 설정 없이 주기적으로 자동 실행시켜준다.
  • Wysiwyg API – 문서 작업시 여러 종류의 클라이언트 편집기 – 일명 WYSIWYG editors -를 가져와서 쓸 수 있게 한다. (하지만, 마음에 드는 놈을 아직 찾지 못했음)
  • Pathauto – 문서의 ‘path aliases’를 자동으로 생성시켜줄 수 있다.
  • Token – 위의 pathauto modules 설치시 필요.
  • Views – 여러 설정 조건들을 충족시키는 다양한 형태의 문서 내용을 표시해준다.
  • Content Construction Kit (CCK) – 문서의 custom fields 추가를 손쉽게 해준다.
  • Contemplate (Content Template) – CCK modules과 함께 사용해서 각 fields의 표시 순서와 형태를 입맞에 맞게 바꿀 수 있다.
  • google_analytics

다음은 Drupal을 위한 modules과 themes을 모아놓은 사이트

Drupal을 둘러보던 중 몇몇 CMS 비교 글들에서 종종 언급되고 있는 또 다른 CMS platform에도 관심을 가지게 되었는데, 가장 훌륭한 templating system을 가지고 있다는 일명 CMF로도 분류되는 신생 MODx에도 자꾸 눈길이 끌림.

아래는 프로젝트에 가장 적합한 CMS를 고르는데 참고가 될 만한 글이다.

결국 모든 프로젝트를 완벽하게 충족시켜주는 CMS란 존재하기 어려운 것이고, 그 만큼 각 프로젝트의 성격과 요구 조건에 맞는 CMS를 고르는 일도 중요하다는 결론. 결국 다양한 CMS를 직접 두루두루 써봐서 그 장단점을 몸소 체험할 수밖에.

아래 한 줄의 코드 실행으로 Firefox 3(FF3), Firefox 2(FF2), Firefox(FF), Internet Explorer(IE), Safari(Saf) 그리고 Chrome(Chr)의 결과 값을 얻을 수 있다:

B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown';

퍼 나른 곳 = The Spanner – Detecting browsers javascript hacks

물론, 각 브라우저의 차기 버전이 배포되면 결과 값은 틀려질 수가 있으므로 사용에 주의를 요하지만, 종종 단순한 작업을 위한 긴급 처방으로 요긴할 때가 있다.