๋ฐ์ํ
์ ์ฒด ๊ธ
Go์์ ์์ฃผ ์ฌ์ฉํ๋ reflect ๊ตฌ๋ฌธ (Golang reflect)
Go์์ ์์ฃผ ์ฌ์ฉํ๋ reflect ๊ตฌ๋ฌธ (Golang reflect)
2019.06.21๊ตฌ์กฐ์ฒด ๋ฐ ์ธํฐํ์ด์ค ์ ์ type Animal interface{ Move(int) bool } type Cat struct { Name string `custom:"name"` Age int `custom:"age"` Child []string `custom:"child"` } func (c *Cat) Move(distance int) bool { fmt.Println("Cat Move ", distance) return true } type Dog struct{ Name string `custom:"name"` Age int `custom:"age"` Child []string `custom:"child"` } func (d *Dog) Move(distance int) bool { fmt.Print..
[ProtocolBuffer] ํ๋กํ ์ฝ ๋ฒํผ bytes ํ๋๋ฅผ json ๋ณํ ์ ์ฃผ์ ํ ์
[ProtocolBuffer] ํ๋กํ ์ฝ ๋ฒํผ bytes ํ๋๋ฅผ json ๋ณํ ์ ์ฃผ์ ํ ์
2019.06.20ํ๋กํ ์ฝ ๋ฒํผ์์ ์ฐ๋ฆฌ๊ฐ ์ ์ํ ๋ฉ์ธ์ง๋ฅผ jsonํ์
์ผ๋ก ๋ณํ ํ ๋ bytes ํ๋์ ๋ํด ์ฃผ์ ํ ์ ์ด ์๋ค. ์ผ๋ฐ์ ์ธ string ํ์
์ ์
๋ ฅํ ๋ฌธ์์ด์ ์ฐ๋ฆฌ๊ฐ ์๋ํ ๋๋ก json ๋ณํ์์๋ ์ ์ง๋ฅผ ํ๊ณ ์์ง๋ง, bytes ํ์
์ ์
๋ ฅํ ๋ฌธ์์ด์ json์ผ๋ก ๋ณํ ์ ๊ทธ๋๋ก ์ ์ง๋์ง ์๋๋ค. ๊ฐ๋จํ ํ
์คํธ๋ฅผ ์ํด Go์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์งํํ์๋ค. [user.proto] syntax = "proto3"; package message; message User { int64 userId = 1; string nickname = 2; bytes danmoji = 3; } ๋ฉ์ธ์ง์ ํฌ๋งท์ ์์ ๊ฐ๋ค. ์ด์ stringํ์
์ธ nicknameํ๋์, bytesํ์
์ธ danmojiํ๋์ ๋ฌธ์์ด์ ์ฑ์ ๋ฉ..
[VM] Virtual Box, XFS ๋ถํ
์ค๋ฅ (CentOS)
[VM] Virtual Box, XFS ๋ถํ ์ค๋ฅ (CentOS)
2019.06.19์ค๋๋ง์ Virtual Box๋ฅผ ํตํด ๊ฐ์ OS๋ฅผ ๋๋ฆด ๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด์ ๋ถํ
์ด ์ ๋ ๋๊ฐ ์๋ค. XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1757 of file fs/xfs/xfs_alloc.c. ... Corruption of in-memory data detected. Shutting down filesystem Please unmount the filesystem and rectify the problem(s) Failed to recover EFIs task mount:365 blocked for more than 120 seconds. ์ด๋ด ๋, ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ํด๊ฒฐ๋๋ค. xfs_repair -L /dev/ma..
[์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ํ๋ก๊ทธ๋จ์ ์คํ ๊ณผ์ /ํ๋์จ์ด ๊ตฌ์ฑ์ ์ฌ์ ๊ทผ
[์๋์ฐ์ฆ ์์คํ ํ๋ก๊ทธ๋๋ฐ] 1. ํ๋ก๊ทธ๋จ์ ์คํ ๊ณผ์ /ํ๋์จ์ด ๊ตฌ์ฑ์ ์ฌ์ ๊ทผ
2019.06.12์ด ํฌ์คํธ๋, ์ค์ฑ์ฐ ์ ์๋์ '๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ'์ ๋ฐํ์ผ๋ก ์ ์๊ฐ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ ๋ฆฌํ ํฌ์คํธ์
๋๋ค. ์ด์ ํฌ์คํธ 2019/05/29 - [Development/System] - [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ์์คํ
ํ๋ก๊ทธ๋๋ฐ, ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ, CPU [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ์์คํ
ํ๋ก๊ทธ๋๋ฐ, ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ, CPU ์ด ํฌ์คํธ๋, ์ค์ฑ์ฐ ์ ์๋์ '๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ'์ ๋ฐํ์ผ๋ก ์ ์๊ฐ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ ๋ฆฌํ ํฌ์คํธ์
๋๋ค. ๋ค์ ํฌ์คํธ 2019/06/12 - [Development/System] - [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋.. cjwoov.tistory.com ๋ชฉ์ฐจ ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ Stored Program Concept..
[VM] VirtualBox ๋คํธ์ํฌ ์ค์ ์์ธ ๋ถ์
[VM] VirtualBox ๋คํธ์ํฌ ์ค์ ์์ธ ๋ถ์
2019.06.03๋ณธ ํฌ์คํธ๋ https://technology.amis.nl/2018/07/27/virtualbox-networking-explained๋ฅผ ๋ฒ์ญ & ๊ฐ๊ณตํ์์ต๋๋ค. 1. ์๋ก 2. ๋คํธ์ํฌ ์ต์
2.1 ๋ด๋ถ ๋คํธ์ํฌ 2.2 NAT 2.3 NAT ๋คํธ์ํฌ 2.4 ํธ์คํธ ์ ์ฉ ์ด๋ํฐ 2.5 ๋ธ๋ฆฟ์ง ๋คํธ์ํฌ 1. ์๋ก VirtualBox์ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์ธํ
ํ๋ค ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋คํธ์ํฌ ์ค์ ์ ํด์ผ ํ๋ ์ํฉ์ ๋ง์ดํ๋ค. ๋ณดํต VirtualBox๋ฅผ ์ธํ
ํ๋ ๋ค๋ฅธ ํฌ์คํธ ๊ฐ์ข๋ค์ ๋ณด๋ฉด NAT๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ ํฌ์๋ฉํ๋ ๊ฒฝ์ฐ๋ ์๊ณ 2018/11/28 - [ETC] - [VM] Virtualbox ํฌํธํฌ์๋ฉ & ํธ์คํธ ๋คํธ์ํฌ ์ค์ [VM] Virtualbox ํฌํธํฌ์๋ฉ & ํธ์คํธ ๋คํธ์ํฌ ์ค์ (์ด ๊ธ์ Vi..
[์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ์์คํ
ํ๋ก๊ทธ๋๋ฐ, ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ, CPU
[์๋์ฐ์ฆ ์์คํ ํ๋ก๊ทธ๋๋ฐ] 1. ์์คํ ํ๋ก๊ทธ๋๋ฐ, ์ปดํจํฐ ํ๋์จ์ด ๊ตฌ์ฑ, CPU
2019.05.29์ด ํฌ์คํธ๋, ์ค์ฑ์ฐ ์ ์๋์ '๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ'์ ๋ฐํ์ผ๋ก ์ ์๊ฐ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ ๋ฆฌํ ํฌ์คํธ์
๋๋ค. ๋ค์ ํฌ์คํธ 2019/06/12 - [Development/System] - [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ํ๋ก๊ทธ๋จ์ ์คํ ๊ณผ์ /ํ๋์จ์ด ๊ตฌ์ฑ์ ์ฌ์ ๊ทผ [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ] 1. ํ๋ก๊ทธ๋จ์ ์คํ ๊ณผ์ /ํ๋์จ์ด ๊ตฌ์ฑ์ ์ฌ์ ๊ทผ ์ด ํฌ์คํธ๋, ์ค์ฑ์ฐ ์ ์๋์ '๋๋ฅผ ์๊ทนํ๋ ์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋๋ฐ'์ ๋ฐํ์ผ๋ก ์ ์๊ฐ์ ์ฌ๊ตฌ์ฑํ์ฌ ์ ๋ฆฌํ ํฌ์คํธ์
๋๋ค. ์ด์ ํฌ์คํธ 2019/05/29 - [Development/System] - [์๋์ฐ์ฆ ์์คํ
ํ๋ก๊ทธ๋.. cjwoov.tistory.com ๋ชฉ์ฐจ 1. ์์คํ
ํ๋ก๊ทธ๋๋ฐ์ด๋? 2. ์ปดํจํฐ ์์คํ
์ ์ฃผ์ ๊ตฌ์ฑ ์์ 3...
[Test] ์ ๋ ํ
์คํธ(Unit Test), ํตํฉ ํ
์คํธ(Integration Test), ๊ธฐ๋ฅ ํ
์คํธ(Functional Test)๋?
[Test] ์ ๋ ํ ์คํธ(Unit Test), ํตํฉ ํ ์คํธ(Integration Test), ๊ธฐ๋ฅ ํ ์คํธ(Functional Test)๋?
2019.05.14์ธ ์ค ์์ฝ ์ ๋ ํ
์คํธ: ํจ์ ํ๋ํ๋์ ๊ฐ์ด ์ฝ๋์ ์์ ๋ถ๋ถ์ ํ
์คํธํ๋ ๊ฒ ํตํฉ ํ
์คํธ: ์๋ก ๋ค๋ฅธ ์์คํ
๋ค์ ์ํธ์์ฉ์ด ์ ์ด๋ฃจ์ด ์ง๋์ง ํ
์คํธํ๋ ๊ฒ ๊ธฐ๋ฅ ํ
์คํธ: ์ฌ์ฉ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ํธ์์ฉ์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋์ง ํ
์คํธํ๋ ๊ฒ ์๋ก ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ด ์ฝ๋๊ฐ ์ ๋์ํ๊ณ ์๋์ง ๋ฒ๊ทธ๊ฐ ์๋์ง ํ
์คํธํ๊ณ ์ถ์ ๋๊ฐ ์๋ค. ๊ทธ๋ด ๋ '์ด๋ป๊ฒ ํ
์คํธ๋ฅผ ํ๋ฉด ์ข์๊น..?'๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋๊ณ ํ
์คํธ๋ฅผ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ข
๋ฅ์ ๋ํด ์ฐพ๊ฒ ๋๋ค. ํ
์คํธ๋ฅผ ๋ฒ์์ ๋ฐ๋ผ ๋ถ๋ฅํด๋ณด๋ฉด ์ ๋ ํ
์คํธ, ํตํฉ ํ
์คํธ, ๊ธฐ๋ฅ ํ
์คํธ๋ก ๋๋ ๋ณผ ์ ์๋ค. ๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์์ ๊ฐ์ด ํํํ ์ ์๋ค. Acceptance Test๋ Integration Test์ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ๋ ํ
์คํธ๊ฐ ๊ฐ์ฅ..
Go์์ ์ค์ํ๊ธฐ ์ฌ์ด ์ผ์ด์ค - defer, panic, recover
Go์์ ์ค์ํ๊ธฐ ์ฌ์ด ์ผ์ด์ค - defer, panic, recover
2019.04.242์ค ์์ฝ recover ๋ deferํจ์์ ์ํด ์ง์ ์ ์ผ๋ก ํธ์ถ๋๋ฉด ์๋๋ค. panic์ ์ค๋จ์ํฌ ํจ์์ depth๊ฐ n์ด๋ผ๋ฉด recover๋ n+1 ์์ ํธ์ถ๋์ด์ผ ํ๋ค. ์ฐฉ๊ฐํ๊ธฐ ์ฌ์ด ์ผ์ด์ค ๋ค๋ฅธ ์ธ์ด์ try-catch๋ฌธ๊ณผ ๋น์ทํ๊ฒ go์์๋ defer, panic, recover ํจํด์ ์ด์ฉํด์ ๋ฐ์ํ๋ ์์ธ ์ํฉ์ ์ ์ด ํ ์ ์๋ค. package main import ( "fmt" ) func main() { defer a() panic("panic!") } func a() { r := recover() fmt.Println("recoverd: ", r) fmt.Println("a called") } recoverd: panic! a called Program exited. ๋ง์ฝ ์ง์ฐ ํธ์ถ ..
[CentOS7] Nginx, PHP7, MySQL(MariaDB) ์ค์น ๋ฐ ์ธํ
ํ๊ธฐ
[CentOS7] Nginx, PHP7, MySQL(MariaDB) ์ค์น ๋ฐ ์ธํ ํ๊ธฐ
2018.12.05LEMP ์คํ LEMP์คํ์ด๋ Linux + Nginx + MySQL(MariaDB)๋ก ๊ตฌ์ฑํ์ฌ ๋์ ์น ์ดํ๋ฆฌ์ผ์ด์
๊ตฌ์ฑ์ ์ผ์ปซ๋ ๋ง์ด๋ค. ๋น์ทํ ๋ง๋ก LAMP์คํ์ด๋ผ๊ณ LEMP์คํ์์ Nginx๋์ Apache๋ก ๊ตฌ์ฑํ ์คํ๋ ์ญ์ ์ ๋ช
ํ๋ค. ์ด ๊ธ์์๋ LEMP ์คํ์ ์ค์นํ๋ ๋ฒ์ ์์ ํ๊ฒ ๋ค! ์๋ง ๋ฆฌ๋
์ค๋ฅผ ๋ค๋ฃจ๋ฉด์ ๊ฐ์ฅ ์ฒ์์ ๋๊ด์ ๊ฒช๋๋ฐ ๊ฐ๋ฐํ๊ฒฝ ์ธํ
์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ค์น ์์๊ฐ ๊ผฌ์ด๊ธฐ๋ง ํ๋๋ผ๋ ์ค์น๊ฐ ์๋๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์ฌ๋ฌ๋ชจ๋ก ๊ณจ์น๊ฐ ์ํ๋ค (๊ทธ๋์ docker๊ฐ์ ๊ฐ์ํ ๋๊ตฌ๋ฅผ ์ฐ๋๊ฑฐ์ง๋ง ใ
ใ
) Nginx ์ค์นํ๊ธฐ Nginx๋ ์น ์๋ฒ ์ข
๋ฅ ์ค ํ๋๋ก Apache ์น ์๋ฒ์ ๋๋ถ์ด ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ๋ง์ ์น์๋ฒ ์ค ํ๋๋ค! Nginx์ Apache๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฅธ๋ฐ ์ด ๊ธ์..
[UDP ํํ์นญ(Hole Punching)] - UDP ํํ์นญ(2/2)
[UDP ํํ์นญ(Hole Punching)] - UDP ํํ์นญ(2/2)
2018.12.042์ค ์์ฝ UDP ํํ์นญ์ ํตํด NAT๊ฐ ๊ตฌ์ฑ๋์ด์๋ ํธ์คํธ๋ผ๋ฆฌ ํต์ ์ด ๊ฐ๋ฅํ๋ค ํํ์นญ์ ์ํด์ ์ค๊ฐ์๋ฒ๊ฐ ํ์ํ๋ค UDP ํํ์นญ ์ด์ ๊ธ์์ NAT๋ก ์ธํด ์๋ก์ Public IP์ Port๋ฒํธ๋ฅผ ๋ชฐ๋ผ, P2P ํต์ ์ ํ๊ธฐ๊ฐ ์ด๋ ต๋ค๊ณ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐ ํ ๊น? ๊ฐ๋จํ๋ค, ์ด ๊ธ์ ์ฃผ์ ๋๋ก UDP ํํ์นญ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ด๋ฌํ ๊ธฐ๊ณ๋ฅผ ์ค์ํ์์ ๋ณธ ์ ์ด ์์๊ฒ์ด๋ค. ๊ตฌ๋ฉ์ ๋ซ์ด์ฃผ๋ ๋
์์ธ๋ฐ UDP ํํ์นญ๋ ์๋ฏธ๋๋ก P2Pํต์ ์ ํ๊ธฐ ์ํด NAT์๋ค๊ฐ ํต๋ก(?)๊ฐ์ ๊ฒ์ ๋ซ์ด์ฃผ๋ ๊ธฐ๋ฒ์ ๋ปํ๋ค UDP ํํ์นญ์ ์ํด์ ์ค๊ฐ์๋ฒ๋ผ๋ ์กด์ฌ๊ฐ ํ์ํ๋ค. ์ค๊ฐ ์๋ฒ ์๋ ์์์์ IP ์ฒด๊ณ์ 300.300.300.300์ด๋ผ๋ IP๋ ์กด์ฌํ ์ ์์ต๋๋ค. (255๊ฐ ์ต๋ ์์น๊ธฐ ๋๋ฌธ) ..
[UDP ํํ์นญ(Hole Punching)] - NAT ๊ทธ๋ฆฌ๊ณ P2P(1/2)
[UDP ํํ์นญ(Hole Punching)] - NAT ๊ทธ๋ฆฌ๊ณ P2P(1/2)
2018.12.03์ค๋ช
์ 2์ค ์์ฝ NAT๋ ๋ด๋ถ ๋คํธ์ํฌ์์ ์ธ๋ถ ๋คํธ์ํฌ๋ก ํต์ ์ ํ ๋ IP๋ฅผ ๋ณํํ๋ ๊ธฐ์ ์ด๋ค. ๋ณดํต P2P ํ์์ ๊ฒ์์ ๋ง๋ค ๋ NAT๋๋ฌธ์ UDP ํํ์นญ์ด๋ ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํต์ ํ ์ ์๋๋ก ํ๋ค. P2P(Peer to Peer) ์คํํฌ๋ํํธ๊ฐ์ ๋์ ๊ฒ์์ ์๋๋ฐฉ๊ณผ ์ด๋ค ๊ตฌ์กฐ๋ก ํต์ ํ๋ฉด์ ํจํท์ ์ฃผ๊ณ ๋ฐ์๊น? ์์ ๊ฐ์ด ์ค๊ฐ์ ํน๋ณํ ์๋ฒ ์์ด ์ ์ ์ ์ ์ ๋ผ๋ฆฌ ์ง์ ์ ์ผ๋ก ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. (๋ฌผ๋ก ๋ก๊ทธ์ธ์ด๋ ์น/ํจ ๊ด๋ฆฌ ๋ฑ๋ฑ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ๊ฒ์์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ค) ์์ ๊ฐ์ด, ์ ์ ์ ์ ์ ๋ผ๋ฆฌ ํต์ ์ ํ๋ ๋ฐฉ์์ P2P(Peer to Peer)๋ผ๊ณ ํ๋ค. ๋ณดํต P2P ์คํ์ผ์ ๊ฒ์์์ ์ง์ฐ์ ์ต์ํ ํ๊ธฐ ์ํด UDP๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํต์ ์ ํ๋๋ฐ TCP๋ ๊ทธ๋ ์ง๋ง ํต์ ์ ํ๊ธฐ ์ํด์ ์๋ก..
[Command] ๋ฌธ์์ด ๊ฒ์์ ํตํด ํ์ผ ์ญ์ ์ํค๊ธฐ (exec)
[Command] ๋ฌธ์์ด ๊ฒ์์ ํตํด ํ์ผ ์ญ์ ์ํค๊ธฐ (exec)
2018.11.29์ค๋ช
์ 3์ค ์์ฝ find [๊ฒ์ ๊ฒฝ๋ก] -name [ํ์ผ ํจํด] -exec rm -rf {} \;find [๊ฒ์ ๊ฒฝ๋ก] -name [ํ์ผ ํจํด] ๋ช
๋ น์ด๋ ๊ฒ์ ๊ฒฝ๋ก๋ก ๋ถํฐ ํ์ผ ํจํด๋ค์ ์ฐพ๋ ๋ช
๋ น์ด๋ค.-exec ์ต์
์ดํ๋ find๋ก ์ฐพ์ ํ์ผ ๋ฆฌ์คํธ๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ช
๋ น์ด๋ค ๋ถ์ ๋ฆฌ๋
์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ๋ฅผ ๊ด๋ฆฌํ๋ค ๋ณด๋ฉด ๊ฐ๋ ์ด๋ฐ ์์ฒญ์ด ์ค๊ธฐ๋ ํ๋ค.. ํน์ ์๋ฒ ๊ด๋ฆฌ๋ฅผ ๋ ๋์๋๋ผ๋! ๋ด๊ฐ ๋๋ฌด ์ธ๋ฐ์๋ ํ์ผ์ ๋ง์ด ๋ฐ์์ ๋์คํฌ ์ฉ๋์ ํ๋ณดํ๊ณ ์ถ์ ๋๊ฐ ์๋ค. '์.. ๋ด๊ฐ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ๊ณณ๊ณณ์ *.torrent ํ์ผ์ ๋ค์ด ๋ฐ์๋๋ฐ ์ด๋ป๊ฒ ์ผ๊ด์ ์ผ๋ก ์ญ์ ํ์ง ใ
ใ
?' ๊ทธ๋ด ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ํ์ฉํ๋ฉด ์ข๋ค! 'find [๊ฒ์ ๊ฒฝ๋ก] -name [์ญ์ ํ ํ์ผ ํจํด] -exec rm -..