tech.ssut

Node, Go, and Python enthusiast.

10๊ธฐ๊ฐ€๋น„ํŠธ ํ™ˆ ๋„คํŠธ์›Œํฌ ๊ตฌ์ถ•ํ•˜๊ธฐ
networking

10๊ธฐ๊ฐ€๋น„ํŠธ ํ™ˆ ๋„คํŠธ์›Œํฌ ๊ตฌ์ถ•ํ•˜๊ธฐ

๊ทธ๋ƒฅ ์žฌ๋ฏธ๋กœ 10๊ธฐ๊ฐ€๋น„ํŠธ ํ™ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ์ €๋ ดํ•˜๊ฒŒ ๋ง์ด์ฃ . ์žฅ๋น„๋ถ€ํ„ฐ ๊ณจ๋ผ๋ณด๋Š”๋ฐ ํ‰์†Œ homelab subreddit์„ ์ž์ฃผ ๋ˆˆํŒ…ํ•˜๊ณ  ์žˆ์—ˆ๋˜์ง€๋ผ ์žฅ๋น„ ์„ ์ •์—๋Š” ํฐ ์–ด๋ ค์›€์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•์งˆ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ์‹  ์Šฌ๋ž™ ์ฃผ์‹(WORK)๊ณผ ์ด๋”๋ฆฌ์›€(ETH)์— ๊นŠ์€ ๊ฐ์‚ฌ๋ฅผ ํ‘œํ•ฉ๋‹ˆ๋‹ค. (__) Router: Ubiquiti UniFi Dream Machine ProUDM Pro๋Š” ์›๋ž˜ ๋ผ์šฐํ„ฐ ์šฉ๋„๋กœ๋งŒ ๋‚˜์˜จ

๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ๊ฐ€๋ณ๊ฒŒ ์จ๋ณด๋Š” M1 ๋งฅ ๋ฏธ๋‹ˆ ์‚ฌ์šฉ๊ธฐ
applesilicon

๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ๊ฐ€๋ณ๊ฒŒ ์จ๋ณด๋Š” M1 ๋งฅ ๋ฏธ๋‹ˆ ์‚ฌ์šฉ๊ธฐ

์• ํ”Œ์ด ์ž์ฒด M1 ์นฉ์„ ํƒ‘์žฌํ•œ M1 ๋งฅ ๋ฏธ๋‹ˆ๋ฅผ ๋ฐœํ‘œํ•˜๊ณ  ๋ฏธ๊ตญ ๋™๋ถ€ ํ‘œ์ค€์‹œ ๊ธฐ์ค€ ๋‹น์ผ ์ €๋…์— ๋ฐ”๋กœ ์ฃผ๋ฌธ์„ ๋„ฃ๊ณ  11/28(ํ† )์— M1 ๋งฅ ๋ฏธ๋‹ˆ๋ฅผ ์ง‘์—์„œ ์ˆ˜๋ นํ•˜๊ฒŒ ๋˜์–ด ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•ด๋ณธ ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์˜: ์กธ๋ฆฐ ์ƒํƒœ์—์„œ ์“ด ๊ธ€์ด๋ผ ์˜์‹์˜ ํ๋ฆ„๋Œ€๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.โ€Œโ€Œ ์šฐ์„  ๋งฅ ๋ฏธ๋‹ˆ๋ฅผ ์‚ฐ ์ด์œ ๋ฅผ ๋ง์”€๋“œ๋ฆฌ๋ฉด: ๋ชจ๋‹ˆํ„ฐ 2๊ฐœ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ ์š”.

M1 ๋งฅ์—์„œ Docker ์‚ฌ์šฉํ•˜๊ธฐ
docker

M1 ๋งฅ์—์„œ Docker ์‚ฌ์šฉํ•˜๊ธฐ

Click here for English version. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—๋งฅ์—์„œ Docker๋Š” ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Docker Desktop on Mac๋Š” Apple์ด ๋งŒ๋“  Hypervisor.framework๋ฅผ ์ด์šฉํ•ด alpinelinux๋ฅผ ๊ฐ€์ƒ๋จธ์‹  ์œ„์— ๋„์šด ํ›„ remote๋กœ ์ ‘์†ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๊ธฐ์„œ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐฉ์‹์€ ์‹ค์ œ Docker Desktop on Mac์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ฑฐ์˜ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค (์ฐธ๊ณ : mac๊ณผ์˜ bridge network ๋ฐ volume ์‚ฌ์šฉ์—๋Š”

5G NSA ๋„คํŠธ์›Œํฌ ์‚ดํŽด๋ณด๊ธฐ (์•„๋งˆ์ถ”์–ดํŽธ)
3gpp

5G NSA ๋„คํŠธ์›Œํฌ ์‚ดํŽด๋ณด๊ธฐ (์•„๋งˆ์ถ”์–ดํŽธ)

์–ผ๋งˆ ์ „๋ถ€ํ„ฐ U+ MVNO๋กœ 5G ๋ง์„ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›” 3๋งŒ ์› ํ›„๋ฐ˜๋Œ€์— 180GB ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์š”๊ธˆ์ œ๋ผ ์ด์ •๋„ ๊ฐ€๊ฒฉ์ด๋ฉด 5G๋ฅผ ์“ฐ๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๋‚ฉ๋“์ด ๊ฐ€๋Š” ๊ฐ€๊ฒฉ์ด๊ธฐ๋„ ํ–ˆ๊ณ , ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์›ํ”Œ๋Ÿฌ์Šค 8 ํ”„๋กœ๊ฐ€ 5G๋ฅผ ์ง€์›ํ•ด์„œ ํ˜ธ๊ธฐ์‹ฌ์ด ์ƒ๊ฒจ์„œ ๋ง์ด์ฃ . ๋ฌธ์ œ๋Š” ์ด๊ฒŒ ์™ธ์‚ฐํฐ์ด๋ž€ ๊ฑฐ์˜€์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์ค‘๊ตญ์—์„œ ์ง๊ตฌํ•œ ๋ชจ๋ธ(๋ชจ๋ธ๋ช…: IN2020)์ด๋ผ NR78 ๋Œ€์—ญ(ํ•œ๊ตญ ํ†ต์‹ 

NodeJS์—์„œ async_hooks์„ ์ด์šฉํ•ด ์š”์ฒญ์˜ ๊ณ ์œ ํ•œ context ์‚ฌ์šฉํ•˜๊ธฐ
nodejs

NodeJS์—์„œ async_hooks์„ ์ด์šฉํ•ด ์š”์ฒญ์˜ ๊ณ ์œ ํ•œ context ์‚ฌ์šฉํ•˜๊ธฐ

์ด ๊ธ€์€ Guillaume Bession์˜ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ผ์™€์žˆ๋Š” Getting per-request context in NodeJS with async_hooks ๊ธ€์˜ ๋ฒˆ์—ญ๊ธ€์ž…๋‹ˆ๋‹ค.์ €๋Š” ์ตœ๊ทผ NodeJS๋กœ HTTP ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋˜ ๋„์ค‘ ๋ฌธ์ œ๋ฅผ ๋งž๋‹ฅํŠธ๋ฆฌ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ œ ์ฝ”๋“œ๋ฒ ์ด์Šค์˜ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ ๋กœ๊น…์„ ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ๊ฐ ์š”์ฒญ๋ณ„๋กœ ์œ ๋‹ˆํฌID๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ์œ ๋‹ˆํฌํ•œ ID๋ฅผ ๊ฐ ์š”์ฒญ ์•ˆ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€

2018๋…„์— ํฌ๋กฌ์€ ์ •๋ง๋กœ ๋น ๋ฅผ๊นŒ์š”?
web browser

2018๋…„์— ํฌ๋กฌ์€ ์ •๋ง๋กœ ๋น ๋ฅผ๊นŒ์š”?

๊ฐœ์ธ์ ์œผ๋กœ ๋งฅ์„ ์‚ฌ์šฉํ•  ๋•Œ๋ฉด ํฌ๋กฌ ๋Œ€์‹  ์‚ฌํŒŒ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜๋Š” ํฌ๋กฌ์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์„ฑ๋Šฅ, ๋ฐฐํ„ฐ๋ฆฌ(= ์ „๋ ฅ ์†Œ๋ชจ) ๋ฉด์—์„œ ์‚ฌํŒŒ๋ฆฌ๊ฐ€ ํฌ๋กฌ๋ณด๋‹ค ์›”๋“ฑํžˆ ๋›ฐ์–ด๋‚˜๋‹ค๋Š” ๊ฒƒ์„ ๋ชธ์†Œ ๋Š๋ผ๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— ํฌ๋กฌ์€ ์›น ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ผœ์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๊ฐ‘์ž๊ธฐ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ํฌ๋กฌ vs ์‚ฌํŒŒ๋ฆฌ ๊ตฌ๋„์—์„œ ํฌ๋กฌ์ด ํ›จ์”ฌ ๋ฌด๊ฒ๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ๋จน์œผ๋ฉฐ, ๋ถˆํ•„์š”ํ•˜๊ฒŒ

[๋ฒˆ์—ญ] OpenSSH์˜ ๊ธฐ๋ณธ ํ‚ค ์•”ํ˜ธํ™”๋Š” ํ‰๋ฌธ๋ณด๋‹ค ๋ชปํ•ฉ๋‹ˆ๋‹ค
security

[๋ฒˆ์—ญ] OpenSSH์˜ ๊ธฐ๋ณธ ํ‚ค ์•”ํ˜ธํ™”๋Š” ํ‰๋ฌธ๋ณด๋‹ค ๋ชปํ•ฉ๋‹ˆ๋‹ค

์ด ๊ธ€์€ Latacora์—์„œ ์ž‘์„ฑํ•œ The default OpenSSH key encryption is worse than plaintext์˜ ๋ฒˆ์—ญ๊ธ€์ž…๋‹ˆ๋‹ค. ์•”ํ˜ธํ™”์— ๋Œ€ํ•œ ์ง€์‹์ด ๊นŠ์ง€ ์•Š๊ณ  ์˜๋ฌธ ๋ฒˆ์—ญ ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์—ญ์ด ๋งŽ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋งŽ์„ ๊ฑฐ๋ผ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.) ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๊ฐœ์ธ ์ด๋ฉ”์ผ๋กœ ๋ฌธ์˜์ฃผ์‹œ๋ฉด ๋ฐ”๋กœ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ทผ์— eslint-scope npm ํŒจํ‚ค์ง€๊ฐ€ ํ•ด์ปค์˜ ์†์— ๋„˜์–ด๊ฐ€ npm ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ๋ถ€ํ„ฐ

[๋ฒˆ์—ญ] ์ž˜๊ฐ€์š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: 100๊ฐœ์˜ ๋ฌธ์ œ์  ํˆฌ์„ฑ์ด๋ฅผ 1๊ฐœ์˜ ์Šˆํผ์Šคํƒ€๋กœ
microservices

[๋ฒˆ์—ญ] ์ž˜๊ฐ€์š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: 100๊ฐœ์˜ ๋ฌธ์ œ์  ํˆฌ์„ฑ์ด๋ฅผ 1๊ฐœ์˜ ์Šˆํผ์Šคํƒ€๋กœ

์ด ๊ธ€์€ Segment์˜ Alexandra Noonan์ด ์ž‘์„ฑํ•œ Goodbye Microservices: From 100s of problem children to 1 superstar์˜ ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค. ์Œ์ง€์— ์ˆจ์–ด์„œ ์‚ด์•„์˜ค์ง€ ์•Š์•˜๋”๋ผ๋ฉด, ๋‹น์‹ ์€ ์•„๋งˆ๋„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์˜ค๋Š˜๋‚ ์˜ ์•„ํ‚คํ…์ฒ˜๋ž€ ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์„๊ฒ๋‹ˆ๋‹ค. ํŠธ๋ Œ๋“œ์™€ ํ•จ๊ป˜ ์„ฑ์žฅํ•˜๋ฉฐ Segment๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ตœ๊ณ ์˜ ์„ ํƒ์œผ๋กœ ์ดˆ๊ธฐ์— ๋น ๋ฅด๊ฒŒ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๋ช‡๋ช‡ ์ผ€์ด์Šค์—์„œ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์„ฑ๊ณต์ ์ผ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ณง ์•Œ๊ฒŒ ๋˜๊ฒ ์ง€๋งŒ

Node.js v10.5.0 Worker PR FAQ
nodejs

Node.js v10.5.0 Worker PR FAQ

์ด ๊ธ€์€ nodejs 10.5.0์— ์‹คํ—˜์  ๊ธฐ๋Šฅ(experimental feature)์œผ๋กœ ์ถ”๊ฐ€๋œ worker์˜ PR FAQ๋ฅผ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์›๋ฌธ์€ https://gist.github.com/benjamingr/3d5e86e2fb8ae4abe2ab98ffe4758665 ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Worker PR FAQ The content here is mostly copied material written by Anna (@addaleax) and people on the PR and copied here

Chrome 64, Node.js v10์—์„œ๋Š” GC๊ฐ€ markํ•˜๋Š” ๋™์•ˆ ์•ฑ์ด ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค
nodejs

Chrome 64, Node.js v10์—์„œ๋Š” GC๊ฐ€ markํ•˜๋Š” ๋™์•ˆ ์•ฑ์ด ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์€ V8 Javascript Engine ๊ณต์‹ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ผ์˜จ ์•„๋ž˜ ๊ธ€์˜ ๋ฒˆ์—ญ๊ธ€์ž…๋‹ˆ๋‹ค. Concurrent marking in V8 https://v8project.blogspot.com/2018/06/concurrent-marking.html ์›๊ธ€ ์ž์ฒด๊ฐ€ ์‰ฌ์šฐ๋ฉด์„œ ์ด๋”ฐ๊ธˆ์”ฉ ์–ด๋ ค์šด ์„ค๋ช…์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์˜ค์—ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€ ๋˜๋Š” ์ด๋ฉ”์ผ๋กœ ์ˆ˜์ • ํ”ผ๋“œ๋ฐฑ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :) V8์˜ ์ง€์†์ ์ธ ๋งˆํ‚น ์ด ๊ธ€์—์„œ๋Š” ์ง€์†์ ์ธ ๋งˆํ‚น(concurrent

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์˜ˆ์ œ
programming

์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์˜ˆ์ œ

์ด ๊ธ€์€ Jorin๋‹˜์ด ์ž‘์„ฑํ•˜์‹  An Example of How Software Becoms Complicated์˜ ๋ฒˆ์—ญ๊ธ€์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์บ์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž์ฃผ ์ฝ”๋“œ๋Š” ๊ฐ„๊ฒฐํ•ด์•ผ ํ•˜๊ณ  ๋ณต์žก์„ฑ์„ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์„ ๋“ฃ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ณต์œ  ๊ธฐ๋Šฅํ•œ ํ˜•ํƒœ๋กœ, ๋˜ํ•œ ํ™•์žฅํ•˜๊ธฐ

๋‹น์‹ ์ด ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ด์œ 
security

๋‹น์‹ ์ด ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋  ์ˆ˜๋„ ์žˆ๋Š” ์ด์œ 

์ด ๊ธ€์€ Why you probably should not use a wildcard certificate์˜ ๋ฒˆ์—ญ๊ธ€์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ Let's Encrypted๋Š” ๋ฌด๋ฃŒ ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ๋™์•ˆ ๊ฐ’๋น„์ŒŒ๋˜ ์ƒ์šฉ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋˜ ์ด์œ  ์ค‘ ํ•˜๋‚˜๋ฅผ ์—†์• ์ค„ ์ข‹์€ ์†Œ์‹์ด์ง€๋งŒ, ์ €๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์™€์ผ๋“œ์นด๋“œ ์ธ์ฆ์„œ์— ๋Œ€ํ•ด ์œ„ํ—˜ํ•  ์ •๋„๋กœ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ, ์ด ๊ธ€์—์„œ๋Š”

WSL(Windows Subsystem for Linux) ์‚ฌ์šฉ๊ธฐ ๋ฐ ArchLinux๋กœ์˜ ์ „ํ™˜
WSL

WSL(Windows Subsystem for Linux) ์‚ฌ์šฉ๊ธฐ ๋ฐ ArchLinux๋กœ์˜ ์ „ํ™˜

Windows 10์— WSL(Windows Subsystem for Linux) ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜๊ธฐ ์ด์ „์—๋Š” SSH๋ฅผ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์…‹ํŒ…ํ•ด๋‘” ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„์— ์›๊ฒฉ์œผ๋กœ ์ ‘์†ํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์›๊ฒฉ์œผ๋กœ ์ ‘์†ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์„ ๋น„๋กฏํ•ด ์œˆ๋„์šฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ„ฐ๋ฏธ๋„ ์•ฑ๋“ค์€ 24๋น„ํŠธ ํŠธ๋ฃจ์ปฌ๋Ÿฌ๋ฅผ ์ œ๋Œ€๋กœ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ์†๋„๊ฐ€ ๋Š๋ฆฐ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์— ์ฃผ๋กœ Butterfly Shell์„ ์ด์šฉํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€์˜ ์ด์•ผ๊ธฐ๋Š” WSL์„ ์ ‘ํ•˜๊ธฐ ์ „๊นŒ์ง€์˜

Peephole: CPython์€ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š”๊ฐ€
python

Peephole: CPython์€ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š”๊ฐ€

๋งŽ์€ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋Š” "์‹คํ–‰ ์„ฑ๋Šฅ(์†๋„)"์ด ์ข‹์ง€ ์•Š๋‹ค๋Š” ํฐ ๋‹จ์ ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JIT ๋Ÿฐํƒ€์ž„์„ ๋ถ™์ด๊ฑฐ๋‚˜ ๊ฐœ๋ฐœ์ž ์Šค์Šค๋กœ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž ์Šค์Šค๋กœ ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•œ๋‹ค๊ณ  ํ•˜์—ฌ(์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ) ํˆฌ์žํ•˜๋Š” ์‹œ๊ฐ„์— ๋น„ํ•ด ํฐ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์–ป๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Python์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ํ•ด์†Œ์‹œํ‚ค๊ณ ์ž Peephole์ด๋ผ๋Š” Python

Goroutines vs Threads
Go

Goroutines vs Threads

Google์ด Go ์–ธ์–ด๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ ์ดํ›„ ๋งŽ์€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์šฉ ์œ ํ‹ธ๋ฆฌํ‹ฐ, ์„œ๋ฒ„๊ฐ€ Go๋กœ ์งœ์—ฌ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๋งค ์—…๋ฐ์ดํŠธ๋งˆ๋‹ค ์—„์ฒญ๋‚œ ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ๋ฐœ์ „์œผ๋กœ ์ด์ œ ์–ด๋””์„œ๋“  Go ์–ธ์–ด๋กœ ์งœ์—ฌ์ง„ ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ๋งŒ๋‚  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ด์ „์— ์˜ฌ๋ ธ๋˜ HTTP Server Benchmark ๊ธ€์—์„œ ๋ณด์—ฌ์ค€ Go์˜ ์„ฑ๋Šฅ์€ ๋งŽ์€ ์ด๋“ค์—๊ฒŒ ๊ฐ๋ช…์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ด๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ Go์˜

Docker(container)์˜ ์ž‘๋™ ์›๋ฆฌ: namespaces and cgroups
docker

Docker(container)์˜ ์ž‘๋™ ์›๋ฆฌ: namespaces and cgroups

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ(LXC) ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•œ ์ดํ›„๋กœ ์ „๊ฐ€์ƒํ™”(full virtualization) ๋ฐ ๋ฐ˜๊ฐ€์ƒํ™”(para virtualization)์˜ ์‹œ๋Œ€๊ฐ€ ์ €๋ฌผ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. Docker๋Š” LXC์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ์ด์šฉํ•ด ๋งŒ๋“  ์ปจํ…Œ์ดํ„ฐ ๊ด€๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜์€ ๋ฌผ๋ก  DevOps, ํ…Œ์ŠคํŒ… ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ๋งŽ์€ ์‚ฌ๋ž‘์„ ๋ฐ›๊ณ  ์žˆ์–ด ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์ฒด์˜ ์‚ฌ์‹ค์ƒ(de-facto) ์—…๊ณ„ ํ‘œ์ค€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Docker์— ๋Œ€ํ•œ

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํ—ค์น˜๊ธฐ: 2. Python bytes
Hack The Virtual Memory

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํ—ค์น˜๊ธฐ: 2. Python bytes

์ด ๊ธ€์—์„œ ์šฐ๋ฆฌ๋Š” ์•ž์„œ ์•Œ์•„๋ดค๋˜ 1. C strings & /proc์™€ ๋น„์Šทํ•œ ์ผ์„ ํ•ด๋ณผ ๊ฒ๋‹ˆ๋‹ค, ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์‹คํ–‰์ค‘์ธ Python 3 ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋๋‚˜์ง€ ์•Š์„๊ฒ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Python 3 ๋‚ด๋ถ€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ผ์žˆ๋Š” ์ง€๋„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—: ์ด ๊ธ€์€ Holberton school์—์„œ ์—ฐ์žฌ๋˜๊ณ  ์žˆ๋Š” Hack The Virtual Memory์˜ ๋ฒˆ์—ญ๋ณธ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ค€๋น„๋ฌผ ์ด ๊ธ€์„

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํ—ค์น˜๊ธฐ: 1. C strings, /proc ์•Œ์•„๋ณด๊ธฐ
Hack The Virtual Memory

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํŒŒํ—ค์น˜๊ธฐ: 1. C strings, /proc ์•Œ์•„๋ณด๊ธฐ

์ด ๊ธ€์€ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„๋ณด๋Š” ๊ฐ„๋‹จํ•œ ์—ฐ์žฌ๊ธ€์˜ ์ฒซ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์•ฝ๊ฐ„์˜ CS(computer science) ์ง€์‹์„ ์Šต๋“ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค, ํ•˜์ง€๋งŒ ์ข€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ง์ด์ฃ . ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—: ์ด ๊ธ€์€ Holberton school์—์„œ ์—ฐ์žฌ๋˜๊ณ  ์žˆ๋Š” Hack The Virtual Memory์˜ ๋ฒˆ์—ญ๋ณธ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ์šฐ๋ฆฌ๋Š” /proc๋ฅผ ํ†ตํ•ด ์ž‘๋™์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ASCII ๋ฌธ์ž์—ด์„ ์ฐพ๊ณ  ์ˆ˜์ •ํ•ด๋ณด๋ ค