안전 결제자세히
- 패키지 범위 내 수정은 무료입니다.
- 납품 후 3일 이내에 응답하지 않으면 작업이 자동으로 승인됩니다.
결제 시 금액이 예치되며, 작업을 승인해야만 지급됩니다.

결과물 예시
코드 리뷰: 소규모 온라인 쇼핑몰의 주문 가져오기 파이썬 스크립트
코드가 하는 일
- 쇼핑몰에서 내보낸
orders.csv를 읽습니다. - 주문 줄마다
stock.xlsx에서 SKU로 상품을 찾아 수량을 뺍니다. - 바뀐 재고를 다시 저장하고 합계를
import_log.txt에 기록합니다.
구조가 명확하고 함수 이름도 잘 지어져 있습니다. 문제 대부분은 스크립트가 예상하지 못한 형태의 입력이 들어올 때 생깁니다.
버그와 취약점
| 번호 | 줄 | 심각도 | 내용 |
|---|---|---|---|
| 1 | 48 | 높음 | 같은 CSV를 두 번 가져올 수 있음. 이미 처리한 주문 번호를 확인하지 않음. 재고가 마이너스가 되는 가장 유력한 원인 |
| 2 | 72 | 높음 | 환불 주문의 빈 값이나 "2.0" 같은 값에서 int(row["qty"])가 오류로 멈춤 |
| 3 | 95 | 중간 | SKU 비교가 대소문자를 구분해서 "gt-101"과 "GT-101"을 다른 상품으로 처리 |
| 4 | 130 | 중간 | encoding="utf-8" 없이 파일을 열어 윈도우에서 한글 상품명이 깨짐 |
| 5 | 201 | 낮음 | 맨 except:가 실제 오류를 숨겨 로그가 쓸모없어짐 |
수정 코드(일부)
문제 1: 이미 가져온 주문 건너뛰기
processed = load_processed_ids("processed_orders.txt")
for row in reader:
if row["order_id"] in processed:
continue
# ... 기존 처리 로직 ...
processed.add(row["order_id"])
save_processed_ids("processed_orders.txt", processed)
이유: 같은 파일로 스크립트를 다시 실행해도 주문은 한 번만 반영됩니다.
문제 2: 수량을 안전하게 읽기
raw = (row.get("qty") or "").strip()
try:
qty = int(float(raw))
except ValueError:
log.warning("주문 %s: 잘못된 수량 %r, 건너뜀", row["order_id"], raw)
continue
이유: 환불이나 부분 취소 줄은 전체 작업을 멈추지 않고, 알아보기 쉬운 기록을 남긴 채 건너뜁니다.
문제 3: SKU 정규화
sku = row["sku"].strip().upper()
재고 딕셔너리를 만들 때도 같은 .strip().upper()를 적용하세요.
스타일과 가독성
process()가 90줄입니다.read_orders,apply_to_stock,write_report로 나누세요.row[7]처럼 숫자로 적은 열 번호는 헤더 이름으로 바꾸세요.
꼭 확인하세요: 각 수정 사항은 파일 사본으로 먼저 테스트하세요. 이번 리뷰는 코드를 읽고 진행했으며 실행은 하지 않았습니다.
의뢰인: 차 전문 쇼핑몰 운영자. 쇼핑몰에서 내려받은 주문 CSV를 재고 시트에 반영하는 310줄짜리 파이썬 스크립트를 직접 작성 문의 내용: "가끔 재고가 마이너스가 되고, 어떤 파일에서는 스크립트가 멈춰요."
고객과 모든 정보는 가상입니다.
서비스 소개
Roblox 게임은 Studio 플레이테스트에서는 드러나지 않는 방식으로 망가집니다. 클라이언트가 보내는 값을 그대로 믿는 RemoteEvent, 서버에서 실행해야 할 로직이 들어간 LocalScript, pcall과 재시도 없는 DataStore 호출, 끊지 않아서 서서히 메모리를 잡아먹는 연결 같은 것들입니다. Script, LocalScript, ModuleScript를 읽고 무엇이 서버에서, 무엇이 각 플레이어의 기기에서 실행되는지 설명하며, 익스플로잇 위험과 버그를 표시해 드립니다. 수정 코드 조각은 task.wait, 타입이 지정된 Luau, 서버 측 검사를 사용합니다.
포함 사항
- 제공 내용주문 페이지에 서면 리뷰를 드립니다. 게임에서 서버와 클라이언트가 나뉘는 방식, 중요도순으로 정리한 익스플로잇 위험과 버그, 수정된 Luau 코드 조각이 포함됩니다. 프리미엄에서는 코드를 ModuleScript로 정리하는 계획도 드립니다.
- 서버 또는 클라이언트각 스크립트를 올바른 위치에
- Remote 보안모든 요청에 대한 서버 검사
- DataStore 안전성pcall, 재시도, 퇴장 시 저장
- 메모리와 연결연결한 것은 반드시 해제
- 최신 Luautask 라이브러리와 타입 주석
진행 방식
- 1요청 사항스크립트와 Output 오류를 붙여 넣어 주세요
- 2분석서버 코드와 클라이언트 코드를 구분해 정리합니다
- 3검토위험, 버그, 수정 코드를 받으세요
준비해 주실 내용
텍스트나 스크린샷으로 붙여 넣은 스크립트와 각각의 Explorer 내 위치, 기능이 해야 할 동작, Output 창의 오류를 보내 주세요.
다음 내용을 여쭤봅니다:
- 기능은 무엇을 하나요?
- 각 스크립트는 어디에 있나요?
- 무엇이 잘못되며, Output 창에는 무엇이 나오나요?
- 게임이 이미 공개되어 있나요?
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
제 Team Create 세션에 참여해 주실 수 있나요?
아니요, 플레이스나 계정에는 참여하지 않습니다. 스크립트를 붙여 넣어 주시면, 수정 사항은 Studio와 비공개 서버에서 직접 테스트해 주세요.
이걸로 모든 익스플로이터를 막을 수 있나요?
어떤 코드도 그렇게 약속할 수는 없지만, 모든 클라이언트 요청을 서버에서 검사하면 가장 흔한 허점은 막을 수 있습니다.
어린 개발자에게도 맞나요?
네. 경험을 알려 주시면 설명을 쉽게, 단계별로 드립니다.