¿Cuál es el formato de archivo de configuración legible por el ser humano más simple? [cerrado]

12

El archivo de configuración actual es el siguiente:

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'

Esto se lee con python en un diccionario anidado:

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

¿Hay una mejor manera de hacer esto? La idea es obtener el tipo de comportamiento de XML y evitar XML el mayor tiempo posible. Se asume que el usuario final es casi totalmente analfabeto con la computadora y básicamente usa el bloc de notas y copiar y pegar. Por lo tanto, el tipo de "encabezado + variables" estándar de python se considera demasiado difícil.

El usuario ficticio edita el archivo de configuración, los programadores capaces manejan los diccionarios. El diccionario anidado se elige para una fácil división (el registrador no necesita o no puede tener / editar los parámetros de la ventana principal).

    
pregunta Juha 26.03.2012 - 16:11

6 respuestas

14

Puedes usar algo como YAML . Aquí hay un enlace a un ejemplo:

enlace

--- !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.

Puede encontrar enlaces de Python para él en PyYAML . Es un poco más fácil de usar que JSON (que es lo que parece su segundo ejemplo).

    
respondido por el jmq 26.03.2012 - 17:05
6

Lo mejor que puede hacer es proporcionar una maqueta de su solución, y quizás una maqueta de un par de otras soluciones, y preguntar a dos o tres usuarios representativos de su sistema. Serán mucho mejores para decirle lo que les gusta que las personas que se seleccionan a sí mismas y que responden preguntas en este sitio.

Dicho esto, para usuarios "básicamente analfabetos informáticos", creo que el formato que muestra en su pregunta es probablemente el mejor formato de texto sin formato. Si realmente son analfabetos, es posible que desee considerar una GUI simple para que no tengan que editar manualmente los archivos de configuración.

    
respondido por el Bryan Oakley 27.03.2012 - 15:11
3

Pierde todo lo que puedas perder. name.name.name=value , cada uno en una línea separada, es lo más simple que puede obtener. No necesitas las citas para el análisis, sabes cuando true es un booleano y cuando true es una cadena, no hagas que el "tonto" te diga eso. Para cadenas, si el campo no debería tener espacios en blanco iniciales o finales, quítelos usted mismo.

    
respondido por el Ross Patterson 27.03.2012 - 23:10
3

Imagina a una persona china que no sabe inglés y está tratando de leer tu archivo de configuración. Alternativamente, imagine que el archivo de configuración está en árabe (y que usted no sabe árabe). Ahora pregúntate, ¿es esto realmente legible para los humanos?

Incluso si el lector sabe inglés, todavía no tiene idea de si "logger.datarate = 100" significa 100 caracteres por segundo, o 100 GiB por hora, o 100 pollos por tonelada métrica.

El formato de archivo más legible para los humanos, es un archivo binario con un cuadro de diálogo / asistente / configurador basado en GUI decente (con internacionalización, sistema de ayuda, etc.).

    
respondido por el Brendan 18.11.2014 - 07:40
2

Estoy con Patrick Hughes. Construye una aplicación sencilla para editar configuraciones. El archivo de configuración en sí podría ser un poco más complejo y podría contener atributos para el uso del editor (nombre para mostrar, texto de ayuda, tipo de valor, valor mínimo / máximo, etc.)     

respondido por el Misko 27.03.2012 - 19:25
2

Digo que lo que tienes (archivo de propiedades) ya es el mejor formato de configuración legible. :)

Aquí están mis argumentos:

  • El archivo de propiedades es solo un par clave / valor. Fácilmente legible por humanos.
  • Sintaxis concisa, no como xml.
  • Fácil de anidar, con '.', como en su ejemplo.
  • La estructura plana permite una fácil diferenciación en un entorno de fuente controlada.

El último punto es realmente muy importante. Dado que los proyectos de hoy en día están todos divididos en ramas, el archivo de configuración puede causar mucho dolor al fusionar las sucursales. El formato de archivo plano como el archivo de propiedades es más fácil de combinar que el archivo de estructura de árbol.

    
respondido por el ming_codes 18.11.2014 - 02:01

Lea otras preguntas en las etiquetas