-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
359 lines (326 loc) · 14.4 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
<!DOCTYPE html>
<html lang="en" dir="auto">
<head>
<meta name="generator" content="Hugo 0.118.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>Option::None</title>
<meta name="description" content="">
<meta name="author" content="">
<link rel="canonical" href="http://blog.cro.sh/">
<link crossorigin="anonymous" href="/assets/css/stylesheet.3613efbd0b1772781e8f49935e973cae632a7f61471c05b17be155505ccf87b5.css" integrity="sha256-NhPvvQsXcngej0mTXpc8rmMqf2FHHAWxe+FVUFzPh7U=" rel="preload stylesheet" as="style">
<link rel="icon" href="http://blog.cro.sh/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="http://blog.cro.sh/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="http://blog.cro.sh/favicon-32x32.png">
<link rel="apple-touch-icon" href="http://blog.cro.sh/apple-touch-icon.png">
<link rel="mask-icon" href="http://blog.cro.sh/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" type="application/rss+xml" href="http://blog.cro.sh/index.xml">
<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 rel="stylesheet" href="http://blog.cro.sh/css/allow-horizontal-highlight-scroll.css"><link rel="stylesheet" href="http://blog.cro.sh/css/small-page-heading.css"><link rel="stylesheet" href="http://blog.cro.sh/css/fix-ios-hljs.css"><meta property="og:title" content="Option::None" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://blog.cro.sh/" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Option::None"/>
<meta name="twitter:description" content=""/>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Option::None",
"url": "http://blog.cro.sh/",
"description": "",
"thumbnailUrl": "http://blog.cro.sh/favicon.ico",
"sameAs": [
]
}
</script>
</head>
<body class="list" id="top">
<script>
if (localStorage.getItem("pref-theme") === "dark") {
document.body.classList.add('dark');
} else if (localStorage.getItem("pref-theme") === "light") {
document.body.classList.remove('dark')
} else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
document.body.classList.add('dark');
}
</script>
<header class="header">
<nav class="nav">
<div class="logo">
<a href="http://blog.cro.sh/" accesskey="h" title="Option::None (Alt + H)">Option::None</a>
<div class="logo-switches">
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</button>
</div>
</div>
<ul id="menu">
<li>
<a href="http://blog.cro.sh/search/" title="Search (Alt + /)" accesskey=/>
<span>Search</span>
</a>
</li>
</ul>
</nav>
</header>
<main class="main">
<article class="first-entry home-info">
<header class="entry-header">
<h1>A Personal Blog</h1>
</header>
<div class="entry-content">
<p>주로 Rust 언어에 관해 다룹니다. 비정기적으로 업데이트됩니다.</p>
<p><a href="https://cro.sh/me-ko">Resume</a> / <a href="https://github.com/cr0sh">Github</a> / <a href="/index.xml">RSS</a></p>
</div>
<footer class="entry-footer">
<div class="social-icons">
</div>
</footer>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>나의 트레이딩 봇 자랑
</h2>
</header>
<div class="entry-content">
<p>그동안 열심히 만든 트레이딩 봇을 거의 완성했다. 장장 8개월간 했던 나의 엔지니어링에 대한 자랑 겸 스토리를 써보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-10-15 17:38:26 +0900 KST'>October 15, 2023</span></footer>
<a class="entry-link" aria-label="post link to 나의 트레이딩 봇 자랑" href="http://blog.cro.sh/posts/my-trading-bots/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>ETHSeoul 2023 Hackathon Review
</h2>
</header>
<div class="entry-content">
<p>난생 처음으로 해커톤, 그것도 Web3 해커톤에 참가하면서 느끼고 배운 점을 서술해보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-06-04 21:27:49 +0900 KST'>June 4, 2023</span></footer>
<a class="entry-link" aria-label="post link to ETHSeoul 2023 Hackathon Review" href="http://blog.cro.sh/posts/ethseoul2023-review/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Demystifying Functional Effect Systems in Rust (Part 1)
</h2>
</header>
<div class="entry-content">
<p>Effect system을 공부하던 중, Demystifying Functional Effect Systems in Scala라는 좋은 글을 접했다. Rust에서 effect system을 적용하면 어떤 모습이 될 지 궁금하여, 해당 글을 한국어로 간단히 요약하면서 Rust로 코드를 옮겨보았다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-05-29 19:21:34 +0900 KST'>May 29, 2023</span></footer>
<a class="entry-link" aria-label="post link to Demystifying Functional Effect Systems in Rust (Part 1)" href="http://blog.cro.sh/posts/demystifying-functional-effect-systems-in-rust-part-1/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>The Graph
</h2>
</header>
<div class="entry-content">
<p>GraphQL GraphQL은 간략하게 설명하면, REST fetch와 다르게 API에 필요한 데이터만을 질의해 가져올 수 있는 쿼리 언어 & 런타임이다.
The Graph는 GraphQL로 온체인 데이터를 질의할 수 있게 해주는 탈중앙 프로토콜이다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-05-27 21:42:40 +0900 KST'>May 27, 2023</span></footer>
<a class="entry-link" aria-label="post link to The Graph" href="http://blog.cro.sh/posts/the-graph/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Serde Interface
</h2>
</header>
<div class="entry-content">
<p>Serde는 Rust의 데이터 직렬화/역직렬화를 담당하는 프레임워크로, Rust 생태계의 중추적인 위치를 차지하고 있다. 이번 글에서는 Serde의 인터페이스가 어떻게 정의되었는지 정리해보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-05-21 11:13:05 +0900 KST'>May 21, 2023</span></footer>
<a class="entry-link" aria-label="post link to Serde Interface" href="http://blog.cro.sh/posts/serde-interface/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Lua for Python Users
</h2>
</header>
<div class="entry-content">
<p>Lua에 대해 간단하게 알아봅시다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-05-14 09:35:34 +0900 KST'>May 14, 2023</span></footer>
<a class="entry-link" aria-label="post link to Lua for Python Users" href="http://blog.cro.sh/posts/lua-for-python-users/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Rust의 에러 처리, Part 2
</h2>
</header>
<div class="entry-content">
<p>[Rust의 에러 처리, Part 1]에 이어, Rust의 에러 처리에 대해 다뤄보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-01-26 20:58:44 +0900 KST'>January 26, 2023</span></footer>
<a class="entry-link" aria-label="post link to Rust의 에러 처리, Part 2" href="http://blog.cro.sh/posts/error-handling-story-in-rust-part-2/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Rust의 에러 처리, Part 1
</h2>
</header>
<div class="entry-content">
<p>Rust에서 어떻게 에러를 처리하고 복구하는지에 대해 실전 위주로 다뤄보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2023-01-07 23:26:51 +0900 KST'>January 7, 2023</span></footer>
<a class="entry-link" aria-label="post link to Rust의 에러 처리, Part 1" href="http://blog.cro.sh/posts/error-handling-story-in-rust-part-1/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>4년간의 Rust 사용 후기
</h2>
</header>
<div class="entry-content">
<p>2018년 중순부터 4년간 Rust를 사용해보았고, 최근 1년 반 가량은 병역특례를 하면서 프로덕션에서도 사용을 해 보았다. 연말이기도 하니, 그 동안 내가 Rust를 하면서 어떤 인상을 받았는지를 중점으로 하여 되돌아보고자 한다.
...</p>
</div>
<footer class="entry-footer"><span title='2022-12-11 15:19:56 +0900 KST'>December 11, 2022</span></footer>
<a class="entry-link" aria-label="post link to 4년간의 Rust 사용 후기" href="http://blog.cro.sh/posts/four-years-of-rust/"></a>
</article>
<article class="post-entry">
<header class="entry-header">
<h2>Asynchronous Rust
</h2>
</header>
<div class="entry-content">
<p>최근에 근무 중인 직장에서 비동기 Rust 프로그래밍에 대해 발표하게 되어 자료를 공유한다.
...</p>
</div>
<footer class="entry-footer"><span title='2022-08-15 23:22:43 +0900 KST'>August 15, 2022</span></footer>
<a class="entry-link" aria-label="post link to Asynchronous Rust" href="http://blog.cro.sh/posts/asynchronous-rust/"></a>
</article>
<footer class="page-footer">
<nav class="pagination">
<a class="next" href="http://blog.cro.sh/page/2/">Next »
</a>
</nav>
</footer>
</main>
<footer class="footer">
<span>© 2019-2023 Nam Junghyun</span>
<span>
Powered by
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
</span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
<path d="M12 6H0l6-6z" />
</svg>
</a>
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
data-cf-beacon='{"token": "152863abaa9948f9bb84e53ef4204e47"}'></script>
<script>
let menu = document.getElementById('menu')
if (menu) {
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
menu.onscroll = function () {
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
}
}
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener("click", function (e) {
e.preventDefault();
var id = this.getAttribute("href").substr(1);
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
behavior: "smooth"
});
} else {
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
}
if (id === "top") {
history.replaceState(null, null, " ");
} else {
history.pushState(null, null, `#${id}`);
}
});
});
</script>
<script>
var mybutton = document.getElementById("top-link");
window.onscroll = function () {
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
mybutton.style.visibility = "visible";
mybutton.style.opacity = "1";
} else {
mybutton.style.visibility = "hidden";
mybutton.style.opacity = "0";
}
};
</script>
<script>
document.getElementById("theme-toggle").addEventListener("click", () => {
if (document.body.className.includes("dark")) {
document.body.classList.remove('dark');
localStorage.setItem("pref-theme", 'light');
} else {
document.body.classList.add('dark');
localStorage.setItem("pref-theme", 'dark');
}
})
</script>
</body>
</html>