¿Son los días sábado hábiles para el SENIAT?

Legalmente hablando, claro está y no, no es una pregunta retórica aunque vamos a revisar la historia. Si os parece una cuestión baladí mejor no sigáis leyendo pero en fin, aquí vamos.

Historia.

Ya bien lo dice la Biblia: el primer día de la semana es el domingo porque al séptimo día Dios descansó, es decir el día sábado, «sábado universal» que es lo que estamos viviendo hoy día. De hecho la religión judía aún sigue observando ese día como de descanso, en el país Israel es prácticamente sagrado desde el viernes en la noche. Por esa razón es que domingo es cero en el mundo de los ordenadores (en computación todo arranca desde cero, no vamos a perder ese valioso espacio de memoria). Seguir leyendo →

Gaceta Oficial N° 41.239 rebaja IVA 9 %

IVA 9% (pagos electrónicos) hasta 31 diciembre 2017

De nuevo esto es llover sobre mojado, ya que en diciembre de 2016 se hizo un decreto similar, PERO HAY UNAS DIFERENCIAS IMPORTANTES que debemos recalcar, pero primero la base legal de este nuevo cambio en nuestra forma de trabajar.

*** ¿APURADO O APURADA? HAGA CLICK AQUÍ, POR FAVOR ***

Descargar Gaceta Oficial N° 41.239 (Decreto N° 3.085)

En la Gaceta Oficial N° 41.239 publicada en fecha martes 19 de septiembre de 2017 se publicó el Decreto No 3.085 de la Presidencia de la República, mediante el cual se dispone una rebaja del porcentaje del IVA y que ponemos a vuestra disposición en el siguiente enlace:


Desde esta humilde página web (3 hojitas, 1 megabyte)


Seguir leyendo →

free as in freedom

Feliz Día del Software Libre 2017

De antemano os decimos que libre no quiere decir necesariamente que es gratis: una cosa es compartir y enseñar y otra muy distinta es que trabajemos gratis. Manejamos el Software Libre (así, con mayúsculas, porque es un ente) desde el punto de vista del servicio, de horas trabajadas, de que podemos automatizar las tareas, sí pero que la instalación, monitorización y mantenimiento (en ese orden) ocasiona «horas hombre» u «horas mujer» de trabajo duro y que conlleva una gran responsabilidad, éso es por lo que cobramos. Ahora bien, allá aquellos que piensan que trabajamos encerrados en «neveras» con nuestros ordenadores y que nos las pasamos «tuiteando», bueno tratamos siempre de convencer, que es más importante que vencer; tercer sábado de septiembre ¡FELIZ DÍA DEL SOFTWARE LIBRE!

free as in freedom
free as in freedom

Seguir leyendo →

Anti-Monopoly ( ― San Francisco State University ― Professor Ralph Anspach)

La Historia de Internet – Guerra de Navegadores

Si no sabemos de dónde venimos, no sabremos -jamás ni nunca- hacia dónde vamos, las nuevas generaciones deben saber, deben conocer lo que nosotros vivimos en esa época ¡por la libertad del internet! Recuerdo las descargas del código fuente del Netscape eran una barbaridad de 200 megabytes cuando nos afanábamos de nuestros discos duros de 700 MB (yo tenía un flamante Samsung, IDE por supuesto que había comprado con un préstamo en el trabajo y duré 6 meses para pagarlo ¡un disco duro!). Seguir leyendo →

Feliz Día del Programador

Feliz Día del Programador 2017

«Feliz Día del Programador» desde el 2015 tenemos conocimiento que celebramos este día, sin distingo del lenguaje que usemos, tengamos que usar o que desarrollemos (los más avezados en la materia). Sin duda que los ordenadores es uno de los más grandes inventos de la humanidad, con la labor destacada de Alan Turing (con quien en vida se cometió una gran injusticia en su vida personal).

Feliz Día del Programador
Feliz Día del Programador

Modestía aparte: sobre nosotros recae un gran poder que conlleva una gran responsabilidad y aprovechamos el día para recordarnos nuestra dosis diaria de humildad, paciencia y empeño no solo en este día sino en todo el año para que los usuarios a quienes nos debemos (y nos dan el sustento económico en este, por ahora, sistema capitalista) sean los máximos beneficiados de nuestros frutos mentales ¡Y SI PROGRAMAMOS EN SOFTWARE LIBRE CONTRIBUIMOS AL PATRIMONIO TECNOLÓGICO DE LA HUMANIDAD! Seguir leyendo →

Gaceta Oficial 41231 sumario

Gaceta Oficial N° 41.231: aumento de sueldo 40% 1° septiembre 2017.

Abrimos septiembre con los precios aumentados de agosto, ante cada arremetida de la inflación inducida y especulativa un aumento de sueldo correspondiente (los precios suben en ascensor y los salarios por las escaleras). No es primera vez que vemos esta situación, en 1994 sucedio algo parecido pero en menor cuantía, en todo caso echarse a llorar nos deshidrata y no cambia en lo absoluto la situación. Volviendo al trabajo: en nuestra aplicación de farmacia por primera vez (en 2006 no se nos ocurrió pensar en ello) colocaremos la combinación de teclas CTRL+M al introducir cantidades monetarias para multiplicar por mil ya que de la reconversión monetaria del 2007 solo quedó el recuerdo. En los puntos de debito de los bancos podrían programar una de las teclas especiales como multiplicador por mil en cualquier país del mundo puede suceder esto, de hecho hay modelos de calculadoras electrónicas marca Casio que tienen teclas «doble cero» y «triple cero».

Como podrán notar la cuenta Twitter de la Imprenta Nacional invita a descargarla en su «servicio de Gaceta del Día» y literalmente es eso, del día, porque lo que hacen es subir a un sitio de almacenaje llamado «mega.nz» y cada día cambian el enlace. A esta fecha tampoco funciona la página web del Tribunal Supremo de Justicia, o dice «servicio no disponible» o si abre no muestra el calendario de siempre y cuando uno mete el número de la Gaceta no devuelve resultado. En fin, nadie dijo que esto iba a ser fácil, pero contribuimos con nuestro granito de arena compartiendo la información con todos, sin ningún distingo, a continuación las cinco primeras hojitas, 1,5 megabytes en formato PDF:


Desde esta vuestra humilde página web lo pueden descargar del siguiente enlace:

—>>> Gaceta Oficial N° 41.231 <<<—


Seguir leyendo →

MySQL Workbench 6.3

MySQL Workbench: ¡conoced un gran aliado!

MySQL Workbench: si no lo conoces estás perdiendo un gran aliado.

por Jimmy Olano.

Introducción.

MySQL Workbench 6.3
MySQL Workbench 6.3

 

Cuando escuchamos acerca de MySQL de inmediato pensamos en la poderosa base de datos relacional “RDBMS”, la cual ahora pertenece al gigante Oracle®, y quienes han mantenido bajo licencia de software libre dicho programa. Nosotros los programadores de aplicaciones gustamos de utilizar la línea de comandos para nuestros propósitos pero “MySQL Workbench” es la respuesta acertada para disfrutar de una interfaz visual en el diseño y administración de nuestras bases de datos.

En esta entrega evaluaremos a “MySQL Workbench version 6.3.6 Community” la cual es base para la “Standard Edition” y se diferencian por la documentación extendida, módulos/complementos adicionales y el soporte directo al usuario, todo esto con licencia comercial.

Si bien es cierto que os estamos hablando de programación con bases de datos como apertura también os decimos que “MySQL Workbench” tiene una sección muy útil en cuanto a la administración de servidores de datos y os lo presentamos como marco de referencia para nuestro objetivo: monitorizar el manejo y almacenamiento de nuestra información, ¡acompañadnos!

Prerrequisitos.

Desde luego que para utilizar “MySQL Workbench” debemos tener instalado un servidor MySQL, y para nuestro caso usamos ambas aplicaciones en un mismo equipo GNU/Linux Ubuntu 16 LTS, 64 bits, así que las gráficas acá indicadas pueden ser diferentes a lo que veáis en vuestros ordenadores.

Los ejemplos de datos nombrados aquí dados son ficticios y tienen propósitos puramente didácticos, cualquier parecido con la realidad será absoluta y feliz coincidencia. Ciertas marcas registradas están acompañadas de un símbolo ® o © y pertenecen a sus respectivos propietarios.

Requerimientos de software.

“MySQL Workbench” (la cual abreviaremos de ahora en adelante como MySQL Workbench) está diseñado para trabajar bajo ambientes:

  • GNU/Linux (Ubuntu a partir de la versión 9 y Fedora a partir de la versión 11 están certificadas oficialmente).

  • Solaris.

  • FreeBSD.

  • Mac OS 10.6.1 o superior.

  • Windows 7 o superior.

En el caso de Windows se necesita el entorno “Microsoft .NET 3.5” y luego solo basta con descargar el programa instalador con extensión “Microsoft Installer .msi”.

Para GNU/Linux necesita como mínimo Cairo 1.6.0, glib-2.10, libxml-2.6, libsigc++ 2.0, pcre y libzip. Para este ambiente, en la distribución Debian (y sus “sabores”) solo bastará invocar con derechos de administrador el comando “apt-get install mysql-workbench” para que automáticamente descargue todos los paquetes necesarios e incluso nos invite a eliminar de nuestro disco fijo las librerías que no estén en uso para ahorro de espacio.

Requerimientos de hardware

Para poder utilizar MySQL Workbench como mínimo debemos contar con:

  • Procesador doble núcleo de 2 Ghz (4 núcleos recomendado)

  • 4 gigabytes de RAM (6 gigabytes recomendado).

  • Pantalla con una resolución mínima de 1024×768 píxeles (1280×1024 recomendado).

Esta configuración es normal en las computadoras modernas (cosa diferente son los requisitos para “MySQL Server”).

Ejecutando MySQL Workbench.

Una vez lo hallamos instalado en nuestro ordenadores procedemos a ejecutarlo y veremos una pantalla de bienvenida parecida a esta:

 

A la derecha veremos los accesos directos a las opciones más utilizadas o que nos ayudarán a orientarnos en el uso de esta herramienta (a este conjunto lo denominan “Workbench Central”):

  • “MySQL Utilities” que corren bajo una ventana terminal (línea de comandos).

  • “MySQL Bug Reporter” ya que el código abierto permite la depuración constante por parte de toda la comunidad que quiera colaborar en ello.

  • Enlaces web hacia foros en líneas, esto cambia de tanto en tanto dependiendo de la moda y cantidad de usuarios que los sustenten.

  • “Database Migration” si necesitamos traer datos otra base de datos MySQL o incluso de otros tipos de bases de datos tenemos este excelente asistente, mostramos las cómo iniciar la importación desde una base de datos PostgreSQL en la siguiente figura.

Nos detendremos un poco sobre “MySQL Utilities”: al elegir esta opción se nos abrirá una ventana de terminal de comandos (amada por unos, marginada por otros) donde en realidad presenta un listado que no pertenece a MySQL Workbench en sí mismo, son comandos que uno igual pudiera correr en una ventana terminal independiente. Por ejemplo, podremos ver a mysqldiskusage, comando que nos permitirá conocer cuánto espacio ocupan las diferentes bases de datos que alberga nuestro “MySQL Server” (nota: ejecutad siempre, por motivos de seguridad, dichos comandos por medio de una conexión SSH).

Lo que queremos destacar es que MySQL Workbench funciona con elementos propios y otros agregados, ofreciendo gran flexibilidad a nuestra labor de monitorización, veamos.

Utilizando MySQL Workbench.

MySQL Workbench tiene tres áreas principales bien definidas (a esto lo denominan “Workspace”):

  • Desarrollo de Lenguaje de Consulta Estructurado (“Structures Query Language Development” SQLD por su abreviatura en idioma inglés).

  • Modelado de Datos de una manera visual y que incluye, además, la ingeniería en uno y otro sentido entre un esquema (interacción guiada) y una base de datos así como la creación, modificación y visualización de los objetos (tablas, columnas, disparadores, consultas definidas, etc.)

  • Administración del servidor en la cual haremos hincapié más adelante.

Acotamos que muchas opciones no solo se limitan a estas áreas: por nombrar alguna, MySQL Workbench permite exportar (e importar) datos de una manera bien práctica y con la opción de acceder a características avanzadas:

Esta figura muestra ya cuando estamos conectados a una base de datos y estamos prestos a sacar (o respaldar) nuestros recursos almacenados pero ¿cómo conectarnos? A continuación os presentamos con mayor detalle.

Conectando a nuestra base de datos.

Si bien tenemos el modelado de datos, el cual podemos hacer “fuera de línea”, eventualmente esa información la deberemos almacenar en una base de datos; asunto muy distinto es monitorizar al servidor ya que para ello debemos conectarnos de manera obligatoria. De manera automática, a la izquierda de la pantalla de bienvenida, MySQL Workbench detecta nuestro servidor MySQL local a lo cual podemos hacer clic, introducir la contraseña y conectarnos, sin embargo os presentamos la interfaz de conexión al presionar las teclas CTRL+U (menú desplegables “Base de datos” → “Conectar a base de datos”):

Es de hacer notar que si tenemos varias bases de datos que administrar ahorramos tiempo si hacemos perfiles de conexión y las grabamos con MySQL Workbench, dichas fichas pueden contener instrucciones adicionales como conectarnos siempre por medio de SSH (pestaña “Remote Management”) o elevar privilegios como para iniciar o detener el servidor (pestaña “System Profile”).

Plenamente conectados.

Tras ingresar nuestras credenciales estaremos en línea y no es de sorprendernos que lo primero que ofrece MySQL Workbench es realizar comandos SQL (debemos recordar que esa es una de las funcionalidades principales de este software y con lo que la mayoría de las personas asocia).

Dos ordenes rápidas nos permiten elegir una base de datos que está a simple vista a la izquierda y mostrar las tablas que contiene, en este aspecto MySQL Workbench cumple las mismas funciones que phpMyAdmin solo que nuestro entorno no es un navegador web sino una aplicación de nuestro sistema operativo.

Comentamos que podemos hacer un modelado de datos para luego plasmarlo en una base de datos pero si es el caso que llegamos a una empresa y ya está todo planteado debemos entonces, ya sea para tener un panorama general o para mejorar la estructura de datos un proceso de ingeniería inversa, solo os traemos una gráfica para tener una noción de ello y tal vez sea útil a la hora de monitorizar, nosotros los seres humanos muchas veces necesitamos de mapas mentales para realizar nuestro trabajo.

Monitoreando nuestro “MySQL Server”.

Dejando un lado las labores de diseño, consulta y modificación para los desarrolladores, poco hemos tardado en llegar a nuestro objetivo que es monitorizar: justo debajo de la opción “MANAGEMENT” la primera opción que os presentamos es el estado del “MySQL Server” en la sección “Server Status”:

De un solo golpe de vista tenemos la información del nombre del servidor, si se está ejecutando, el puerto de escucha, los directorios de configuración, versión utilizada y compilada así como si es un servidor principal o es una réplica. También, de manera muy resumida, la carga de trabajo, tráfico de red entre otros valores relevantes.

Otra sección a la que podemos tener acceso es “Instance” → “Startup/Shutdown” donde podremos iniciar o detener el trabajo (y que debéis tener cuidado si estáis conectado a un servidor en producción): ¡pendientes si hay usuarios conectados!):

Una vez nos hayamos enterado de la situación en general podremos obtener mayores detalles si usamos el apartado “Perfomance” y luego “Dashboard” donde está nuestro tablero de instrumentos.

Al hacer clic allí veremos unas gráficas muy importantes:

Tráfico de red.

 

Muestra el número de bytes por segundo tanto enviados como recibidos y el número de clientes conectados. Esto permite rápidamente el conocer el caudal y si estamos llegando al máximo permitido por el hardware, unos valores por encima de 85% durante mucho tiempo nos indicará si debemos pensar en migrar a servidores en réplicas o en racimos en internet (cloud cluster) para poder asumir la nueva carga de trabajo.

Estado del servidor MySQL.

Si colocamos esto en segundo lugar no es porque sea menos importante que el tráfico de datos; acá nos muestra la eficiencia del caché de datos (la información que es solicitada más a menudo mejor es mantenerla en RAM para reducir el desgaste de disco duro) así como el número de SQL ejecutadas por segundo e incluso discrimina sus diferentes acciones específicas: consultas (“el pan nuestro de cada día”), insertados, modificación y borrado de datos -más frecuentes- y creación, modificación y borrado de tablas que no deberían suceder (con muy contadas excepciones) y que cae en el campo de la seguridad informática (solo cuentas privilegiadas pueden ejecutar estas acciones).

Estado del InnoDB.

InnoDB es un mecanismo de almacenamiento de código abierto desarrollado por la compañía finlandesa Innobase (ahora adquirida también por Oracle) el cual es muy popular por sus superiores ventajas, tema que da para hacer un artículo completo al respecto. Si nuestros datos están almacenados de esta manera, MySQL Workbench nos mostrará las solicitudes de lectura y escritura al disco duro (solicitudes que a su vez las recibe el caché de datos sobre el cual comentamos en la sección anterior).

InnoDB es preferida por su capacidad ACID la cual a su vez vez tiene un límite de 200 transacciones por segundo y que para sobrepasarlo necesitaremos un hardware muy especializado y/o el reparto de la carga de trabajo entre varios servidores, por lo que esta monitorización es muy importante.

Reportes de desempeño.

Aunque no de una manera gráfica pero igualmente útiles son los reportes de desempeño, una serie de guiones SQL almacenados por los programadores de MySQL Workbench y que se ejecutan ya sea de manera automática o a petición, como este es nuestro caso en las siguientes dos imágenes.

La última imagen ilustra las tablas temporales y su tiempo de servicio y numero de veces ejecutadas (en columnas a la derecha al mover la barra de desplazamiento horizontal), pero ¿por qué son prioritarias para nosotros? La respuesta es que para las consultas almacenadas o creadas por los usuarios, “MySQL Server” guarda dichos valores en tablas temporales y observar su comportamiento nos puede ayudar a identificar retrasos en la retribución de la información. Éste y otros valores o conjuntos de valores permitirán decidir qué esquema de desempeño utilizaremos en la siguiente sección.

Esquema de desempeño.

MySQL Workbench nos ofrece una configuración muy sencilla en cuanto a la manera sobre cómo se recolecta la información para que luego nos sea presentada: hemos llegado entonces a la quintaesencia de la monitorización de servidores.

Existe un delicado equilibrio entre la recolección de datos y el servicio de datos: al aumentar los niveles de exigencia del primero disminuye lo segundo, es por ello que MySQL Workbench ofrece 4 niveles básicos.

  1. Completamente habilitado.

  2. Personalizado (arriba mostrado).

  3. Por defecto, valores “de fábrica”.

  4. Deshabilitado.

¿Cuál nivel es mejor para nosotros? Os indicamos que depende de la fase de desarrollo de vuestro software, la opción (a) se ofrece para desarrollo en ambiente de prueba, la opción (c) para software ya conocido, establecido y bien depurado y la opción (d) pues bueno, no la recomendamos para nada.

Dejamos la opción personalizada de último para brevemente mostraros sus opciones ampliadas, vamos a la siguiente figura:

Es tan avanzado que primero debemos conocer los componentes conceptualizados que luego podremos configurar:

  • Actores (usuarios que solicitan o tramitan información).

  • Instrumentos (memoria, blackhole, InnoDB, MyIsam, etc.: objetos programados que procesan la información).

  • Consumidores (tablas donde guardaremos los datos recolectados).

A estos elementos en su conjunto serán registrados en los tres eventos siguientes:

  • Al llegar una nueva solicitud y finalizar la misma (una vez todos y cada uno de sus componentes hayan finalizado; recordad además que las transacciones ACID son “más costosas” en tiempo y recursos de máquina, arriba lo comentamos en detalle).

  • A su vez todos y cada uno de los pasos que abarque la solicitud.

  • Los diferentes eventos asíncronos que crean períodos de espera en cada una de las etapas del punto anterior, esto permite detectar cuellos de botella y diseñar algoritmos que entreguen datos a tiempo a los procesos siguientes. Este concepto es un poco difícil de entender ya que implica hilos de ejecución que bien pueden ser independientes de principio a fin o que tal vez necesiten en algún punto información de otro hilo para continuar. La simplificación que damos es exagerada pero bien ilustra en pocas palabras la situación planteada.

Para configurar todas estas opciones haremos clic en las diferentes pestañas de la última figura mostrada, allí recomendamos comenzar por agregar los usuarios (actores) y objetos (los disparadores triggers que se activan bajo eventos tales como por ejemplo dar de alta un usuario o alcanzar determinado número de registros, etc.), luego marcamos los instrumentos que queremos supervisar (InnoDB, por ejemplo) y las tablas donde los guardaremos (Consumers) teniendo en cuenta los hilos (Threads) de dichos instrumentos.

Expandiendo las posibilidades de MySQL Workbench.

Desarrollada bajo lenguaje C++ esta aplicación acepta guiones “scripts” escritos en lenguaje Lua o Python, este último más extendido y con muchas opciones. Con ello podremos:

    • Automatizar tareas comunes, el anhelado premio para los administradores.

    • Mejorar la interfaz para el usuario.

    • Crear complementos.

    • Manipular esquemas de datos.

    • Crear características personalizadas para MySQL Workbench.

      Para muestra un botón, podremos crear un complemento escrito en lenguaje Python con solo darle un nombre de inicio y MySQL Workbench precargará el ambiente de trabajo con las librerías especialmente destinadas tales como la interfaz gráfica y las que interactúan con la base de datos.

      Conclusión.

      Ya podemos dejar de pensar que solo los programadores utilizan MySQL Workbench para modelar datos y crear, modificar, consultar y eliminar sus estructuras de almacenamiento; incluso labores de respaldo, importación o exportación de datos: el tema va mucho más allá de eso.

      Aunque hemos dejado mucha tela por cortar en este artículo, solo es una muestra del gran aliado que podemos obtener en la monitorización de servidores de datos MySQL: pudiéramos decir que las combinaciones son prácticamente infinitas.

eSpeak

eSpeak en Ubuntu 16 (y otros ambientes)

[ratings]

Yo renombraría esta utilería como «e-Speak», un apócope de «Electronic Speak» porque para nosotros los castellanohablantes nos suena como un «espanglish«, pero bueno, así se llama «eSpeak» (así nos confunda) ¿Y qué hace este software? Pues simplemente nos «habla» el texto que querramos y es especialmente útil para añadir ayuda auditiva para los discapacitados visuales en nuestros programas. La imagen de los labios la he sacado de su propio sitio web, el programa es de los años 90 y las gráficas se necesitaban así, ligeras y toscas (por extensión a la licencia imagino la imagen será de dominio público, en todo caso siempre enlazamos dando crédito de autoría). Acá haremos unas simples líneas de comando (nosotros siempre usando solo la venta terminal ¡cuándo no es pascua en diciembre!) así que disfrutad de nuestra primera entrada de agosto de 2017.

eSpeak
eSpeak (página web)

Seguir leyendo →