@gerhard : 마이그레이션 이후에 Sidekiq를 사용하여 잘못된 문자 인코딩을 정리할 수 있을까요? 저는 Discourse에 정말 초보라서 그 작동 방식을 잘 이해하지 못할 수 있습니다.
아니면 MariaDB에 SQL 스크립트를 직접 실행하는 것은 어떨까요?
감사합니다!
@gerhard : 마이그레이션 이후에 Sidekiq를 사용하여 잘못된 문자 인코딩을 정리할 수 있을까요? 저는 Discourse에 정말 초보라서 그 작동 방식을 잘 이해하지 못할 수 있습니다.
아니면 MariaDB에 SQL 스크립트를 직접 실행하는 것은 어떨까요?
감사합니다!
물론입니다! 각 게시물을 수동으로 편집하는 것도 가능합니다. 다시 처음부터 시작할 수 있는 경우, 사전에 처리하는 것이 훨씬(약 10배) 쉽습니다.
MariaDB 쪽에서 인코딩을 수정하기 위해 여러 가지를 시도해 보았지만, 해결책을 찾지 못했습니다. 현재 작업 중인 임포트에서 인코딩을 수정하는 데 사용했던 코드를 공유합니다.
### WIN1252 encoding
win_encoded = ''
begin
win_encoded = raw.force_encoding('utf-8').encode("Windows-1252",
invalid: :replace, undef: :replace, replace: ""
).force_encoding('utf-8').scrub
rescue => e
puts "\n#{'-'*50}\nWin1252 failed for \n\n#{raw}\n\n"
win_encoded = ''
end
좋아요, 감사합니다 ![]()
그것은 고통스러운 경험이었다. 여러 인코딩을 시도했고, 비교할 수 있도록 포스트에 여러 가지를 포함시켰다. 이 방식은 대부분의 경우 대부분의 문제를 해결하는 것 같았다. .scrub를 파악하는 데는 내가 원했던 것보다 훨씬 더 오랜 시간이 걸렸다. 이 메서드가 없으면 gsub로 더 이상 파싱할 수 없는 문자열에 부딪히게 되었을 테니까.
phpBB에서 중첩된 리스트를 가져오는 좋은 해결책을 이미 알고 계신 분이 있을까요?
Ruby에 대해 충분히 숙련되지 않아서 어떻게 접근해야 할지 모르겠습니다. 아래 코드를 보고 있습니다.
def process_lists(text)
# convert list tags to ul and list=1 tags to ol
# list=a is not supported, so handle it like list=1
# list=9 and list=x have the same result as list=1 and list=a
text.gsub!(/\[list\](.*?)\[\/list:u\]/mi) do
$1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "* #{$1}\n" }
end
text.gsub!(/\[list=.*?\](.*?)\[\/list:o\]/mi) do
$1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "1. #{$1}\n" }
end
end
중첩된 리스트를 "반복"하는 방법은 어떻게 구현할 수 있을까요? 아이디어가 있는 분 있을까요?
아래는 bbcode 예시입니다.
[list]
[*]
[list=a]
[*]a
[*]b
[*]c
[*]d
[*]e
[/list]
[*]outer list
[/list]
이 공식 Discourse 플러그인이 LIST 태그에 어떻게 도움이 될 수 있는지 살펴보셨나요?
아직 확인하지는 않았지만, 확인해 보겠습니다. 감사합니다. 다만 장기적으로 추가 BBTags를 지원하지 않으려 하기 때문에 플러그인 사용을 피하려 합니다. 가져오기 시 해당 내용을 변환하는 방식을 훨씬 선호합니다. 중첩 목록은 치명적인 문제는 아니지만, 지원된다면 좋겠습니다.
백업을 만든 후 phpBB 3.2로 업그레이드하고 제 실험용 브랜치를 사용하실 수 있습니다. 이 브랜치는 BBCode에 대한 지원이 훨씬 더 좋습니다. ![]()
흥미롭긴 하지만, 저는 phpBB를 더 이상 만지작거리고 싶지는 않습니다. 목록을 제외하면 가져오기 과정은 이미 거의 표준화되어 있습니다. 그 작업을 하면 오히려 더 많은 작업과 테스트가 필요해져서 우리한테는 걸림돌이 될 수 있습니다. 그래도 3.2 버전의 진행 상황이 잘 이루어지고 있는 것을 보니 좋습니다.
@helmi 님,
네, 저희도 이런 유형의 문제들을 한 달째 해결하려고 고군분투하고 있습니다. 거의 20년 동안 다양한 방식으로 bbcode가 사용되고 중첩, 임베딩 등이 이루어진 레거시 vB3 포럼을 마이그레이션하는 작업 중이거든요.
이러한 마이그레이션을 99.9% 완벽하게 만드는 것은 쉽지 않습니다. 예를 들어, 마크다운은 펜스 코드 블록(fenced code blocks) 내부의 bbcode를 “좋아하지” 않기 때문에, 코드 태그에서 모든 bbcode 태그를 제거하기 위해 Ruby 코드를 작성했습니다.
저희 쪽에서는 여전히 많은 Ruby 전처리 루틴을 최종화하는 단계에 있으며, 점점 더 근접해 가고 있지만, 매우 창의적인 bbcode 사용자들(게시물에 복사해서 붙여넣는 사용자들 등…)이 작성한 거의 20년 분량의 게시물을 다루면서 "완벽함"이나 "100%"에는 결코 도달하지 못할 것입니다.
BBCODE에서 MD(마크다운)로 변환하는 과정에서 발생하는 문제들을 정리하는 작업도 계속 진행 중입니다.
가끔은 “모든 것을 그냥 제거해 버리자”… 하는 생각이 듭니다. ㅋㅋ
특수 문자가 포함된 경우, 사용자 이름이 수정되거나 아예 가져오지 않는 문제가 여전히 발생하고 있는 것 같습니다.
가져오기(importer)에 알려진 문제가 있는지, 아니면 discourse에서 유니코드 사용자 이름 옵션을 잘못 설정하고 있는 건지 궁금합니다. 해당 옵션을 활성화했지만 화이트리스트에는 여전히 외음부(umlauts) 문자가 포함되어 있습니다. 모든 유니코드 문자를 허용하려면 화이트리스트를 삭제해야 하는지, 아니면 모든 문자를 나열해야 하는지요. 제 생각에는 유니코드를 활성화하면 모든 유니코드 문자가 허용되고, 비활성화하면 화이트리스트에 있는 문자만 허용되는 구조인 줄 알았습니다.
가져오기 과정에서는 @나 *와 같은 일부 문자가 _로 대체되는 것처럼 보입니다. @는 @언급(mention)과 관련해서 문제가 될 수 있다는 점은 이해하지만… 가져오기 전에 해당 사용자들을 수동으로 처리하는 것은 큰 부담이 될 텐데, 확인 차 여쭤봅니다.
이 부분에 대한 조언이 있으신 분 계신가요?
감사합니다,
Frank
유니코드 지원을 활성화해도 여전히 문자와 숫자만 사용할 수 있습니다. Unicode usernames and group names 를 참조하세요.
안녕하세요,
우선 이 주제에 대한 모든 문서와 도움에 감사드립니다.
저는 오래된 phpBB3 포럼을 완전히 새로운 Discourse로 가져왔습니다.
20만 개의 게시물과 2만 개의 첨부 파일은 비교적 순조롭게 처리되었지만, 가져오기 후 sidekiq가 모든 작업을 소화하는 데 약간의 문제가 있었습니다.
이제 URL 태그 안에 포함된 이미지 태그와 관련된 새로운 문제에 직면했습니다. 예를 들어 다음과 같은 경우입니다:
[url=http://www.casimages.com][img]http://nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg[/img][/url]
가져오기(즉, bbcode를 markdown으로 변환) 후, 이러한 이미지는 단순히 링크처럼 보입니다:
[nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg](http://www.casimages.com)
이러한 링크를 처리하거나 다시 베이킹(rebake)하여 이미지가 올바르게 표시되고 s3에 자동으로 업로드되도록 하는 방법이 있을까요?
도움 주시면 감사하겠습니다.
"download remote"로 시스템 설정 검색
수정: 아, 실수했습니다. 그게 문제가 아니었네요. 죄송합니다.
Jay, 감사합니다. 네, 이미 “원격 다운로드” 설정을 활성화해 두었습니다. 제 문제는 이 이미지들이 링크로 표시된다는 것입니다(그리고 이미지 URL은 링크의 "표시되는 부분"일 뿐이며, 실제 대상이 이미지 콘텐츠와 일치하지 않습니다).
안녕하세요,
현재 phpbb에서 가져온 포럼을 운영 중입니다.
기존 Discourse 설치 환경에 다른 phpbb 포럼(36,000개 메시지, 230명 회원)을 가져오는 것을 고려하고 있습니다. 두 포럼은 카테고리와 사용자가 일부 공통으로 존재합니다.
사용자 계정은 수동으로 병합할 수 있습니다.
메시지의 경우, 가져온 후 기존 카테고리로 수동으로 이동할 예정입니다.
이 방식은 가져오기 스크립트에서 기본적으로 지원되는 방식인가요, 아니면 문제가 발생할까요?
phpbb 포럼을 가져올 때, 일부 사용자 이메일 주소가 현재 Discourse에 이미 존재하는 경우 어떻게 되나요?
import_id 커스텀 필드를 삭제해야 합니다. 그렇지 않으면 새로운 게시물이 이미 가져온 것으로 간주됩니다.
이는 주로 메인 데이터베이스의 백업을 사용하여 로컬 설치 환경에서 많은 시행착오를 겪을 것으로 예상되는 작업입니다.
생각하지 못했던 소중한 정보를 알려주셔서 감사합니다 ![]()
네, 말씀하신 대로 진행해서 테스트 서버에서 관리가 가능한지 확인해 보겠습니다.
배경 설명을 드리자면:
저는 전국적인 유니사이클(한바퀴 자전거) 관련 Discourse 포럼을 운영 중입니다.
또한 지역 유니사이클 협회를 위한 phpbb 포럼도 운영하고 있습니다.
두 포럼은 일부 사용자를 공유하고 있으며, 일부 주제나 토론 항목이 중복됩니다. 지역 협회 포럼을 전국 포럼에 통합하여 주제 중복을 없애고, 지역 협회 관련 주제에 대한 그룹/카테고리를 생성하는 것이 목표입니다.
또한, 지역 협회 포럼에만 참여하던 사람들이 이 방식으로 전국 포럼에 합류하게 되어 더 많은 활동이 생길 수도 있습니다.
MySQL이 import 컨테이너에서 실행되지 않는 이유가 무엇일지 아는 분 계신가요?
여러 번 실행해 봤는데 항상 잘 작동했는데, 지금은 다음 오류가 발생합니다.
Can't connect to local MySQL server through topic:30810
import를 시작하려고 할 때 나타나는 오류입니다. 모든 것을 세 번이나 확인했고, import 컨테이너를 여러 번 재구축했습니다. 모든 것이 제자리에 있는 것 같은데 MySQL이 실행되지 않는 것 같습니다. ![]()
오늘 실제로 discourse로 이전을 진행 중이라 조금 당황스럽습니다.
![]()
이상해 보이네요. 어디서 나온 건가요?