Entries Tagged as 'ColdFusion'



ColdFusion 9 - PPT파일변환기
Category : ColdFusion Comments : 댓글쓰기 Posted by 장창학 at 2:15 AM

PPT문서(PowerPoint문서)를 웹에서 동적으로 작성하기 위한 글은 예전에 제 블로그에서 소개한바 있습니다. 간단하게 HTML로 작성되어 POST로 넘어오는 컨텐츠를 ColdFusion을 이용해서 PPT파일로 만들어 보는 예제였습니다. (미리보기는 제 개인 PC에서 테스트해 볼 수 있지만 링크가 추후 연결되지 않을 수 있습니다.)

오늘은 미리 사용자에 의해 작성된 PPT문서를 웹상에서 업로드만 해주면 ColdFusion을 이용해서 PPT문서, PDF문서, Acrobat Connect(Adobe Presenter와 비슷한 플래시기반의 프리젠테이션기능 - 관련내용은 예전글 참조), HTML미리보기(이미지변환)으로 총 4가지 서비스를 동적으로 만들어 보는 예제를 작성해 보고자 합니다. 이 예제는 원래 Josh Adams의 블로그에 있는 Presentastic: Working with PowerPoint Files in ColdFusion 9를 기본 소스로 하고 있는데, 일부 Uninx(Linux)시스템에서 해당 소스가 오류가 나는 것을 변경한 것 입니다.(미리보기)

Source Code : ColdFusion9PPT.zip

ColdFusion에서 Office 파일의 변환 예를 들어, TXT나 HTML문서를 PDF로 변환하는 기능은 아주 오래전 부터 지원하던 기능중에 하나였습니다. HTML양식 그대로 PDF로 만들어 주기 때문에 다른 언어에서 제작하는 것 보다 쉽게 만들 수 있었습니다. 관련내용은 아래 글 참조.

그런데 이번 ColdFusion 9부터는 서버상의 OpenOffice를 이용하여(반드시 서버상에 OpenOffice의 각 OS버전별 설치 라이브러리가 미리 설치되어 있어야 합니다.) 쉽게 PPT, DOC, XSL 등의 읽기, 작성, 상호변환이 가능하게 되었습니다. 상호변환 및 읽기 등의 가능여부는 상호변환표를 참조하세요.

사실 Railo나 OpenBD에서는 다소 부러운 기능중의 하나이지만 Railo나 OpenBD 또는 ColdFusion MX 7이하버전에서도 PPT에 관련된 기능은 RAIForge의 PPTUtils를 이용해서 PPT문서내의 Text와 이미지를 추출해 내어 HTML문서로 만들 수 있습니다. 이 공개소스를 작성한 Todd Sharp가 이 프로젝트로 만든 웹사이트가 바로 SlideSix라는 것으로서 PPT파일을 업로드하면 자동으로 Flex기반의 웹프리젠테이션을 만들어 주는 서비스입니다.(무료로 이용가능하지만 소스코드는 공개되어 있지 않습니다.) 대부분 이러한 기능은 Apache의 POI프로젝트의 결과물들인데 ColdFusion으로는 보다 쉽게 만들 수 있다는 장점이 있습니다.

물론 Microsoft의 powerPoint, Word, Excel 모두 MS의 Office제품들이기 때문에 ActiveX를 이용한 Office Library기반의 ASP.NET으로 개발된 제품보다는 세세한 면에서 뒤쳐질지 모르겠습니다만, 특정 서버플랫폼에 구애받지 않고, 또 표준 Office문서를 OpenOffice를 이용하여 다루기 때문에 라이센스비용이 전혀 없다는 점은 매우 뛰어난 매력이 아닐까 생각합니다.

"ColdFusion 9 - PPT파일변환기"라고 임시로 이름지은 이 소스는 Josh Adams의 소스코드이며, Unix(Linux)에 맞게 변경되고 디버깅되었습니다. 임시 제 PC에서 테스트해 볼 수 있습니다만, 링크가 깨지면 소스코드를 다운로드 받아 ColdFusion 9 Developer버전이 깔려있는 본인의 PC에서 테스트해보시길 바랍니다. (이 기능은 Adobe ColdFusion 9 Enterprise 버전에서만 지원됩니다. Developer버전은 Enterprise와 동일한 기능을 제공합니다.)

추가적으로 Raymond Camden의 Reading Office documents with ColdFusion도 참조해 보시길 바랍니다.


ColdFusion 9 DVD 주문 도착
Category : Miscellaneous , ColdFusion Comments : 4 Comments Posted by 장창학 at 3:57 AM

Adobe ColdFusion 9목요일에 주문했던 ColdFusion 9 DVD가 도착했습니다. 회사에서 개발용 & 홈페이지 서비스용으로 쓰기 위하여 별도의 서버1대와 ColdFusion DVD를 마련했습니다. 품의를 하고나서 그동안 Railo에 맞춰 개발했던 소스코드 일부를 수정하고 있는데 의외로 Adobe ColdFusion에서 코드가 엄격해서 혼났습니다.

가령, Query결과 문자열을 지정된 자리수 만큼 자르기 위해 다음과 같이 작성하면 Adobe ColdFusion에서는 오류를 뿜어 냅니다. 영 깐깐하군요.

쉽게말해 함수내의 변수를 아웃풋하려고 ##으로 Wrap을 하면, Adobe ColdFusion은 Error를, Railo는 정상적으로 표기됩니다. 물론 Adobe 식으로 해도 Railo는 해석을 잘 합니다.

LEFT(#QueryResult.Strings#, 100)
Adobe ColdFusion 에서는 오류가 납니다. 하지만 Railo에서는 정상적으로 해석합니다.

LEFT(QueryResult.Strings, 100)
Adobe ColdFusion, Railo 모두 정상적으로 해석합니다.

작업한 결과물이 대부분 이런 오류였습니다. ㅠㅠ; 일부 Railo에서만 지원하는 함수도 변경해야 했고. 아주 일부긴 하지만 말입니다. 이번에 구매한 버전은 Adobe ColdFusion 9 Standard였는데 11번가에서 구매했구요. 가격은 무려 196만원. 예상과 달리 Asia-Pacific용으로 배송되었습니다. 대부분 Amazon이나 Ebay에서는 미주대륙용만 판매하던데.. 암튼 잘 되었습니다. 국내에서는 Adobe 라이센스가 아시아-태평양지역 버전만 정품으로 인정을 받거든요. 개인적으로는 Railo가 가격이나 확장성, 가벼움 등 맘에 들지만 아무래도 RIA구성을 위해서는 Adobe ColdFusion이 필수적일 것 같고, 또 새로운 기능을 꼭 한번 써보고 싶어서 주문을 했습니다. 대부분의 기능이 구현되지만 아무래도 Standard버전이란게 일부 기능에서는 제한적이라, Developer 버전은 늘 제 노트북에 깔려 있어야 겠네요.

다음은 박스 사진입니다.


Adobe Edge Newsletter - ColdFusion 9와 함께하는 빠른 RIA개발
Category : ColdFusion Comments : 댓글쓰기 Posted by 장창학 at 5:29 PM

Adobe Japan에서 받아보는 Edge뉴스레터에서 ColdFusion 9와 관련한 기사가 메일함에 왔길래 새로이 ColdFusion이 뭔지 궁금히 하시는 입문자를 위해 링크 걸어 둡니다. 기사가 일본어로 되어 있기 때문에 구글번역을 통해 링크를 겁니다만 이해하는데는 무리가 없으리라 봅니다. 혹 궁금하신 사항이 있거든 네이버의 Open ColdFusion Cafe로 문의바랍니다.

기사보기 :
http://translate.google.co.kr/translate?hl=ko&sl=ja&tl=ko&u=http%3A%2F%2Fwww.adobe.com%2Fjp%2Fnewsletters%2Fedge%2Ffebruary2010%2FFcontent%2Findex.html


ColdFusion Server Manager에서 수십대의 ColdFusion 서버를 보안업데이트 한다?
Category : ColdFusion Comments : 1 Comment Posted by 장창학 at 11:27 AM

Adobe ColdFusion 9에서 함께 배포되는 ColdFusion Server Manager(하지만 별도로 다운로드 받아 설치할 수 있는 무료 AIR기반 S/W)는 간단한 AIR기반 유틸리티지만 거의 ColdFusion Server Web 관리자 기능 대부분을 가지고 있습니다. Server의 중지와 시동은 물론이거니와 DSN의 생성/삭제/수정, 메일서버의 정의 등 대부분의 웹관리자 기능을 그대로 옮겨 놓았습니다. 이 유틸리티는 Adobe ColdFusion 9를 설치하면 웹관리자내에서 다운로드하거나 설치디렉토리 하위의 \wwwroot\CFIDE\ServerManager 디렉토리안에 ServerManager.air라는 파일로 있습니다.(여기서도 다운로드 받을 수 있습니다. http://www.nooree.com/blog/post.cfm/coldfusion-server-manager)

그런데 한국내에서는 그럴일이 거의 없겠지만 어떤 회사(대부분 웹호스팅회사 등)에서 수십대의 ColdFusion Server를 운영하고 있거나 또는 고객사의 서버를 원격을 관리하는 경우 이 AIR기반의 ColdFusion Server Manager를 이용하면 쉽게 관리가 가능해 지는데, 모든 서버에 대한 보안업데이트를 적용하는 경우 기존에는 일일 해당서버의 웹관리자로 로그인하여 패치해야 했습니다만, Server Manager를 이용하면, 한번에 적용하고자 하는 서버를 선택적으로 또는 전부를 적용할 수 있습니다.

먼저 Server의 목록에서 적용하고자 하는 서버를 선택한 다음 아래의 그림처럼 Server Tasks아래 Apply Hotfix 메뉴를 선택하면 패치파일을 선택하는 창이 뜨게 되는데 적용하고자 하는 Hotfix의 Jar파일을 선택해주면 적용하고자는 모든 서버에 패치가 적용됩니다. 간단하지만 매우 유용한 기능이 아닐까 싶네요. 혹, 2대이상의 서버를 관리하는 경우 사용해 보시길 바랍니다. 서비스를 목적으로하는 프로덕트서버 뿐만 아니라 개발목적의 로컬서버도 적용가능합니다.

ColdFusion Server Manager


Image를 Resize할때 정사각형 비율로 Resizing하기
Category : ColdFusion , Railo Comments : 2 Comments Posted by 장창학 at 10:54 PM

Square Image ResizeColdFusion에서 이미지를 Resize하는 방법은 imageResize() 함수를 쓰게 되면 쉽게 가로사이즈를 변경할 수 있습니다. 물론 함수는 Adobe ColdFusion 8 또는 Railo 3이상의 환경에서 지원합니다. 그런데 이미지를 리사이징하다보면 가로가 더 길거나 세로가 더 긴 직사각형 이미지가 대부분입니다. 그리고, HTML이나 ColdFusion에서 사이즈를 줄 일 경우 대부분 Width값만 조절하면 Height값은 비율에 따라 자동으로 조절됩니다. 하지만 Design의 특성상 또는 Twitter에서의 Profile 사진처럼 정사각형으로 이미지를 보여야 하는 경우가 있습니다.

그런데 사용자가 업로드하는 이미지는 언제나 가로가 더 길던, 세로가 더 긴 직사각형 이미지이고, 업로드시 사용자가 Photoshop등에서 미리 정사각형으로 조절하여 업로드 할 수 있지만 매번 그러라고 할 수 도 없는 노릇입니다. 그리고 가로가 길던, 세로가 길던 정사각형으로 리사이즈 하는 경우 이미지의 비율을 찌그러뜨리지 않고(홀쭉이가 되거나 뚱댕이 되는 것이 아닌), 원본 비율대로 사이즈만 조절되어야만 한다면 어떻게 해야 할까요? LearnCF에서의 간단한 예제를 통해 가로세로 비율이 정사각형이 아닌 이미지를 어떻게 정사각형 이미지로 비율 맞추어 리사이즈하는지 알아 봅시다. 먼저 예제를 미리 보시길 바랍니다.

Demo View : http://www.nooree.com/samples/cfimage/square_thumnail.cfm

<cfimage>를 이용해서 특정 이미지의 정보를 읽어 온 다음, squareThumbnail()이라는 사용자 정의 함수(UDF)에 Arguments(여기서는 이미지정보와 리사이즈하고자 하는 목표 사이즈) 를 전달하면, 실행됩니다. 목표 사이즈값은 가로세로의 동일한 값이겠죠? 그리고 다음의 세가지 조건에 따라 프로세싱을 달리 합니다. 첫번째는 가로사이즈가 더 큰 이미지인 경우, 두번째는 세로사이즈가 더 큰 이미지인 경우, 마지막으로 정사각형이미지인 경우로 나누어 처리합니다. 모든 이미지의 정보에서 가로와 세로의 길의 절반값을 계산합니다. 가령 400px*300px 크기의 이미지라면 가로의 절반값은 200px이고, 세로의 경우 150px이 됩니다. 그렇다면 이 이미지의 중심점의 좌표는 X좌표는 200. Y좌표는 150이 됩니다.

그런다음 imageCrop()함수를 이용해서 이 중심좌표를 기준으로 원하는 목표 사이즈 만큼만 가로세로 잘라내면 되겠죠. imageCrop()함수의 기본 사용법은 ImageCrop(name, x, y, width, height) 이므로 X값과 Y값을 지정해 주고, width와 height는 목표 리사이즈 값이므로 동일한 값입니다. 다음의 코드를 보고 X, Y값을 구해보세요. 간단하게 imageResize()함수와 imageCrop()함수를 써서 정사각형 이미지 리사이즈를 구현해 보았습니다.

 

<cffunction name="squareThumbnail" access="private" returntype="void">
	<!--- 함수로 넘어온 Argument정의 --->
	<cfargument name="image" required="true" />
	<cfargument name="size" required="true" />
	<!--- 이미지의 사이즈의 절반을 구함. 전체 사이즈의 2분의 1--->
	<cfset var half = int(arguments.size / 2) />
	<!--- X, Y의 초기값 정의 --->
	<cfset var fromX = 0 />
	<cfset var fromY = 0 />
	<!--- 세로가 더 긴 경우 --->
	<cfif arguments.image.height gt arguments.image.width>
		<cfset imageResize(arguments.image, arguments.size, '') />
		<cfset fromX = arguments.image.Height / 2 - half />
		<cfset imageCrop(arguments.image, 0, fromX, arguments.size, arguments.size) />
	<!--- 가로가 더 긴 경우 --->
	<cfelseif image.width gt image.height>
		<cfset imageResize(arguments.image, '', arguments.size) />
		<cfset fromY = arguments.image.Width / 2 - half />
		<cfset imageCrop(arguments.image, fromY, 0, arguments.size, arguments.size) />
	<cfelse>
		<cfset imageResize(arguments.image, '', arguments.size)>
		<cfset imageCrop(arguments.image, 0, 0, arguments.size, arguments.size)>
	</cfif>
	<!---정사각형으로 리사이즈된 이미지 출력--->
	<cfimage action="writetobrowser" source="#arguments.image#" />
</cffunction>

<h2>김태희 - 정사각형 이미지 리사이즈</h2>

<!---이미지 정보를 읽어옴--->
<cfimage action="read" name="image" source="#expandPath('./kimtaehee.jpg')#" />
<!--- 읽어온 이미지를 화면상에 출력--->
<cfimage action="writetobrowser" source="#image#" />
<!--- squareThumbnail 사용자 함수에 이미지를 대입하여, 정사각형 이미지로 변환--->
<cfset squareThumbnail(image, 150) />

 


About me

Categories

Monthly Archives

Links

Recent Posts

Recent Comments