Parsing stdout con formato personalizzato o formato standard?

0

Per integrarsi con altri eseguibili, un eseguibile può lanciare un altro eseguibile e catturarne l'output da stdout.

Ma la maggior parte dei programmi scrive il messaggio di output su stdout in formato personalizzato e di solito in formato leggibile.

Quindi richiede che l'integratore di sistema scriva una funzione per analizzare l'output, che è considerato un problema e il codice parser potrebbe essere bacato.

Pensi che questo sia vecchio stile? Molti programmi in stile Unix lo fanno.

Pochissimi programmi scrivono su stdout in formato standard come XML o JSON, che è più moderno. Esempio: Veracity (DVCS) scrive JSON su stdout.

Dovremmo passare a utilizzare i formati moderni? Per un programma di console, leggibile dall'uomo o facilmente analizzabile: che è più importante?

    
posta linquize 17.11.2012 - 14:02
fonte

2 risposte

4

Non tentare di sembrare crotchety qui, ma una riga per record, con campi in colonne o delimitati in modo che possano essere facilmente analizzati da taglia senza scrivere codice personalizzato, è un formato standard ed è stata una scelta deliberata di progettazione. Leggi a volte la programmazione The Art of Unix di Eric S. Raymond. Aumenterà il vostro apprezzamento per le innovazioni che ora diamo per scontate, e contiene interi capitoli sull'importanza dell'output che è facilmente leggibile. Un formato ancora in uso e ampiamente utilizzato dopo 40 anni è un segno della sua forza , non della sua debolezza.

Un approccio comune consiste nell'utilizzare i flag della riga di comando per creare un formato di output che sia facile da analizzare sia per gli utenti che per i computer. Guarda i formati di output git porcellana per un buon esempio.

Una situazione in cui è raccomandato xml o json, tuttavia, è quando i dati sono nidificati arbitrariamente invece di qualcosa che può essere facilmente inserito in righe. Tale determinazione dovrebbe essere presa caso per caso. L'Xml è migliore dei formati binari, ma non è leggibile come una tabella di testo semplice.

    
risposta data 17.11.2012 - 18:40
fonte
1

L'analisi di qualsiasi forma di output può essere errata. Solo perché il formato di output segue un formato specifico non garantisce la semantica corretta. Se hai la fonte per gli eseguibili, puoi cambiare l'output in qualsiasi formato desideri. Se non lo fai, ma l'eseguibile soddisfa le tue esigenze, lo fai succhiare e analizza l'output.

    
risposta data 17.11.2012 - 17:08
fonte

Leggi altre domande sui tag