viernes, 28 de septiembre de 2018

Acceder a BD SQLite desde la RED.

En esta ocasión quiero compartir una estrategia sencilla (en extremo sencilla) para consultar datos (SELECT) en una BD SQLite que reside una PC o server en una red LAN.

Como es conocido el SGBD SQLite no es multiusuario y NO esta pensado para el acceso concurrente en un entorno de red. No obstante por determinadas circunstancias pudiera ser necesario acceder a una BD SQLite que reside remotamente en un server de red. A mi se me presento tal situación.

La estrategia general es un "webservices", cerrado entre comillas porque esta, en particular no lo es, estrictamente hablando. La idea es:

Instalar un servidor Web Apache y con script PHP devolver los resultado en formato JSON. Estos resultados en formato JSON pueden ser consumidos por cualquier aplicacion Desktop para PC, Android, IOs y etc. para dispositivos moviles y aplicaciones web.

Aqui hablamos de estrategia sencilla porque decidimos solo ejecutar consultas SELECT sobre el origen de datos. Y crear un script PHP por cada select sql necesario.

A modo de ejemplo se muestra un script PHP para hacer un select sobre el origen de datos SQLite. Debemos acotar que la BD SQLite reside en un PC Ubuntu 16.04 Desktop.

Suponiendo que nuestra BD tiene una tabla customers y de la cual queremos obtener los registros cuyo campo id sea igual 5.

El script PHP lo creamos en una carpeta del server Web en la PC Ubuntu, habitualmente en /var/www/carpetaweb para Apache ó /opt/lampp/htdocs/carpetaweb para LAMPP. Nuestra BD reside fisicamente en /home/user/datos.sqlite

customers_byID.php

<?php

// Abrimos la BD
$db = new PDO('sqlite:/home/user/datos.sqlite');

// Leemos el parametro enviado por GET
$id=$_GET["id"];

// Definimos el Select SQL en una variable
$sql_qry="SELECT * FROM customers Where id='$id'";

// Ejecutamos la consulta
$result = $db->query($sql_qry);

$result->setFetchMode(PDO::FETCH_ASSOC);

// Obtenemos los resultados
$row = $result->fetchAll();

// Codificamos y devolvemos los resultados en formato JSON
echo json_encode($row);

?>

Ahora nos queda desde la aplicacion consumidora invocar el script PHP y parsear el resultado.

Bastante sencillo. Pero, debemos tener en cuenta varias cosas..

  • La carpeta /home/user/ debe tener permisos 777; pueden establecerse escribiendo chmod 777 -R /home/user/ en la consola linux
  • Pueden implentarse consultas INSERT y UPDATE pero con cuidado, recordar que SQLite no es multiusuario.
  • Podemos pasar los parametros a la consulta por POST, solo habria que utilizar la función $_POST() en PHP en lugar de $_GET()
  • Todo fue probado usando LAMPP con PHP > 5.x

jueves, 13 de julio de 2017

Como conectar 3 monitores (1 monitor VGA y 2 TV HDMI) a una PC



En esta entrega comparto como conecte 3 monitores de una forma bien económica.


Comienzo por decir que la tarea puede ser simple o complicada en dependencia del hardware o el presupuesto con que se cuente. Yo necesite conectar 1 monitor por puerto VGA y 2 TV por puertos HDMI respectivamente.


A mi juicio para ejecutar la tarea de la manera más económica posible todo se resume en encontrar la placa base adecuada (Motherboard), esto teniendo en cuenta que por lo general las tarjetas gráficas externas son relativamente caras. Digo esto porque con un buen presupuesto se puede conseguir en el mercado una tarjeta gráfica con estos tres conectores (1 VGA y 2 HDMI) ó adquirir una gráfica con 3 HDMI y un monitor con puerto HDMI, y en ambos casos aquí terminaría todo.



Para la solución económica se necesita:



- Placa base que permita mantener activo el iGPU (gráficos integrados) cuando se conecte una tarjeta gráfica externa y que conste de al menos 1 puerto HDMI. En mi caso seleccione la placa base ASUS H81M-CT. Ver la opción de la BIOS en la sgte. Imagen.






- Tarjeta gráfica externa PCI-Express de gama media/baja con 1 puerto VGA y 1 HDMI. En mi caso seleccione la NVidia GeForce 9800 GT


En mi caso utilice Windows 10 Pro, pero aquí el SO no es determinante. Solo contar con los drivers adecuados y listo, la configuración del entorno es trivial.



lunes, 24 de abril de 2017

Recomendaciones para Domains Controlers Windows Server 2012 en entornos virtualizados



En este artículo comparto mis recomendaciones para el despliegue de Controladores de Dominios Windows Server 2012 en entornos virtualizados.

Estas recomendaciones son basadas en mi experiencia personal y en las recomendaciones de la documentación de Microsoft al respecto. En mi caso, mi entorno de virtualización está construido sobre Proxmox 4.2

 RECOMENDACIONES:
  • Tener 2 controladores de dominio (DC), uno físico y otro virtual, ambos deben ser Catalogo Global (GC).
  • Los roles RIP y PDC ubicarlos en el DC físico, el rol de maestro de infraestructura en el DC virtualizado
  • Programar salvas semanales del System State en el DC físico utilizando la herramienta NTBackup.
  • Programar salvas semanales de la Máquina Virtual (VM) del DC virtualizado desde Proxmox.