CSV - Lua Module
ftcsv ์ถ์ฒ
ftcsv ์ถ์ฒ
Intro LuaFun ์ ์ - LuaJit Hight Performance Functional Programming Library luajit์ ๋ด์ฅํจ์๋ฅผ ํ์ฅํ์ฌ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋๋๋ค. ํ๋์ฉ ๊ณต๋ถํด์ ํ์ฉํ๋ฉด ๋งค์ฐ ๊ฐ๋ ฅํ ํด์ด ๋ ๊ฒ์ด๋ค. Usage ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ $ git clone https://github.com/luafun/luafun.git $ cd luafun $ luajit -i > -- Functional style > require "fun" () > -- calculate sum(x for x^2 in 1..n) > n = 100 > print(reduce(operator.add, 0, map(function(x) return x^2 end, range(n)))) 328350 > -- Object-oriented style > local fun = require "fun" > -- calculate sum(x for x^2 in 1..n) > print(fun.range(n):map(function(x) return x^2 end):reduce(operator.add, 0)) 328350 Using the Library Links github https://github.com/luafun/luafun Document https://luafun.github.io/
Intro luaJit์ฉ Lua File System ๋ชจ๋ ffi๋ฅผ ์ด์ฉํ lfs์ด๋ฉฐ lua์ lfs ๋ชจ๋๊ณผ ๋๊ฐ๋ค. ํ์ผ์์คํ ์ ๋ค๋ฃจ๋ ํ์ฅ ๋ชจ๋์ด๋ค. ๋ฆฌ๋ ์ค ์ ์ฉ์ด๋ค. ์๋์ฐ์ฆ์ฉ์ ์๋ ๊นํ๋ธ์ ๊ฐ๋ฉด ์๋ด๊ฐ ์๋ค. ์ค์น luarocks๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ง์ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉ Links Github https://github.com/spacewander/luafilesystem
2023-08-11: rlwarp + readline์ ํ์ฉํ ํค์๋ ์์ฑ ๊ธฐ๋ฅ ์ถ๊ฐ Intro ์ฝ๋ฉ์ ํ๊ธฐ ์ ๋๋ ๋น ๋ฅธ ํ์ธ์ ์ํด ์ธํฐ์ํฐ๋ธ ๋ชจ๋๋ฅผ ์ฌ์ฉ ๊ฐ๋จํ ํ ์คํธ๋ ๋ช๊ฐ์ง ์คํ์ ํด๋ณด๋ ์ฉ๋๋ก์ ์ข๋ค. ilua๋ฅผ ์ฌ์ฉํ๋ฉด jupyter console, notebook ๋ฑ์ผ๋ก ํ์ฅํ ์ ์๋ค. Execute String $ lua -e 'print("hello world")' hello world Interactive Mode lua -i ๋๋ luajit -i ๋ก interactive mode๋ก ์ง์ -i ์ต์ ์ด ์์ด๋ ์ง์ ๊ฐ๋ฅ local ๋ณ์๊ฐ ๋ค์ ๋ผ์ธ์์ ์ธ์๋์ง ์๋๋ค. ์ฌ์ฉํ ๋ ์ฃผ์ $ lua -i -- ๋๋ luajit -i > local a = 'hello world' -- local ๋ณ์ ์ค์ > print(a) -- print nil -- ๊ฒฐ๊ณผ: nil > a = 'hello world' -- Global ๋ณ์ ์ค์ > print(a) -- print hello world -- ๊ฒฐ๊ณผ: hello world > os.exit() -- ์ข ๋ฃ: ๋๋ Ctrl+d, Ctrl+c Opening Lua File > f = assert(loadfile('foo.lua') -- luaํ์ผ ๋ก๋ > f() -- ์คํ > dofile('foo.lua') -- ๋ก๋ ๋ฐ ์คํ > m = require('mymodule') -- mymodule.lua ๋ชจ๋ ๋ก๋ > m.parse() -- ๋ชจ๋๋ด ํจ์ ์คํ Load Libary Example -- file 'lib1.lua' function norm(x,y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twice(x) return 2*x end > dofile('lib1.lua') -- load your library > n = norm(3.4, 1.0) -- using lib1.lua functions > print(twice(n)) -- using twice functions Command Line Arguments (-- /dev/null ์ต์ ์ฃผ๋ชฉ) $ lua -i -- /dev/null one two three > print(arg[1]) -- one > print(arg[2]) -- two > print(arg[3]) -- three > print(arg[0]) -- /dev/null Lua, LuaJit line completion like in bash bash์์ line completion๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ตฌํ rlwrap ํ์ฉ - -a:always-readline,-c:complete-filenames,-e:extra-char-after-completion $ sudo apt install rlwrap $ alias luajit='rlwrap -ac -e "" -pRed luajit' # add this line to ~/.bashrc $ luajit > = 2 + 2 4 > = 2 + 2 --> ํ์ดํค๋ฅผ ์ด์ฉํ์ฌ ์์ ๋ช ๋ น๋ผ์ธ์ ๋ถ๋ฌ ์ฌ ์ ์๋ค. rlwarp์ readline์ ํ์ฉํ ๋ช ๋ น์ด ์์ฑ: Dictionary ํ์ผ์ ๋ง๋ค๊ณ ์ฌ์ฉ. $ echo "print local assert string ..." > ~/.luadict $ alias luajit='rlwrap -b "" -f $HOME/.luadic -pRed -ca -e "" luajit' $ luajit > ass(-> Press Tab Key anc Check) iLua : with Jupyter Jupyter์ ๋ง๊ฐํ ์ง์์๋ ์ฝ์ํ ์ธํฐ์ํฐ๋ธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ฝ๋์์ฑ ๋ฐ vi edit mode ๊ทธ๋ฆฌ๊ณ ๋ณ์๋ฅผ ์ง์ ์ถ๋ ฅ๊ฐ๋ฅํ๋ค. ๋ฌผ๋ก ํน์ฑ์ local ๋ณ์๋ ์ญ์ ์ง์๋์ง ์๋๋ค. ํ์ฌ๋ก์๋ ๊ทธ๋ ๋ค. ~/.local ์ดํ์ jupyter ๋ฐ ilua๊ฐ ์ค์น๋๋ค. ์๋์ฒ๋ผ vi edit mode๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ฑ ํธ๋ฆฌํ๋ค. $ pip install ilua $ echo "c.ZMQTerminalInteractiveShell.editing_mode='vi'" > ~/.jupyter/jupyter_console_config.py $ jupyter console -h # help $ jupyter kernelspec list # ๋ด์ฅ ์ปค๋ ์คํ ํ์ธ $ ~/.local/bin/ilua -i lua[jit] # ์คํ $ echo "alias ilua='ilua -i luajit'" >> ~/.bashrc # luajit ์ ์ฉ alias $ source ~/.bashrc $ ilua Links https://www.lua.org/pil/1.1.html https://www.tutorialspoint.com/command-line-arguments-in-lua https://lua-users.org/wiki/InteractiveLua https://github.com/guysv/ilua https://jupyter-console.readthedocs.io/en/latest/config_options.html
Intro love๋ lua์์ ์ฌ์ฉํ ์ ์๋ 2D ๊ฒ์ ํ๋ ์์ํฌ์ด๋ค. ๊ฒ์์ ๋ง๋ค๋ ค๋ ๊ฒ์ ์๋๊ณ 2D ๊ทธ๋ํฝ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ์ํ๊ธฐ ์ํจ. ์์ ๋ชจ์ ์คํ์ด๋ ์๋ฎฌ๋ ์ด์ ์ฉ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ญ์ ์๊ณ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค. Install debian/ubuntu package install $ sudo apt install love # ํจํค์ง ์ค์น $ love --version # check version ubuntu ppa install: ์ต์ ๋ฒ์ ์ผ๋ก ์ค์น $ sudo add-apt-repository ppa:bartbes/love-stable $ sudo apt update $ sudo apt install love $ love --version Hello World $ mkdir ~/love-test # make dir for love application $ cd ~/love-test # goto dir $ cat <<EOF > main.lua # edit main.lua source file function love.draw() love.graphics.print("Hello World", 400, 300) end EOF $ love . # love <path> : ์คํ OR $ love ~/love-test # ํ๋ก์ ํธ ํด๋๋ช vim nvim ์ง์ ํ๋ฌ๊ทธ์ธ sumneko lua-language-server ๋ฅผ ์ค์นํ๊ณ ์ค์ ํด ์ฃผ๋ฉด ๋๋ค. ...