다음 코드가 계속 신경 쓰입니다:
어찌해도 왜 기간 내 작성된 게시글 수가 읽은 필수 게시글 비율을 곱한 뒤, 그 값이 최소값으로 처리되는지 이해가 되지 않습니다. 여기서 의도가 읽은 게시글의 비율이라면, 읽은 게시글 수 / 게시글 수를 곱한 값에 100을 곱하는 게 아닐까요?
마지막 x일 동안 게시글이 9개 있었고, 설정에서 요구하는 값이 2개라고 가정하면, 게시글 상한보다 작으므로 이 메서드가 단순히 2를 반환해야 하지 않을까요?
참고로 모든 값은 다음과 같습니다:
[2] pry(main)> TrustLevel3Requirements.num_posts_in_time_period.to_i
=> 9
[3] pry(main)> SiteSetting.tl3_requires_posts_read.to_f
=> 2.0
[4] pry(main)> (
[4] pry(main)> TrustLevel3Requirements.num_posts_in_time_period.to_i *
[4] pry(main)> (SiteSetting.tl3_requires_posts_read.to_f / 100.0)
[4] pry(main)> ).round
=> 0
[5] pry(main)> 9*0.02
=> 0.18
[6] pry(main)> SiteSetting.tl3_requires_posts_read_cap
=> 2000
메서드의 의도를 잘못 이해하고 있는 건가요? 감사합니다.
mcwumbly
(Dave McClure)
2
tl3_requires_posts_read 사이트 설정은 백분율입니다. 예를 들어 10이라고 가정해 봅시다. 상한선(cap)은 요구 사항을 합리적인 수준으로 제한합니다. 예를 들어 100이라고 가정해 봅시다.
“사용자는 해당 기간 동안 게시된 모든 게시물의 **10%**를 읽어야 하지만, 최대 100개를 초과할 수 없습니다.”
해당 기간 동안 500개의 게시물이 작성되었다고 가정해 봅시다.
이 경우 요구 사항을 충족하려면 50개의 게시물을 읽어야 합니다(해당 게시물의 10%).
산술 연산은 500 * (10.0/100.0)으로 수행되어 결과 50을 얻습니다.
상한선은 상한값을 설정합니다.
상한선이 50보다 크다면(예: 100), 이는 영향을 미치지 않습니다.
[50, 100].min은 50을 반환합니다.
하지만 한 달에 100,000개의 게시물이 있다면 어떻게 될까요? 이 경우 상한선이 없다면 요구 사항을 충족하려면 누군가가 10,000개의 게시물을 읽어야 합니다.
100이라는 상한선이 이를 통제합니다.
[100000 * (10.0/100.0), 100].min은 100을 반환합니다.
이해가 되시나요?
음, 다음에는 설정 설명을 더 꼼꼼히 읽어야겠네요. 완전히 이해했어요, 감사합니다!
mcwumbly
(Dave McClure)
4
네, tl3_requires_posts_read은 tl3_requires_percent_posts_read처럼 이름 지어지는 것이 더 나을 수 있습니다.