블로그 이미지
우드너

카테고리

분류 전체보기 (14)
주제 없음 (0)
Total7,495
Today3
Yesterday3
Flash에서 페이지 내에 있는 javascript 함수를 호출 하려고 ExternalInterface.call 을 사용하는데, 간혹 스크립트 오류가 발생 해서 엄청 애를 먹었다.


결론부터 말하자면...


단순한 javascript 오류겠거니 하고 디버깅을 위해 오류 정보를 보는데...

"줄: 1"
 
단순한 javascript 오류가 아닌게다.

일단 Action Script 문제인지 아니면 다른 문제인지 판단하기 위해 해당 플래시만 있는 페이지를 만들고 단위 테스트를 해봤다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />	<title>테스트</title>	<script type="text/javascript">		function callTest(msg) {			alert(msg);		}	</script></head><body><div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="100%" height="500" id="CallTest" align="middle">	<param name="allowScriptAccess" value="sameDomain" />	<param name="allowFullScreen" value="false" />	<param name="movie" value="ScriptError01.swf" />	<param name="quality" value="high" />	<param name="salign" value="t" />	<param name="wmode" value="transparent" />	<param name="bgcolor" value="#ffffff" />		<embed src="ScriptError01.swf" quality="high" salign="t" wmode="transparent" bgcolor="#ffffff" width="975" height="500" name="CallTest" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /></object></div></body></html>

그런데 이 코드는 오류 없이 잘만 작동한다. 그렇다면 HTML 코드상의 문제일텐데... 이리 저리 만지작 거리다 한가지 단서를 발견했다. 플래시 object의 id를 변경하니 오류가 발생하지 않는 것이다.

문제의 원인은 id값이 중복으로 사용되었던 것이다. 오류가 발생 했던 코드는 다음과 같다.
>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />	<title>테스트</title>	<script type="text/javascript">		function callTest(msg) {			alert(msg);		}	</script></head><body><div id="gnb"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="100%" height="500" id="gnb" align="middle">	<param name="allowScriptAccess" value="sameDomain" />	<param name="allowFullScreen" value="false" />	<param name="movie" value="ScriptError01.swf" />	<param name="quality" value="high" />	<param name="salign" value="t" />	<param name="wmode" value="transparent" />	<param name="bgcolor" value="#ffffff" />		<embed src="ScriptError01.swf" quality="high" salign="t" wmode="transparent" bgcolor="#ffffff" width="975" height="500" name="gnb" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /></object></div></body></html>

위 코드를 잘 보면 플래시를 감싸고 있는 div 요소의 id 값이 "gnb"고 object 요소의 id도 "gnb"로 되어 있음을 확인 할 수 있다. 아마도 Action Script 3.0에서는 엄격한 문법 구조를 지향하고, 외부 통신을 위해 플래시 컨테이너의 독립성을 명확하게 하기 위함이 아닐까 하는 추측을 해볼 수 있다.

...라고 생각하기엔... 타 브라우저에서는 또 잘 돌아간다~ 유독 IE에서만...ㅠㅠ;;;

저작자 표시 비영리 동일 조건 변경 허락
Posted by 말 없는 수다쟁이 우드너
특정 요소의 스타일 설정을 변경하는 코드다.
file-empty 라는 id를 가진 요소의 스타일 중에 display 속성을 none으로 설정하여 감추는... 아~주 초보적인 코드다.

function AttachFile(fileID, fileName, fileSize)
{
    document.getElementById("file-empty").style.display = none;
    AddAttachFileInfo(fileID, fileName, fileSize);
}
이 간단한 코드가 작동하지 않는다. 오늘 오후 반나절을 이녀석과 씨름을 했다. 여기에 오류가 숨어있을꺼란 생각은 조금도 못하고 "왜 안되지?"하며 이전 프로세스만 죽자고 파해쳤다.

내가 오늘 정~말 상태가 메롱하다.ㅠㅠ; 어찌 display 속성에 할당하는 값을 문자열이 아닌 none을 버젓이 입력해두고 반나절을 날렸다. 젠장...ㅠㅠ;;;
function AttachFile(fileID, fileName, fileSize)
{
    document.getElementById("file-empty").style.display = "none";
    AddAttachFileInfo(fileID, fileName, fileSize);
}

당연한거지만, 이건 오류 메시지도 없다. 문법상 틀린게 아니니...

도무지 해결 기미가 보이지 않자 그냥 한 두시간정도 블로그질을 했다. 그러고 다시 좀 봐볼까 싶어 코드를 보니, 바로 눈에 이 오류가 뵈는게 아닌가! 역시 일이 더 이상 진척되지 않을 때는 잠시 머리 식히며 딴짓거리(?)를 해보는 것도 해결에 도움이 될 수 있다는걸 또 새삼 느꼈다.

그 시간에 다른 일들에 좀 더 집중을 했더라면... 하는 한탄섞인 한숨만... 에휴~

그래서 또 다시 블로그질 중...ㅡ,.ㅡ;;
저작자 표시 비영리 동일 조건 변경 허락
Posted by 말 없는 수다쟁이 우드너

아! 허리가...

분류없음 / 2009/03/17 21:40
왜 아픈거지???  뭘 했다고?

요즘 계속되는 두통과 불면증 탓에 거실 소파에서 잠들기 일쑨데... 그래서 허리가 아픈건가?


두통은 언제 시작되었는지도 모를 만큼 오래되었다. 아프다기 보단 머리 한쪽 구석이 끙~~~ 하는 느낌이 계속 남아 있다. 이게 좀 심해지면 통증이 되기도 하고, 잠 자는데 큰 장애요소가 되기도 한다. 가급적 약은 안먹을려고 했는데 최근 약 먹는 횟수가 늘고 있는게... 기분 나쁘다.

허리는 어제부터 통증이 심해져서 결국 오늘 파스 허리춤에 붙였다. 두통이 좀 잠잠하다 싶더니 이번엔 허리 통증이다. 왜?
바닥에 떨어진 물건도 쉽게 줍기 힘드네~

아직은... "시간이 지나면 괜찮아 지겠지~" 하며 애써 신경쓰지 않으려 하고 있다. 허리는 뭐... 그렇게 지나칠 수 있을것 같은데, 두통은 요즘 왠지 자꾸 불길한 상상을 하게 만든다. 젠장... 마치 머리속에 벌레가 들어 있는 것만 같다.

"있더라도 움직이지만 마라...ㅠㅠ;;;"
저작자 표시 비영리 동일 조건 변경 허락
Posted by 말 없는 수다쟁이 우드너
지난 원식이 결혼식때 찍은 몇장의 사진 중 좀 쓸만한 것들로 찾아봤는데... 정말 너무했다.ㅠㅠ; 다 이상한 사진들만... 갑작스럽게 캠코더 들고 설치느라 얼마 찍지 못했던 탓도 있지만... 나의 심각한 수전증과 더불어 박물관에 전시되어야 할 똑딱이를 들고 실내에서 ISO에 의존한채 찍다보니... 노이즈는 둘째치고 그렇게 셔터 스피드를 줄렸음에도 불구하고 사람들이 모션블러되는건 어찌해야 될런지...ㅠㅠ


그래도 뭔가 기억에 남는 선물을 해주고 싶어서 사진 인화 서비스중에 타일 아트를 선택했다. 도저히 포토북으로 만들만한 사진 수량도 안되고 해서... 몇 장 안되는 사진으로 좀 그럴듯 하게 포장할만한게... 딱 이거드만~ 사진에서 처럼 프레임에 타일을 맘에 드는데로 배치한 후 액자처럼 걸 수도 있겠지만, 타일 뒷면엔 고무자석이 있어서 꼭 프레임이 아니더라도 자석이 붙는 곳이면 어디든지 장식 할 수 있겠다.


첫번재 사진은...참... 얼마나 쓸 사진이 없었으면 사진을 찍은 사진을 여기다 사용했겠나! 어째튼 타일 아트 이거... 나중에 나도 하나 정도 만들어 보면 잼나겠단 생각은 든다. 근데... 사진이...ㅡ.ㅡ;;;


타일에 인쇄된 사진 품질은 참... 원본이 거시기 해서 이렇다 저렇다 할 껀덕지가 없다. 생각보다 잘나오지도 못나오지도... 원본 사진 그 느낌 그대로다. 다만 타일 크기가 5cm보다 조금 작아 사진에 선명하게 보이는 노이즈나 잡티들은 어느 정도 커버는 되지만 그 사진의 분위기는 역시 바뀌지 않더라. 그래도 뽀샵질 좀 더 할껄 그랬나 싶기도 하고...

어쨌튼 이걸 전해줘야 할텐데 녀석이 워낙 정신없다보니... 그렇다고 이걸 우편으로 쑝~ 보내버리기엔 좀 그렇다. 직접 전해주고 뜯어 보고 이야기를 듣고싶은데~
저작자 표시 비영리 동일 조건 변경 허락
Posted by 말 없는 수다쟁이 우드너
SQL Server 2005는 .NET Framework와 통합되어있다. .NET 언어를 통해 저장 프로시저나 트리거, 함수 등을 만들어 사용할 수 있으며, 이는 .NET Framework에서 제공하는 방대한 클래스 라이브러리를 사용할 수 있음을 의미한다. 이러한 CLR 통합 프로그래밍은 기존의 T-SQL에 비해 표준화된 환경에서 효율적인 프로그래밍을 할 수 있도록 해줍니다.

그렇다고 .NET 코드로 작성하는 것이 무조건 더 좋다는 뜻은 아니다. 일반적으로 단순 데이터 접근을 위한 코드라면 기존의 T-SQL이 더 유리하다. 다만 복잡하고 전문적인 연산처리가 필요하다면 .NET 코드로 작성하는 충분히 고려해 볼 가치가 있다는 것이다. 또한 SQL Server 외부 자원에 대한 접근이 필요할 때에도 .NET 코드가 유리하다.

MSDN에서는 CLR 통합에 따른 장점으로 다음을 예로 들고 있다.
  • 개선된 프로그래밍 모델
  • 개선된 안전성 및 보안
  • 데이터 형식 및 집계 함수를 정의하는 기능
  • 표준화된 환경을 통한 효율적인 개발
  • 성능 및 확장성 개선 가능성

* 통합된 CLR의 성능에 대한 자세한 내용은 MSDN을 참조하자.

SQL Server 2005에서 이러한 CLR 통합 환경을 사용하기 위해서 CLR 통합 사용 속성(clr enabled 옵션)을 활성화 해 줘야 하는데, 보안상의 이유로 CLR 통합 사용이 기본적으로 비활성화 되어있기 때문이란다.

* 만약 다음과 같은 오류 메시지를 접하게 된다면 clr enabled 옵션을 확인 해 볼 필요가 있다.

System.Data.SqlClient.SqlException: .NET Framework에서 사용자 코드를 실행할 수 없습니다.


clr enabled 옵션을 변경하기 위해서 다음과 같이 두 가지 방법을 사용할 수 있다.

1. sp_configure를 사용하는 방법
쿼리 실행창에 다음 쿼리를 실행 시킨다.

sp_configure 'clr enable', 1
go
reconfigure
go

clr enabled 옵션을 1에서 0으로 변경할 경우 작성한 어셈블리는 모두 unload 된다.

2. SQL Server 노출 영역 구성 툴을 이용하는 방법

'Microsoft SQL Server 2005' 프로그램 그룹에 '구성 도구'라는 폴더를 보면 'SQL Server 노출 영역 구성'이라는 프로그램이 보일 것이다. 이를 실행시키면 다음과 같은 화면을 볼 수 있다.

하단 '기능에 대한 노출 영역 구성'을 선택하면 다음과 같음 화면을 볼 수 있다.

 
CLR 통합 항목을 선택하고 CLR 통합 사용 항목을 체크하고 확인을 누른 후 프로그램을 종료한다. 
* 비스타 사용자의 경우 사용자 로그인 오류 메시지가 뜰 수도 있다. 이럴 경우 관리자 권한으로 실행해 보자.

저작자 표시 비영리 동일 조건 변경 허락
Posted by 말 없는 수다쟁이 우드너

최근에 달린 댓글

최근에 받은 트랙백

글 보관함