Skip to content
isdnetworks
Go back

빠진 것을 그냥 채우지 않았다

스테이지 CSV 60행 중 4행이 비어 있었다. 채우려다 멈췄다.

Table of contents

Open Table of contents

연속으로 비어 있었다

17번부터 20번까지가 비어 있었다. 흩어져 빠진 것이 아니라 연속이었다.

무작위로 빠졌으면 실수지만 연속으로 빠졌으면 이유가 있을 가능성이 높다. 그것이 걸려서 채우기 전에 물어봤다.

왜 비었는지 물어봤다

그 구간은 아직 안 만들었다는 답이었다. 만들 예정이지만 정해진 것이 없었다.

채워 넣었으면 만들어진 것처럼 보였을 것이다. 빈 것과 안 만든 것은 다르고 채우는 순간 그 구분이 사라진다.

안 만든 것으로 표시했다

길이 셋이었다. 적당한 값으로 채우면 만들어진 것처럼 보이고 행을 지우면 번호가 끊기며 안 만든 것으로 표시하면 지금 상태가 그대로 드러난다.

세 번째로 했다. 상태를 StageState 로 두고 화면에서 준비 중으로 표시하며 눌러도 안 들어가게 했다.

행을 지우지 않은 것은 번호 때문이었다. 지우면 16 다음이 21이 되고 나중에 그 구간을 만들 때 번호를 다시 매기게 되는데 저장된 진행 상황이 번호를 쓰고 있어 어긋난다. 비워 두는 것과 없애는 것을 갈라야 했다.

읽는 쪽이 빈 값을 어떻게 다루는지도 봤다. atoi 에 빈 문자열을 주면 0을 돌려주고 실패했다는 말은 없다. 적이 0마리인 스테이지가 그렇게 만들어진다. strtol 은 어디까지 읽었는지를 같이 주므로 그것으로 바꿨다. 준비 중인 것과 데이터가 깨진 것을 나눠서 둘 다 못 들어가되 원인이 구분되게 했다.

다른 파일과 세는 것

스테이지만 그런 것이 아닐 수 있어 다른 CSVawk 로 훑었다.

$ for f in *.csv; do
    echo -n "$f "; awk -F',' 'NF<3 || $2=="" {c++} END {print c+0}' "$f"
  done

몬스터 쪽에 12개가 비어 있었는데 물어보니 이건 만들었다가 뺀 것이었다. 같은 증상인데 이유가 달랐다. 뺀 것은 아직 아무 데서도 안 쓰고 있어 행을 지우기로 했다.

CSV 를 읽을 때 전체와 준비 중과 깨진 것을 세어 CCLOG 로 찍게도 했다. 숫자가 보이니 준비 중인 것이 줄어드는지가 드러나고 깨진 것이 0이 아니면 봐야 할 일이라는 것이 갈린다. 섞여 있으면 못 알아챈다.

정리


Share this post on:

Previous Post
메시지 형식을 직접 정하기
Next Post
건너뛴 이유를 안 남겨서 몰랐다