domingo, 7 de julio de 2013

Kerbal Space Program: acoplando naves.

- Introducción

Kerbal Space Program es un simulador espacial que te permite diseñar naves espaciales y usarlas en un entorno (relativamente) realista.

Dentro del simulador, la operación de acoplar naves ("docking") es especialmente complicada para novatos. Sin embargo, una vez le coges el truco se convierte en algo rutinario que abre muchas posibilidades dentro del juego, desde la construcción de estaciones espaciales a operaciones de abastecimiento en órbita.

Quiero dejar claro que no soy físico. El método que explico a continuación no es el más eficiente, pero como funciona "a ojo", creo que es bastante sencillo.

Quiero darle las gracias a Haplo, del foro http://www.puntadelanza.net , por la serie de artículos que escribió sobre el juego y que me ayudaron a iniciarme

http://www.puntadelanza.net/Foro/phpBB3/viewtopic.php?f=41&t=14887

- Preparativos

Para acoplar dos naves necesitas, evidentemente, dos naves. Pueden ser de cualquier tipo (una estación y una nave, dos naves, etc) , pero lo que es importante es que tengan dos escotillas de acoplamiento del mismo tamaño. También es importante montarlas bien, no serías el primero en darte cuenta de que una escotilla está mal montada mientras orbitas el último pedrusco del sistema solar.



Si te fijas en la imagen, verás que las piezas que se van a acoplar tienen una especie de "rebaba", un círculo más interno. Ese círculo debe quedar mirando hacia fuera.

La naves que se van a acoplar necesitan llevar montado un sistema de RCS (reaction control system) para maniobrar, y uno o más tanques de monopropelente. En los primeros intentos vas a gastar mucho combustible RCS y para motor (ojo, son distintos) , así que asegúrate de ir sobrado de los dos tipos.

Un consejo muy importante: no intentes hacer la maniobra de forma visual, porque no es nada intuitiva. En la Tierra, cuando quieres acercarte a un objeto, lo normal es acelerar hacia él, ¿no? Pues eso en el espacio no funciona. Cuando aceleras, estás variando tu órbita, así que acelerando hacia el objeto sin más sólo te hará pasar por encima o por debajo, envuelto en nubes de juramentos y palabrotas.

Hasta la fase final, la información que necesitas está en el "navball" o la ventana de órbita, no en tu nave.

Deberías familiarizarte con los controles RCS. Por defecto, el RCS se activa con la tecla R. Usa H y N para ir adelante/atrás, e IJKL para moverte a los lados. El juego lleva un "modo de docking" pero en este tutorial NO se usa, la nave la manejaremos siempre desde la ventana de órbita o en "modo phasing" (el normal, vamos).


Es aconsejable que la órbita de la nave a la que te vas a acoplar sea lo más circular posible, y poco excéntrica. También es aconsejable que sincronices el despegue de una nave con la órbita del objeto al que te vas a acoplar. Digo "aconsejable" porque permite hacer la maniobra de forma algo más sencilla y eficiente, pero no es necesario.

Y un último consejo: monta un par de focos en las DOS naves. Si no lo haces, acoplarse a la sombra de un planeta puede complicarse mucho. Monta también un par de placas solares y alguna batería.

- Primera parte: aproximando las órbitas.

Si quieres acoplar una nave que va a despegar con otra que está orbitando, intenta sincronizar el despegue. Para hacerlo a ojo, sencillamente espera a que la nave que está orbitando pase sobre la nave que va a despegar. Te ahorrarás muchos ajustes orbitales.

. Uno: igualando el plano de las órbitas.

El objetivo de este paso es que las órbitas estén en el mismo plano.

Ve a la ventana de órbitas (M); debes hacer click sobre la nave a la que te quieras acoplar y seleccionarla como objetivo.




Una vez hayas seleccionado el objetivo al que te quieres acoplar, la imagen cambiará. En azul, como siempre, está tu órbita y tus puntos de apoapsis y periapsis. En verde, casi amarillo, aparecerá la órbita de tu objetivo. Los puntos verdes sobre tu órbita son los nodos ascendentes (AN) y descendentes (DN) , que son los puntos donde las dos órbitas están en un mismo plano. Los puntos de máximo acercamiento están en rojo.

Si colocas el ratón sobre uno de los nodos te dará la diferencia de inclinación entre las dos órbitas (p. ej 0.5). Tienes que planificar una maniobra sobre uno de los dos nodos para situar las dos órbitas en el mismo plano (0.0º de diferencia) con un error de -0.1 a 0.1




. Dos: tocando las órbitas.

Una vez las dos órbitas están en el mismo plano, debes conseguir que se toquen en al menos UN punto. NO es necesario igualar las órbitas,



. Tres: puntos de encuentro.

Nuestro objetivo ahora es que las dos naves estén a una distancia de menos de 50 kilómetros. Lo ideal serían 10 o 20, pero como es nuestra primera vez, tampoco vamos a ponernos muy exigentes :)

Cuando seleccionaste el objetivo, además de los nodos aparecieron uno o dos puntos de mínima separación (en rojo en la imagen). Si pasas el ratón por encima verás a qué distancia estarás cuando tu nave llegue a ese punto.

Para conseguir que se acerquen, tenemos que jugar con el hecho de que las órbitas más pequeñas tardan menos tiempo en completarse, y las órbitas grandes tardan más tiempo.

Por tanto, si tu nave está detrás de su objetivo, necesitarás reducir su órbita para que gire más rápido que el objeto al que quieres  alcanzar. En el ejemplo de arriba, debes mantener la periapsis por debajo de la órbita de tu objetivo.

Sin embargo, si tu nave está por delante de su objetivo, te interesará que gire más despacio para que el objetivo le dé alcance. En ese caso, tendrás que subir la apoapsis por encima de la órbita de tu objetivo.

Hagas lo que hagas, ten en cuenta dos cosas. Primera, que las dos órbitas deben tocarse siempre en un punto. Segunda, que si estás orbitando un cuerpo con atmósfera debes tener cuidado al bajar la órbita para no meterla en la atmósfera, frenarte, y acabar dándote el gran morrazo.


Ahora solo te queda usar la función "time warp" para que las naves den una vuelta completa, y puedas observar cómo ha cambiado la separación mínima. Probablemente tendrás que hacer ajustes, irás muy de prisa y te pasarás, o muy despacio y se te escapará. No te preocupes, vuelve a ajustar las órbitas y mira qué pasa en la siguiente vuelta.

Cuando consigas que la separación mínima sea menor de 50 kms, pasa al siguiente paso.

. Cuatro: igualando la órbita.

Una vez estés contento con la separación mínima, haz un último ajuste para que las dos órbitas sean lo más parecidas posibles. Es decir, las dos órbitas deben quedar "una encima de la otra".




(En la imagen, no hagas caso de los puntos de aproximación. En tu juego deberían estar más cerca.)


- Segunda parte: aproximando las naves.

. Uno: Aproximación.

Sal de la ventana de órbitas (tecla M). Bien, ésto es muy importante:  a partir de ahora tu "navball" debe estar siempre en modo "target", no superficie ni órbita.


Si no estás ya en modo "target", puedes cambiar el modo de tu "navball" haciendo click sobre el texto que aparece en verde. La posición de tu objetivo aparece en rosa. Tanto los puntos "prograde" y "retrograde" como la lectura de velocidad lo son con respecto al vector de velocidad de tu objetivo. En la imagen, los 20.4 m/s significan que me estoy acercando o alejando de mi objetivo a 20.4 metros por segundo.

Bien, hay dos opciones: o te estás alejando, o te estás acercando. Si te estás acercando, vas bien y no tienes que hacer nada. Pero como las dos órbitas son distintas, llegará un momento en que empieces a alejarte. En ese momento tienes que hacer "La Maniobra" (en mayúsculas, negrita y subrayado :D ). Consta de dos pasos.

  • Primero, coloca la nave mirando hacia TU retrograde (el círculo amarillo con la cruz en el centro, como ya sabrás). Con cuidado (no los pongas al máximo), enciende los motores y vete reduciendo la velocidad  hasta unos 10 m/s



  • Segundo, cuando la nave haya perdido la velocidad, colócala mirando hacia el objetivo (NO hacia el prograde, directamente hacia el objetivo que es ese círculo rosa). Vuelve a encender el motor, y poco a poco, aumenta la velocidad a un valor con el que estés cómodo (dependiendo de la distancia, pero como máximo unos 50 m/s, si está cerca no pases de 5 - 10 m/s)





Si todo ha ido bien, verás que vuelves a acercarte a tu objetivo. Al cabo del rato volverás a alejarte. Repite La Maniobra cuantas veces sea necesario. Cuando estés a unos 50 metros del objetivo, pasa al siguiente apartado.

Si tienes curiosidad por lo que hace "La Maniobra", échale un vistazo a la siguiente foto.  Como ya comenté, si aceleras directamente hacia tu objetivo, sólo conseguirás pasar por encima o por debajo. "La maniobra", por contra, modifica la órbita de forma que los dos objetos vuelven a cruzarse.


Pero vamos, que a efectos prácticos da absolutamente igual. Lo importante es que te acercas. 

. Dos: contacto.

Cuando llegues a una distancia de unos 50 metros apunta la nave a tu retrograde y deja la velocidad a 0.0 o 0.1 Luego cambia la orientación de forma que la escotilla que se vaya a acoplar quede mirando a tu nave objetivo.

Lo más probable es que la otra nave esté orientada hacia el peor sitio posible (Ley de Murphy). Debes tomar el control de la otra nave, y cambiar su orientación para que las escotillas que se van a acoplar queden una mirando a la otra. Con eso te ahorrarás una enorme cantidad de combustible, ajustes, gritos y fracasos :) Para ello, pasa a la ventana de órbita (M) pincha sobre la nave objetivo y selecciona "switch to"



Una vez hayas cambiado a la nave objetivo, sal de la ventana de órbitas (M), y orienta la nave objetivo hacia tu nave.

Bien, pues en este punto tienes las dos naves a 50 metros, prácticamente inmóviles, y mirando la una hacia la otra.



Lo único que te queda por hacer es encender el RCS (tecla R), y usar H y N para acoplar las naves. Normalmente, la tecla H aumentará la velocidad de aproximación de las naves, y N la reducirá. En la maniobra de aproximación final, no pases de 0.5 m/s. Cuando vayan a tocarse, es aconsejable ir a 0.1o  0.2  m/s como máximo.


Una vez esté lo bastante cerca, los imanes de las escotillas harán su trabajo y terminarán de unir las naves. La nave (lander + impulsor interplanetario) completa.



- MOAR HELP!.

Si sigues atascado, quizá podrías probar un mod llamado MechJeb.

El mod puede ayudarte con varias cosas. Primero, trae un  piloto automático para despegar la nave que permite sincronizar el despegue con otro objeto en órbita. Eso te ahorrará infinidad infinidad de ajustes orbitales.

Segundo, y más importante, trae un módulo llamado "rendezvous" que da información útil para el acople de dos naves. El dato crítico es cual va a ser la separación mínima entre tu objetivo y tu. Eso te permite predecir cuando vas a tener que hacer la siguiente Maniobra.

Tercero, te permite mantener el morro orientado en la dirección que quieras (prograde, retrograde, objetivo...) Si sabes lo que quieres hacer, sólo tienes que darle a un botón y el mod colocará la nave mirando hacia donde tú le digas. Eso te dará más tiempo para ocuparte de otros aspectos de la maniobra.

Finalmente, a partir de la versión dos también trae un  piloto automático para hacer acoples. Personalmente no lo he usado, pero en un momento de desesperación puede ser una opción mejor que mandar el juego a paseo :)



viernes, 28 de junio de 2013

Instalando Vmware player en Debian Jessie

Tras actualizar a la última versión de Debian, me he encontrado con que Vmware Player se quedaba parado al intentar compilar los módulos. La solución es compilar los módulos "a pelo" con la orden:

vmware-modconfig --console --install-all --icon=vmware-player --appname=VMware


jueves, 11 de abril de 2013

Accediendo a los números de versión ClickOnce desde C#

Más que una entrada de blog, es una nota para mi mismo. Para acceder a los números de versión ClickOnce :

a- Añadir una referencia a System.Deployment en el proyecto.

b- Añadir directiva

using System.Deployment.Application;

c- Antes de acceder a los números de versión, debemos comprobar si la aplicación está corriendo en una instalación, o si estamos dentro de Visual Studio. Si queremos mostrar la información en la barra del título de nuestro formulario:

 if (ApplicationDeployment.IsNetworkDeployed)
                this.Title += " v. " + ApplicationDeployment.CurrentDeployment.CurrentVersion.Major + "." + ApplicationDeployment.CurrentDeployment.CurrentVersion.Minor;
else
                this.Title += " (entorno desarrollo) ";


Instalar Debian desde USB

Bueno, antes que nada, quiero aclarar que este método está basado en un artículo de http://www.esdebian.org , en un artículo escrito en 2008 por Membris Khan. Éste es el enlace al mensaje original:

http://www.esdebian.org/foro/26476/howto-instalar-debian-usb

Yo lo único que he hecho es actualizar un poco los enlaces, pero es que es un método tan sencillo y tan rápido, que pocas mejoras se pueden hacer.

1- Descargar una imagen .iso del instalador. Las imágenes están disponibles en:

http://www.debian.org/devel/debian-installer/

Probablemente, estés buscando la imagen para PC de 64 bits:

http://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/debian-testing-amd64-netinst.iso

2- Coge un cliente de ftp (lftp, por ejemplo), y entra en cualquier mirror de Debian

ftp://ftp.debian.org

Una vez dentro, navega hasta la carpeta :

/debian/dists/wheezy/main/installer-amd64/current/images/hd-media

Debes cambiar "wheezy" por el nombre de la distribución que quieres instalar, e installer-amd64 por el de la arquitectura que uses. Una vez dentro, bájate el archivo boot.img.gz

3- Vale, ya tenemos todo lo necesario. Inserta la memoria USB en el ordenador, y SIN MONTAR el dispositivo, copia la imagen de arranque en la memoria:

zcat boot.img.gz >/dev/sdb

La orden destruirá todo el contenido y las particiones de la memoria USB. Para volver a usar la memoria más adelante, tendrás que volver a particionarla. Fíjate que debes indicar el nombre del dispositivo (sdb) , no de la partición (sdb1)

4- Copia el fichero del instalador a la raiz del nuevo dispositivo. Para eso, debes montar la memoria (lo más sencillo es sacarla y volverla a meter para que se monte sola), y copiar el fichero:

cp debian-testing-amd64-netinst.iso /media/DEBIAN\ INST

Ya está. Ahora sólo tienes que desmontar la memoria USB y usarla para arrancar el ordenador donde quieras instalar el nuevo Debian.

viernes, 1 de febrero de 2013

Cómo llevar el IVA en GnuCash

- Introducción.

Esto es un pequeño tutorial explicando cómo calcular el IVA con GnuCash, un programa gratuito de contabilidad. Voy a dar por supuesto que tienes una idea del manejo general del programa, yo me voy a centrar en el IVA.

No soy contable, sólo un autónomo intentando llevar bien sus cuentas. Desconozco si es el método más correcto, lo único que sé es que no he encontrado ningún tutorial más claro que éste, y que los números salen bien.


- Preparación del programa.

La preparación es un poco farragosa, pero sólo hay que hacerla una vez.

Para este tutorial he creado un conjunto de cuentas de prueba, con un saldo de partida de 2000€


El primer paso consiste en crear las cuentas de IVA. Las vamos a meter todas en el Pasivo.

Pasivo : IVA - Tipo de cuenta: Pasivo. Cuenta padre : pasivo. Esta será la cuenta padre de las otras cuentas.

Pasivo : IVA : IVA Repercutido -  Tipo de cuenta: Pasivo. Cuenta padre : IVA. Aquí aparecerá el IVA que estamos cargando en nuestras facturas.

Pasivo : IVA : IVA Soportado -  Tipo de cuenta: C/ Pagos pendientes . Cuenta padre : IVA. Aquí aparecerá el IVA que nos cobran a nosotros. Se cambia el tipo de cuenta para que aparezca en negativo (luego verás por qué).

Pasivo  : IVA : IVA Pagado -    Tipo de cuenta: C/ Pagos pendientes . Cuenta padre : IVA. Aquí anotaremos los pagos que hacemos.

Al final, las cuentas deben quedar así:


Ahora hay que definir las tablas de impuestos. Vete al menú principal,  Negocios, Impuestos de Ventas. Crea un nuevo impuesto, IVA, indica el tipo actual (21%)  y asocialo a la cuenta Pasivo:IVA:IVA Repercutido. Quedará así:


Si necesitas emitir facturas con tipos de IVA distintos, necesitarás crear varias tablas.

Si emites facturas que no cobras en el momento, deberías crear una cuenta Activo:Pendiente de cobro del tipo C/Cobros pendientes.

Dependiendo de la actividad de la empresa, deberías crear una cuenta de ingresos. Por ejemplo, si te dedicas a instalar redes locales (por decir algo), crea una cuenta Ingresos:Instalación de redes locales.

Con esto hemos terminado la preparación. Vamos a ver los procedimientos a seguir cada vez que se introduce una factura.

- Cuando EMITIMOS una factura.

Yo llevo el control de las facturas que emito a través del menú de negocios. Vamos a suponer que necesitamos emitir una factura de 100 € más IVA, y vamos a suponer que nos la pagan 30 días más tarde mediante una transferencia bancaria.

El primer paso es dar de alta el cliente. Nos vamos al menú de Negocios -> Cliente -> Nuevo cliente.

Ahora, vamos a crear una factura nueva. Vuelve al menú de Negocios -> Cliente -> Nueva Factura. En el primer formulario, escribe el número de factura, selecciona al cliente que creaste en el paso anterior, y dale a Aceptar.

Aparecerás en la ventana de edición de la factura:


Bien, ahora puedes empezar a meter conceptos. En la cuenta de ingresos deberías especificar la actividad que está generando el ingreso (igual tienes que crear la cuenta antes). En el precio unitario debes especificar el precio sin IVA. En la tabla de impuestos, debes seleccionar IVA. Si todo está bien, verás que te calcula los impuestos en la última columna.

Una vez hayas terminado de introducir los datos, dale a Guardar y fíjate en el grupo de tres iconos que aparecen en último lugar  en la barra de herramientas. Debes darle a "Contabilizar esta factura en su cuadro de cuentas.". Cuando te salga la ventana, aprovecha para crear una nueva cuenta de Activo: Pendiente de cobro (si no lo has hecho todavía), y dale a aceptar. Vete a la solapa general, y vamos a ver cómo han quedado las cuentas porque han pasado varias cosas interesantes:


En primer lugar, como la factura está emitida pero no cobrada, en nuestra cuenta de Activo:Pendiente de cobro nos aparecen los 121 euros. En nuestro Pasivo:IVA:IVA Repercutido aparecen los 21 euros de la factura emitida y en nuestros ingresos aparecerán los 100 euros de la base imponible.

Finalmente, suponemos que han pasado 30 días y nos pagan la factura. Tenemos que volver a nuestra factura (Negocios -> Cliente -> Buscar Factura), visualizarla y seleccionar "Introducir un pago para el dueño de nuestra factura" (en la barra de herramientas, el último icono). En la pantalla que nos sale tenemos que seleccionar Contabilizar en : Activo:Pendiente de pago y cuenta de transferencia Activo:Activo Circulante:Cuenta Corriente.

Si vuelves a la pantalla general, verás que  el dinero de la cuenta Activo:Pendiente de cobro se ha transferido a la cuenta corriente.

- Cuando PAGAMOS una factura de la que nos podemos deducir el IVA.

Vamos a suponer que hemos hecho una compra de material de informática de 50 euros + IVA = 60.5€ en total , y que hemos pagado con una transferencia bancaria desde nuestra cuenta corriente.

Para las facturas pagadas prefiero no usar el menú de negocios, y meter las transacciones en su cuenta directamente. Para este caso, iría a a Activo:Activo Circulante:Cuenta Corriente , haría doble click para que se abra una cuenta, y empezaría a meter una nueva transacción.

Introduce la fecha y el concepto, sáltate la columna de transferir y mete el total en la columna Total Salida.... ¡pero no le des a intro todavía! Necesitamos desglosar la entrada, así que dale al botón desglosar (en la barra de herramientas), e introduce la base imponible y el IVA por separado:


Fíjate cómo queda el asiento. De tu cuenta corriente sale un total de 60.5€ . 50€ van a la cuenta de gastos de informática, mientras que 10.5 van a tu IVA soportado. Si revisas la solapa de cuentas:

En la cuenta de IVA aparece nuestro IVA soportado como una cantidad negativa, y nuestra cuenta de IVA refleja la cantidad que le debemos a Hacienda (en nuestro caso, 21 - 10.50 = 10.50 €) .

- Cuando pagamos el IVA.

Supongamos que nuestra empresa no ha tenido más actividad, y que ha llegado el feliz día de rendir cuentas.

Para reflejar el pago creamos una transacción desde Activo:Activo Circulante:Cuenta Corriente a Pasivo:IVA:Iva Pagado. La cantidad se descontará del total de IVA que seguirá reflejando nuestra deuda con Hacienda (21 euros IVA repercutido - 10.5 IVA soportado - 10.5 IVA Pagado = 0 €, en el caso de nuestra empresa. Si hubiéramos seguido facturando, aparecería el IVA del trimestre actual)

Nuestras cuentas quedarán así: