[language-agnostic] 프로그래밍에서 “컨텍스트”라는 용어? [닫은]

나는 몇 달 동안 프로그래밍을 해왔으며 자주 사용되는 단어는 수업에서 “문맥”입니다. 마찬가지로 ServletContext(자바), Activity(안드로이드), Service(자바, 안드로이드), NSManagedContext(목표 – C, 아이폰 OS).

사전을 살펴보면 상황, 환경, 상황 등이라는 단어의 의미를 알 수 있습니다. 그러나 저는 영어를 모국어로 사용하지 않기 때문에 직접 번역해야 할 내용을 이해하지 못합니다. 예를 들어, 명명 된 클래스 SomeClassContext또는 컨텍스트 매개 변수가있는 메서드를 작성 해야하는 경우 이해하지 못하므로 컨텍스트 이름을 지정 해야하는 시점을 이해할 수 없습니다.

Stack Overflow에서 컨텍스트를 검색했지만 질문 / 답변이 도움이되지 않았습니다.

누군가가 설명을 해줄 수 있다면 매우 기쁠 것입니다.



답변

치과 의사에게 가서 치아를 뽑아 놓았다고 가정 해 봅시다.

접수 원이 귀하의 이름을 물으면 약속을 시작하는 데 필요한 정보입니다. 이 예에서 귀하의 이름은 상황 정보 입니다. 그래서에서 상황에 맞는 치과 의사를 방문, 당신은 당신의 치아를 뽑아 얻을 당신의 이름을 제공해야합니다.

이제 은행으로 걸어 가자고합시다.

은행에서는 $ 100을 인출하도록 요청합니다. 텔러는 돈을주기 전에 신원을 확인해야하므로 운전 면허증을 보여 주거나 ATM 카드를 스 와이프하고 PIN 번호를 입력해야합니다. 어느 쪽이든, 당신이 제공하는 것은 context 입니다. 텔러는이 정보를 사용하여 거래를 진행시킵니다. 그러면 어떤 계정에서 탈퇴 할 것인지 묻습니다. “저축 예금 계좌”라고 대답하면 훨씬 더 문맥 입니다.

더 많은 맥락을 제공할수록 상대방이 귀하의 요청을 처리하는 데 도움이되는 지식이 많아집니다. 경우에 따라 문맥은 선택 사항이며 (더 나은 결과를 얻기 위해 Google 검색에 더 많은 단어를 입력하는 것과 같이) 때로는 ATM에서 PIN 번호를 제공하는 것과 같이 필요할 수도 있습니다. 어느 쪽이든, 그것은 일반적으로 일을하는 데 도움이되는 정보입니다.

이제 당신이 $ 100를 가지고 입이 치유되는 동안 따뜻한 곳으로 비행기 티켓을 구입한다고 가정 해 봅시다.

당신은 좋은 햇볕이 잘 드는 목적지에 도착하지만, 가방은 그것을 만들지 않습니다. 공항 시스템 어딘가에서 길을 잃었습니다. 따라서 “수하물 청구 표”(바코드가 붙어있는 스티커)를 “잃어버린 수하물 사무소”로 가져 가십시오. 책상 뒤에있는 사람이 가장 먼저 요구하는 것은 수하물 번호가 적힌 티켓입니다. 이것이 필요한 컨텍스트 의 예입니다 .

그러나 수하물 사람은 자세한 내용을 요청 가방에 대한 더 쉽게 찾을 수 있도록있다. 그들은 ” 무슨 색입니까? 어떤 크기입니까? 바퀴가 있습니까? 단단하거나 부드럽습니까? “그런 정보가 반드시 필요한 것은 아니지만, 정보를 제공하면 사물을 좁히는 데 도움이됩니다. 문제 영역 : 검색 속도가 훨씬 빨라집니다 ( 선택적 문맥) .

흥미로운 부분은 다음과 같습니다. 많은 소프트웨어 및 API의 경우 필수 컨텍스트는 일반적으로 메소드 서명의 실제 매개 변수로 끝나고 선택적 컨텍스트 는 무엇이든 포함 할 수있는 유연한 키-값 맵과 같이 다른 곳으로갑니다 (비어있을 수 있음) ) 또는 필요한 경우 액세스 할 수있는 스레드 로컬 스토리지에 저장하십시오.

위의 예는 실생활에서 얻은 것이지만 컴퓨터 과학 영역에 쉽게 매핑 할 수 있습니다. 예를 들어 HTTP 헤더에는 컨텍스트 정보가 포함됩니다. 각 헤더 는 요청중인 정보 관한 것 입니다. 또는 2 단계 커밋 프로세스의 일부로 글로벌 트랜잭션 ID를 전송할 때 해당 트랜잭션 ID는 컨텍스트입니다. 트랜잭션 관리자 현재 진행중인 전체 작업에 대한 정보이므로 작업을 조정하는 데 도움이됩니다 .

희망이 도움이됩니다.


답변

컨텍스트는 정보를 전달하는 버킷으로 볼 수 있습니다. 일반적으로 메소드 호출에 직접 연결될 필요는 없지만 여전히 관련이있는 것을 전달하는 데 사용됩니다. 그것을 설명하는 평범한 방법은 “당신이 관심을 가질만한 것들”일 수 있습니다.

예를 들어 DB의 값을 업데이트하는 서비스를 작성하는 경우 레코드 ID와 새 값을 전달할 수 있습니다.

일반 인터페이스를 원하는 경우 서비스가 임의의 비즈니스 로직을 수행 할 수 있도록 전달할 컨텍스트를 정의 할 수도 있습니다. 따라서 서비스가 이러한 값에 따라 추가 논리를 수행 할 수 있으므로 컨텍스트에 사용자 인증, 사용자 세션 상태 등을 포함시킬 수 있습니다.


답변

이 스레드는 시작된 지 몇 년이 지난 2015 년입니다.

그럼에도 불구하고, 나는 “컨텍스트”를 이해하는 데 어려움을 겪고있는 나와 같은 누군가를 돕기 위해이 메시지를 게시하고 있습니다.

결코 Java 프로그램에서 Context를 사용했다고 주장하지 않으므로 하드 코딩으로 컨텍스트를 작성하는 것은 전적으로 귀하에게 달려 있습니다.

“개념적으로 문맥”은 “더 많은 정보”와 같습니다. 클라이언트가 서버에 요청을 할 때-요청을 수행하기 위해 서버가 “정보를 제공해 줄 수 있도록 더 많은 정보를 제공합니다”라고 말합니다. 따라서 요청과 함께 클라이언트는 세부 사항 번들을 제공합니다. 서버는 요청을 처리하는 데 필요한 모든 정보를 번들에서 선택하여 선택합니다. 이 번들은 “컨텍스트”입니다.

예 :

환자가 의사에게 가서 treat_me라고 말합니다 ( “두통이 있습니다”) 의사 사무실은 환자에게 채울 양식을 제공합니다. 환자는 양식을 채 웁니다. 이 양식은 “treat_me”요청을 수행하기 위해 의사가 사용합니다.

요청이 다음과 같이 보입니다.

treat_me ( "i have a headache", filled_form_num_23321 )

filled_form_num_23321 모습 은 다음과 같습니다 .

Q. 상태로 이끄는 것은 무엇입니까? A. 깔끔한 스카치의 마지막 못 10 개 못
Q. 환자 이름? A. Joe Bigdrinker
Q.Age? 98

이 거래 filled_form_num_23321에서 “문맥”입니다.

이것이 “컨텍스트”의 개념을 명확히하는 데 도움이되기를 바랍니다.


답변

나는 항상 컨텍스트를 내가 작업하고있는 객체 나 구조와 관련된 특정 상태로 생각합니다.

예를 들어, 뷰에서 drawRect를 사용하는 경우 (뷰에 대해 모든 드로잉을 수행해야하는 경우) 항상 핵심 그래픽 명령문을 실행할 currentGraphicsContext를 가져와야합니다. 이 컨텍스트에는 뷰의 경계, 획 색상, 선을 그리기위한 획 두께, 닫힌 패스를 채우기위한 채우기 색상 등이 포함됩니다.이 컨텍스트 (대부분의 다른 것들과 마찬가지로)는이 시점의 현재 상태입니다. 이 경우 그래픽 컨텍스트를 다음과 같은 상태 집합으로 생각하십시오.

획이 1.5 픽셀로 채워짐 채움 색상이 검은 색으로 표시됨

기본적으로 현재 시점의 상태 …


답변

실제적인 예를 제공합니다. 사용자 (로그온 한) 및 브라우저 언어에 따라 일부 정보를 가져 오거나 렌더링 할 수있는 특정 웹 페이지가 있다고 가정합니다. 정보를 가져 오는 논리는 사용자 및 언어와 독립적입니다. 귀하의 페이지에는 사용자와 언어가 제공됩니다. 귀 하나 영어 또는 스페인어인지 상관없는 논리에 대한 언어입니다.

일부 의사 코드 :

class FooPage
{
    void handleRequest(RequestContext context)
    {
        User user = context.getUser();
        Locale locale = context.getLocale();

        … do some logic based on the context
    }
}

그렇게 어렵지는 않지만 개념을 이해하는 데 시간이 걸립니다.


답변

컨텍스트실행을 나타냅니다 컨텍스트를 나타내며, 이는 코드의 특정 지점에서 도달 할 수있는 심볼과 해당 특정 실행에서 해당 심볼의 값입니다.

컨텍스트는 다음과 같은 이유로 중요한 개념입니다.

  1. 실행 가능한 단위 (기능, 절차, 명령)는 다른 결과를 생성하거나 다른 상황에서 다르게 동작 할 수 있습니다.
  2. 문맥이 더 크거나 복잡할수록 코드의 기능을 이해하기가 더 어려워집니다.

컨텍스트 클래스 를 작성 하거나 컨텍스트 매개 변수를 전달할 필요가 없습니다 . 함수 / 메소드에 전달 된 모든 매개 변수는 호출 될 때 실행 컨텍스트의 일부가됩니다.

영어를 사용하는 사람은 아니지만 상황 , 모듈성 , 커플 링 , 응집력 등과 같은 개념을 부드럽고 철저하게 소개하기 위해 Code Complete 를 복사하는 것이 좋습니다 .


답변

귀하의 경우 컨텍스트는 응용 프로그램이 실행되는 환경입니다.

제대로 실행하기 위해 응용 프로그램에 필요한 정보 / 서비스 / 기능을 제공합니다.

HTH