다운로드 링크가 정상적으로 보이지 않는 경우 애드블록을 해제해 주세요.
본문 바로가기
  • 혜음우리말화연구소
잡담/사이트개발

사이트 개발과, 새로 할거?(2024-04-28)

by WindowsTiger 2024. 4. 28.

최근에 BMS 사이트 관련해서 안정화 좀 한다고 좀 많이 시간을 썼던거 같다. 

BMS라는게 유저가 직접 만드는 시스템이다 보니, 파일마다 인코딩 문제도 있고, 사소한 오타 같은것 때문에 사이트에서 인식을 못하고... 그런 문제가 좀 많이 크다. 그렇다고 파일을 함부로 수정하지 못하는게, LR2IR이라는 게임 집계를 하는 사이트가 있는데 파일의 md5 해시값을 기준으로 집계를 하기 때문에 파일이 수정되면 안되는 문제도 있다.... 그렇기 때문에 서버단에서 전부 교정을 해야한다.

 

그리고 인코딩 인식 오류 떄문에 chardet 라이브러리를 charset_normalizer로 바꾸고 뭔 짓을 다해봤지만, 실제 문장이 너무 짧다보니 인식률이 떨어져서 그냥 저렇게 밴 리스트를 만들어 버렸다... 왠만해서는 CP932가 맞는지라...

 

그리고 의외로 DB 레코드가 5000개까지 됬는데도 사이트는 꽤 적당적당히 돌아간다. 내가 sqlite 설명을 듣고 너무 보수적으로 생각했던건가?

 

코드클리닝은... 해야하는데...


 

여튼 위의 패턴 사이트 얘기는 여기까지로 하고 이번에 새로운 프로젝트를 구상하고 있다.

 

SpringBoot를 배워서 이걸 어디에 실습하면 좋을지 생각하고 있었는데, SpringBoot로 나무위키의 클론을 만들면 좋겠다는 생각이 났다.

 

https://github.com/librewiki/liberty-engine

 

GitHub - librewiki/liberty-engine: Wiki engine made with node.js

Wiki engine made with node.js. Contribute to librewiki/liberty-engine development by creating an account on GitHub.

github.com

https://github.com/openNAMU/openNAMU

 

GitHub - openNAMU/openNAMU: 여러 기능이 있는 위키 엔진 (Wiki engine with multiple functions.)

여러 기능이 있는 위키 엔진 (Wiki engine with multiple functions.) - openNAMU/openNAMU

github.com

https://github.com/gdl-blue/imitated-seed-2

 

GitHub - gdl-blue/imitated-seed-2: 더시드 *구버전* 모방 엔진

더시드 *구버전* 모방 엔진. Contribute to gdl-blue/imitated-seed-2 development by creating an account on GitHub.

github.com

 

일단 나무위키와 유사한 경험? 형식을 제공하는 위키 엔진들 중에는 이런 것들이 있다. 대부분 node.js로 개발되어 있으며, openNAMU는 파이썬으로 개발되어있다. 이 위키들을 보면서 그럼 springboot로는 위키를 개발할 수 없는 건가 하는 생각이 들었다. 

 

https://github.com/freeNAMU

 

freeNAMU - Overview

freeNAMU has 6 repositories available. Follow their code on GitHub.

github.com

물론 스프링부트로 만들려고 했던 시도고 있는거 같은데, 해당 프로젝트는 2021년 12월 말에 중단되었다. 따라서 해당 프로젝트를 참고하면서 만들면 좋을 것 같다. 

 

현재 고민중인 것들 

 

- 백엔드에서 RAW 텍스트를 보내고, 프론트에서 html로 렌더링 하는 식으로 할지, openNamu처럼 백엔드에서 전부 처리를 할지 고민중.

어차피 문서가 있는지 없는지에 따라, 링크의 색깔을 다르게 하는 위키 특성 때문에 프론트엔드에서만은 처리는 불가능. 따라서 백엔드에서 문서 있음 하고 표시를 하게 하던지, 백엔드가 전부 처리하던지 둘중 하나를 해야함.

 

- 문서 생성/삭제/이동: DB내에서 처리하면 되므로 어렵지 않을 듯

단 삭제시에는 로그기능 때문에 DB 레코드를 날리면 안됨. (삭제 필요시 이동처럼 구현이 됨)

 

-문서 넘겨주기

백엔드에서 먼저 읽어서 리다이렉트 시키면 됨 / 사실 프론트에서 해도 되고

 

-검색

나무위키가 검색기능이 좀 많이 안좋던데 개선할 수 있을까

 

-토론

DB내에서 구현가능할듯! 예제에 나오는 것들로 구현하면 될 것 같다.

 

- 이름공간(namespace)

관리자 권한 관련? 기능인데, DB내에서 상속 잘만 구현하면 될듯

 

-히스토리

다른건 뭐 다 주먹구구로 될것 같은데, 제일 문제는 히스토리를 어떻게 구현하는가 이다. sqlite에 DB 수정 내역 기록기능이 있는것 같은데 이걸로 DB내에 텍스트를 저장해서 수정내역을 볼 수 있을까?

 

이러면 Diff 구현도 어떻게 해야하는지 고민이고...  이점을 계속해서 고민중이다.

 

문서 저장방식도 DB에 long text로 넣으면 될것 같은데 흠...

 

그리고 프론트 분리해서 구현한다면 vue.js 같은 프론트앤드 프레임워크도 배우든지 삽질로 해야할텐데....

 

 

'잡담 > 사이트개발' 카테고리의 다른 글

DB 설계(2024-05-05)  (0) 2024.05.05
IR 보기 기능 추가(2024-05-01)  (1) 2024.05.01
bmson 지원 (2024-04-20)  (1) 2024.04.20
요즘 근황(2024-04-18)  (0) 2024.04.18
DB 구조 수정 및 새 프로젝트에 대한 고민(2024-04-13)  (0) 2024.04.06

댓글