'2008/08/28'에 해당되는 글 2건

  1. 2008.08.28 무버블타입에 FCKeditor 장착 플러그인
  2. 2008.08.28 java.lang.UnsupportedClassVersionError
98..Etc/Etc...2008. 8. 28. 11:45
반응형

무버블타입에 FCKeditor 장착 플러그인

Go to English entry


이 플러그인은 Movable Type내에서 FCKeditor라는 WYSIWYG 에디터를 쉽게, 또 간편히 커스터마이징시켜 사용할 수 있게 해주는 것입니다. 현재 많은 공개된 WYSIWYG 에디터가 존재합니다. 저는 그 중에서 HTMLArea와 FCKeditor를 조금 사용해 봤는데 둘다 매우 좋은 놈입니다. 물론 그 특성상 PC에 약간의 부하를 주긴 합니다만, 이 자체가 이의 사용여부를 가늠할 잣대로서의 비중은 점점 줄어들거라 봅니다.

alogblogMTinterface 플러그인은 매우 많은 대체 MT 템플릿을 이용합니다. 따라서 사용자가 개인적으로 W~G 에디터를 삽입하고자 하거나 혹은 이를 위한 다른 플러그인(EnhancedEntryEditing같은)을 적용하고자 할 경우에, 이런 저런 문제를 겪을 가능성이 크다 봅니다. 그래서 EnhanceEntryEditing(이는 TinyMCE라는 에디터를 달아 줍니다.)라는 같은 류의 플러그인이 존재함에도 이를 새롭게 추가하게 되었습니다.

이 FCKeditor의 가장 큰 특징/장점 중의 하나가 바로 미디어 브라우져라고 불리는 기능입니다. 이를 이용해 간편하게 이미지 등을 엔트리 작성중에 업로드하고 이 주소를 바로 엔트리 상에 삽입해주는 기능인데, TinyMCE의 경우 이 기능이 별도의 플러그인으로 제공되는데...유료더군요. 유료다보니 기능 자체는 FCKeditor의 그것보다 좀더 좋은것 같습니다만, 당연 사용해보진 못했겠죠.

현재 이 페이지가 설명하는 플러그인은 원래 alogblogMTinterface라는 MT의 기본 인터페이스를 획기적으로(^^) 세련되게 변경해주는 플러그인의 업데이트 버전일 뿐입니다. 즉 현재 이 플러그인을 설치하면 FCKeditor만 MT의 기본 인터페이스에 추가시켜주는게 아니라, alogblogMTinterface라는 제 인터페이스위에 깔리게 됩니다. 이를 현재와 같이 별도의 페이지에 설명하는 것은, 이 FCKeditor사용에 좀더 중점을 두고 설명하기 위함입니다. 인터페이스 자체에 대한 의문 등은 원 페이지를 참조하시길 바람니다.

Requirement

  • Movable Type 3.2
  • PHP, FCKeditor의 미디어 브라우져/업로더 이용시

Features

  • 일반 textarea(FCKeditor창이 아닌)창의 크기를 동적으로 변경할 수 있습니다.
  • FCKeditor창의 크기를 커스터마이징할 수 있습니다.
  • 이모티콘과 업로드한 파일을 저장할 UserFiles 폴더의 경로를 커스터마이징할 수 있습니다.
  • MT시스템의 템플릿을 이용해 FCK에디터의 템플릿 기능을 쉽게 이용할 수 있습니다.
  • MT시스템의 템플릿을 이용해 FCK에디터의 스타일 기능을 쉽게 이용할 수 있습니다.
  • alogblogMTinterface의 "classic, sky, peach" 스타일에 맞춘 FCK 스킨을 이용할 수 있습니다.
  • FCKeditor의 미디어 브라우져/업로더를 쉽게 이용할 수 있습니다.

Installation

아래 내용을 차분히 따라 하면 됩니다. 실제 FCKeditor 사용만을 위해선 1번의 설치후에 5,9번 단계의 간단한 확인 조치만 하면 가능합니다. 나머지 단계는 FCKeditor의 템플릿/스타일 기능을 MT내에서 편하게 사용할 수 있도록 하기 위한 별도의 추가 조치입니다.

  1. 이 플로그인을 받아, (mt home) 폴더 밑에서 $ tar xvfz alogblogMTinterface_fck-3.2.04.tar.gz 등과 같은 명령을 통해 풀어줍니다.
  2. (mt home) 폴더 밑에서 $ perl   tools/add-default-templates 명령을 실행합니다.
    ( *** 만약 터미널 환경에서 이 명령을 실행할 수 없는 상황인 경우엔, 직접 이 명령이 하는 일련의 과정을 수행해주면 가능합니다. )

  3. (mt home)/mt-static/FCKeditor 폴더로 가서 $ chmod -R 777 UserFiles 등의 명령으로 모든 권한을 부여합니다.

Trial for verification

FCKeditor를 디폴트로 설정
"Create New Entry"을 눌러 새 엔트리 작성 화면을 열어 봅니다. 아마 FCKeditor가 나타나지 않을 겁니다. 그건 새로운 엔트리의 "Text Formatting" 이 "Convert Line Breaks"로 디폴트로 되어 있기 때문입니다. 디폴트로 FCKeditor를 사용하길 원한다면 블로그 설정에서 "New Entry Default"탭 메뉴에서 FCKeditor를 디폴트 텍스트 포맷팅으로 정해주면 됩니다.
링크/이미지/플래시 브라우져와 업로더
링크 브라우져라는 것은 엔트리 내에 a태그 즉 링크를 삽입할 때, 그 해당 자원의 주소href의 대상을 내 블로그 서버에 있는 어떤 자원을 가리키고자 할 때 사용하는 것입니다. 이미지/플래시도 마찬가지지만 각각의 파일타입에 맞게 제한되는 것만 다릅니다.

먼저 "이미지 삽입" 메뉴버튼을 클릭해 봅니다. 그럼 팝업창이 뜹니다. 여기에서 소위 "업로더"와 "브라우져" 두가지의 조금 다른 방식으로 파일을 서버에 올릴 수 있습니다. Uploader의 경우에는 특정한 서브폴더를 지정할 수가 없고 그냥 UserFiles밑의 특정 폴더밑에만 바로 올립니다. 만약 자신의 별도로 서브폴더를 나눠서 사용하지 않는 상황에서, 이미 올린 파일이 아니라, 지금 새로 올리면서 그 파일을 링크/이미지/플래시의 주소로 이용하고자 할 경우에 편리합니다.

그 팝업창에서 "서버 보기"를 클릭하면 소위 "브라우져" 기능을 이용하는 게 됩니다. 말그대로 해당 파일타입관련한 폴더 밑에다 새로운 서브 폴더를 생성할 수도 있고, 거기에 파일을 올릴 수도 있습니다. 이때 새로운 폴더생성이 되지 않거나, 파일 업로드가 안되면 100에 98, 폴더 퍼미션 문제입니다.

이제 시험삼아 이미지 폴더에 테스트 용으로 올려놓은 cat 이미지 파일과 플래시 파일을 한번 엔트리에 삽입해 봅니다.

FCKeditor의 템플릿/스타일 기능 사용을 위한 준비
지금껏 설치하고 설정한 단계만으로도 충분히 위지윅 기능을 바탕으로 에디터를 사용할 수 있습니다. 만약 지금까지의 단계로도 머리가 조금 복잡하다면, 이하 내용은 당장에 안보셔도 전혀 상관이 없습니다. 이 에디터를 익숙해질 정도로 사용하신 후, FCKeditor의 템플릿과 스타일 기능에도 관심이 생길 때, 아래 내용을 습득하셔도 됩니다.


지금까지의 사항만으로 위지윅 기능과 미디어 브라우져/업로더를 이용하여 편리한 블로깅 환경을 만들 수 있지만, 이것만으로는 FCKeditor의 고급기능과 또 이를 뒷받침하기 위한 이 플러그인의 기능을 다 이용하는 것은 아닙니다. 템플릿과 스타일 지정을 MT의 템플릿 메뉴에서 커스터마이징할 수 있다는 점이 이 플러그인의 최대 특징입니다. 아래 내용을 따라 준비를 합니다.

  1. 먼저 System Overview 아래의 "List Weblogs" 페이지로 가서 현재 생성되어 있는 모든 블로그를 선택한 후에, "Add Default Template(s)" 액션을 실행합니다.
  2. 현재 블로그의 "List Template" 페이지로 가보면, 세 개의 FCKeditor 관련 템플릿을 볼 수 있습니다. 그 각각을 열고 Rebuild 를 해줘서 output file을 만들어 줍니다.
  3. 현재 블로그의 스타일스트 관련(styles-site.css) 템플릿을 열고 그 맨 첫줄에 @import url(fck_editorarea.css); 를 한줄 추가/리빌딩합니다.

* 어쩜 MT의 인덱스 템플릿 목록창에 난데없이 세개의 FCKeditor관련 템플릿이 있어서 의아해 하실수 있을지 모르겠습니다. 이 3개의 템플릿은 이미 설치과정에서 "디폴트" 템플릿으로 MT에 기록시켰고 또 현재 생성되어 있는 모든 블로그에 추가를 마쳤기 때문에 나타난겁니다. "디폴트" 템플릿이 되었다는 것은, 향후에 새로운 블로그를 생성시, 위의 세 템플릿도 같이 생성되어 진다는 뜻입니다. 물론 TemplateRefesh같은 액션을 적용할 수도 있게 됩니다. 이게 먼 소린지 잘 모르시면 설치과정의 2단계에서 있는 addDefaultTemplate 플러그인 페이지를 보시기 바람니다.

FCKeditor 템플릿:
FCKeditor 메뉴바에 있는 "템플릿" 버튼을 클릭해 봅니다. 나타나는 팝업창에서 "Plugin Document"을 한번 선택해 봅니다. 이 템플릿 기능을 이용하면 해당 창에 있던 기존의 내용은 사라지므로, 항상 처음에 템플릿 기능으로 사용해야 합니다. 제가 만들어놓은 플러그인 문서에 맞는 템플릿이 창에 삽입이 되어 나타나면 설정이 잘되어 있다는 뜻입니다.

일반적인 신변위주의 블로그 엔트리의 경우 특별한 문서 템플릿이 필요없지만, 현재 보고 계신 제 플러그인 페이지처럼 특정한 목적을 위해 사용할 경우 보통의 워드프로세서같은 곳에서 흔히 사용하는 템플릿 기능이 많이 요구되어 지는데, 이때 사용하는 것입니다.

만약 이 템플릿 기능을 이용해 나만의 템플릿을 만들어 사용하고 싶다면, MT의 템플릿 메뉴로 가서 "FCKeditor Templates" 라는 이름의 인덱스 템플릿을 열고, 거기에 추가/변경해서 저장/리빌딩해주면 됩니다. 이때 그 출력파일명(fcktemplates.xml)은 변경하면 안됩니다. 열어서 그 내용을 대충 보시면, 어려울건 없습니다. 그 신택스는 매우 직관적이므로 한두번 훑어보면 알 수 있으리라 봅니다.

FCKeditor 스타일
FCKeditor 등과 같은 소위 WYSIWYG에디터의 가장 큰 단점은 바로 폰트의 크기/색상/종류 등을 font태그를 이용해서 마구잡이로 엔트리 내에 하드코딩시킨다는 것입니다. 물론 초보자의 경우엔 별다른 준비없이 간단히 원하는 표현을 즉석에서 사용할 수 있다는 장점으로 작용하지만, 일반적으로는 피해야하는 작성 습관/태그라 할 수 있습니다. 만약 자신이 특정한 표현을 자주 사용한다면 그것을 스타일로 지정해두고, FCKeditor의 스타일 메뉴로 해결하는 것이 좋습니다. 이때 원하는 스타일을 담고 있는 스타일시트는 당연히 FCKeditor에서도 참조하고, 또 실제 출력된 페이지에서도 참조할 것입니다. 이 역할을 MT내에서 쉽게 할 수 있도록 이미 설치과정에서 지겨움을 참고 끝마쳤으므로 실제 사용시엔 그냥 위의 템플릿과 동일한 과정으로 MT의 템플릿 목록에서 "FCKeditor CSS" 와 "FCKeditor CSS Mapping" 템플릿을 열어서 커스터마이징하면 됩니다. 맵핑 파일의 경우에도 마찬가지로 매우 직관적이라 쉽게 그 문법을 이해할 수 있을 것입니다.


테스트 엔트리 Publishing

이 플러그인에는 HTMLArea에 포함되어 있는 작은 형태의 이모티콘도 같이 넣었습니다. 이런 저런 다양한 아이템을 엔트리에 추가해보고(반드시 하나 이상의 스타일 적용해 볼 것) 그것을 퍼블리싱합니다. 이때 결과 페이지에서 특히 스타일이 FCKeditor상에 나타난 것이랑 같게 적용이 되나를 확인합니다. 이는 설치단계의 8번이랑도 연관이 됩니다. 혹 스타일이 제대로 결과 페이지에 나타나지 않는다면... 위 설치단계를 다시 한번 확인하세요.

선택적 개인화(customization)

FCKeditor 창의 높이

FCKeditor 창의 높이도 동적으로 변경할 수 있도록 관련 API를 찾아 보았지만 없어서, 대신에 MT의 각 블로그 아래의 플러그인 설정에서 본문/확장문 각각 창의 높이를 설정할 수 있도록 했습니다. 텍스트 포맷팅을 "none이나 Convert Line Break"로 사용시엔 동적으로 변경가능합니다.

이모티콘

이모티콘은 특히 W~G에디터에선 쉽고 비교적 자주 사용하는 아이템입니다. 이 이모티콘은 그 특성상 특정한 블로그에 전용하다기 보단, MT인스턴스로 생성한 모든 블로그에 공통된 자원입니다. 일단 기본으로 위의 설치 과정을 따르면 (path/to/mt)/mt-static/FCKeditor/emoticons/ 폴더 아래에 이모티콘 파일들이 존재합니다. 만약 여러분의 MT설치 특성상 그 설치 경로가 꽤 깊거나 혹은 이미 기존의 다른 폴더를 공통의 이미지파일 폴더로 사용하고 있어서 이를 계속 유지하고 싶은 경우에 이를 설정해 줄 수 있습니다. 먼저 위 디폴트 경로 아래에 있는 파일들을 원하는 다른 곳에 옮긴 후에 그 변경된 경로를 MT의 "System Overview"내의 플러그인 설정란에서 지정해주면 됩니다.(이모티콘은 모든 블로그에 공통된 자원이기 때문에, 이 경로설정을 개개의 블로그밑이 아닌 시스템밑의 플러그인 설정란에서 하는 것입니다.)

UserFiles

"UserFiles"이라는 이름은 FCKeditor에서 디폴트로 사용하는 폴더명입니다. 이 폴더 밑에 File,Image,Flash등의 서브 폴더가 생기고 그 각각의 아래에 해당 파일들을 업로드하는 식입니다. 위의 설치과정을 따르면 이 경로가 "path/to/mt/mt-static/FCKeditor/UserFiles/"로 됩니다. 이 의미는 무엇일까요? 하나의 MT인스턴스로 생성한 모든 블로그가 공통된 저 경로밑에 파일들을 업로드하고 관리한다는 소립니다. 머 그렇게 사용할 수도 있겠지만, 또 다른 경우에는 각각의 블로그마다 각기 다른 곳(이를테면 바로 각각의 블로그 루트 경로 아래에)에 UserFiles폴더를 두고 각기 독자적으로 관리하고 싶은 경우가 왜 없겠습니까? 이럴땐 마찬가지로 원하는 폴더를 만들어 주고(꼭 UserFiles라는 이름일 필요도 당연히 없겠죠, 다만 관례상 그런 이름을 사용하면 차후에라도 이 폴더가 FCKeditor랑 관련있는 거구나...정도 할순 있겠죠) 그 경로를 MT메뉴의 플러그인 설정란에서 해주면 됩니다. 당연히 이 경로는 블로그마다 설정해주는 개념이므로 각 블로그밑의 플러그인 설정페이지로 가야 되겠죠?

FCKeditor의 툴바 등 기타 변경

이미 에디터의 툴바를 제가 적절히 커스터마이징해서 배포하고 있지만, 사람 취향이 제각각, 분명 난 다르게 툴바를 배치/선택하고 싶다!라는 생각이 없을수 없겠죠. 만약 그런 위험한(^^) 생각을 하셨다면 (mt home)/alt-tmpl/cms/header.tmpl 파일 내에서 적절한 키워드로 찾아서 수정하시면 됩니다.

예를 들면, 폰트 종류/크기 등의 메뉴를 좀더 다양하게 늘려주고 싶다는 생각은 누구나 본능적으로 하게 될거라 봅니다. 버뜨! 참으세요. 앞서 말씀드렸다시파, font태그를 지저분하게(?) 삽입하는 것은 배보다 배꼽이 더 큰 불량 엔트리로 가는 길이기 때문입니다. 가능하다면 자주 사용하는 스타일을 MT템플릿상에서 간편히 만들어 효율적으로 사용하십시요. 이 방법만이 차후에 업데이트 혹은 이런 저런 이유로 재설치시 등마다, 또 다시 FCKeditor 소스를 침투해서 방황하는 무모한 짓을 번번히 되풀이 하지 않는 유일한 길입니다. 그럼에도 불구하고(^^;;;) 초심자를 위해 폰트의 종류/크기 등을 변경하고 싶다면 그 또한 타당성이 있어보입니다. 혹 그런 경우엔 앞선 header.tmpl 파일과 (mt home)/mt-static/FCKeditor/ 폴더 밑의 소스를 뒤져서 헤쳐나가시면 됩니다.

FCKeditor의 source/config 레벨에서 좀더 특화된 customization을 감행하실 경우엔 충분한 지식을 가지고 하시길 바람니다. 또한 그로 인한 어떤 문제에 대해 저에게 도움을 요청하진 말아 주십시요.^^

Trobuleshooting

  • FCKeditor를 플러그인화하면서 종종 에디터가 나타나지 않는 등의 문제가 생겼는데 그런 원인의 대부분이 바로 클라이언트측의 브라우져 환경에 기인하는 것이었습니다. 특히 팝업 필터같은 것을 요즘엔 많이 사용하는데 이것이 FCKeditor의 생성, 미디어 브라우져의 착동 방해 등의 주요원인입니다. 혹 그런 경우에는 필터를 끄거나 혹은 예외목록등을 이용하십시요.
  • 만약 FCKeditor의 브라우져를 원할히 사용할 수 없는 경우의 태반은 앞선 UserFiles/ 폴더 이하 서브폴더 등의 생성/저장 등의 권한 부족문제입니다.
  • 혹 Firefox/Mozillar 에서 엔트리 저장시 공백 페이지만 나타나고, 원 엔트리 작성 페이지로 돌아오지 않는 경우가 생기는 재수없는(^^) 경우를 겪을 수도 있습니다. 이의 직접적인 원인제공 소스는 잘 모르지만, 확실한 것은 MT의 리다이렉션 방법 때문이라는 것입니다. 물론 디폴트 상태의 MT에서는 문제가 없습니다. 대부분이 HTTP의 Location헤더 방법으로 리다이렉션하기 때문입니다. 그런데 만약 설치한 어떤 플러그인이나 기타 원인으로 리다이렉션을 HTML의 META 태그를 이용해 하는 경우에, Firefox + FCKeditor의 환상적 조합에서 약간의 불협화음을 낸다고 합니다. 이런 재수없는 경우가 혹 발생시엔, 이런 점을 중점으로 먼저 설치한 플러그인을 불활성시켜보는 등의 방법으로 공략하십시요. 특히 제가 만든 Cool IRI라는 매우 훌륭한(?) 플러그인이 바로 그 재수없는 케이스를 발생시켰었습니다. 혹 구버전을 쓰셨던 분중에 FCKeditor를 Firefox상에서 사용하실 분들은 신버전으로 업데이트하십시요. 일반적으로 흔치 않은 에러입니다.

Notes

앞서도 약간 말씀드렸다시피 FCKeditor의 기능에 대한 문의나 그 자체의 에러 등은 제 능력 밖이라는 말씀을 드립니다. 특히나 FCKeditor를 제가 제공한 기능 외에 한층 커스터마이징을 시키는 등에서 발생하는 문제는 더더욱 그러합니다. 물론 제가 공개/배포한 범위 내에서의 문제에 대해선 얼마든지 환영입니다. 이를테면, "Entry Body에서의 FCK는 잘 작동하는데 Extended Entry의 창에서 이런 저런 놈은 저런 이런 문제를 발생시킨다. 왜 그런가? (답: 새 컴퓨터를 구입하세요)" 라는 것이 전형적인 이 플러그인 관련한 질문의 한 예일 것입니다. FCKeditor 등의 W~G 에디터 프로그램은 매우 매우 복잡한 프로그램이면서 특히나 브라우져의 특성에 매우 민감한 것입니다. 이 플러그인을 만들면서 FCKeditor의 Wiki사이트 등을 눈팅하면서 느낀 건, 그 (재수없는 경우) 발생하는 원인 모를(더우기 답은 더 잘모를) 비정상적 작동의 경우의 수가 많다는 점이었습니다. 혹 그러한 경우엔 과감히 이를 눈물을 머금고 포기하시고, EnhancedEntryEditing 과 같은 조금 저수준(^^)의 다른 플러그인를 시도해보시길 바랍니다.

FCKeditor와 Movable Type을 연결해 주는 이 작은 플러그인이 맘에 드신다면, 주변분에게 알리는 간단한 엔트리 하나 로깅하시는 센스.

License

FCKeditor follows its own copyright.
Relased under the Creative Commons License.

Version History

  • 3.2.04: FCKeditor 2.1.1 newly added. / Error "Can't call method "preferred_language"..." fixed, thanks dusl for reporting it.
  • 3.2.03: Chinese CSS version added.
  • 3.2.02: Korean/Japanese CSS version added.
  • 3.2.01: for MT 3.2
  • 1.0 : Initial but not released, for MT3.17

  • google.co.kr (91)
  • link.allblog.net (2)
  • search.naver.com (35)
  • google.com (7)
  • search.daum.net (8)
  • kr.search.yahoo.com (1)
  • search.empas.com (10)
  • web.search.naver.com (2)
  • 192.168.0.4 (1)
  • google.co.jp (1)

TrackBack

TrackBack URL: http://alogblog.com/movabletype/korean_plugins/TCode.name/49. 1284914640

QuickPost/Bookmarklet 등과 같은 자동화 도구로 트랙백을 보내시면, 귀하의 트랙백은 이 사이트의 운영자가 승인할 때까지 이 페이지에 표시되지 않습니다. 혹 자동화 방법으로 보내실 경우, 트랙백이 표시되지 않아도, 반복적으로 보내진 말아 주십시요. 감사합니다.


Comments

새 포스트를 선택하면 error loading "http://www.pdaclub.org/blog/fckstyles.xml" 이라는 팝업창이 두번 뜹니다. entry body쪽은 줄만 한줄 보이는데 선택하면 메뉴가 보이긴 합니다. Extended Entry 쪽은 FCKeditor 메뉴가 잘 보이구요. 뭘 봐야 될지 알수 있을까요?

먼저 본문은 디폴트 상태에서 FCKeditor를 줄여놓았구요, 확장문에서는 펼쳐놓았습니다. 본문 창이 상대적으로 작기때문에 설정에서 그렇게 만든겁니다. fckstyle.xml 파일은 FCKeditor의 "스타일"을 엠티의 템플릿에서 일괄적으로 만들 목적으로 있는 겁니다. 아마 에디터에서 스타일 메뉴를 보면 아무것도 안나타날겁니다. 거기에 "Yellow Pen" 같은 스타일이 나타나야 됩니다. 그 이유는 템플릿에 새로 만들어진 관련 템플릿을 각각 리빌딩하지 않았기때문일겁니다. 기본적으로 블로그 루트에 각각 생성되어 있어야합니다. 만약 스타일이나 FCKeditor의 템플릿 기능을 그리 이용할것이 아니라면, 그냥 /blog밑에 fckstyles.xml이름의 가짜 파일을 하나 두면 에러창은 없어질겁니다. 물론 절대 권하는 방법은 아니구요...

저같은 경우는 blog 폴더안의 내용을 지울수도 있을 것 같아서, 이미지 폴러는 루트의 images, 데이터 파일은 루트의 data 폴더를 만들어 이용하고 있습니다. 이 툴은 사용자가 지정한 폴더 안에 Image 같은 폴더를 생성한 후에 사용자가 원하는 폴더를 만들수 있던데요.
File,Image,Flash 라는 폴더안에 사용자가 새로 폴더를 생성하지 말고 사용자가 지정한 폴더안에 새 폴더를 만들수 있게는 안되나요?
(FCKeditor 자체기능이 이런가 싶기도 합니다.)

각 블로그의 플러그인 설정 메뉴에서 UserFiles폴더를 설정할 수 있습니다. 다만 FCK특성상 이 유저파일 폴더 밑의 Image폴더밑에 그림이 저장됩니다. 그러니까 원칙상 웹루트밑의 /images에 FCK를 이용해 그림을 저장하긴 어렵겠죠. 아니면 UserFiles밑에 있는 Images 폴더를 삭제하고 $ ln -s /.../images Images 처럼 한번 링크를 걸어보세요 혹 되는지... 즉 기존에 존재하는 이미지경로에 대한 링크로 UserFiles밑에 Image를 만드는겁니다.

영문링크(http://alogblog.com/movabletype/plugins/tagging_on_the_fly/)에 보면 태그관련 글이 있던데요. 제 생각에는 카타고리를 여러개 만드는것보다, 카타고리는 간단하게 만들고, 각가의 글들에 태그를 붙여 포스트들을 자세히 부류시키면 좋을 것 같아요. 호찬님 블로그같이 태그플러그인을 써보고 싶은데 한글태그는 안되는것 같더군요. 태그까지 영문으로 기입하는것은 제 생각에는 의미가 없는것 같은데, 혹 한글 지원되는 태그app 아시는게 있으시면 추천 좀 부탁드립니다.
http://hochan.net/archives/2006/01/11@05:09AM.html

태그는 대내적/대외적 의미로 나눠 생각해 볼 수 있는데, 대내적으로는 그 성질이 기존의 카테고리와 똑같습니다. 그럼에도 태그(Tagging)라고 별도로 나온것은, 기존의 카테고리는 새로 만들어줄때마다 사용자가 별도의 생성행위를 했어야했지만, 태그는 그냥 keyword란에 원하는 분류를 간단히 써넣기만 하면 되는 즉석생성이랄까요? 하여튼 그런 편리성때문에 생겨나고 또 인기를 얻는거라 봅니다. 어쨋든 그 내부적인 존재의미는 글을 분류하는 것이라 카테고리와 똑같죠. 말자체도 카테고리(category)보단 태그(tag)가 쉽네요. 하지만 이런 즉석 생성의 단점도 있겠죠. 바로 비슷비슷한 분류에 대해 중복적으로 태그를 만들 수있다는 점입니다. blog, blogging, blogs, Movable Type, movalbetype 이런 예에선 설마...싶을 수 있지만, 시간이 갈수록 진짜 태그구름(tag cloud, 원의미는 이것이 아니지만)처럼 유사한 태그로 산재해 나타날 가능성이 있죠. 물론 이건 실제 태그 메타사이트인 technorati등에서도 실제 발생하는 문제라면 문제이기도 합니다. 카테고리를 이용하면 그럴 염려는 없다고 봐야겠죠.

태깅을 해주는(즉 쉽게 카테고리같은 가외의 분류를 해주는) 플러그인은 그 MT 내부적인 기능상으로 두가지 종류가 있는데요, 하나는 태그를 기존의 MT카테고리와 똑같이 취급하면서 DB 의 카테고리 항목을 그대로 이용하는 놈과, 플러그인 데이터를 이용해 별도의 디비로 관리하는 놈이 있습니다. 머 이또한 일장일단이 있겠군요.

대외적 의미로는 태그메타사이트에 자신의 글에 분류를 넣어서 광고한다는 의미겠죠. 제 FCKeditor 플러그인이 Tagging on the fly는 이 목적의 플러그인입니다. 이 목적으론 기존의 카테고리는 불가하다고 봐야죠. 그 불가이유는 태그관련 메타사이트들이 rel="tag" 링크 속성만 이용하기때문입니다. 대내적인 분류목적으로는 걍 카테고리 사용하고 대외적인 광고(?)목적으로는 걍 Tagging on the fly사용하는...
http://www.sixapart.com/pronet/plugins/ 플럭인 디렉토리에서 Tagging 섹션에 보시면 관련된 놈을 몇개 보실수 있습니다. 전 사용해본적은 없지만, 그중 tagwire라는 놈이 일본분이 만드신거라 Multilingual Tagging을 지원한다고 하니 한글도 되지 않을까 싶긴 합니다.

감사합니다. 많은 도움이 될 것 같습니다. 워드프레스에서 태그를 잠깐 써봤습니다. 알록님이 언급한데로 나중에 되려 태그들로 인해 제대로 분류가 되지 않을까봐 단어선택에 많이 고민하게 되더군요. 저 나름대로 태그로 선택할 단어의 표준화를 시켜야 겠죠. 태그메타사이트에서는 개인마다 선택하는 단어가 틀릴수 있으니 어렵긴 하겠네요.

처음으로 FCKeditor를 설치하였습니다.

다른 부분은 문제없이 잘 돌아가는데
이미지 삽입시 링크를 통한 삽입중 서버보기를 실행하면
이상하게 Explorer 스크립트 에러가 발생합니다.

대충 fckimage.html소스를 살펴보니
서버보기시 실행시키는 스크립트가 함수가 LnkBrowseServer() 인듯한데
혹 어떤 문제로 일어나는 것인지 알고 계신지요?

(에러는 359라인에서 처음 발생합니다)

안녕하세요
FCKeditor의 최대(?)장점이 미디어 브라우저이기 때문에 가능하면 사용이 되도록 설정하는게 좋겠죠.
일단 많은(?) 분들이 사용하신 결과 제 플러그인 자체에는 별 문제가 없어보입니다. 가장 문제가 많이 발생하는 부분이 바로 미디어 브라우저입니다. 툴바기능중에 가장 복잡한 것중에 하나이기 때문일겁니다.
제가 보기에, 서버상의 UserFiles 내의 퍼미션이나 혹은 FCKeditor 자체 파일들의 퍼미션이 부족해서 에러가 뜨거나(일반적인 경우) 브라우저 상에서 스크립트 수행을 이런 저런 이유로 막기때문에 생기는게 가장 흔합니다.(이 경우에는 다른 브라우저, 예를 들면 파이어폭스 등에서는 되는데 IE에선 안된다.. 이러기 쉽습니다.)
가장 난해(?)한 문제는 FCKeidtor자체의 문제입니다. FCK 자체가 워낙 복잡한 프로그램이고 또 크로스 브라우징을 목표로 짠거라 모든 경우들 다 완벽하게 지원하지 못하는 경우가 생기는데, 이런 경우에 걸리면 조금 복잡해집니다. 제가 보기에 윈도 서버를 사용하면 리눅스서버 계열보다 조금더 그럴 확률이 크지 않나? 경험적으로 그리 보입니다.
정확히 어떤 원인인지 바로 알기는 어렵지만, IE는 오류 메시지가 그리 자세하지 못해서 원인을 찾아가는데 별 도움이 안되도군요. 파이어폭스나 오페라 에서는 비교적 자세한거 같습니다. 그렇게 해서 특정한 메시지 등을 발견한다면 그걸 근거로 FCKeidotr 포럼을 검색해보는게 비교적 확실한 방법같습니다.
http://sourceforge.net/forum/message.php?msg_id=3637647 하나 검색해보니 이런 비슷한 경우가 나오는데 이게 정확한 케이스인지는 물론 확신못하겠구요...
뚜렷한 해결책을 못드려 죄송합니다. 문제가 있으면 언제든지 코멘트 주세요.

메일로까지 답변을 주셔서 너무나 감사한 마음입니다.

해당 문제는 저의 경우 기본적으로 IE가 관리하는 팝업방지 보안책이
서버 스크립트를 통해 팝업을 띄우는 것을 가로막았기 때문입니다.
팝업차단 사이트에서 해제하여 주시면 사용에는 별다른 지장이 없습니다.

또는 Cookie가 new window로 전달되지 못하는 현상과도 문제가 있을 수
있다고 소스파일의 해당부분 주석에 명시되어 있으나, 이 보다는
위의 문제와 더욱 연관이 있어 보입니다.

그럼 감사한 마음으로 ^^

Posted by 1010
01.JAVA/Java2008. 8. 28. 10:58
반응형
How do I resolve a java.lang.UnsupportedClassVersionError?
Abstract: How do I resolve a java.lang.UnsupportedClassVersionError?

Issue:

When I attempt to run my Servlet, I receive the following exceptions:

javax.servlet.ServletException: Error allocating a servlet instance
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:185)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:653)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:534)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask(ProcessorTask.java:403)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:55)

root cause java.lang.UnsupportedClassVersionError: untitled1/Servlet1 (Unsupported major.minor version 49.0)
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:537)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1774)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:905)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1370)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1234)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:185)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:653)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:534)
com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask(ProcessorTask.java:403)
com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:55)

How do I resolve this issue?

Solution:

This exception can occur when the source is built targeting a JDK that is not supported by the JDK attempting to run it. In the above example, if the servlet was built targeting only JDK 1.5, but the web server runs JDK 1.4, the above exception will occur.

Check, Project Properties | Build | Java | Target VM, and verify that the Target VM indicates a JDK compatibility that is appropriate for the JDK that is running it. It is recommended to set this field to 'All Java SDKs' for the most compatibility. The only reason you would want to specify a particular version is if your code uses language features that only appear in a particular verison of the JDK, and you want to ensure that users use only a compatible JDK.

Also check, Project Properties | Build | Java | Language Features, and verify that the Language Features are applicable with JDK that is running it.

--------------------------------------------------------------------------------------------------

java.lang
Class UnsupportedClassVersionError

java.lang.Object
  extended byjava.lang.Throwable
      extended byjava.lang.Error
          extended byjava.lang.LinkageError
              extended byjava.lang.ClassFormatError
                  extended byjava.lang.UnsupportedClassVersionError
All Implemented Interfaces:
Serializable

public class UnsupportedClassVersionError
extends ClassFormatError

Thrown when the Java Virtual Machine attempts to read a class file and determines that the major and minor version numbers in the file are not supported.

Since:
1.2
See Also:
Serialized Form

Constructor Summary
UnsupportedClassVersionError()
          Constructs a UnsupportedClassVersionError with no detail message.
UnsupportedClassVersionError(String s)
          Constructs a UnsupportedClassVersionError with the specified detail message.
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

UnsupportedClassVersionError

public UnsupportedClassVersionError()
Constructs a UnsupportedClassVersionError with no detail message.

UnsupportedClassVersionError

public UnsupportedClassVersionError(String s)
Constructs a UnsupportedClassVersionError with the specified detail message.
Parameters:
s - the detail message.

JavaTM 2 Platform
Std. Ed. v1.4.2

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2003 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
-------------------------------------------------------------------------

java.lang.UnsupportedClassVersionError

By Alvin J. Alexander, devdaily.com

You know what will really screw with your mind? When there is a 1.4.2 version of a java.exe file in the C:\Windows\System32 directory of your Windows XP system, and you're trying to compile and run a Java 1.5 program from the command line. I kept getting this error message and couldn't figure it out, even though I knew what it meant(!):

C:\Al\JavaProjects\AutomatedGUITester\deploy>java -jar xylocator.jar

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/devdaily/
xylocator/XYLocator (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
3)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

I knew that this error message was telling me that I was trying to run a Java program/class with a JVM version that was older than what I compiled it with, but I thought I had everything set up right, including my JAVA_HOME and PATH environment variables. (FWIW, after a little research it looks like the "Unsupported major.minor version 49.0" message refers to Java 1.5.0.)

Now, before you think I'm too crazy I compile my program with this batch file:

REM compile.bat
set JAVA_HOME=C:\jdk1.5.0_06
set PATH=C:\Windows;C:\Windows\System32;C:\jdk1.5.0_06\bin
set CLASSPATH=

javac com/devdaily/xylocator/XYLocator.java

Then I would create my jar file with this batch script:

REM createjar.bat
set JAVA_HOME=C:\jdk1.5.0_06
set PATH=C:\Windows;C:\Windows\System32;C:\jdk1.5.0_06\bin
set CLASSPATH=

jar cfm xylocator.jar Manifest.txt com/devdaily/xylocator/*.class

And finally, I would try to run it like this:

REM runjar.bat (BAD VERSION, NEED TO FIX PATH)

set JAVA_HOME=C:\jdk1.5.0_06
set PATH=C:\Windows;C:\Windows\System32;C:\jdk1.5.0_06\bin
set CLASSPATH=
set QTJAVA=

java -jar xylocator.jar

Now, once I realized that the #%$! java.exe file was in the C:\Windows\System32 directory the problem was easy to fix. I just had to put the Java 1.5 directory in the PATH before the System32 directory, like this:

REM runjar.bat
set JAVA_HOME=C:\jdk1.5.0_06
REM This works because the JDK is in the PATH before the System32
REM directory.
set PATH=C:\jdk1.5.0_06\bin;C:\Windows;C:\Windows\System32
set CLASSPATH=
set QTJAVA=

java -jar xylocator.jar

Now it works like a champ. FWIW, this Java program lets me determine the x/y coordinates of any point I choose on the screen. I basically take a snapshot of the screen, then display that snapshot as an overlay to the entire desktop, then use mouse click information to get the x/y coordinates. Some of this had to be done using Java 1.5.x, or native code, which I don't want to get into because I want this to work on the Mac as well as Windows.

------------------------------------------------------------------------
Posted by 1010