마음속에 담아 두자고. !!
MySon-JungHyun 2008/03/10 11:31 |만일 내가 다시 아이를 키운다면
먼저 아이의 자존심을 세워 주고
집은 나중에 세우리라
아이와 함께 손가락 그림을 더 많이 그리고
손가락으로 명령하는 일은 덜 하리라
아이를 바로잡으려고 덜 노력하고
아이와 하나가 되려고 더 많이 노력하리라
시계에서 눈을 떼고 눈으로 아이를 더 많이 바라보리라
만일 내가 다시 아이를 키운다면
더 많이 아는 데 관심 갖지 않고
더 많이 관심 갖는 법을 배우리라
자전거도 더 많이 타고 연도 더 많이 날리리라
들판을 더 많이 뛰어다니고 별들도 더 오래 바라보리라
더 많이 껴안고 더 적게 다투리라
도토리 속의 떡갈나무를 더 자주 보리라
덜 단호하고 더 많이 긍정하리라
힘을 사랑하는 사람으로 보이지 않고
사랑의 힘을 가진 사람으로 보이리라
- 다이애나 루먼스
event.keyCode process in FireFox
Work-Tip 2008/03/10 11:23 |ex )
// IE
function KeyCode()
{
alert(event.kdyCode) ;
}
// FF
function KeyCode(e)
{
alert(e.which) ;
}
// cross browsing
document.onkeypress = function(e) {
var result = "" ;
if( typeof(e) != "undefined" )
result = e.which
else
result = event.keyCode ;
alert(result) ;
}
댓글을 달아 주세요
내 데크 ~ 언잉크 156
이때까지만해도 버툰이 좋았는디.. ㅋㅋ
mod_rewrite
Work-Tip 2008/03/04 15:14 |이것은 처음 설치용이 아닌 사용중 추가하는 방법입니다.
cd 아파치설치디렉토리/src/modules/standard
/usr/local/apache/bin/apxs -c -I/usr/include/gdbm mod_rewrite.c
gcc -shared -o mod_rewrite.so mod_rewrite.o -lgdbm
/usr/local/apache/bin/apxs -i mod_rewrite.so
vi /usr/local/apache/conf/httpd.conf
#------- 아래 부분 추가 -------
LoadModule rewrite_module libexec/mod_rewrite.so
Addmodule mod_rewrite.c
#------- 여기까지 ---------
/usr/local/apache/bin/apachectl configtest
/usr/local/apache/bin/apachectl restart
이렇게 하시면 에러 안나고 설치 잘 됩니다. :_)
## 덧글
설치가 조금 난해 하군요..
# apxs -a -i -c mod_rewrite.c
이렇게 하면 됩니다.
-a : active
-i : install
아 제홈에 mod_rewrite 사용예가 있습니다.
http://www.linuxchannel.net/docs/apache_virtual_user_host.txt
댓글을 달아 주세요
mod_rewrite의 개념
Work-Tip 2008/03/04 15:12 |일반 적인 아파치의 기능은
요청된 URL에 적절한 파일을 HTTP에 맞게 전송하는 것이다.
mod_rewrite는 요청된 URL에 대해
관리자가 목적에 맞게 변경하여 요청자에게 응답할 수 있는 기능을 제공한다.
예 일반적인 경우
httpd.conf :
DocumentRoot : /some/local/path/요청 :
http://host/somedir/somefile.html서버가 응답하는 실제 내용
/some/local/path/somedir/somefile.html
예 :Rewrite
httpd.conf :
DocumentRoot : /some/local/path/
RewriteRule ^/somedir/(.*)$ /anotherdir/$1요청 :
http://host/somedir/somefile.html서버가 응답하는 실제 내용
/anotherdir/somefile.html
이와 같이 실제 요청자의 웹브라우저에 표시되는 URL을 통해
서버의 예상되는 위치에 존재하는 파일을 읽어 전송하는 것이 아니라,
별도의 위치에서 전송할 수 있도록 해주는 것이다.
이런 기능외에 로드발랜싱이나 프록시와 같은 기능으로 연결하거나,
혹은 다른 URL로 redirect를 시킬 수도 있다.
기본적으로 rewrite엔진에 넘겨지는 것은 경로(path)이다.
경로라 하면... http://host:80/somedir/somefile.html 에서
/somedir/somefile.html 까지를 의미하고, 포트와 호스트네임은 포함되지 않는다.
웹서버는 이 내용을 기준으로 하여 절적한 파일을 읽어 들이게 되는데...
바로 mod_rewrite는 웹서버가 이 경로와 다른 경로를 읽어 들일 수 있도록 하는 기능을 제공하는 것이다.
몇가지 접근하는대 필요한 개념은 아래와 같다.
입력자 : 웹서버
응답대상: 웹서버
입력값 : "(상대) 경로(path)"
출력값 : "(절대)경로 혹은 요청자에게 답변하는 내용."
mod_rewrite라고 했듯이 모듈이기 때문에..
상대자는 오직 웹서버 뿐이다. 즉 입력값을 받는 것도 답변을 하는 것도
웹서버라는 것이다.
그리고... 입력값은 상대 경로이다. (당연하겠지만)즉 서버내 물리적 위치가 아니다.
하지만 응답을 하는 것은 절대경로로 응답해야 한다. 서버가 실제로 읽어 들일
물리적 위치를 지정하는 것이다.
RewriteRule 1
RewriteRule은 입력값을 변경해주는 유일한 키워드이며, mod_rewrite의
핵심이라고 할 수 있다.
#Syntax:
RewriteRule Pattern Substitution flags
패턴에 따라 넘겨 받은 값을 치환(Substitution)하는 것이다.
패턴과 치환에 관한 방식은 펄의 정규화 표현식과 유사하다.
php의 ereg_replace나 혹은 sed, vi의 치환 명령에 익숙하다면
쉽게 접근할 것이다.
이 것에 대한 자세한 내용은 나중에 다루고..
이번엔 이명령의 중요한 개념에 대해서 설명하고자 한다.
문법에서 보여주는 것대로 한다면,
패턴에 맞게 입력값을 나누고, 거기에 맞게 치환하는 것으로 보인다.
근데 여기에 함정이 있다.
아래의 PHP Code를 보자.
<?php
function RewriteRule($pattern, $Substitution, $flags= 0)
{
//웹서버에서 넘겨 받아 거나 이전의 RewriteRule의 결과값
global $URL;
// 정규화 표현식 실행
$tmp = ereg_replace($pattern,$Substitution,$URL);
// 결과물이 URL과 일치하면.. 즉 패턴에 일치하지 않고
//아무런 변화가 없으면 함수를 빠져나간다.
if($tmp == $URL) return ;
//정규화표현식의 실행값을 반영한다.
$URL = $tmp;
//추가적인 기능이 지정되어 있지 않으면, 함수를 종료한다.
if($flags== 0) return ;
//추가적인 기능에 L이 있으면 해당 기능을 수행한다.
if(ereg("L",$flags){
something about "L";
}
//추가적인 기능에 P가 있으면 해당 기능을 수행한다.
if(ereg("P",$flags){
something about "P";
}
.
.
.
.
}
?>
좋은 코드는 아니다.
하지만.. RewriteRule의 동작방식을 이해하는 데는 충분하다고 본다.
RewrieRule은 단순히 치환기능만이 있는 것이 아니라
Condition 즉 특정한 패턴의 검출 여부에 따라
동작을 수행 혹은 수행하지 않는
조건문을 함께 포함하고 있는 구조다.
이 점을 놓치면, rewrite를 이해하는데 매우 고생스럽다.
RewriteRule /cgi-bin(/.*)$ /cgi-bin$1 [L,PT]
먼저 설명이 안됀 플래그 L,PT가 있다..
PT에 대해서는 나중에 설명을 하고..
L에 대해서만 설명하겠다.
L이란 Last Rule의 약자로... 이 RewriteRule 뒤의 라인을 점부 무시하라는 뜻이다.
위의 내용은
요청된 URL중에 /cgi-bin이란 내용이 포함된 내용을 치환하고,
/cgi-bin$1이란 내용을 중심으로 Rewrite를 종료하라는 뜻이다.
그런데.. 요청된 내용에 /cgi-bin이란 내용이 없으면 어떻게 될까?
정답은 해당 RewriteRule은 무시가 된다.
이렇듯 단순한 치환명령이 아니라, 조건이 포함되어 있는 명령이라는 것을 명심하자.
[태터 1.0.6 이상] Google Analytics 표시(태터 1.0.6 Update)
Work-Tip 2008/02/29 10:12 |
기존 google Analytics 플러그인이 스킨에 치환자를 삽입해야 하는 방식이었으나, 태터 1.0.6 버전 부터 스킨에 대한 치환자를 지원함에 따라 스킨파일의 변경 없이 설치 가능한 형태로 업데이트 하였습니다. Tatter Tools 1.0.5 버전까지는 스킨 관련 치환자의 부재로 플러그인을 설치하기 위해서는 skin.html 파일을 수정하여야 했으나, 업데이트된 1.0.6 버전에서는 플러그인 설치만으로 완료됩니다. 단, 태터 1.0.5 버전 이하 사용자는 이 게시판의 다른 게시물이나 링크1에 지정되어 있는 포스트에 첨부되어 있는 1.0.5 버전용 플러그인을 사용하여야 하며, 스킨 파일에 치환 문자열을 넣어야 합니다. 설치 방법은 다음과 같다. google Analytics 사이트에 접속하여 Analytics Settings > Tracking Status 로 들어가 보면 다음과 같은 코드를 홈페이지에 추가하도록 제시하고 있습니다. 그 중, _uacct 변수에 할당되는 문자열(그림 참조)을 플러그인의 $account_str 변수에 할당하도록 index.php를 수정합니다. function googleAnalytics($target, $mother) { $account_str = "??-??????-?" <- 바로 이 부분의 문자열을 변경합니다. index.php 파일을 변경한 후 태터의 플러그인 디렉토리에 업로드하고 플러그인 관리 메뉴에서 플러그인을 활성화 시켜주면 홈페이지 출력시에 google Analytics 코드가 출력됩니다. 마지막으로 반영된 것의 확인은 태터툴즈를 웹브라우저로 접속하여 소스보기로 확인하면 됩니다. |
Flash player Detection
Work-Tip 2008/02/15 16:01 |flash player 9 가 발표된지도 1년이 훌쩍 지난 시점이지만 정식으로 flash CS 가 발표된지 얼마 지나지 않았기 때문에 아직까지는 개발자들의 as3.0 사용빈도도 적을뿐더러 사용자들의 pc 에 설치되어있는 flash player 버전이 8.0 이하 버전들도 상당수 존재한다.
flash player 보급률 통계(adobe flash player penetration)에 따르면 현재(2007.3) 80% 정도로 배포되어있다. 물론 상당한 배포율이지만 소수의 사용자들을 고려한다면 원하는 컨텐츠를 사용자에게 보여주지 못하는 정도가 무시못할 수치이다.
이렇듯 새로운 버전의 flash player가 발표될때 마다 개발자들은 사용자들이 가지고 있는 flash player 버전을 고려하여 개발을 하고 그것에 맞는 flash player 가 설치 되어있는지의 여부를 체크해야만 한다. 그렇지 않다면 하위버전의 flash player 를 가졌거나 아예 없는 사용자가 사이트를 방문했을 시 영문도 모른 채 빈 화면만 보게 될 것이다.
이전에도 이런 문제를 해결하기 위해 많은 노력이 있었지만 아직 100% 완벽하게 처리할 수 없는 점이 존재한다. 개개인 사용자들의 브라우저 보안설정이나 운영체제의 상이함으로 인해 똑같은 결과를 얻지 못하는 경우가 종종 발생한다.
이글에서는 기존의 방법들중에서 가장 사용하기 편하면서 널리 이용되고 있는 SWFObject 라는 flash embed script 를 이용하여 player 버전체크 뿐만아니라 직접 install 하는 과정을 소개한다.
우선 flash player detection 과정은 크게 3단계로 구분된다.
첫째, 브라우저에서 javascript 사용가능 체크.
둘째, flash player 설치여부.
셋째, flash player 버전 체크.
몇몇 일부 사용자들은 브라우저의 javascript 기능을 꺼놓은 경우가 있다. 이럴경우 javascript 를 사용하여 flash detection 을 하는 과정이나 html에 swf 파일을 임베드 하는 과정이 전혀 작동하지 않게 된다. 따라서 가장 먼저 사용자 브라우저의 javascript 기능의 활성화 여부를 체크해야만 한다.
이 단계에서는 간단히 <noscript></noscript> 이용하여 대체 메시지를 출력하여 처리하면 된다.
player 설치 체크와 버전 체크는 SWFObject 에서 처리해 준다.
또한 window 뿐만 아니라 mac 의 주요 웹 브라우저의 flash plugin 감지도 지원해준다.
실제 mac 용 브라우저인 safari, opera 등에서도 문제없이 작동되었다.
자세한 SWFObject 사용법은 이전 포스트 나 아래 관련 링크를 참고하면 된다.
<html code>
<script type="text/javascript" src="swfobject.js"></script>
<body>
<div id="flashcontent">
<script>
document.write("This content requires the Adobe Flash Player 9<a href=http://www.adobe.com/go/getflash/>Get Flash</a>");
</script>
</div>
<script type="text/javascript">
var so = new SWFObject("example.swf", "example", "600", "200", "9", "#ffffff");
so.useExpressInstall('expressinstall.swf');
so.write("flashcontent");
</script>
<noscript>
This content requires a browser with JavaScript enabled.
</noscript>
</body>
위 코드는 flash embed 코드이다. SWFObject 에서는 요구하는 버전이 아니거나 존재하는 않을경우 flash 페이지를 대신할 수 있는 div tag 를 제공하는데 이곳에 대체 텍스트나 이미지를 넣어 사용자에게 상황에 맞는 적절한 정보를 제공할 수 있다.
그리고 하단부분에 noscript 태그가 존재하는데 이는 javascript 를 쓸수 없을 경우 실행되는 부분이다.
지금까지는 단순히 적절한 flash player 가 설치되어있는지의 여부를 판단하고 그에 대한 정보를 제공하는 것이 전부였다. 위 코드에 걸리는 사용자는 아마 제공하는 컨텐츠보다 player 버전이 낮을 경우가 대부분일 것이다. 즉, 사이트를 볼수 없는 사용자들 중에는 자바스크립트를 비활성으로 하거나 player 가 아예 설치되어있지 않을 경우보다 설치되어있는 player 의 하위버전으로 인한 문제가 대부분이다. 따라서 좀더 친숙하게 사용자에게 접근하려면 버전체크로 끝나는 것이 아니라 설치까지도 제공해 줄 필요가 있다.
이를 위해 Adobe 에서는 Express Install 을 제공해준다. 이는 플래시 파일내에서 직접 flash player
업그레이드를 진행해 주는 것이다.
SWFObject 에서도 Express Install 을 사용할 수 있게 메소드를 제공해 준다.
so.useExpressInstall('expressinstall.swf');
위와 같이 사용하면 expressinstall.swf 가 업그레이드를 진행하는 부분으로 반드시 player 버전이
6.0.65 이상으로 작업되어야 한다. 만약 flash player 버전이 9.0 보다 낮을경우 아래와 같은 화면이 보일것이다.

첨부 파일을 확인하면 원하는 형태로 디자인을 변경하여 업그레이드를 진행할 수 있다.
단, express install 을 사용하려면 Adobe 에서 제공하는 업그레이드 과정에서 생성되는 메시지
창의 크기때문에 최소 214*137 px 로 제작해야한다.
express install test (반드시 flash player 를 제거하고 8.0 버전을 설치한후 테스트)
download sample.....
<Installer and UnInstaller>
Window version.
Mac version.
<Related articles>
Best Practices for Flash Player Detection
Using Express Install with SWFObject
플래시 비활성화 line 해결방법2
Work-Tip 2008/02/12 12:20 |최근 이올라스와의 법정다툼에서 패소한 마이크로소프트사가 자사의
익스플로러 브라우저에 대하여 ActiveX컨트롤을 비활성화하는 패치를 내놓고,
4월11일 이후로 전면적으로 윈도우즈 업데이트를 실시하였습니다.
이로 인해 플래시 컨텐츠에 대해 사용자는 이전과 같이 웹페이지가 로딩되는 순간
바로 상호작용 할 수 없어졌을 뿐 아니라, 여러 플래시컨텐츠 또는 다른 ActiveX컨트롤이
내포된 웹페이지에서는 각각의 ActiveX컨트롤을 일일이 개별적으로 활성화해 줘야 하는
불편함이 발생했습니다.
이에 Adobe에서는 Flash에서 swf파일을 퍼블리싱 할때 사용할 수 있는
Flash Active Content Update 익스텐션을 배포하기 시작했습니다.
MXP파일을 다운로드 하여 설치하면 익스텐션 매니저에서 설치완료된 모습을 보실 수 있습니다.
이후부터는 플래시에서 퍼블리시 옵션을 다음의 방법으로 설정하시면 됩니다.
1. 먼저 퍼블리시 하기 전에 퍼블리시 설정에서 HTML탭을 클릭하여 봅니다.
2. 템블릿에서 Active Content Update ? HTTP 을 선택합니다.
3. 퍼블리싱 합니다.
4. 플래시 상단의 명령(Command)메뉴에서 Apply Active Content Update를 선택하면
방금전 퍼블리싱한 HTML파일과 SWF파일이 있는 폴더를 선택하고,
해당 HTML파일을 선택합니다.
5. 해당 폴더내에 AC_RunActiveContent.js가 자동생성되어 있음을 확일 할 수 있을 것입니다.
참고 : http://www.macromedia.com/kr/devnet/activecontent/
언어별 익스텐션 다운로드 : http://www.macromedia.com/support/flash/downloads.html
Microsoft®는 최근 '대화형 컨트롤'을 사용하여 일부 웹 페이지 처리 방법을 변경한
Internet Explorer 업데이트를 출시했습니다.
ActiveX 컨트롤은 사용자 인터페이스를 제공하는 대화형 컨트롤입니다.
웹 페이지에서 APPLET, EMBED 또는 OBJECT 요소를 사용하여 ActiveX 컨트롤을
로드하는 경우 사용자가 이를 활성화할 때까지 컨트롤의 사용자 인터페이스는 차단됩니다.
페이지에서 여러 컨트롤을 로드하려고 이러한 요소를 사용하는 경우 각 대화형 컨트롤을
개별적으로 활성화해야 합니다.
따라서 기본 Flash Player 웹 페이지를 포함한 특정 웹 페이지에서는 사용자가
ActiveX 컨트롤을 클릭하거나 Tab 및 Enter 키를 사용하여 ActiveX 컨트롤을
수동으로 활성화해야 할 수도 있습니다.
이러한 변경 사항에 대한 자세한 내용은 Microsoft 웹 사이트(http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/overview/activating_activex.asp)를 참조하십시오.
Adobe®에서는 Flash Player를 활성화하지 않고도 Flash 내용을 볼 수 있도록
Flash 제작자가 Flash SWF 파일을 포함시킬 때 사용할 수 있는 두 개의 HTML 템플릿을
설치하는 Flash 액티브 콘텐츠 업데이트 확장판을 만들었습니다.
이러한 템플릿을 사용하면 추가로 마우스를 클릭하거나 다른 사용자 인증을 하지 않고도
포함된 SWF 파일을 완벽하게 활성화할 수 있습니다.
Flash SWF 파일이나 다른 대화형 컨트롤(예: Dreamweaver® 소프트웨어를 사용하여
만들었으며 Flash를 포함하거나 대화형 내용이 포함된 HTML 페이지)을 포함하는
사용자 정의 HTML 페이지가 있는 경우 Microsoft에서 Internet Explorer에 변경한 사항을
적용하려면 이러한 웹 페이지를 업데이트해야 합니다.
기존 HTML을 수정하여 자동으로 ActiveX 컨트롤을 활성화하는 방법에 대한 자세한 내용은
Adobe 액티브 콘텐츠 개발자 센터 페이지(http://www.macromedia.com/devnet/activecontent/)
에서 해당 정보 및 FAQ를 참조하십시오.
Flash 액티브 콘텐츠 확장판을 설치하려면 Macromedia Flash Exchange 웹 사이트에서
Flash 액티브 콘텐츠 업데이트 확장판을 다운로드합니다.
Flash 응용 프로그램에서 도움말 > Flash Exchange를 선택하여 해당 사이트로 이동하거나
다음 URL을 방문합니다. http://www.macromedia.com/cfusion/exchange/index.cfm
Flash 액티브 콘텐츠 업데이트 확장판을 찾아 설치 파일을 다운로드합니다.
바탕 화면에 다운로드하여 두 번 클릭하거나 다운로드 중에 Extension Manager를 사용하여
확장판을 설치할 수 있습니다.
Macromedia 확장판 보증 부인 조항 및 타사 확장판 라이센스가 포함된 경우 이를 참조합니다.
설치를 계속하려면 동의를 선택하고 설치를 취소하려면 동의 안함을 선택합니다.
설치 사항을 적용하려면 Flash 응용 프로그램을 다시 시작합니다.
액티브 콘텐츠 HTML 템플릿을 사용하여 Flash 내용을 제작하려면 새 액티브 콘텐츠
HTML 템플릿을 사용하여 제작할 Flash 무비를 엽니다.
다음 중 하나를 수행하여 제작 설정 대화 상자를 엽니다.
파일 > 제작 설정을 선택합니다.
문서의 속성 관리자(선택한 객체가 없을 때 사용 가능)에서 설정 버튼을 클릭합니다.
포맷탭에서는 HTML 파일 형식이 기본적으로 선택됩니다.
HTML 파일의 파일 텍스트 상자에서 문서의 이름과 일치하는 기본 파일 이름을 사용하거나
.html 확장명을 포함한 고유 이름을 입력합니다.
HTML 설정을 표시하려면 HTML 탭을 클릭합니다.
사용하려는 액티브 콘텐츠 템플릿을 템플릿 팝업 메뉴에서 선택합니다.
액티브 콘텐츠 템플릿은 다음과 같습니다.
액티브 콘텐츠 업데이트 ? HTTP Flash 내용을 표시하는 기본 HTML 템플릿입니다.
액티브 콘텐츠 업데이트 ? HTTPS HTML에서 Flash 내용을 표시하고 보안 HTTPS 서버에 대해
Flash Player를 설치하지 않은 사용자가 Flash Player의 최신 버전을 다운로드하도록 안내합니다.
제작 설정 옵션을 완료하는 방법 및 Flash SWF 파일을 제작하는 방법에 대한 자세한 내용은
Flash 설명서를 참조하십시오.
HTML 파일을 제작하려면 제작 버튼을 클릭합니다.
명령 메뉴에서 “액티브 콘텐츠 업데이트 적용”을 실행합니다. 이렇게 하면
AC_RunActiveContent.js가 HTML 출력 폴더(제작된 SWF 파일 및 HTML 템플릿이 포함된 폴더)에
복사됩니다.
이 작업은 폴더당 한번씩만 수행하면 됩니다.
SWF 파일, HTML 템플릿 및 AC_RunActiveContent.js 파일을 웹 사이트로 업로드합니다.
1. 먼저 자신이 쓰는 Flash 8의 버전체크 - 영문버전이냐 한글버전이냐??
2. http://www.macromedia.com/support/flash/downloads.html 에서 자신에 맞는 언어버전 다운로드
3. 압축해제
4. README.HTML파일과 FlashActiveContent_언어.mxp 파일 2개 확인
5. FlashActiveContent_언어.mxp 더블클릭 - 익스텐션 설치
6. 플래시8 구동
7. 맘대로 작업 - fla 파일 저장
8. 퍼블리시하기 전에 퍼블리시 옵션을 클릭(컨트롤+쉬프트+F12키 동시 누름)
9. 퍼블리시 세팅창에서 HTML텝 클릭
10. 템플릭 옵션 셀렉트 박스에서 Active Content Update ? HTTP(한글버전은 엑티브컨텐츠 업데이트 -HTTP)선택
11. 퍼블리시하기 - 하드 어느 구석폴더에 html과 swf파일 생성될 것임.
그럼 다시 플래시에서 상단 Command메뉴(한글버전은 명령 메뉴)에서 맨 마지막 항목인
Apply Active Content Update(업데이트 컨텐츠 적용) 클릭 04/28 18:13 nooreestyle
12. 아까 퍼블리시한 HTML파일과 SWF파일이 있는 폴더로 이동하여 HTML을 선택하고,
Apply Active Content Update(업데이트 컨텐츠 적용) 실행
13. 그럼 그 폴더에 AC_RunActiveContent.js 파일이 생성될 것임.
14. 이 JS스크립트파일과 HTML파일 내부 코드가 IE패치를 비켜갈 코드임
15. 이 모든 파일을 웹서버에 올림
16. 작업 끝
GoogleAnalytics_TT106.zip
댓글을 달아 주세요