인생살이를 서로 덜 힘드는 것으로 만들려 애쓰지 않는다면 우리는 무엇 때문에 사는가 ―조지 엘리어트
[[Include(분류/script)]]
| luausers-kr 구독하기 | |
| 지난글 열람 at groups.google.com | ||
1 소개 #
- "스크립트"를 임베딩하는 게임시스템 제작은 상당히 구조적이고 재활용적인 코딩을 하게 만든다는 점에서 매력이 있는 것 같습니다. (불타오르고 있는~ 활활~ 간단히 말해 재미있습니다! o^.^o)
3 루아가 뭐지? #
- lua/소개논문 - DDJ에 96년도에 실렸던 루아에 대한 소개글 번역입니다.
- Lua vs Python - 루아와 요즘 상당히 각광받는 파이선과의 성능비교입니다. 혹시나 파이선 좋아하시는 분들은 그런가보군하고 읽어주시길...
4 lua 소식 #
http://www.lua.org/ftp/lua-5.1.1.tar.gz - 현재 정식 버전인 lua 5.1.1 다운로드링크.
http://www.lua.org/work/lua-5.0.3-rc1.tar.gz - 5.0 버전의 패치도 진행중이네요.
http://www.lua.org/pil/ - programming in lua. 루아 관련 최초의 책이죠. 온라인으로 공개했네요. 5.1버전과는 API쪽과 문법에서 다소 차이가 있긴하지만 꼭 읽어봐야할 문서입니다. -> 2nd가 출간되었습니다!
http://www.lua.org/pil2/
http://www.lua.org/ftp/refman-5.0.pdf - 레퍼런스 메뉴얼
http://sourceforge.net/project/showfiles.php?group_id=32250 - short 레퍼런스 (루아5)
- lua 5.0 beta의 비호환성요소들 - 메일링리스트에서 퍼왔습니다.
- Lua/5.0.2/Note - 5.0.2버전에서의 경험담.
lua 5 내부구조 - lua의 동작원리를 설명한 논문
5 링크 #
http://www.lua.org - 루아 스크립트 홈페이지
http://luabinaries.luaforge.net/ - 소스를 받아 빌드하기 귀찮으신분은 여기에서 빌드된 버전을 받을수 있습니다. 5.0.2 만 있네요.
http://lua-users.org/wiki/ - 루아 사용자 그룹. 위키위키로 되어있음.
http://sourceforge.net/project/showfiles.php?group_id=32250 - lua-users.org의 소스포지 자료실. API 퀵 레퍼런스, 스크립트 퀵 레퍼런스 문서있음.
http://archive.neotonic.com/archive/lua-l
http://lua-users.org/lists/lua-l/ - 메일링 아카이브 검색.
http://www.keplerproject.org/ - 각종 루아5 관련 프로젝트를 통합하여 운영하는 곳. boost 라이브러리와 비슷한 방식인듯.
http://www.lua.org/ftp/ - 루아의 베타 배포본 및 레퍼런스 메뉴얼을 받아볼 수 있는 곳 입니다.
http://www.lua.inf.puc-rio.br/luanet/luainterface - 닷넷프레임워크의 CLR과 루아와의 바인딩을 쉽게 해주는 라이브러리입니다. C# 같은 언어와 루아를 섞어쓸때 유용합니다. 꽤 안정적입니다.
http://www.gpgstudy.com/gpgiki/LuaLanguage - GpGiki 내의 루아 언어에 대한 설명입니다.
http://www.gpgstudy.com/gpgiki/LuaStudy - GpGiki 내의 루아 스터디 위키 공간.
http://members.chello.nl/~w.couwenberg/ - lua 아티클 몇가지.
http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/ - Luiz Henrique de Figueiredo라는 사람의 lua5기반 라이브러리 모음. (대단!)
http://www.jucs.org/jucs_9_8/luats_a_reactive_event - 루아 Tuple Space (luaTS)에 대한 논문. 흥미로운 구조. 비슷한 것으로 SUN의 javaspace가 있죠.
http://lua-users.org/lists/lua-l/2003-06/msg00416.html - 전역 환경테이블 교체기법.
6 바인딩 #
http://lua-users.org/wiki/CppBindingWithLunar - C++ 인스턴스를 바인딩하는데는 가장 간편한 방법일 듯 합니다. 버전 5.0 이상.
- Luabind - C++ 코드를 루아로 올려주는 템플릿 라이브러리. boost.python에 영향을 받은 듯. 루아 5 전용.
LuaPlus - C++ 바인딩 라이브러리. 표준 루아 소스를 다소 변형시켜 구현하고 있다는 것이 흠. (즉, 루아자체가 리뉴얼되면 호환성 미지수. 업글이 한박자 늦을듯.)
http://www.tecgraf.puc-rio.br/~celes/tolua/ - C++ 바인딩 툴. 별도의 전처리과정 필요. 루아 5 지원.
http://www.codenix.com/~tolua/ - tolua++. 기본 tolua를 확장한 것. 루아 5 지원.
- CaLua 이야기 - C <-> 루아 바인딩 라이브러리. 꽤 사용하기 편함. LGPL 라이센스. 루아 5 전용.
7 주요 확장 라이브러리 #
http://luajit.luaforge.net/LuaCoco-51w6.tar.gz - coroutine을 C 스택기반으로 다시 구현한 라이브러리. 기존 coroutine과 100% API 호환되며, 대부분의 플렛폼에서 사용가능. 성능향상이 꽤 좋다.
http://luajit.luaforge.net - lua용 JIT 컴파일러 프로젝트. 2005년 8월 발표예정. 기존의 lua 코드를 native code로 컴파일해준다. 2~10배 성능향상이 기대된다고 함.
lua lanes - 병렬처리 지원 쓰레드 라이브러리. erlang의 프로세스와 비슷하게 루아를 사용할 수 있다.
http://luaforge.net/projects/lrexlib/ - 정규표현식 확장 라이브러리. PCRE 지원.
http://www.tecgraf.puc-rio.br/luasocket/ - socket 뿐만 아니라 HTTP, FTP관련 프로토콜 처리도 구현한 확장 라이브러리. select()를 멀티플렉서로 사용하므로 대규모 서버 코딩에 사용하기에는 무리가 있다. P2P정도에는 알맞을 듯. 일부를 lua로 작성한 것이 특이하다. 현재 2.0 베타2.
http://www.tecgraf.puc-rio.br/~diego/luathreads/ - luathread. 루아상에서 멀티쓰레드 기능 및 동기화기능 제공. 현재 mutex와 상태변수(conditional value)만 지원.
http://www.luascript.thersgb.net/index.htm - wxLua. wxWindows port.
- luaSQL - luasql. 루아에서 DB연결을 가능하게 해주는 라이브러리. mysql, postgresql, oracle 지원.
http://domingo.dad-it.com/lua-sqlite.whtm - sqlite 를 루아에서 사용가능하게 해주는 라이브러리.
http://mega.ist.utl.pt/~tngd/lua/lsqlite.tar.gz - 또다른 sqlite 바인딩 라이브러리. (lua5)
http://www.nessie.de/mroth/lua-sqlite3/ - sqlite3 바인딩.
http://luatask.luaforge.net/ - 일종의 쓰레드 라이브러리. 쓰레드간 통신에 루아를 사용한 것이 특징.
http://www.tecgraf.puc-rio.br/~celes/gllua/ - gllua. Opengl을 사용하게 해줌.
http://www.andreas-rozek.de/Lua/Distributions/index_en.html - 루아의 win32 포팅 및 tklua, gllua, luasocket을 담고 있는 사이트. (4.1a 기반)
http://www.tecgraf.puc-rio.br/cgilua/ - 루아 CGI 프로젝트. 웹서버에서 루아스크립트로 웹서비스를 하자! (3.2기반)
http://www.workspacewhiz.com/Other/LuaState/LuaState.html - C++ Wrapper중 하나. 좀 덩치가 큼. (4.1기반)
http://jove.prohosting.com/~philho/softwares/PhiLhoSoft/Lua/index.html - Win32용 배포본 사이트. (5.0alpha까지 있음.)
- LUA/Pickle - 파이선과 같은 다른 스크립트 언어에서도 많이 사용하는 직렬화 기법. 테이블을 포장해서 네트워크 전송가능한 문자열로 변환해주며, 역변환도 가능하게 해주는 소스코드.
http://www.telemidia.puc-rio.br/~alesio/alua/index.html - Alua. 이벤트 기반의 통신 구조를 구축하는 것이 목적. 뭐, 다른 네트워크 프레임워크에서도 흔히 쓰이는 기법이 되버렸죠.
http://lua-users.org/wiki/LuaPack - 펄에 이런 기능이 있다는데 제가 펄을 잘 안써봐서리...
어쨌든 쓸만한 라이브러리입니다. 간단한 이진화일을 읽어들이는데 유용할 듯.
http://www.tecgraf.puc-rio.br/~rcerq/luacom - lua상에서 active X 콘트롤을 억세스할 수 있게 하는 라이브러리입니다. 루아5지원가능.
http://www.keplerproject.org/luaexpat/ - C XML 라이브러리인 expat 바인딩 라이브러리. (lua5) expat 이야기 참조. 현재 expat에는 xmlparse.h화일을 사용하지 않으므로 lxplib.h부분을 다음과 같이 고쳐주어여 빌드됩니다.
... #include <assert.h> #include <stdlib.h> #include <string.h> - #include <xmlparse.h> ---- + #include <expat.h> #include <lua.h> #include <lauxlib.h> #include "lxplib.h" ...
http://www.keplerproject.org/luaxmlrpc/ - xmlrpc 루아 바인딩 구현(lua5) 그냥 lua 스크립트로 작성되어있음.
http://www.keplerproject.org/venv/ - 루아 가상 전역환경 테이블 교체 라이브러리. 루아 스크립트로만 작성됨. 간단한 아이디어이면서 필요할 때가 있는 기능이죠.
http://mega.ist.utl.pt/~tngd/lua/lzlib.tar.gz - zlib 바인딩 라이브러리. (lua5)
- luaDB - 루아용 ODBC 연결툴 - 오옷! 정말 유용한 공개 라이브러리입니다. 루아를 사용하시는 분은 이것을 사용하시면 그냥 루아자체가 ODBC대용이 됩니다. DB 연결부분을 한번이라도 코딩해보신 분은 그 유용함을 아실수 있을겁니다.
http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/srlua.tar.gz - 루아 스크립트를 컴파일한 후 인터프리터를 붙여서 실행화일로 만들어주는 툴. 소스 포함. 루아 5 전용.
http://www.keplerproject.org/lualogging/ - 루아 기반의 로깅기능 모듈. 간단하게 화일이나 기타 다른 기록 대상으로 로깅을 할수 있게 해줍니다. 네트워크나 클라이언트 콘솔에 루아를 붙여 사용하는 경우 유용할 듯.
http://www.keplerproject.org/copas/ - coroutine 기반의 demultiplexer. 성능은 미정이지만 아이디어는 좋다.
8 IDE #
- 개인적으로는 scite가 가장 유용합니다.
http://blua.sourceforge.net/ - WOW 에디팅용으로 개발된 듯한 lua IDE. 아직 화일은 정식릴리스되지 않음. java로 개발.
11 메뉴얼 #
- LUA 5.0 C API 메뉴얼 번역 - Lua 5.0에서는 이전 버젼과 많이 바뀌었더군요. (덕분에 프로젝트 중에 코드를 엎고 있답니다.
) 그래서 번역을 해보고 있습니다. 정식이 아니라 5.0 알파버젼을 기준으로 한 것임을 밝힙니다.
- LUA 5.0 auxlib 문서 - lua-users.org의 위키에서 퍼왔습니다. 표준 메뉴얼에는 설명이 생략되었지만 꽤 자주쓰이는 함수들이죠.
- LUA/메타테이블이야기 - Lua 5.0에서의 메타테이블에 대한 번역입니다. 프로그래밍 레퍼런스에서 추출해 정리했습니다.
- LUA/coroutine - 5.0beta 이후부터 사용가능한 coroutine에 대한 내용.
- C에서 Lua호출하기 - 파연님의 강요(?)로 작성해보았습니다.
- LUA/string라이브러리 - 문자열 관련 라이브러리 테이블인 string에 대한 부분만 정리, 번역했습니다.
- LUA/화일입출력 - 화일 입출력에 대해 간단히 정리.
- LUA 튜토리얼 - 자작 튜토리얼입니다.
12 주요 아티클들 #
- LUA Tutorial - 루아 튜토리얼.
- LUA FAQ - 루아에 대한 질문/응답 모음.
http://www.gpgstudy.com/gpgiki/LuaCppBindingTemplate - Lua 에 C++을 바인딩하기 위한 템플릿(GpGiki)
C++빌더에서 lua빌드방법
12.1 lua 관련 #
- 실시간 프로그램상에서의 LUA - 루아 다루기 팁.
- Lua/DoItYourselfCppBinding - C++ 클래스 인스턴스를 userdata로 바인딩하는 방법
- LUA 최적화 - 지역변수를 사용한 최적화
- Lua/OptimisingGarbageCollection - 실시간 어플리케이션(예를 들면 슈팅게임)에서 문제가 될 수 있는 gc에 대한 아티클입니다.
- LUA 이진 화일 입출력 예제 - LUA 5.0알파에서 실행되는 화일 복사 예제 코드입니다.
- LUA/LUA function의 참조를 C 언어상에서 저장했다가 다시 호출하기 - 메일링 리스트에서 퍼왔습니다.
- LUA/loadstring()을 이용한 동적 테이블 선언하기 - 문자열로 넘겨진 변수명으로 선언을 해버리는 방법입니다.
- LUA/VRML에서 정점 데이타 추출코드 - 아는 선배가 잠깐 부탁해서 작성해 본 예제입니다. 화일입출력 예제로서 좋은 보기가 될 듯하네요.
- LUA/컴파일된 코드청크 덤프하기 - 루아 배포본에 포함되어있는 test/luac.lua를 보고 정리해본 것입니다.
- LUA/API/청크로딩하기 - 루아 C API 중에서 청크로딩하는 부분만 번역한 것입니다.
- LUA/XML 파서만들기 - 루아 코드로만 간단하게 만든 xml 파서 예제.
- LUA/URLencode구현코드 - cgilua에서 퍼왔습니다.
- LUA/coroutine활용 - coroutine 활용법에 대한 논문이 lua 메인홈피에 있어서 요약해봅니다.
- Lua/API/참조 - pil 번역
- Lua/API/lua함수호출 - pil 번역
12.2 luabind 관련 #
- luabind/Cpp와 루아 클래스간 상호 참조 및 호출 예제 - 이전에 작성해본 간단한 테스트 코드입니다.
- luabind/미리 메모리 할당된 Cpp 인스턴스를 루아 스크립트상에 등록하기 - 메일링 리스트에서 퍼왔습니다.
- luabind/CPP 인스턴스의 포인터를 gc당하지 않게 루아에 등록하는 예제 - &연산자를 사용하여 레퍼런스로 넘기면 되더군요.
- luabind/object에 nil값 저장하기 - 가끔 경우에 따라 일반 값이 아닌 nil값을 반환하고 싶을때가 있습니다. 그 때 사용하는 방법.
- luabind/특정 CPP 클래스에 루아 함수 콜백을 지정하는 방법 - C++ 객체내에서 특정 메소드만을 루아 함수로 지정하고자 할때 유용한 방법.
- luabind/property로 루아 테이블을 반환하기 - 실시간 효율은 다소 떨어지지만 이렇게 만들면 스크립트상의 가독성이 높아집니다.
- luabind/루아문자열에관한여러가지 - 널문자 포함여부에 관한 내용입니다.
http://lua-users.org/wiki/FiltersSourcesAndSinks
14 patch #
- 루아자체가 오픈소스라 일부기능을 고치면 꽤 쓸만한 부분이 있더군요. lua-user 위키에서 배껴와 정리합니다.
- Lua/patch/rubylikeself - ruby 스크립트의 @ 연산자 활용을 lua에 적용한 패치
- Lua/patch/hexnumber - 0xFF 방식의 16진수 숫자표기를 가능하도록 한 패치.
http://lua-users.org/wiki/ResumableVmPatch - 기존 coroutine에 이식성을 희생하지 않고 몇가지 기능을 덧붙인 것. 표준에 포함되면 좋겠다.
5.1 work5 버전 전용.
http://lua-users.org/wiki/ImprovedCoroutinesPatch - (5.0.2) coroutine의 효율을 높인 패치. 완전히 새로운 API 제시.
15 기타 자료 #
http://lua-users.org/lists/lua-l/2005-03/msg00283.html - lua <-> xml C 함수 소스. tinyxml 사용.








