Entries for month: March 2010



Adobe ColdFusion 9 Web Application Construction Kit이 출간되려나 봅니다.
Category : Tech books Comments : 댓글쓰기 Posted by 장창학 at 5:01 PM

Adobe ColdFusion 9 Web Application Construction KitBen Forta의 ColdFusion서적인 Web Application Construction Kit이 새로운 Adobe ColdFusion 9의 출시에 맞춰 출간을 준비중인가 봅니다. 이번에도 지난 버전8때와 같이 3권으로 구성되고, 내용도 같은 구조인데, 새로운 버전9에서 추가된 태그와 함수, 또는 기능에 대해 보강을 할 예정인거 같습니다. 특히 몇몇 새로운 태그와 ORM에 대한 내용, ColdFusion Builder에 대한 내용이 추가되겠죠.

사실 MX7버전때의 서적처럼 2권으로 구성하고 주요챕터는 PDF로 구성하는 방법이 제일 좋은 것 같은데 비싸게 또 3권이네요. 종이질도 MX7땍 훨씬 좋은데.. 제가 지난 버전8때의 책을 모두 구매했는데 대략 18만원정도 주었습니다. 이번에는 환율이 어찌 반영될련지. 아마도 올 여름넘어 가을쯤 구매가 가능하리라 봅니다.

급하지 않으면 기다리는 것도 낫겠지만 그전에라도 이전버전 책으로 충분하니 구매하려면 강컴 등에서 해외주문하시면 되겠습니다.

참고로 Ben Forta의 영어문체는 해석하기 쉬운 편입니다. 평이하게 쓰거든요.. 다국어 사용자를 위해서인진 몰라도. ㅎㅎ


Naver PhotoEditor API를 이용한 간단 이미지 편집기 만들기
Category : Flash/RIA , ColdFusion Comments : 댓글쓰기 Posted by 장창학 at 3:54 AM

네이버에서는 Flex로 구현된 이미지편집기인 PhotoEditor를 제공하고 있습니다. 최근의 기업용 Flex어플리케이션이 아닌 일반 웹용의 Flex 어플리케이션은 다양한 API를 제공하여 확장가능한 구조로 개방되어 개발되고 있는데 네이버의 포토에디터도 마찬가지 입니다.

PhotoEditor의 API는 URL을 통해 GET/POST/BROWSER방식의 데이터 송수신을 담당하는데, 기본적인 API기능은 사용자PC의 이미지파일 편집 또는 원격지의 이미지를 로드하여 편집. 편집한 이미지를 로컬 또는 원격지의 서버에 Export하기 등인데, 이때 Export될때 이미지데이터를 ColdFusion의 <CFIMAGE>태그를 이용하여 수신하면 복잡하게 바이너리데이터로 변환하거나 하는 작업이 필요하지 않습니다.  간단하게 DB를 이용하지 않고, 자신의 로컬의 이미지를 네이버의 PhotoEditor에 업로드하여, 편집한 후 편집이 끝난 이미지 데이터를 자신의 홈페이지내로 다운로드 받아 저장해 봅시다. 가칭 CFPhotoEditor라고 칭했습니다. 네이버의 PhotoEditor는 비상업적 용도로만 사용이 허가되어 있습니다.

CFPhotoEditor(Naver PhotoEditor)

네이버의 PhotoEditor API설명서를 가지고도 충분히 비슷한 어플을 만들 수 있지만 이 경우 편집이 완료된 이미지는 네이버서버에 저장되어 있다는 문제가 있습니다. 만일 네이버가 사진을 삭제해 버리거나 하는 경우 정상적으로 사진을 볼 수 없겠죠. 그래서 단순히 에디터만 이용하고 원본과 편집본의 이미지 데이터는 내 로컬PC 또는 자신의 홈페이지(원격지) 계정에 저장해 봅시다. 먼저 소스코드 다운로드하여 index.cfm파일를 보시길 바랍니다.

Source Download

Demo View : http://www.cfapplication.net/cfphotoeditor/ 

네이버의 PhotoEditor에서 한가지 아쉬운점은 원본의 이미지명은 편집하단 왼쪽에 표시를 해주면서 편집이 끝나 아웃풋하는 파일명을 원격지에 저장하려고 할때 원본파일명을 아웃풋해주는 API가 없는 것이 좀 아쉽습니다. 강제로 이미지명을 지정하게 되는데 이 경우 다중사용자가 접속해서 편집하는 경우 편집한 이미지가 뒤바뀌어 덮어씌어지는 문제가 발생하게 됩니다. 그래서 ColdFusion에서 CreateUUID()함수를 이용해서 사용자가 접속할 때마다 35자리의 특수한 유일키값을 생성해서 이미지명으로 아웃풋해주어 중복을 피했습니다만, 이 경우도 이미지파일명이 알 수 없는 파이명으로 바뀐다는 단점이 있습니다. 첨부파일 소스 코드와 주석을 살펴보시길 바랍니다.

예전에 제 블로그에서 소개한바 있던 가로가 길거나 세로가 긴 이미지여도 정확한 정상비율로 정사각형 이미지 리사이즈에 대한 사용자정의함수를 이곳에서 UDF(User Difined Function : 사용자정의함수)가 아닌 단순 CFML코드로 사용했습니다. 사실 이 부분을 제외한 나머지는 너무나 쉬운 CFML입문자 수준의 코드이므로 이해에 별 어려움은 없을 것으로 생각됩니다.


Buy ColdFusion Builder
Category : ColdFusion Builder Comments : 2 Comments Posted by 장창학 at 1:34 PM

ColdFusion BuilderColdFusion Builder 언제 나오냐고 글 포스팅한지 2시간만에 내 말을 듣고 있었는지 기습적으로 출시를 단행한 Adobe. ㅎㅎ 이전 ColdFusion Builder Beta 3는 3월30일까지만 쓸 수 있기에 ColdFusion Builder로 프로젝트를 진행했던 분들은 어서어서 구매을 해야 할지도 모르겠네요.

특히한것은 ColdFusion Builder를 구매하면 Flash Builder Standard Edition이 포함되어 있어 별도의 라이센스 없이 사용가능하다는 겁니다. 물론 Chart 등의 컴포넌트 등이 제한된 버전이겠지만. 어쨋든.

현재 Adobe Store에 299달러로 표기되어 있는데요. 한화로 약 35만원이내 입니다만, 예상보다는 비싸군요. 파격적인 가격으로 출시한다기에 UltraEdit처럼 통합환경이여도 20만원내외의 제품처럼 20만원 내외이지 않을까 했는데 다소 애매한 가격이군요.

참고URL : http://www.adobe.com/products/coldfusion/buy/#cfb


ColdFusion Builder Beta 3 - 8 days remains.
Category : ColdFusion Builder , Miscellaneous Comments : 4 Comments Posted by 장창학 at 10:20 AM

ColdFusion Builder Beta 3의 작동가능 시간이 8일 남았는데 도대체 Adobe는 언제나 ColdFusion Builder를 내놓을까요? 당당 멀었다면.. Beta 4라도 진즉 내놓았어야 했는데. 일주일 후면 모든 ColdFusion Builder Beta 3의 작동은 멈추게 됩니다. 좀 무책임하군요. Flash/Flex관련 베타버전은 주구장창 잘도 내놓더니만.. 초저가 세일을 준비하고 있는지도..^^

ColdFusion Builder Beta 3 expires days


ColdFusion(Railo)와 Cubrid의 만남
Category : ColdFusion , Database Comments : 2 Comments Posted by 장창학 at 4:59 AM

지금껏 ColdFusion을 공부해 오면서 SQL구문때문에 골치썩어본 적은 단 한번도 없었습니다. 물론 각 Database Server를 만드는 벤더마다의 지원하는 함수 등의 차이, 기능상의 차이로 일부 SQL구문이 달라지기도 하지만 사실 대부분의 Web Application Server에서의 처럼 ColdFusion에서도 DSN(Data Source Name)이란 개념이 있어 DB의 연결과 해제에 대해 고민할 일이 실상은 거의 없다는 점은 분명 저에게는 엄청난 매력입니다. 하지만 일반 J2EE기반의 JSP/Servlet WAS와는 또 다르게 정말 평이한 SQL구문을 작성하게 하는 ColdFusion의 장점때문에 대부분의 PHP와 같은 타 언어에서는 MySQL to MSSQL 등의 DB Migration이 실상 엄두내기가 쉽지 않는 작업에 비하여, ColdFusion으로 작성된 코드는 거의 (코드작성량 또는 어플리케이션의 크기에 따라 다르겠지만) 하루면 끝난다는 것은 분명 매력적인 것이 아닐까 생각합니다. PHP코드에서 MySQL을 지원하는 함수와 MSSQL을 지원하는 함수가 달라 이 부분을 일일히 찾아 바꾼다는 것 정말 끔찍한 일입니다.

얼마전에 이래저래 인터넷서핑을 하다가 네이버의 큐브리드(Cubrid)에 관련된 이벤트를 하나 보았습니다. 일단 솔직히 말씀드려 경품에 눈이 멀어서 이글도 (경품은 소박하게 참가자 전원에게 준다는 4GB USB를 노리고 있습니다. 저는 사실 DB에 대한 지식은 거의 무식에 가까울 정도입니다. 특히 SQL구문에 대해서는 더더욱. ㅠㅠ) 큐브리드와 ColdFusion을 접목할 수 있을까? 있겠지? 하던차에 한번 해봐야 겠다고 작심하고 그 결과를 정리는 차원에서 작성중입니다.

몇해전 천안에 있는 독립기념관의 홈페이지 리뉴얼 사업에 저희 회사에서도 참가신청을 한 적이 있었습니다. 물론 저희 업체는 탈락했습니다..ㅠㅠ; 당시 PT를 제가 했는데, 저희 회사에서는 시스템 환경을 Apache, PHP, MySQL을 제안했었습니다. 물론 그 때 당시 독립기념과의 홈페이지 시스템환경 역시 DB를 제외한 나머지는 동일한 사양인것으로 기업합니다만, 심사위원 대부분이 기 구축된 막대한 양의 Database를 어떻게 재가공하고 정리할 것이며, MySQL로 안정적으로 이전할 것인지 집중적으로 물어왔습니다. 그때당시 UniSQL이란 이름에 대해 막연하게 제품명만 알고 있었고, 일반 웹사이트에서는 거의 사용하지 않는 그야말로 희귀종의 DBMS로 생각했기에 저의 대답은 예상하신대로 시원찮았습니다. 뭐.. 그냥 옮긴다는 막연한 답변 ㅠㅠ;(뭘 알아야 답변을 하지..)

당시 저의 회사에서는 uniSQL을 다루는 분이 없었기에 그 전에 다니던 회사에서 근무하던 개발자에게 물어보니 거의 저주에 가까운 막말을 쏟아냈습니다. 그때의 들은 말을 그대로 옮겨보자면 "살다살다 이런 쓰레기같은 DB는 처음본다"는 것이 그분의 말이였는데 아주 예전의 UniSQL을 접했던 분이라 뭔가 기술적인 부분에서 엄청 데었구나 했습니다. 그래서 저의 첫 UniSQL에 대한 인상은 일단 형편없는 제품이고, 일부 영업맨의 눈물겨운 성공스토리로 일부 기관에 깔려댄 것으로 여기게 되었습니다. 워낙 주변의 악평이 많아서.. 그러나 어찌어찌 이 UniSQL이 Cubrid라는 제품명으로 이름이 바뀌고 여차저차 오픈소스가 되면서 NHN과 합병하는 등등의 세간의 뉴스는 접하고 있었으나 4GB USB의 경품을 보지 못한 3일전까지 정확하게 완전히 외면하고 살았습니다.

실제 저는 본격적인 개발을 하는 입장은 아니고, 회사내에서 기획파트에서 주력하다보니 코딩은 거의 취미로 하고 있는데, 부끄럽지만 ColdFusion이란 것을 공부하고 있고 거의 MySQL에서 작업을 하고 있어 4GB USB를 받겠다는 신념으로 오늘 제 VPS환겨에 Cubrid도 깔고, PC에 Cubrid Manager도 설치하고 MySQL과 같은듯 하면서도 또 다른 Cubrid의 쿼리문을 기술문서, 검색 등등 하루종일 부산을 떨었습니다. ㅎㅎ

솔직히 설치하는 작업은 간단해서 뭐.. 만족등급을 주고 싶은데, 역시나 Cubrid에도 당장 시급해 보이는 것이 전문 문서팀이 있어야 겠다는 생각입니다. 소스포지에도 등록할 정도로 공개에 자신이 있다면 제품의 성능이나 기능도 중요하지만 무엇보다 사용자층을 넓히려면 기술문서 정리가 잘되어 있어야 하는데, 대강의 기술문서는 정리된듯하나 실제 코딩작업시에 도움되는 정도의 양은 아니거니와 제로보드를 사용하여 실 사용모습을 보여주려고 그랬는지 모르겠지만 게시판에 정리도 안된 문서를 마구잡이식으로 중복된 내용을 거르지도 않고 등록해놔 정말 짜증이 제대로 났었습니다. 흔한 설치문서 하나없는 오픈소스 프로젝트도 많지만 이정도로 홈페이지가 정리안된 것도 사실 처음 봅니다.(MS나 Oracle정도의 개발자센터내의 도큐먼트를 원하진 않습니다만..) 처음 접하는 사용자를 위한 ABC가 무척 아쉽습니다.(있긴 있는데 정리도 안되었고, 버전정리도 안되서.. 보는게 더 짜증이였습니다. 한번에 알아보는 뭐 그런거.. 그걸 원하는 제가 나쁜놈일까요?)

암튼 각설하고. 저는 VPS(가상서버)를 2대 운영중인데 둘다 MySQL이 운영중이지만 이 블로그와 같이 실제 서비스되는 웹사이트가 적은 두번째 VPS에 Cubrid를 설치했습니다. 자.. J2EE기반의 WAS를 운영해 보면 JDBC라는 말이 많이 나오는데, 일단 이 드라이버를 깔아야 겠는데 cubrid는 설치 디렉토리내에 jdbc란 디렉토리안에 버전별로 존재하더군요. 저는 Linux서버를 운영중이므로 Cubrid를  /opt/CUBRID에 설치했습니다. 물론 Railo라는 ColdFusion엔진은 /opt/railo가 설치디렉토리입니다. (Adobe ColdFusion엔진을 가지고 테스트 해보려고 했는데 이 경우 실제 운영중인 웹사이트를 확보할 라이센스를 구매해야 해서 오픈소스인 Railo를 가지고 했습니다. 어짜피 둘은 같은거라서.)

1. Cubrid JDBC Driver를 Railo에 설치

Railo에서 JDBC를 사용해야 하고, 하위 Context에서 모두 사용가능하게 하려면, 아래 그림과 같이 CUBRID/jdbc안의 JDBC-8.2.1.0125.jar파일을 railo/lib안에 복사를 해줘야 합니다. 아래 그림과 같이 복사합니다.(경로는 순전히 저의 시스템의 경로입니다.)

cubrid railo

그런다음, Railo를 재시작해 줍니다. 웹으로 Railo를 관리하는 Server Admin에서가 아닌 콘솔상에서 아예 데몬을 재시작합니다. 기본적으로 Railo를 Caucho Resin과 통합된 버전을 설치했다면, /opt/railo/bin/httpd.sh 파일을 재시작합니다. (./httpd.sh restart) Adobe ColdFusion 역시 이와 같게 JDBC-8.2.1.0125.jar파일을 ColdFusion설치 경로 안의 lib안에 복사해 줘야 합니다.

2. Railo Context에서 DSN(Data Source Name)지정하기

자, 그런다음, 자신의 웹사이트의 Railo Context로 로그인하여 DSN을 지정합니다. Adobe ColdFusion도 자신의 context에서 DSN을 지정합니다. 아래의 그림은 Railo의 웹관리자(context)에서의 DSN지정화면입니다. 그림에서처럼 Cubrid의 JDBC URL과 Driver명을 잘 지정합니다. BLOB등의 옵션은 실제 Cubrid와 관련이 없습니다만, DSN을 지정할때 Railo나 Adobe ColdFusion과 같은 외산 WAS에서는 Cubrid를 선택하는 항목이 없으므로 Others항목에서 지정해야 합니다. 이 부분이 왜 불편하냐면 DSN항목에 DB명이 있으면 공식지원하는 DB이므로 JDBC드라이버와 URL, Driver명이 자동으로 내장되어 있어 그냥 DB명/사용자명/비밀번호만 등록하면 되므로 편리하지만 그렇지 아니한 경우 일일히 타이핑을 해 주는 수고가 뒤따르고 위 1번에서처럼 JDBC드라이버 퍼일도 직접 설치해야 하는 수고를 해야 하기 때문이죠. 일단 아래 그림처럼 지정합니다.

유니코드를 써야 하므로 UTF-8을 지정하는 것 잊지마세요.  ColdFusion은 기본적으로 한글도 1byte로 계산하고, Railo에서는 Form, URL등의 인코딩셋도 지정할 수 있어 유니코드로 작성하는 것이 매우 유리합니다. 특히 한글 1자를 1byte로 처리한 다는 것이 얼마나 편리한지 코딩해보면 알 것입니다. 특히 글자자를때 PHP에서 ??같이 한글을 짤리는 것을 막기위해 별도의 함수를 코딩해야 하는 것과 다르게 ColdFusion에서는 LEFT()함수 하나로 처리합니다.

Railo Cubrid DSN

자, ColdFusion에서 Cubrid로 개발할 환경은 대강 잡혔습니다. 그럼 이제 실제 코딩만해야 해야 하는데.. 일단, 제가 ColdFusion + MySQL로 얼마전에 만든 간단한 고객응대용 게시판을 Cubrid로 다시 만들어 보았습니다. 저희회사에서 실제 사용중인 소스라 직접적인 공개는 어렵고, 또 저의 형편없는 코딩능력으로 인해 소스가 굉장히 지저분합니다. 다행히 저의 모자란 코딩능력으로 떨어진 퍼포먼스는 강력한 ColdFusion의 성능에서 커버하고 있는지라.. ㅎㅎㅎㅎㅎㅎ 암튼 수주내에 정리하여 소스는 공개하도록 하겠습니다. 일단 큐브리드 매니저에서 다음 그림과 같이 DB생성, 사용자추가, 테이블생성했습니다.

Cubrid Manager

게시판자체의 소스가 매우 간결하고, 실제 파일갯수도 몇개 안되어 MySQL용으로 만든 이 소스를 Cubrid로 바꾸는데 딱 3분걸렸습니다.(FTP업로드 시간 포함 ㅠㅠ;) 단순게시판이라 거의 표준 SQL문만 쓰기 때문에 가능했지만, 실제 대용량에서도 ColdFusion은 그리 어렵지 않게 Migration할 수 있을 것입니다. 이 게시판의 주요 기능은 ColdFusion과 MySQL로 만든 간단한 고객지원 Board Application 을 참조해 주시고, 테스트 URL은 다음과 같습니다. 글은 자신이 작성시 입력한 비밀번호로 조회가능하고 관리자용(123456)을 입력하면 모든 글을 볼 수 있습니다.  Cubrid용 게시판에서는 서버환경문제로 파일다운로드에 문제가 있습니다. PDF 생성기능 역시 해당 VPS의 Railo서버에 한글 Font가 설치되지 않아 한글은 모두 깨져 보입니다. 이점 양해 바랍니다. 이 부분은 MySQL용에서 테스트해 주세요. 어짜피 ColdFusion이나 Cubrid의 문제가 아니라 시스템상의 문제이므로..


About me

Categories

Monthly Archives

Links

Recent Posts

Recent Comments