<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Dilluti0n의 블로그</title>
		<link>https://blog.dilluti0n.com/</link>
		<description>Recent content on Dilluti0n의 블로그</description>
		<generator>Hugo</generator>
		<language>ko-kr</language>
		
		
		
			<copyright>[dilluti0n.com](https://dilluti0n.com)</copyright>
		
		
			<lastBuildDate>Wed, 18 Feb 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://blog.dilluti0n.com/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Gentoo OpenRC 전환기: 삽질과 부팅까지</title>
				<link>https://blog.dilluti0n.com/posts/migrate-to-openrc-from-systemd-1/</link>
				<pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/migrate-to-openrc-from-systemd-1/</guid>
				<description>&lt;p&gt;유닉스에서 프로세스는 다른 프로세스가 &lt;a href=&#34;https://www.man7.org/linux/man-pages/man2/fork.2.html&#34;&gt;fork(2)&lt;/a&gt; -&amp;gt; &lt;a href=&#34;https://www.man7.org/linux/man-pages/man3/exec.3.html&#34;&gt;exec(3)&lt;/a&gt; 해줘야&#xA;만들어진다. 그런데 부팅 직후에는 아무 프로세스도 없으니 fork할 주체가&#xA;없다. 그래서 커널이 유일하게 직접 실행해주는 유저 프로세스가&#xA;&lt;a href=&#34;https://linux.die.net/man/8/init&#34;&gt;init(8)&lt;/a&gt;이다. init은 OS에 상주하는 서버 프로그램들(데몬)을 띄우고,&#xA;/etc/inittab을 기반으로 &lt;a href=&#34;https://www.man7.org/linux/man-pages/man8/agetty.8.html&#34;&gt;agetty(8)&lt;/a&gt;를 실행시켜 각 터미널에 &lt;a href=&#34;https://man7.org/linux/man-pages/man1/login.1.html&#34;&gt;login(1)&lt;/a&gt;을&#xA;띄운다. 사용자가 로그인을 완료하면 login이 exec하여 bash 같은 로그인&#xA;셸이 호출되고, 그제서야 시스템을 사용할 수 있게 된다.&lt;/p&gt;&#xA;&lt;p&gt;systemd는 이 init을 대체하면서 서비스 관리뿐 아니라 로깅, 네트워크,&#xA;디바이스 관리 등 시스템 전반을 하나로 묶었다. 다른 배포판에서는&#xA;데스크탑 유저가 거의 만질 일이 없고 선언적(.service 파일들)으로&#xA;데몬들을 관리할 수 있어서 잘 동작한다. 하지만 서비스 스크립트를 직접&#xA;수정해야 할 일이 생기면 — Gentoo에서는 꽤 잦은 일이다 — systemd에&#xA;통달하지 않는 이상 문제가 발생하기 쉽다. 바이너리 로그(journald)도&#xA;journalctl 없이는 읽을 수 없어서 디버깅이 번거롭다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GnuPG 2.5.17 tpm2daemon RSA 4096 버그 발견과 리포팅</title>
				<link>https://blog.dilluti0n.com/posts/gnupg-2-5-17-tpm2daemon-rsa4096-bug/</link>
				<pubDate>Wed, 11 Feb 2026 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/gnupg-2-5-17-tpm2daemon-rsa4096-bug/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://git.zx2c4.com/password-store/about/&#34;&gt;pass(1)&lt;/a&gt;로 패스워드를 관리하다가 어떤 항목은 복호화가 되고 어떤 항목은&#xA;안 되는 현상이 있었다.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-nil&#34; data-lang=&#34;nil&#34;&gt;gpg: public key decryption failed: Provided object is too large&#xA;gpg: decryption failed: Provided object is too large&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;처음엔 파일이 손상된 것 같아서&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git fsck --full --strict&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Checking ref database: 100% &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;1/1&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;, &lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;done&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Checking object directories: 100% &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;256/256&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;, &lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;done&lt;/span&gt;.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;로 blob 해시들을 검사해봤는데 문제가 없어서, &lt;code&gt;gpg --list-packets&lt;/code&gt; 로&#xA;암호화된 파일의 내부 구조를 비교해 봤다.&lt;/p&gt;&#xA;&lt;p&gt;실패하는 파일:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ gpg --list-packets ~/.password-store/hskim/mutt@google.gpg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;:pubkey enc packet: version 3, algo 1, keyid 4898C1982AD755AE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        data: &lt;span style=&#34;color:#666&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#40a070&#34;&gt;4096&lt;/span&gt; bits&lt;span style=&#34;color:#666&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;성공하는 파일:&lt;/p&gt;</description>
			</item>
			<item>
				<title>인간과 동등한 지능을 가진 로봇에 대하여</title>
				<link>https://blog.dilluti0n.com/posts/%EC%9D%B8%EA%B0%84%EA%B3%BC-%EB%8F%99%EB%93%B1%ED%95%9C-%EC%A7%80%EB%8A%A5%EC%9D%84-%EA%B0%80%EC%A7%84-%EB%A1%9C%EB%B4%87%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC/</link>
				<pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/%EC%9D%B8%EA%B0%84%EA%B3%BC-%EB%8F%99%EB%93%B1%ED%95%9C-%EC%A7%80%EB%8A%A5%EC%9D%84-%EA%B0%80%EC%A7%84-%EB%A1%9C%EB%B4%87%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC/</guid>
				<description>&lt;p&gt;해당 주제에 대해 토론할 때, &amp;ldquo;인간의 기준이 뭐냐?&amp;rdquo; 는 질문에&#xA;&amp;ldquo;인간으로부터 태어나면 인간이다.&amp;rdquo; 라고 답했다. 로봇과 분리되는&#xA;인간을 인간이게 하는 요소가 &amp;ldquo;태어난다&amp;rdquo; 라는 주장이 아니라, 단순히 해당&#xA;정의가 인간과 같은 지적 수준을 가진 로봇과 인간을 완벽하게 구분할할 수&#xA;있는 정의이기 때문이다.&lt;/p&gt;&#xA;&lt;p&gt;로봇의 인권 부여에 반대하는 쪽에서 &amp;ldquo;로봇이 인간과 동등한 지능을&#xA;가지더라도 인간과 로봇을 구별하게 하는 고결한 뭔가가 있다.&amp;rdquo;  라는&#xA;주장을 했다는 맥락에서 위 질문이 &amp;ldquo;인간을 인간이게 하는 조건&amp;rdquo; 을&#xA;함의하게 되는 것 같은데, 나는 애초에 그렇게 생각하지 않았다. 이를테면&#xA;치타가 다리를 빠르게 움직여 사냥에 적합하도록 진화한 것처럼, 인간은&#xA;인과를 파악하는 능력을 발전시켜 생존하도록 진화한 종이다. 인간이 그것&#xA;이외의 고결한 뭔가를 지녀 다른 동물과 다르다고 생각하지 않다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>tcl-expect 로 자동화 스크립트 만들기</title>
				<link>https://blog.dilluti0n.com/posts/tcl-expect-%EB%A1%9C-%EC%9E%90%EB%8F%99%ED%99%94-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</link>
				<pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/tcl-expect-%EB%A1%9C-%EC%9E%90%EB%8F%99%ED%99%94-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0/</guid>
				<description>&lt;p&gt;셸 스크립트는 강력한 도구지만 stdin 을 비활성화하고 프롬프트로 입력을&#xA;받는 많은 대화형 cli의 경우엔 자동화하기 취약하다. 가장 많이 겪었을&#xA;만한 상황은 &lt;a href=&#34;https://linux.die.net/man/8/sudo&#34;&gt;sudo(8)&lt;/a&gt; 로 실행해야 하는 프로그램을 자동화하고 싶은&#xA;경우다. 보통 스크립트는 그냥 작성하고 해당 스크립트를 sudo 로 호출하는&#xA;방식을 사용하는데, 이 도구를 사용하면 비밀번호 입력도 자동화 할 수&#xA;있다! 물론 보안상 권장되지는 않지만&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;예를 들어서 &lt;a href=&#34;https://gitlab.com/openconnect/openconnect&#34;&gt;openconnect&lt;/a&gt; 로 vpn 에 접속해야 하는 상황에&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-tcl&#34; data-lang=&#34;tcl&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;#!/usr/bin/expect -f&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#60a0b0;font-style:italic&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;set&lt;/span&gt; timeout &lt;span style=&#34;color:#40a070&#34;&gt;15&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;set&lt;/span&gt; username &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;yourusername&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;set&lt;/span&gt; password &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;yourpassword&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;set&lt;/span&gt; otp &lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#007020&#34;&gt;exec&lt;/span&gt; oathtool &lt;span style=&#34;color:#666&#34;&gt;--&lt;/span&gt;totp &lt;span style=&#34;color:#666&#34;&gt;-&lt;/span&gt;b &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;somebase64secertkey&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;]&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;spawn&lt;/span&gt; sudo openconnect &lt;span style=&#34;color:#666&#34;&gt;--&lt;/span&gt;protocol&lt;span style=&#34;&#34;&gt;=&lt;/span&gt;gp &lt;span style=&#34;color:#666&#34;&gt;--&lt;/span&gt;user&lt;span style=&#34;&#34;&gt;=$&lt;/span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;username&lt;/span&gt;&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;}&lt;/span&gt; vpn.example.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;expect&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;Password: &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;send&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;--&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;${password}\r&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;expect&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;Challenge: &amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;send&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;--&lt;/span&gt; &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;${otp}\r&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;interact&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;로 패스워드 입력 &amp;amp; otp 챌린지까지 한큐에 끝낼 수 있다. vpn 에&#xA;연결할때마다 휴대폰을 들어서 앱을 뒤적거리고 otp 키를 한땀한땀&#xA;입력해야 하는데, oathtool 이 secret key 로부터 otp 키를 만들어 주고&#xA;그걸 openconnect 프롬프트에 입력하는 과정까지 한번에 끝낼 수 있는&#xA;것이다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>누가 전기자동차를 살렸나: 기술은 알아서 도입되지 않는다</title>
				<link>https://blog.dilluti0n.com/posts/%EB%88%84%EA%B0%80-%EC%A0%84%EA%B8%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EB%A5%BC-%EC%82%B4%EB%A0%B8%EB%82%98/</link>
				<pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/%EB%88%84%EA%B0%80-%EC%A0%84%EA%B8%B0%EC%9E%90%EB%8F%99%EC%B0%A8%EB%A5%BC-%EC%82%B4%EB%A0%B8%EB%82%98/</guid>
				<description>&lt;h2 id=&#34;who-killed-the-electric-car--2006--비평&#34;&gt;Who Killed the Electric Car?(2006) 비평&lt;/h2&gt;&#xA;&lt;p&gt;전기자동차를 처음 알게 된 것은 초등학생 때다. 당시 전기자동차는&#xA;경제적이지만 힘이 부족해 경사진 곳을 올라가지 못한다는 말을 들은&#xA;기억이 난다. 2024년 현재야 전기차는 거리에서 흔히 보이는 차종 중&#xA;하나가 되었지만 2010년대 국내에서는 테슬라 모델 S 가 2012년에&#xA;출시1되었음에도 불구하고 ‘하늘을 나는 자동차’ 와 비슷한 미래기술로&#xA;여겨지곤 했다.&lt;/p&gt;&#xA;&lt;p&gt;크리스 페인 감독의 2006년 다큐멘터리 &amp;lt;누가 전기자동차를 죽였나&amp;gt;는&#xA;1990년대에 출시된 전기자동차 EV1의 등장과 비극적인 소멸을 중심으로&#xA;환경을 구할 가능성이 있었던 혁신적인 기술이 어떻게 자본주의적&#xA;이해관계에 의해 억압되고 제거되었는지를 다룬다. EV1은 GM이 제작한&#xA;배기가스 제로 자동차로 소비자들에게 큰 호응을 얻었지만, 석유회사,&#xA;자동차 회사, 연방정부, 소비자 무관심 등 다양한 이유로 리스 차량이&#xA;강제로 회수되어 폐기되었다. 이 다큐멘터리는 EV1의 죽음 뒤에 숨겨진&#xA;주요 용의자들을 추적하며, 자본주의 조직문화와 이기심이 기술 혁신과&#xA;환경 보호에 미치는 부정적 영향을 비판적으로 조명한다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LLM 에 대하여</title>
				<link>https://blog.dilluti0n.com/posts/llm-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC/</link>
				<pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/llm-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC/</guid>
				<description>&lt;p&gt;90년대 초 전산화 열풍이 불 때 의심을 가지며 어차피 이전에도 다 찾을 수&#xA;있는 거 조금 더 빨리 쉽게 찾게 된다고 뭐가 달라지냐 생각하는 사람들이&#xA;있었다. 모든 것이 전산화된 지금에 이르러선 &amp;lsquo;조금 더 빨리&amp;rsquo; 가 모이고&#xA;모여 사회, 문화 영역 전반에 걸쳐 큰 변화와 혁신을 일으켰다는 걸 부정할&#xA;사람은 없다.&lt;/p&gt;&#xA;&lt;p&gt;LLM 은 기본적으로 그런 기술이다. 구글링해서 실제로 찾으려면 10분이&#xA;걸릴 정보를 5초 안에 찾을 수 있게 해준다. 아얘 이해하지 못하거나 혼자&#xA;구글링을 했다면 오랜 시간이 걸렸을 정보도 5초 안에 찾아준다. 아얘&#xA;이해하지 못했을 정보는 대학이나 다른 환경 속에서 속해서 사람들과 직접&#xA;대화를 해야 가능했을 정보다. LLM 은 거기 속하지 않아도 그것이 가능하게&#xA;해준다. 수학 문제를 푼다던지, 코딩을 한다던지 하는건 부차적인&#xA;효과다. 본질은 굉장히 빠른 검색 기술이라는 데에 있다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>cgit 으로 git http 미러 설정하기</title>
				<link>https://blog.dilluti0n.com/posts/cgit-%EC%9C%BC%EB%A1%9C-git-http-%EB%AF%B8%EB%9F%AC-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</link>
				<pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/cgit-%EC%9C%BC%EB%A1%9C-git-http-%EB%AF%B8%EB%9F%AC-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;p&gt;지난번에 apache2 를 통해 /Users/git/Sites 내의 Symlink 를 통해 http&#xA;접속을 구현하는 것을 알아봤는데, 이 기능은 단순히 http 프로토콜을 통해&#xA;클라이언트가 리포지토리를 fetch 할 수 있도록 한다.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;~git&lt;/em&gt; 에 브라우저로 접속한다면 리포지토리의 내용을 볼 수 없기 때문에,&#xA;이를 가능하게 하는 서버인 cgit 을 설치할 것이다.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo port install lua51 py-docutils py-markdown py-pygments zlib&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;으로 빌드 의존성을 설치하고,&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git clone https://git.zx2c4.com/cgit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#007020&#34;&gt;cd&lt;/span&gt; cgit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule init&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;git submodule update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;CGIT_SCRIPT_PATH&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; /usr/local/var/www/html/cgit/cgi&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;CGIT_CONFIG&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; /usr/local/var/www/html/cgit/cgitrc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;CACHE_ROOT&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; /usr/local/var/www/html/cgit/cache&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;prefix&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; /usr/local/var/www/html/cgit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;libdir&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;$(&lt;/span&gt;prefix&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#bb60d5&#34;&gt;filterdir&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;$(&lt;/span&gt;libdir&lt;span style=&#34;color:#007020;font-weight:bold&#34;&gt;)&lt;/span&gt;/filters&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#666&#34;&gt;[&lt;/span&gt;hskimse@beta cgit&lt;span style=&#34;color:#666&#34;&gt;]&lt;/span&gt;$ git add -f cgit.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#666&#34;&gt;[&lt;/span&gt;hskimse@beta cgit&lt;span style=&#34;color:#666&#34;&gt;]&lt;/span&gt;$ git commit -m &lt;span style=&#34;color:#4070a0&#34;&gt;&amp;#34;installation path change&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;컴파일 시&lt;/p&gt;</description>
			</item>
			<item>
				<title>MacPorts 에 apache2 서버 설치하기</title>
				<link>https://blog.dilluti0n.com/posts/macports-%EC%97%90-apache2-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</link>
				<pubDate>Mon, 02 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/macports-%EC%97%90-apache2-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;p&gt;macOS 에는 기본 내장된 apache2 서버가 있지만, 내 버전은 더이상&#xA;유지되지 않으므로 이 서버도 유지되지 않는다. 취약점에 대비하기 위해&#xA;유지보수 되는 MacPorts 버전을 사용하도록 하자.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo port install apache2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;로 설치하고,&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apachectl stop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2&amp;gt;/dev/null&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;명령으로 macOS 의 기본 apache2 서버를 중지시키도록 하자.&lt;/p&gt;&#xA;&lt;p&gt;MacPorts 버전의 apache2 의 설정 루트 디렉토리는 /opt/local/etc/apache2&#xA;이며, 설정 파일은 httpd.conf, original 설정 파일은 httpd.conf.orig 에&#xA;위치하고 있다. 설치 시에 httpd.conf.orig 가 httpd.conf 로 복사되므로&#xA;diff 등을 이용해 유사시에 original 파일과 내 파일을 비교 가능하다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MacPorts 용 apache2 서버 설정하기</title>
				<link>https://blog.dilluti0n.com/posts/macports-%EC%9A%A9-apache2-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</link>
				<pubDate>Mon, 02 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/macports-%EC%9A%A9-apache2-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;h2 id=&#34;user-directories&#34;&gt;User directories&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo cp /opt/local/etc/apache2/extra/httpd-userdir.conf.orig /opt/local/etc/apache2/extra/httpd-userdir.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;명령으로 extra/httpd-userdir.conf 의 원본 파일을 사용하고, 주석 처리되어&#xA;있는 httpd.conf 의 다음 설정들을&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cfg&#34; data-lang=&#34;cfg&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4070a0&#34;&gt;LoadModule userdir_module lib/apache2/modules/mod_userdir.so&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4070a0&#34;&gt;Include etc/apache2/extra/httpd-userdir.conf&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;활성화 시켜 준다.&lt;/p&gt;&#xA;&lt;p&gt;이로서 HTTP 엔드포인트 /~&amp;lt;username&amp;gt; 의 루트 디렉토리는&#xA;/User/&amp;lt;username&amp;gt;/Sites 가 된다. 만일 계정은 존재하는데 해당 계정의 홈&#xA;디렉토리에 Sites 디렉토리가 없다면, 해당 엔드포인트는 403 forbidden 을&#xA;반환하고, 계정이 없다면 404 Not found 를 반환하게 되므로, 계정의&#xA;존재도 숨기고 싶으면 모두 404 를 반환하도록 설정해야 한다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MacPorts 이용하기</title>
				<link>https://blog.dilluti0n.com/posts/macports-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0/</link>
				<pubDate>Mon, 02 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/macports-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;p&gt;macOS 12 에 대한 apple 지원이 끝나서, 더이상 brew 도 이 버전에 대한&#xA;지원을 하지 않는다. 여전히 사용은 가능한 것 처럼 보이지만 뭔가를&#xA;설치해 보려고 하면 clang 부터 컴파일하더라&amp;hellip; 그래서 MacPorts 를&#xA;대안으로 사용하려고 한다.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.macports.org/install.php&#34;&gt;https://www.macports.org/install.php&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;에서 버전에 맞는 MacPorts 패키지 파일을 다운로드 하고,&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo installer -pkg package_name.pkg -target /&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;명령으로 패키지를 설치하자.&lt;/p&gt;&#xA;&lt;p&gt;설치하면 MacPorts 관련 바이너리, 라이브러리, 설정 파일 들은 /opt/local&#xA;을 루트 디렉토리 하여 설치되게 된다.&lt;/p&gt;&#xA;&lt;p&gt;환경 변수 PATH 에&lt;/p&gt;</description>
			</item>
			<item>
				<title>git 리포지토리를 http 로 호스팅하기</title>
				<link>https://blog.dilluti0n.com/posts/git-%EB%A6%AC%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EB%A5%BC-http-%EB%A1%9C-%ED%98%B8%EC%8A%A4%ED%8C%85%ED%95%98%EA%B8%B0/</link>
				<pubDate>Sun, 01 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/git-%EB%A6%AC%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC%EB%A5%BC-http-%EB%A1%9C-%ED%98%B8%EC%8A%A4%ED%8C%85%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;p&gt;ssh 로 git 서버에 연결 가능하도록 설정했지만, ssh 만을 사용하면 익명&#xA;사용자가 리포지토리에 접근할 수 없는 문제가 있다. http 로 접근&#xA;가능하도록 하면 이 문제를 해결할 수 있다.&lt;/p&gt;&#xA;&lt;p&gt;git 은 별도의 http 서버를 제공하지 않으므로, apache 등의 http 서버가&#xA;필요하다. 호스팅하는 법은 http 루트 디렉토리에 원래 git 리포지토리를&#xA;향하는 symlink 를 생성하고, git update-server-info 명령을 실행하는&#xA;것이다. 이 명령은 매 push 이후에 다시 이루어 져야 하므로,&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mv hooks/post-update.sample hooks/post-update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;를 통해 push 이후에 자동으로 실행되는 hooks 에 이를 추가하도록 하자.&lt;/p&gt;</description>
			</item>
			<item>
				<title>macOS 에서 ssh 설정하기</title>
				<link>https://blog.dilluti0n.com/posts/macos-%EC%97%90%EC%84%9C-ssh-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</link>
				<pubDate>Sun, 01 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/macos-%EC%97%90%EC%84%9C-ssh-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0/</guid>
				<description>&lt;p&gt;macOS 는 기본적으로 openssh 를 내장하고 있다. openssh 는 ssh&#xA;클라이언트와 ssh 데몬을 제공한다. 데몬들을 systemd 가 관리하는&#xA;리눅스와는 다르게 macOS 에는 launchctl 이라는 유틸리티가 있다.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo launchctl stop com.openssh.sshd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo launchctl start com.openssh.sshd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;명령어를 통해 ssh 데몬을 재시작할 수 있다. ssh 데몬 사용 설정 (즉&#xA;부팅시에 자동으로 로드할지) 도 cli 로 할 수 있을 것 같은데, 이건 그냥&#xA;System Preferences -&amp;gt; Sharing, enable Remote Login 에서 설정하는 편이&#xA;마음이 편하다.&lt;/p&gt;</description>
			</item>
			<item>
				<title>맥북에서 개인 git 서버 호스팅하기</title>
				<link>https://blog.dilluti0n.com/posts/building-personal-git-server-on-macbook/</link>
				<pubDate>Sun, 01 Dec 2024 00:00:00 +0900</pubDate>
				<guid>https://blog.dilluti0n.com/posts/building-personal-git-server-on-macbook/</guid>
				<description>&lt;p&gt;만든 스크립트를 github 에 올리기 싫어서 집에 있던 안쓰는 late 2016&#xA;macbook pro 를 활용해 git 서버를 셀프 호스팅하기로 했다. 추후 Linux 나&#xA;freeBSD 를 설치할 수 도 있겠지만 일단 macOS 에 지우기 싫은 예전&#xA;파일들이 있어서 그대로 사용하려고 한다.&lt;/p&gt;&#xA;&lt;p&gt;git 서버는 별다른 서버 프로그램이나 프로토콜을 사용하지 않고 (git&#xA;프로토콜이라는 게 있긴 한데, 이 프로토콜을 사용하도록 설정하면 아무나&#xA;저장소에 push 할 수 있어서 거의 쓰이지 않는 듯 해 보인다.) 기존의 ssh&#xA;나 http 프로토콜을 사용해 호스팅 가능하다. 서버측에서 해줘야 하는 것은&#xA;git 이란 계정을 만들고, 그 계정의 홈 디렉토리에 &amp;lt;repository name&amp;gt;.git&#xA;이란 bare repository 를 생성하는 것이다. 계정 이름은 git 이 아니어도&#xA;되지만, ssh 연결 시에 git@&amp;lt;domain&amp;gt; 이라는 url 을 사용하고 싶으면 git&#xA;으로 하자.&lt;/p&gt;</description>
			</item>
			<item>
				<title>그 많던 싱아는 누가 다 먹었을까 서평</title>
				<link>https://blog.dilluti0n.com/posts/%EA%B7%B8-%EB%A7%8E%EB%8D%98-%EC%8B%B1%EC%95%84%EB%8A%94-%EB%88%84%EA%B0%80-%EB%8B%A4-%EB%A8%B9%EC%97%88%EC%9D%84%EA%B9%8C-%EC%84%9C%ED%8F%89/</link>
				<pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate>
				<guid>https://blog.dilluti0n.com/posts/%EA%B7%B8-%EB%A7%8E%EB%8D%98-%EC%8B%B1%EC%95%84%EB%8A%94-%EB%88%84%EA%B0%80-%EB%8B%A4-%EB%A8%B9%EC%97%88%EC%9D%84%EA%B9%8C-%EC%84%9C%ED%8F%89/</guid>
				<description>&lt;p&gt;이 책을 읽으며 문득 슬퍼졌다. 해방되기 전 그러니까 박완서가&#xA;중학생때까지의 이야기만 해도 150페이지 정도 되는데 스무 살 갓 대학에&#xA;진학한 지금 내 이야기를 이정도 적을 수 있을까 하는 생각이&#xA;들어서다. 박완서의 글로 본 그녀의 시골과 도시 언저리의 이야기는 그&#xA;정도로 아름다웠다. 물론 추억이란 게 좋고 나쁜 일들만 남고 그 사이의&#xA;권태나 고통이란 예쁜 주황색으로 바랜 기억 속에서 사라지는 것이지만은&#xA;이 책은 이런 추억들을 마치 내 기억인 양 그리워할 정도로 잘&#xA;전달해주었다. 그럼에도 불구하고 가장 매력적인 문장을 꼽으라면 어렵게&#xA;고민해야 하는데 이 작품의 매력은 화려한 문체가 아닌 담담하지만&#xA;사실적이며 상세한 필치에 있기 때문이다. 이를테면 작품의 “할아버지는&#xA;나를 내려놓고 나서 두루마기 주머니에서 먹을 것을 주섬주섬 꺼내 손에&#xA;쥐여 주는 것을 잊으신 적이 없었다. 노란 편지봉투에 싼 미라사탕 아니면&#xA;잔칫상에서 염치 불구하고 집어넣었음직한 약과나 다식 따위였다.” 라는&#xA;문장은 그 시절의 향수를 불러일으킬 미라사탕과 같은 소재를 적절히&#xA;활용하여 생동감을 불어넣는 동시에 작가의 할아버지에 대한 기억이 그만큼&#xA;상세하고 커다랗다는 사실을 드러낸다. 난 노란 편지봉투에 싸인&#xA;미라사탕이 뭔지 잘 모르지만 읽으며 중학교 시절 사회 선생님께서 가지고&#xA;다니시던 유가라는 사탕이 떠올랐다. 수업할 때 늘 사용하시던 검정색&#xA;스피커 가방에 잔뜩 담아 질문을 맞추면 주시던 흰색 비닐에 싸인 길쭉한&#xA;흰색 사탕인데, 주변에서 쉽게 구할수 없어 인기가 많던 게 기억에&#xA;남는다. 이렇게 잊어버린 줄만 알았던 기억 속 깊숙한 데 잠겨 있는&#xA;자그마한 추억들이 끌어올려 지는 게 작품을 읽으며 중간중간에 느낄 수&#xA;있었던 소소한 즐거움이었다.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
