Impresora Fiscal desde PHP mediante OCX

hasar

Luego de intentar conectarme a una impresora fiscal sobre GNU/Linux durante varios meses y sin éxito, decidí enfrentar este desarrollo sobre Windows. Al investigar el tema me encontré varios documentos informativos provistos por la fábrica de la impresora, en este caso Hasar. En dichos documentos una de las opciones mencionadas para conectar con la impresora es utilizando un control OCX desarrollado y dristribuído de forma gratuita por la fábrica.

Decidí profundizar sobre este método de conexión con la impresora y me puse manos a la obra. Encontré que es necesario registrar en Windows el control OCX que queremos utilizar y podemos hacerlo del siguiente modo.

Dependiendo de si el sistema operativo sobre el que trabajamos es de 32 o 64 bits tenemos que colocar nuestro archivo OCX en las siguientes rutas respectivamente:

c:\windows\system32 ( para 32 bits )
c:\windows\syswow64 ( para 64 bits )

Una vez hecho esto abrimos una consola MS-DOS como administrador y situados en la carpeta del paso anterior ejecutamos por ejemplo:

regsvr32 fiscal150423.ocx

Llegado este punto ya tenemos registrado en Windows el control OCX necesario y podemos incorporarlo a nuestro proyecto de desarrollo.

Como en mi caso necesito acceder a la impresora fiscal desde una aplicación PHP que ya tengo desarrollada comencé a investigar como utilizar el control OCX ya registrado desde PHP. El acceso es muy simple.

Como primer paso es preciso cargar la extensión correspondiente en el archivo php.ini del siguiente modo:

extension=php_com_dotnet.dll

Hecho esto podemos instanciar el objeto OCX para poder trabajar con él:

$hasar = new COM( "hasar.fiscal.1" );

Luego podemos utilizar cualquiera de los métodos disponibles en dicho control, por ejemplo:

$hasar->Puerto = 2;
$hasar->Transporte = PUERTO_SERIE;
$hasar->AutodetectarControlador();
$hasar->AutodetectarModelo();
echo $hasar->Version;
$hasar->PedidoDeStatus;
var_dump( $hasar->Respuesta(0) );

Bueno, hasta acá ya podemos trabajar con lo que necesitemos. El resto dependerá del desarrollo de nuestra aplicación.

Anuncios

Cómo instalar Oracle Listener sobre Linux?

sqldeveloper

Para poder conectarnos a bases de datos Oracle necesitaremos instalar “Instant Client” del siguiente modo:

Primero descargamos la versión de Instant Client de nuestra preferencia desde Instant Client Downloads for Linux x86-64

Luego descomprimimos el paquete en “/opt/oracle/instantclient_12_1” y creamos lso siguientes enlaces:

cd /opt/oracle/instantclient_12_1
ln -s libclntsh.so.12.1 libclntsh.so
ln -s libocci.so.12.1 libocci.so

Declaramos la varaible de entorno LD_LIBRARY_PATH apuntando al directorio creado en el paso anterior:

export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1:$LD_LIBRARY_PATH

Y también agregamos el directorio a la variable de entorno PATH:

export PATH=/opt/oracle/instantclient_12_1:$PATH

Opcional: en caso de disponer de un archivo TNS Names, debemos copiarlo en /etc/tnsnames.ora

Ya podemos utilizar nuestras aplicaciones 🙂

 

 

 

 

 

Git pull desde PHP

Git-Logo

Existen muchas maneras de hacer actualizaciones en nuestros sistemas. Particularmente hablando de actualizaciones de repositorios git mediante php, debemos asegurarnos de tener los permisos y owner correctamente seteados en la carpera de nuestro repositorio.

Por ejemplo para hacer una llamada pull desde PHP podemos hacer:

exec("git pull https://usuario:clave@bitbucket.org/usuario/repositorio.git master");

El ejemplo anterior es sobre bitbucket.org pero sirve para cualquier otro servidor de git.

Para que funcione correctamente todo lo anteriormente expuesto nos situamos en /var/www/html y desde allí ejecutamos:

sudo chown www-data:www-data -R nombreRepo/

De ese modo todo el repositorio (nombreRepo) quedará con www-data como dueño y grupo, esto nos permitirá poder hacer llamadas pull desde nuestro sistema php sin problemas.

 

 

 

Como instalar Docker en Ubuntu?

Docker_container_engine_logo

 

Docker es un software que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización. Utiliza características de aislamiento de recursos del kernel de Linux para permitir que “contenedores” independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales. www.docker.com

Ahora, como podemos instalarlo sobre ubuntu?

Primero que nada, en caso de no tener los siguientes paquetes instalados, lo hacemos.

sudo apt istall apt-transport-https ca-certificates

Luego creamos el siguiente archivo de configuración de Docker al que le agregaremos el contenido que corresponda con nuestra versión de Ubuntu.

/etc/apt/sources.list.d/docker.list

Ubuntu Precise 12.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-precise main

Ubuntu Trusty 14.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-trusty main

Ubuntu Wily 15.10

deb https://apt.dockerproject.org/repo ubuntu-wily main

Ubuntu Xenial 16.04 (LTS)

deb https://apt.dockerproject.org/repo ubuntu-xenial main

Cerramos y guardamos el archivo. Luego actualizamos los repositorios.

sudo apt update

Ya que Docker necesita el paquete linux-image-extra, instalamos el correspondiente a nuestra versión con el comando…

sudo apt install linux-image-extra-$(uname -r)

Para los casos que estemos instalando sobre versiones Ubuntu 12.04 o 14.04 es necesario también que instalemos el paquete apparmor. Esto lo hacemos del siguiente modo…

sudo apt install apparmor

Llegado a este paso, tenemos todos los requisitos para poder instalar Docker, actualizamos los repositorios y procedemos con la instalación.

sudo apt updatesudo apt install docker-engine

Una vez completada la instalación iniciamos el servicio con el siguiente comando…

sudo service docker start

 

Proxy

Ya que Docker se conecta a internet y descarga todos los archivos que sean necesarios para cada caso al ejecutar los comandos que trabajan sobre contenedores, solo en caso de encontrarnos detrás de un proxy debemos editar este archivo con el siguiente contenido:

sudo mcedit /etc/default/docker

Agregamos la línea…

export http_proxy="http://proxy.ejemplo.com:pruerto/"

 

Ahora sí, ya podemos trabajar normalmente con Docker y el mejor modo de comenzar es con un “hola mundo” que provee la plataforma…

sudo docker run hello-world

Al finalizar obtendremos una salida como a continuación donde se nos indica que todo funciona correctamente…

Hello from Docker.
This message shows that your installation appears to be working correctly.

Todo listo! Ya podemos trabar con nuestros contenedores Docker. 🙂

 

 

Donwgrade PHP 7.0 a PHP 5.6

php-300x157

 

Dado que la última versión de Ubuntu 16.04 LTS trae por defecto la versión 7.0 de PHP, si contamos con aplicaciones web un poco viejas nos encontraremos con la necesidad de volver a correr dichas aplicaciones sobre alguna versión anterior de PHP. Si este es tu caso te presento una simple solución para reemplazar la versión que trae el sistema con PHP 5.6.

sudo add-apt-repository ppa:ondrej/php

sudo apt update

sudo apt install --yes php5.6-cli php5.6-dev php-db php-pear php5.6 libapache2-mod-php5.6 php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-xml php5.6-xmlrpc php5.6-sybase php5.6-xml python-software-properties build-essential libaio1

sudo aptitude remove php7.0 --purge

Listo! Ahora podemos correr nuestras aplicaciones PHP sin errores.

 

 

PHPMyAdmin sobre Ubuntu 16.04

phpmyadmin

Algunas cosas ya no son como antes, con la llegada de Ubuntu 16.04 entre otros cambios disponemos de PHP 7.0 y nos obliga a realizar algunos cambios para instalar las aplicaciones y servicios que normalmente se utilizan en el desarrollo web.

Estoy hablando puntualmente del caso de PHPMyAdmin, ahora para instalarlo, además del propio paquete phpmyadmin necesitaremos dos más…

sudo aptitude intall phpmyadmin php-mbstring php-gettext

Ahora sí una vez todo instalado reiniciamos apache…

sudo systemctl restart apache2

Todo listo, podemos utilizar normalmente PHPMyAdmin ingresando a http://localhost/phpmyadmin