프로그램에 구성이 있는 이유는 무엇입니까?

프로그램을 작성할 때 많은 가정을 합니다.

예를 들어 파일의 위치를 ​​가정할 수 있습니다.
또는 출력의 색상.

이 가정은 오류가 항상 빨간색으로 표시된다는 것일 수 있습니다.

<p class="error">this is a mistake in red</p>



.error {
    color: red
}


이제 every culture이 아니라 색상 이해가 동일합니다. 또한 color weaknesses 또는 단순히 사용자의 선호도가 있습니다.

이제 다른 프로그램을 컴파일할 수 있습니다. 색 구성표마다 하나씩. 그러나 그것은 꽤 빨리 혼란스러워집니다. 우리는 무엇을 할 수 있습니까?

그래서 우리는 그것을 구성 가능하게 만듭니다.

I use pseudo code in the examples, not a concrete programming language.



.error {
    color: ${errorColor}
}


As soon as you are not sure about the standard or find a person who wants it different, make it configurable.



여기에서 aliteral를 변수로 대체했습니다.

이제 이 변수를 어떻게 설정합니까? 기본값은 다음과 같습니다.

errorColor='red'


프로그램을 구성 가능하게 하려면 어떻게 해야 합니까?


커맨드 라인?



가장 간단한 형태는 명령줄입니다.

플래그를 통해 색상 값을 기대할 수 있습니다.

my-tool --color=red


의사 코드는 다음과 같습니다.

if flag[color] != "" then
   errorColor=flag[color]
end


더 작은 도구는 명령줄에서 잘 제어할 수 있지만 많은 응용 프로그램의 경우 항상 기본 구성을 지정하는 것을 원하지 않습니다.


파일이 왜 필요한가요?



프로그램에 설정 옵션이 많으면 금방 혼란스러워집니다.

파일에서 값을 읽으면 이러한 기본값을 한 번 설정할 수 있습니다.

구성을 저장하는 데는 여러 가지 형식이 있습니다. 각 형식에는 장점과 단점이 있습니다.

다음은 완전하다고 주장하지 않는 몇 가지 형식입니다.
  • YAML
  • TOML
  • XML
  • INI
  • Properties

  • 이제 명령줄을 통해 값을 정의하고 구성 파일을 통해 더 많은 글로벌 표준을 지정할 수 있습니다.

    형식은 정말 취향의 문제입니다. 일부 프로그래밍 언어에는 즐겨찾기가 있지만 인기 있는 언어의 경우 각 유형에 대한 파서가 있습니다.

    저는 개인적으로 XML이 매우 정확하고 구체적이기 때문에 오랫동안 XML의 팬이었지만 최근에는 실제로 항상 YAML을 선호합니다.

    제 관점에서는 YAML이 사용자에게 가장 명확합니다. 물론 여기에는 Norway problem과 같은 문제가 있습니다. 하지만 문제를 해결할 수 있습니다.


    그러나 때로는 여러 프로그램에 대해 유효할 수 있는 환경에서 중앙 집중식으로 값을 정의하려고 합니다.

    이것은 환경 변수가 작용하는 곳입니다.


    환경 변수?



    이름에서 알 수 있듯이 환경 변수는 프로세스가 시작된 환경에서 특정 값을 정의합니다.

    이를 통해 표준 값을 쉽고 빠르게 조정할 수 있습니다.

    예를 들어 로캘 범주를 결정하기 위한 표준을 정의하는 변수 LANG 가 있습니다.

    echo $LANG
    > en_GB.UTF-8
    



    구성 가중치



    정보 출처가 여러 개인 경우 출처를 평가하는 방법을 결정해야 합니다.

    어떤 값이 사용됩니까?

    기본적으로 체인이 있습니다. 기본적으로 우리는 프로그램의 가치를 취합니다.



    물론 개별 소스의 가중치는 애플리케이션에 맞게 조정되어야 합니다.


    그러면 코드는 다음과 같을 수 있습니다.

    errorColor='red'
    
    if flag[color]  != "" then
       errorColor=flag[color]
    
    elseif env[COLOR] != "" then
       errorColor=env[COLOR]
    
    elseif file[color] != "" then
       errorColor=file[color]
    
    end
    


    값이 명령줄에 전달되면 다른 모든 값을 덮어씁니다. 왜요?

    값이 구성 파일의 값보다 더 즉각적이기 때문입니다.

    사용자가 지금 이 값을 사용하기를 원한다고 가정하기 때문입니다.


    너무 많이. 즐거운 구성 되세요!

    좋은 웹페이지 즐겨찾기