그냥 DB 호환되도록 해결하는 쪽으로 해결되었습니다. smile
그냥 쓰시면 됩니다 -

넵 여기서 1.1에서 설치루틴을 좀 더 고도화시키는 쪽으로 한 번 함께 이야기를 나누어보죠^^

현재 setup에서 어떠한 점들이 어떻게 바뀌어야 할까요? 추가해야 하는 점이나 고쳐져야 할 점, 바뀌었으면 하는 점들이 어떤 것들이 있을지 정리해봅시다 smile

3,853

(2 답글들, 지역화및 문서화 작업에 작성)

주의 : 업그레이드 하시기 전에 사용중이던 플러그인을 모두 미사용중 으로 변경하시기 바랍니다.

1.0.6은 기존의 로드맵에 비하여 많은 부분이 축소 되었습니다. 관련된 이야기는 이 곳 에서 읽으실 수 있습니다. 새로 계획되거나 제안된 대부분의 부분은 1.1 개발트리로 이전합니다. 1.0.6은 기존의 1.0.5에서 보고된 버그 수정과 안정성 향상 및 약간의 기능 추가가 있을 예정입니다.

= 추가된 점 =
* "트랙백을 봅니다"에서 IP 필터링 스위치 추가
* 레이블 명을 기준으로 첨부파일 관리자의 파일 정렬 순서를 변경
* 관리자 화면에서 선택된 글의 카테고리 일괄 변경 기능
* XMLRPC 모듈 수정 (XMLStruct 의 변화 수용)
* 스킨의 html, head, body 태그의 특정한 위치에 스킨 수정 없이 지정되는 치환자 자동 삽입
* RSS 2.0 스펙에서 추가 제공된 item의 comments와 guid 속성을 추가
* 플러그인에 Eolin SpamServer를 사용한 집단 안티스팸 플러그인 베타버전 추가 (optional)

= 변경된 점 =
* 일반 - 자바스크립트 필터링 항목 추가
* 일반 - 효과적인 댓글 스팸 탐지를 위한 이벤트 처리 후 data strip
* 일반 - 블로그 시간대 설정 표기 방법 변경(locale text id를 timezone 설정값 사용)
* 일반 - 블로그 시간대 추가. (유럽 일부, 미국 일부, 호주 일부)
* 일반 - 언어 리소스 보정
* 일반 - RSS 생성시 태터툴즈 치환자가 전송되지 않도록 플러그인 전처리 후 전송
* 일반 - RSS 생성시 글 제목 및 내용 등에 single quote (')가 들어간 경우를 parsing하지 못하는 많은 리더 및 브라우저를 위해 character reference 처리
* 일반 - 신뢰할 수 있는 UI로 변경을 위하여 삭제 독립, 셀렉트 박스 선택 후 적용버튼으로 절차 변경
* 에디터 - 플래시 삽입버튼 제거
* 에디터 - 미디어 삽입버튼을 누르면 object 태그 삽입 창이 뜨도록 수정
* 에디터 - 첨부파일을 붙일때 미디어/플래시 파일인 경우 object 태그를 직접 삽입
* 에디터 - 글을 쓰거나 자바스크립트를 제거하는 부분에서 <object type="text/x-scriptlet"> 태그도 제거
* 에디터 - 본문 저장시 iframe 태그 제거
* 에디터 - 동영상 삽입 취소버튼 추가
* 에디터 - 업로드시 정렬 기능

= 버그 수정 =
* 일반 - 다국어 처리 누락 수정
* 일반 - firefox에서 주크박스 재생리스트가 펼쳐지지 않는 문제
* 일반 - 블로그에 글이 하나도 없을때 모바일 페이지로 접근하면 무한히 redirect 되는 현상 수정
* 일반 - 2단계 카테고리 이름을 수정한 직후에 3단계 카테고리(!) 추가가 가능하던 문제 수정
* 일반 - 오타수정
* 일반 - 답글 입력폼에서 쿠키에 저장된 이름, 홈페이지 주소를 출력할때 htmlspecialchars 처리
* 일반 - 카테고리 수정할때 수정되는 카테고리 이름에 htmlspecialchars 처리
* 일반 - single quote가 들어간 카테고리 이름이 여러개 생성될 수 있는 문제 수정
* 일반 - 바꾸려는 문자열에 $가 들어있을때의 오류 수정
* 일반 - mobile 페이지 XHTML 오류 수정
* 일반 - 블로그를 root에 설치하지 않고, 디렉토리에 설치한 경우 iMazing 전체보기가 오동작하는 문제를 해결
* 일반 - 트랙백 삭제시 트랙백 갯수가 잘못 표시되는 오류 수정
* 일반 - 초대받은 사람이 많은 경우 UI가 틀어지는 문제 (account/index.php)
* 일반 - RSS에 갤러리 스크립트가 들어갔을때 open_img 함수가 없는 곳에서 크게보기 버튼을 누르면 스크립트 에러가 나는 문제 수정
* 일반 - 블로그 만든 직후 아이콘과 파비콘 업로드가 되지 않는 문제점 수정
* 일반 - 여러 글 선택후 작업시 선택한 글이 없을 경우 글 선택을 요구
* 일반 - 데이터 교정 처리 form object access 오류 수정
* 일반 - Comments 테이블에 사용자 임의 필드가 추가되었을 경우도 insert가 가능하도록 수정
* 에디터 - 동영상 삽입 취소버튼 추가
* 에디터 - 속성 편집화면 레이아웃 깨지는 문제 수정
* 에디터 - 브라우저 사이즈가 변해도 깨지지 않도록 수정
* 에디터 - 파이어폭스에서 자막 수정이나 오브젝트 삽입할때 글목록 화면으로 튕기는 문제 수정
* 에디터 - 오브젝트 추가할때 확장자가 없는 파일은 플래시 파일로 간주
* 에디터 - 삽입되는 플래시 배경은 투명하게
* 에디터 - 페이지 로딩 완료 전 파일업로드 클릭시 null 에러 수정
* 에디터 - 블로그 화면에서 연 트랙백 전송창에서 전송버튼 대신 enter를 누르면 바로 전송되도록 수정
* 에디터 - 다른 확장자의 파일을 올릴때 에러를 내고는 업로드가 되어 버리는 문제 수정
* 리더 - cyworld rss paper의 시간을 읽어오지 못하는 문제 수정
* 리더 - 피드 삭제함수 버그 수정, 사용자와 관련된 테이블 삭제하는 함수 추가

= 스킨에 추가된 치환자들 =

* meta 스킨 치환자
   SKIN_html_start
   SKIN_head_start
   SKIN_head_end
   SKIN_body_start
   SKIN_body_end
   SKIN_html_end

의 치환자를 스킨에 따로 추가하지 않아도 '존재하는 것 처럼' 사용하실 수 있습니다. 이 치환자들은 플러그인에서 사용하기 위하여 만들어 졌습니다.
SKIN_*_start 는 해당 태그 다음 줄의 맨 앞에, SKIN_*_end 는 해당 태그의 바로 앞에 추가가 됩니다.

   [##_SKIN_html_start_##] - HTML 시작부분에 코드를 삽입합니다.
   [##_SKIN_head_start_##] - head 시작부분에 코드를 삽입합니다.
   [##_SKIN_head_end_##]  - head 끝부분에 코드를 삽입합니다.
   [##_SKIN_body_start_##] - body 시작부분에 코드를 삽입합니다.
   [##_SKIN_body_end_##] - body 끝부분에 코드를 삽입합니다.
   [##_SKIN_html_end_##] - HTML 끝부분에 코드를 삽입합니다.

여러 플러그인에서 중복 사용 할 수 있지만, 이벤트 핸들러들은 독립적이어야 합니다.
다른 플러그인들을 위하여 반드시 $target을 상속받아 $target을 돌려줘야 합니다.

= 스킨에 추가된 치환자 사용 예 (플러그인에서) =

index.xml

...
<tag name="SKIN_head_end" handler="head_end1" />
...

index.php

function head_end1($target) {
    return "<script>1</script>".CRLF.$target;
}

plugin2

index.xml

...
<tag name="SKIN_head_end" handler="head_end2" />
...

index.php

function head_end2($target) {
    return "<script>2</script>".CRLF.$target;
}

= 업그레이드 시 알아둘 점 =
*  관리자 메뉴의 '환경 설정' -> '데이터를 관리합니다' 메뉴의 '데이터 교정' 이 보강되었습니다. SQL 을 직접 다루어 스팸 또는 트랙백 댓글을 삭제한 경우 데이터 교정을 통하여 올바른 글 수로 갱신하실 수 있습니다.
* 댓글 / 트랙백 스팸을 막기 위하여 집단 안티스팸 기능을 사용하는 EAS (Eolin Anti-Spam) 플러그인이 도입되었습니다. 1.0.6 에는 휴지통 기능이 들어가 있지 않아 올바른 트랙백이나 댓글을 막았을 경우 되돌릴 수 없으므로 기본 플러그인에는 들어있지 않습니다. EAS 플러그인을 사용하실 분들은 플러그인 다운로드 링크로 가서 EAS 플러그인을 내려받아 설치하시고 관리자 메뉴의 '환경설정' -> '플러그인' 메뉴에서 EAS를 '사용함' 으로 설정하시면 됩니다. 이 경우, 리퍼러 추적이나 영어환자 플러그인의 사용을 해제하셔야 합니다. 아직 베타테스트 중인 플러그인이므로 원하는 만큼의 필터링이 되지 않을 수 있습니다만, 사용자가 많아질수록 정확한 동작을 하게 되니 사용 부탁드립니다 smile
* 경우에 따라 글 작성시 에디터가 오동작할 경우가 있습니다. 1.0.5 버전에서 변경된 요소들이 브라우저의 임시 저장공간에 갱신이 되지 않아 발생할 수 있습니다. F5나 ctrl+F5를 눌러 새로고침하여 캐시를 갱신해 주세요.

= 기타 사항 =
* 개선할 점이나 아이디어가 있을 경우 태터툴즈의 홈페이지의 게시판을 이용해주시고, 개발에 참여하거나 적극적인 리포팅에 관심이 있으신 분들께서는 Tatter and Friends의 포럼에 가입하여 참여해 주세요

1.0.6 릴리즈 후보 3을 공개합니다.

다운로드
Trac 기록
1.0.6은 기존의 로드맵에 비하여 많은 부분이 축소 되었습니다. 관련된 이야기는 이 곳 에서 읽으실 수 있습니다. 계획되었던 많은 부분은 1.1 트리로 이전할 예정이며, 1.0.6은 버그 수정과 안정성 향상 및 약간의 기능 추가가 있을 예정입니다.

1.0.6 RC2로부터 변화된 점의 목록입니다.

* 일반 - 데이터 교정 처리 form object access 오류 수정
* 일반 - Comments 테이블에 사용자 임의 필드가 추가되었을 경우도 insert가 가능하도록 수정
* 지역화 - 언어 리소스 보정 (중국어 / 영어)

버그 리포트는 QA 게시판 으로 부탁드립니다 smile

3,855

(0 답글들, 공지사항에 작성)

1.0.6 릴리즈 후보 3을 공개합니다.

다운로드
Trac 기록
1.0.6은 기존의 로드맵에 비하여 많은 부분이 축소 되었습니다. 관련된 이야기는 이 곳 에서 읽으실 수 있습니다. 계획되었던 많은 부분은 1.1 트리로 이전할 예정이며, 1.0.6은 버그 수정과 안정성 향상 및 약간의 기능 추가가 있을 예정입니다.

1.0.6 RC2로부터 변화된 점의 목록입니다.

* 일반 - 데이터 교정 처리 form object access 오류 수정
* 일반 - Comments 테이블에 사용자 임의 필드가 추가되었을 경우도 insert가 가능하도록 수정
* 지역화 - 언어 리소스 보정 (중국어 / 영어)

버그 리포트는 QA 게시판 으로 부탁드립니다 smile

3,856

(2 답글들, 잡담하기에 작성)

신기하지 않나요?
그 글들은 생명을 얻어서 증식하고 있군요. 웹이라는 생태계의 현재 조건에 맞기 때문에 폭발적으로 증식하겠죠. smile

지금까지 블로고스피어가 그렇지 않았는데 지금은 그렇다는건, 드디어 블로고스피어가 폐쇄적인 환경에서 벗어나서 웹 생태계 자체에 접속되었다는 의미로 생각하시면 될 것 같습니다. 이후에 저 흐름에 먹히느냐, 저 흐름을 바꾸느냐는 이제부터 무엇을 하느냐에 달린거죠.

저는 긍정적으로 봅니다^^ 이제 슬슬 영향력을 역으로 행사할 수 있는 시기가 오고 있는 것으로 보이거든요 smile

sandbox에서 사용하는 필드가 trunk에 비해서 추가된 부분이 있습니다.

그래서 sandbox를 한 번이라도 사용해서 DB 구조가 변경된 경우에는 1.0.6 버전의 sql문들이 삐걱거리게 되는군요;  그런 오류였습니다.


p.s.) papacha님 오류 아닌 것을 오류라고 괴롭혀드려서 죄송합니다 ㅠ_ㅠ

KIM 작성:

중국어입니다.

1.1의 발표일정은 어떻게되지요? 아무래도 시험이 곳 닥쳐와서 시험준비 해야겠습니다.

금방 월드컵보고나서 번역한것입니다.흥분되서 틀린곳이 있을 란지  tongue

1.1은 8월 정도에 나올 것 같습니다^^
틀린 곳이 있어도 전 전~혀 알 수 없습니다 하하

영문 수정 입니다.

daybreaker 작성:

로컬 테스트에서도 r387에서는 잘 되었었습니다. r397인가 업데이트한 뒤로 문제가 생겼죠. 아마 그 사이의 수정 과정에서 뭔가 문제가 있지 않았을까 하는 생각을 해봅니다.

윽 387이 아니라 427입니다;;;

427에서 아무런 문제가 없이 돌아가고 있습니다 smile

(제 블로그가 언제나 지연 없이 sandbox bleeding edge 버전으로 돌아가고 있습니다 ^^)

1.1 r387 은 문제 없이 잘 돌아갑니다만...

재현이 안되어서 문제를 trace 못하고 있습니다;;

3,862

(1 답글들, 잡담하기에 작성)

돈독오른 언론이 맘에 안들기는 하지만, 그래도 4년마다 한번씩 찾아오는 제 3대 취미생활이라 이번에는 전경기 시청에 도전하고 있습니다.

드디어 우리나라 차례군요. 모여서 축구 본다길래 축구보러 갑니다^^


이겨도 고민 져도 고민이지만, 뒤집어 말하면 이겨도 좋고 져도 좋군요.
이왕이면 좋게좋게 생각해야겠죠? 즐겁게 티비 보렵니다 ^^

3,863

(10 답글들, 토의 및 과제 설정에 작성)

graphittie님의 말에 공감합니다. 동시에 제 생각은, 현재의 극단적인 상황에서 균형을 맞추기 위해서는 균형 조정자가 아니라 대립 주체가 필요하지 않은가 하는 의견입니다.

어느정도 균형이 비등한 상황이라면 평형을 유지하기 위한 조정자의 역할이 가능해집니다. 그렇지만 지금의 상황에서 만들어질 수 있는 평형은 '불안정의 평형' 조차 만들기 힘든 상황이 아닌가 생각합니다. 극단이 존재할 때는 전체의 중도를 맞추기 위해서 다른 극단이 필요합니다. 이는 불행히도 지난 세기를 지나오며 역사속에서 본 모습이기도 합니다. 중립자는 힘이 있어야 가능합니다. 포탈이 포탈의 역할을 하고 개인이 개인의 권리를 찾는, 그러한 불안정 위의 평형이라도 추구하기 위해서는 현재의 거대 독점 세력에 대하여 완전히 antagonist가 될 필요가 있다는 것이 제 의견입니다.

그렇지만 말씀하신대로 조항을 고치는 문제에는 찬성합니다. smile 조금 더 명확한 표현이네요^^


graphittie 작성:

간단하게 말하면, '대기업과 사용자 사이의 중립이 될 것인가, 사용자 편이 될 것인가'가 되겠습니다.

전체적인 중립을 지키기 위해서는, 아마 저희가 해야 할 일은 당분간 사용자의 편이 되는 것 밖에 없을겁니다.
그만큼 심각하니까요. sad

1.0.6 Release Candidate 2를 공개합니다.

다운로드
Trac 기록
1.0.6은 기존의 로드맵에 비하여 많은 부분이 축소 되었습니다. 관련된 이야기는 이 곳 에서 읽으실 수 있습니다. 계획되었던 많은 부분은 1.1 트리로 이전할 예정이며, 1.0.6은 버그 수정과 안정성 향상 및 약간의 기능 추가가 있을 예정입니다.

1.0.5로부터 변화된 점의 목록입니다.

= 추가된 점 =
* "트랙백을 봅니다"에서 IP 필터링 스위치 추가
* 레이블 명을 기준으로 첨부파일 관리자의 파일 정렬 순서를 변경
* 관리자 화면에서 선택된 글의 카테고리 일괄 변경 기능
* XMLRPC 모듈 수정 (XMLStruct 의 변화 수용)
* 스킨의 html, head, body 태그의 특정한 위치에 스킨 수정 없이 지정되는 치환자 자동 삽입
* 플러그인에 Eolin SpamServer를 사용한 집단 안티스팸 플러그인 베타버전 추가 (optional)
* RSS 2.0 스펙에서 추가 제공된 item의 comments와 guid 속성을 추가

= 변경된 점 =
* 일반 - 자바스크립트 필터링 항목 추가
* 일반 - 효과적인 댓글 스팸 탐지를 위한 이벤트 처리 후 data strip
* 일반 - 블로그 시간대 설정 표기 방법 변경(locale text id를 timezone 설정값 사용)
* 일반 - 블로그 시간대 추가. (유럽 일부, 미국 일부, 호주 일부)
* 일반 - 언어 리소스 보정
* 일반 - RSS 생성시 태터툴즈 치환자가 전송되지 않도록 플러그인 전처리 후 전송
* 일반 - RSS 생성시 글 제목 및 내용 등에 single quote (')가 들어간 경우를 parsing하지 못하는 많은 리더 및 브라우저를 위해 character reference 처리
* 일반 - 신뢰할 수 있는 UI로 변경을 위하여 삭제 독립, 셀렉트 박스 선택 후 적용버튼으로 절차 변경
* 에디터 - 플래시 삽입버튼 제거
* 에디터 - 미디어 삽입버튼을 누르면 object 태그 삽입 창이 뜨도록 수정
* 에디터 - 첨부파일을 붙일때 미디어/플래시 파일인 경우 object 태그를 직접 삽입
* 에디터 - 글을 쓰거나 자바스크립트를 제거하는 부분에서 <object type="text/x-scriptlet"> 태그도 제거
* 에디터 - 본문 저장시 iframe 태그 제거
* 에디터 - 동영상 삽입 취소버튼 추가

= 버그 수정 =
* 일반 - 다국어 처리 누락 수정
* 일반 - firefox에서 주크박스 재생리스트가 펼쳐지지 않는 문제
* 일반 - 블로그에 글이 하나도 없을때 모바일 페이지로 접근하면 무한히 redirect 되는 현상 수정
* 일반 - 2단계 카테고리 이름을 수정한 직후에 3단계 카테고리(!) 추가가 가능하던 문제 수정
* 일반 - 오타수정
* 일반 - 답글 입력폼에서 쿠키에 저장된 이름, 홈페이지 주소를 출력할때 htmlspecialchars 처리
* 일반 - 카테고리 수정할때 수정되는 카테고리 이름에 htmlspecialchars 처리
* 일반 - single quot가 들어간 카테고리 이름이 여러개 생성될 수 있는 문제 수정
* 일반 - 바꾸려는 문자열에 $가 들어있을때의 오류 수정
* 일반 - mobile 페이지 XHTML 오류 수정
* 일반 - 블로그를 root에 설치하지 않고, 디렉토리에 설치한 경우 iMazing 전체보기가 오동작하는 문제를 해결
* 일반 - 트랙백 삭제시 트랙백 갯수가 잘못 표시되는 오류 수정
* 일반 - 초대받은 사람이 많은 경우 UI가 틀어지는 문제 (account/index.php)
* 일반 - RSS에 갤러리 스크립트가 들어갔을때 open_img 함수가 없는 곳에서 크게보기 버튼을 누르면 스크립트 에러가 나는 문제 수정
* 일반 - 블로그 만든 직후 아이콘과 파비콘 업로드가 되지 않는 문제점 수정
* 일반 - 여러 글 선택후 작업시 선택한 글이 없을 경우 글 선택을 요구
* 에디터 - 동영상 삽입 취소버튼 추가
* 에디터 - 속성 편집화면 레이아웃 깨지는 문제 수정
* 에디터 - 브라우저 사이즈가 변해도 깨지지 않도록 수정
* 에디터 - 파폭에서 자막 수정이나 오브젝트 삽입할때 글목록 화면으로 튕기는 문제 수정
* 에디터 - 오브젝트 추가할때 확장자가 없는 파일은 플래시 파일로 간주
* 에디터 - 삽입되는 플래시 배경은 투명하게
* 에디터 - 페이지 로딩 완료 전 파일업로드 클릭시 null 에러 수정
* 에디터 - 블로그 화면에서 연 트랙백 전송창에서 전송버튼 대신 enter를 누르면 바로 전송되도록 수정
* 에디터 - 다른 확장자의 파일을 올릴때 에러를 내고는 업로드가 되어 버리는 문제 수정.
* 리더 - cyworld rss paper의 시간을 읽어오지 못하는 문제 수정
* 리더 - 피드 삭제함수 버그 수정, 사용자와 관련된 테이블 삭제하는 함수 추가


버그 리포트는 QA 게시판 으로 부탁드립니다 smile

3,865

(0 답글들, 공지사항에 작성)

1.0.6 Release Candidate 2를 공개합니다.

다운로드
Trac 기록
1.0.6은 기존의 로드맵에 비하여 많은 부분이 축소 되었습니다. 관련된 이야기는 이 곳 에서 읽으실 수 있습니다. 계획되었던 많은 부분은 1.1 트리로 이전할 예정이며, 1.0.6은 버그 수정과 안정성 향상 및 약간의 기능 추가가 있을 예정입니다.

1.0.5로부터 변화된 점의 목록입니다.

= 추가된 점 =
* "트랙백을 봅니다"에서 IP 필터링 스위치 추가
* 레이블 명을 기준으로 첨부파일 관리자의 파일 정렬 순서를 변경
* 관리자 화면에서 선택된 글의 카테고리 일괄 변경 기능
* XMLRPC 모듈 수정 (XMLStruct 의 변화 수용)
* 스킨의 html, head, body 태그의 특정한 위치에 스킨 수정 없이 지정되는 치환자 자동 삽입
* 플러그인에 Eolin SpamServer를 사용한 집단 안티스팸 플러그인 베타버전 추가 (optional)
* RSS 2.0 스펙에서 추가 제공된 item의 comments와 guid 속성을 추가

= 변경된 점 =
* 일반 - 자바스크립트 필터링 항목 추가
* 일반 - 효과적인 댓글 스팸 탐지를 위한 이벤트 처리 후 data strip
* 일반 - 블로그 시간대 설정 표기 방법 변경(locale text id를 timezone 설정값 사용)
* 일반 - 블로그 시간대 추가. (유럽 일부, 미국 일부, 호주 일부)
* 일반 - 언어 리소스 보정
* 일반 - RSS 생성시 태터툴즈 치환자가 전송되지 않도록 플러그인 전처리 후 전송
* 일반 - RSS 생성시 글 제목 및 내용 등에 single quote (')가 들어간 경우를 parsing하지 못하는 많은 리더 및 브라우저를 위해 character reference 처리
* 일반 - 신뢰할 수 있는 UI로 변경을 위하여 삭제 독립, 셀렉트 박스 선택 후 적용버튼으로 절차 변경
* 에디터 - 플래시 삽입버튼 제거
* 에디터 - 미디어 삽입버튼을 누르면 object 태그 삽입 창이 뜨도록 수정
* 에디터 - 첨부파일을 붙일때 미디어/플래시 파일인 경우 object 태그를 직접 삽입
* 에디터 - 글을 쓰거나 자바스크립트를 제거하는 부분에서 <object type="text/x-scriptlet"> 태그도 제거
* 에디터 - 본문 저장시 iframe 태그 제거
* 에디터 - 동영상 삽입 취소버튼 추가

= 버그 수정 =
* 일반 - 다국어 처리 누락 수정
* 일반 - firefox에서 주크박스 재생리스트가 펼쳐지지 않는 문제
* 일반 - 블로그에 글이 하나도 없을때 모바일 페이지로 접근하면 무한히 redirect 되는 현상 수정
* 일반 - 2단계 카테고리 이름을 수정한 직후에 3단계 카테고리(!) 추가가 가능하던 문제 수정
* 일반 - 오타수정
* 일반 - 답글 입력폼에서 쿠키에 저장된 이름, 홈페이지 주소를 출력할때 htmlspecialchars 처리
* 일반 - 카테고리 수정할때 수정되는 카테고리 이름에 htmlspecialchars 처리
* 일반 - single quot가 들어간 카테고리 이름이 여러개 생성될 수 있는 문제 수정
* 일반 - 바꾸려는 문자열에 $가 들어있을때의 오류 수정
* 일반 - mobile 페이지 XHTML 오류 수정
* 일반 - 블로그를 root에 설치하지 않고, 디렉토리에 설치한 경우 iMazing 전체보기가 오동작하는 문제를 해결
* 일반 - 트랙백 삭제시 트랙백 갯수가 잘못 표시되는 오류 수정
* 일반 - 초대받은 사람이 많은 경우 UI가 틀어지는 문제 (account/index.php)
* 일반 - RSS에 갤러리 스크립트가 들어갔을때 open_img 함수가 없는 곳에서 크게보기 버튼을 누르면 스크립트 에러가 나는 문제 수정
* 일반 - 블로그 만든 직후 아이콘과 파비콘 업로드가 되지 않는 문제점 수정
* 일반 - 여러 글 선택후 작업시 선택한 글이 없을 경우 글 선택을 요구
* 에디터 - 동영상 삽입 취소버튼 추가
* 에디터 - 속성 편집화면 레이아웃 깨지는 문제 수정
* 에디터 - 브라우저 사이즈가 변해도 깨지지 않도록 수정
* 에디터 - 파폭에서 자막 수정이나 오브젝트 삽입할때 글목록 화면으로 튕기는 문제 수정
* 에디터 - 오브젝트 추가할때 확장자가 없는 파일은 플래시 파일로 간주
* 에디터 - 삽입되는 플래시 배경은 투명하게
* 에디터 - 페이지 로딩 완료 전 파일업로드 클릭시 null 에러 수정
* 에디터 - 블로그 화면에서 연 트랙백 전송창에서 전송버튼 대신 enter를 누르면 바로 전송되도록 수정
* 에디터 - 다른 확장자의 파일을 올릴때 에러를 내고는 업로드가 되어 버리는 문제 수정.
* 리더 - cyworld rss paper의 시간을 읽어오지 못하는 문제 수정
* 리더 - 피드 삭제함수 버그 수정, 사용자와 관련된 테이블 삭제하는 함수 추가


버그 리포트는 QA 게시판 으로 부탁드립니다 smile

3,866

(17 답글들, 스킨 및 플러그인에 작성)

또하나 도움을 드리자면, 플러그인 호출시 실제 경로인 plugins 대신 그냥 plugin/블라블라 식으로 경로 호출이 있을 경우, mod_rewrite에 의하여 blog/plugin/index.php를 부르게 되고, 이 파일에 의하여 자동으로 plugin/블라블라 이벤트가 호출되게 됩니다.

위의 소스에서의 호출 방식의 이해에 도움이 되셨으면 합니다. smile

3,867

(17 답글들, 스킨 및 플러그인에 작성)

MS word2007에서 잘 되지 않아서 (이건 word의 오류인듯 합니다) 플러그인 소스를 열어보니 무지하게 복잡하네요... stand-alone에 가깝군요^^

컴포넌트로 이미 구현된 명령들에 대해서 어떻게 설명을 드릴 수 있을까 생각해 보았습니다.

그러고보니 이런 물건이 있습니다. 태터툴즈 1.0에서 함께 내놓으려고 했던 플러그인인 MetaWeblog API 1.0 입니다.
xml부분은 1.0.6에 맞도록 적당히 손 봐 놓았습니다.

태터툴즈 안이 어떻게 생겼는지 분석하기에는 시간이 걸립니다^^. 이 플러그인을 보시고 어떤 부분들이 가능한지 파악하시는데 도움이 되셨으면 합니다. smile 분석할 시간을 줄이실 수 있지 않을까 합니다 smile

참고로, 아래의 플러그인은 현재 동작을 보장하지 못합니다. ㅎㅎ rc3였나? 까지만 존재했던 플러그인이죠.


index.xml

<?xml version="1.0" encoding="utf-8"?>
<plugin>
  <title>MetaWeblog API</title>
  <title xml:lang="ko">MetaWeblog API</title>
  <link>http://www.tattertools.com/plugins</link>
  <version>1.0 test</version>
  <description xml:lang="ko">MetaWeblog API의 태터툴즈 구현입니다. newPost/editPost/getPost/getRecentPosts를 지원하고 있습니다. URL은 {블로그 주소}/plugin/MetaWeblogAPI/ 입니다.</description>
  <description xml:lang="en">MetaWeblog API for Tattertools. Supports newPost/editPost/getPost/getRecentPosts functions. URL is {weblog URL}/plugin/MetaWeblogAPI/ </description>
  <license>GPL</license>
  <author xml:lang="ko" link="http://www.tattertools.com"><![CDATA[태터앤컴퍼니]]></author>
  <author xml:lang="en" link="http://www.tattertools.com"><![CDATA[Tatter & Company]]></author>
  <safety changeData="yes" exposeData="no" accessLocal="no" accessRemote="no" accessRaw="no" />
  <requirements>
    <tattertools>1.0</tattertools>
    <component>Eolin.PHP.XMLRPC</component>
    <component>Tattertools.Model.Entry</component>
  </requirements>
  <binding>
    <listener event="/plugin/MetaWeblogAPI/">serveMetaWeblogAPI</listener>
  </binding>
</plugin>

index.php

<?
requireComponent('Eolin.PHP.XMLRPC');
requireComponent('Tattertools.Control.Auth');

function serveMetaWeblogAPI($target, $mother) {
    $xmlrpc = new XMLRPC();
    $xmlrpc->registerMethod('metaWeblog.newPost', 'metaWeblog_newPost');
    $xmlrpc->registerMethod('metaWeblog.editPost', 'metaWeblog_editPost');
    $xmlrpc->registerMethod('metaWeblog.getPost', 'metaWeblog_getPost');
    $xmlrpc->registerMethod('metaWeblog.getRecentPosts', 'metaWeblog_getRecentPosts');
    if (!$xmlrpc->receive())
        $xmlrpc->sendFault();
}

function metaWeblog_newPost($blogid, $username, $password, $item, $publish) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, 'Incorrect username or password');
        
    if (empty($item['title']))
        return new XMLRPCFault(1, 'The title is required');
    if (empty($item['description']))
        return new XMLRPCFault(1, 'The description is required');
    
    requireComponent('Tattertools.Model.Entry');
    $entry = new Entry();
    $entry->title = $item['title'];
    $entry->content = $item['description'];
    if ($publish)
        $entry->visibility = 'public';
    if ($entry->add())
        return strval($entry->id);
    else
        return new XMLRPCFault(1, 'Could not post');
}

function metaWeblog_editPost($postid, $username, $password, $item, $publish) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, 'Incorrect username or password');
    
    if (empty($item['title']))
        return new XMLRPCFault(1, 'The title is required');
    if (empty($item['description']))
        return new XMLRPCFault(1, 'The description is required');
    
    requireComponent('Tattertools.Model.Entry');
    $entry = new Entry();
    if (!$entry->select($postid))
        return new XMLRPCFault(1, 'Post was not found');
    $entry->title = $item['title'];
    $entry->content = $item['description'];
    if ($publish)
        $entry->visibility = 'public';
    if ($entry->update())
        return true;
    else
        return new XMLRPCFault(1, 'Could not edit a post');
}

function metaWeblog_getPost($postid, $username, $password) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, 'Incorrect username or password');
        
    requireComponent('Tattertools.Model.Entry');
    $entry = new Entry();
    if (!$entry->select($postid))
        return new XMLRPCFault(1, 'Post was not found');
    return getmetaWeblogItem($entry);
}

function metaWeblog_getRecentPosts($blogid, $username, $password, $numberOfPosts) {
    if (!Auth::login($username, $password))
        return new XMLRPCFault(1, 'Incorrect username or password');
        
    requireComponent('Tattertools.Model.Entry');
    $entry = new Entry();
    if (!$entry->select())
        return new XMLRPCFault(1, 'Post was not found');
    $items = array();
    do {
        array_push($items, getmetaWeblogItem($entry));
    } while ($entry->moveNext() && --$numberOfPosts);
    return $items;
}

function getmetaWeblogItem($entry) {
    return array('postid' => $entry->id, 'title' => $entry->title, 'description' => $entry->content, 'dateCreated' => gmdate('Ymd\TH:i:s', $entry->published));
}
?>

3,868

(17 답글들, 스킨 및 플러그인에 작성)

우와
바로 MS워드 2007 베타로 블로그 포스팅 테스트 들어갑니다^^

graphittie 작성:

파일 연결이 깨졌습니다.

확장자가 php라 다운로드가 아니라 바로 실행 들어갔군요;;

확장자를 php_로 변경해 놓았습니다^^

오늘은 1.0.6 발표 예정일입니다. smile 언어구조가 그저께 freeze되었고, 언어팩은 아직 freeze가 되지 않았습니다.

일어의 경우는 Louice님에 의하여 freeze되었고, 영문의 경우는 아직 freeze가 되지 않았습니다.
(중국어의 경우 어떤 분께 컨택해야 하는지 아직 모르겠습니다ㅠ_ㅠ)

영문 번역 기여자 분들이나 영문 영문 번역 도와주실 분은 영문 언어팩을 내려 받으셔서 주석처리된 부분을 채워주셨으면 합니다 ^^

graphittie 작성:

스팸 때문에 울부짖는 유저와 스팸 때문에 태터를 접는다는 유저를 볼 때마다 가슴이 아파,

더 이상 사태를 방치하기는 힘들다고 생각하여 임시로 댓글 스팸을 막을 수 있는 플러그인을 만들어 태터홈에 올렸습니다.

이것으로 유저들이 EAS가 나올 때까지 버텨주면 좋겠는데 말이죠...

그나저나 이것에서마저 제외된 클래식 사용자는 어떻게 구제해야할지 참 난감하군요... 제가 클래식을 써본 적이 없어서요...

클래식용 플러그인 제작이 가능하신 분은 이식 좀 해주시면 감사하겠습니다.

PS. 워드 프레스 스킨 안 만들고 이거 만들고 있었습니다. 이게 너무 급해 보였어요.:(

멋집니다 ㅎㅎ
비밀번호 부분에 대해서는 아이디어를 생각해 보겠습니다^^

서버 디펜던시만 없으면 제 방법도 플러그인으로 만들어버리고 싶네요...
(hosts.deny를 수정하는 방식이라 절대 불가능할 것 같긴 합니다 ㅠ_ㅠ)

gofeel 작성:

http://www.tattertools.com/ko/forum/vie … php?id=596
와 겹치는 쓰레드 인듯 합니다.

쓰레드 이쪽으로 이동하였습니다 smile

티스토리에 포함되었으면 하는 플러그인이 있으면 아래에 댓글 부탁드립니다.

플러그인 링크와 제작자님 블로그도 함께 써주실 경우 제작자님께 쉽게 여쭈어 볼 수 있습니다. smile

티스토리에서 지원해 주었으면 하는 스킨이 있으시면 이 글 아래에 댓글 부탁드립니다.

아울러 스킨을 확인할 수 있는 링크와 제작자님 블로그도 링크해 주시면 더 빠르게 여쭈어 볼 수 있습니다^^

3,875

(10 답글들, 토의 및 과제 설정에 작성)

일 주 정도 마음을 가다듬었으니, 긴 이야기를 해 보려고 합니다.

지금부터 할 이야기는 실은 오래된 이야기입니다. 짧게 보면 이제 3주일이 된 이야기이고, 시작은 3개월이 되어가는 이야기이고, 길게 보면 삼 년은 된 이야기입니다. 그래서 내용이 뜬금없을 수도 있습니다. 그냥 감안하고 읽어주시면 됩니다^^

태터앤프렌즈는 태터툴즈가 좋아서, 태터툴즈에 물을 주러 모인 사람들의 모임입니다. 왜 물을 주는가에 대한 이유는 모두 다르지만, 결국 태터툴즈에 대한 애정이나 발전을 위한 질책이 그 아래에 깔려 있습니다. 물을 주고 싹이 자라나는 것을 보는 것은 즐겁습니다. smile 그 위에서 무엇이 자라나게 될까요? 또는 무엇을 '심고' 싶나요? 이제 그에 관한 생각을 함께 해 보았으면 합니다. 처음부터 태터앤프렌즈의 약자는 TaF가 아니라 TnF였습니다. 그리고 이제 가운데 n에 물을 좀 주어보려고 합니다.

여기 들른 대부분의 사람들이 블로그를 씁니다. 왜 블로그를 쓰시나요? 모두가 그에 대한 각기 다른 답을 가지고 계실겁니다. 그 이유또한 아주 다양합니다. 그러면 왜 '태터툴즈'를 쓰시나요? 이렇게 질문하면 또 다양한 답들이 있을겁니다. 저는 그러한 '다양성'을 굉장히 중요하게 생각합니다. 다양성의 종말은 웹이라는 생태계에 멸종을 가져온다고 믿기 때문입니다.

처음 웹을 만났을 때가 1996년 정도군요. 당시에는 엄청나게 느리긴 했지만 개개인 모두가 의미있는 존재였습니다. 황무지가 있고, 개간을 시작하는 사람들이 있던 때였습니다. 그런데 채 십여년이 지나지 않아 웹에서는 다양성이 사라지고 있습니다. 기술은 갈수록 고도화되고, 데이터는 시간이 지날수록 자본의 힘 아래에 묶입니다. 개인은 거대 자본의 말단에 매달려 소비의 주체가 되고 있죠. 자신을 펼쳐내고 싶어도 이제는 기업을 통해서만 가능하게 되었습니다.

그러한 현실에 변화가 생기기 시작하는 때가 지금 오고 있다고 생각하고 있습니다. 기술의 고도화가 누구나 접근 가능한 웹을 만들어냈고, 중앙 집중식이 아닌 커뮤니케이션 수단을 만들어 냅니다. 블로그가 그러한 하나의 예라고 생각합니다. 특히 설치형 블로그는 거대 자본에 예속되지 않는 커뮤니케이터이죠.

다른 블로그 서비스나 블로그 툴들과 다른 태터툴즈의 특징이 있습니다. 본인이 자신의 정보와 데이터를 완벽하게 통제할 수 있다는 점입니다. 태터툴즈를 이용한 서비스라면 언제든지 버튼 하나로 자신의 데이터를 통째로 옮겨다닐 수 있고, 서비스가 맘에 안들면 직접 블로그를 사용할 수도 있습니다. 동시에 사용하는 사람들에게 획일성에서의 탈피를 언제든지 가능하게 만들어준다는 장점도 있겠군요. 이상적입니다. 정확하게 표현하면 웹상에서의 데이터의 기록과 보관을 위한 이상적인 '공공재'입니다.

웹로그를 정의하려는 시도를 많이 봅니다. 지금은 웹로그가 저널이나 일기의 형태로만 사용되지만, 궁극적으로는 누구나 쉽게 형태를 변화시킬 수 있는 찰흙과 같은 형태가 될 겁니다. 그 시대가 되었을 때 그러한 변화의 주도권이 각 개인에게 있지 않고 통제 아래서만 이루어진다면, 또는 단일 기업의 아래에서 진행된다면 비극적인 일이 될 것입니다.

제가 생각하는 TnF의 방향은 태터툴즈를 도구로 삼아 웹의 변화를 가속화 하는 것입니다. 거대 자본으로부터의 독립이 가능한 웹을 만들고, 모든 개인이 자신의 창조물에 대한 소유권을 주장할 수 있는, 또한 언제든지 그 소유권을 쉽게 행사할 수 있으며, 궁극적으로는 자본과 도구를 넘어 창조물이 창조자를 제외한 어느 것에도 종속되지 않는 세상을 목표로 하는 거죠. 모든 개인이 자신의 주장을 자유롭게 펼칠 수 있으며 그 사이의 모든 권리와 책임이 개인에게 귀속되는 세상을 추구하는 것을 추구하고 싶습니다.

이러한 세상을 위한 공공재로 태터툴즈를 TNC와 함께 제공하고, 태터툴즈를 통하여 웹 세계 모두에서 본인 데이터의 소유와 이전이 용이하도록 바꾸는 일을 하는 것에 대해 어떻게 생각하십니까? 물론 태터툴즈 데이터는 xml형식으로 백업이 되기 때문에, 다른 툴로부터의 이전이나 다른 툴로의 이전 또한 용이해져야 하겠지요. 태터툴즈가 하나의 기준이 되어 xml을 데이터 저장과 변환의 표준 추구를 위한 강력한 동력이 될 수 있을겁니다.

이제 결론에 다 와 갑니다^^

보름 가까이 여러 TNC와 TnF분들과 이야기를 나누고 토론을 해 보았습니다. smile 이러한 일들을 하기 위해서는 팬덤 사이트나 커뮤니티를 넘어 조금더 명확한 외연을 가지고 있어야 한다는 결론에 이르렀고, 그 외연으로 제안한 것이 '태터 네트워크 재단Tatter Network Foundation' 입니다.

외연은 꼭 물리적이어야 할 필요가 없습니다. 하지만 분명한 철학과 목표는 존재해야 합니다. 사람은 물질이 없으면 굶고 말지만 철학이 없으면 동물이 됩니다. 이제 n에 물을 주어 N으로 키워서 그러한 철학과 목표를 확립해야 할 시점이 되지 않았을까 합니다.

아래는 많은 분들과 함께 논의하고 대표로 제가 명문화하여 정리해본 내용입니다.
어떻게 생각하시는지요?

설립목적
태터 네트워크 재단 (Tatter Network Foundation, 이하 TNF) 은 다음과 같은 목표를 이루기 위하여 설립되었다.

1. 월드 와이드 웹(WWW) 이 사용자의 손에서 떠나 기업 논리에 의하여 이용되는 것을 막는다. WWW이 갖는 자유성과 민주성이 기업에 의하여 훼손되지 않도록 한다. 웹은 공공재이며, 그 이용에 대한 권리는 개개인 모두에게 귀속된다.
2. 개인의 저작물에 대한 저작권이 법적으로만 각 개인에게 속하는 것이 아니라, 저작대상물 자체의 물리적 소유권도 함께 갖도록 한다. 개인이 웹에 창작하여 올린 정보는 기업의 소유가 될 수 없다. 기업은 개인이 동의하에 정보를 공여하는 동안에만 그 데이터를 이용할 수 있어야 한다. 데이터 자체의 소유권이 보장되며 원할 경우 언제든지 이를 삭제하거나 이동할 수 있는 권리를 갖고 누구나 쉽게 권리를 실행할 수 있는 수단이 존재하여야 한다. 동시에 기업으로의 종속을 넘어 도구에의 종속에도 반대한다. 모든 데이터가 창조자를 제외한 어떤 도구에도 종속되지 않음을 목표로 한다.
3. 개인이 자신의 주장과 의견을 공정하게 피력할 수 있는 웹을 추구한다. 웹은 자유로워야 한다. 그 위에서 개인간에 일어나는 모든 권리와 책임 또한 해당하는 개인에게 귀속되어야 한다. 법이 아닌 사적 자본에 의하여 통제되지 않는 웹을 추구한다. 자본에 의하여 발언 기회가 훼손되거나 묻히지 않는 웹을 추구한다.
4. 독과점때문에 사회가 부담해야 하는 댓가를 줄인다. 모든 개인이 어떠한 영리/비영리 활동을 하고자 할 때, 실제 필요한 비용 이상을 독과점 기업에게 낭비하는 일이 없는 웹을 목표로 한다.

역할
이를 위하여 TNF 는 다음과 같은 일을 한다.

1. 태터앤 컴퍼니(Tatter and Company, 이하 TNC) 와 함께 공공재로서의 태터툴즈를 개발한다. 모든 개인이 자유롭게 자신의 의견을 피력할 수 있으며, 데이터가 기업이나 도구에 종속되지 않는 환경을 만든다.
2. 태터툴즈를 활용하는 개인 및 기업의 활동을 지원한다. 독과점에 의하여 사회적으로 부담해야 하는 비용을 줄인다. 사회, 언론, 정치, 경제 네트워크의 안정성을 위하여 완전하게 열린 환경을 지향한다.
3. 태터툴즈의 보급을 위하여 다양한 활동을 펼친다. 이를 통하여 궁극적으로 모든 웹 상의 데이터가 상호 호환 및 변경 가능한 환경으로의 변화를 추구한다.
4. 이러한 활동을 실현하고 추진하기 위하여 수반되는 수익 및 기부 활동을 전개한다

우리 모두가 TNF의 일원으로 함께 걷게 됩니다.
이제야 막 생각을 시작하고 걷기를 시작하려는 단계입니다. 함께 많은 생각 나누어 봅시다. smile