Lua Emoji - ๋ฃจ์•„ ์ด๋ชจ์ง€

์†Œ๊ฐœ ๐Ÿต GPT-4o mini์˜ ์„ค๋ช…์„ ์ธ์šฉํ•œ๋‹ค. ์ด๋ชจ์ง€๋Š” ๊ฐ์ •, ์‚ฌ๋ฌผ, ๋™๋ฌผ, ์Œ์‹, ํ™•๋™ ๋“ฑ์„ ํ‘œํ˜„ํ•˜๋Š” ์ž‘์€ ๊ทธ๋ฆผ ๋ฌธ์ž์ด๋‹ค. ์ฃผ๋กœ ๋””์ง€ํ„ธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋˜๋ฉด, ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€, ์†Œ์…œ ๋ฏธ๋””์–ด, ์ด๋ฉ”์ผ ๋“ฑ์—์„œ ๊ฐ์ •์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋‚ด์šฉ์„ ๊ฐ•์กฐํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. 1. ์—ญ์‚ฌ ์ด๋ชจ์ง€๋Š” 1990๋…„๋Œ€ ์ผ๋ณธ์—์„œ ์ฒ˜์Œ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ, โ€œ์ด๋ชจ์ง€"๋ผ๋Š” ์šฉ์–ด๋Š” ์ผ๋ณธ์–ด๋กœ โ€œ๊ทธ๋ฆผ ๋ฌธ์ž"๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 2010๋…„, ์ด๋ชจ์ง€๋Š” Unicode ํ‘œ์ค€์— ํฌํ•จ๋˜์–ด ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 2. ์ข…๋ฅ˜ ๊ฐ์ • ์ด๋ชจ์ง€: ๐Ÿ˜Š, ๐Ÿ˜‚, ๐Ÿ˜ข ๋“ฑ ๊ฐ์ •์„ ํ‘œํ˜„ํ•˜๋Š” ์ด๋ชจ์ง€. ์‚ฌ๋ฌผ ์ด๋ชจ์ง€: ๐Ÿ“ฑ (ํœด๋Œ€ํฐ), ๐ŸŽ (์‚ฌ๊ณผ) ๋“ฑ ๋ฌผ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ชจ์ง€. ๋™๋ฌผ ์ด๋ชจ์ง€: ๐Ÿถ (๊ฐ•์•„์ง€), ๐Ÿฑ (๊ณ ์–‘์ด) ๋“ฑ ๋™๋ฌผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ชจ์ง€. ์Œ์‹ ์ด๋ชจ์ง€: ๐Ÿ• (ํ”ผ์ž), ๐Ÿฃ (์ดˆ๋ฐฅ) ๋“ฑ ์Œ์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ชจ์ง€. ํ™œ๋™ ์ด๋ชจ์ง€: โšฝ (์ถ•๊ตฌ๊ณต), ๐ŸŽ‰ (์ถ•ํ•˜) ๋“ฑ ํ™œ๋™์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ชจ์ง€. 3. ์‚ฌ์šฉ ์ด๋ชจ์ง€๋Š” ๊ฐ์ •์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ํ…์ŠคํŠธ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ•ํ™”ํ•œ๋‹ค. ๋Œ€ํ™”์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ์œ ๋จธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋ชจ์ง€๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ๊ธฐ๊ธฐ์—์„œ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ‘œ์‹œ๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ, ๊ฐ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋””์ž์ธ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. 4. ๋ฌธํ™”์  ์ฐจ์ด ์ด๋ชจ์ง€๋Š” ๋ฌธํ™”์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์ด๋ชจ์ง€๊ฐ€ ํ•œ ๋ฌธํ™”์—์„œ๋Š” ๊ธ์ •์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฌธํ™”์—์„œ๋Š” ๋ถ€์ •์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. 5. ์ตœ์‹  ๋™ํ–ฅ ์ด๋ชจ์ง€๋Š” ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ์ด๋ชจ์ง€๊ฐ€ ๋งค๋…„ ์ถ”๊ฐ€๋œ๋‹ค. Unicode Consortium์€ ์ƒˆ๋กœ์šด ์ด๋ชจ์ง€๋ฅผ ์ œ์•ˆํ•˜๊ณ  ์Šน์ธํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋ชจ์ง€๋Š” ํ˜„๋Œ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์‚ฌ๋žŒ๋“ค ๊ฐ„์˜ ๊ฐ์ •๊ณผ ์ƒ๊ฐ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋„๊ตฌ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ๋‹ค. ...

2025-06-26 ยท 353 words

Zig๋กœ gcc/clang ์ปดํŒŒ์ผ๋Ÿฌ ๋Œ€์ฒดํ•˜๊ธฐ

last updated: {{ โ€œ1712680347โ€ | date: โ€œ%Y-%m-%d %H:%Mโ€ }} Intro zig๋กœ c ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค. zig์˜ ์žฅ์ ์€ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ๊ณผ ์•„ํ‚คํ…์ฒ˜์šฉ ์ปดํŒŒ์ผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. static, dynamic ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค. Linux, iOS, Windows ๋“ฑ ์—ฌ๋Ÿฌ OS ํ™˜๊ฒฝ ์ง€์›. x86, , x86-64, aarch64 ๋“ฑ ์•„ํ‚คํ…์ฒ˜ ์ง€์› Target List ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ ์›ํ•˜๋Š” ํ”Œ๋žซํผ, ์•„ํ‚คํ…์ณ๋ฅผ ๋จผ์ € ์ฐพ๋Š”๋‹ค. $ zig targets $ zig targets | grep x86 $ zig targets | grep x86-64 $ zig targets | grep aarch64 $ zig targets | grep linux $ zig targets | grep windows $ zig targets | grep macos x86, x86_64 - intel ๊ณ„์—ด aarch64 - arm ๊ณ„์—ด (raspberrypi) linux - Linux windows - Ms Windows macos - Mac OS Local Compile dynamic: Alpine Linux (x86_64) $ zig cc -o hello_dynamic hello.c $ file hello_dynamic hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, with debug_info, not stripped $ ./hello Hello World! static: Alpine Linux (x86_64) $ zig cc -o hello hello.c -target x86_64-linux-musl $ file hello ./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped $ ./hello Hello World! Cross Compile For windows $ zig cc -o hello.exe hello.c -target x86_64-windows-gnu $ file ./hello.exe hello: PE32+ executable (console) x86-64, for MS Windows, 7 sections Windows c:> .\hello.exe Hello World! For Linux dynamic with Gnu Libs $ zig cc -o hello hello.c -target x86_64-linux-gnu $ file ./hello.exe ./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.0.0, with debug_info, not stripped gnu-linux$ ./hello Hello World! For Linux Static with musl $ zig cc -o hello.exe hello.c -target x86_64-linux-gnu $ file ./hello.exe ./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped any-linux$ ./hello Hello World! Makefile or Build.sh ํ•ด๋‹น ํŒŒ์ผ์—์„œ gcc, clang ๋ถ€๋ถ„์„ zig cc๋กœ ์ˆ˜์ •ํ•œ๋‹ค. make ๋˜๋Š” ./Build.sh ์‹คํ–‰ Links zig cc: a Powerful Drop-In Replacement for GCC/Clang https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html

2024-04-03 ยท 313 words

Git-Crypt - github์— ๋™๊ธฐํ™”ํ•  ๋•Œ ์ž๋™ ์•”ํ˜ธํ™”

Intro Github์— ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆด ๋•Œ ์•”ํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด ์˜ฌ๋ฆด ๋•Œ์—๋Š” ์•”ํ˜ธํ™”ํ•ด์„œ ์˜ฌ๋ฆฌ๊ณ  ๋‹ค์šด๋กœ๋“œ ์‹œ์—๋Š” ๋ณตํ˜ธํ™” ํ•ด์ค€๋‹ค. ๋ณด์•ˆํ‚ค๋‚˜ ํŒจ์Šค์›Œ๋“œ, ์ค‘์š” ์„ค์ • ์ •๋ณด ๋“ฑ์ด ๊ณต๊ฐœ์šฉ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„๊ณต๊ฐœ์šฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ฆด ๋•Œ์—๋„ ์œ ์šฉํ•˜๋‹ค. ์•„์šธ๋Ÿฌ vimwiki๋‚˜ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•  ๋•Œ github๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ์—๋„ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค. Github ์ž์ฒด๊ฐ€ ํ•ดํ‚น๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , github์˜ ์ž๋ฃŒ๋Š” ๋ชจ๋‘ ๊นƒํ—ˆ๋ธŒ์˜ ์žฌ์‚ฐ์ด๋ฏ€๋กœ ๋‚ด ์ž๋ฃŒ๋ฅผ ๋ณดํ˜ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์•„๋ฌด๋ฆฌ ๋น„๊ณต๊ฐœ์šฉ์ด๋ผ ํ• ์ง€๋ผ๋„ ๊บผ๋ฆผ์งํ•˜๊ธฐ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด ๋‘๋ฉด ์ข‹์€ ์ ์€ PC๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์ž‘์—… ์žฅ์†Œ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋ชจ๋‘ ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐœ์ธ์ž๋ฃŒ๋ฅผ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ๊ฐœ์ธ์ž๋ฃŒ๋ฅผ ์—๋ฒ„๋…ธํŠธ๋‚˜ ๊ตฌ๊ธ€๊ณ„์ •์— ์ €์žฅํ•ด๋„ ๋˜๊ฒ ์ง€๋งŒ ์ด๊ณณ๋„ ๊ทผ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ์ƒํƒœ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์ž, ์ž‘๊ฐ€ ๋“ฑ์€ ์†์‰ฝ๊ฒŒ github๋ฅผ ํ†ตํ•ด ์ €์žฅ์†Œ๋ฅผ ๋‘๊ณ  ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ž‘๊ณ  ๊ฐ€๋ณ๊ณ  ์˜์กด์„ฑ๋„ ์—†๋Š” git-crypt๋ฅผ ํ™œ์šฉํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ์ƒ์ˆ ํ•˜๊ฒ ์œผ๋‚˜ ์ €์žฅ์†Œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์“ธ ๊ฒฝ์šฐ ๊ทธ ๋งŒํผ ๊ด€๋ฆฌํ•  ํ‚ค๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ๋”ฐ๋กœ ๋ณด๊ด€ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์•”ํ˜ธํ™”๊ฐ€ ํ•„์š”ํ•œ ํŒŒ์ผ์€ ๊ฐ€๊ธ‰์  ํ•œ ์ €์žฅ์†Œ์— ๋ชจ์œผ๊ณ  ํ•˜๋‚˜์˜ ํ‚ค๋งŒ ๋”ฐ๋กœ USB๋‚˜ ๊ธฐํƒ€ ์žฅ์†Œ์— ๋ณด๊ด€ํ•ด ๋‘๋Š” ๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค. ๋งŒ์•ฝ git-crypt์— ์˜ํ•ด ์ƒ๊ธด ํ‚ค๋„ ๊นƒํ—ˆ๋ธŒ์— ์ €์žฅํ•œ๋‹ค๋ฉด ์ž๊ธฐ ๋ชจ์ˆœ์— ๋น ์ง€๋ฏ€๋กœ ๋ณ„๋„๋กœ ๋ฐฑ์—… ๋ณด๊ด€ํ•ด์•ผ ํ•œ๋‹ค. Install $ sudo apt install git-crypt # Ubuntu, Debian $ doas apk add git-crypt # Alpine Using git-crypt ์ฃผ์˜์‚ฌํ•ญ: git-crypt๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „์˜ ๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™” ํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ github์—์„œ ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜ your_secret_file ๊ณผ your_secret_directory๋Š” ์ €์žฅ์†Œ ๋‚ด์˜ ์•”ํ˜ธํ™”ํ•  ํŒŒ์ผ ๋˜๋Š” ํด๋”. $ git clone git@github.com:<github_user>/<your_progject_name> $ cd <your_project_name> $ git-crypt init $ cat <<EOF > .gitattributes your_secret_file_name filter=git-crypt diff=git-crypt *.key filter=git-crypt diff=git-crypt your_secret_dir/** filter=git-crypt diff=git-crypt EOF $ echo "hello world" > your_secret_file $ echo "hello world" > your_secret_dir/file1 $ git add . && git commit "update files" && git push ์ž์‹ ์˜ ๊นƒํ—ˆ๋ธŒ ์ €์ •์†Œ์— ๊ฐ€์„œ ์˜ฌ๋ฆฐ ํŒŒ์ผ์ด ์•”ํ˜ธ์™€ ๋˜์—ˆ๋Š”์ง€ ๋กœ๊ทธ์ธํ•ด์„œ ํ™•์ธํ•œ๋‹ค. ๋ณดํ†ต์˜ ๊ฒฝ์šฐ ์œ„ ์„ค์ •์ด ์ž˜ ๋˜์—ˆ์œผ๋ฉด ํ‰์ƒ์‹œ ๋Œ€๋กœ git์„ ์‚ฌ์šฉํ•˜๋ฉด ์ €์žฅ์†Œ ๊ด€๋ฆฌ๊ฐ€ ๋œ๋‹ค. ์ƒ์„ฑ๋œ ์•”ํ˜ธํ‚ค ๊ด€๋ฆฌ ์œ„์˜ git-crypt init ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด .git/git-crypt/keys๋กœ ์ดˆ๊ธฐํ™”๋˜๊ณ  ํ‚ค๊ฐ€ ์ƒ์„ฑ, ๋ณด๊ด€๋œ๋‹ค. Symmetric Mode: ์ƒ์„ฑ๋œ ํ‚ค๋Š” ๋กœ์ปฌ์—๋งŒ ์กด์žฌํ•˜๋ฏ€๋กœ ์ด ํ‚ค๋ฅผ USB ๋“ฑ์— ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๊นƒํ—ˆ๋ธŒ ์ €์žฅ์†Œ๋ฅผ ๋‹ค์šด ๋ฐ›์€ ํ›„ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. GPG Mode: ๋˜ํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ํ‚ค๋ฅผ ์ถ”๊ฐ€์‹œ์ผœ ๊ทธ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. (์ž์‹  ํฌํ•จ) GPG Mode - ์ž์‹  ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์˜ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ $ git-crypt add-gpg-user <USER_ID> # ์ฃผ ์‚ฌ์šฉ์ž๋ชจ๋“œ: USER_ID is Public GPG key ID ... $ git clone git@github.com:<github_user>/<your_progject_name> # ํ—ˆ๋ฝ๋ฐ›์€ ์‚ฌ์šฉ์ž๋ชจ๋“œ $ cd <your_project_name> $ git-crypt unlock Symmetric Mode - ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž(๋ณดํ†ต ์ž๊ธฐ์ž์‹ )์ด ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• $ git-crypt export-key <path_to_your_keyfile> # ์ฃผ ์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค๋ฅผ ๋ฐฑ์—…ํ•˜๊ธฐ ... $ git clone git@github.com:<github_user>/<your_progject_name> # ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณตํ˜ธํ™” ํ•˜๊ธฐ $ cd <your_project_name> $ git-crypt unlock <path_to_your_keyfile> # ๋ฐฑ์—…ํ•ด๋‘” ํ‚คํŒŒ์ผ์„ ์ด์šฉํ•ด ๋ณตํ˜ธํ™”ํ•˜๊ธฐ ์ฐธ๊ณ ์‚ฌํ•ญ .gitattributes ํŒŒ์ผ ์ž์‹ ์€ ์•”ํ˜ธํ™”๋˜์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ๋ฉ”๋‰ด์–ผ์— ๋‚˜์™€ ์žˆ๋‹ค. .gitattributes ํŒŒ์ผ์— dir/**์—์„œ **์ด ๋‘ ๊ฐœ์ธ ์ด์œ ๋Š” ์ดํ•˜ ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ๋„ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ƒ๋‹นํžˆ ๋งŽ์€ ํŒŒ์ผ์ด๋‚˜ ํด๋”์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค. ์†Œ์ŠคํŒŒ์ผ์ด๋‚˜ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์•”ํ˜ธํ™” ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๊ณ  ์ด์ง„ํŒŒ์ผ์ด๋‚˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์—๋Š” ๊ทธ๋ฆฌ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. ํŒŒ์ผ์ด๋ฆ„์ด๋‚˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€์ •๋ณด๋Š” ์•”ํ˜ธํ™”ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ฆ‰ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™” ํ•œ๋‹ค. REFERENCE Git-Crypt Home - https://www.agwa.name/projects/git-crypt/ git-crypt github - https://github.com/AGWA/git-crypt managing secrets with git crypt - https://dzone.com/articles/managing-secrets-with-git-crypt

2023-08-27 ยท 483 words

gsl-shell - Luajit GNU Scientific Library Shell

Intro gsl-shell์€ GSL(GNU Scientific Library์— luajit์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. ๋งคํŠธ๋ฆญ์Šค, ๋ฒกํ„ฐ ๋ฐ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜ ๋“ฑ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ์ถœ๋ ฅ์„ ์ง€์›ํ•œ๋‹ค. luajit + ์ถ”๊ฐ€ ํ•จ์ˆ˜ ๋ฐ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋น„์Šทํ•œ ๋‹ค๋ฅธ ๋„๊ตฌ ์ค‘์— ๋งค์šฐ ์šฐ์ˆ˜ํ•œ ์—ฐ์‚ฐ ๋Šฅ๋ ฅ๊ณผ ์†๋„๋ฅผ ์ž๋ž‘ํ•œ๋‹ค. Install ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ง์ ‘ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๊นƒํ—ˆ๋ธŒ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ๋ฐ๋น„์•ˆ, ์šฐ๋ถ„ํˆฌ์—์„œ๋Š” GSL์™ธ์— gsl-shell์€ ํŒจํ‚ค์ง€๊ฐ€ ์—†๋‹ค. ์ฒ˜์Œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋นŒ๋“œ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๋‹ค์šด๋กœ๋“œ ๋ฆด๋ฆฌ์ฆˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋‹ˆ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•ด์„œ ์ ํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค. $ sudo apt install libgsl27 libgslcblas0 $ wget https://github.com/franko/gsl-shell/releases/download/v2.3.4/gsl-shell-dynamic-linux-x86-64.tar.gz $ tar xvfz gsl-shell-dynamic-linux-x86-64.tar.gz $ ls gsl-shell $ export PATH=$PATH:$HOME/gsl-shell/bin # ~/.bashrc์— ์ถ”๊ฐ€ ๋“ฑ๋ก $ gsl-shell # ์‹คํ–‰ GSL Shell 2.3.4 -- Copyright (C) 2009-2022 Francesco Abbate GNU Scientific Library -- Copyright (C) The GSL Team LuaJIT 2.0.5 -- Copyright (C) 2005-2022 Mike Pall. https://luajit.org/ JIT: ON CMOV SSE2 SSE3 SSE4.1 AMD fold cse dce fwd dse narrow loop abc sink fuse > # ๋‚˜๊ฐ€๊ธฐ(Ctrl+d) $ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• ๋Œ€ํ™”์‹์ด ์•„๋‹Œ ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ์•„๋ž˜ ๋ฐฉ๋ฒ•์™ธ์— #!/usr/bin/env gsl-shell์„ ์ฒซ ์ค„์— ๋„ฃ๊ณ  chmod๋กœ ์‹คํ–‰๊ถŒํ•œ์„ ์ฃผ์–ด ์ง์ ‘ ์‹คํ–‰ํ•ด๋„ ๋œ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ์ž๋ฅผ lua๋กœ ํ•˜๋Š” ๊ฒƒ์€ ํŽธ์ง‘๊ธฐ ๋“ฑ์—์„œ ๋ฌธ๋ฒ• ๊ฐ•์กฐ๋“ฑ์˜ ์ง€์›์„ ๋ฐ›๊ธฐ ์œ„ํ•จ๋„ ์žˆ๊ณ  lua์˜ ๋ฌธ๋ฒ•์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ lua๋‚˜ luajit์—์„œ๋Š” ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ์ •๋ฆฌํ•ด ๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. $ gsl-shell --help $ gsl-shell # ๋Œ€ํ™”์‹ ์‚ฌ์šฉ $ gsl-shell my-program.lua # ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์ด๋ ‡๊ฒŒ ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉด ๋œ๋‹ค. ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”๊ฐ€๋Š” ์ž์‹ ์—๊ฒŒ ๋‹ฌ๋ ธ๋‹ค. GSL์— ์–ด๋А์ •๋„ ์•„๋Š” ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋”์šฑ ์ˆ˜์›”ํ•  ๊ฒƒ์ด๋‹ค. ์ฐธ๊ณ ๋กœ ์„ค์น˜๋œ GSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€๋„ ๋‚˜์™€ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•œ๋‹ค. ๊ธฐํƒ€ ๋„์›€๋ง ๋ฌธ์„œ๋Œ€๋กœ use "math" ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. gsl-shell/share/gsl-shell/import.lua ์„ ์ˆ˜์ •ํ•œ๋‹ค. ... -- ์•„๋ž˜ ๋ฌธ์žฅ์„ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ  ๊ทธ ์•„๋ž˜ ๋ฌธ์žฅ์œผ๋กœ ๊ณ ์นœ๋‹ค. -- local level = getinfo(2, "") and 2 or 0 local level = 2 ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ ์‚ฌ์šฉ์‹œ์— rlwrap์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ๊ณผ ํ•จ์ˆ˜๋ฅผ ํŽธ์ง‘๊ธฐ์—์„œ ์ž๋™์™„์„ฑ, ๊ฒ€์ƒ‰ ๋“ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„์ง ๋ชจ๋ฅธ๋‹ค. ์ตœ์†Œํ•œ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์ถ”์ถœํ•ด์„œ vim ๋“ฑ๊ณผ ์—ฐ๋™ํ•˜๊ฑฐ๋‚˜ grep์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ•œ๋‹ค. ๋ฌธ์„œ์ž‘์„ฑ์‹œ ์ˆ˜ํ•™์‹ ํ‘œํ˜„ ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ(์Šคํฌ๋ฆฝํŠธ)๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ๋„์›€๋ง์ด๋‚˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋งˆํฌ๋‹ค์šด(markdown) ๋ฌธ์„œ์— latex ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•œ๋‹ค. ์ฆ‰, ๋ฌธ์žฅ ์ค‘์—๋Š” $์ˆ˜์‹$ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ์ˆ˜์‹์€ $$์ˆ˜์‹$$์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊นƒํ—ˆ๋ธŒ๋‚˜ ๊ธฐํƒ€ ์›นํŽ˜์ด์ง€์—์„œ ์ด๋ฅผ ์ž˜ ์ง€์›ํ•œ๋‹ค. vscode์—์„œ๋Š” markdown all in one ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ˆ˜ํ•™ํ‘œํ˜„์‹๋„ ์ง€์›ํ•œ๋‹ค. vim์—์„œ๋Š” hugo๋กœ ๋กœ์ปฌ์—์„œ ์„œ๋ฒ„๋ฅผ ๋„์–ด ์‹ค์‹œ๊ฐ„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ firefox์˜ markdown์ง€์› ๋ชจ๋“ˆ์ธ markdown viewer webtext๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ์‚ฌํ•ญ์€ ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์ •๋ฆฌํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. Links GSL Shell project page https://github.com/franko/gsl-shell/ GSL Documentation https://franko.github.io/gsl-shell/ Download Release https://github.com/franko/gsl-shell/releases/tag/v2.3.4

2023-02-01 ยท 405 words

JSON - Lua Module

Intro ๊ฒฐ๋ก ์€ lua cjson์ด ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค. ๊ทธ ๋‹ค์Œ์ด lunajson dkjson์€ ์ˆœ์ˆ˜ luaํŒŒ์ผ์ด๊ณ  ๋‹จ์ผ ํŒŒ์ผ์ด๋‹ค. ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” json.lua ์ด๋‹ค. ๋น ๋ฅด๋‹ค๊ณ  ํ•˜๋Š”๋ฐโ€ฆ ๋น„๊ต์  ์ตœ์‹ ์ด๋‹ค. cjson์€ ๋น ๋ฅด๋‚˜ ๋ชจ๋“ˆ ์ปดํŒŒ์ผ์ด ํ•„์š”ํ•˜๊ณ  lunajson์€ ๋‹ค์Œ์œผ๋กœ ๋น ๋ฅด๊ณ  ์ˆœ์ˆ˜ luaํŒŒ์ผ์ด์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค. dkjson์€ ์…‹ ์ค‘ ๊ฐ€์žฅ ํผํฌ๋จผ์Šค๊ฐ€ ๋‚ฎ์œผ๋‚˜ ๋‹จ์ผ ํŒŒ์ผ์ด๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋‹ค. Links https://github.com/grafi-tt/lunajson http://dkolf.de/src/dkjson-lua.fsl/home https://github.com/rxi/json.lua https://somedudesays.com/2019/12/using-json-with-lua

2022-11-07 ยท 55 words