추상 위키백과/업데이트/2024-01-25

This page is a translated version of the page Abstract Wikipedia/Updates/2024-01-25 and the translation is 100% complete.
추상 위키백과 업데이트 Translate

메일링 리스트를 통한 추상 위키백과 IRC의 추상 위키백과 텔레그램의 위키함수 마스토돈의 위키함수 트위터의 위키함수 페이스북의 위키함수 유튜브의 위키함수 위키함수 웹사이트 Translate

코드에서 디버그 정보 얻기

위키함수의 기여자는 기존 함수를 구성하거나 자바스크립트 또는 파이썬으로 코드를 제공하는 두 가지 방법으로 구현을 제공할 수 있습니다. 그리고 프로그래밍 코드를 만들어본 사람이라면 누구나 확인하듯이, 자신이 작성한 코드에는 실수나 소위 말하는 버그가 있다는 것은 피할 수 없는 일입니다.

 
"그레이스 호퍼 제독이 말한 대로 1940년대 컴퓨터에서 발견되어 오류를 일으킨 실제 버그입니다."

매우 널리 사용되는 디버깅 방법은 코드에 print 문을 추가한 다음, 버그를 파악하고 수정한 후 다시 제거하는 것입니다. print 문은 명령문의 인수를 콘솔에 표시하거나 이를 로그 파일에 추가합니다. 이는 일반적으로 print 문이 추가된 코드 지점에서 변수의 상태를 검사하기 위해 수행됩니다. 별 다섯 개가 있는 문자열을 생성하는 것을 목표로 다음 자바스크립트 코드가 작성되었다고 가정해 보겠습니다.

let result = ""
for (let i=0; i=5; i++) {
 result += "★"
}

어떤 사람들은 오류를 즉시 인식할 수도 있지만 다른 사람들에게는 모호할 수도 있습니다. 왜 컴퓨터가 해당 코드에서 반환되지 않습니까?

한 가지 방법은 코드에 print 문을 추가하는 것입니다. 자바스크립트에 print 문을 추가하는 한 가지 방법은 console.log에 쓰는 것입니다.

let result = ""
for (let i=0; i=5; i++) {
 console.log(i)
 result += "★"
}

그리고 콘솔에서 예상되는 0, 1, 2, 3, 4 대신 5가 포함된 수많은 라인을 볼 수 있습니다. 이는 루프의 조건이 i=5이 되어서는 안 된다는 것, 즉 i가 값 5로 설정되어 있지만 i!=5가 되어야 한다는 것을 의미하는 주어진 코드의 문제를 나타낼 수 있습니다. 여기서 i를 5와 비교합니다(심지어 조금 더 강력하다면 i<5가 되어야 합니다).

이 방법은 일반적으로 print 디버깅 또는 추적이라고 하며 일부 사람들에게는 평판이 좋지 않지만 코드에서 문제를 찾고 코드를 이해하는 데 자주 널리 사용되는 효과적인 방법입니다. 이제 위키함수에서도 사용할 수 있습니다! 문자열 인수와 함께 Wikifunctions.Debug 명령을 한 번 이상 사용할 수 있으며 구현을 실행한 후 디버그 문자열이 함수 결과 출력의 세부 정보 보기에 표시됩니다. Wikifunctions.Debug를 사용하는 두 가지 예는 베타 사이트에서 자바스크립트파이썬에 대해 찾을 수 있습니다.

 
Details of a function run. The last bullet point contains the log.

구현이 적극적으로 디버깅되지 않는 한 Wikifunctions.Debug에 대한 호출이 없는 코드를 유지하는 것이 좋습니다. 이는 코드를 통해 한 함수에서 다른 함수를 호출하는 함수를 허용할 때 특히 유용합니다. 그렇지 않으면 읽을 수 없는 로그 파일이 매우 빨리 생성될 수 있습니다. 우리는 위키함수 커뮤니티가 이를 게시되고 연결된 함수에 대한 스타일 가이드에 추가하는 것을 고려해야 한다고 제안합니다.

이 함수를 아이디어부터 배포까지 이끌어주신 코리에게 축하를 드립니다! 데이비드는 디버깅 문자열을 보기 좋게 표시하기 위해 세부 정보 보기를 업데이트하는 데 도움을 주었습니다.

금주의 함수: 줄 바꿈

줄 바꿈은 두 개의 문자열, 즉 "줄 바꿈할 문자열"과 "래퍼"를 사용하여 두 문자열 사이에 래핑된 전자를 반환합니다. 첫 번째 함수 테스트에서와 같이 직선 따옴표로 일부 내용을 인용하는 데 사용할 수 있습니다. 또는 "l'art pour l’art"를 만드는 등 예술적 효과를 위해 사용될 수도 있습니다. 또는 레이블과 같이 문자별로 회문 문자를 장난스럽게 만들 수도 있습니다.

 
Wrap(Falafel, Lavash). Note that the pictured wrap is three dimensional, whereas the Function we discuss here is only working on a single dimension.

여기에 링크된 다른 두 테스트는 이 게시물을 준비하기 위해 작성되었습니다. 함수에는 단일 테스트가 있었지만 이제는 3개가 있습니다. 지난번과 마찬가지로 구현이 더 많은 가능한 입력으로 작동하는지 확인하기 위해 더 많은 테스트를 수행하는 것이 좋습니다. 함수가 다른 스크립트와 잘 작동합니까? 중국어인가 아랍어인가? 이모티콘과 호환되나요? 숫자는 어떻습니까? 빈 문자열에서도 작동하나요? 일반적으로 시스템과 구현에 대한 신뢰도를 높이기 위해 함수에 대해 더 많은 테스트를 수행하도록 노력해야 합니다.

우리가 가지고 있는 세 가지 구현은 매우 간단합니다. 자바스크립트파이썬 모두 + 연산자를 사용하여 세 문자열을 연결하고 시작과 끝에서 래퍼를 두 번 참조합니다. 구성에서는 join strings을 두 번 사용합니다. 먼저 래핑할 문자열 끝에 래퍼를 추가한 다음 첫 번째 호출 결과 앞에 래핑할 문자열을 추가하기 위해 한 번 더 사용합니다.

소프트웨어의 최근 변경 사항

이번 주는 팀이 향후 작업 계획에 집중했기 때문에 새로운 코드 배포 측면에서 대부분 조용했습니다. 가장 큰 변화는 올해 백엔드 서비스의 첫 번째 제품 출시였습니다. 포함된 커밋 중 어느 것도 사용자가 볼 수 있는 변경 사항을 가져오려는 의도가 없습니다(조금 더 안전하고 더 엄격한 것 이상). 또한 이전에 시스템이 호출을 유효한 객체로 인식하지 못했던 특정 유형의 사용과 관련된 버그를 수정하고 코드를 시작하는 사람들을 위한 코드 문서를 개선했습니다. 또한 미디어위키가 지원하는 네 가지 새로운 언어인 루툴어 (Z1915), 남동콜람어 (Z1916), 투로어 (Z1917)누페어어 (Z1919)를 추가했습니다.