개인 자료란 (JE)

  서버 커뮤니티

Profile qsef1256 프로답변러

qsef1256 d87af76e09b84a0b925bd6dcc753a89a

Profile

강좌 자바 에디션(JE) 플러그인 기초

플러그인, 스크립트 질문 가이드: 어떻게 해야 제대로 질문을 할 수 있을까요?

2022.10.05 조회 수 1842 추천 수 5
분야 플러그인, 스크립트, 트리거 
장르 버그 해결, 정보전달 
게임버전 모든버전 
API 버킷, 스피곳, 페이퍼, 퍼퍼, 에어플레인, 슈가케인, 퍼퍼피쉬, 스펀지, 큐브라이트, 글로우킷, 포지, 패브릭, 퀼트 

 서론

한마포에 많은 분들이 질문을 올려주고 계십니다. 그런데 잘못된 질문으로 많은 시간 소모불필요한 소통 문제가 많이 발생하고 있습니다.


때마침 플러그인 쪽에는 제대로 된 질문 가이드가 없는 것 같아 이번 기회에 작성 해보고자 합니다.

이 강좌의 내용은 플러그인 및 스크립트 뿐만 아니라 모드, 타 언어를 포함한 개발 전반 질문에 유효합니다. "오류 올려주세요" 등의 답변을 많이 들은 분이라면, 잠깐 시간을 내어 읽어보시는 것을 추천 드립니다.

여기서 필요한 정보 중, 제공할 수 없는 것들은 올리지 않으셔도 됩니다. 예를 들어 오류나 로그가 없을 경우, 당연히 올릴 수 없으므로 대신 이러한 사유로 오류나 로그가 없다는 사실을 적어주셔야 합니다.


 요약

  • 코드를 올려주세요
  • 오류를 올려주세요
  • 로그를 올려주세요
  • 환경을 올려주세요
  • 의도를 적어주세요
  • 시도를 올려주세요
  • 지점을 올려주세요
  • 먼저 검색 해보세요


1. 재현 가능성

간단히 말해서, 모든 기술 질문은 "재현 가능" 해야 합니다. 질문에 대한 불평이 나오는 이유는, 궁극적으로는 질문 글에 올린 정보 만을 가지고 문제 상황을 재현해 내는 게 불가능 하기 때문입니다.


재현 가능성이란 어려운 용어가 아닙니다. 답변자가 질문자의 현재 상황을 추측하거나 직접 재현할 수만 있으면 됩니다.


2. 코드를 올려주세요

제일 일반적인 방법은 코드를 전부 올리는 것입니다. 왜 전부냐면, 오류가 거기서 나는 것처럼 보여도 사실은 거기서 오류가 발생하는 게 아닐 수 있기 때문입니다. 코드를 전부 올리면 논리적인 오류인 경우에도 어느 정도 추측이 가능하고, 코드 간에 간섭이 벌어지는 등 복잡한 오류가 나와도 확인해볼 수 있습니다.


본인이 어느 정도 문제를 알고 있고, 다른 곳에서 발생했을 가능성이 없다 생각되는 경우에는 관계없는 코드는 생략하셔도 좋습니다. 다만, 그로 인한 정확도 하락은 감수하셔야 합니다.


코드를 올리는 것이 불가능한 상황에서는 올리지 않으셔도 됩니다. 예를 들어 남이 만든 플러그인이라서 소스 코드를 제공할 수 없는 경우, 오류와 발생 상황 만을 올려주시면 됩니다. (단, 이 경우에는 문제 해결에 한계가 있을 수밖에 없습니다)


본인 코드이지만 보안 상/라이선스 등 여러 이유로 코드를 올리는 게 불가능할 경우가 있을 수 있습니다. 그런 경우에는 오류가 발생하는 상황 만을 담은 "샘플 프로젝트/코드" 를 제작해야 합니다. 이것 역시 불가능 한 경우에는 사실상 외부인이 개입하기 힘든 문제이기에, 내부적으로 해결 하셔야 합니다. 


3. 오류를 올려주세요

코드 공개와 함께 제일 확실한 방법이 바로 오류 내용전부 올리는 것입니다. 왜 또 전부냐면, 대부분의 오류는 발생 위치 정보를 담은 Stacktrace가 오류 내용에 딸려 나오고, 이를 전부 확인하는 것이 필요하기 때문입니다.


사실, 대부분의 문제는 단순히 오류 내용을 올리는 선에서도 파악이 가능합니다. 오류 내용은 디버깅을 위해 만들어져 있기 때문에, 필연적으로 중요한 정보를 포함하고 있습니다 :D 이걸 안 지키는 오류 메시지가 가끔 있긴 한데 곧 버그 덩어리에 얻어맞고 고치게 되더라고요

4. 의도를 적어주세요

https://namu.wiki/w/XY%20문제
사실, 코드와 오류 내용만 가지고서 당장 눈 앞에 놓인 문제를 해결 할 수는 있지만, 전혀 엉뚱한 일을 하고 있을 수도 있습니다!


개발이란 건 생각보다 매우 복잡하기 때문에, 누구나 실수를 합니다. 질문이라고 실수를 안 한다는 보장은 없습니다.

그런데 질문의 의도를 제대로 적지 않는다면, 실제 해결책을 놔두고 이상한 걸 물어보거나(1종 XY 문제), 답변이 이상하게 돌아와도(2종 XY 문제) 답변자는 이를 알 길이 없습니다. 답변자는 질문자 님의 컴퓨터에 백도어 같은 프로그램이 없습니다 :(


5. 먼저 검색 해보세요

! https://www.google.com/


구글은 개발자의 친구입니다. 오류 내용의 맨 첫 번째 줄만 검색하면, 해결 법이 순식간에 나옵니다! 실제로 제가 답변할 때 주로 쓰는 방식이기도 합니다. 한마포에 올라오는 매우 많은 질문들이 구글 검색으로 바로 해결될 수 있습니다. (제 한마포 포인트에서 1000 포인트 정도는 구글이 준 겁니다)


만약, 구글에서 제대로 된 답변이 안 나올 정도로 복잡한 문제를 만나고 있다면, 키워드를 줄이거나, 공식 Documentation (사용 설명서) 에서 찾아보거나, 비슷한 질문들로 발생 원인을 추측 하는 방법이 있습니다.


아, 참고로 네이버, , 다음은 별로 도움이 안됩니다.


6. 시도를 올려주세요

문제 해결을 위해 무엇을 시도했는지는 생각보다 오류 파악에 중요한 역할을 합니다.

  1. 그 자체로 의도 파악에 도움 주고,
  2. 이러한 시도가 효과가 없을 것이라는 어느 정도의 보장을 주며,
  3. 해당 시도가 실패했다는 것 자체에서 정보를 얻을 수 있고,
  4. 부가 적으로 질문자가 이 문제에 얼마나 진지한 지 태도를 보일 수 있기 때문입니다. 가는 말이 고우면 오는 말이 고운 법이에요!!!


이걸 제대로 올리지 않는다면 "~는 해봤냐"는 식의 답변이 달릴 수도 있습니다. 이미 이걸 해봤다면 이는 당연히 시간 낭비입니다.


7. 지점을 올려주세요

만약 올리고자 하는 문제가 오류가 발생하진 않지만 원하는 대로 동작하지 않는 "논리적 오류" (버그) 일 경우, 원하는 대로 작동하지 않는 지점과 변수 값을 올려주셔야 합니다. 실제로 디버거가 하는 일은 특정 시점의 변수 값들을 싹 보여주는 겁니다!


올바르지 않을 것으로 의심되는 값을 확인해보면 답변자도 도움이 되지만, 굳이 질문을 해보지 않고 서도 원인을 알 수도 있습니다.


8. 로그를 올려주세요

활동 가이드에도 나와있는 내용이지만, 로그 파일 역시 오류 내용 못지 않게 중요합니다. 로그 파일에는 잠재적인 오류인 경고들과, 대략적인 현재 상황, 기타 문제 해결에 도움 될 만한 정보들을 포함하고 있습니다. 따라서 로그는 제 2의 오류 내용으로 보시는 것이 맞습니다.


9. 환경을 올려주세요

필수는 아니지만, 현재 환경이 문제에 영향을 줄 수 있을 경우 환경 역시 명시를 하는 것이 좋습니다. 예를 들어 C언어의 경우 특성 상 운영체제의 영향을 어느 정도 받습니다. 이런 경우에는 현재 사용 중인 운영체제를 명시해야 할 수도 있습니다.


10. 기타 자주 하는 실수들

위 내용을 모두 지킨다면 사실 크게 문제 되는 내용은 아니지만, 자주 하는 실수들을 정리해보겠습니다.

  1. 카테고리 미스: 일반적으로 카테고리는 해당 분야의 전문가들이 보고 있기 때문에 이를 잘못 적으면 전문가들의 도움을 받지 못하는 것은 물론이고, 질문 글이 삭제되거나 제제를 당할 수 있습니다. 올리기 전에 한번 더 확인해봅시다. 
  2. 질문하기 위해 질문: https://dontasktoask.com/ko/ "~ 아시는 분 있나요?" 종류의 질문은 바람직한 질문이 아닙니다. 그냥, 직접 궁금한 걸 물어보세요. 사실 이 질문은 위 가이드를 위반하는 질문이기 때문에 얻을 수 있는 게 없습니다 :(
  3. 일부 내용만 올림: 예를 들어, 코드만 올린 경우 답변자는 이 사람이 뭘 원하는 건지, 코드를 돌리라는 건지 알 수가 없습니다. 최소한 "오류, 코드, 의도" 를 포함하고 있어야 합니다.
  4. 들여쓰기 미스: 코드를 올릴 때 들여쓰기를 안 하고 올리는 경우가 있습니다. Java 등 중괄호를 사용하는 언어라면 단순한 미관 상의 문제지만, Python 같은 들여쓰기를 사용하는 언어의 경우 코드 해석 결과가 달라지는 등 큰 문제를 일으킬 수 있습니다. 한마포에 코드를 올릴 때는 단락 -> 코드 를 사용해주세요.


 마치며

http://catb.org/~esr/faqs/smart-questions.html 여기서 더 많은 정보를 얻고 싶다면 해당 링크를 읽어보시는 것을 추천합니다.


질문은 중요합니다. 세상 누구도 질문을 하지 않는 사람은 없습니다. 저 역시 수많은 질문을 해가며 지금의 위치에 있을 수 있었습니다. 질문을 하는 것은 부끄러운 일이 아니며, 오히려 권장되어야 합니다.

이 가이드가 답변자들과 질문자 님의 답답함을 해결하는 데 도움이 되면 좋겠습니다 :)

3개의 댓글

데드풀리오
2022.10.08

해당 게시글이 자료 게시판이나 질문 게시판에 공지로 올라가는것을 희망합니다

문곰
2023.07.15

좋은 글 감사합니다

Dilemma
2023.07.19

XY 문제 우선 해결이 가장 도움이 되는 방법 중 하나기도 합니다.

https://xyproblem.info

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0

/files/thumbnails/952/735/003/262x150.crop.jpg?20240303230423

소식

복잡한 설치 없이 마크 애드온을 즐겨보세요! 새로운 블록, 몹, 조합법 등!

도라

2024-03-03

0

/files/thumbnails/212/735/003/262x150.crop.jpg?20240303113438

레드스톤

성장속도 실험

GlassesFilm

2024-03-03

3