Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ko]: revise index.md files for web/glossary/s #15495

Merged
merged 4 commits into from
Mar 24, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 17 additions & 23 deletions files/ko/glossary/safe/http/index.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,47 @@
---
title: 안전함 (HTTP 메서드)
slug: Glossary/Safe/HTTP
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---

{{GlossarySidebar}}

HTTP 메서드가 서버의 상태를 바꾸지 않으면 그 메서드가 **안전**하다고 말합니다. 다른 말로 하면, 읽기
작업만 수행하는 메서드는 안전합니다. 흔히 쓰이는 HTTP 메서드 중에서는 {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}},
{{HTTPMethod("OPTIONS")}}가 안전합니다. 모든 안전한 메서드는 [멱등성](/ko/docs/Glossary/Idempotent) 또한
갖지만, 모든 멱등성을 지닌 메서드가 안전한 것은 아닙니다. 예컨대 {{HTTPMethod("PUT")}}과 {{HTTPMethod("DELETE")}}는 둘
다 멱등성을 가졌지만 안전하지는 않은 메서드입니다.
{{HTTPMethod("OPTIONS")}}가 안전합니다. 모든 안전한 메서드는 {{glossary("idempotent", "멱등성")}} 또한
갖지만, 모든 멱등성을 지닌 메서드가 안전한 것은 아닙니다. 예컨대 {{HTTPMethod("PUT")}}과 {{HTTPMethod("DELETE")}}는 둘 다 멱등성을 가졌지만 안전하지는 않은 메서드입니다.

그러나, 안전한 메서드가 읽기 전용의 의미를 내포하긴 하지만, 서버가 요청 정보와 통계 등을 기록함으로써 자신의 상태에
변경을 가하는 것도 가능합니다. 안전함의 중요점은 그 메서드를 호출해도 클라이언트가 서버의 상태 변화를 직접 요청하는
것이 아니므로 서버에 불필요한 부하를 주지 않을 것이란 점입니다. 즉 브라우저 입장에서는, 안전한 메서드라면 서버에 해를
끼치지 않을 것임을 알 수 있기 때문에 자유롭게 호출할 수 있습니다. 이런 점을 활용해서 브라우저가 별다른 위험 없이도
변경을 가하는 것도 가능합니다. 안전한 메서드 호출의 중요한 부분은 그 메서드를 호출해도 클라이언트가 서버의 상태 변화를 직접 요청하는
것이 아니므로 서버에 불필요한 부하를 주지 않을 것이란 점입니다. 브라우저는 안전한 메서드라면 서버에 해를 끼치지 않을 것임을 알 수 있기 때문에 자유롭게 호출할 수 있습니다. 이런 점을 활용해서 브라우저가 별다른 위험 없이도
프리페칭과 같은 동작을 수행할 수 있는 것입니다. 웹 크롤러 역시 안전한 메서드의 호출에 의존합니다.

안전한 메서드가 정적 파일만 제공해야 할 필요는 없으며, 요청에 대해 응답을 필요에 따라 생성하는 것도 가능합니다. 다만
생성 과정은 안전해야 하므로, 다른 이커머스 웹 사이트에 주문을 넣는 것과 같이 외부 이펙트를 유발하는 것은 안됩니다.
안전한 메서드가 정적 파일만 제공해야 할 필요는 없습니다. 생성된 스크립트가 안전함을 보장하는 한, 서버는 안전한 메서드에 대한 응답을 즉시 생성할 수 있습니다. 다른 전자 상거래 웹 사이트에 주문을 넣는 것과 같이 외부 효과를 유발하는 것은 안됩니다.

메서드의 안전함을 준수하는 것은 온전히 서버 어플리케이션의 책임으로, Apache, Nginx, IIS 등 웹 서버 스스로는 안전함을
강제하지 못합니다. 서버 어플리케이션은 특히 {{HTTPMethod("GET")}} 요청을 받았을 때 자신의 상태가 바뀌지 않도록 해야 합니다.
메서드의 안전함을 준수하는 것은 온전히 서버 애플리케이션의 책임으로, Apache, Nginx, IIS 등 웹 서버 스스로는 안전함을
강제하지 못합니다. 서버 애플리케이션은 특히 {{HTTPMethod("GET")}} 요청을 받았을 때 자신의 상태가 바뀌지 않도록 해야 합니다.

다음은 서버 상태를 바꾸지 않는, 안전한 메서드의 호출입니다.

```
GET /pageX.html HTTP/1.1
```http
GET /pageX.html HTTP/1.1
```

다음은 서버 상태를 바꿀 수도 있는, 안전하지 않은 메서드의 호출입니다.

```
POST /pageX.html HTTP/1.1
```http
POST /pageX.html HTTP/1.1
```

마지막으로 멱등성을 가졌지만 안전하지는 않은 메서드의 호출입니다.

```http
DELETE /idX/delete HTTP/1.1
```
DELETE /idX/delete HTTP/1.1
```

## 더 알아보기

### 일반 지식

- HTTP 명세에서 [안전함](https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.1)의 정의.

### 기술 지식
## 같이 보기

- HTTP 명세에서 [안전함](https://httpwg.org/specs/rfc9110.html#safe.methods)의 정의.
- 일반적으로 쓰이는 안전한 메서드: {{HTTPMethod("GET")}}, {{HTTPMethod("HEAD")}}, {{HTTPMethod("OPTIONS")}}
- 일반적으로 쓰이는 안전하지 않은 메서드: {{HTTPMethod("PUT")}}, {{HTTPMethod("DELETE")}}, {{HTTPMethod("POST")}}
2 changes: 2 additions & 0 deletions files/ko/glossary/safe/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
---
title: 안전함
slug: Glossary/Safe
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---

{{GlossarySidebar}}
Expand Down
52 changes: 40 additions & 12 deletions files/ko/glossary/scope/index.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,42 @@
---
title: 스코프
slug: Glossary/Scope
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---

{{GlossarySidebar}}

현재 실행되는 컨텍스트를 말한다. 여기서 컨텍스트는 {{glossary("","값")}}과 **표현식**이 **"표현"**되거나 참조 될 수 있음을 의미한다. 만약 **{{glossary("변수")}}** 또는 다른 표현식이 "해당 스코프"내에 있지 않다면 사용할 수 없다. 스코프는 또한 계층적인 구조를 가지기 때문에 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.
**스코프**는 컨텍스트는 {{glossary("value","값")}}과 "표현식"이 "표현"되거나 참조 될 수 있는 현재 실행되는 컨텍스트를 의미합니다. 만약 {{glossary("variable", "변수")}} 또는 표현식이 "해당 스코프"내에 있지 않다면, 사용할 수 없습니다. 스코프는 또한 계층적인 구조를 가지기 때문에, 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.

**{{glossary("함수")}}** 는 **{{glossary("JavaScript")}}** 에서 **클로저** 역할을 하기 때문에 스코프를 생성하므로 함수 내에 정의된 변수는 외부 함수나 다른 함수 내에서는 접근 할 수 없다. 예를 들어 다음과 같은 상황은 유효하지 않다.
**{{glossary("함수")}}** 는 **{{glossary("JavaScript")}}** 에서 **클로저** 역할을 하기 때문에 스코프를 생성하므로 함수 내에 정의된 변수는 외부 함수나 다른 함수 내에서는 접근 할 수 없습니다. 예를 들어 다음과 같은 상황은 유효하지 않습니다.

```js
JavaScript는 다음과 같은 종류의 스코프가 있습니다.

- 전역 범위: 스크립트 모드에서 실행되는 모든 코드의 기본 범위입니다.
- 모듈 범위: 모듈 모드에서 실행되는 코드의 범위입니다.
- 함수 범위: {{glossary("function")}}로 생성된 범위입니다.

또한, [`let`](/ko/docs/Web/JavaScript/Reference/Statements/let) or [`const`](/ko/docs/Web/JavaScript/Reference/Statements/const)로 선언된 변수는 추가 범위에 속할 수 있습니다.

- 블록 범위: 중괄호 쌍([블록](/ko/docs/Web/JavaScript/Reference/Statements/block))으로 생성된 범위입니다.

{{glossary("function", "함수")}}는 범위를 생성합니다. 예를 들면, 함수 내에서만 정의된 변수는 함수 외부나 다른 함수 내에서 접근할 수 없습니다. 다음 예는 유효하지 않습니다.

```js example-bad
function exampleFunction() {
var x = "declared inside function";
// x는 오직 exampleFunction 내부에서만 사용 가능.
const x = "declared inside function"; // 변수 x는 안에서만 사용 가능합니다.
console.log("Inside function");
console.log(x);
}

console.log(x); // 에러 발생
console.log(x); // Causes error
```

그러나 다음과 같은 코드는 변수가 함수 외부의 전역에서 선언되었기 때문에 유효하다.
그러나, 다음 코드는 변수가 함수 외부에서 선언되어 전역 변수가 되기 때문에 유효합니다.

```js
var x = "declared outside function";
```js example-good
const x = "declared outside function";

exampleFunction();

Expand All @@ -36,8 +49,23 @@ console.log("Outside function");
console.log(x);
```

## Learn more
Blocks only scope `let` and `const` declarations, but not `var` declarations.
블록 `let` 및 `const` 선언만 차단하고 `var` 선언은 차단하지 않습니다.

```js example-good
{
var x = 1;
}
console.log(x); // 1
```

```js example-bad
{
const x = 1;
}
console.log(x); // ReferenceError: x is not defined
```

### General knowledge
## 같이 보기

- [Scope (computer science)](<https://en.wikipedia.org/wiki/Scope_(computer_science)>) on Wikipedia
- 위키백과의 [스코프 (컴퓨터 과학)](<https://en.wikipedia.org/wiki/Scope_(computer_science)>)
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
---
title: Self-Executing Anonymous Function
slug: Glossary/Self-Executing_Anonymous_Function
l10n:
sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34
---

{{GlossarySidebar}}

정의되자마자 실행되는 {{glossary("JavaScript")}} {{glossary("function")}}입니다. (a.k.a. {{glossary("IIFE")}} (즉시실행함수))
정의되자마자 실행되는 {{glossary("JavaScript")}} {{glossary("function", " 함수")}}입니다. (a.k.a. {{glossary("IIFE")}} (즉시실행함수))

링크된 즉시실행함수 페이지에서 더 많은 정보를 얻을 수 있습니다.
50 changes: 27 additions & 23 deletions files/ko/glossary/semantics/index.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,63 @@
---
title: Semantics
slug: Glossary/Semantics
l10n:
sourceCommit: 8578969fc0a4321e2bb10c7efeb2db77deec93c3
---

{{GlossarySidebar}}

프로그래밍에서,**시맨틱**은 코드 조각의 *의미*를 나타냅니다예를 들어 ("이게 어떻게 시각적으로 보여질까?" 보다)"이 Javascript 라인을 실행하는 것은 어떤 효과가 있는가?", 혹은 "이 HTML 엘리먼트가 가진 목적이나 역할은 무엇인가?"
프로그래밍에서, **시맨틱**은 코드 조각의 '의미'를 나타냅니다. 예를 들어, ("이게 어떻게 시각적으로 보여질까?" 보다는), 이 Javascript 라인을 실행하는 것은 어떤 효과가 있나요?", 혹은 "이 HTML 엘리먼트가 가진 목적이나 역할은 무엇일까요?"를 들 수 있습니다.

## JavaScript 시맨틱

JavaScript의 경우입니다. `textContent` 문자열을 매개변수로 하고 {{htmlelement("li")}} 요소를 반환하는 함수를 생각해봅시다. 코드 볼 때, 함수를 `build('Peach')` 로 부르거나 `createLiWithContent('Peach')` 부르는 것 중 어느 것이 이 함수의 기능 파악하기에 쉬울까요?
JavaScript의 경우, `textContent` 문자열을 매개변수로 하고 {{htmlelement("li")}} 요소를 반환하는 함수를 생각해 봅시다. 코드 볼 때, 함수를 `build('Peach')` 로 부르거나 `createLiWithContent('Peach')` 부르는 것 중 어느 것이 이 함수의 기능 파악하기에 쉬울까요?

## CSS 시맨틱

CSS의 경우입니다. 다양한 종류의 과일을 나타내기 위해서는 리스트 태그 `li` 가 있다고 가정해봅시다. `div> ul> li` 와 `.fruits__item` 둘 중 어떤 것이 어떤 DOM부분이 선택되었는지 잘 알려줄까요?
CSS의 경우, 다양한 종류의 과일을 나타내기 위해서는 리스트 태그 `li` 가 있다고 가정해봅시다. `div > ul > li` 와 `.fruits__item` 둘 중 어떤 것이 어떤 DOM부분이 선택되었는지 잘 알려줄까요?

## HTML 시맨틱

예를 들어 HTML에서는 {{htmlelement("h1")}} 은 시맨틱 요소입니다. "이 페이지에서 최상위 제목" 인 텍스트를 감싸는 역할(또는 의미)를 나타냅니다.
예를 들어, HTML에서는 {{htmlelement("Heading_Elements", "h1")}}은 시맨틱 요소입니다. "이 페이지에서 최상위 제목" 인 텍스트를 감싸는 역할(또는 의미)를 나타냅니다.

```html
<h1>This is a top level heading</h1>
<h1>이것은 최상위 제목입니다</h1>
```

기본적으로 대부분의 브라우저의 [사용자 에이전트 스타일시트](/ko/docs/Web/CSS/Cascade#User-agent_stylesheets) {{htmlelement("h1")}} 가 제목(heading) 처럼 _보이도록_ 큰사이즈 폰트로 스타일을 만듭니다(당신이 원하는 대로 스타일을 바꿀 수도 있지만요).
기본적으로, 대부분의 브라우저의 [사용자 에이전트 스타일시트](/ko/docs/Web/CSS/Cascade#User-agent_stylesheets) {{htmlelement("h1")}} 가 제목(heading) 처럼 보이도록 큰사이즈 폰트로 스타일을 만듭니다(당신이 원하는 대로 스타일을 바꿀 수도 있지만요).

반면에 모든 요소를 '최상위 제목'처럼 _보이게_ 할 수 있습니다. 다음을 고려하세요.
반면에, 모든 요소를 '최상위 제목'처럼 보이게 할 수 있습니다. 다음을 고려하세요.
hochan222 marked this conversation as resolved.
Show resolved Hide resolved

```html
<span style="font-size: 32px; margin: 21px 0;"
>Is this a top level heading?</span
>
<span style="font-size: 32px; margin: 21px 0;">최상위 제목이 아닙니다!</span>
```

이렇게 하면 top level heading 처럼 보이지만 의미적 가치(semantic value)가 없으므로 위에서 설명한 것처럼 추가적인 이점은 얻을 수 없습니다. 따라서 작업에 적합한 HTML 요소를 사용하는 것이 좋습니다.
이렇게 하면 최상위 제목처럼 보이도록 렌더링되지만, 의미적 가치가 없으므로 위에서 설명한 것처럼 추가적인 이점은 얻을 수 없습니다. 따라서 작업에 적합한 HTML 요소를 사용하는 것이 좋습니다.

HTML은 채워질 *데이터*를 나타내도록 코딩해야합니다. 기본 프리젠테이션 스타일기반이 아니라요. 프레젠테이션(어떻게 보여져야만 하는가)은 [CSS](/ko/docs/Web/CSS)만의 단독 역할입니다.
HTML은 채워질 '데이터'를 나타내도록 코딩해야 합니다. 기본 프리젠테이션 스타일기반이 아닙니다. 프레젠테이션(어떻게 보여져야만 하는가)은 [CSS](/ko/docs/Web/CSS)만의 단독 역할입니다.

의미론적인 마크업을 사용하면 아래와 같은 이점이 있습니다.

- 검색 엔진은 의미론적 마크업 을 페이지의 검색 랭킹에 영향을 줄 수 있는 중요한 키워드로 간주합니다 ({{glossary ( "SEO")}} 참조).
- 시각 장애가 있는 사용자가 화면 판독기로 페이지를 탐색할 때 의미론적 마크업을 푯말로 사용할 수 있습니다.
- 검색 엔진은 의미론적 마크업을 페이지의 검색 순위에 영향을 줄 수 있는 중요한 키워드로 간주합니다 ({{glossary("SEO")}} 참조).
- 시각 장애가 있는 사용자가 화면 판독기로 페이지를 탐색할 때 의미론적 마크업을 안내판으로 사용할 수 있습니다.
- 의미없고 클래스 이름이 붙여져있거나 그렇지 않은 끊임없는 `div` 들을 탐색하는 것보다, 의미있는 코드 블록을 찾는 것이 훨씬 쉽습니다.
- 개발자에게 태그 안에 채워질 데이터 유형을 제안합니다
- 의미있는 이름짓기(Semantic naming)는 적절한 사용자 정의 요소 / 구성 요소의 이름짓기(namimg)를 반영합니다.
- 개발자에게 태그 안에 채워질 데이터 유형을 제안합니다.
- 의미있는 이름짓기(Semantic naming)는 적절한 사용자 정의 요소 / 구성 요소의 이름짓기를 반영합니다.

사용할 마크업에 접근할 때 스스로에게 물어보세요. "내가 채울 데이터를 가장 잘 설명하고 나타내는 요소는 무엇일까?" 예를 들어, 그 데이터는 정렬된 목록입니까? 정렬되지 않은 목록입니까?, 관련된 정보가 제외된 섹션이 있는 아티클(article)입니까?, 정의의 나열입니까?, 캡션이 필요한 그림 또는 이미지입니까?, 사이트 전체 머리글(header) 및 바닥글(footer) 외에 또 다른 머리글과 바닥글이 있어야합니까? 등등
사용할 마크업에 접근할 때, "채울 데이터를 가장 잘 설명하고 나타내는 요소는 무엇일까?" 스스로에게 물어보세요. 예를 들어, 그 데이터는 정렬된 목록입니까? 정렬되지 않은 목록입니까?, 관련된 정보가 제외된 섹션이 있는 글입니까?, 정의의 나열입니까?, 캡션이 필요한 그림 또는 이미지입니까?, 사이트 전체 머리글(header) 및 바닥글(footer) 외에 또 다른 머리글과 바닥글이 있어야합니까? 등등을 들 수 있습니다.

## 의미론적 요소(element)들
## 의미론적 요소들

사용가능한 백 여개 정도의 요소([elements](/ko/docs/Web/HTML/Element))들이 있습니다.
사용가능한 100개 정도의 의미론적 [요소](/ko/docs/Web/HTML/Element)들이 있습니다.

- {{htmlelement("article")}}
- {{htmlelement("aside")}}
- {{htmlelement("details")}}
- {{htmlelement("figcaption")}}
- {{htmlelement("figure")}}
- {{htmlelement("footer")}}
- {{htmlelement("form")}}
- {{htmlelement("header")}}
- {{htmlelement("main")}}
- {{htmlelement("mark")}}
Expand All @@ -65,8 +66,11 @@ HTML은 채워질 *데이터*를 나타내도록 코딩해야합니다. 기본
- {{htmlelement("summary")}}
- {{htmlelement("time")}}

## Learn more
## 같이 보기

- [HTML element reference](/ko/docs/Web/HTML/Element#Inline_text_semantics) on MDN
- [Using HTML sections and outlines](/ko/docs/Web/Guide/HTML/Using_HTML_sections_and_outlines#Problems_solved_by_HTML5) on MDN
- [Semantics](<https://en.wikipedia.org/wiki/Semantics_(computer_science)>) on Wikipedia
- MDN의 [HTML 요소 참조](/ko/docs/Web/HTML/Element#Inline_text_semantics)
- MDN의 [HTML 구역과 윤곽선 사용하기](/ko/docs/Web/HTML/Element/Heading_Elements#usage_notes)
- 위키백과의 [컴퓨터 과학에서 시맨틱의 의미](https://en.wikipedia.org/wiki/Semantics#Computer_science) on Wikipedia
- [용어 사전](/ko/docs/Glossary)

- {{Glossary("SEO")}}
Loading
Loading