사람이 읽을 수있는 가장 간단한 구성 파일 형식은 무엇입니까? [닫은]


13

현재 구성 파일은 다음과 같습니다.

mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200

mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30

logger.datarate = 100
logger.enable = True
logger.filename = './test.log'

이것은 파이썬으로 중첩 된 사전을 읽습니다.

{
  'mainwindow':{
    'button':{
      'label': {'value':'apply'},
       ...
  },
  'logger':{
     datarate: {'value': 100},
     enable: {'value': True},
     filename: {'value': './test.log'}
  }, 
  ...    
}

더 좋은 방법이 있습니까? 아이디어는 XML 유형의 동작을 가져오고 가능한 한 XML을 피하는 것입니다. 최종 사용자는 거의 완전히 컴퓨터 문맹으로 가정하고 기본적으로 메모장과 복사 붙여 넣기를 사용합니다. 따라서 파이썬 표준 "헤더 + 변수"유형은 너무 어려운 것으로 간주됩니다.

더미 사용자는 구성 파일을 편집하여 프로그래머가 사전을 처리 할 수 ​​있습니다. 쉽게 분리 할 수 ​​있도록 중첩 된 사전이 선택됩니다 (로거는 기본 창 매개 변수를 필요로하지 않거나 편집 할 수 없음).


11
가장 간단한 방법은 이러한 구성 파일을 편집하는 것 외에는 아무것도하지 않는 작은 앱을 클라이언트에 빌드하는 것입니다.
Patrick Hughes

11
가장 간단한 구성 파일 인간은 이다 : Do what I want.그것은 불구하고, 어려운 컴퓨터입니다 : P
Sjoerd

@PatrickHughes 이미 존재한다고 생각합니다. 그러한 프로그램을 알고 있습니까? 나는 단순한 것들을 "꽤 인쇄"하는데 시간을 갖고 싶지 않습니다. 문제는 작은 프로그램 나누기를 추가하면 더 많은 것이 필요하다는 것입니다. 모든 컴퓨터에는 vim, textedit 또는 notepad가 있습니다.
Juha

@sjoerd 이것은 내가 알고 싶었던 것입니다. 이런 의미에서 프로그램보다 인간 언어에 더 많은 알고리즘이 있습니까?
Juha

2
사용자는 무엇이든 깰 수 있습니다. 그들이 수동으로 편집한다면, 지원할 준비를하십시오mainwindow.title =='test"
MSalters

답변:


15

YAML 과 같은 것을 사용할 수 있습니다 . 다음은 예제에 대한 링크입니다.

http://www.yaml.org/start.html

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

PyYAML 에서 Python 바인딩을 찾을 수 있습니다 . JSON보다 약간 사용자 친화적입니다 (두 번째 예제는 다음과 같습니다).


10
YAML은 멋지지만 확실히 가장 단순하지는 않습니다.
9000

1
나는 그의 질문의 맥락에서 "XML 유형의 행동을 취하고 가능한 한 오랫동안 XML을 피하라"고 생각했다. 나는이 요구 사항을 충족시키는 동안 더 간단한 것을 확신하지 못합니다.
jmq

흠, "."를 변경하면 첫 번째 코드 블록 YAML도 마찬가지입니다. "="to ":"및 aphostropes를 잃어 버리셨습니까? 약간의 중복 데이터가 있지만 가장 좋아하는 표기법은 사용자에게 달려 있습니다.
Juha

3
말할 것도없고 같은 더 애매한 물건 - 나는 꽤 특정 비 기술적 인 사용자가 들여 쓰기의 잘못을 얻을려고 해요 >후를 comments:1, 및 &*의 앞에id001
Izkata

6

최선의 방법은 솔루션 모형과 다른 몇 가지 솔루션 모형을 제공하고 시스템의 2 ~ 3 명의 대표 사용자에게 요청하는 것입니다. 그들은이 사이트에서 질문에 대답하는 스스로 선택한 사람들보다 그들이 당신이 좋아하는 것을 훨씬 잘 알려줄 것입니다.

"기본적으로 컴퓨터 문맹"사용자의 경우 질문에 표시하는 형식이 아마도 가장 일반적인 텍스트 형식이라고 생각합니다. 이들이 실제로 컴퓨터에 익숙하지 않은 경우 간단한 GUI를 고려하여 구성 파일을 수동으로 편집하지 않아도됩니다.


3

잃을 수있는 모든 것을 잃어 버리십시오. name.name.name=value, 각각은 별도의 줄에 있으며 가능한 한 간단합니다. 구문 분석에는 따옴표가 필요하지 않습니다 true. 부울 일 때와 true문자열 일 때는 "멍청한 사람"이라고 말하지 마십시오. 문자열의 경우 필드에 선행 / 후행 공백이 없어야하는 경우 직접 제거하십시오.


3

구성 파일을 읽으려고하는 영어를 모르는 중국인을 상상해보십시오. 또는 구성 파일이 아랍어로되어 있고 아랍어를 모른다고 가정하십시오. 이제 스스로에게 물어보십시오. 이것은 정말로 인간이 읽을 수 있습니까?

독자가 영어를 알고 있더라도 "logger.datarate = 100"이 초당 100 자, 시간당 100GiB 또는 톤당 100 마리의 닭을 의미하는지 여부는 아직 모릅니다.

가장 사람이 읽을 수있는 파일 형식은 적절한 GUI 기반 대화 상자 / 마법사 / 구성자 (국제화, 도움말 시스템 등)가있는 이진 파일입니다.


2

저는 Patrick Hughes와 함께 있습니다. 구성 편집을위한 간단한 앱을 빌드하십시오. 구성 파일 자체는 좀 더 복잡 할 수 있으며 편집기에서 사용할 속성 (표시 이름, 도움말 텍스트, 값 유형, 최소 / 최대 값 등)을 포함 할 수 있습니다.


1
여기서 문제는 앱이 osx, win 및 ubuntu를 지원하고 파일 시스템에 액세스해야한다는 것입니다. 그래서 내 유일한 대안은 정적 파이썬 실행 파일 (및 기본 모양의 경우 wx)입니다. 아니면 다른 언어가 있습니까? 정적 자바 실행 파일을 만들 수 있습니까?
Juha

QT 앱은 귀하의 경우 간단하고 컨 포멀 한 솔루션입니다
Riga

2

나는 당신이 가지고있는 (속성 파일)이 이미 인간이 읽을 수있는 최고의 구성 형식이라고 말합니다. :)

내 주장은 다음과 같습니다.

  • 속성 파일은 키 / 값 쌍입니다. 사람이 쉽게 읽을 수 있습니다.
  • XML이 아닌 간결한 구문.
  • 예와 같이 '.'로 쉽게 중첩 가능합니다.
  • 평탄한 구조로 인해 소스 제어 환경에서 쉽게 확산 할 수 있습니다.

마지막 요점은 실제로 매우 중요합니다. 요즘 프로젝트가 모두 브랜치로 나뉘어져 있으므로 브랜치를 병합 할 때 구성 파일로 인해 많은 고통이 발생할 수 있습니다. 속성 파일과 같은 플랫 파일 형식은 트리 구조 파일보다 병합하기 쉽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.