Post

2024-09-08-TIL

2024-09-08-TIL

Today I Learned

블로그 이사

이번 주말 간에 기존의 블로그 프로젝트를 아카이빙하고 새로운 테마의 블로그로 모든 데이터를 완전히 이전하게 되었다. 이사하게 된 이유는 아주 많지만 최근에 이력서를 정리하고 원하는 회사에 지원해보면서 일종의 메타인지(?)를 해보았다. 그런데 내가 반대 입장에서 블로그를 방문했을 때, 너무.. 정돈되지 않은 지저분한 집에 초대된 느낌이었다. 그리고 가장 원하는 기능 중에 하나가 태그 기능이었다. 기존의 블로그는 아주 기본적인 정리 패턴만 적용이 되었다. 각 카테고리 별로 디렉터리를 생성하고, 디렉터리에는 반드시 Header1 타입으로 제목이 붙은 README.md 파일이 있어야 한다. 그러면 계층 구조를 보여주면서 화면에 렌더링 된다. 그 옛날의 ‘탐색기’ 뷰와 동일한 구조이다. 하지만 계층적인 구조로 글을 정리하다보니 조금 다른 패턴으로, 횡단으로 분류해보고 싶은 생각이 들었다. (like AOP?) 이런 요구사항을 충족하는 기능이 바로 태그를 통한 분류였다. 물론, 예전에 사용하던 velog도 지원하고 있는 기능이지만 블로그는 하나로 통합하고 싶었다. 그래서 바로 인기있는 jekyll 테마를 찾아보았다. 새로운 테마 선정의 기준은 다음과 같다.

  • 태그 기능이 있는가?
  • 많은 사용자들이 사용하고 있으며 프로젝트가 활성화되어 있는가?
  • 커스터마이징이 편리한가?
  • CSS 지식이 없는 사람도 쉽게 다룰 수 있는가?
  • 설치가 쉬운가?
  • 빌드 속도가 빠른가?

jekyll-theme-chirpy

위의 이유들을 모두 충족하는게 바로 jekyll-theme-chirpy이다. 특히 기존의 블로근는 불필요한 리스팅과 리소스의 캐싱 미적용 등의 이유로 빌드 속도가 꾸준히 느려지고 있었다. 그래서 여러가지 빌드 최적화를 해보았지만 효과는 미미했다. 가장 마지막에는 55분 정도까지 걸렸다. 그런데 이번에는 이미 여러가지 최적화가 적용되어 있어서 빌드 시간이 아무리 길어봐야 1분 정도이다. 그리고 무엇보다 마음에 드는 부분은 내가 원하는 색상을 쉽게 적용할 수 있었다는 점이다. chatGPT에게 “Dracula Style로 색상값을 적용해줘”라고 입력하니 이미 드라큘라 스타일을 알고있었고, 아주 자연스럽게 모든 요소에 대한 RGB 값을 적용해주었다.

Migration for Old Blog Data

jekyll-theme-chirpy 테마에서는 모든 게시글의 첫 부분에 날짜와 카테고리 등 기본 메타정보를 입력해주어야 글을 인식해서 화면에 표현해준다. 그리고 파일명에 날짜를 붙여서 작성해야 정확히 인식한다. 예를 들면, yyyy-MM-dd-파일명.md로 표현해야 우선 화면에 보인다. 그리고 글의 첫 부분에 메타정보를 입력하면 카테고리나 태그 등 다른 항목에 대해서도 원하는대로 표현된다. 처음에는 수작업으로 TIL 전체에 대해서 마이그레이션을 진행했다. 하지만 너무나도 반복적이고 많은 양의 TIL을 수작업으로 하려니 너무 오랜 시간이 걸렸다. 그래서 파이썬 스크립트를 간단하게 작성해서 이미 진행하던 것들은 내버려두고 앞부분에 메타정보를 붙이도록 했다. 그나마 다행인 부분은 기존의 TIL 파일명을 날짜별로 적어두었다는 것이다.

*날짜를 명시하지 않으면 커밋 날짜를 기준으로 정렬해서 나타내도록 수정해도 좋을 것 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import os

def add_metadata_to_all_til_files(base_dir):
    # 디렉토리 내의 모든 파일을 순회
    for root, dirs, files in os.walk(base_dir):
        for file in files:
            # .md 확장자의 파일만 처리
            if file.endswith("-TIL.md"):
                file_path = os.path.join(root, file)
                print(f"처리 중: {file_path}")

                # 파일의 연도, 월, 날짜 추출
                try:
                    file_name = file.replace("-TIL.md", "")  # 파일명에서 "-TIL.md" 제거
                    yyyy, mm, dd = file_name.split('-')  # 파일명에서 연도, 월, 일 추출
                except ValueError:
                    print(f"파일 이름 형식이 올바르지 않습니다: {file}")
                    continue

                # 메타데이터 생성
                metadata = f"""---
title: {yyyy}-{mm}-{dd}-TIL
date: {yyyy}-{mm}-{dd}
categories: [TIL, {yyyy}-TIL]
tags: [TIL]
---
"""

                # 파일 읽기 및 메타데이터 추가
                with open(file_path, 'r+') as f:
                    content = f.read()

                    # 이미 메타데이터가 존재하는지 확인
                    if content.startswith(metadata):
                        print(f"이미 메타데이터가 존재합니다: {file_path}")
                        continue

                    # 메타데이터가 없으면 추가
                    f.seek(0, 0)
                    f.write(metadata + '\n' + content)

                print(f"메타데이터가 성공적으로 추가되었습니다: {file_path}")


base_directory = "{로컬 환경에서 새로운 블로그 프로젝트의 위치}/_posts/TIL"
add_metadata_to_all_til_files(base_directory)

블로그 이사 후기

일단 이사를 하게 된 계기는 자아성찰이지만, 이것저것 정리를 해보고 방문자의 입장에서 좀 더 생각해보게 되었다. 원래는 그냥 개인 일기장이나 메모장 수준으로 관리하던 TIL 블로그였지만, 이제는 슬슬 연차도 쌓여가고.. 정돈되고 정제된 글을 써 보려고 한다. TIL도 꾸준히 작성하면서 신입때의 신선한 마음가짐으로 돌아가야겠다!

그리고 이번에 졸업 작품 이후로 안 하던 프론트 엔드 코드를 아주 살짝이지만 건드려보니 정말 재미있었다. 프론트 엔드가 적성에 맞는걸까?😅 확실히 눈에 보이는 결과물이 즉시 피드백을 주니까 일이 아닌 코딩으로 하기에는 정말 만족감이 큰 것 같다.

그동안 묵혀두었던 수많은 키워드들을 이번 계기로 하나씩 정리해서 차곡차곡 쌓아두어야겠다. 사개지만 하고 정작 듣지는 않았던 수많은 강의들도 하나씩 들어야지!

This post is licensed under CC BY 4.0 by the author.