@gerhard: Potrei ottenere la pulizia dei caratteri con codifica errata dopo la migrazione utilizzando Sidekiq? Sono davvero nuovo a Discourse, quindi potrei non capire come funziona.
Oppure forse uno script SQL direttamente su MariaDB?
Certo! Potresti anche modificare ogni post a mano. È circa 10 volte più semplice farlo prima, quando è possibile ricominciare da capo.
Ho provato diverse soluzioni per correggere la codifica lato MariaDB, ma non sono riuscito a trovare una soluzione definitiva. Ecco un po’ di codice che ho usato per correggere la codifica in un’importazione su cui sto lavorando.
### Codifica WIN1252
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 fallito per \n\n#{raw}\n\n"
win_encoded = ''
end
È stata un’esperienza dolorosa. Ho provato diverse codifiche e ne ho incluse diverse nel post per poterle confrontare. Questa sembrava risolvere la maggior parte dei problemi nella maggior parte dei casi. Mi è voluto molto più tempo di quanto avrei voluto per capire .scrub, poiché senza di essa avrei finito con stringhe che non potevano più essere analizzate con gsub.
Qualcuno ha già una buona soluzione per importare elenchi nidificati da phpBB?
Non sono abbastanza esperto di Ruby per sapere come affrontarlo – sono bloccato su questo
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
Qualcuno ha un’idea di come potrebbe apparire un “ciclo” su un elenco nidificato?
Non l’ho fatto, ma lo farò, grazie. Anche se cerco di evitarlo perché non voglio supportare tag BB aggiuntivi a lungo termine; preferirei davvero convertire i contenuti all’importazione. Le liste annidate non sono un problema insormontabile, ma sarebbe ottimo averle.
Sembra interessante, ma preferirei non dover più smanettare con phpBB. A parte le liste, il processo di importazione è già più o meno snellito. Questo ci riporterebbe indietro, richiedendo più lavoro e test. Tuttavia, è bello vedere che i progressi di 3.2 procedono bene.
Sì, stiamo affrontando questo tipo di problemi da un mese, migrando un vecchio forum vB3 con quasi due decenni di utilizzi bizzarri del bbcode, annidamenti, incorporamenti e così via.
Riuscire a portare una migrazione di questo tipo al 99,9% di perfezione non è banale. Ad esempio, abbiamo scritto codice Ruby per rimuovere tutti i tag bbcode dai nostri blocchi di codice, perché il markdown “non ama” i bbcode all’interno dei blocchi di codice delimitati.
Da parte nostra, stiamo ancora finalizzando molte routine di pre-elaborazione in Ruby e ci stiamo avvicinando sempre di più, ma non raggiungeremo mai la “perfezione” o il “100%” con quasi due decenni di post da parte di utenti bbcode molto creativi (per non parlare di tutti quegli utenti che hanno incollato testo direttamente nei post, ecc…)
Stiamo ancora lavorando per risolvere i problemi legati alla conversione da BBCode a Markdown.
Sembra che stiamo ancora riscontrando alcuni problemi con i nomi utente che vengono modificati o non importati affatto quando contengono alcuni caratteri speciali.
Ci sono problemi noti con l’importatore o sto interpretando male l’opzione per i nomi utente Unicode in Discourse? L’ho abilitata, ma la whitelist contiene ancora le lettere con l’umlaut. Devo eliminare la whitelist per consentire tutti i caratteri Unicode o devo elencare tutti i caratteri? Il mio pensiero era che l’abbinamento di Unicode consentisse tutti i caratteri Unicode, mentre la disabilitazione consentisse solo quelli nella whitelist.
Durante l’importazione, sembra che alcuni caratteri come @ o * vengano sostituiti da _ – posso immaginare che @ possa causare problemi con le menzioni @, ma… volevo solo essere sicuro prima di dover gestire manualmente tutti questi utenti prima dell’importazione (il che sarebbe un grosso problema).
Per prima cosa, grazie per tutta la documentazione e per l’aiuto fornito in questo argomento.
Ho appena importato un vecchio forum phpBB3 in un nuovo Discourse.
Tutto è andato abbastanza bene con 200.000 post e 20.000 allegati, ma Sidekiq ha avuto qualche difficoltà a elaborare tutto dopo l’importazione.
Ora mi trovo di fronte a un nuovo problema con i tag immagine inseriti all’interno di tag URL, come in questo caso: [url=http://www.casimages.com][img]http://nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg[/img][/url]
Dopo l’importazione (dalla conversione del BBCode in Markdown), queste immagini appaiono semplicemente come link: [nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg](http://www.casimages.com)
Esiste un modo per elaborare/rielaborare questi link in modo che vengano visualizzati come immagini e possano essere caricati automaticamente su S3?
Grazie, Jay. Sì, ho già abilitato l’impostazione “download remoto”. Il mio problema è che queste immagini vengono visualizzate come link (e l’URL dell’immagine è solo “la parte visualizzata” del link; il destinazione non corrisponde a un contenuto immagine).
Attualmente ho un forum importato da phpBB.
Sto valutando l’idea di importare un altro forum phpBB (36.000 messaggi, 230 membri) nella mia installazione Discourse esistente. Entrambi condividono categorie e utenti comuni.
Gli account utente potrebbero essere uniti manualmente.
Per quanto riguarda i messaggi, dopo l’importazione verrebbero spostati manualmente nelle categorie esistenti.
Funzionerebbe tutto “out of the box” con lo script di importazione o si creerebbe il caos?
Cosa succede se importo un forum phpBB e alcuni indirizzi email degli utenti esistono già nel mio Discourse corrente?
Dovrai cancellare i campi personalizzati import_id, altrimenti i nuovi post verranno considerati già importati.
Sembra qualcosa per cui ci si aspetta di dover fare parecchio lavoro di configurazione in un’installazione locale, utilizzando un backup del tuo database principale.
Grazie per queste preziose informazioni che non avevo considerato
Sì, lo farò e proverò su un server di test per vedere se è fattibile.
Per quanto riguarda il contesto:
Ospito un forum nazionale Discourse dedicato all’uniciclismo.
Ospito anche un forum phpBB per un’associazione locale di unicyclisti.
Entrambi i forum condividono alcuni degli stessi utenti, e alcuni argomenti o temi di discussione sono ridondanti. L’idea sarebbe quella di unire il forum dell’associazione locale a quello nazionale, eliminando così la ridondanza degli argomenti, e creare un gruppo o una categoria dedicata ai temi legati all’associazione locale.
Inoltre, le persone che sono presenti solo sul forum dell’associazione locale si uniranno così al forum nazionale, portando forse più attività.
Qualcuno ha un’idea di quale possa essere la ragione per cui MySQL non viene eseguito nel contenitore di importazione?
Ho eseguito diverse prove e finora ha sempre funzionato, ma ora ricevo:
Impossibile connettersi al server MySQL locale tramite topic:30810
Non appena provo ad avviare l’importazione. Ho controllato tre volte tutto, ho ricreato il contenitore di importazione più volte. Tutto è presente, ma sembra che MySQL non sia in esecuzione.
Sono un po’ sconvolto perché oggi è effettivamente il nostro vero passaggio a Discourse.