Quando si cerca di leggere i dati in Node. js da un processo figlio di ImageMagick, esce danneggiato. Un semplice caso di test sarebbe il seguente: mi aspetterei che per essere l'equivalente del convertito. test. jpg riga di comando - test2.jpg GT che non scrivere il file binario corretto. Originariamente c'è stato un problema con l'opzione maxBuffer essere troppo piccola e risultante in un file troncato. Dopo l'aumento di che, il file ora appare leggermente più grande del previsto e ancora danneggiato. I dati provenienti da stdout è tenuto ad inviare su HTTP. Quale sarebbe il modo corretto di leggere questi dati dal stdout ImageMagick chiesto 28 maggio 11 in 20:09 Se timeout è maggiore di 0, allora sarà uccidere il processo figlio se funziona più di millisecondi di timeout. Il processo figlio viene ucciso con killSignal (default: SIGTERM). maxBuffer specifica la più grande quantità di dati accettati stdout o stderr - se questo valore viene superato, allora il processo figlio viene ucciso. Quindi, se l'immagine è sopra la dimensione del buffer di default di 2001024 byte, l'immagine sta per essere corrotta come lei ha ricordato. Sono stato in grado di farlo funzionare con il seguente codice: Qui ho usato uova per ottenere un stdout streamable, poi ho usato un Writeable flusso di scrivere i dati in formato binario. Basta testato ed è stato in grado di aprire l'immagine test2.jpg risultante. EDIT. Sì, è possibile utilizzare questo per inviare il risultato su HTTP. Ecco un esempio di downsizing me un'immagine con convertito, quindi inviare il risultato al API glowfoto: Grazie, it39s vero ho completamente perso l'opzione maxBuffer, ma doesn39t sembrano risolvere la corruzione. Se si ingrandisce che con il mio esempio, il file risultante non è più troppo piccola ma comunque danneggiato. Il vostro esempio funziona, ma in realtà ho bisogno di fare di più con i dati di tubo dritto a un altro file. Più in particolare, avrei bisogno di scriverlo in una risposta HTTP utilizzando il framework espresso per esempio. ndash Daniel Cremer 28 maggio 11 in 22:06 Daniel Ho appena provato cambiando la linea di uova di. var convertito uova (39convert39, 39test. jpg39, 39-resize39, 395.039, 39-39) e ha ottenuto un file JPEG di lavoro ridimensionato 50. Prova ad aggiornare il post con quello che hai in questo momento. ndash onteria 28 maggio 11 alla 22: il testo 12Reading e dati binari con i flussi leggibili Node. js Questo tutorial spiegherà l'uso e la creazione di flussi node. js leggibili: Informazioni sulla versione Autore: Jeff Barczewski Pubblicato: 3 agosto, 2013 Tags: nodejs, flussi Livello: Intermedio Prerequisiti: crittografia, eventi, installare NPM moduli Node. js v0.10 (ultima versione stabile è v0.10.15 stesura di questo documento), ma i flussi sono stati generalmente una parte di Node. js dai suoi primi giorni Streams2 può essere utilizzato con le versioni precedenti di nodo utilizzando il modulo NPM leggibile-stream consumo o utilizzando i flussi leggibili semplice esempio di lettura di un file e facendo eco a stdout: Creazione di un digest SHA1 di un file e facendo eco il risultato sullo standard output (simile a shasum): la evento di dati viene generato sul flusso leggibile per ogni blocco di dati, in modo da aggiornare il digest con per ogni blocco, come si va, poi finalmente l'evento fine viene attivato quando il flusso si è concluso in modo da poter emettere il risultato finale. Si noti che ogni volta che si chiama. on () per registrare un ascoltatore restituisce il flusso originale in modo da poter facilmente metodi di catena. Con Node. js 0.10 c'è un modo migliore per consumare i flussi. L'interfaccia Readable rende più facile lavorare con i flussi, in particolare i flussi in cui si desidera fare altre cose tra la creazione di un flusso e utilizzando il flusso. Questi flussi più recenti leggibili sono flussi di tiro in cui è richiesta, i dati quando si leggono per esso, piuttosto che avere i dati spinto a voi. La chiave per comprendere questo esempio è che con la nuova interfaccia Readable streams2, un evento leggibile sarà emesso non appena sono disponibili i dati da leggere e si può chiamare. read () per leggere pezzi di esso. Una volta che ci sono più dati disponibili. read () restituisce null, ma poi un altro evento leggibile è sparato di nuovo quando i dati è di nuovo disponibile. Questo continua fino alla fine del file quando fine viene generato come prima. La produzione di un flusso leggibile Per utilizzare i flussi con il file system o da http, è possibile utilizzare le FS e HTTP metodi di base per la costruzione di un ruscello, ma come si potrebbe creare il proprio flusso e riempirlo con i dati Questo potrebbe essere dati da un database o da qualsiasi numero di sorgenti. Ecco un esempio di creazione di un flusso leggibile che viene generato dai dati binari casuali, quindi hashing come prima. Questo sarebbe utile per creare flussi per il test: Nota: dopo read () viene chiamato, dobbiamo continuare a leggere fino a quando abbiamo finito o fino push () restituisce false. Utilizzando Streams2 con le versioni precedenti Node. js Se si vuole fare questo lavoro codice con Node. js di età superiore a 0,10, è possibile includere una dipendenza per leggibile-stream in package. json e cambiare la linea 5 a leggere: Questo utilizzerà il nativo flusso leggibile se la versione Node. js è 0.10 e se no, allora sarà caricare il modulo leggibile-stream polyfill e utilizzarlo da lì. Pausa curriculum di flusso e Streams2 Dal flussi a volte può fornire dati più rapidamente di un'applicazione può consumare, corsi d'acqua includono la possibilità di mettere in pausa e la i dati vengono indirizzati fino a quando viene ripristinata la corrente. Prima della streams2, si avrebbe bisogno di prestare molta attenzione a mettere in pausa e riprendere i metodi, così come il buffering dei dati fino ripreso. Tuttavia leggibile da streams2 (Node. js 0,10 o tramite il pacchetto leggibile-stream) implementa la funzionalità che per voi e per i flussi sono in pausa automaticamente fino. read () viene chiamato. Si può anche avvolgere i flussi vecchi con un leggibile per implementare la nuova interfaccia sul vecchio torrente: Un'altra situazione in cui è necessario preoccuparsi di mettere in pausa e riprendere è se il codice consumo utilizza la vecchia interfaccia stile spinta chiamando. on (39data39, ascoltatore). questo mette la corrente in modalità di compatibilità all'indietro e si avrebbe bisogno di chiamare. pause () e. resume () per controllare la velocità dei dati provenienti per l'applicazione. Vedere la documentazione flusso API per i dettagli, se si utilizza l'interfaccia più vecchio nel codice. Oggetto Streams Inizialmente, quando sono stati introdotti corsi d'acqua l'API ufficiale ha indicato che blocchi di dati in fase di streaming sarebbe buffer o stringhe, tuttavia molti utenti hanno scoperto che è stato bello essere in grado di trasmettere gli oggetti pure. Streams2 in Node. js 0.10 aggiunto una modalità oggetto di flussi di formalizzare come questo dovrebbe funzionare. In modalità oggetto. lettura (n) restituisce semplicemente l'oggetto successivo (ignorando il n). Per passare da un flusso in modalità oggetto, impostare la proprietà Modo Oggetto su true nelle opzioni utilizzate per creare il flusso leggibile Quindi è possibile utilizzare gli oggetti nei corsi d'acqua con la stessa facilità è possibile utilizzare Tamponi e corde, ma l'unica limitazione è che gli oggetti pass non può essere nullo poiché ciò indica che il flusso è terminato. Node. js flussi leggibili sono Node. js flessibili e semplici flussi leggibili e facili da consumare e anche semplice da costruire. È possibile non solo flusso di dati binari e di stringa, ma anche oggetti e ancora sfruttare la funzionalità flusso. Spero vi sia piaciuto questo rapido giro di flussi leggibili, fatemi sapere se avete domande. Per ulteriori lettura Condividi questo modo semplice paginaA per eseguire script Python da Node. js con la comunicazione tra processi di base ma efficiente e una migliore gestione degli errori. Affidabile generare script Python in un processo figlio di testo incorporato, i modi binari JSON e parser personalizzati e formattatori semplici e trasferimenti di dati efficienti attraverso stdin e stdout flussi estese tracce di stack quando viene generato un errore Per eseguire i test: esecuzione di uno script Python: se lo script scrive su stderr o di uscire con un codice diverso da zero, verrà generato un errore. L'esecuzione di uno script Python con gli argomenti e le opzioni: scambio di dati tra il nodo e Python: Usa Trasmettami (messaggio) per inviare un messaggio allo script Python. Fissare l'evento messaggio per ascoltare i messaggi emessi dallo script Python. Utilizzare options. mode per impostare rapidamente come i dati vengono inviati e ricevuti tra il nodo e le applicazioni Python. utilizzare la modalità di testo per lo scambio di linee di modalità JSON uso di testo per lo scambio di frammenti JSON utilizzare la modalità binaria per altri scopi (i dati vengono inviati e ricevuti come-è) Per maggiori dettagli ed esempi, tra cui il codice sorgente Python, dare un'occhiata alle prove. Gestione degli errori e lo stack esteso traccia un errore verrà generata se il processo si chiude con un codice di uscita diverso da zero o se i dati sono stati scritti su stderr. Inoltre, se stderr contiene una traceback Python formattato, l'errore viene aumentata con Python Dettagli eccezione tra cui una traccia dello stack concatenati. errore di esempio con traceback (da testpythonerror. py): si tradurrebbe nella seguente errore: e err. stack sarebbe simile a questa: PythonShell (sceneggiatura, opzioni) crea un'istanza di PythonShell e avvia lo script Python processo. il percorso dello script da eseguire opzioni. le opzioni di esecuzione, composto da: modalità. Configura come i dati vengono scambiati quando i dati scorre attraverso stdin e stdout. I valori possibili sono: testo. ogni riga di dati (che termina con n) viene emessa sotto forma di messaggio (default) JSON. ogni riga di dati (che terminano con n) viene analizzato come JSON ed emise come un binario messaggio. dati viene trasmesso così com'è attraverso stdout e stdin formattatore. ogni messaggio da inviare è trasformata utilizzando questo metodo, quindi con l'aggiunta di n parser. ogni linea di dati (termina con n) è analizzato con questa funzione e il risultato viene emesso come codifica dei messaggi. la codifica del testo da applicare sui flussi di processo bambino (di default: utf8) PYTHONPATH. Il percorso dove trovare l'eseguibile pitone. pythonOptions pitone: predefinito. Array di interruttori di opzione di passare a Python scriptPath. Il percorso predefinito dove cercare per gli script. Il valore predefinito è la directory di lavoro corrente. args. Array di argomenti da passare allo script Altre opzioni vengono inoltrati a childprocess. spawn. casi PythonShell hanno le seguenti proprietà: script. il percorso dello script per eseguire il comando. gli argomenti pieni di comando passati al stdin eseguibile Python. il flusso di Python stdin, utilizzato per inviare i dati al stdout processo figlio. il flusso di Python stdout, utilizzato per la ricezione dei dati dal stderr processo figlio. il flusso di Python stderr, utilizzato per comunicare gli errori di processo figlio. l'istanza di processo creata tramite childprocess. spawn terminato. booleano che indica se il processo è terminato exitCode. il codice di uscita del processo, disponibile dopo il processo è terminato di configurare le opzioni di default per tutte le nuove istanze di PythonShell. run (sceneggiatura, opzioni, callback) Esegue lo script Python e invoca callback con i risultati. Il callback contiene l'errore di esecuzione (se presente), così come una serie di messaggi emessi dallo script Python. Questo metodo è anche tornando l'istanza PythonShell. Invia un messaggio allo script Python tramite stdin. I dati vengono formattati in base alla modalità selezionata (testo o JSON), o attraverso una funzione personalizzata quando si specifica di formattazione. Analizza i dati in arrivo dallo script Python scritta tramite stdout ed emette eventi di segnalazione. Questo metodo viene chiamato automaticamente come dati vengono ricevuti da stdout. Chiude il flusso stdin, permettendo lo script Python per terminare e uscire. La richiamata opzionale viene richiamato quando il processo è terminato. Viene eseguito quando un blocco di dati vengono analizzati dal flusso stdout tramite il metodo di ricezione. Se viene specificato un metodo parser, il risultato di questa funzione sarà il valore di messaggio. Questo evento non viene emesso in modalità binaria. Viene eseguito quando il processo è stato terminato, con un errore o meno. Viene eseguito quando il processo termina con un codice di uscita diverso da zero, o se i dati vengono scritti nel flusso stderr. La licenza MIT (MIT) Copyright (c) 2014 Nicolas Mercier L'autorizzazione è concessa, a titolo gratuito, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il software), per il Software senza restrizioni, inclusi, senza limitazione i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in licenza, copie Andor vendita del Software, e per consentire alle persone a cui viene fornito il Software di farlo, fatte salve le seguenti condizioni: l'avviso di copyright e la presente autorizzazione deve essere incluso in tutte le copie o parti sostanziali del Software. IL SOFTWARE VIENE FORNITO COSÌ COM'È, SENZA ALCUN TIPO DI GARANZIA, ESPLICITA O IMPLICITA, INCLUSE, MA NON SOLO, LE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UN PARTICOLARE SCOPO E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI o copyright TITOLARI ESSERE RESPONSABILI PER RIVENDICAZIONI, DANNI O ALTRE RESPONSABILITÀ, SIA IN UN'AZIONE DI CONTRATTO, ILLECITO O ALTRO, DERIVANTI DA, O IN RELAZIONE AL SOFTWARE O L'UTILIZZO O ALTRI RAPPORTI CON IL SOFTWARE.
It039s possibile la mia risposta non è esattamente alla discussione. ma Haven039t pensato che in caso di partenza del conto e la scelta di scambio si deve prestare attenzione ai fondamenti intendo esercitare le capacità di scambio, così come il continuo di metodi di negoziazione Un trader molto avanzato in grado di creare la sua singoli indicatori o anche automatizza commerciali in ogni caso, tutte queste basi su una cosa importante che tutti, senza eccezione, devono imparare: sulla piattaforma di trading è possibile osservare i commenti o sperimentare le piattaforme più utilizzate personalmente. Vorrei offrire controllare loro gratuitamente e prova da questo indirizzo: 252 Visualizzazioni middot Not for Reproduction Come stiamo vivendo nel 2016, e-mail e SMS vengono inviati direttamente al telefono. La maggior parte dei broker se non tutti offrono un app mobile per la negoziazione. Quindi, per avere un app solo per segnali forex è altrettanto buono come e-mail o SMS. Alcuni dei commen...
Comments
Post a Comment