viernes, 2 de septiembre de 2011

Imprimir desde putty a gedit | Actualizado

Esto es sumamente útil cuando queremos capturar la salida de una terminal por ejemplo en vez de mandarlo a impresión lo mandamos a edición con gedit.

Lo único que hay que hacer es añadir esto en la parte de impresión de la conexión de putty en cualquier session.
VAR=$(date +putty/prn."%d%m%y.%H%M%S".txt); cat > $VAR; gedit $VAR &


Actualizado 27/08/2018:
Encontré una forma mejor de realizar la impresión hace algunos años la comparto ahora ya que tengo algo de tiempo, el único requisito es tener creada la carpeta putty:
[gary@kronos ~]$ mkdir ~/putty/

Salu2

Imprimir desde Putty Bajo Linux

Durante mucho tiempo tuve esta incognita para terminar una migración de SO de windows a Debian Gnu/Linux Completamente y por fin lo encontré.
1. apt-get install putty
2. Añadir una impresora matricial por ej en mi caso use la LQ-590 con el driver de linux LQ570+ que funciona a la perfección.
3. configurar la conexión en Putty, en la Seccion Terminal en la caja de texto de impresora poner:
lp -o raw -d EPSON-LQ-590

Después de -d entra el nombre de la impresora. 

4. Guardas la conexión en putty y conectas,
5. Fun! ya puedes imprimir desde putty a prácticamente cualquier impresora matricial.

jueves, 28 de julio de 2011

OpenVPN y Network Manager en Debian

Primeramente comentar que este proceso resulto mas facil de lo que pense y la verdad resulta muy util tener una conexión VPN roadwarrior en mi caso para realizar el control de algunos procesos en Servidor de produción.

Primeramente instalado openvpn y por supuesto network-manager-openvpn
apt-get install openvpn network-manager-openvpn
Configurar network manager de la siguiente manera,debo comentar (previamente) que ya tengo certificados generados y entregados a mi persona para el uso contra un servidor VPN bajo OpenVPN.

1.  Dejar el archivo nm-openvpn-service.conf de la siguiente manera.
nano /etc/dbus-1/system.d/nm-openvpn-service.conf
Antes de  la ultima linea que tiene /busconfig añadir:

                    
                    
        


De manera que quede de la siguiente forma:


        
                
                
        
        
                
                
        
        
                    
                    
        




2. Reiniciar el servicio de network manager.

/etc/init.d/network-manager restart

Ahora procedemos a la configuración grafica del certificado para network manager.

3. Editar la conexiónes de red.


4. Seleccionamos Importar 

5. Seleccionamos el sertificado .ovpn a importar.

6. Ahora nos mostrara la importación Obviamente debemos cambiar el ip ya que yo use uno de fantasia.


NOTA: Es Muy pero Muy Importante mantener libre o sin tickear la opción Disponible para todos los usuario o Avaliable to all users ya que si la tickeas simplemente no funcionara la conexión.

7. Ahora la configuración se debe ver de la siguiente forma.


8. Proceremos a conectarnos a la configuración creada.

 9. Ya tenemos la VPN conectada y funcionando.

 10. Fin.


Espero este pequeño HowTo le sirva a todos los que como yo usamos las VPN la mayor parte del tiempo.




martes, 5 de julio de 2011

Los retos de crear un sistema para una microfinanciera (Pensamientos)

A modo rapido me tomo el tiempo para escribir de las principales dificultades al momento de emprender el desarrollo de un software para una micro financiera un software tipo SFI o Merc pero en menor escala y ajustado a las necesidades de la microfinanciera.
1ro no me gusta para nada usar las metodologias agiles para el desarrollo del proyecto por que para cada reunion con la junta de ejecutivos sufren de no se que, que olvidan lo que dijeron en la reunion anterior y perdemos la hora revisando el acta de la anterior reunion.
2do que la empresa te encargue software modular abierto es algo complicado ya que hay poca información "concreta" al respecto.
3ro usar monodevelop no es la mejor opción en un ambiente windows.
4to usar VS2008 (opcional) y SharpDevelop fue la mejor elección.
5to pasar de SVN a GIT es algo que estamos viendo por cuestiones meras de gusto y costumbre.
6to jamas pero jamas dejes el producto mas de 2 dias sin leerlo lo programadores nuevos hacen cualquier barbaridad con los modulos que estan por terminarse.
7mo toma 1 hora por lo menos corregir los bugs que generan los diferentes puntos de vista en la representación de un dato (decimales, cuantos?, cuantos despues?, redondeo cada cuantos? y cosas asi que solo 2 de cada 5 piensan).
8vo acomodar todo a las cuentas que día a día cambian en la ASFI es una total perdida de tiempo preferiblemente usar una version de cuentas de la ASFI de mayo de 2011 para no tener que soportar las updates de cuentas de cada 2 meses en la ASFI.
9no lo rustico e intuitivo vale mas que lo bonito y adornado en los forms.
10mo deberia seguir programando.

sábado, 28 de mayo de 2011

Obtener información del Tipo de cambio desde el RSS del BCB.

Requisitos
1. Formulario con 1 progress bar, 1 Background worker, 6 TextLabels, 1 Boton.
2. label1=tc label2=tv
3. Este es el codigo que use.

using System;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Windows.Forms;

namespace GetAndSetTC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string vCompra, vVenta, fDia = "";
        string webRSS = "http://www.bcb.gob.bo/rss_bcb.php";
        private void button1_Click(object sender, EventArgs e)
        {
            if (hostAlive() == true)
            {
                backgroundWorker1.RunWorkerAsync();
            }

        }

        private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            System.Net.WebRequest myRequest = System.Net.WebRequest.Create(webRSS);
            System.Net.WebResponse myResponse = myRequest.GetResponse();
            System.IO.Stream r_stream = myResponse.GetResponseStream();
            System.Xml.XmlDocument r_doc = new System.Xml.XmlDocument();
            r_doc.Load(r_stream);

            System.Xml.XmlNodeList r_items = r_doc.SelectNodes("rss/channel/item");
            System.Xml.XmlNode tctv;
            tctv = r_items.Item(0).SelectSingleNode("description");
            if (tctv != null)
            {
                string[] temp = tctv.InnerText.Split(';');
                fDia = temp[0].Replace("Fecha 1:", "");
                vVenta = temp[1].Replace("VENTA Bs", "");
                vCompra = temp[2].Replace("COMPRA Bs", "");
            }
                Int64 iSize = myResponse.ContentLength;
                Int64 iRunningByteTotal = 0;
                WebClient client = new WebClient();
                Stream streamRemote = client.OpenRead(new Uri(webRSS));
                int iByteSize = 0;
                byte[] byteBuffer = new byte[iSize];
                while ((iByteSize = streamRemote.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
                {
                    iRunningByteTotal += iByteSize;
                    double dIndex = (double)(iRunningByteTotal);
                    double dTotal = (double)byteBuffer.Length;
                    double dProgressPercentage = (dIndex / dTotal);
                    int iProgressPercentage = (int)(dProgressPercentage * 100);
                    backgroundWorker1.ReportProgress(iProgressPercentage);
                }
        }

        private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            this.fecha.Text = fDia.Replace("Fecha:","");
            this.tc.Text = vCompra;
            this.tv.Text = vCompra;
        }
/////Esta parte del codigo verifica si www.bcb.gob.bo esta online mediante un ping.
        private static bool hostAlive()
        {
            Ping ping = new Ping();
            string comp = "www.bcb.gob.bo";
            try
            {
                PingReply reply = ping.Send(comp, 100);
                if (reply.Status == IPStatus.Success)
                {
                    return true;
                }
                return true;
            }
            catch
            {
                return false;
            }

        }
    }
}

martes, 17 de mayo de 2011

Retomando el Blog

Despues de tanto trabajo y cosas alocadas ahora retomo simplemente garysandi.blogspot.com para evitarme lios como los que pase por el dominio.

Ahora a pensar en los post a ser importados desde el anterior blog.

Salu2.