2026.05.26 (ํ™”)

โœจ GPT-5.5์˜ ์š”์•ฝ ใ€€

๋ธ”๋กœ๊ทธ ์žฌ๊ฐœ ์งํ›„ ์‚ฌ์ด๋“œ๋ฐ”์— ํฌ์ŠคํŠธ ๋‹ฌ๋ ฅ๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ ํ™œ๋™ ํ†ต๊ณ„๋ฅผ ๋ถ™์ด๊ณ , ํ˜„์žฌ ๊ธ€ ๊ธฐ์ค€ ์›”๊ณผ ์›”๋ณ„ ์•„์นด์ด๋ธŒ ํƒ์ƒ‰๊นŒ์ง€ ๋งŒ๋“  ๊ธฐ๋ก.

GitHub Pages ๋ธ”๋กœ๊ทธ ์žฌ๊ฐœ ์‹œ์Šคํ…œ์„ ์ •๋ฆฌํ•˜๊ณ  ๋‚˜๋‹ˆ ๋ฐ”๋กœ ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ๋ณด์˜€๋‹ค.

๊ธ€์€ ๋‹ค์‹œ ์“ฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ธ”๋กœ๊ทธ๊ฐ€ ๋‹ค์‹œ ์‚ด์•„๋‚œ ๋А๋‚Œ์€ ์•„์ง ๋ถ€์กฑํ–ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก๋งŒ์œผ๋กœ๋Š” ์ด ๋ธ”๋กœ๊ทธ๊ฐ€ ์–ธ์ œ ์›€์ง์˜€๋Š”์ง€, ์–ด๋А ๋‚  ๊ธฐ๋ก์ด ์Œ“์˜€๋Š”์ง€, ์ตœ๊ทผ์— ์–ด๋–ค ํ๋ฆ„์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค.

Daily Review๋ฅผ ๋‹ค์‹œ ์“ฐ๋ ค๋ฉด ๋‚ ์งœ ๊ฐ๊ฐ์ด ํ•„์š”ํ•˜๋‹ค.

์ด ๋ธ”๋กœ๊ทธ๋Š” ๊ฒฐ๊ตญ โ€œ์–ด๋А ๋‚  ๋ฌด์—‡์„ ๋‚จ๊ฒผ๋Š”๊ฐ€โ€๊ฐ€ ์ค‘์‹ฌ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ GitHub Pages ๋ธ”๋กœ๊ทธ์—๋Š” ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ณด์ด๋Š” ๋‚ ์งœ ํƒ์ƒ‰์ด ์—†๋‹ค. ์ •์  ๋ธ”๋กœ๊ทธ๋ผ์„œ ๋”๋”์šฑ ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ค๋Š˜ ๋ฐค ๋ถ™์ธ ๊ธฐ๋Šฅ์€ ๋‹จ์ˆœํ•œ ์žฅ์‹์ด ์•„๋‹ˆ์—ˆ๋‹ค.

์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ๊ธ€ ๋ชฉ๋ก์˜ ๋ณด์กฐ ์žฅ์‹์ด ์•„๋‹ˆ๋ผ, ๋‚ ์งœ์™€ ํ™œ๋™ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ํƒ์ƒ‰ ๋„๊ตฌ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด์—ˆ๋‹ค.

์‚ฌ์ด๋“œ๋ฐ”์— ํ˜„์žฌ ์›” ํฌ์ŠคํŠธ ๋‹ฌ๋ ฅ์„ ๋ถ™์˜€๋‹ค

์ฒซ ์ปค๋ฐ‹์€ f6971fc์˜€๋‹ค.

f6971fc  feat: add sidebar activity widgets

์ด๋•Œ ์ƒˆ๋กœ ๋งŒ๋“  ํŒŒ์ผ์€ ๋‘ ๊ฐœ๋‹ค.

_includes/sidebar-calendar.html
_includes/sidebar-nav-stats.html

sidebar.html์—๋Š” ๋‹ฌ๋ ฅ include๋ฅผ ๋ถ™์˜€๋‹ค.

<section class="sidebar-calendar"
  data-sidebar-calendar
  data-calendar-lang="ko"
  data-calendar-posts-src="/assets/data/calendar-posts-ko.json"
  data-calendar-weekdays="[&quot;์ผ&quot;,&quot;์›”&quot;,&quot;ํ™”&quot;,&quot;์ˆ˜&quot;,&quot;๋ชฉ&quot;,&quot;๊ธˆ&quot;,&quot;ํ† &quot;]"
  data-calendar-label-suffix="ํฌ์ŠคํŠธ ๋‹ฌ๋ ฅ"
  data-calendar-post-count-label="ํŽธ"
  data-calendar-post-list-label="๊ธ€"
  data-calendar-time-zone="Asia/Seoul"
  data-initial-month="2026-05"
  data-focus-date="2026-05-26"
  data-focus-mode="page"
  data-current-path="/devlog/github-pages-blog/github-pages-blog-sidebar-calendar/"
  data-min-month="2024-12"
  data-max-month="2026-07"
  aria-label="2026.05 ํฌ์ŠคํŠธ ๋‹ฌ๋ ฅ">
  <div class="sidebar-calendar__archive" data-calendar-archive aria-label="์—ฐ๋„์™€ ์›”๋ณ„ ๊ธ€ ์ˆ˜">
    <div class="sidebar-calendar__years" data-calendar-years></div>
    <div class="sidebar-calendar__months" data-calendar-months></div>
  </div>
  <div class="sidebar-calendar__grid" data-calendar-grid>
      <span class="sidebar-calendar__weekday">์ผ</span>
      <span class="sidebar-calendar__weekday">์›”</span>
      <span class="sidebar-calendar__weekday">ํ™”</span>
      <span class="sidebar-calendar__weekday">์ˆ˜</span>
      <span class="sidebar-calendar__weekday">๋ชฉ</span>
      <span class="sidebar-calendar__weekday">๊ธˆ</span>
      <span class="sidebar-calendar__weekday">ํ† </span>
        <span class="sidebar-calendar__day sidebar-calendar__day--blank" aria-hidden="true"></span>
        <span class="sidebar-calendar__day sidebar-calendar__day--blank" aria-hidden="true"></span>
        <span class="sidebar-calendar__day sidebar-calendar__day--blank" aria-hidden="true"></span>
        <span class="sidebar-calendar__day sidebar-calendar__day--blank" aria-hidden="true"></span>
        <span class="sidebar-calendar__day sidebar-calendar__day--blank" aria-hidden="true"></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">1</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">2</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">3</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">4</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">5</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">6</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">7</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">8</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">9</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">10</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">11</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">12</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">13</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">14</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">15</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">16</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">17</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">18</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">19</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">20</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">21</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">22</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">23</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">24</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">25</span></span>
      <span class="sidebar-calendar__day sidebar-calendar__day--focus"><span class="sidebar-calendar__day-number">26</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">27</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">28</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">29</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">30</span></span>
      <span class="sidebar-calendar__day"><span class="sidebar-calendar__day-number">31</span></span>
  </div>
  <section class="sidebar-calendar__post-list sidebar-calendar__post-list--dynamic" data-calendar-post-list aria-live="polite" hidden></section>
</section>

์ฒ˜์Œ ๋‹ฌ๋ ฅ์€ JavaScript ์—†์ด Liquid๋งŒ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค.

site.posts์—์„œ ์ˆจ๊น€ ๊ธ€์„ ์ œ์™ธํ•˜๊ณ , ํ˜„์žฌ ์›”์˜ ์ฒซ ์š”์ผ๊ณผ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋ฅผ ๊ณ„์‚ฐํ–ˆ๋‹ค. 2์›” ์œค๋…„ ๊ณ„์‚ฐ๊นŒ์ง€ Liquid ์•ˆ์—์„œ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.




์›” ์•ˆ์—์„œ ๊ธ€์ด ์žˆ๋Š” ๋‚ ์งœ๋Š” ๋งํฌ๊ฐ€ ๋˜๊ณ , ๊ธ€์ด ์—†๋Š” ๋‚ ์งœ๋Š” ์ˆซ์ž๋กœ๋งŒ ๋‚จ๋Š”๋‹ค. ์ฒ˜์Œ ๊ธฐ์ค€์€ site.time์ด์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ด ์‹œ์ ์˜ ๋‹ฌ๋ ฅ์€ โ€œํ˜„์žฌ ๋‹ฌ์˜ ํฌ์ŠคํŠธ ํ˜„ํ™ฉโ€์„ ๋ณด์—ฌ์ฃผ๋Š” ์‚ฌ์ด๋“œ๋ฐ” ์œ„์ ฏ์ด์—ˆ๋‹ค.

์ด ์ •๋„๋งŒ ํ•ด๋„ ํšจ๊ณผ๋Š” ๋ฐ”๋กœ ์žˆ์—ˆ๋‹ค.

๋ธ”๋กœ๊ทธ๊ฐ€ ๋‹ค์‹œ ์›€์ง์ด๊ณ  ์žˆ๋‹ค๋Š” ๋А๋‚Œ์ด ์ƒ๊ฒผ๋‹ค. ๊ธ€ ์ œ๋ชฉ ๋ชฉ๋ก๋งŒ ๋ณด๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, ๋‹ฌ๋ ฅ์€ ๊ธฐ๋ก์˜ ๋ฐ€๋„๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ๋ฉฐ์น ์— ๊ธ€์ด ๋ชฐ๋ ธ๋Š”์ง€, ์–ด๋А ๋‚  ๋น„์—ˆ๋Š”์ง€, ์˜ค๋Š˜์ด ์–ด๋””์ธ์ง€๊ฐ€ ํ•œ๋ˆˆ์— ๋“ค์–ด์˜จ๋‹ค.

์นดํ…Œ๊ณ ๋ฆฌ์—๋„ ํ™œ๋™ ์ •๋ณด๋ฅผ ๋ถ™์˜€๋‹ค

๋‹ฌ๋ ฅ๋งŒ ๋ถ™์ด๋ฉด ๋‚ ์งœ ํ๋ฆ„์€ ๋ณด์ด์ง€๋งŒ, ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ํ๋ฆ„์€ ์—ฌ์ „ํžˆ ๋‘”ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ sidebar-nav-stats.html๋„ ๊ฐ™์ด ๋งŒ๋“ค์—ˆ๋‹ค.

์ด include๋Š” ์‚ฌ์ด๋“œ๋ฐ” ํ•ญ๋ชฉ์˜ URL์„ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒฝ๋กœ๋กœ ๋ณด๊ณ , ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•œ ๊ธ€์„ ๋‹ค์‹œ ํ•„ํ„ฐ๋งํ•œ๋‹ค.



์˜ˆ๋ฅผ ๋“ค์–ด /daily-review๋ผ๋ฉด daily-review ์นดํ…Œ๊ณ ๋ฆฌ ๊ธ€ ์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , /diary/ai๋ผ๋ฉด diary์™€ ai๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ธ€๋งŒ ๋‚จ๊ธด๋‹ค.

์ถœ๋ ฅ์€ ๋‹จ์ˆœํ•˜๋‹ค.

๊ธ€ ์ˆ˜ ยท ์ตœ๊ทผ ๊ธ€ ๋‚ ์งœ

์ด๊ฒŒ ์ข‹์•˜๋˜ ์ด์œ ๋Š” ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ๋‹จ์ˆœ ๋ชฉ์ฐจ์—์„œ ๋ฒ—์–ด๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ค๋Š˜ ํ•˜๋ฃจ๋Š”์ด ๋ช‡ ํŽธ์ธ์ง€, ์ธ๊ณต์ง€๋Šฅ ๊ธ€์ด ์ตœ๊ทผ ์–ธ์ œ ์˜ฌ๋ผ์™”๋Š”์ง€, GitHub Pages Blog๊ฐ€ ์‹ค์ œ๋กœ ์šด์˜ ์ค‘์ธ์ง€๊ฐ€ ๋ณด์ธ๋‹ค. ๋ธ”๋กœ๊ทธ๊ฐ€ ์ฃฝ์–ด ์žˆ๋Š”์ง€ ์‚ด์•„ ์žˆ๋Š”์ง€๋Š” ๊ธ€ ์ˆ˜๋ณด๋‹ค ์ตœ๊ทผ ๋‚ ์งœ์—์„œ ๋” ์ž˜ ๋“œ๋Ÿฌ๋‚œ๋‹ค.

๋ชจ๋ฐ”์ผ ๋ฐ€๋„๋ถ€ํ„ฐ ๋ฐ”๋กœ ์กฐ์ •ํ–ˆ๋‹ค

๋‹ฌ๋ ฅ์„ ๋ถ™์ด์ž๋งˆ์ž ๋ชจ๋ฐ”์ผ ๋ฐ€๋„๊ฐ€ ๋ฌธ์ œ์˜€๋‹ค.

์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋ฐ์Šคํฌํ†ฑ์—์„œ๋Š” ์—ฌ์œ ๊ฐ€ ์žˆ์ง€๋งŒ, ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ๋ณธ๋ฌธ ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๊ฑฐ๋‚˜ ๋ฉ”๋‰ด์™€ ์„ž์ธ๋‹ค. ๋‹ฌ๋ ฅ ์นธ์ด ํฌ๊ฑฐ๋‚˜ ๊ธ€ ์ˆ˜ ๋ผ๋ฒจ์ด ๊ธธ๋ฉด, ์œ„์ ฏ ํ•˜๋‚˜๊ฐ€ ํ™”๋ฉด์„ ๋„ˆ๋ฌด ๋งŽ์ด ๋จน๋Š”๋‹ค.

๊ทธ๋ž˜์„œ 17d074d, b401d8b์—์„œ ์‚ฌ์ด๋“œ๋ฐ” ํ™œ๋™ ๋ผ๋ฒจ๊ณผ ๋‹ฌ๋ ฅ ๋ฐ€๋„๋ฅผ ๋ฐ”๋กœ ์ค„์˜€๋‹ค.

17d074d  fix: tighten sidebar activity labels
b401d8b  [Fix] | Sidebar calendar: Improve mobile density

SCSS์—์„œ๋Š” ๋‚ ์งœ ์นธ์„ aspect-ratio: 1๋กœ ๊ณ ์ •ํ•˜๊ณ , ์ž‘์€ ํฐํŠธ์™€ 4px radius๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ ํ™œ๋™ ์ •๋ณด๋Š” ํ•œ ์ค„ ์•ˆ์—์„œ ์ž‘๊ฒŒ ๋ณด์ด๊ฒŒ ํ–ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฑด ๋‹ฌ๋ ฅ์„ โ€œ์ฃผ์ธ๊ณตโ€์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

๋‹ฌ๋ ฅ์€ ๋ธ”๋กœ๊ทธ ํƒ์ƒ‰์„ ๋•๋Š” ์žฅ์น˜๋‹ค. ๋ณธ๋ฌธ๋ณด๋‹ค ์ปค์ง€๋ฉด ์•ˆ ๋œ๋‹ค. ํŠนํžˆ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ์ •๋ณด๋Š” ์ฃผ๋˜, ๊ธ€ ์ฝ๊ธฐ๋ฅผ ๋ฐฉํ•ดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

ํ˜„์žฌ ๊ธ€ ๊ธฐ์ค€ ์›”๋กœ ๋ฐ”๊ฟจ๋‹ค

๊ณง๋ฐ”๋กœ ๋” ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ณด์˜€๋‹ค.

๋‹ฌ๋ ฅ์ด site.time ๊ธฐ์ค€์ด๋ฉด, 2025๋…„ ๊ธ€์„ ์ฝ์„ ๋•Œ๋„ 2026๋…„ 5์›” ๋‹ฌ๋ ฅ์ด ๋‚˜์˜จ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋‹ฌ๋ ฅ์€ ํ˜„์žฌ ๊ธ€์˜ ๋งฅ๋ฝ์„ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ccb58d5์—์„œ ๊ธฐ์ค€ ๋‚ ์งœ๋ฅผ ๋ฐ”๊ฟจ๋‹ค.

ccb58d5  [Fix] | Sidebar: Refine calendar behavior

ํ•ต์‹ฌ์€ ์ด ๋ถ€๋ถ„์ด๋‹ค.



ํŽ˜์ด์ง€์— date๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ๋‚ ์งœ์˜ ์›”์„ ๋ณด์—ฌ์ค€๋‹ค. ๋‚ ์งœ๊ฐ€ ์—†๋Š” ํŽ˜์ด์ง€์—์„œ๋Š” ๊ธฐ์กด์ฒ˜๋Ÿผ site.time์„ ์“ด๋‹ค.

์ด ์ˆ˜์ •์œผ๋กœ ๋‹ฌ๋ ฅ์˜ ์„ฑ๊ฒฉ์ด ๋‹ฌ๋ผ์กŒ๋‹ค.

์ฒ˜์Œ ๋‹ฌ๋ ฅ์€ โ€œ์ด๋ฒˆ ๋‹ฌ ๋ธ”๋กœ๊ทธ ํ˜„ํ™ฉโ€์ด์—ˆ๋‹ค. ์ด์ œ๋Š” โ€œ์ง€๊ธˆ ์ฝ๋Š” ๊ธ€์ด ๋†“์ธ ์‹œ๊ฐ„โ€์„ ๋ณด์—ฌ์ค€๋‹ค. ์˜ค๋ž˜๋œ Daily Review๋ฅผ ์ฝ์œผ๋ฉด ๊ทธ ๋‹ฌ์˜ ๊ธฐ๋ก ํ๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๊ฐ™์€ ๋‹ฌ์— ์–ด๋–ค ๊ธ€์ด ์žˆ์—ˆ๋Š”์ง€๋„ ์ด์–ด์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒŒ ๋‚ ์งœ ์ค‘์‹ฌ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ์—๋Š” ํ›จ์”ฌ ๋งž๋‹ค.

๊ฐ™์€ ๋‚  ์—ฌ๋Ÿฌ ๊ธ€์€ ๋ชฉ๋ก์œผ๋กœ ํ’€์—ˆ๋‹ค

๊ฐ™์€ ์ปค๋ฐ‹์—์„œ ๋‚ ์งœ๋ณ„ ๊ธ€ ๋ชฉ๋ก๋„ ๋ถ™์˜€๋‹ค.

ํ•˜๋ฃจ์— ๊ธ€์ด ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋‚ ์งœ๋ฅผ ๊ทธ ๊ธ€ ๋งํฌ๋กœ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜๋ฃจ์— ๊ธ€์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์žฌ๊ฐœ ์ฒซ๋‚ ๋งŒ ๋ด๋„ Daily Review์™€ AI ๋Œ€ํ™” ์•„์นด์ด๋ธŒ๊ฐ€ ๊ฐ™์€ ๋‚ ์งœ์— ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ธ€์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๋‚ ์งœ๋Š” ๋‚ ์งœ ๋งํฌ๊ฐ€ ๋ฐ”๋กœ ๊ธ€๋กœ ๊ฐ€์ง€ ์•Š๊ณ , ๊ทธ ๋‚ ์งœ์˜ ๊ธ€ ๋ชฉ๋ก์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ํ–ˆ๋‹ค.

<section id="sidebar-calendar-2026-05-25-posts" class="sidebar-calendar__post-list">
  <h4 class="sidebar-calendar__post-list-title">5์›” 25์ผ ๊ธ€</h4>
  <ul>
    ...
  </ul>
</section>

์ด ์‹œ์ ์˜ ๊ทœ์น™์€ ๋‹จ์ˆœํ–ˆ๋‹ค.

๊ธ€ 1๊ฐœ: ํ•ด๋‹น ๊ธ€๋กœ ์ด๋™
๊ธ€ 2๊ฐœ ์ด์ƒ: ๊ทธ ๋‚ ์งœ์˜ ๊ธ€ ๋ชฉ๋ก์œผ๋กœ ์ด๋™

์™„๋ฒฝํ•œ ๊ทœ์น™์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š”, ์ง€๊ธˆ ๋‹น์žฅ ๊ฐ™์€ ๋‚ ์งœ ๋‹ค์ค‘ ๊ธ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ค‘์š”ํ•œ ๊ฑด ๋ฌธ์ œ๋ฅผ ์ˆจ๊ธฐ์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์ด๋‹ค.

๋‚ ์งœ ํ•˜๋‚˜์— ๊ธ€์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์‹œ์Šคํ…œ์ด ์ธ์ •ํ•ด์•ผ ํ•œ๋‹ค. Daily Review, AI ๋Œ€ํ™”, ๊ฐœ๋ฐœ ๊ธฐ๋ก์ด ๊ฐ™์€ ๋‚  ๋‚˜์˜ค๋Š” ๋ธ”๋กœ๊ทธ๋ผ๋ฉด ์ด ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

JavaScript enhancement๋„ ๋ถ™์˜€๋‹ค

Liquid ๋‹ฌ๋ ฅ๋งŒ์œผ๋กœ๋Š” ํ˜„์žฌ ์›” ์ค‘์‹ฌ ํƒ์ƒ‰์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์›”์„ ๋„˜๋‚˜๋“œ๋Š” ํƒ์ƒ‰์€ ๋ถˆํŽธํ•˜๋‹ค.

๊ทธ๋ž˜์„œ b06b6d6์—์„œ JavaScript๋ฅผ ๋ถ™์˜€๋‹ค.

b06b6d6  [Feat] | Sidebar calendar: Add archive navigation

์ƒˆ ํŒŒ์ผ์€ ์ด๊ฒƒ์ด๋‹ค.

assets/js/custom/sidebar-calendar.js

๊ทธ๋ฆฌ๊ณ  _config.yml์˜ after_footer_scripts์— ๋“ฑ๋กํ–ˆ๋‹ค.

after_footer_scripts:
  - /assets/js/custom/dark-theme.js
  - /assets/js/custom/sidebar-calendar.js

Liquid ์ชฝ์—์„œ๋Š” ํฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ JSON์œผ๋กœ ๋‚ด๋ ค์คฌ๋‹ค.

<script type="application/json" data-calendar-posts>
[
  {
    "title": "...",
    "url": "...",
    "date": "2026-05-25"
  }
]
</script>

JavaScript๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ postsByDate, postCountByMonth, postCountByYear, latestPostMonthByYear๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ทธ ๋‹ค์Œ ์ด์ „/๋‹ค์Œ ์›” ๋ฒ„ํŠผ, month input, ์—ฐ๋„/์›”๋ณ„ ๊ธ€ ์ˆ˜ ๋ฒ„ํŠผ, ๋‚ ์งœ๋ณ„ ๋™์  ๊ธ€ ๋ชฉ๋ก์„ ๋ Œ๋”๋งํ•œ๋‹ค.

์ด ๊ตฌ์กฐ๊ฐ€ ๊ดœ์ฐฎ์•˜๋˜ ์ด์œ ๋Š” fallback์„ ๋ฒ„๋ฆฌ์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์ด๋‹ค.

JavaScript๊ฐ€ ์žˆ์œผ๋ฉด ์›” ์ด๋™๊ณผ ์•„์นด์ด๋ธŒ ํƒ์ƒ‰์ด ํŽธํ•ด์ง„๋‹ค. JavaScript๊ฐ€ ์—†์–ด๋„ Liquid๊ฐ€ ํ˜„์žฌ ๊ธ€ ๊ธฐ์ค€ ์›”๊ณผ ๋‹ค์ค‘ ๊ธ€ fallback ๋ชฉ๋ก์„ ์ด๋ฏธ ๋ Œ๋”๋งํ•œ๋‹ค.

์ •์  ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ์ด ๊ท ํ˜•์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

Liquid fallback๊ณผ JS ์›” ์ด๋™์„ ๊ฐ™์ด ๋ถ™์˜€๋‹ค

์˜ค๋Š˜ ๋ฐค๋ถ€ํ„ฐ ์ƒˆ๋ฒฝ๊นŒ์ง€ ์ด์–ด์ง„ ํ๋ฆ„์€ ์ด๋ ‡๋‹ค.

f6971fc  ์‚ฌ์ด๋“œ๋ฐ” ๋‹ฌ๋ ฅ๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ ํ™œ๋™ ํ†ต๊ณ„ ์ถ”๊ฐ€
17d074d  ์‚ฌ์ด๋“œ๋ฐ” ํ™œ๋™ ๋ผ๋ฒจ ๋ฐ€๋„ ์กฐ์ •
b401d8b  ๋ชจ๋ฐ”์ผ ๋‹ฌ๋ ฅ ๋ฐ€๋„ ์กฐ์ •
ccb58d5  ํ˜„์žฌ ๊ธ€ ๊ธฐ์ค€ ์›”๊ณผ ๋‹ค์ค‘ ๊ธ€ ๋‚ ์งœ ๋ชฉ๋ก ์ฒ˜๋ฆฌ
b06b6d6  ์›”๋ณ„ ์•„์นด์ด๋ธŒ ํƒ์ƒ‰์šฉ JavaScript enhancement ์ถ”๊ฐ€

ํ•ต์‹ฌ ํŒŒ์ผ์€ ์ด๋ ‡๋‹ค.

_includes/sidebar.html
_includes/sidebar-calendar.html
_includes/sidebar-nav-stats.html
assets/js/custom/sidebar-calendar.js
_sass/custom/customOverride.scss
_config.yml

ํ•œ ์ค„๋กœ ์š”์•ฝํ•˜๋ฉด ์ด๋ ‡๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์‚ฌ์ด๋“œ๋ฐ”์— ๋‚ ์งœ์™€ ์นดํ…Œ๊ณ ๋ฆฌ ํ™œ๋™ ํ๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ํƒ์ƒ‰ ๋ ˆ์ด์–ด๋ฅผ ๋ถ™์˜€๋‹ค.

์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ๋‚ ์งœ์™€ ์นดํ…Œ๊ณ ๋ฆฌ ํƒ์ƒ‰ ๋ ˆ์ด์–ด๋กœ ๋ฐ”๊ฟจ๋‹ค

์ด์ œ ๋ธ”๋กœ๊ทธ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋‹จ์ˆœํ•œ ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก์ด ์•„๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ธ€์ด ์†ํ•œ ๋‹ฌ์„ ๋ณด์—ฌ์ฃผ๊ณ , ๊ธ€์ด ์žˆ๋Š” ๋‚ ์งœ๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ๊ฐ™์€ ๋‚  ์—ฌ๋Ÿฌ ๊ธ€์ด ์žˆ์œผ๋ฉด ๋ชฉ๋ก์œผ๋กœ ํ’€์–ด์ค€๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ ํ•ญ๋ชฉ์—๋Š” ๊ธ€ ์ˆ˜์™€ ์ตœ๊ทผ ๊ธ€ ๋‚ ์งœ๊ฐ€ ๋ถ™๋Š”๋‹ค. JavaScript๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด ์—ฐ๋„์™€ ์›”์„ ์˜ค๊ฐ€๋ฉฐ ๋ธ”๋กœ๊ทธ ์•„์นด์ด๋ธŒ๋ฅผ ํ›‘์„ ์ˆ˜ ์žˆ๋‹ค.

๋ณ„๋„ DB๋„ ์—†๊ณ , API๋„ ์—†๋‹ค. Jekyll์˜ site.posts, Liquid, SCSS, ์ž‘์€ JavaScript๋งŒ์œผ๋กœ ์ •์  ๋ธ”๋กœ๊ทธ์— ๋‚ ์งœ ํƒ์ƒ‰์„ ๋ถ™์˜€๋‹ค.

์ด์ œ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ๋ชฉ๋ก๋งŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ณณ์ด ์•„๋‹ˆ๋ผ, ์ง€๊ธˆ ์ฝ๋Š” ๊ธ€ ์ฃผ๋ณ€์˜ ๋‚ ์งœ ํ๋ฆ„๊นŒ์ง€ ๋ณด์—ฌ์ค€๋‹ค.

๋Œ“๊ธ€ ๋‚จ๊ธฐ๊ธฐ