16
March
2010
ColdFusion과 MySQL로 만든 간단한 고객지원 Board Application
Category :
ColdFusion
Posted by
장창학 at 2:22 AM
지난달부터 주말을 이용해서 조금씩 회사내에서 사용할 고객지원게시판(제작한 홈페이지 및 유지보수에 관련한 문의를 접수 받고, 처리결과 답변을 다는 용도)을 ColdFusion으로 만들어 봤습니다. 보기에는 정말 단순 게시판이라 사실 공개하기도 그렇고, 바쁜 일정 주말에 집에서 틈을 내에 작업한 거라 처음의 계획인 Ajax나 jQuery를 완벽히 도입, 웹표준지원 등등 나름의 계획은 안드로메다로 가버린지 오래고.. 빨리 만들어야 한다는 압박감에 사실상 과거의 개발 악습을 그대로 답습한 어플이 되고 말았습니다. ㅠㅠ; 부끄럽지만 주요기능은 다음과 같습니다.(관리자 기능은 없습니다.)
- Flex+ColdFusion+MySQL 연동 파일업로더
- Railo 3.0, Adobe ColdFusion 8이상 지원
- 첨부파일 저장경로 지정(웹디렉토리외 /home/data 등 사용자 홈디렉토리외 주요 경로에서도 업로드/다운로드 가능)
- PDF생성기능
- 첨부파일 일괄압축 다운로드기능
- 첨부이미지 리사이즈 기능
- 첨부파일 확장자 제한 기능
- 첨부파일이 이미지인 경우 실제 이미지 인지 단순 확장자 변경파일인 구분하여 실제 이미지만 업로드 가능한 보안고려
- 사용자 이메일 이미지출력 기능(이메일 주소는 수집불가능하게 이미지로 표기됨)
- CAPTCHA 보안기능
- 다중게시물 보기 기능(관리자만)
- 처리자답변 댓글기능(관리자만)
- SQL인젝션/XSS공격 대응 보안을 고려한 코딩
- 사용자 예외처리 및 에러페이지
- 기타 등등 무진장 소소한 눈에 보이지 않는 기능
- 앞으로 개선할 것이라는 지켜지지 못할 것 같은 다짐기능 등등
일단 한번 테스트 계정을 만들어 설치 했습니다. 관리자 비밀번호는 123456입니다. 아직 별도의 관리자모드가 없습니다. 사용자가 쓴 글은 자신의 비밀번호를 입력해야만 열람이 가능하므로 게시물을 읽을때 관리자 비번을 넣게 되면 다른 모든 글을 읽거나 삭제하거나 할 수 있습니다.(단, 수정은 작성자 본인만 가능) 첨부파일은 개별최대용량이 20MB이내이나 5MB이내로 테스트해주시면 감사하겠습니다. ㅠㅠ;
몇몇기능은 간단한 게시판에 비해 기술적 문제가 참 많았었는데요. 그중 하나는 Flex업로더에서 Flex의 버그인지 모르겠는데, 첨부파일확장자를 Actionscript로 제한을 걸어 파일첨부 다이얼로그 창에서 열람가능한 파일 확장자 목록을 제한했다고 하더라고 그 다이얼로그창에서 강제로 탐색기의 내의 파일의 확장자를 변경하면 실제 허용되지 않는 파일도 업로드가 가능한 매우 위험스런 상황이 있었습니다. 제가 사용한 Flex코드만의 문제인지 다른 경우도 해당되는지 확인은 못했습니다만, 역시나 Flex나 Flash만으로는 정작 중요한 것은 못한다는 저의 비관론에 또 한표가 쏠리고 말았습니다. ㅠㅠ; 결국 Flex에서도 파일 확장자를 제한하지만 ColdFusion에서 다시한번 Check하는 구조로 갔습니다. 특히 쉘스크립트인데 jpg와 같은 허용확장자로 둔갑한 경우를 실제 이미지인지 파악하기 위한 것도 고려했구요, 사용자 파일이나 콘텐츠보호(다운로드 경로를 완전 숨기기 위한)를 위해 웹디렉토리 하위가 아니더라도 업로드 및 다운로드가 가능하게 되어 있어 파일 보안은 중요했습니다.
두번째는 역시 DB화가 다소 까다로운 Flex의 파일 업로드.. 파일자체의 업로드는 끝내주지만, 업로드된 항목을 DB화하고, 게시글과 조인하도록 하기 위해서 별도의 읽기플러그인이 필요했습니다. 간단하게 CFML코드로 만들기 했지만 업로드만 해놓고 글을 작성안해버린다던지, 등등 의 예외사항을 고려하여 디스크 낭비를 막고자 Railo나 ColdFusion서버의 내장 스케줄러를 통한 임시업로드 공간을 주기적으로 삭제하여 잘못 업로드된 파일 정리가 가능합니다.(요건 테스트 버전에서는 빠져 있고, 실제 사용자화면에서는 어케 보여드릴 수 없는 그런 것이 아니라서 패스~)
마지막은 역시나 한글파일명의 첨부파일들이 문제거리 였습니다. 한글, 한자, 특수문자, 공백 등 사용자가 맘대로 지정한 파일명을 가공없이 그대로 제공하려고 노력했습니다만 일단 시스템간 문제가 되는 공백만 _로 치환하고 나머진 그대로 적용되도록 했습니다. 별도의 다운로더 처리코드가 있어 브라우저별 헤더가 다른 부분도 골치긴 했지만 어케 했는지 기억도 안나는데 암튼 어케 해서 그럭저럭 되는 것 같군요.ㅋㅋ (무성의한 설명..ㅋㅋ)
http://www.cfapplication.net(관리자로 게시글을 읽으려면 123456을 비밀번호로 입력)에서 테스트 가능합니다. 참고로 세션을 제거하려면 상단 우측의 ?표시를 클릭하시면 로그인된 세션이 제거됩니다.
16
March
2010
RefCardz의 CFBuilder 관련문서 - Getting Started with Adobe ColdFusion Builder
Category :
ColdFusion
Posted by
장창학 at 2:04 AM
Free Cheat Sheets for Developers는 개발자에게 간단한 어떤 기술 또는 제품에 대하여 설명하는 일종의 기술백서인데 거의 4~5페이지 분량으로 간략한 요약을 통해 쉽게 해당 기술이나 제품을 알 수 있도록 정보를 제공하는 웹사이트입니다. 현재 Adobe의 ColdFusion 개발자센터에는 Adobe ColdFusion 9에 대한 RefCardz가 연결되어 있습니다. (ColdFusion 9 Refcardz) RefCardz는 회원가입만 하면 기술백서가 새로이 추가될때 이메일로 알려주며 또 PDF로 다운로드할 수 있는 링크를 제공합니다. 물론 회원가입하지 않아도 웹에서 열람은 가능합니다.
오늘 메일을 확인하니 몇주전에 예정한 Adobe ColdFusion Builder에 대한 내용이 드디어 나왔더군요. 주소는 http://refcardz.dzone.com/refcardz/getting-started-adobe?oid=hom19601 입니다.
Adobe ColdFusion Builder Beta 3의 유효기간이 채 20여일을 남겨두지 않고 있는데 beta4가 나올지, 아니면 정식제품이 나올지 궁금합니다. 놀라운 가격으로 상반기께 출시된다는 소문만 무성한채.. 이클립스 기반이라 조금 무거운 감은 있지만 일단 한번 손에 익어버리니 딴건 손이 안가더군요. 가격부담으로 드림위버를 선택하기 힘든 분들께는 좋은 선택이 아닐까. 생각됩니다. 빨리 나오면 구매하고 싶은데..
8
March
2010
ColdFusion 9 - PPT파일변환기
Category :
ColdFusion
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도 참조해 보시길 바랍니다.
7
March
2010
ColdFusion 9 DVD 주문 도착
Category :
Miscellaneous
,
ColdFusion
Posted by
장창학 at 3:57 AM
목요일에 주문했던 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 버전은 늘 제 노트북에 깔려 있어야 겠네요.
다음은 박스 사진입니다.
25
February
2010
Adobe Edge Newsletter - ColdFusion 9와 함께하는 빠른 RIA개발
Category :
ColdFusion
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