jueves, 29 de diciembre de 2016

Remarkable : un editor para archivos marckdown


Marckdown

Markdown es un lenguaje de marcado ligero creado por John Gruber que trata de conseguir la máxima legibilidad y facilidad de publicación tanto en su forma de entrada como de salida, inspirándose en muchas convenciones existentes para marcar mensajes de correo electrónico usando texto plano. Se distribuye bajo licencia BSD y se distribuye como plugin (o al menos está disponible) en diferentes sistemas de gestión de contenidos (CMS). Markdown convierte el texto marcado en documentos XHTML utlizando html2text creado por Aaron Swartz. Markdown fue implementado originariamente en Perl por Gruber, pero desde entonces ha sido traducido a multitud de lenguajes de programación, incluyendo PHP, Python, Ruby, Java y Common Lisp.

Remarkable

Es un editor de marcado poderoso disponible para Linux. Está completamente equipado y personalizable. Puede descargar la versión de Linux de forma gratuita (o donar si lo desea). Los instaladores fáciles están disponibles para los sistemas Debian, Ubuntu, Fedora, SUSE y Arch.

Descargas: https://remarkableapp.github.io/linux/download.html

En Fedora, descargas el instalador y doble clic para instalar, o si lo prefieres, abrir la terminal y ejecutar el siguiente comando:

sudo rpm -ivh remarkable-1.87-1.rpm
Y listo, ya lo pueden buscar en el cajón de aplicaciones.

Aquí dejo una imagen gif del programa.


miércoles, 28 de diciembre de 2016

Mostrar asteriscos al escribir contraseña en la Terminal


Los que usamos la terminal en cualquier distro linux, nos habremos dado cuenta, que al escribir la contraseña, el cursor sigue en la misma posición, es decir, no muestra nada mientras la tecleamos.

Esto, es irrelevante, es más, es incluso mejor si no la muestra, así si alguien ve lo que estamos tecleando, no sabría de cuántos caracteres está formado la contraseña, pero si queremos que muestre un * mientras tecleamos la contraseña, entonces hacer la siguiente modificación.

Abrir la terminal y ejecutar el siguiente comando:
Reemplazar nano por el editor de texto de su preferencia.
sudo nano /etc/sudoers

Una vez que se abra el archivo, ir a al línea que comienza por:
Defaults    env_reset

Y al final agregarle, lo siguiente:
Defaults    env_reset,pwfeedback

Guardar el archivo con Ctrl+X y presionar Y.

Ahora, al teclear la contraseña, mostrará lo siguiente:




Vuelvo a mencionar, esto es por simple estética, personalización o curiosidad por probarlo. No es que se importante u obligatorio, es opcional.

viernes, 16 de diciembre de 2016

SavemyPassword 1.1.3 - PHP-MySQL



SaveMyPassword es un sitio web que he desarrollado como ejemplo completo, en el uso de MySQL y PHP. Este sitio es para guardar nombres de usuario y contraseñas por cada usuaro.

La idea principal, es ejemplificar el uso de base de datos, uso de clases en php. En entre éstas características se encuentran:
- Uso de clases
- Uso de mysqli
- Compatible con php7
- Uso md5 encryptado
- Y muchas otras cosas.

El sitio en línea lo pueden probar aquí. http://savemypasswd.webcindario.com

¿Cómo utilizar el sitio local con Xampp?

Cualquiera que ya haya utilizado Xampp como servidor de php, sabrá lo fácil que es levantarlo.

Paso 1: Instalar XAMPP, omitiré el proceso de instalación para todos los SO, pero aquí les dejo cómo instalarlo en Fedora 25. https://linuxgx.blogspot.mx/2016/05/instalar-y-desinstalar-xamp-5521-en.html
Link de descarga de XAMPP: XAMPP descarga

Paso 2: Descargar el repositorio de Github: LinkDescarga

Paso 3: Mover la carpeta extraída de savemypassword a la ruta htdocs que se encuentra en la ruta de instalación de xampp, en linux a veces es necesario asignar permisos de lectura y escritura a la carpeta savemypasword, en caso de que no funcione el sitio.

Paso 4: Crear la base de datos desde phpMyAdmin, ir a http://localhost/phpmyadmin/

Dar clic en la opción nueva:

El nombre de la BD se llamará savemypassword, una vez asignado el nombre, clic en crear.

Una vez creada la BD, seleccionarla e ir la pestaña SQL. Una vez ahí, copiar y pegar las siguientes instrucciones sql para crear la base de datos.

use savemypassword;

create table usuarios(
 iduser int auto_increment,
 cuentauser varchar(80),
 passwd varchar(200),
 typeuser int,
 fraseuser varchar(200),
 activated int,
 nomuser varchar(90),
 apuser varchar(90),
 primary key(iduser, cuentauser)
);

create table passwords(
 iduser int,
 nomcuenta varchar(90),
 passcuenta varchar(200),
 descripcuenta varchar(200),
 activated int,
 foreign key (iduser) references usuarios(iduser),
 primary key(iduser,nomcuenta)
);

Y clic en continuar:

5.- Una vez creada la base de datos, ir la carpeta savemypassword que está en htdocs y buscar dentro de la carpeta includes el archivo dbconfig.php y modificar el nombre de usuario, contraseña y la ip del servidor.

6.- Modificado dicho archivo, ir a http://localhost/savemypassword/ y probar el sitio.

Y eso sería todo, dejo algunas capturas:







martes, 13 de diciembre de 2016

¿Es necesario la SWAP en una distro Linux?


Una pregunta que se formula muy a menudo, sobre todo por los nuevos usuarios de GNU/Linux es: "¿Es necesario una partición swap para instalar Linux?".

Esta pregunta suele venir junto con otra: "¿Cuánto espacio el asigno a la partición SWAP entonces?".

Quizá ya sea todo un cliché esta pregunta, pero nunca está demás conocer una opinión mas. De tal manera que en este post pretendo explicar para qué se utiliza la partición swap en Linux y si es realmente necesaria en todos los casos, todo esto, con base a mi experiencia que he tenido en estos sistemas operativo.

La memoria ram es limitada. Al encender el equipo se tendrá disponible gran parte su memoria, ya que se supone que no se está ejecutado ningún programa. Sólo se estarán ejecutando los procesos necesarios para poder hacer funcionar al sistema operativo y según se vaya utilizando el equipo se comenzará a abrir aplicaciones, como el navegador, el editor de documentos, Telegram, Skype y una larga lista. La memoria se va llenando más y más y el equipo cada vez va más lento. Es lógico que no funcione tan bien como cuando no teníamos ninguna aplicación iniciada.

Y entonces, a todo esto surge una pregunta.
¿Qué pasa cuando ya no queda más memoria RAM?

Al ir abriendo más aplicaciones hasta el punto de llenar toda la memoria, llegará un instante en el que no se podrá ejecutar ninguna más. Será entonces cuando Linux comience a matar procesos y obviamente, no queremos eso.

Los procesos que matará Linux serán aquellos que no comprometan la estabilidad del sistema. Tienen prioridad aquellos que hacen funcionar el sistema operativo antes que Skype o el navegador. En este momento cedemos el control al sistema operativo para que gestione las tareas como él crea conveniente y por lo menos el equipo siga funcionando.

Memoria RAM + swap

La memoria RAM y la swap permiten simular una RAM de mayor tamaño que la físicamente instalada. Esto tiene como ventaja que proporciona un espacio de memoria adicional que es a veces necesaria para continuar ejecutando procesos. Ya se sabe entonces que Linux matará procesos cuando la memoria física instalada se acabe y no haya espacio para más.

Memoria swap

La memoria swap o de intercambio utiliza espacio en el disco duro en lugar de en el módulo de memoria RAM. La escritura en disco (al menos en los mecánicos) es lenta y el uso de esta memoria puede causar un descenso de rendimiento en el sistema. Por otra parte, es preferible que el equipo vaya algo más lento a que empiece a cerrar programas.

Ahora, debo aclarar algo:

Que haya asignado un espacio en disco para la memoria swap no quiere decir que tenga que utilizarse obligadamente.
Obviamente, la memoria RAM es mucho más rápida, pero el uso de la swap es algo que puede salvarnos la vida en un determinado instante.

¿Y entonces es necesario la memoria swap?

Si tienes una máquina con 1GB de RAM desde mi punto de vísta, sí necesitas swap, aunque según el uso que le vayas a dar. Como ya he mencionado anteriormente, si se abren muchas aplicaciones el uso de la RAM crecerá y llegará un momento en el que la memoria se llene.

En mi laptop personal tengo 16GB de RAM, por lo que no necesito memoria swap de manera obligatoria o necesaria. Sin embargo tengo asignada 8GB. Ya que he llegado a ejecutar hasta 5 máquinas virtuales, entornos de desarrollo abiertos, Telegram, navegadores,  varias cosas más, y  he llegado a usar hasta 12GB de RAM como mínimo. Por lo tanto, la probabilidad que se agote es mucha, y no quiero por alguna razón esto pase y el SO mate algún proceso  que estoy utilizando, o peor aún, que reinicie el entorno de escritorio.

¿Cuánto espacio le asigno a la partición swap?

En caso de que sea necesaria, esto es lo que se recomienda para la swap:

- 1 GB de RAM o menos: la misma cantidad para la swap.
- Entre 2 GB y 4 GB de RAM: la mitad para la swap.
 Más de 4 GB de RAM: 2 GB de swap.

¿Cómo sé si se está usando la SWAP?

En la mayoría de las distros se puede instalar la utilidad htop, top o atop, para ver la cantidad de recursos que está usando cada proceso.

Tengo una PC en el trabajo, con Fedora 25 y Gnome 3.22 con 8GB en RAM, y estaba realizando unas pruebas en red con máquinas virtuales, 2 en Virtualbox con windows y 1 con Centos en VMware, además, el navegador Yandex , Chrome, el editor de texto, y otras utilidades, el resultado de htop fue el siguiente:


Prácticamente la memoria SWAP ha entrado en uso, en este caso, sí es necesario contar con ella. Esto demuestra entonces, que dependerá mucho de los programas y el uso que se le dé al equipo.

Adicional: utilizar zswap

Zswap es un módulo que se integró a partir del Kernel 3.11 a Linux y básicamente lo que hace es funcionar como compresor de paginado para mejorar el uso de RAM y Swap en un sistema.

La ventaja de Zswap con respecto a Zram radica en el hecho de que ya viene integrado en cualquier kernel Linux de cualquier distro a partir de la versión 3.11 (sólamente tenemos que habilitarlo en caso de que no lo esté) mientras que zRAM se tiene que instalar aparte y en algunas distros como fedora esto es un tedio. Por otro lado, Zswap está pensado para beneficiar a todo tipo de equipos, desde el más antiguo con el mínimo de RAM disponible hasta el más nuevo y moderno al ser sólo un compresor que en términos simples hace que "más aplicaciones quepan en la memoria RAM" (o ante los ojos del usuario así se nota aunque de fondo sea más compleja su función) mientras que zRAM ocupa equipos con al menos 1GB de RAM para "hacer impacto" pues realmente sólo es una swap que corre dentro de la RAM.


Al tener Zswap activado no sólo hay una mejor gestión de RAM en el sistema sino que también los procesos enviados a swap son muchísimo más rápidos al intercambiar I/O con la RAM, traduciéndose esto en una computadora que:

a) Va a ser difícil que se vuelva lenta.

b) En caso de que se vuelva lenta va a regresar pronto a operación rescatable en lugar de congelarse por completo.

En algunas distros ya viene activado por default zswap, en otros casos es necesario hacerlo.

Para saber si ya está activado, ejecutar el siguiente comando:

dmesg | grep zswap

Si muestra una salida parecida a esta, quiere decir, que ya está activada:

En caso de que no, entonces abrir el archivo sudo gedit /etc/default/grub y buscar la línea que comienza por GRUB_CMDLINE_LINUX y agregar al final antes de las comillas zswap.enabled=1

De tal manera que el archivo quedará se la siguiente manera:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet zswap.enabled=1"
GRUB_DISABLE_RECOVERY="true"

Ahora, actualizar el grub o reiniciar el equipo:

Ubuntu:
sudo update-grub
Fedora:
grub2-mkconfig -o /boot/grub2/grub.cfg
Arch:
sudo update-grub

Si se ejecuta el comando de comprobación de zswap de nuevo, ahora ya deberá mostrar como activado.

Conclusión:
La partición SWAP, aparentemente no es necesaria si no se va a utilizar el equipo para actividades que requieran uso de la memoria RAM de manera exigente. Aunque, nunca está de más prevenir y dejarle por lo menos 2GB de SWAP, sólo por si acaso.

Este tema es bastante controvertido en la comunidad Linux, así que los animo a dejar sus comentarios sobre si la swap es necesaria o no.

Instalar Spotity en Fedora 25

Spotify

Spotify es una aplicación empleada para la reproducción de música vía difusión en continuo disponible en los sistemas operativos Microsoft Windows, Mac OS X, Linux, Windows Phone, Symbian, iOS, Android y BlackBerry (multiplataforma). Permite escuchar en modo radio buscando por artista, álbum o listas de reproducción creadas por los propios usuarios. El programa se lanzó el 7 de octubre del 2008 al mercado europeo, mientras que su implantación en otros países se realizó a lo largo de 2009.


Instalación utilizando el repositorio de negativo17 - http://negativo17.org. Es un repositorio creado por el entusiasta Simone Caronni, ya es bastante utilizado y reconocido, algunos no lo recomiendan, pero si no quieren usar la primera opción, esta sería la otra.

Instalar los repositorios:
sudo dnf config-manager --add-repo=http://negativo17.org/repos/fedora-spotify.repo

Instalar spotify:
sudo dnf install spotify-client

Y obtendrán el siguiente resultado:

viernes, 9 de diciembre de 2016

Establecer contraseña al servidor de base de datos en XAMPP 7.0.13 - Fedora 25

Imagen 1: Creación propia.



Al iniciar a utilizar XAMPP, ya sean en distribuciones linux, o windows, muestra un mensaje en la parte inferior del panel de administración de phpmyadmin. Este mensaje es referente a la seguridad con la que se encuentra por defecto el servidor de base de datos. Ya que este viene sin contraseña inicialmente.

La asignación de una contraseña al usuario root o usuarios con los que se conecta phpmyadmin a la base de datos, se realiza con los siguientes pasos.

1.- Ir a la pestaña/sección <Cuentas de usuarios>.
Imagen 2: Creación propia.

2.- Verificar que los 3 usuarios root aparecen en color rojo para la asignación de contraseña. Esto significa que ninguno de ellos la tiene asignado. Son a estos tres usuarios a los que se requiere asignar contraseña.

Imagen 3: Creación propia.

3.- Seleccionar el primer usuario que dice root y dar clic en la opción que dice <Editar privilegios>

Imagen 4: Creación propia.

4.- Ir a la pestaña <Cambio de contrseña>

Imagen 5: Creación propia.

5.- En esta opción permitirá establecer una contraseña para el usuario root al conectarse a la base de datos. La contraseña puede ser creada por ustedes mismos, o clic en el botón <Generar> para crear una contraseña aleatoria. Al dar clic aquí, se rellenan automáticamente los campos de contraseña y en el cuadro de texto, les mostrará la contraseña que se ha generado.

Este contraseña es muy importante que la guarden en un archivo de texto, ya que será la misma que se asignará a los otros dos usuarios que están listados dentro del recuadro rojo de la Imagen 3.

Imagen 6: Creación propia.
Repetir estos paso 1 al 4, pero ahora utilizando la misma contraseña que se usó para el primer usuario root.

Una vez, que se haya asignado la misma contraseña a los tres usuarios, al recargar la página de http://localhost/phpmyadmin/ mostrará la página que se muestra en la imagen 7 ó el de la imagen 8:

Imagen 7.

Imagen 8.
Estos errores se deben a que los archivos de configuración de acceso del usuario root, no tiene asignada la contraseña que se le acaba de asignar al usuario.

Para corregir esto, abrir la terminal y ejecutar el siguiente comando:

sudo gedit /opt/lampp/phpmyadmin/config.inc.php

Este comando abrirá el archivo de configuración del usuario root, y en la sección que inicia con /* Authentication type */ es necesario asignar la contraseña que se agregó al usuario root, así como se muestra en los ejemplos siguientes:

Configuración inicial sin contraseña:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

Configuración modificada:
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '8Qt79uFuPZZVV8F3';

Se guarda y se cierra la ventana abierta, y ahora recargar la página de http://localhost/phpmyadmin/ y debe mostrar cargar la página de manera normal.



Conclusión:
La razón principal por la cual se debe asignar contraseña al usuario root para la base de datos, es por seguridad de los sitios web en los que se esté trabajando. Además, es necesario mencionar, que esta es una buena práctica para recordar que los usuarios que se conecten a la base de datos deben contar con una contraseña y de este modo en los sitios web o aplicaciones web en las que se trabaje se deben configurar como si ya estuvieran en producción.

Instalar Telegram en Fedora 25 y Apricity OS (Gnome 3.22)


¿Qué es?
Telegram es una aplicación de mensajería enfocada en la velocidad y seguridad, es súper rápida, simple y gratis. Puedes usar Telegram en todos tus dispositivos al mismo tiempo. Tus mensajes se sincronizan a la perfección a través de cualquiera de tus teléfonos, tablets o computadores.


[---]

No voy a explicar todas las ventajas o desventajas de esta Aplicación para mensajería, ya que eso desvía el objetivo del post.

Lo esencial es ahora, la instalación, y consiste en los siguientes pasos:

La mayoría del software que no está en los repositorios, es posible utilizarlo como ejecutables, es decir, descargarlos, descomprimirlos y ejecutarlos desde el directorio en el que se hayan descompreso.

Pero, adicional a eso, es posible crear su lanzador personalizado y visualizarlo en el cajón de aplicaciones.




Instalación de telegrama en Fedora 25 con Gnome

1.- Descargar la aplicación desde: https://desktop.telegram.org de acuerdo a la arquitectura que tengan, ya sea de 32 o 64 bits.
2.- Descomprimir el archivo. Ahora, aquí debo explicar algo, si solo ustedes van a utilizar la aplicación, entonces, de preferencia descompriman el archivo en /home/usuario, si lo van a usar todos los usuarios del SO, entonces descomprimirlo y mover la carpeta a /opt. El archivo viene con una carpeta dentro de otra carpeta, así que extraer la que dice Telegram y pegarla dónde ustedes quieran, si no la quieren ver siempre, anteponerle un punto "." antes del nombre de la carpeta, quedando así .Telegram y con eso, se ocultará la carpeta, para desocultarla, presionar CTRL+H.
3.- Entrar a la carpeta y dar doble clic sobre el archivo que se llama Telegram  automáticamente, crea un lanzador al cajón de aplicaciones y actualiza la ruta.


Y con eso tiene instalado Telegram.

¿Se han preguntado alguna vez, en qué y cómo se elaboran las guías de LaTeX?


¿Se han preguntado alguna vez,  en qué y cómo se elaboran las guías de LaTeX?

Sería contraproducente pensar que las guías de LaTeX se crean en LibreOffice o peor aún en Word. Ya que lo que se busca en teoría, es impulsar el uso de LaTeX y promover de una otra forma software libre para maquetación de libros o simple y sencillamente mostrar que se pueden obtener resultados profesionales sin necesidad de comprar software propietario.


La guía de LaTeX requiere de los siguientes elementos para su modificación o uso:

- Editor para LaTeX (TexStudio, TexMaker, Gummi, Geany, Gedit, SublimeTex, Lyx, etc.). 
- Motor para el Sistema LaTeX (Texlive[linux], Miktex, Protex o Texlive[windows], MacTex [MAC], PapeeriaOverleafShareLaTeX, o Datazar [en línea])
- Paquetes adicionales: cada plantilla requiere paquetes adicionales, para evitar que esto pase, es recomendable instalar todo el motor de LaTeX.
- Editor de gráficos: inkscape - https://inkscape.org/es/


Y eso sería todo lo que se necesita para crear y desarrollar plantillas como la que se muestra en la primera imagen. O visitar este link para visualizar el PDF.


Todas la imágenes que ven aquí, son parte del manual de LaTeX de 2014, el cual se puede descargar desde la página oficial de los creadores del mismo, es decir, la REVISTA DIGITAL MATEMÁTICA, educación e Internet - http://tecdigital.tec.ac.cr/revistamatematica/.


Por mi parte, decidí, subir los archivos a otro servidor de descarga para contar con uno alternativo.

Platilla subido por mi a Mega.

Una vez descargada la plantilla, abrirla con su editor preferido, y compilar. Si llegara a marcar algún error, por favor escribirme en los comentarios, para tratar de ayudarlos.

Y el resultado a obtener es parecido al que se muestra en las siguientes capturas de pantallas, ya que esto dependerá del contenido que se le agregué a la plantilla, no crean que la plantilla viene con la información del guía.






Fuente consulta:

viernes, 2 de diciembre de 2016

Gráficas con Highcharts, PHP y PostgreSQL


Hace poco en el trabajo teníamos que hacer uso de gráficas, para representar las incidencias de una determinada categoría durante cada mes, por ejemplo cuántas veces se vendieron ciertos productos de una categoría, ya sea de  Ferretería, Electrónicos o Cocina, etc.

Hacer esas gráficas no es un problema complicado, el detalle estaba en que no teníamos tiempo para crear todas esas funciones desde cero, así que mi compañero y yo, buscamos algunas librerías, frameworks, etc., para ahorrarnos dicha labor de crear todo desde cero.

Y encontramos Highcharts


Highcharts es una biblioteca de gráficos escrita en JavaScript puro, que ofrece una manera fácil de agregar gráficos interactivos a su sitio web o aplicación web. Highcharts actualmente soporta línea, spline, area, areaspline, columna, bar, pastel, scatter, angular gauges, arearange, areasplinerange, columnrange, bubble, box plot, barras de error, embudo, cascada y tipos de cartas polares y un sin fin de posibilidades a partir de éstas mismas.

Lo mejor de esto, es que es compatible completamente con el desarrollo en el que estaba trabajando.

El cual es:
- Base de datos: PostgreSQL 9.5.5
- PHP 7.0.13
- Servidor CentOS.
- XAMPP

Algunas de sus características más llamativas son:
- Está hecho con puro javascript
- Se puede usar en modo offline: descargarlas de aquí. https://code.highcharts.com
- Compatible con android, ios y todos los navegadores que soporten js.
- Para versión personal u organización sin fines de lucro, es posible usar sin necesidad de pagar licencia.
- Es abierto a modificaciones propias
- Como ya mencioné en su descripción, soporta múltiples tipos de gráficos. aquí pueden ver algunos http://www.highcharts.com/demo
- La verdad, la configuración y la sintaxis son simples, incluso se puede isnertar código de php dentro de la configuración.
- Es dinámico, se puede agregar y quitar series desde código en php
- Se puede graficar múltiples series sobre una misma gráfica, como haciendo comparaciones.
- Hay tooltips para cada punto, y se pueden personalizar.
- Es fácil exportar el gráfico en formato pdf, png, jpg o svg.
- También es posible realizar un zoom de cierta área de la gráfica.


Ejemplo:


Y como yo sé que nadie quiere copiar y pegar código, aquí les dejo el siguiente ejemplo.


La descarga incluye únicamente el código de la página en php, la instalación del servidor de php, y base de datos se da por entendido. Este ejemplo fue realizado en PostgreSQL, pero no hay mucha complicación en migrarlo a MySQL, para aquellos que no manejen PostgreSQL.

Descripción:
- Servidor PHP: Xampp 7.0.13
- Versión PHP 7.
- Servidor base de datos: PostgreSQL 9.5.5
- Incluye script creación BD.
- Incluye datos para la tabla.
- Ejemplos para gráficas de barra, pastel y lineal.
- Incluye archivos de Highcjarts modo offline.
- Probado en Fedora 25 x86_64bits.


Uso: Se da por hecho que ya tienen instalado y configurado XAMPP y PostgreSQL 9.2 en adelante.

1.- Crear la bd en postgresql, va un script.
2.- Cargar los datos, hay un script en la descarga o agregar los que ustedes deseen.
3.- Mover la carpeta estadistica a htdocs de xampp
4.- Editar el archivo conexion.php en los parámetros de conexión con postgresql (contraseña, usuario, puerto)
5.- Abrir desde el navegador http://localhost/estadistica/  y si todo lo configuraron correctamente, no debe haber problemas.

Toda la documentación, ejemplos y solución a errores, pueden consultar:
http://www.highcharts.com
http://www.highcharts.com/demo


La idea del ejemplo:

Es una tienda que tiene 3 categorías, Electrónicos, Ferretería y Cocina, entonces, hay que graficar las ventas anuales, determinar el mes en  el que se vende más mediante una gráfica de pastel y graficar en barra las ventas mensuales, con opción de desglosarlas para ver en qué producto se vende más por mes.

La función que más me gustó de esta librería, es la que se muestra y se describe por sí sola en la siguiente imagen.





Y bueno, la decisión de utilizarla o no en sus proyectos personales, es suya, es una excelente librería desde mi punto de vista, ya que me permitió obtener los resultados deseados, y me evitó realizar funciones desde cero.

Puede que haya librerías más potentes, o como quieran llamarle, pero como dije, a mi me servió de mucho y realmente es muy simple de utilizar.


Como ya mencioné, en este proyecto, hemos trabajado dos compañeros, de tal modo que agradezco a Valdivia, por comenzar la búsqueda de información y utilización de la misma.

miércoles, 30 de noviembre de 2016

GaussJordan en C



Cuando estudias programación, posiblemente uno de los programas básicos que te pedirán es el de GaussJordan, o tal vez no, pero como sea, aquí les comparto uno que desarrollé cuando lo necesité.

Es bastante simple, utiliza memoria dinámica para todo el cálculo y además si no encuentra solución pues envía un mensaje que no lo hay.

Hay muchas cosas que se necesitan pulir, por ejemplo, si ingresan más 20 ecuaciones, a veces se cicla. Claro, hay programas mucho más complejos que ya resuelven este problema, pero cuando a uno se lo piden, pues no es tan simple desarrollarlo.

El código es el siguiente, el cual solo se copia, se pega a un documento de texto y se compila con c, en mi caso utilizo geany para eso:

/* Autor: Fernando Merino
 * Programa: Método de Gauss-Jordan
 * Descripción: El método de Gauss-Jordan soluciona sistemas de ecuaciones
 * simultáneas.
 * */

#include <stdio.h>
#include <stdlib.h>

void gausJordan(float **matriz,int n,float *raices);
void imprimirMatriz(float *raices,int n);
void leerValores(float **matriz,int n);

int main(){
 int n;
 float **matriz,*raices;
 printf("Ingrese el número de ecuaciones (n): ");
 scanf("%d",&n);
 getchar();
 matriz=(float**) malloc (sizeof (float*)*n);
 raices=(float*) malloc (sizeof (float*)*n);
 leerValores(matriz,n);
 gausJordan(matriz,n,raices);
 printf("Solución \n\n");
 imprimirMatriz(raices,n);
 getchar();
 return 0;
}
void imprimirMatriz(float *raices,int n){
 int i;
 for(i=0;i<n;i++){
  printf("X%d = %f\n",i+1,raices[i]);
 }
}
void gausJordan(float **matriz,int n,float *raices){
 int i,j,k;
 float termino;
 for(i=0;i<n;i++){
  if(matriz[i][i]==0.0){
   fprintf(stderr,"Error: División entre 0:: No hay solución!!!\n\n");
   system("pause");
   return ;
  }
  for(k=0;k<n;k++){
   if(k!=i){
    termino=matriz[k][i]/matriz[i][i];
    for(j=0;j<=n;j++){
     matriz[k][j]-=termino*matriz[i][j];
    }
   }
  }
 }
 for(i=0;i<n;i++){
  termino=matriz[i][n]/matriz[i][i];
  raices[i]=termino;
 } 
}
void leerValores(float **matriz,int n){
 int i,j;
 for(i=0;i<n;i++){
  matriz[i]=(float*) malloc (sizeof(float)*(n+1));
  for(j=0;j<n;j++){
   printf("Ingrese coeficiente de 'X%d' de la ecuación %d: ",j+1,i+1);
   scanf("%f",&matriz[i][j]);
  }
  printf("Ingrese el resultado de la ecuación %d ",i+1);
  scanf("%f",&matriz[i][n]);
 }
}


Ahora, lo que le trato de implementar, es muestre los resultados en fracciones, todo el proceso, es decir, que se le ingrese algo así 1/4, y que así se lo lleve en todo el proceso, y que al final de un resultado en fracciones. Si alguien ya lo tiene por ahí y que sea en C, y quiera compartirlo, me parecería perfecto, esto más por hobbie. Gracias y espero que les sirva.

Configurar phppgAdmin para conectar con PostgreSQL en Fedora 25



phpPgAdmin es una aplicación web que provee una manera conveniente a los usuarios para crear bases de datos, tablas, alterarlas y consultar sus datos usando el lenguaje estándar SQL.

phpPgAdmin estuvo basado en phpMyAdmin, pero hoy día ya no comparte código con él; incluso provee las mismas funcionalidades y más a los usuarios del servidor de base de datos PostgreSQL.

Es muy útil cuando pgAdmin III no sea compatible con la versión que se tenga de postgresql, por ejemplo pgadmin III hasta hoy 30 de noviembre 2016, aún no tiene soporte como tal para postgresql 9.6, por ende este tipo de opciones son una alternativa.

La instalación y configuración para fedora 25 con postgresql 9.6 es la que veremos a continuación. Sin embargo, estos mismos pasos se pueden aplicar para otras versiones.

Ahora, aquí se da por entendido que postgresql ya está instalado y funcionando previamente.

Instalar phpPgAdmin y httpd.
sudo dnf -y install phpPgAdmin httpd
Configurar archivo:
su -c "gedit /etc/httpd/conf.d/phpPgAdmin.conf"
El archivo debe quedar de la siguiente manera, en caso de que haya líneas de más, comentarlas con #.

#
# This configuration file maps the phpPgAdmin directory into the URL space.
# By default this application is only accessible from the local host.
#

Alias /phpPgAdmin /usr/share/phpPgAdmin

<Location /phpPgAdmin>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        Require all granted
        #Require local
        #Require host example.com
    </IfModule>
    <IfModule !mod_authz_core.c>
        # Apache 2.2
        Order deny,allow
        Allow from all
        Allow from 127.0.0.1
        Allow from ::1
        # Allow from .example.com
    </IfModule>
</Location>

Iniciar o Reiniciar el servicios de apache:
sudo service httpd start

Configurar el archivo /etc/phpPgAdmin/config.inc.php para phpPgAdmin.
su -c "gedit /etc/phpPgAdmin/config.inc.php"
Buscar las siguientes líneas y modificarlas de tal modo que queden de la siguiente manera:
[...]
# esta línea debe quedar así:
$conf['servers'][0]['host'] = 'localhost';


[...]
# esta línea debe quedar así
$conf['extra_login_security'] = false;


[...]
La siguiente línea debe quedar así
$conf['owned_only'] = true;

Una vez finalizada la configuración del archivo, iniciar o reiniciar los servicios de postgresql, en este ejemplo se usó postgresql 9.6, por ente el comando es el siguiente, adecuarlo de acuerdo a la versión de postgresql que estén usando.

sudo systemctl start postgresql-9.6.service

Ahora, ir al http://localhost/phpPgAdmin y mostrará la siguiente ventana:


Ir a la opción que dice <Página web de phpPgAdmin>


Ingresar el usuario y la contraseña que usan para postgresql, si les llegara a marcar error de inicio de sesión, a pesar de que está bien, es debido a que Selinux requiere una instrucción para permitir el acceso. Del tal modo que eso se soluciona con la siguiente instrucción.

sudo setsebool -P httpd_can_network_connect_db 1



Ingresar nuevamente con usuario y contraseña, y listo, ahora tendrán la ventana de administración del servidor de postgresql desde el navegador.