-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
29 lines (29 loc) · 49.3 KB
/
index.html
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
<!doctype html><html lang=ko dir=auto><head><meta name=generator content="Hugo 0.102.2"><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=robots content="index, follow"><title>code(evening);</title><meta name=keywords content="Blog,Portfolio,PaperMod"><meta name=description content="오픈소스 소프트웨어(OSS), 특히, 크로미움(Chromium), 보안(Security), 컨테이너(Container)와 관련된 기술적인 내용을 정리하는 개인 블로그"><meta name=author content="baek9"><link rel=canonical href=https://baek9.github.io/><meta name=google-site-verification content="jxplsfLcADRts9fVC-PBsYD4NFNGHEMo08_Lj3HzSts"><meta name=yandex-verification content="XYZabc"><meta name=msvalidate.01 content="XYZabc"><meta name=naver-site-verification content="c9a40b0743826612014b2dad1b95052b751cd862"><link crossorigin=anonymous href=/assets/css/stylesheet.423969d3896a518f34bc7650ab07ea73ead91fefc97a8158b21777704d12c445.css integrity="sha256-Qjlp04lqUY80vHZQqwfqc+rZH+/JeoFYshd3cE0SxEU=" rel="preload stylesheet" as=style><link rel=icon href=https://baek9.github.io/logo_squared.png><link rel=icon type=image/png sizes=16x16 href=https://baek9.github.io/logo_squared.png><link rel=icon type=image/png sizes=32x32 href=https://baek9.github.io/logo_squared.png><link rel=apple-touch-icon href=https://baek9.github.io/logo_squared.png><link rel=mask-icon href=https://baek9.github.io/logo_squared.png><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate type=application/rss+xml href=https://baek9.github.io/index.xml><link rel=alternate hreflang=ko href=https://baek9.github.io/><link rel=alternate hreflang=en href=https://baek9.github.io/en/><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--hljs-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51)}.list{background:var(--theme)}.list:not(.dark)::-webkit-scrollbar-track{background:0 0}.list:not(.dark)::-webkit-scrollbar-thumb{border-color:var(--theme)}}</style></noscript><link href=//cdn.jsdelivr.net/gh/wan2land/d2coding/d2coding-full.css rel=stylesheet><link href=//spoqa.github.io/spoqa-han-sans/css/SpoqaHanSansNeo.css rel=stylesheet type=text/css><link href=https://hangeul.pstatic.net/hangeul_static/css/nanum-square.css rel=stylesheet><link href="https://fonts.googleapis.com/css?family=Lobster|Raleway" rel=stylesheet><script type=application/javascript>var doNotTrack=!1;doNotTrack||(function(e,t,n,s,o,i,a){e.GoogleAnalyticsObject=o,e[o]=e[o]||function(){(e[o].q=e[o].q||[]).push(arguments)},e[o].l=1*new Date,i=t.createElement(n),a=t.getElementsByTagName(n)[0],i.async=1,i.src=s,a.parentNode.insertBefore(i,a)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga"),ga("create","UA-108486276-1","auto"),ga("send","pageview"))</script><meta property="og:title" content="code(evening);"><meta property="og:description" content="오픈소스 소프트웨어(OSS), 특히, 크로미움(Chromium), 보안(Security), 컨테이너(Container)와 관련된 기술적인 내용을 정리하는 개인 블로그"><meta property="og:type" content="website"><meta property="og:url" content="https://baek9.github.io/"><meta property="og:image" content="https://baek9.github.io/logo_extended.png"><meta property="og:site_name" content="code(evening); - 늦은 밤 개발 일기"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://baek9.github.io/logo_extended.png"><meta name=twitter:title content="code(evening);"><meta name=twitter:description content="오픈소스 소프트웨어(OSS), 특히, 크로미움(Chromium), 보안(Security), 컨테이너(Container)와 관련된 기술적인 내용을 정리하는 개인 블로그"><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","name":"code(evening);","url":"https://baek9.github.io/","description":"오픈소스 소프트웨어(OSS), 특히, 크로미움(Chromium), 보안(Security), 컨테이너(Container)와 관련된 기술적인 내용을 정리하는 개인 블로그","thumbnailUrl":"https://baek9.github.io/logo_squared.png","sameAs":["https://linkedin.com/in/thnam","https://twitter.com/thnam_","https://github.com/baek9","https://baek9.github.io/index.xml"]}</script></head><body class=list id=top><style>.logo a svg{transform:unset}</style><style>.hamburger1{display:none}.main{padding-top:0}.page-header{margin-top:0}.page-header h1{font-size:24px}@media(max-width:786px){.hamburger1{position:absolute;height:30px;margin:10px;right:10px;display:-ms-grid;display:grid;grid-template-rows:repeat(3,1fr);justify-items:center;z-index:10;cursor:pointer}#toggle1~.menu1{height:0}}.hamburger1 div{background-color:currentColor;position:relative;width:35px;height:7px;margin-top:7px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.hamburger1 .top{margin-top:0}#toggle1{display:none}#toggle1:checked+.hamburger1 .top{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);margin-top:12px}#toggle1:checked+.hamburger1 .meat{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-top:-6px}#toggle1:checked+.hamburger1 .bottom{-webkit-transform:scale(0);transform:scale(0)}#toggle1:checked~.menu1{height:80px}.menu1{width:100%;height:80px;list-style:none;clear:both;width:auto;text-align:center;overflow:hidden;transition:height .4s ease;z-index:120;-webkit-transition:all .3s ease;transition:all .3s ease}</style><style>.button-62{background:linear-gradient(to bottom right,#EF4765,#FF9A5A);border:0;border-radius:12px;cursor:pointer;display:inherit;font-family:-apple-system,system-ui,segoe ui,Roboto,Helvetica,Arial,sans-serif;font-size:16px;font-weight:500;line-height:2.5;outline:transparent;padding:0 1rem;text-align:center;text-decoration:none;transition:box-shadow .2s ease-in-out;user-select:none;-webkit-user-select:none;touch-action:manipulation;white-space:nowrap}.button-62:not([disabled]):focus{box-shadow:0 0 .25rem rgba(0,0,0,.5),-.125rem -.125rem 1rem rgba(239,71,101,.5),.125rem .125rem 1rem rgba(255,154,90,.5)}.button-62:not([disabled]):hover{box-shadow:0 0 .25rem rgba(0,0,0,.5),-.125rem -.125rem 1rem rgba(239,71,101,.5),.125rem .125rem 1rem rgba(255,154,90,.5)}</style><script>localStorage.getItem("pref-theme")==="dark"?document.body.classList.add("dark"):localStorage.getItem("pref-theme")==="light"?document.body.classList.remove("dark"):window.matchMedia("(prefers-color-scheme: dark)").matches&&document.body.classList.add("dark")</script><header class=header><nav class=nav><div class="social-icons logo"><a href=https://baek9.github.io/ accesskey=h title="늦은 밤 개발 일기 (Alt + H)"><img src=https://baek9.github.io/logo.png style="border:1px solid;border-radius:5px;padding:6px;background:#fff" alt=logo aria-label=logo height=45>늦은 밤 개발 일기</a></div><input id=toggle1 type=checkbox>
<label class="social-icons logo hamburger1" for=toggle1><div class=top></div><div class=meat></div><div class=bottom></div></label><div class="logo menu1" style=margin-left:0><div class="social-icons logo-switches" style=padding:0;margin:0><ul id=menu><li><div style=vertical-align:center;line-height:16px><a href=https://linkedin.com/in/thnam target=_blank rel="noopener noreferrer me" title=Linkedin><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6z"/><rect x="2" y="9" width="4" height="12"/><circle cx="4" cy="4" r="2"/></svg></a></div></li><li><div style=vertical-align:center;line-height:16px><a href=https://twitter.com/thnam_ target=_blank rel="noopener noreferrer me" title=Twitter><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 3a10.9 10.9.0 01-3.14 1.53 4.48 4.48.0 00-7.86 3v1A10.66 10.66.0 013 4s-4 9 5 13a11.64 11.64.0 01-7 2c9 5 20 0 20-11.5a4.5 4.5.0 00-.08-.83A7.72 7.72.0 0023 3z"/></svg></a></div></li><li><div style=vertical-align:center;line-height:16px><a href=https://github.com/baek9 target=_blank rel="noopener noreferrer me" title=Github><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37.0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44.0 0020 4.77 5.07 5.07.0 0019.91 1S18.73.65 16 2.48a13.38 13.38.0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07.0 005 4.77 5.44 5.44.0 003.5 8.55c0 5.42 3.3 6.61 6.44 7A3.37 3.37.0 009 18.13V22"/></svg></a></div></li><li><div style=vertical-align:center;line-height:16px><a href=https://baek9.github.io/index.xml target=_blank rel="noopener noreferrer me" title=Rss><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentcolor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1"/></svg></a></div></li></ul></div><ul id=menu><li><a href=https://baek9.github.io/categories/ title=Categories><span>Categories</span></a></li><li><a href=https://baek9.github.io/tags/ title=Tags><span>Tags</span></a></li><li><a href=https://baek9.github.io/about_me/ title="About Me"><span>About Me</span></a></li></ul></div></nav></header><main class=main><style>.bg-series{background-image:url("data:image/svg+xml,%3Csvg class='svgCorner svgCornerBL' version='1.1' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='303.92px' height='303.92px' viewBox='0 0 303.92 303.92' style='enable-background:new 0 0 303.92 303.92;' xml:space='preserve'%3E%3Cg style='stroke: rgba(178,178,179,50); stroke-width: 5; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgba(178,178,179, 50);; fill-rule: nonzero; opacity: 0.9;' %3E%3Cpath d='M4.922,105.704l143.857,61.572c1.015,0.443,2.099,0.654,3.185,0.654s2.165-0.222,3.185-0.654l143.854-61.572 c3.037-1.303,4.983-4.311,4.914-7.615c-0.068-3.306-2.136-6.233-5.221-7.403L154.838,35.973c-1.859-0.709-3.905-0.709-5.759,0 L5.226,90.685c-3.085,1.17-5.152,4.103-5.224,7.403C-0.066,101.387,1.882,104.406,4.922,105.704z M151.959,52.209l122.233,46.488 l-122.233,52.32L29.724,98.698L151.959,52.209z' /%3E%3Cpath d='M4.922,140.743l147.037,62.936l147.034-62.936c4.118-1.761,6.022-6.523,4.261-10.634 c-1.756-4.103-6.502-6.03-10.631-4.261L151.959,186.06L11.29,125.848c-4.116-1.764-8.873,0.153-10.634,4.261 C-1.105,134.225,0.807,138.982,4.922,140.743z' /%3E%3Cpath d='M4.922,173.14l147.037,62.938l147.034-62.938c4.118-1.761,6.022-6.518,4.261-10.631 c-1.756-4.103-6.502-6.033-10.631-4.261L151.959,218.46L11.29,158.249c-4.116-1.762-8.873,0.152-10.634,4.261 C-1.105,166.623,0.807,171.379,4.922,173.14z' /%3E%3Cpath d='M4.922,205.541l147.037,62.938l147.034-62.938c4.118-1.762,6.022-6.519,4.261-10.632 c-1.756-4.103-6.502-6.021-10.631-4.261L151.959,250.86L11.29,190.648c-4.116-1.761-8.873,0.153-10.634,4.261 C-1.105,199.022,0.807,203.779,4.922,205.541z' /%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:100%;background-size:40%}.bg-adsense{background:0 0;border:none}.highlight{margin-bottom:5.5em;font-family:poppins,sans-serif;font-weight:700}.highlight a{text-decoration:none}.highlight a{background:linear-gradient(to right,#64ffff,#64ffff),linear-gradient(to right,red,#4378ff,#64ffff);background-size:100% 3px,0 3px;background-position:100% 100%,0 100%;background-repeat:no-repeat;transition:background-size 400ms}.highlight a:hover{background-size:0 3px,100% 3px}</style><article class=post-entry style=transform:scale(1);background-clip:border-box><header class=entry-header><h2>SERIES</h2><div class=entry-content style=-webkit-line-clamp:unset><ul class=list-group><li><span class=highlight><svg fill="#fff" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26" width="15" height="15" style="vertical-align:middle"><g style="stroke:var(--content)"><path d="M3 2C1.34375 2 0 3.34375.0 5V22c0 1.65625 1.34375 3 3 3H23c1.65625.0 3-1.34375 3-3V8c0-1.65625-1.34375-3-3-3H11c0-1.65625-1.34375-3-3-3zM3 7H23C23.550781 7 24 7.449219 24 8V22C24 22.550781 23.550781 23 23 23H3C2.449219 23 2 22.550781 2 22V8c0-.550781.449219-1 1-1z"/></g></svg> <a href=https://baek9.github.io/series/containerd-%EC%8B%AC%EC%B8%B5-%EB%B6%84%EC%84%9D/>Containerd 심층 분석 ... (2
POSTS)</a></span></li><li><span class=highlight><svg fill="#fff" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 26 26" width="15" height="15" style="vertical-align:middle"><g style="stroke:var(--content)"><path d="M3 2C1.34375 2 0 3.34375.0 5V22c0 1.65625 1.34375 3 3 3H23c1.65625.0 3-1.34375 3-3V8c0-1.65625-1.34375-3-3-3H11c0-1.65625-1.34375-3-3-3zM3 7H23C23.550781 7 24 7.449219 24 8V22C24 22.550781 23.550781 23 23 23H3C2.449219 23 2 22.550781 2 22V8c0-.550781.449219-1 1-1z"/></g></svg> <a href=https://baek9.github.io/series/hugo%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A2%8C%EC%B6%A9%EC%9A%B0%EB%8F%8C-%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%A0%9C%EC%9E%91%EA%B8%B0/>Hugo를 이용한 좌충우돌 블로그 제작기 ... (6
POSTS)</a></span></li></ul></div></header></article><div class=post-entry style=padding:0;background:unset;border:unset><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8701780565311862"></script>
<ins class=adsbygoogle style=display:block;text-align:center data-ad-layout=in-article data-ad-format=fluid data-ad-client=ca-pub-8701780565311862 data-ad-slot=3363952713></ins>
<script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></div><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured_hu30910665284931ace4f57faa1e01d828_218895_360x0_resize_q75_box.jpg 360w ,https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured_hu30910665284931ace4f57faa1e01d828_218895_480x0_resize_q75_box.jpg 480w ,https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured_hu30910665284931ace4f57faa1e01d828_218895_720x0_resize_q75_box.jpg 720w ,https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured_hu30910665284931ace4f57faa1e01d828_218895_1080x0_resize_q75_box.jpg 1080w ,https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured.jpg 1280w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/featured.jpg alt="Build a Contents Management System (CMS) for a Hugo-based Blog using GitHub Actions" width=1280 height=720></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>GitHub Actions를 이용해 Hugo 기반 블로그를 위한 CMS(Contents Management System) 구축</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>아래 글을 읽은 후에 본 글을 읽기를 추천합니다.
깃허브(GitHub) + 휴고(Hugo), 블로그 효과적으로 관리하기 이전 글에서도 말했지만, 기존의 블로그를 블로거(Blogger)로 이전하려고 했던 두 번째 이유가 번거로운 글쓰기였다. 지킬(Jekyll)의 경우에 블로그를 빌드하기 위해서는 루비(Ruby)와 지킬이 설치된 윈도(Windows)나 리눅스(Linux), 맥(Mac)이 필요하다. 상상해보자. 아름답고 한적한 카페에서 커피를 홀짝이는 나의 모습을. 블로그에 글을 쓰려고 노트북을 꺼냈지만, 루비와 지킬이 깔려있지 않아 당황하는 모습을. 설상가상으로 인터넷이 되지 않아 갖고 있던 핸드폰을 꺼내 테더링(Tethering) 하는 모습을.
휴고(Hugo)도 마찬가지다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-08-22 22:00:00 +0000 UTC'>8월 22, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to GitHub Actions를 이용해 Hugo 기반 블로그를 위한 CMS(Contents Management System) 구축" href=https://baek9.github.io/2022/08/github-actions%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4-hugo-%EA%B8%B0%EB%B0%98-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A5%BC-%EC%9C%84%ED%95%9C-cmscontents-management-system-%EA%B5%AC%EC%B6%95/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/featured_hue93e3ba3e183fbd7999fbbc53104c5f0_288740_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/featured_hue93e3ba3e183fbd7999fbbc53104c5f0_288740_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/featured_hue93e3ba3e183fbd7999fbbc53104c5f0_288740_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/featured.gif 1000w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/featured.gif alt="GitHub + Hugo, Managing Your Blog Effectively" width=1000 height=562></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>깃허브(GitHub) + 휴고(Hugo), 블로그 효과적으로 관리하기</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>전편에서는 휴고를 이용하여 블로그를 생성하고 테마를 적용하는 방법을 알아보았다. 이번 편에서는 깃허브를 사용하고 있다는 가정 하에 서브모듈(Submodule)이라는 기능으로 어떻게 소스코드를 효율적으로 관리할 지에 대해서 고민한 결과를 정리해보았다.
휴고로 빌드한 소스코드 구조 ¶ 앞서 휴고로 블로그를 빌드했다면 아래와 같은 디렉토리 구성이 만들어졌을 것이다. 다 설명하기 보다는 몇 가지 필요한 폴더만 보자.
. ├── archetypes ├── config.yml ├── content ├── data ├── layouts ├── public ├── resources ├── static └── themes 8 directories, 1 file themes 폴더 ¶ themes 폴더는 블로그에 적용하고 싶은 테마가 위치하는 곳이다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-07-03 22:00:00 +0000 UTC'>7월 3, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 깃허브(GitHub) + 휴고(Hugo), 블로그 효과적으로 관리하기" href=https://baek9.github.io/2022/07/%EA%B9%83%ED%97%88%EB%B8%8Cgithub--%ED%9C%B4%EA%B3%A0hugo-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><div style=padding-top:var(--gap)><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>휴고(Hugo)로 만든 블로그에 이쁜 테마 적용하기</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>보통은 지킬이나 휴고를 이용한 블로그 구축 방법을 보면, config.yml 또는 config.toml 부터 설명할 것이다. 심지어 지킬은 공식 홈페이지에서 루비 사용법부터 언급하고 있으니 배보다 배꼽이 더 큰 상황이랄까. config.toml은 블로그에 관련된 각종 설정들을 담는 중요하고 필수적인 파일이지만 필자는 config.yml에 대해 설명하는 문서의 단 한 줄도 보지 않았다. 블로그를 구축하면서 필요할 때마다 건드려도 충분하고, 오히려 블로그가 개선되어지는 모습에 재미를 느끼게 될 것이다. 그래서, 바로 테마를 적용해 보도록 할 것이다.
테마 선택 ¶ 아래 페이지는 휴고 측에서 걸어놓은 테마들을 전시하고 있다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-07-02 22:00:00 +0000 UTC'>7월 2, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 휴고(Hugo)로 만든 블로그에 이쁜 테마 적용하기" href=https://baek9.github.io/2022/07/%ED%9C%B4%EA%B3%A0hugo%EB%A1%9C-%EB%A7%8C%EB%93%A0-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90-%EC%9D%B4%EC%81%9C-%ED%85%8C%EB%A7%88-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured_hu185d327f4c64ea4b5cb4a64bca5411a2_734222_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured_hu185d327f4c64ea4b5cb4a64bca5411a2_734222_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured_hu185d327f4c64ea4b5cb4a64bca5411a2_734222_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured_hu185d327f4c64ea4b5cb4a64bca5411a2_734222_1080x0_resize_box.gif 1080w ,https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured.gif 1280w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../featured.gif alt="Back to the Static Site Generator" width=1280 height=720></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>다시 정적 사이트 생성기(SSG: Static Site Generator)로...</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>이전 블로그로의 회귀 ¶ 1편에서 필자는 지킬(Jekyll)이라는 유명한 도구와 깃허브 페이지(GitHub Pages)로 호스팅되는 기존 블로그를 오랫동안 방치운영하고 있었지만, 여러가지 이유로 구글의 블로거(Blogger)로 이동했다고 말했다. 그런데 기존 블로그를 계속 사용하기로 결정하였다. 여기에는 여러가지 이유가 작용했다.
애드센스(Google Adsense)의 미승인 ¶ 구글이 제공하는 애드센스는 웹 사이트의 화면 상 일정 공간에 광고를 허락하고 그에 대한 보상을 받을 수 있는 서비스다. 구글이 지금과 같이 글로벌 기업으로 자리잡은 데에는 바로 이런 광고 모델 덕분이라고 할 수 있다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-06-20 22:00:00 +0000 UTC'>6월 20, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 다시 정적 사이트 생성기(SSG: Static Site Generator)로..." href=https://baek9.github.io/2022/06/%EB%8B%A4%EC%8B%9C-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator%EB%A1%9C.../></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/featured_hubbf4ad17d585cecb2a4bfbe96fea2a88_396736_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/featured_hubbf4ad17d585cecb2a4bfbe96fea2a88_396736_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/featured_hubbf4ad17d585cecb2a4bfbe96fea2a88_396736_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/featured.gif 1000w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/featured.gif alt="The Fastest Static Site Generator, What is Hugo?" width=1000 height=562></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>빠른 정적 사이트 생성기(SSG: Static Site Generator), 휴고(Hugo)란?</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>기존에 사용했던 지킬(Jekyll)은 다소 생소한 언어인 루비(Ruby)로 구현되어 있어 개인적으로 설치와 커스터마이징, 유지보수에 어려움이 있었다. 그렇다보니 글쓰기에만 집중할 수 블로그 플랫폼을 찾아보기 시작했고, 여러 좋은 서비스들이 많이 있었지만 전통?의 블로거(Blogger)를 선택하였다. 실제로 블로거를 이용하여 새 블로그를 만들었으나 직후에 포기하고 다시 정적 사이트 생성기(SSG: Static Site Generator)를 이용하여 기존 블로그를 살려보기로 결정하였다.
2편의 말미에 언급했듯이 다시 지킬을 쓰고 싶지 않았다. 지금은 당시에 비해 대안이 많기 때문에 하나하나 둘러보기 시작했고 결국, 휴고(Hugo)에 마음이 갔다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-06-20 22:00:00 +0000 UTC'>6월 20, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 빠른 정적 사이트 생성기(SSG: Static Site Generator), 휴고(Hugo)란?" href=https://baek9.github.io/2022/06/%EB%B9%A0%EB%A5%B8-%EC%A0%95%EC%A0%81-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EC%83%9D%EC%84%B1%EA%B8%B0ssg-static-site-generator-%ED%9C%B4%EA%B3%A0hugo%EB%9E%80/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured_hu7d707f30f122da84f9afceae0592769d_253305_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured_hu7d707f30f122da84f9afceae0592769d_253305_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured_hu7d707f30f122da84f9afceae0592769d_253305_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured_hu7d707f30f122da84f9afceae0592769d_253305_1080x0_resize_box.gif 1080w ,https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured.gif 1280w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/featured.gif alt="Containerd communication process using gRPC" width=1280 height=720></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>gRPC를 이용한 Containerd의 통신 과정</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>Containerd를 이용해 컨테이너 생성하기 ¶ 아래 코드는 Containerd를 이용하여 컨테이너를 생성하는 예이다. 우선 UNIX 도메인 소켓인 containerd.sock을 이용하여 Containerd에 연결한다. Containerd는 백그라운드(background)에서 항상 동작하는 데몬(daemon) 프로세스이다. 그 후, Client 객체를 통하여 Containerd로 하여금 최신 데비안(Debian) 리눅스 이미지를 받아 데비안 컨테이너를 생성한다생성하도록 한다. 매우 직관적이고 간단하지 않은가? 여기서 알 수 있는 것은 Client 객체를 통하여 해당 프로세스와 통신한다는 점이다. 이 짧은 코드에서는 확인할 수 없지만 Client와 Containerd 간의 통신 과정을 본 포스트에 정리한다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-06-14 22:00:00 +0000 UTC'>6월 14, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to gRPC를 이용한 Containerd의 통신 과정" href=https://baek9.github.io/2022/06/grpc%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-containerd%EC%9D%98-%ED%86%B5%EC%8B%A0-%EA%B3%BC%EC%A0%95/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/featured_hue54ea8a462d5cd1b69d30d5f129c1b8a_209148_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/featured_hue54ea8a462d5cd1b69d30d5f129c1b8a_209148_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/featured_hue54ea8a462d5cd1b69d30d5f129c1b8a_209148_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/featured.gif 1000w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/featured.gif alt="Relationships between container-related technologies" width=1000 height=562></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>컨테이너(Container) 관련 기술들 간의 관계, 그리고 Containerd</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>“Dockershim deprecated with the release of Kubernetes 1.24” ¶ 위 문장은 더 레지스터(The register)에 실린 기사의 헤드라인이다. 문장을 보고 어떤 생각이 드는가? 나는 컨테이너가 구현하는 기술이 궁금할 뿐이지, 관련 기술로 먹고 사는 것은 아니라서 별 생각은 없었다. 그러나 관련 업계에서는 매우 큰 화두였었구나 하는 것을 최근 알게 되었다. 실제로 쿠버네티스(Kubernetes) 측에서 아래와 같은 글을 기고했을 정도로 말이다.
“Don’t Panic: Kubernetes and Docker”, Kubernetes Blog
쿠버네티스의 창시자인 조 베다(Joe Beda)는 위와 같은 트윗을 했다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-06-13 22:00:00 +0000 UTC'>6월 13, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 컨테이너(Container) 관련 기술들 간의 관계, 그리고 Containerd" href=https://baek9.github.io/2022/06/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88container-%EA%B4%80%EB%A0%A8-%EA%B8%B0%EC%88%A0%EB%93%A4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-containerd/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/featured_hu807e39dbfff4d2980352baac7422a4a5_269789_360x0_resize_box.gif 360w ,https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/featured_hu807e39dbfff4d2980352baac7422a4a5_269789_480x0_resize_box.gif 480w ,https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/featured_hu807e39dbfff4d2980352baac7422a4a5_269789_720x0_resize_box.gif 720w ,https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/featured.gif 1000w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/featured.gif alt="Choosing a Blog Platform That Causes Headaches" width=1000 height=562></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>머리 아픈 블로그 플랫폼 선택기</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>정적 사이트 생성기(SSG: Static Site Generator) ¶ 지킬(Jekyll)이라는 도구가 등장하면서 정적 사이트 생성기(SSG: Static Site Generator)가 각광받던 때가 있었다. 나도 지킬과 깃허브 페이지(GitHub Pages)를 이용하여 오래 전에 블로그를 구축했었다. 정적 사이트 생성기는 데이터베이스를 포함해 웹 페이지를 렌더링(Rendering) 하는 데 필요한 백엔드(Backend) 솔루션들을 구축하지 않아도, 잘 알지 못해도 훌륭한 사이트를 만들어 준다는 장점이 있다. 결과물인 정적 사이트는 오로지 HTML(Hyper-Text Markup Language), CSS(Cascading Style Sheet), JavaScript로만 구현되어 오로지 브라우저만 있으면 동작한다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2022-06-08 22:00:00 +0000 UTC'>6월 8, 2022</span> · baek9</footer><a class=entry-link aria-label="post link to 머리 아픈 블로그 플랫폼 선택기" href=https://baek9.github.io/2022/06/%EB%A8%B8%EB%A6%AC-%EC%95%84%ED%94%88-%EB%B8%94%EB%A1%9C%EA%B7%B8-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EC%84%A0%ED%83%9D%EA%B8%B0/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><figure class=entry-cover><div id=figmask style=z-index:-1><img loading=lazy srcset="https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/featured_hufaa54fe439b79aa9e60c231fee182340_289375_360x0_resize_box.gif 360w ,https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/featured_hufaa54fe439b79aa9e60c231fee182340_289375_480x0_resize_box.gif 480w ,https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/featured_hufaa54fe439b79aa9e60c231fee182340_289375_720x0_resize_box.gif 720w ,https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/featured.gif 1000w" sizes="(min-width: 768px) 720px, 100vw" src=https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/featured.gif alt="Contribute to Chromium" width=1000 height=562></div></figure><div style=margin-top:-2.5em><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>크로미움에 기여하기</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>#Chromium
크로미움에 처음 기여할 때 밟았던 절차와 내가 생각하는 주의 사항들을 기록한다. 크로미움은 큰 오픈소스 커뮤니티이기 때문에 관련 절차를 매우 상세하게 소개하고 있다. 검색해보면 참고해 볼 만한 제 3자의 포스트들도 많다. 나는 주로 아래 세 개의 자료를 참고하였다. 처음 두 개는 크로미움 커뮤니티에서 제공하는 공식 문서이다. 마지막은 제 3자가 작성한 것으로 좀 더 친근하고 쉽게 작성되어 기여 절차를 직관적이고 빠르게 이해하는 데 도움이 되었다.
Contributing to Chromium Commit Checklist for Chromium Workflow Contributing to Chromium: an illustrated guide 1....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2020-01-10 22:00:00 +0000 UTC'>1월 10, 2020</span> · baek9</footer><a class=entry-link aria-label="post link to 크로미움에 기여하기" href=https://baek9.github.io/2020/01/%ED%81%AC%EB%A1%9C%EB%AF%B8%EC%9B%80%EC%97%90-%EA%B8%B0%EC%97%AC%ED%95%98%EA%B8%B0/></a></div></article><article class=post-entry style=padding:unset;z-index:0><style>#figmask{width:100%}#figmask{position:relative}#figmask:after{width:100%;content:'';display:block;position:absolute;top:0;left:0;background:linear-gradient(to top,var(--entry) 0,transparent 5em);height:100%}</style><div style=padding-top:var(--gap)><header class=entry-header style="padding:0 var(--gap)"><h2 style=z-index:100>ChromeOS의 Ash Shell 분석 1</h2></header><div class=entry-content style="padding:0 var(--gap)"><p>#ChromeOS #Ash
Ash(Aura Shell)는 Aura를 기반으로 하는 쉘이다. Shell 클래스가 핵심적인 역할을 하는 것으로 보인다. Shell 객체는 싱글턴 객체이고 init 메소드를 통하여 컨트롤러라 불리우는 다른 객체를 여럿 생성하고 초기화한다. 아래는 배경화면에 관한 컨트롤러를 생성 및 초기화 하는 부분이다.
Ash::Shell::Init() { ... wallpaper_controller_ = std::make_unique<WallpaperControllerImpl>(local_state_); ... } 싱글턴 객체인 Shell 객체를 전역적으로 참조하기 위하여 Shell 클래스는 정적 메소드인 Get 메소드를 제공한다. WallpaperControllerImpl 객체는 Shell 객체에 대하여 자기 자신을 옵저버로 등록한다. 또한, WindowTreeHostManager 객체에 대해서도 자기 자신을 옵저버로 등록한다....</p></div><footer class=entry-footer style="padding:0 var(--gap)var(--gap)"><span title='2019-08-02 22:00:00 +0000 UTC'>8월 2, 2019</span> · baek9</footer><a class=entry-link aria-label="post link to ChromeOS의 Ash Shell 분석 1" href=https://baek9.github.io/2019/08/chromeos%EC%9D%98-ash-shell-%EB%B6%84%EC%84%9D-1/></a></div></article><footer class=page-footer><nav class=pagination><a class=next href=https://baek9.github.io/page/2/>다음 페이지 »</a></nav></footer></main><footer class=footer><div class=post-entry style=padding:0;margin-bottom:0;background:unset;border:unset><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8701780565311862"></script>
<ins class=adsbygoogle style=display:block;text-align:center data-ad-layout=in-article data-ad-format=fluid data-ad-client=ca-pub-8701780565311862 data-ad-slot=3363952713></ins>
<script>(adsbygoogle=window.adsbygoogle||[]).push({})</script></div></footer><link rel=stylesheet href=https://unpkg.com/swiper/swiper-bundle.min.css><style>.swiper{width:100%;height:200%}.swiper-slide{text-align:center;font-size:18px;width:30%;height:200%;display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}@media screen and (max-width:576px){.swiper-slide{width:70%}}.swiper-slide{opacity:.5;pointer-events:none;transition:all .3s}.swiper-slide-active,.swiper-slide-prev,.swiper-slide-next{opacity:1;pointer-events:auto}.swiper-slide img{display:block;width:100%;height:100%;object-fit:cover;margin:auto}.icon{display:inline-block;width:1em;height:1em;stroke-width:0;stroke:currentColor;fill:currentColor}.news-slider__ctr{width:100%;z-index:12;margin:0;position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.news-slider__arrow{background:currentColor;opacity:.5;border:none;display:inline-flex;width:50px;height:50px;justify-content:center;align-items:center;border-radius:50%;position:absolute;top:50%;z-index:12;cursor:pointer;outline:none!important}.news-slider__arrow:focus{outline:none!important}.news-slider__arrow .icon-font{display:inline-flex}.news-slider__arrow.news-slider-prev{left:15px;transform:translateY(-50%)}.news-slider__arrow.news-slider-next{right:15px;transform:translateY(-50%)}.news-slider__pagination{text-align:center;margin-top:50px}.news-slider__pagination .swiper-pagination-bullet{width:13px;height:10px;display:inline-block;background:#fff;opacity:.2;margin:0 5px;border-radius:20px;transition:opacity .5s,background-color .5s,width .5s;transition-delay:.5s,.5s,0s}.news-slider__pagination .swiper-pagination-bullet-active{opacity:1;background:#fff;width:100px;transition-delay:0s}@media screen and (max-width:768px){.news-slider__pagination .swiper-pagination-bullet-active{width:70px}.news-slider__ctr{display:none}}</style><script src=https://unpkg.com/swiper/swiper-bundle.min.js></script>
<script>var swiper=new Swiper(".mySwiper",{effect:"coverflow",loop:!0,centeredSlides:!0,slidesPerView:"auto",coverflowEffect:{rotate:0,stretch:0,depth:0,modifier:3,slideShadows:!1},navigation:{nextEl:".news-slider-next",prevEl:".news-slider-prev"},pagination:{el:".news-slider__pagination",clickable:!0}})</script><footer class=footer style=margin-bottom:0><article class=post-entry style=transform:scale(1)><span>NEIGHBORS</span><div style=line-height:10px;display:flex;flex-wrap:wrap><a style=border-bottom:0;bottom:unset href=https://beintous.net rel="noopener noreferrer" target=_blank title="SEO "><span><img style=margin-inline-start:14px;border-radius:3px src=https://baek9.github.io/beintous.png alt=SEO aria-label=logo height=30></span></a>
<a style=border-bottom:0;bottom:unset href=https://traceback.co.kr rel="noopener noreferrer" target=_blank title="코딩 "><span><img style=margin-inline-start:14px;border-radius:3px src=https://baek9.github.io/traceback.png alt=코딩 aria-label=logo height=30></span></a>
<a style=border-bottom:0;bottom:unset href=https://neppster.com rel="noopener noreferrer" target=_blank title="노하우 "><span><img style=margin-inline-start:14px;border-radius:3px src=https://baek9.github.io/neppster.png alt=노하우 aria-label=logo height=30></span></a>
<a style=border-bottom:0;bottom:unset href=https://hannuricenter.modoo.at rel="noopener noreferrer" target=_blank title="대구 언어치료 "><span><img style=margin-inline-start:14px;border-radius:3px src=https://baek9.github.io/hannuri.jpeg alt="대구 언어치료" aria-label=logo height=30></span></a>
<a style=border-bottom:0;bottom:unset href=https://julesflower.com rel="noopener noreferrer" target=_blank title="거제 꽃집 "><span><img style=margin-inline-start:14px;border-radius:3px src=https://baek9.github.io/jules.jpeg alt="거제 꽃집" aria-label=logo height=30></span></a></div></article></footer><footer class=footer><span>© 2022 <a href=https://baek9.github.io/>code(evening);</a></span>
<span>Powered by
<a href=https://gohugo.io/ rel="noopener noreferrer nofollow" target=_blank>Hugo</a> &
<a href=https://github.com/adityatelange/hugo-PaperMod/ rel="noopener noreferrer nofollow" target=_blank>PaperMod</a></span></footer><style>.sticky_share_btn{position:fixed;right:30px;bottom:30px}.share-toggle,.fixed_share{font-size:20px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:2px solid;border-radius:50%;transition:all .5s ease-in-out;opacity:.5}.fixed_share{margin-bottom:10px}.share-toggle:hover,.fixed_share:hover{transform:scale(1.1)rotate(360deg)}.fixed_share .facebook,.fixed_share .facebook>a{color:#4267b2}</style><link rel=stylesheet href=https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css><div class=sticky_share_btn><div class=lang-switch role=button id=theme-toggle><div id=sun class=fixed_share style=color:#ff0><i class="fa fa-sun"></i></div><div id=moon class=fixed_share style=color:#000><i id=moon class="fa fa-moon"></i></div></div><div class="lang-switch fixed_share"><a href=https://baek9.github.io/en/ title=🇺🇸 aria-label=:us: style=color:var(--theme)>🇺🇸</a></div><div class="lang-switch fixed_share"><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" id=top-link accesskey=g><i class="fa-solid fa-arrow-up"></i></a></div></div><script>document.getElementById("theme-toggle").addEventListener("click",()=>{document.body.className.includes("dark")?(document.body.classList.remove("dark"),localStorage.setItem("pref-theme","light")):(document.body.classList.add("dark"),localStorage.setItem("pref-theme","dark"));const e=new Event("themeChanged");document.dispatchEvent(e)})</script><script>let menu=document.getElementById("menu");menu&&(menu.scrollLeft=localStorage.getItem("menu-scroll-position"),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}),document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script></body></html>