🎄 나만의 블로그 플랫폼 만들기
한동안 제가 만족할 만한 블로그 시스템에 대해 고민해 왔습니다. Ghost와 워드프레스(멀티사이트 포함) 등을 사용해 보았지만 여전히 뭔가 부족한 점이 있었습니다.
Ghost는 저와 친하지 않은 자바스크립트로 만들어져 기능을 추가하기가 어려웠습니다.
워드프레스 - 테마에 왜 그렇게 많은 플러그인이 필요한가요? 상점 중 한 곳에서 구입한 테마를 사용하는 사람들은 그 플러그인이 무엇을 하는지 알고 있나요? 아니면 언제 업데이트되었는지 알고 있나요? 저는 테마 때문에 사이트를 업데이트하지 못하는 경우가 정말 싫어요. 게다가 웹용 에디터라는 단어만 들어도 알 수 있듯이 저는 그다지 좋아하지 않습니다. 그런 편집기를 WYSIWYG라고 부르죠.
현재 저는 휴고라는 정적 생성기를 사용하고 있는데, 처음 사용했을 때 반해버렸어요. 일부 클라이언트 사이트에도 사용하고 있습니다. 하지만 정적 생성기는 정적이라는 몇 가지 한계가 있습니다.
그래서 제가 직접 만들었습니다. 아마 10개(?) 이상 시도한 것 같습니다. 처음 시작할 때 마크다운 형식과 태그를 사용하는 문서가 있는 한 명의 사용자를 위한 간단한 플랫폼을 원했습니다. 화려한 것은 없습니다.
워드프레스 멀티사이트에서 영감을 받아 여러 도메인에 대한 지원도 추가했습니다. 하나의 관리에서 여러 블로그(원하는 경우 하위 블로그)를 관리할 수 있습니다.
지난주에 AI 요약을 추가했는데 응답 시간에 문제가 생겨서 게시물이 데이터베이스에 저장되는 데 시간이 너무 오래 걸렸습니다. (보통 몇 밀리초가 걸리는데 지금은 약 10초가 걸립니다).
그래서 이번 주말에 대기열을 추가했습니다. cron으로 주기적으로 호출하고 대기열에서 작업을 로드하는 간단한 명령입니다. 연속 루프도 테스트 중이지만 지금은 크론으로 괜찮을 것 같습니다.
내 컴퓨터에서 테스트하고 Forge를 사용하여 서버로 푸시한 후 또 다른 문제를 발견했습니다. 제 컴퓨터는 MySQL을 사용하고 서버는 Postgresql을 사용합니다.
데이터베이스에 작업 데이터를 저장하는 방식에 Postgresql에 문제가 있었습니다. 직렬화된 데이터를 거기에 넣는 것이 현명하다고 생각했지만 Postgres는 이것을 좋아하지 않습니다. 나는 일을 다시 지나치게 복잡하게 만들었다.
나는 CakePHP 슬랙에 물었고 몇몇 사람들은 그렇게해서는 안되며 (직렬화 된 데이터를 데이터베이스에 저장) 더 좋은 방법은 작업과 함께 소비하려는 엔티티의 ID를 저장하거나 원본 데이터가 필요한 경우 json을 사용하는 것이라고 조언했습니다.
저는 json을 사용하기로 결정하고 컨트롤러를 다시 작성했으며 이제 대기열이 작동하고 있습니다.
지금은 블로그의 모양과 작동 방식에 만족하지만 사용자 정의 블로그로 이동하기 전의 RSS 내보내기가 여전히 그리워요.