Unknown's avatar

About hvivani

Systems Engineer, Developer, Technical Leader, IT Manager

Teclado Numerico bloqueado / desactivado


Si les pasa que se les desactiva / bloquea el teclado numérico en Fedora y el resto del teclado funciona normalmente, verifiquen si se mueve el puntero del mouse al tocar las teclas del teclado numérico.
Hay una opción en Sistema –>Preferecias –> Teclas del Ratón (Mouse Keys)
que permite controlar el ratón con el teclado numérico.
Es muy común activar esta opción por error.

La combinación de teclas para activar/desactivar esta opción es: Ctrl+Shift+NumLock

Instalar Firefox 4 en Fedora 14


Dado que Firefox 4 aún no está disponible en los repositorios oficiales de Fedora 14, podemos instalarlo utilizando los repositorio Spot:

Instalamos el repo:
$ su -c ‘wget http://repos.fedorapeople.org/repos/spot/firefox4/fedora-firefox4.repo -O /etc/yum.repos.d/fedora-firefox4.repo’

Instalamos Firefox 4:
$ su -c ‘yum –enablerepo fedora-firefox4 install firefox4’

Con esto ya tenemos instalado el Firefox 4 en Fedora 14





Implementación de Factura Electrónica utilizando Software Libre


La implementación Factura Electrónica para Mercado Interno o Exportación en Argentina puede  realizarse utilizando SL.
El código fuente desarrollado en Python se encuentra disponible en Google Code.
Este es un desarrollo de la gente de Sistemas Agiles que ha liberado su codigo fuente a la comunidad bajo licencia GPL v3.
Dado que he tenido que implementar esta funcionalidad para algunas empresas dejo estas notas sobre su utilización para WSFEv1 para cualquiera que esté en el mismo baile…
 
 
Servicio Web de Autenticación y Autorización (WSAA)
Este servicio es necesario para acceder al resto de los servicios de negocios (ej. Factura Electrónica) ofrecidos por la AFIP.
Se debe generar un Ticket de Requerimiento de Acceso (TRA), firmarlo criptográficamente (generando un mensaje CMS) que es envía al servicio web para obtener un Ticket de Acceso (TA).
Esta interfase crea el mensaje en XML, lo firma criptográficamente y lo codifica en base-64 como lo requiere la AFIP, por lo que en general no es necesario realizar ninguno de estos pasos.
 
 
 
 
Generar Certificados:
Para poder utilizar la interfase se deben tramitar y asociar los certificados de homologación/producción en la AFIP. 
Pasos para crear el certificado:
  • Generar la clave privada:
    openssl genrsa -out empresa.key 1024
  • Generar el pedido (CSR: certificate signing request) por línea de comando:
    openssl req -new -key empresa.key -out empresa.csr -config afip-openssl.cnf
    • Country Name (2 letter code) [AR]:AR
    • Organization Name (por ej., empresa) [EMPRESA SA]:ingresar nombre de la empresa tal cual figura en la consulta de inscripción, ej.:Empresa S A
    • Common Name (por ej., su nombre) []:ingresar el nombre del servicio, aplicación u unidad operativa, ej:Sistema Facturas
    • Ingrese: CUIT XXXXXXXXXXX (XXXXXXXXXXX es la CUIT sin guiones)ingresarCUIT xxxxxxxxxxx
  • Enviar el empresa.csr a la AFIP para que lo firmen y devuelvan el certificado empresa.crt. Para asociar el certificado de homologación, enviarlo por email a la AFIP (webservices@afip.gov.ar). Para producción, enviarlo por clave fiscal, y descargar el certificado CRT.
 
El archivo afip-openssl.cnf debe configurarse y puede bajarse desde aca.
 
 
 
Paquete de Librerías:
Descargar e instalar en C:\PyAfipWsd el último paquete completo de librerías desde el sitio de descargas por ejemplo http://pyafipws.googlecode.com/files/instalador-PyAfipWs-1.25c-homo.exe
 
 
 
 
 
Uso en Producción
Por diseño, la interfaz COM (pyafipws.py, wsaa.py) y herramientas (rece.py, recex.py y receb.py) funcionan en modo homologación, para habilitar modo producción, por ej. editar la linea #28:
HOMO = True
y cambiarla a:
HOMO = False
De lo contrario, la interfaz no tendrá en cuenta las URLs de los servidores de Producción, aunque sean informadas en CallWSAA y Conectar.
Nota: Esto no aplica a los módulos para Python (wsfe.py, wsfex.py, etc.), pero también por defecto funcionan con URL de homologación.
Lo mismo aplica para WSFEv1 y WSMTXCA.
 
 
Comentarios:
– Poner “False” con mayúsculas.
 
Proyecto PyPDF utilizado para la creación de facturas digitales en formato PDF.
 
 
 
 

Configurar iptables en modo consola


Cuando tenemos que configurar el firewall de Linux en modo consola, lo que me resultó siempre mas cómodo es hacer un dump de las tablas en un archivo de texto, editar el archivo modificando las reglas que necesitemos y luego volver a restaurar las tablas desde dicho archivo.

Guardamos una copia de la configuración actual de las iptables (opcional):
# iptables-save > /root/iptables.original

Creamos una copia de trabajo:
# iptables-save > /root/iptables.firewall

Modificamos las reglas en ese archivo de acuerdo a nuestras necesidades:
# vi /root/iptables.firewall

Restauramos la configuración del firewall desde el archivo previamente modificado. Ojo, verificar errores.
# iptables-restore < /root/iptables.firewall

Reiniciamos el servicio:
# service iptables restart

Copiamos las iptables para que los cambios persistan luego del booteo:
# cp /root/iptables.firewall /etc/sysconfig/iptables

Siempre tenemos que tener presente dos comandos que nos ayudan mucho a configurar los puertos en los que escucha cada servicio:

# rpcinfo -p localhost
me dará un detalle del puerto en que está escuchando cada servicio y si es del tipo TCP o UDP.

# nmap localhost
me mostrará los puertos en los que está escuchando un servicio.

Manejo del puerto paralelo en Linux con gcc


Hace unos años me armé la plaqueta de interfaz para controlar el puerto paralelo de la PC.
Hoy en día he retomado el proyecto y trataré de armar un pequeño robot comandado por esta placa desde linux, utilizando una notebook o netbook.

Asi que una de las cosas fundamentales que necesito para este trabajo es conocer el manejo de los puertos con el lenguaje C desde Linux y como compilarlo.
Este es el código básico para el manejo del puerto paralelo en Linux con gcc:

#include
#include
#include
#define puerto 0x378     /* LPT1 */

int main (void)
{

unsigned int p; // en esta variable le decimos, en hexa, cuantos cuantos leds prenderan

//apertura del puerto
if(ioperm(puerto,1,1))
{
perror(“Se ha encontrado el siguiente error: “); //manejo de errores
exit(1); //salida con error
}

p = 0x01; //puerto 1
outb(p,puerto); //envia el valor en binario al puerto
usleep(1000000); //delay

p = 0x00; //puerto 0. Apaga todos los bits
outb(p,puerto);

if(ioperm(puerto,1,0)) //cerramos los permisos del uso al puerto
{
perror(“Se ha encontrado el siguiente error: “); //volvemos a manejar un eror en caso de…
exit(1); // salimos mostrando mensaje de error
}
exit(0); //terminamos el programa

Ahora, como compilamos este programa ?
Supongamos que lo guardamos con el nombre test.c

$ gcc -o test test.c

Para ejecutarlo bastará con la orden:

$ sudo ./test

Para saber los valores de encendido y apagado de los 8 puertos de salida, revisar el post de Control de Potencia con PC

Cambiar fecha de Creación o Modificación de un archivo – Change File Timestamp


Supongamos que tenemos este archivo:

[root@galileo db]# ls -l arba*
-rwxr–r–. 1 user sistemas 14125053 Mar 17 09:42 arba_db_20110217050004.rar

Con touch -t cambiamos el timestamp del archivo
pasandole al parámetro -t la fecha con el siguiente formato: YYMMDDhhmm.ss

[root@galileo db]# touch -t 201102170500.04 arba_db_20110217050004.rar

Quedando así:
[root@galileo db]# ls  -l arba*
-rwxr–r–. 1 user sistemas 14125053 Feb 17 05:00 arba_db_20110217050004.rar

Podemos usar touch con la opción -m para modificar solamente el timestamp de modificación o -a para modificar solo el timestamp de acceso

Observando la Luna, Jupiter y Saturno con el ASIMOV


Bueno, la otra noche estuvimos viendo con mi hija en nuestro telecopio casero ASIMOV la Luna que estaba hermosa y además pudimos ver con bastante detalle a Júpiter y sus cuatro satélites principales Io, Europa, Calixto y Ganímedes.

El tema es que se veía tan bien que quise sacarles unas fotos para compartirlas. Solo tengo una cámara digital común y corriente, así que el resultado no fué muy bueno, pero algo se distingue.
La cámara es una Sony DSC W50, con flash desactivado y apoyando la lente directamente sobre el ocular.

dsc019181

Este es Jupiter y sus 4 satélites principales Io, Europa, Calixto y Ganímedes. Alineados al planeta. En la foto no se aprecian los detalles.

dsc01992
dsc01996

Estas son de la Luna, probando diferentes opciones de luz de la cámara.

Este es Saturno, pierde bastante nitidez con la camara…

Todas fueron tomadas usando un ocular Plossl de 20mm. Nada de Barlows aún…