Pages:
Author

Topic: Javascript: Funciones de conversión de bitcoins - page 2. (Read 2764 times)

member
Activity: 117
Merit: 23
Joder hay que ver como os lo currais eh? Una cosa, dais permiso para utilizar el código libremente en nuestros proyectos personales?  Grin

De todas formas izzukay, se me ocurre que ya que https://blockchain.info/ticker te muestra en texto plano todos esos datos no sería mas sencillo hacer un código que lea esas lineas  tal cual y "extraiga" la cotización deseada?
Es que hace algún tiempo ya intenté programar algo parecido (y yo que soy muy malo en esto...) pero me perdí un poco con eso del JSON y la documentación oficial de la API de mtgox  Undecided

Un saludo.
member
Activity: 91
Merit: 10
Bueno, una autocrítica para empezar: lo de "//PUT HERE the BTC current or historic value" debería haberlo quitado, ya que ahora debería introducirse el valor externamente haciendo btcConv.val = loquesea.
member
Activity: 91
Merit: 10
Ogig, al final me he desvelado pensando en tus sugerencias  Cheesy así que me he puesto manos a la obra a aplicarlas...

Ahí va la versión 1.2:

http://bitbin.it/lE5QwXAM


Échale un ojo a ver cómo lo ves.

Por cierto, tenías razón: tfxp() era absolutamente inútil, así que a freir espárragos la he mandado.  Smiley
member
Activity: 91
Merit: 10
¡Ah! Sobre la librería underscore he estado leyendo algo también. No la conocía, y dicen que sirve para facilitar tareas comunes con Javascript, pero se me escapa entender cómo podría serme útil, por ejemplo, en mi script de conversión. Saludos.
member
Activity: 91
Merit: 10
Ogig, es sencillamente alucinante tu código.  Shocked

Creo que ya me voy haciendo cierta idea de cómo podría aplicarlo a una próxima versión de mi script de conversión, pero antes tendré que empollarme un poco el tema de los patrones. Por el momento voy a intentar no liarme más y usaré el que he hecho (v1.1) para la herramienta de conversión que estoy preparando, y luego, ya con más calma, intentaré refinarla aplicando tus consejos.

Apunto las referencias que me has dado. He estado mirando los comentarios de los lectores en Amazon y se ven muy interesantes los libros (especialmente el primero).

Respecto a Haskell he estado mirando un tutorial (http://aprendehaskell.es) y me suena un poco a chino todo. La verdad es que me cuesta seguir tutoriales. Se me hacen un tanto fríos. Funciono mejor embarcándome en proyectos que me motiven lo suficiente como para aprender lo necesario para desarrollarlos (así he aprendido lo que sé hasta hoy y así hice la aplicación de radio/TV que te enseñé en Flash). Los resultados a veces son toscos (poco elegantes, aunque funcionen para mí, que es siempre mi prioridad inicial), pero luego voy sacando versiones más refinadas conforme voy aprendiendo más cosas.

En fin, poquito a poco espero ir haciéndolo mejor.  Smiley

Mil gracias por dedicarme tu tiempo y tus valiosos consejos. Wink


PD: Por cierto, el proyecto de librería para radio/TV en Javascript (proyecto QK+ se llama) es, evidentemente, muy ambicioso para hacerlo yo solo, así que tengo pensado lanzarlo como un proyecto colaborativo donde participe todo el que quiera aportar algo. Si te interesa participar o asesorar de algún modo sobra decir que tienes las puertas abiertas. Sería todo un privilegio contar con alguien como tú. Además, las aplicaciones prácticas serían muy interesantes, incluyendo muchas cosas que podrían hacerse en relación con los bitcoins. Saludos.
member
Activity: 70
Merit: 10
legendary
Activity: 1974
Merit: 1029
¡¡Buena idea!! Tomo nota. Entiendo que esos valores que da Blockchain vienen a ser los valores ponderados entre los distintos exchanges que pueden verse en Bitcoinwatch.com. ¿Me equivoco?

Ah, pues realmente no lo sé…
member
Activity: 91
Merit: 10
Creo que interesaría más un valor ponderado entre varios exchanges, en lugar de tirar de uno solo de ellos. ¿Qué tal https://blockchain.info/ticker ?

¡¡Buena idea!! Tomo nota. Entiendo que esos valores que da Blockchain vienen a ser los valores ponderados entre los distintos exchanges que pueden verse en Bitcoinwatch.com. ¿Me equivoco?
legendary
Activity: 1974
Merit: 1029
Creo que interesaría más un valor ponderado entre varios exchanges, en lugar de tirar de uno solo de ellos. ¿Qué tal https://blockchain.info/ticker ?
member
Activity: 91
Merit: 10
Tengo que añadir algo sobre el uso de la API de Mt.Gox. Echad un vistazo a este hilo, y al que se enlaza al final de su post #5:

https://bitcointalksearch.org/topic/obtain-bitcoin-value-with-javascript-22565


Como véis, se dice que es considerado una mala práctica el llamar a la API de Mt.Gox cada vez que alguien cargue nuestra página, y que es mejor llamar sólo cada cierto período de tiempo (cada hora, cada dos o una vez al día), y almacenar el valor en una base de datos o en un archivo.

En el citado post #5 se redirige a otro hilo en el que nos facilitan un script PHP que hace eso mismo.

Saludos.

member
Activity: 91
Merit: 10
Bien, ya he estado indagando un poco sobre cómo obtener la cotización actual del BTC. Sólo hay que usar la API de Mt.Gox que nos da los datos directamente en formato JSON:

Ejemplos:

Para obtener la cotización en dólares:

https://data.mtgox.com/api/2/BTCUSD/money/ticker


...y en euros:

https://data.mtgox.com/api/2/BTCEUR/money/ticker


¡¡Que aproveche!!  Smiley
member
Activity: 91
Merit: 10
De qué manera podría mejorarse el código para que automáticamente recoja la cotización del BTC en mtgox?

Hola X_X_X. Si te fijas se lo he comentado a xacobe97 en el cuarto post de este hilo. Habría que usar alguna API que nos proporcione la cotización. Tengo previsto investigarlo en breve. En cuanto sepa cómo hacerlo lo comentaré aquí. Saludos.
member
Activity: 117
Merit: 23
De qué manera podría mejorarse el código para que automáticamente recoja la cotización del BTC en mtgox?
member
Activity: 91
Merit: 10
@xacobe97: Gracias a ti.

@Ogig:

Sobre tfxp() supongo que llevas razón, y que no sería necesaria. Fijate en el enlace que pongo sobre dicha función. Ahí se comenta lo del límite de e21 para toFixed() y se propone una función toFixed() alternativa sin ese límite (que es tfxp() en mi código). Supongo que me puse "nervioso" al leer lo que se dice en ese enlace  Cheesy y quise curarme en salud. Así que al final acabé usando tfxp() para evitar la notación científica y toFixed() para recortar a un número específico de decimales. Pero seguro que puede hacerse mucho mejor.

La verdad es que aún soy muy novato en Javascript (vengo de Actionscript y PHP, y de un estilo muy diferente de programar), pero estoy aprendiendo y digeriendo todo lo rápido que soy capaz.

Lo que me comentas de usar algún patrón creo que excede mis conocimientos actuales (¿sabrías de algún tutorial que pueda ayudarme a entenderlo?). Este código lo hice consciente de que sería más profesional hacerlo como una clase instanciable, o metiendo todas las funciones dentro de un objeto. Pero como apenas estoy empezando a aclararme con todos esos conceptos preferí hacerlo así (por eso lo llamé "colección de funciones" y no "librería"), con la esperanza de que programadores más avanzados que yo lo adecentaran o lo modificaran a su gusto.

En cualquier caso me parecen valiosísimas tus sugerencias, y tomo buena nota. Estoy seguro de que poco a poco iré comprendiéndolas y refinando mi "salvaje" estilo con Javascript, que falta me hace, ya que mi gran objetivo en uno o dos años es hacer una librería para crear canales de radio y TV on-line como la que ya hice en Flash en su día (http://www.myvirtualtv.net/qooka).

Gracias por tus aportes  Smiley
newbie
Activity: 28
Merit: 0
Felicidades  Smiley me han servido para inspirarme esas funciones, lo único que faltaría es parsear el valor de los BTC automáticamente de algún sitio, por ejemplo btc-e. Por el resto está muy bien. Saludos.

Gracias xacobe97. No hay nada como saber que tu trabajo resulta útil a otras personas. En efecto, falta lo que dices. Tengo apuntadas unas APIs por ahí que creo que podrían solucionar esa parte (quizás la de Blockchain.info, pero aún no estoy seguro porque las miré de pasada). Lo voy a investigar en breve, así que cuando dé con la tecla lo comentaré aquí.

Bienvenido!

Siempre esta bien introducirse con una contribución.

Tengo alguna pregunta y sugerencias para tu código, si las aceptas Wink

Saludos

Hola Ogig, y gracias por la bienvenida. Por supuesto, sugiere y pregúntame cuanto quieras.

Por cierto, hoy he hecho una nueva versión. En unos minutos la publicaré aquí.

Hasta ahora.

De nada hombre! Y sí, me ha sido útil, y se ve que le has puesto empeño. Lo de la API sería genial, la verdad. Mira, te voy a mandar lo poco que me queda de mi viejo wallet, no es demasiado pero bueno Wink Saludos y gracias!
http://screencloud.net/v/ct55
member
Activity: 70
Merit: 10
[...]

Hola Ogig, y gracias por la bienvenida. Por supuesto, sugiere y pregúntame cuanto quieras.

Por cierto, hoy he hecho una nueva versión. En unos minutos la publicaré aquí.

Hasta ahora.

Primero la pregunta: ¿Para qué necesitas el tfxp? ¿El toFixed y sus e21 deberían llegar, no?

Y sugerencias:

Usa siempre el comparador === en lugar de ==, te ahorraras bugs difíciles de encontrar por la coerción de tipos. Lo mismo con !=, es mejor usar !==

Usa algún patrón para construir tu código de manera reusable. Yo para tu pequeña librería usaría el patrón de módulo. Básicamente todo tu código iría dentro de una función anónima que se ejecute a si misma exportando solo una variable, algo como:

Code:
(function (){
//Aquí tu código
    BtcConv = {} //Sin usar var para declararlo en el scope global
    BtcConv.btc2crr = function () {
          //tus funciones
    }   
}())

En el código expones un objeto solamente al scope global, por ejemplo. BtcConv, y el resto son métodos asociados. Así es como jquery, underscore y muchas librerías son escritas. Sirve para no intoxicar el namespace global de variables. Por este mismo motivo asegúrate de no declarar funciones como...

Code:
function isFloat(n) {
    return n % 1 != 0;
}

Ya que así estas declarando una variable global, es mejor usar asignaciones a funciones anónimas como haces con las demás, pero intentando hacerlo fuera del scope global

Espero que te sirva!
member
Activity: 91
Merit: 10
Bien, aquí dejo la nueva versión del código:

http://bitbin.it/eORmuOgr


La novedad es que he incorporado funciones para trabajar también con milibitcoins (mBTC) y microbitcoins (uBTC), que están a la orden del día.

A ver si se ve sin problemas porque Bitbin parece estar haciendo cosas raras hoy.

¡¡Saludos!!  Wink
member
Activity: 91
Merit: 10
Felicidades  Smiley me han servido para inspirarme esas funciones, lo único que faltaría es parsear el valor de los BTC automáticamente de algún sitio, por ejemplo btc-e. Por el resto está muy bien. Saludos.

Gracias xacobe97. No hay nada como saber que tu trabajo resulta útil a otras personas. En efecto, falta lo que dices. Tengo apuntadas unas APIs por ahí que creo que podrían solucionar esa parte (quizás la de Blockchain.info, pero aún no estoy seguro porque las miré de pasada). Lo voy a investigar en breve, así que cuando dé con la tecla lo comentaré aquí.

Bienvenido!

Siempre esta bien introducirse con una contribución.

Tengo alguna pregunta y sugerencias para tu código, si las aceptas Wink

Saludos

Hola Ogig, y gracias por la bienvenida. Por supuesto, sugiere y pregúntame cuanto quieras.

Por cierto, hoy he hecho una nueva versión. En unos minutos la publicaré aquí.

Hasta ahora.
member
Activity: 70
Merit: 10
Bienvenido!

Siempre esta bien introducirse con una contribución.

Tengo alguna pregunta y sugerencias para tu código, si las aceptas Wink

Saludos
newbie
Activity: 28
Merit: 0
Felicidades  Smiley me han servido para inspirarme esas funciones, lo único que faltaría es parsear el valor de los BTC automáticamente de algún sitio, por ejemplo btc-e. Por el resto está muy bien. Saludos.
Pages:
Jump to: