Borisu Wiki Home ๐ŸŒ 

Welcome to Borisu’s Wiki home

Lua Table Sort

lua์˜ table ์ •๋ ฌ lua์—์„œ table.sort(t,func) ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค. t๋Š” ํ…Œ์ด๋ธ”, func๋Š” ํ•จ์ˆ˜์ด๋‹ค. table.sort(t) ํ–ˆ์„ ๊ฒฝ์šฐ ์š”์†Œ๊ฐ€ ๋ฌธ์ž,์ˆซ์ž๋ฅผ ๊ธฐ๋ณธ ์ •๋ ฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ ๋“ฑ ๋‹ค์–‘ํ•œ ์ œ์–ด๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ํ™œ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ์›๋ณธ table์˜ ์œ„์น˜๊ฐ€ ์ •๋ ฌ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์›๋ณธ์„ ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“  ๋‹ค์Œ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค. ํ•„ํ„ฐ ํ•จ์ˆ˜ ์ •์˜ -- *sort.asc* : ์ˆซ์ž,๋ฌธ์ž,UTF8 ๋ชจ๋‘ ๊ฐ€๋Šฅ local function ascending(a,b) return a < b -- a๊ฐ€ b๋ณด๋‹ค ์ž‘์œผ๋ฉด true end -- *sort.desc* : ์ˆซ์ž,๋ฌธ์ž,UTF8 ๋ชจ๋‘ ๊ฐ€๋Šฅ local function descending(a,b) return a > b -- a๊ฐ€ b๋ณด๋‹ค ํฌ๋ฉด true end -- *sort.bylength* local function bylength(a,b) return #a < #b -- ๋ฌธ์ž์—ด์˜ ๊ธธ์ด์— ๋”ฐ๋ผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ end -- *sort.iascendig* - ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ local function iascendig(a,b) return string.lower(a) < string.lower(b) end -- *sort.idescending* - ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ์ •๋ ฌ local function idescending(a,b) return string.lower(a) > string.lower(b) end -- *sort.bykey* local function bykey(key) return function(a,b) return a[key] < b[key] end end ํ™œ์šฉ local numbers = {5, 3, 8, 1, 2} table.sort(numbers, ascending) -- ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ local strings = {"banana", "apple", "cherry"} table.sort(strings, alphabetical) -- ์•ŒํŒŒ๋ฒณ ์ˆœ ์ •๋ ฌ local objects = { {name = "Alice", age = 30}, {name = "Bob", age = 25}, {name = "Charlie", age = 35} } table.sort(objects, byKey("age")) -- ๋‚˜์ด์— ๋”ฐ๋ผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ REFERENCE duck.ai Quick Guide to Lua Table Sort: Mastering Order with Ease https://luascripts.com/lua-table-sort

2025-08-29 ยท 220 words

WSL Alpine Podman ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ

์†Œ๊ฐœ Podman ์†Œ๊ฐœ Podman์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ๋กœ, Red Hat์—์„œ ๊ฐœ๋ฐœ. Docker์™€ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ฐจ๋ณ„์ ์ด ์žˆ๋‹ค. Podman์€ ์ฃผ๋กœ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ, ์‹คํ–‰, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ฃผ์š” ํŠน์ง• ๋ฃจํŠธ๋ฆฌ์Šค ์‹คํ–‰: Podman์€ ๋ฃจํŠธ ๊ถŒํ•œ ์—†์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์„ฑ์ด ๋†’๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค. ๊ฒฝ๋Ÿ‰ํ™”: Podman์€ ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์›ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํŠนํžˆ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ ์œ ๋ฆฌํ•˜๋‹ค. ...

2025-08-26 ยท (updated 2025-08-28) ยท 355 words

Bash History Command

History ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• $ history # history ๋ชฉ๋ก ๋ณด๊ธฐ $ !! # ์ด์ „ ๋ช…๋ น ์‹คํ–‰ $ !<๋ฒˆํ˜ธ> # ํ•ด๋‹น ๋ฒˆํ˜ธ ๋ช…๋ น ์‹คํ–‰ Bash ํžˆ์Šคํ† ๋ฆฌ ํ™œ์šฉ๋ฒ• 1. !๋ฌธ์ž์—ด๋กœ ์ตœ๊ทผ ๋ช…๋ น์–ด ์žฌ์‹คํ–‰ !ls โ†’ ์ตœ๊ทผ์— ์‹คํ–‰ํ•œ ls๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์žฌ์‹คํ–‰ !git โ†’ ์ตœ๊ทผ์— ์‹คํ–‰ํ•œ git์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ช…๋ น์–ด ์‹คํ–‰ 2. !!๋กœ ๋ฐ”๋กœ ์ด์ „ ๋ช…๋ น์–ด ์žฌ์‹คํ–‰ !! โ†’ ์ง์ „์— ์‹คํ–‰ํ•œ ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ ์˜ˆ: sudo !! โ†’ ์ง์ „ ๋ช…๋ น์–ด๋ฅผ sudo๋กœ ์‹คํ–‰ (๊ถŒํ•œ ๋ถ€์กฑ ์‹œ ์œ ์šฉ) 3. history | grep ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ history | grep ssh ์›ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฐพ๊ณ  !๋ฒˆํ˜ธ๋กœ ์‹คํ–‰ 4. Ctrl + r๋กœ ํžˆ์Šคํ† ๋ฆฌ ๊ฒ€์ƒ‰ (๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ!) Ctrl + r ๋ˆ„๋ฅด๊ณ  ํ‚ค์›Œ๋“œ ์ž…๋ ฅ โ†’ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ณผ๊ฑฐ ๋ช…๋ น์–ด ๊ฒ€์ƒ‰ ์›ํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋‚˜์˜ค๋ฉด Enter๋กœ ์‹คํ–‰ ์˜ˆ: Ctrl + r โ†’ docker ์ž…๋ ฅ โ†’ docker ps ๋ช…๋ น์–ด ์ž๋™ ์™„์„ฑ 5. fc ๋ช…๋ น์–ด๋กœ ํžˆ์Šคํ† ๋ฆฌ ํŽธ์ง‘ ํ›„ ์‹คํ–‰ fc ๊ฐ€์žฅ ์ตœ๊ทผ ๋ช…๋ น์–ด๋ฅผ ํŽธ์ง‘๊ธฐ๋กœ ์—ด๊ณ  ์ˆ˜์ • ํ›„ ์‹คํ–‰ fc -s๋กœ ํŠน์ • ๋ช…๋ น์–ด๋ฅผ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ์Œ 6. .bashrc์— alias ๋“ฑ๋กํ•ด์„œ ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด ๋‹จ์ถ• alias gs='git status' alias ll='ls -alF' ์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด๋ฅผ ์งง๊ฒŒ ๋“ฑ๋กํ•ด๋‘๋ฉด ํžˆ์Šคํ† ๋ฆฌ๋ณด๋‹ค ๋น ๋ฅด๋‹ค ** ํŒ**: HISTCONTROL=ignoredups:erasedups๋ฅผ .bashrc์— ์„ค์ •ํ•˜๋ฉด ์ค‘๋ณต๋œ ๋ช…๋ น์–ด๊ฐ€ ํžˆ์Šคํ† ๋ฆฌ์— ๋‚จ์ง€ ์•Š์•„์„œ ๊ฒ€์ƒ‰์ด ํ›จ์”ฌ ๊น”๋”ํ•ด์ง„๋‹ค. ...

2025-08-23 ยท (updated 2025-08-24) ยท 182 words

busybox - unix command tools

Intro busybox๋Š” ์ž‘๊ณ  ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ POSIX ํ‘œ์ค€ ์œ ํ‹ธ ๋ชจ์Œ์ด๋‹ค. docker์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋กœ ์‘์šฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์‘์šฉ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์— ๋นŒ๋“œํ•˜๊ธฐ windows ํ™˜๊ฒฝ์—์„œ Unix Shell, command ์‚ฌ์šฉํ•˜๊ธฐ HTTP ์›น์„œ๋ฒ„๋กœ ๋Œ๋ฆฌ๊ธฐ Kubernates์— init container๋กœ ์‚ฌ์šฉํ•˜๊ธฐ Docker ๊ฐ€์ƒ์ปจํ…Œ์ด๋„ˆ ๋ณผ๋ฅจ์„œ๋ฒ„(์Šคํ† ๋ฆฌ์ง€)๋กœ ์‚ฌ์šฉํ•˜๊ธฐ Busybox์— ๊ด€ํ•˜์—ฌ ๋†€๋ž๊ฒŒ๋„ busybox๋Š” httpd๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๋‹ค. ๋ฌผ๋ก  ๋Œ€๊ทœ๋ชจ ์ฒ˜๋ฆฌ๋Š” ๊ณค๋ž€ํ•˜๋‹ค. ๋‚ด์žฅ๋œ grep๋„ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋งŒ ์žˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ๊ฒ€์ƒ‰์„ ์จ์•ผํ•œ๋‹ค๋ฉด ํšจ์œจ์ด ์ข‹์ง€ ์•Š์œผ๋ฏ€๋กœ gnu grep์„ ์–น์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. busybox๋Š” glibc, musl ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ๋ฒ„์ „์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋„ฃ์–ด์•ผํ•  ๋•Œ ๊ณต์œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์ด๋‹ค. alpine ๋ฆฌ๋ˆ…์Šค๊ฐ€ busybox + musl + os env ์ด๋ฏ€๋กœ ์ž์‹ ๋งŒ์˜ ์ด๋ฏธ์ง€๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ธฐ๋ณธ์ ์ธ utf-8์ด ์ง€์›๋˜์ง€๋งŒ ์ถœ๋ ฅ์€ ๊ดœ์ฐฎ๊ณ  ์ž…๋ ฅ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. sh, echo, vi ๋„ ๊ฐ€๋ณ๊ฒŒ ์“ฐ๊ธฐ๋Š” ์ข‹์œผ๋‚˜ utf-8 ํ•œ๊ธ€์ž…๋ ฅ์ด ์•ˆ๋œ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” bash, echo, vi๋ฅผ ์ •์ ์ปดํŒŒ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๋Œ€์ฒด ๋˜๋Š” ๋„์ปคํ—ˆ๋ธŒ(DockerHub)์˜ toybox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. utf-8 ์ž…์ถœ๋ ฅ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. ์‹ฌ์ง€์–ด ์‚ฌ์ด์ฆˆ๊ฐ€ ๋” ์ž‘๋‹ค. utf-8์˜ ์ž…์ถœ๋ ฅ ํ™˜๊ฒฝ์ด ๋ชจ๋‘ ํ•„์š”ํ•˜๋‹ค๋ฉด toybox๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค. busybox(์•ฝ1.2MB)๋‚˜ toybox(์•ฝ764K)๋Š” ์ •๋ง ๊ฐ€๋ณ๊ฒŒ ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ™œ์šฉ์€ ๊ฐœ๋ฐœํ™˜๊ฒฝ์ด๋‚˜ ํฐ๊ทœ๋ชจ์˜ ์‹คํ–‰ํ™˜๊ฒฝ๋ณด๋‹ค๋Š” ์ž‘๊ณ  ๊ฐ€๋ฒผ์šด ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ์šด์šฉ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์œˆ๋„์šฐ์ฆˆ์—์„œ ์œ ๋‹‰์Šค ๋ช…๋ น ํ™˜๊ฒฝ ๊ตฌ์„ฑ Busybox64๋Š” ์œˆ๋„์šฐ์ฆˆ ํ™˜๊ฒฝ์—์„œ busybox๋ฅผ ํ†ตํ•ด unix ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์œˆ๋„์šฐ์ฆˆ์—์„œ ๊ฐ„๋‹จํžˆ ํŒŒ์ผ ํŽธ์ง‘, ์ด๋™, ํŒŒ์ผ ์กฐ์ž‘ ๋“ฑ ์ต์ˆ™ํ•œ 172๊ฐœ์˜ ๋ช…๋ น์–ด ์‚ฌ์šฉ๊ฐ€๋Šฅ. Shell Script ์ž‘์„ฑ๋„ ๊ฐ€๋Šฅ : sh, bash, vi ๋“ฑ์œผ๋กœ ์—ฌ๋Ÿฌ ์ž‘์—… ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ. ๊ฐ€๋ฒผ์šด ์ž‘์—…๋งŒ ํ•œ๋‹ค๋ฉด cygwin, msys2, git for windows ๋“ฑ์ด ๊ตณ์ด ํ•„์š”์น˜ ์•Š๋‹ค. busybox.exe(32bit), busybox64.exe(64bit), busybox64u.exe (64bit unicode) ์ค‘ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์„ค์น˜ ๋‹ค์šด๋กœ๋“œ: https://frippery.org/busybox/ ์‚ฌ์šฉ๋ฒ• ์ ๋‹นํ•œ ์œ„์น˜์— ๋‹ค์šด๋กœ๋“œ ํ•œ ํ›„ PATH์— ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค. command ์ฐฝ ๋˜๋Š” Powershell์„ ์‹คํ–‰ํ•œ๋‹ค. busybox.exe bash -l : bash ์‰˜ ํ™˜๊ฒฝ์œผ๋กœ ํ„ฐ๋ฏธ๋„์ด ์‹คํ–‰๋œ๋‹ค. (sh, ash, bash ์ง€์›) busybox.exe --list : ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” unix ๋ช…๋ น๋“ค ๋ชฉ๋ก (sed, awk, grep, make, wget, vi, ..) busybox.exe --help : ๋„์›€๋ง REFERENCE busybox home: https://frippery.org/busybox/ busybox github: https://github.com/rmyorston/busybox-w32 Using the BusyBox Docker Image for Building Applications : A Complete Guide https://www.sohamkamani.com/docker/busybox-guide/

2025-08-22 ยท (updated 2025-08-24) ยท 306 words

Lua - mode ์ฒ˜๋ฆฌ ํ•จ์ˆ˜

์†Œ๊ฐœ lua์—์„œ mode ์ธ์ž๋ฅผ ๋ฐ›์„ ๋•Œ string, table ๋ชจ๋‘๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ด๋Š” vim.keymap.set() ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‚ด๋ถ€์—์„œ type์ด table์ด ์•„๋‹ˆ๋ฉด {mode}๋กœ ํƒœ์ด๋ธ”๋กœ ๋ฐ”๊พธ๊ณ  For๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์˜ˆ์ œ -- ํ•จ์ˆ˜ ์ •์˜ function my_map(mode, short, command, opts) local modes = type(mode) == 'table' and mode or { mode } for _, m in ipairs(modes) do vim.keymap.set(m, short, command, opts) end end -- ์‚ฌ์šฉ my_map('n','<leader>r', ':source %<CR>', {noremap=true}) my_map({ 'n','v' },'<leader>r', ':source %<CR>', {noremap=true})

2025-07-29 ยท 72 words