음, 저희는 태터툴즈·텍스트큐브라는 설치형 블로그 툴을 만들어서 제공만 할 뿐, 그 설치와 사용에 관한 책임은 사용자에게 있습니다. (기본적으로 설치는 사용자가 스스로 하는 것을 전제로 합니다.) 이걸로 불법 사이트를 만들더라도 저희로서는 막을 방법도 없고 책임도 없는 상황입니다.
신고하신다면 정통부(지금은 부서가 바뀌어서 어느 쪽인지 모르겠습니다만-_-) 쪽으로 하셔야 되겠네요.
아직 로그인하지 않았습니다. 로그인 또는 회원 등록을 해 주시기 바랍니다.
TNF : Tatter Network Foundation forum » daybreaker가 작성한 글
음, 저희는 태터툴즈·텍스트큐브라는 설치형 블로그 툴을 만들어서 제공만 할 뿐, 그 설치와 사용에 관한 책임은 사용자에게 있습니다. (기본적으로 설치는 사용자가 스스로 하는 것을 전제로 합니다.) 이걸로 불법 사이트를 만들더라도 저희로서는 막을 방법도 없고 책임도 없는 상황입니다.
신고하신다면 정통부(지금은 부서가 바뀌어서 어느 쪽인지 모르겠습니다만-_-) 쪽으로 하셔야 되겠네요.
굳이 구현하신다면 위의 함수들에서 SQL 쿼리를 만들 때 현재 보여지는 블로그(getBlogId() 함수 이용)가 대표 블로그인지 아닌지(phpmyadmin 등으로 db를 열어보시면 확인하실 수 있을 겁니다)를 if 문으로 검사하여 DESC/ASC를 적용하는 방법이 있겠습니다만.. 새 버전으로 업그레이드한다거나 이럴 경우 해당 코드를 다시 작성해서 넣어주셔야 하는 불편이 발생합니다.
현재로서는 '깔끔하게' 혹은 '간편하게' 할 방법은 없습니다.;;
헛, 파일이 누락된 듯 싶습니다.
inureyes님 조치를;;
혹시 Stored Procedure를 사용하실 생각이시면 MySQL 5.1(정확히 버전 몇인지는 기억이 안나네요) 이상으로 넘어가셔야 합니다. 이 이전에서 Stored Procedure를 사용할 경우 DBMS 자체의 query cache를 사용하지 않아서 성능이 심각하게 저하된다고 하더군요
그냥 단순하게 CRUD 부분을 모델 형태로 추상화하는 것은 어렵지 않겠으나, 말씀하신 대로 SQL의 고급 기능들(stored procedure, view 등)을 사용하게 될 경우 이를 어떻게 추상화할 수 있을지(ORM과 같은 형태가 되겠지만 ORM이 꼭 정답이라고 생각하고 접근할 필요는 없겠지요) 고민 중입니다.
제가 써본 ORM 프레임웍이 Django밖에 없기 때문에, 보다 다양한 프레임웍에서 고급 SQL들을 어떤 식으로 지원하고 있는지 알아볼 필요가 있습니다. Django의 경우 foreign key가 걸렸을 때 자동 삭제 등을 위해 TRIGGER 정도까지만 사용하는 것 같더군요. Custom SQL을 가급적 사용하지 않는 쪽으로 해야겠으나 실제 텍스트큐브에서 사용되는 쿼리의 복잡도가 어떻게 되는지 한 번 조사해봐야겠습니다.
그리고, php 5.2로 올라가면 xml dom 처리 루틴을 php 자체 라이브러리에서 가져다 쓸 수 있게 되므로, 현재 구현되어 있는 컴포넌트는 불필요해지지 않나 싶습니다. 역시 관련하여 TTXML 백업·복원 및 환경설정, 스킨·플러그인 정보 읽어들이는 부분을 다 새로 짜야겠네요...;;
참고로 질문을 다시 올릴 필요 없이 댓글을 하나 달아주면 그 질문이 최신 질문으로 다시 올라옵니다
(포럼의 특성이지요)
이 기능이 질문 답변 포럼에서는 '게시판처럼 보이게 하여 사람들이 익숙하게 느끼도록 한다'라는 이유로 제거되어 있습니다.;;
어차피 sqlite를 지원하려고 한다면 일부 고급 SQL에 대한 에뮬레이션 구현이 필요해지긴 합니다. 허나 구태여 mysql 3.x 및 4.0 이하 버전용을 제작하기 위해 노력을 쏟을 필요는 없겠지요.
문제는, DB 프레임웍이 어느 수준까지 추상화를 지원하느냐겠지요. 그에 따라 구현의 난이도나 에뮬레이션의 필요성 등이 많이 달라질 겁니다. SQL을 하나하나 전부 다 추상화하는 것이 DBMS 독립성을 지키기에는 더 낫겠지만 구현의 난이도는 올라가고, 사용자정의 SQL을 허용한다면 VIEW와 같은 것을 그냥 써버리면 되게 되는 대신 DBMS 의존성이 생길 수가 있지요.
다른 DB 프레임웍들은 VIEW 같은 거 어떻게 처리하나 찾아봐야겠군요.; Django의 경우 VIEW를 따로 쓰는 것 같지 않던데...
현재 1.7 버전의 코드에서는 링크 등록·수정 시 아무런 검사를 거치지 않게 되어 있는 걸로 압니다만... 왜 그런지 잘 모르겠군요;;
참고로 EAS하고 환경설정에서 등록한 금칙어하고는 관계가 없지 않던가요?
흠.. 혹시 config.php에서 $service['debugmode']를 1로 설정하신 다음 어떤 오류메시지가 나오는지 보이시나요?
혹은 .htaccess 파일이 업데이트가 안 되어 그런 것일 수도 있으니 수동으로 업데이트를 해보시는 것도 괜찮을 것 같네요.
아마 유니코드에만 있고 euc-kr 인코딩에서는 지원하지 않는 문자들이라서 그런게 아닌가 싶습니다.
문제가 발생할 가능성은 서버 쪽이거나 웹브라우저 쪽이거나 둘 중 하나일 것 같은데 정확히 무엇이 문제인지는 잘 모르겠군요. 텍스트큐브의 경우 태터툴즈 시절부터 utf-8 에뮬레이션 기능을 가지고 있기 때문에 서버가 지원하지 않더라도 사용이 가능하게 만들어져 있습니다만 혹시 그런 쪽에 문제가 있는 것일지도..?
노르웨이 여행 다녀온 사이 논의가 계속 있었군요.;
2.0에서는 좀 강하게 밀어붙이는 게 어떨까 싶습니다. 저는 4번(못해도 3번)에 한 표 던집니다.
DB 백엔드 설계 문서가 대충 정리되는 대로 실제 코딩 작업에 들어가야 할 것 같은데, 새로운 branch를 만들어서 해야 하지 않을까 싶습니다.
ps. 설계 문서가 좀더 다듬어지면 곧 TNF 메일링으로 돌리겠습니다. Peris님이 말씀하신 '태터 프레임워크' 정도 수준에 가까워지리라 생각되는군요.; 좀 많이 갈아엎을 생각입니다;
config.php에서 $service['domain'] 설정을 외부에 노출되는 도메인 이름이나 ip 주소로 변경해보세요.
daybreaker 작성:inureyes 작성:이거 php4.3에서도 돌아갈까요? 람다를 구현하는걸 생각해보면 아무리해도 php4 대에서는 답이 안나오는데...
아쉽게도 안 돌아갑니다...
토끼군이 hack으로 lambda를 만든 방법이, static 변수를 사용하는 함수를 create_function으로 만들어내는 것이었습니다만 한두 개라면 모를까 본격적으로 쓰기에는 성능상 엄청난 문제가 생긴다고 합니다.phunctional에서 람다를 만드는 방법이 두 가지인데, 하나는 def()와 fed()가 나타나는 파일의 경로와 줄 수를 debug_backtrace를 통해 알아내고, 이 사이에 있는 내용을 직접 "파일을 읽어서"(!) 가져오는 방식입니다. 그리고 나머지 하나는 create_function을 단순히 매핑하는 방식입니다. 두 가지 다 성능상에 문제가 있어서 도입하기는 약간^^ 어려울 것 같습니다~
소스코드를 읽어보니 그렇네요. 흐음;;
정규님이 lambda를 원하시는 이유가 스킨 처리 루틴을 lazy evaluation으로 바꾸기 위해서였는데, 좋은 방법 없을까요? (php 버리고 python으로 가자 이런 거 빼구..ㅠㅠ)
사실 CakePHP를 보면서, 또 직접 구현하려고 생각하면서 dictionary 형태의 자료를 주고받으려면 array('xxx' => 'yyy')를 항상 전부 다 적어줘야 한다는 점부터 벌써 근질근질합니다...orz 아, 너무 python에 물들었나봐요..ㅠㅠ
daybreaker 작성:php5를 쓰게 되면 캐시와 DB 백엔드를 모두 abstract class로 정의해서 필요에 따라 자기가 직접 구현해서 쓸 수 있게 모듈화하는 것이 굉장히 용이해집니다만... 하아 -_-;
ps. 홍민희님이 만드신 phunctional을 도입해볼까요? =3=3
이거 php4.3에서도 돌아갈까요? 람다를 구현하는걸 생각해보면 아무리해도 php4 대에서는 답이 안나오는데...
아쉽게도 안 돌아갑니다...
토끼군이 hack으로 lambda를 만든 방법이, static 변수를 사용하는 함수를 create_function으로 만들어내는 것이었습니다만 한두 개라면 모를까 본격적으로 쓰기에는 성능상 엄청난 문제가 생긴다고 합니다.
3.X는 버리는 문제와는 별개로 DB의 경우 mysql의 경우만을 고려하는 것은 지양해야 합니다. 이 점도 같이 고려를
넵, 물론입니다.
어차피, sqlite가 foreign key를 지원하지 않고 trigger로만 제약을 걸 수 있다든가 이런 식이라서 결국 독립성을 보장해야 하긴 합니다.
php5를 쓰게 되면 캐시와 DB 백엔드를 모두 abstract class로 정의해서 필요에 따라 자기가 직접 구현해서 쓸 수 있게 모듈화하는 것이 굉장히 용이해집니다만... 하아 -_-;
ps. 홍민희님이 만드신 phunctional을 도입해볼까요? =3=3
예전에 한번 PHP5 이상 지원 웹 어플 때문에 PHP5 를 지원하는 국내 호스팅을 찾아봤었는데, 거의 다가 PHP4 만을 지원하고 있더군요... 이 부분은 다소 고려를 해봐야 되지 않을까 싶습니다;;
흠.. 지금 찾아보니 php5의 magic method들을 php4에서도 쓸 있더군요. 그것도 텍스트큐브의 설치 조건인 4.3.0 이상에서요.
성능은 좀 떨어집니다만 일단 php4에서도 돌아는 가게 깔끔한 구현이 가능할 것 같네요.
CakePHP도 이미 같은 삽질을 해놨고.
생각 같아선 php5 강제하고 싶습니다....ㅠㅠ
도메인만 등록해놓고 그 도메인의 하위 경로에서 javascript 포함하여 사용하는 것은 문제 없는 것으로 알고 있습니다..;
네, 그럼 일단 백엔드 설계에서 mysql 3.x 지원은 없는 걸로 하겠습니다.
mysql 4.x에서 innodb가 아닌 경우는 어찌되는지 좀더 알아봐야겠군요.
php4는 어쩔까요? (.....) php6 전용 고고싱? =3=3
텍스트큐브 2.0 백엔드 설계를 하다보니 MySQL 3.x가 역시나 걸리네요.
제가 대충 알기로는 일단 유니코드 쪽 지원이 안 된다는 점하고 foreign key와 고급 join/subquery 같은 게 안 된다는 점 정도인데 그 외에 어떤 차이점이 있는지 혹시 다른 분들이 알려주시면 좋겠습니다.
생각 같아서는 PHP4도 확 버리고 PHP5 전용으로 하고 싶지만(.....이렇게 하면 코드를 훨씬 깔끔하게 할 수 있습니다) 이건 좀 무리겠지요?;;;
DB 모듈을 잘만 짜면 MySQL 3.x 지원도 어찌 가능할 것 같긴 한데 현실적으로 해야 되나 의문입니다. 호스팅들 중에 아직도 MySQL 3.x 쓰는 곳이 있나요?;
업글하고 나서 관리자 페이지 들어갔다가 식겁했습니다.....
캐시 삭제하고 나서야 안심했다는...-_-;;; ㅋㅋ 수고하셨습니다~
음... 가장 low-level로 해결한다면 텍스트큐브가 사용하는 DB 계정에 접속해서 텍스트큐브가 하는 것과 똑같이 DB를 만져주는 방법이 있겠습니다만, 텍스트큐브가 버전업 될 때마다 호환 여부를 체크해야 하는 불편이 있죠.
내부에서만 접속할 수 있는 php를 하나 만들고 거기서 텍스트큐브의 컴포넌트들을 include하여 컴포넌트들이 생성하게 하는 것도 한 방법이 될 수 있겠습니다. 일단 db schema에 대한 documentation이 필요한데 이게 아직 준비가 안 되어서..;;
제가 요즘 parallel computation과 music technology 기말플젝 때문에 좀 바쁩니다;;
2주 후에 기말고사 끝나고 찾아뵙도록 하죠.. (...어이)
자, 방법은 여기 참고를.... =3=3=3
자바스크립트 "잘" 쓰시면 가능은 할 것 같....=3=3==3=3
..........;
드디어 패키지 설치를 요구하시는 분이 나타났군요...;;;
랄라..(...)
apt-get install로 설치할 경우 중간에 옵션을 선택할 수 있도록 프롬프트를 띄울 수 있던가요?;
서비스형으로 해서 루트 권한으로 어플리케이션 디렉토리에 깔아버릴 것인지 개인사용자용으로 특정 사용자 디렉토리에만 깔 것인지 선택하는 게 필요할 듯.
Rewrite rule이 들어있는 .htaccess 파일을 고치셔야 합니다.
http://forum.tattersite.com/ko/viewtopic.php?id=5273 이 글을 참고하세요.
(다만 저렇게 했을 때도 제로보드의 모든 기능이 정상적으로 동작하는지까지는 저도 테스트를 안 해봐서 모르겠습니다..)
TNF : Tatter Network Foundation forum » daybreaker가 작성한 글