모듈 토크:트랜스루더

Module talk

재추적 요청 편집

추가했습니다. nofollow=를 디세블로 합니다.'모듈'트랜스루더/샌드박스여기에는 주로 다음 두 가지 용도가 있습니다.

  1. 리다이렉트 페이지에는 흥미로운 정보가 포함되어 있어 변경될 때마다 복사하는 것이 귀찮을 수 있습니다.예: 사용자:Psihedelisto.
  2. 같은 페이지로 리다이렉트 할 때, 모든 Wikitext가 완전히 같기 때문에, 다음과 같이 할 수 있을 때 {{R shell}}을(를) 계속 입력해야 하는 것은 귀찮습니다.{{subst:#invoke:Transcluder main User:Psihedelisto nofollow=y}}.

소피보러스에게 ping을 보냅니다. 이것은 그들의 모듈입니다.SNice.svg Psiededelisto (토크기고) 2020년 7월 19일 02:01 (UTC)응답[응답]

@Psiededelisto:수고하셨습니다!몇 가지 수정을 해서 살아났어요이 옵션은 다른 옵션과의 일관성을 위해 "no follow"가 아니라 "no follow"로 불립니다.문제나 추가 요청이 있으면 연락주세요. 건배!Sophivorus (대화) 2020년 7월 19일 13:46 (UTC)응답[응답]

only1개 이상의 요소에서 작동하지 않았습니다.

여기, 저기라고 불려요.: (대화)22:11, 2021년 5월 24일 (UTC)응답[응답]

@Guarapianga Hi Yeah, 실은 얼마 전에 그 기능을 삭제했는데 문서에서 삭제하는 것을 잊었습니다.그냥 했어요, 고마워요.덧붙여서 모듈을 여러 번 호출하면 기능을 시뮬레이트할 수 있습니다. 건배!Sophivorus (대화) 00:58, 2021년 5월 25일 (UTC) 회신[응답]

모듈은 mw.ustring 대신 mw.string으로 더 가볍고 빠르게 할 수 있을까요?

샌드박스에서 시도해보긴 했지만 그래도 디버깅은 해야 해: (대화) 2021년 5월 30일 21:16 (UTC)응답 (응답)

@Guarapianga 솔직히 mw.ustring과의 차이를 제대로 이해하지 못한 채 mw.ustring만 더 안전하다고 생각했기 때문에 사용했습니다.그 차이를 이해하고 상관없다고 생각하고, 모든 테스트 케이스가 좋아 보인다면, 기꺼이 당신의 변화를 반영하겠습니다.소피보러스(대화) 2021년 5월 31일 00:45 (UTC)응답[응답]
내 샌드박스는 아직 준비가 안 됐어. 좀 더 경험이 많은 사람이 뛰어들어 내 실수를 찾아주길 바랐어.Johnuniq가 보낸 편지인데 urstring은 훨씬 [1]느리다.그 이유는 Scribunto가 Lua를 사용하여 regex 라이브러리를 대체함으로써 mw.ustring을 구현하고 있기 때문입니다.이는 놀라운 성과이지만 일반 [2]문자열을 사용하는 것보다 속도가 느려집니다.Mr._Stradivarius는 또한 mw.ustring을 사용하면 항상 Lua와 PHP를 왔다 갔다 해야 하는 단점이 있기 때문에 성능이 [3]상당히 저하된다고 말합니다.: (대화) 2021년 5월 31일 02:21 (UTC)응답[응답]
MediaWiki의 복잡한 PHP에 Wikitext 파싱 레이어를 추가하려는 모듈에는 관심이 없습니다.특수 게시판에 이런 모듈이 필요한 이유는 알 수 있지만, 기사에서 사용하는 것은 정기적으로 고장이 나기 때문에 유지보수의 문제가 됩니다.Johnuniq (대화) 2:52, 2021년 5월 31일 (UTC)응답[응답]
이 모듈은 다음 모듈에서 사용됩니다.발췌문은 토픽 포털을 만들기 위해 작성되었으며 WP에서 사용하고 있습니다.사용자 스크립트/목록/샌드박스, Johnuniq.기사에는 없는 것 같아요.: (대화)3:50, 2021년 5월 31일 (UTC)응답[응답]
문서 네임스페이스에서 "여기에 있는 링크"를 사용해 보십시오.Johnuniq (대화) 2021년 5월 31일 04:06 (UTC)응답[응답]
@Guarapianga @Johnuniq 이 모듈은 주로 모듈에서 사용하도록 설계되었습니다.템플릿 구현 발췌:발췌는 영어 위키피디아에서 2000개 이상의 기사(COVID-19 대유행 및 기타 유명 기사 포함)와 스페인어 위키피디아에서 1500개 이상기사(과학, 철학, 국가 기사 등 유명 기사 사용 포함)에 사용된 템플릿이다.건배!Sophivorus (대화) 2021년 5월 31일 13:05 (UTC)응답[응답]
정정합니다😊 - ( (토크)13:07, 2021년 5월 31일 (UTC)응답[응답]

문제의 예에 대해서는 Parramatta 선거구의 선거 결과(현재 "스크립트 실행에 할당된 시간이 만료되었습니다" 오류가 백만 개 표시됨)를 참조하십시오.이 문제는 모든 mw.ustring을 제거함으로써 해결되지만, 더 큰 문제는 왜 기사가 기사 패딩의 보증 방법을 사용하는가 하는 것입니다.Johnuniq (대화) 2021년 7월 18일 05:26 (UTC)응답[응답]

@Johnuniq 안녕!정보 감사합니다.mw.string으로의 전환이 우선순위를 대폭 높였습니다.빠른 시일 내에 실장하도록 하겠습니다.당신의 더 큰 질문에 대해서는 이해가 안 가거나 왜 "실패 보장"이라고 말하는지 잘 모르겠습니다.왜 이 문제는 1개 또는 많아야 몇 개의 기사에만 영향을 미치고 해결 가능한 것 같기 때문입니다.건배!Sophivorus (대화) 2021년 7월 18일 12:32 (UTC)응답[응답]
많은 mw.ustring을 일반 문자열로 대체하기 위해 대대적인 편집을 했습니다.불행히도, 모듈은 너무 많은 일을 하려고 하고 있고, 파라마타 선거구의 선거 결과는 여전히 깨져 있다.30 MW.Ustring을 남겼는데 교체하면 그 기사가 고쳐질 거예요.mw.ustring이 필요한 함수도 있고(함수 호출 방법에 따라 다름), 이미 많은 변경을 했기 때문에 흥미를 잃은 함수도 있습니다.나중에 "실패 보증"에 대해 설명하겠습니다.왜냐하면 이 모듈을 더 편집할 수 있는지, 또는 오류가 발생한 문서를 대폭 편집해야 하는지 등을 확인하고 싶지 않기 때문입니다(예, 많은 정보를 반복하는 것은 어리석은 일이기 때문에 대폭적인 편집이 필요하지만, 여기서 설명하는 것은 문제가 되지 않습니다).Johnuniq (대화) 3:57, 2021년 7월 19일 (UTC)응답[응답]
현재 카테고리에는 25개의 기사가 있습니다. 모듈을 편집하면 일부 페이지가 삭제되었기 때문에 스크립트 오류가 있는 페이지입니다.Johnuniq (대화) 5:03, 2021년 7월 19일 (UTC)응답[응답]
@Johnuniq 안녕 그동안 수고했어!중앙 샌드박스에 변경 내용을 복사했는데, 현재 일부 테스트 케이스가 실패한 것 같습니다.이것은 영어 위키피디아에서 발췌한 부분이 고장나거나 엉성하다는 것을 의미할 수 있다.원인이 뭔지 아세요?그렇지 않으면 이번 주에 수정해 보겠습니다만, 수정이 될 때까지 이전의 안정된 버전으로 되돌아가야 할 수도 있습니다.다시 한 번 감사드립니다!!Sophivorus (대화) 2021년 7월 19일 (UTC)응답[응답]

@소피보러스:편집한 mw를 편집했습니다.모듈: 트랜스클러로 몇 가지 문제를 해결하고 해당 모듈을 모듈에 복사:트랜스루더즉, "non"은 "no"로 받아들여지며, 솔직히 문제가 되지 않지만 문제가 될 경우 나중에 제거할 수 있습니다.2개의 모듈을 같은 것으로 하는 것이 보다 심플해졌습니다.mw:모듈: 트랜스클러더/테스트 케이스에서 testReferences라는1개의 문제가 발생하고 있습니다.

예상 =acfgk
실제 =acfgk<ref name="l" />

그 테스트 텍스트는 다음과 같습니다(mw:모듈: Transcluder/test #References).

a <ref> b </ref> c <ref name="d"> e </ref> f <ref name="d" /> g <ref name="h" group="i"> j </ref> k <ref name="l" />

왜 코드가 삭제되는지 알 수 없습니다.<ref name="l" />. 제거만 할 수 있습니다.<ref name="d" />왜냐하면 또 다른 심판원이 있기 때문에name="d"뭐 생각나는 거라도?Johnuniq (토크) 09:43, 2021년 7월 20일 (UTC)응답[응답]

상당한 문제 후, 이전 mw에 비해 현재 모듈(변경사항 포함)이 testReferences에 실패하는 이유를 알게 되었습니다.모듈: 12:40부터 트랜스클러더 개정판, 2021년 1월 9일 통과. 편집으로 getReferences에서 다음 코드가 삭제되었기 때문입니다.
truthy(표준)가 아닌 플래그가 있으면 텍스트 = mw.ustring.gsub(텍스트, '<%s*[Rr][Ee])[FF][^>/]*> -<%s*/%s*[Rr][Ee][Ff]%s*>', '') 텍스트 = mw.ustring.gsub(텍스트, '<%s*[Rr][Ee])[Ff][^>/]*/%s*>', '') 반환 참조, 텍스트 끝
Johnuniq (토크) 03:56, 2021년 7월 21일 (UTC)응답[응답]
@Johnuniq 알아줘서 정말 고마워!방금 코드를 복구했는데 이제 모든 테스트 케이스에 합격했어요.애초에 왜 코드를 넣었는지에 대한 코멘트도 추가했습니다.좀 엉성하긴 하지만 지금까지 생각해낸 것 중 가장 좋은 방법이야.'논'도 마찬가지입니다.프랑스어 위키피디아에서 사용할 수 있도록 하기 위해서입니다만, 좀 허술하기 때문에, 간단하게 코멘트를 덧붙였습니다.Parramatta 선거구의 선거 결과는 여전히 타임아웃 오류를 나타내고 있지만 나는 그것이 이전보다 훨씬 덜 보인다고 생각한다.페이지도 극단적이기 때문에 트랜슬루더 모듈이나 발췌 컨셉에 대한 비난은 그다지 크지 않다고 생각합니다.실제로 얼마 전 Wikidata에서 완전히 추출한 데이터로 COVID 통계 표를 작성하려고 했던 것이 상기된다(모듈 사용:WD)에서 타임아웃에러가 발생하여 실행할 수 없었습니다.저는 생각했습니다.왜 자원봉사가 컴퓨터를 구하기 위해 더 많은 일을 해야 할까?동의하십니까?최대 실행 시간을 조금 늘려야 한다고 생각하십니까?시간을 할애해 주셔서 다시 한 번 감사드립니다!Sophivorus (대화) 2021년 7월 23일 13:46 (UTC)응답[응답]
나는 실용주의자이고 우리가 가진 것을 가지고 일해야 한다고 믿는다.실행시간을 늘려달라고 하는 것은 타당할 수 있지만, {{excerpt}}을(를) 과도하게 사용하는 많은 기사에 대한 편집 미리보기는 매우 느립니다.실행 시간이 길어지면 미리보기/저장 시간이 길어질 뿐입니다.근본적인 문제는 콘텐츠를 복제하는 것은 잘못된 생각이라는 것이다.그렇게 하는 것이 정말 바람직하다면, Media Wiki에는 매우 빠른 내장 메커니즘, 즉 트랜슬루전(transclusion)이 있습니다.Wikitext가 작성될 수 있는 모든 기묘하고 예측 불가능한 방법을 다루는 모듈을 작성하려고 하지 말고, 발췌한 내용을 이곳저곳에 미러링하고 싶은 사람들은 대신 트랜슬루션을 사용해야 한다.그것은 깨지지 않고 매우 빠를 것이다.Johnuniq (대화) 2021년 7월 24일 01:49 (UTC)응답[응답]
나는 그 불량품에서 모듈을 작동시키기 위해 다시 시도했다.일부 디버깅에서는 모듈이 다음과 같이 나타났습니다.발췌 또한 너무 많은 작업을 시도하고 있으며 10초 실행 제한에 상당한 기여를 하는 것으로 보입니다.모듈이 MediaWiki 파서를 교체하려고 하는데 이 기능은 안정적으로 작동하지 않습니다.Johnuniq (대화) 2021년 7월 24일 (UTC)응답[응답]
@Johnuniq 개선해 주셔서 다시 한 번 감사드립니다!!플레인 트랜슬레이션의 문제는 페이지 전체를 초월한다는 것입니다.따라서 Wikitext를 복잡하게 만들고 일부 사용자가 올바르게 이해하고 채택하고 사용하기 어렵게 만드는 <include only> 태그를 사용해야 합니다.발췌본의 첫 번째 버전에서는 적어도 페이지의 도입부나 특정 섹션의 도입부만을 초월할 수 있는 #lsth 파서 기능을 사용하고 있었습니다.문제는 정보 상자, 알림, 내비게이션 템플릿 등 불필요한 요소를 불필요한 자동 분류로 넘나들었다는 점입니다.(특히 비주얼 에디터의 이름이 모두 동일하기 때문에) 참조와의 이름 경합도 빈번하게 발생하고 있기 때문에, 추한 <noinclude> 태그나 그 외의 복잡성은 여전히 필요했습니다.한마디로 Transcluder 및 Extraction과 같은 모듈은 이러한 모든 문제를 제거하고 성능 저하를 감수하면서 쉽고 아름다운 발췌를 실현합니다.하지만 다행히도, 당신의 노력으로 인해 그 분야에서 많은 것들이 개선될 수 있다는 것을 알게 되었습니다. 어쩌면 그 단점도 크게 줄어들 수 있을지도 모릅니다!다시 한 번 고마워!!!Sophivorus (대화) 2021년 7월 24일 12:34 (UTC)응답[응답]

getNamespaces 함수가 잘못 동작하고 있습니다.

유감스럽게도 함수 getNamespaces가 함수 의도대로 작동하지 않습니다.

로컬 함수 getNamespaces(name) 로컬 네임스페이스 = mw.site.namespaces[name].aliases table.insert(네임스페이스, mw.site.namespaces[name].name) table.insert(네임스페이스, mw.site.namespaces[name]) table.insert(네임스페이스, mw.canicalName) 반환 네임스페이스 종료

'namespaces'는 로컬 변수이지만 table.insert는 실제로 글로벌 값에 추가됩니다.

테스트

함수 p.td() 탭 = getNamespaces('Category') mw.log(#탭) 탭 = getNamespaces('Category') mw.log(#탭) end

2, 4, 6을 반환한다.

mw.clone()이 도움이 될 것 같습니다.

로컬 네임스페이스 = mw.clone(mw.site.namespaces[name]).에일리어스)

Desb42 (토크) 10:06, 2021년 11월 24일 (UTC)응답[응답]

흥미로운 벌레!정답입니다. 감사합니다.원본은 다음을 정의합니다.namespaces에의 포인터로서aliasesmw.site.namespaces의 테이블에서 예기치 않게 해당 테이블을 변경할 수 있습니다(이는 임시 테이블일 뿐이므로 변경은 적용되지 않습니다).이 예에서는 기능이 조금 더 스마트하고 중복을 추가하지 않아야 합니다..name그리고..canonicalNameare "Category" 및 getNamespaces는 둘 다 포함하는 테이블을 반환합니다.나중에 수정이 보증되는지 확인합니다(즉, getNamespaces는 어떻게 사용됩니까?).모듈을 마지막으로 확인한 후 변경 사항을 확인했는데 다른 문제가 있습니다.local min, max = string.matchen dash 및 em dash가 regex에 포함되었기 때문에 더 이상 적절하지 않습니다.한 가지 수정사항은 usring.match를 사용하는 것입니다.대신 gsub를 사용하여 en/em 대시를 하이픈으로 대체하는 것이 더 나을 수 있습니다(아직 생각하지 않았습니다).Johnuniq (토크) 2:59, 2021년 11월 25일 (UTC)응답[응답]
function parse Flags를 보기 시작했지만 다른 것을 청소해야 하기 때문에 잠시 포기했습니다.정규식'^(%d+)%s*[-–—]s*(%d+)
거의 작동하지 않는 오타가 있습니다.두 번째s그래야 한다%s반품처리를 (빠르게) 할 수 없다flags테이블: 다음과 같은 범위의 경우3-5테이블에는 숫자 키 3, 4, 5가 있지만 다음과 같은 일반 숫자가 있습니다.3테이블에는 문자열 키 '3'이 있습니다.마지막으로 범위를 찾는 대신 톤넘버를 먼저 사용하고 텍스트가 범위가 아닌 숫자일 경우 min, max를 동일한 값으로 설정해야 합니다.Johnuniq (대화) 2021년 11월 25일 04:26 (UTC)응답[응답]
@소피보러스:이러한 문제를 조사하는 것이 좋습니다.Johnuniq (대화) 5:52, 2021년 11월 27일 (UTC)응답[응답]
@Desb42 @Johnuniq 보고서와 수정 감사합니다!이름 공간의 문제와 %s의 오타를 수정하고 parseFlags의 string.match를 mw.ustring.match로 대체했습니다.Johnuniq씨, 반환된 플래그 테이블의 문제에 대한 당신의 논리를 이해할 수 없었지만, (모듈이 여러 위키피디아에서 점점 더 많이 사용되고 있기 때문에) central https://www.mediawiki.org/wiki/Module:Transcluder에서 실험하고 https://www.mediawiki.org/wiki/Module:Transcluder/testcases에서 당신의 변경 사항을 테스트해 보세요!Sophivorus (대화) 2021년 11월 27일 12:20 (UTC)응답[응답]

모듈 작업자는 입력 여부를 결정해야 합니다.3-5입력 중 숫자 키가 생성되어야 합니다.3는 문자열인 키를 제공합니다.그들이 다르다는 것은 말이 안 된다. 비록 코드의 기호가 그것을 작동시킬 수 있다 하더라도 말이다.차이점을 설명하려면:

t = {} t[1] = '내 키는 숫자입니다' t['1'] = '내 키는 문자열입니다' (i, ipairs(t)의 경우)...end -- 프로세스 t[1]만

Johnuniq (대화) 2021년 11월 27일 (UTC)응답[응답]

@Johnuniq.고맙다.이제는 알 것 같아.당신은 이 변화가 충분하다고 생각합니까?소피보러스 (대화) 2021년 11월 29일 (UTC)응답[응답]
@소피보러스:죄송합니다만, 틀렸습니다(혹은 왜 코드와 문자열이 혼재하고 있다고 생각했는지 알 수 없습니다).mw.ustring.match는 다음과 같은 문자열을 반환합니다.3-5', 하지만...for i = min, max do flags[i] = true end,i숫자만 사용할 수 있습니다.min,max가능한 경우 자동으로 숫자로 변환됩니다.당신의 코드가 작동한다고 생각하지만, 저는 mw:편집했습니다.모듈:트랜스클러로 권장하는 내용을 보여줍니다.실제적인 차이는 거의 없지만 입력 내용을 확인한다고 생각합니다.3"를 확인하기 전에3-5"가 더 깨끗합니다.회선
min = tonumber(range:match('^%s*(%d+)%s*