테빌
대표칭호 없음
roachkiss 74c0c903dbfa47169b610166c3acd5b0
다들 스크립트 변수가 다 거지같다 하는데
내가 왜 skript-yaml을 변수저장으로 쓰면 안되는지 알려드림.
일단 스크립트 변수도
수정될떄마다 무조건 csv에 넣는게 아니라
변수 저장 할떈 해시맵에 넣고, 서버 닫을떄 저장하는
최소한의 최적화는 됐을거잖아요?
대부분의 사람들이 yaml을 쓸떄는
쓸때마다 파일에 쓰고
yaml의 구조를 모르는 사람이 많다는 겁니다.
사람들은 스크립트 구조가 안좋다고만 하고 yaml을 쓰는데,
정작 님들이 쓰는 yaml이
변수에 저장할떄마다 쓰고 읽고 쓰고 읽고 쓰고 이러는게
최적화에 너무 안좋다는걸 모른다는 겁니다.
이걸 해결하기 위해선 initialize save 같은걸 써야 하는데,
(서버를 시작할떄 변수에 넣고 서버가 닫힐떄 변수에 있는 것들을 yaml로 저장하는것)
이걸 쓰려면 결국 님들이 싫어하는 변수를 써야합니다.
이걸 해결하기 위해 skript reflect를 사용해서 Hashmap에 넣고 뺄수도 있는데,
이럴꺼면 왜 스크립트를 씁니까 플러그인을 쓰지
스크립트는 편의성과 서버 개발 속도 상승을 위해서 쓰는겁니다
스크립트 변수 구조가 안좋다 뭐라 할꺼면 스크립트 뭐하러 씁니까
결론: 스크립트 yaml은 "변수 저장에" 쓰지 말자. yaml은 콘피그로 활용하면 좋지만 특히 스크립트에서는 yaml이 좋지 않아요.
qsef1256
2024.04.05놀랍게도,
일단 스크립트 변수도 수정될 때마다 무조건 csv에 넣는 게 아니라
이거 true 입니다. 수정될 때마다 넣어요.자세한 구현은 https://github.com/SkriptLang/Skript/blob/master/src/main/java/ch/njol/skript/variables/Variables.java 를 참고해보시고요. 물론 비동기 큐(changeQueue) 안에 넣고 작업하긴 하지만요. 근데 이 방식이 나쁜 건 아니에요, 이렇게 안 하면 서버 터질 때 마다 변수 전부 날아갑니다.
서버 닫을 때 저장하는 최소한의 최적화는 됐을 거잖아요?
이거 아닙니다. 물론 서버 닫을 때 한번 싹 저장하긴 하지만 그때만 저장하는 건 아니라는 거에요. 스크립트가 최적화에 안 좋은 이유는 변수 거치면서 나오는 오버헤드, 파일 구현에 따르는 상대적 성능 저하 때문이지 저장 방식 자체에 최적화 문제가 있는 건 아닙니다. (물론 트랜잭션 거는 것에 비하면 불안정합니다.)테빌
2024.04.08그렇네요
그냥 스크립트를 안쓰는게
테빌
2024.04.08일단 스크립트 변수도 수정될 때마다 무조건 csv에 넣는 게 아니라 이거 true 입니다. 수정될 때마다 넣어요.
이건 좀 충격이네요.
이제 스크립트를 더 좀 그렇게 하게 되었습니다
qsef1256
2024.04.05skript-yaml이 동기 작업이면 (소스 보고 왔는데 일단은 비동기로 보일만한 부분이 없네요), 이 지적은 어느 정도 유효한 것 같네요.