Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia)
Abbiamo provato per una settimana intera la Can-Am Origin, la Dual Sport elettrica del gruppo canadese BRP: ecco com'è andata tra città, autostrada e un primo assaggio di sterrato
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco
Nelle ultime settimane abbiamo provato il mouse Logitech G305, la tastiera G316 X 98 e le cuffie G325. Si tratta del setup entry-level di Logitech che ormai, di "entry-level" ha ben poco. Tastiera e mouse offrono prestazioni di livello competitivo con quasi nessuna rinuncia e un livello di personalizzazione estremamente elevato. Le cuffie, invece, hanno mostrato qualche debolezza, ma propongono un ventaglio di funzionalità completo che consente di abbandonare completamente i cavi
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-11-2015, 17:03   #1
dany1900
Member
 
Iscritto dal: Nov 2011
Messaggi: 49
[XML] Simulare codice bash

Salve dovrei fare qualcosa di questo tipo,il mio codice bash è cosi formato,lancia un simulatore che tirerà fuori molti valori su un file,poi devo svolgere operazioni su un file next.lp ed avviare glpsol...insomma un codice bash con variabili,file.dat etc ....adesso vorrei parsarlo e dichiarare tutto con xml,qualcuno sa aiutarmi? C è un modo semplice?

ecco il mio codice

Codice:
#!/bin/bash 

#cancello eventuali file rimasti dalle precedenti esecuzioni
find . -type f  -name sequenzanextlpdisordinata.dat -exec rm {} \;
find . -type f  -name sequenzasimulatore.dat -exec rm {} \;
find . -type f  -name SequenzaSimulatoreFinale.dat -exec rm {} \;
find . -type f  -name SimulatoreFinale.dat -exec rm {} \;

#metto i comandi da lanciare nelle variabili in maniera tale da richiamarle piu semplicemente quando servono
esecuzione="gcc -o simulatore simulator.c -DINIT_X_IL=valore_x_il -DINIT_X_VO=valore_x_vo"
esecuzione1="./simulatore "
esecuzione2="glpsol --lp next.lp -o next.sol"

#compilo il simulatore
$esecuzione
#metto il risultato estratto dal simulatore in un file
$esecuzione1 > sequenzasimulatore.dat 



#questa in un colpo filtra con awk il file e restituisce la sequenza ordinata e numerata del simulatore,senza quello che non serve e appende il risultato in un file 
arr1=( $(awk -F " " '{if (/^[0-9]/) print $1 " " $2 " " $3 " " $4}; END {printf "\n"}' sequenzasimulatore.dat | tee -a SequenzaSimulatoreFinale.dat ) )

#setto i valori delle variabili x_iL,x_vO a 0 e w_u a 1 nel file next.lp,per fare la prima esecuzione
sed -ri "s/x_iL = [\-]*[0-9]\.*[0-9]*/x_iL = 0  /; s/\x_vO = [\-]*[0-9]\.*[0-9]*/x_vO = 0 /; s/\w_u = [0-1]/w_u = 1 / " next.lp
sed -i -e '1d' SequenzaSimulatoreFinale.dat

arr3=( $(awk -F " " '{if (/^[0-9]/) print $1 " " $2 " " $3 " " $4}; END {printf "\n"}'   SequenzaSimulatoreFinale.dat ) )

#imposto l intervallo di valori del file,erano da 10000 passi cosi è diventato da 1000
sed -n -i '1~10p'   SequenzaSimulatoreFinale.dat 


#numero le righe nel file,necessario per graficare poi con gnuplot
cut -d ' ' -f 1 --complement SequenzaSimulatoreFinale.dat | nl > simulatorefinaleordinato.dat

#tolgo la colonna relativa all azione w_u,non mi serve per graficare con gnuplot,cosi facendo il file ricavato dal simulatore è pronto per essere graficato
arr5=( $(awk -F " " '{if (/[0-9]/) print $1 " " $3 " " $4}; END {printf "\n"}' simulatorefinaleordinato.dat | tee -a SimulatoreFinale.dat  ))





#leggo tutti i valori del file sequenzasimulatore riga per riga 
while read line; do
grep -q '^[0-9]' <<< "$line" || continue ##prendo solo le righe che iniziano con un intero

 arr4=($(cut  -f 2  <<< "$line" )) #"copio" il valore dell azione,la seconda colonna del file ricavato dal simulatore
 sed -ri " s/(^w_u = )([+-]?[0-9]+(\.[0-9]+)?)(.*)/\\1${arr4[0]}/" next.lp #incollo il valore dell azione copiato in precedenza e lo assegno a w_u  nel file next.lp  


$esecuzione2    ##faccio l esecuzione con glpsol


##prendo il secondo campo di x_il' e x_vO' in next.sol e lo metto in sequenzanextlpdiordinata.dat,file non ancora definitivo
arr2=( $(awk  -F "' "   'BEGIN {printf d line" "}; {if (/x_iL|x_vO/) printf d $2" "};  END {printf "\n"}'  next.sol | tee -a  sequenzanextlpdisordinata.dat ) )



##poi aggiorno il file next.lp con i valori dell'array,quindi x_iL e x_vO verranno aggiornati con i valori restituiti dall esecuzione in next.sol
sed -i s"/\(x_iL = \)[\-]*[0-9]\.*[0-9]*/\\1${arr2[0]}/; s/\(x_vO = \)[0-9]\.*[0-9]*/\\1${arr2[1]}/" next.lp






done < simulatorefinaleordinato.dat #prendo sequenzasimulatore.dat come file in cui fare le operazioni sopra citate

#numero le righe nel file costruendo cosi il file definitivo che puo essere graficato con gnuplot
cat sequenzanextlpdisordinata.dat | nl > SequenzaNextLp.dat 
 
#elimino i file inutili  cosi da non avere la cartella troppo incasinata di cose che non servono
find . -type f  -name sequenzanextlpdisordinata.dat -exec rm {} \;
find . -type f  -name sequenzasimulatore.dat -exec rm {} \;
find . -type f  -name SequenzaSimulatoreFinale.dat -exec rm {} \;

# Genero un file .gp temporaneo che poi verrà elaborato da gnuplot,lo scopo è quello di confrontare il file del simulatore a quello generato da next.lp col glpsol
(   echo 'set term png' #setto il terminale con l estensione png,le immagini saranno quindi di questo formato
   echo 'set output "grafico x_iL.png"' #setto come output di questo grafico il nome "grafico x_iL.png"
   echo 'plot "SimulatoreFinale.dat" using 1:2 w l, "SequenzaNextLp.dat" using 1:2 w l' #genero il grafico prendendo la prima e seconda colonna dei due file da confrontare (confronto la prima variabile x_iL)
echo 'set output "grafico x_vO.png" ' #do un nome all altro file da graficare
echo 'plot "SimulatoreFinale.dat" using 1:3 w l, "SequenzaNextLp.dat" using 1:3 w l' #genero il grafico prendendo la prima e terza colonna dei due file da confrontare (confronto la seconda variabile x_vO)
echo 'set output "grafico completo.png"' #do il nome al grafico completo che verrà generato per ultimo
echo 'plot "SimulatoreFinale.dat" using 1:2 w l , "SimulatoreFinale.dat" using 1:3 w l, "SequenzaNextLp.dat" using 1:2 w l, "SequenzaNextLp.dat" using 1:3 w l' ) > temp.gp #genero un grafico che comprende i confronti sia della prima variabile che della seconda
   
#avvio il file temporaneo creato in pecedenza,cosi da eseguire tutte le istruzioni    
gnuplot temp.gp

#elimino il file temporaneo creato prima,ormai i grafici sono stati generati e non serve piu
find . -type f  -name temp.gp -exec rm {} \;
ho difficoltà proprio gia dall inizio,come faccio a dichiarare tutti i dati del file next.lp e sequenzasimulatore.dat?

sequenza simulatore.dat è cosi composto
1 0.5 3.4 4.3 3
2 3 4.5 3.2 1
.
.
.
100000 4.5 3.4 2 3

devo dichiarare tutto con xml,ma come avrete capito non sono pratico di questo linguaggio

Ultima modifica di dany1900 : 09-12-2015 alle 19:16.
dany1900 è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2015, 19:09   #2
dany1900
Member
 
Iscritto dal: Nov 2011
Messaggi: 49
nessuno sa proprio aiutarmi?
dany1900 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2015, 16:16   #3
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Forse dai qualcosa per scontato, io non ho capito cosa vuoi fare, mi sfugge la relazione tra bash e xml, il primo è un linguaggio di scripting, il secondo un linguaggio di markup.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2015, 19:38   #4
dany1900
Member
 
Iscritto dal: Nov 2011
Messaggi: 49
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Forse dai qualcosa per scontato, io non ho capito cosa vuoi fare, mi sfugge la relazione tra bash e xml, il primo è un linguaggio di scripting, il secondo un linguaggio di markup.
Infatti non ho le idee chiarissime,ma simulare quel codice con un parsing e implementarlo un po con xml non è possibile?
dany1900 è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2015, 14:19   #5
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13045
Quote:
Originariamente inviato da dany1900 Guarda i messaggi
Infatti non ho le idee chiarissime,ma simulare quel codice con un parsing e implementarlo un po con xml non è possibile?
Di certo hai le idee confuse... ma tanto confuse.

Cerca di spiegare meglio qual è il problema e cosa vuoi fare, se non lo sai neanche te di certo non lo possiamo sapere noi.

Da quel poco che si capisce devi lanciare un simulatore che tira fuori dei dati e li salva su file. OK.

Che cosa c'azzecca l'XML? Vuoi usarlo come INPUT (per passare parametri di configurazione ad esempio) o dev'essere OUTPUT di qualcosa (per salvare i risultati)?
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2015, 08:41   #6
fano
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2095
XML serve per mostrare dei dati è come un file .txt o .doc non è un linguaggio di programmazione quindi non può "simulare" bash così come non può simulare C o null'altro...

Perché non fare lo script in bash appunto usando... bash?
fano è offline   Rispondi citando il messaggio o parte di esso
Old 30-11-2015, 11:06   #7
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Quote:
Originariamente inviato da dany1900 Guarda i messaggi
Infatti non ho le idee chiarissime,ma simulare quel codice con un parsing e implementarlo un po con xml non è possibile?
Partiamo dall'inizio... il tuo codice attualmente funziona? Se si, c'è un motivo per il quale vorresti modificarlo? Se non c'è motivo allora lascialo com'è, se invece hai un'esigenza spiega qual'è e vediamo di capire esattamente cosa devi fare.
Se ti interessa approfondire il linguaggio xml per cultura personale possiamo sicuramente darti chiarimenti ed indicarti tutorial adeguati senza scomodare la shell bash.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2015, 19:44   #8
dany1900
Member
 
Iscritto dal: Nov 2011
Messaggi: 49
Allora cerco di spiegarmi meglio,lo script bash funziona,ma ho esigenza di fare lo stesso lavoro con xml,partendo da quel codice,e poi usare un parser per sostituire numero e nome variabili etc ,il comportamento però deve seguire quello dello script bash

qualcosa del genere

Codice:
<configuration>
<simulator>
<compilator>gcc -o compilatore simulator.c </compilator>
<src>simulator.c</src>
<numero_passi>10000</numero_passi>
<periodicita>10</periodicita>
<colonna_passi>1</colonna_passi>
<colonna_azione>2</colonna_azione>
<colonna_var1>3</colonna_ var1>
<colonna_var2>4</colonna_var2>
<output_sim>simulatorefinale.dat</output_sim>
</simulator>
<MILP>
<src>next.lp</src>
<var1>x_iL</var1>
<var2>x_vO</var2>
<azione>w_u</azione>
<esecuzione>glpsol --lp next.lp -o next.sol</esecuzione>
<output_exe>next.sol</output_exe>
<final_output>SequenzaNextLp.dat</final_output>
</MILP>
<gnuplot>
<format>set term png</format>
<input1_src>SimulatoreFinale.dat</input1_src>
<input2_src>SequenzaNextLp.dat</input2_src>
<graph_var1>
<setting1>set output "grafico x_iL.png"</setting1>
<plot>plot "SimulatoreFinale.dat" using 1:2 w l, "SequenzaNextLp.dat" using 1:2 w l</plot>
</graph_var1>
<graph_var2>
<setting2>set output "grafico x_vO.png"</setting2>
<plot2>plot "SimulatoreFinale.dat" using 1:3 w l, "SequenzaNextLp.dat" using 1:3 w l</plot2>
</graph_var2>
<graph_full>
<setting3>set output "grafico completo.png"</setting3>
<plot3>plot "SimulatoreFinale.dat" using 1:2 w l , "SimulatoreFinale.dat" using 1:3 w l, "SequenzaNextLp.dat" using 1:2 w l, "SequenzaNextLp.dat" using 1:3 w l</plot3>
</graph_full>
</gnuplot>
</configuration>
Questa è una bozza,ma devo implementare quel codice bash in xml e poi parsarlo,quindi come input e poi esegue lo script bash dopo le dovute procedure di parsing/validazione
Dovrei anche dirgli che come si puo vedere dallo script bash , ad ogni esecuzione viene presa l azione del simulatore anche nel "MILP",spero mi sono spiegato bene perche avrei difficoltà anche nel parsing,purtroppo non sono cosi pratico di xml

Ultima modifica di dany1900 : 02-12-2015 alle 19:52.
dany1900 è offline   Rispondi citando il messaggio o parte di esso
Old 03-12-2015, 07:38   #9
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Il mio sospetto è che tu abbia un tool di automazione configurabile attraverso un file in formato xml, se è così devi dirci come si chiama il tool, altrimenti è impossibile aiutarti. Se invece mi sbaglio allora credo proprio che ciò che vuoi fare sia impossibile.

P.S. non sarà per caso ant???
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 09-12-2015, 17:51   #10
dany1900
Member
 
Iscritto dal: Nov 2011
Messaggi: 49
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Il mio sospetto è che tu abbia un tool di automazione configurabile attraverso un file in formato xml, se è così devi dirci come si chiama il tool, altrimenti è impossibile aiutarti. Se invece mi sbaglio allora credo proprio che ciò che vuoi fare sia impossibile.

P.S. non sarà per caso ant???
Non ho alcun tool...quello che dovrei fare è prendere l xml di input ed eseguire tutto quel codice bash

quindi ad esempio nella prima parte

Codice:
#cancello eventuali file rimasti dalle precedenti esecuzioni
find . -type f  -name sequenzanextlpdisordinata.dat -exec rm {} \;
find . -type f  -name sequenzasimulatore.dat -exec rm {} \;
find . -type f  -name SequenzaSimulatoreFinale.dat -exec rm {} \;
find . -type f  -name SimulatoreFinale.dat -exec rm {} \;
ci sarà una printf ad esempio,dopo dovrei eseguire il codice bash alla stessa maniera

Codice:
<compilator>gcc -o simulatore simulator.c -DINIT_X_IL=valore_x_il -DINIT_X_VO=valore_x_vo </compilator>
<source>simulator.c</source>
<esecuzione>./ simulatore</esecuzione>
<numero_passi>10000</numero_passi>
<periodicita>10</periodicita>
ovvero prima cosa cerco dentro al tag xml simulatore cosa c è...nel bash vedo che devo compilare prima,quindi nell xml leggo dentro il tag compilator,poi eseguire quello che c è all interno del tag esecuzione,quindi eseguirà ./simulatore nel mio caso etc
praticamente dovrei parsare il file xml in maniera tale da generare quello script,trovo un po di difficoltà a fare questo
dany1900 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
La NASA annuncia il nuovo telescopio spa...
HONOR pubblica The Sea Between Us, un co...
L'Olanda punta su NixOS e open source pe...
OPPO Find X10 Pro Max, il flagship con t...
Gli smartphone Samsung potrebbero avere ...
GeForce Now arriverà sui Googlebo...
Opus 5.5 e GPT-6 Sol nello stesso pomeri...
Weekend Amazon, le prime 5 offerte sono ...
Mini Compressore a 21,84€: gonfia le gom...
Gemini si aggiorna, ora può conne...
Da 32 a 65 pollici: ecco le TV più...
Xiaomi Redmi Note 17 a 269€: ecco perch&...
ASUS avverte i clienti: accesso non auto...
Già record di vendite su Amazon p...
Eni mette un tetto ai prezzi dei carbura...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:12.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v