Autore Topic: costruire un testo da dati in DB con eleganza  (Letto 436 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
costruire un testo da dati in DB con eleganza
« il: 09 Marzo 2018, 18:42:56 »
CDT devo fare il file di configurazione di un programma linux (un demone ceh viene avviato all'avvio del computer), prendendo i parametri da un database.

C'e' un modo elegante per generare file di testo che non siano la pur efficente generazione riga per riga dello stesso?

Classi parser di qualche tipo che possano essere "istruite"? SED?

molto generico capisco .....
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #1 il: 09 Marzo 2018, 22:48:18 »
molto generico capisco .....

Appunto  >:(

Non potresti essere un tantinello più preciso?
Ad esempio:
Devi ricavare i dati da un campo text di una tabella? Se si, come devi ordinarli, con quale criterio?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #2 il: 21 Marzo 2018, 18:24:47 »
ti copio incollo un file di configurazione compilato a mano.

Codice: [Seleziona]
general {
    dabmode 1
    nbframes 0
    syslog false
    tist true
    managementport 12720 ; 12720 per avere la gui che si interfaccia al mux
}

remotecontrol {
    telnetport 12721 ; la 12722 server a zeromq RC per avere le statistiche dalla GUI
    zmqendpoint "tcp://lo:12722"
}

ensemble {
    id 0x4fff ; you can also use decimal if you want
    ecc 0xe0  ;this is for italy by etsi papers .....
    local-time-offset auto  ; automatically calculate from system local time
                            ; or
    label "ODR_toscana-test"
    shortlabel "ODR_tosc"
}

services {
    srv-antennaradioesse { label "ANTENNA.R.ESSE" ;era ANTENNARADIOESSE, ma incompatibile con A.R.ESSE
     shortlabel "A.R.ESSE"
   id 0xa000
  }

    srv-controradio { label ".CONTRORADIO." ; era CONTRORADIO , ma incompatibile con CONTROR.
        shortlabel "CONTROR."
  id 0x5a73
}

    srv-novaradio { label "NOVARADIO ARCI"
    shortlabel "NOVARDIO"
    id 0x5063
     }

    srv-radio3network { label "Radio 3 Network"
        shortlabel "Radio 3" ; in realta' non hanno deciso lo short? rds?
  id 0xfffe
}

    srv-radioalleluia { label "RADIO ALLELUIA" ; in realta' non si sa esattamente
  shortlabel "ALLELUIA" ; ANCHE QUESTO NON SI SA ESATTAMENTE

  }

    srv-radiodiffusionepistoia { label "R.DIFFUSIONE.PT"
        shortlabel "R.DIF.PT"
  id 0x50c8
}

    srv-radiofirenze { label "RADIO FIRENZE"
       shortlabel "RFIRENZE"
       id 0x50a8
  }

    srv-radioincontrivaldichiana { label "RadioIncontriBlu"
         shortlabel "Incontri"
   id 0x548f
}

    srv-radiorosa { label "WWW.RADIOROSA.IT" ; era www.radiorosa.it , ma incompatibile con *ROSA*.
    shortlabel ".ROSA."
    id 0x5428
     }

    srv-radiosiena { label "RADIO.SIENA" ; era Radio Siena ma incompatibile con R:SIENA
     shortlabel "R.SIENA" ; ipotizzato
     id 0x5ac0
    }

    srv-radiosiena2 { label "Radio Siena 2"
      shortlabel "Siena 2"
      id 0xffaa      
     }

    srv-radiotoscana { label "RADIO TOSCANA"
       shortlabel "RTOSCANA"
       id 0x5aa7
      }

}

subchannels {
    sub-antennaradioesse {
        type dabplus
inputfile "tcp://*:9000"
        bitrate 64
protection 2
id 1
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-controradio {
        type dabplus
        inputfile "tcp://*:9001"
        bitrate 64
protection 2
        id 2
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-novaradio {
        type dabplus
inputfile "tcp://*:9002"
        bitrate 64
protection 2
id 3
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radio3network {
        type dabplus
        inputfile "tcp://*:9003"
        bitrate 64
protection 2
        id 4
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radioalleluia {
        type dabplus
inputfile "tcp://*:9004"
        bitrate 64
protection 2
id 5
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiodiffusionepistoia {
        type dabplus
        inputfile "tcp://*:9005"
        bitrate 64
protection 2
        id 6
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiofirenze {
        type dabplus
inputfile "tcp://*:9006"
        bitrate 64
protection 2
id 7
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radioincontrivaldichiana {
        type dabplus
        inputfile "tcp://*:9007"
        bitrate 64
protection 2
        id 8
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiorosa {
        type dabplus
inputfile "tcp://*:9008"
        bitrate 64
protection 2
id 9
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiosiena {
        type dabplus
        inputfile "tcp://*:9009"
        bitrate 64
protection 2
        id 10
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiosiena2 {
        type dabplus
inputfile "tcp://*:9010"
        bitrate 64
protection 2
id 11
        zmq-buffer 40
        zmq-prebuffering 20
    }

    sub-radiotoscana {
        type dabplus
        inputfile "tcp://*:9011"
        bitrate 64
protection 2
        id 12
        zmq-buffer 40
        zmq-prebuffering 20
    }

}

components {
   
    comp-antennaradioesse {
type 0
service srv-antennaradioesse
        subchannel sub-antennaradioesse
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-controradio {
service srv-controradio
        subchannel sub-controradio
        ;figtype 0x2 ;questo per lo slideshow ?
    }

    comp-novaradio {
service srv-novaradio
        subchannel sub-novaradio
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-radio3network {
service srv-radio3network
        subchannel sub-radio3network
        ;figtype 0x2 ;questo per lo slideshow ?
    }

    comp-radioalleluia {
service srv-radioalleluia
        subchannel sub-radioalleluia
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-radiodiffusionepistoia {
service srv-radiodiffusionepistoia
        subchannel sub-radiodiffusionepistoia
        ;figtype 0x2 ;questo per lo slideshow ?
    }

    comp-radiofirenze {
service srv-radiofirenze
        subchannel sub-radiofirenze
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-radioincontrivaldichiana {
service srv-radioincontrivaldichiana
        subchannel sub-radioincontrivaldichiana
        ;figtype 0x2 ;questo per lo slideshow ?
    }

    comp-radiorosa {
service srv-radiorosa
        subchannel sub-radiorosa
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-radiosiena {
service srv-radiosiena
        subchannel sub-radiosiena
        ;figtype 0x2 ;questo per lo slideshow ?
    }

    comp-radiosiena2 {
service srv-radiosiena2
        subchannel sub-radiosiena2
;figtype 0x2 ;questo per lo stream dello slideshow ?
    }

    comp-radiotoscana {
service srv-radiotoscana
        subchannel sub-radiotoscana
        ;figtype 0x2 ;questo per lo slideshow ?
    }

}


outputs {
    ; Output RAW ETI NI to standard output
    ;stdout "fifo:///dev/stdout?type=raw"

    ; ZeroMQ output example
    ; Listen on all interfaces, on port 9100
    ;zmq  "zmq+tcp://*:9100"

    ; to send output to farsite cards Raw
    ; farsync "raw://sync0"

    ;to output to ETI file (abilita il throttle per non avere un file corrotto)
    ;file "file:///var/odrmux_out/testout.eti?type=raw"
   
    ;file "file:///var/odrmux_out/testout.eti?type=framed" ;NOT standard
    ;file "file:///var/odrmux_out/testout.eti?type=streamed" ;NOT standard

    ; Throttle output to real-time (one ETI frame every 24ms)
    ;throttle "simul://"

    edi {
destinations {
   
  ; multicast {
  ; destination "224.20.10.1"
  ;  source "192.168.0.107"
  ;  ttl 1
  ;  sourceport 14000
  ;  }
   
     unicast {
    ;destination "192.168.0.151"
destination "127.0.0.1"
    sourceport 14000
        ttl 1
              }
}
chunk_len 207
port 4100
        ;ttl 1
enable_pft true
tagpacket_alignment 8
dump false
verbose false
fec 2
    }


;net_udp "udp://192.168.1.4:1234"
;zmq "zmq+tcp://*:9100"
throttle "simul://"
}

Come vedete, ci sono dei "blocchi" ben definiti, e dei valori associati a specifici "campi", che sono diversi da emittente ad emittente.
Dovrei rifarne uno a partire da valori che possono cambiare, memorizzati in un DB.

Alla piu' brutta mi faccio tiga per riga, ma sono sicuro che c'e' qualche strumento informatico piu' agevole (..... che poi e' lo stesso blocco mentale che ho con l'html :-( )
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #3 il: 21 Marzo 2018, 18:29:48 »
Appunto  >:(

Non potresti essere un tantinello più preciso?


Gianluigi, non sapevi  :-\ che c'è il premio anche per questo nuovo indovinello ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #4 il: 21 Marzo 2018, 18:38:44 »

Gianluigi, non sapevi  :-\ che c'è il premio anche per questo nuovo indovinello ?

Veramente no  :-\ ma approfitto per farti i complimenti, nell'altro hai vinto tu (Confezione di vino dopg e salsicce di porco)  :ok:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #5 il: 21 Marzo 2018, 18:56:01 »
Confezione di vino dopg e salsicce di porco

Cioè... due cose che non posso neppure toccare !    :hard:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:costruire un testo da dati in DB con eleganza
« Risposta #6 il: 21 Marzo 2018, 19:00:33 »
Peccato  :'(

Allora che le mandi pure a me, anche io non posso ma a volte faccio strappi alla regola  ;D

Lato lavoro:
allegfede,
guarda un po questa discussione se per caso può aiutarti  :-\

 :ciao: :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro