Lua 삽질

지난 금요일에 얼마 전까지 작성한 프로그램의 성능평가 스크립트를 짰다. 간만의 Lua 프로그래밍인 듯.

팀 동료가 작성한 프레임웍 위에 돌릴 스크립트를 짰는데 적은 부하를 걸었더니 잘 돌더라. 근데 부하를 좀 키웠더니 기괴한 동작을 하기 시작한다.

원인은 아래 코드탓.

    while True
    begin
        -- wait for some packet
    end

이런 코드로 특정 응답이 오길기다리는 부분을 몇 개 넣었다. 하지만 버그는 여깄다. Lua의 참 값에 해당하는 상수는 ‘true’다. ‘True’가 아님. Orz
Lua는 거의 쓸 일이 없었고 python을 주로 쓰다보니 이런 불상사가 — python의 참 값 상수는 True.

그냥 while 1 처럼 쓰는게 정신건강(?)에 더 좋은가?

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

13 Comments

    • lua 문법하고 동작이 정확히는 기억이 안 나는데, 아마 저런 꼴의 루프가 나오면 True는 비어 있는 전역 변수로 간주되서 while null인 것처럼 아무 일 없이 돌아갈겁니다. ;;

    • summerlight 님 말씀대로입니다. 그냥 false 로 간주대서 루프 돌지 않고 지나가버립니다.

      에러가 나면 이걸 받아볼 수 있는 환경인데, 그냥 루프도 안돌고 지나갔으니 알 도리가 없는 것이지요;

  1. 루아의 쉣구린 부분……….
    그러나 루아의 etc 패키지에 있는 strict.lua를 스크립트에 포함시키면 전역에서 초기화되지 않은 변수에 읽기/쓰기를 못하게 됩니다. 난 이거 없이는 루아 코딩 안 함

  2. 이전 회사의 모 팀에서는 에디터에 자동완성 기능까지 넣어놨는데, 그걸로 모잘라서, 아예 lua static analysis 툴을 만들었다고 하더군요. ;;;

Leave a Reply