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.



sábado, 26 de noviembre de 2016

Instalar Skype en Fedora 25


¿Qué es Skype?

Skype es un software que permite que todo el mundo se comunique. Millones de personas y empresas ya usan Skype para hacer llamadas y videollamadas gratis individuales y grupales, enviar mensajes instantáneos y compartir archivos con otras personas que usan Skype. Puedes usar Skype en lo que mejor se adapte a tus necesidades: en tu teléfono móvil, equipo informático o TV con Skype.


La instalación es la siguiente:

Abrir la terminal: E ir ingresando los siguiente comandos:

Instalar dependencias:

sudo dnf install alsa-lib.i686 fontconfig.i686 freetype.i686 glib2.i686 libSM.i686 libXScrnSaver.i686 libXi.i686 libXrandr.i686 libXrender.i686 libXv.i686 libstdc++.i686 pulseaudio-libs.i686 qt.i686 qt-x11.i686 zlib.i686 qtwebkit.i686
Descargar el instalador:

cd ~/Descargas && wget --trust-server-names https://get.skype.com/go/getskype-linux-beta-fc10
Instalación de skype:

sudo  dnf install skype-4.3.0.37-fedora.i586.rpm
Una vez que haya finalizado, vamos al cajón de aplicaciones e iniciamos skype. Seleccionar idioma de preferencia y aceptar términos y condiciones.


Abrirá una ventana como la de abajo, ingresar usuario y contraseña.


Esperar que inicie sesión...


Y listo, ya tienen skype en Fedora 25. 



viernes, 25 de noviembre de 2016

ZSH y un tema para Fedora 25


Ya mencionado que mi motor de interprete de comandos en Linux es ZSH.

~~ Instalación ~~

La instalación es realmente simple, solo ejecutar los siguientes comandos en el orden en el que están:


$ sudo dnf -y install git zsh util-linux-user
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
$ cp ~/.zshrc ~/.zshrc.orig
$ sudo chsh -s /bin/zsh linuxitos

Para que los efectos se visualicen en el usuario, es necesario reiniciar sesión.

~~ Configurando el tema que muestran las imágenes. ~~~

El tema lo desarrolló un usuario de github Link, yo realicé algunos cambios solamente.

Primero, es necesario descargar el siguiente archivo:

Descomprimirlo en descargas, e instalar las fuentes que vienen dentro de la carpeta tema_zsh, para esto solo doble click en el botón instalar, como se ve en la imagen de abajo.



Hacer lo mismo para todos los demás archivos otf y ttf.

Una vez hecho eso, ahora ejecutamos los siguientes comandos:


cd ~/Descargas
cd tema_zsh
mkdir ~/.fonts
cp PowerlineSymbols.otf ~/.fonts/
mkdir -p ~/.config/fontconfig/conf.d
cp 10-powerline-symbols.conf ~/.config/fontconfig/conf.d
Y ahora, actualizamos la caché de fuentes:
fc-cache -vf ~/.fonts/

Copiar el tema a la carpeta de temas de .oh-my-zsh/themes
cp bullet-train.zsh-theme ~/.oh-my-zsh/themes/

Ahora, solo queda abrir el archivo .zshrc que está en la carpeta personal, y reemplazar el nombre del tema que esté en la línea que dice ZSH_THEME="" por el nuevo tema, el cual quedaría así. ZSH_THEME="bullet-train".

gedit ~/.zshrc

y modificar el archivo:


Y con eso, podrán obtener el resultado de las imágenes de arriba.

Mi personalización de Gnome 3.22 en Fedora 25 con Wayland


Con la llegada de Fedora 25 y traendo por defecto Wayland y Gnome 3.22, algunos temas de ventanas, de gnome-shell, extensiones, de íconos incluso del cursos han dejado de funcionar.

En mi caso, traigo configuraciones desde Fedora 23, y he venido actualizando mediante conexión a internet, hasta ahora no he tenido ningún problema "grave".

Una de los detalles que cuido mucho de mi distro Favorita todavía (migrando a apricity), es la combinación simple y estética de la interfaces, botones, estilos del cursor, borde de ventana íconos, etc.

Es más que evidente, que "en gustos se rompen géneros, y que para todos hay colores", así que la configuración que van a ver, para mi es lo mejor.

Los temás, los he bajado de http://gnome-look.org algunos de ellos ya no están disponibles en esa página, pero les dejaré los links de descarga.

Los temas son completamente compatibles con gnome 3.22 en Fedora 25 y sea en modo Wyaland o XOrg.

1.- Tema de Gnome Shell: Para mi es importante modificar hasta el último detalle de mi distro, para sentirme cómodo en su utilización.
Este lo he venido modificando desde la versión 3.18 de Gnome, la versión original la pueden consultar en este link.






2.- Tema de Ventana: El tema de ventana que uso se llama, Arc. Lo pueden encontrar aquí.
Este tema le modifiqué, el cuadro de búsqueda, para que en todo lugar en el que se presente el cuadro de búsqueda, aparezca con los bordes redondeados:









3.- Tema de cursor: El cursor no tiene muchos cambios, solo descargué y lo he utilizado, link de descarga original:




4.- Tema de íconos: Si hay algo a lo que más tiempo le he dedicado, es a los íconos, me gusta que cada archivo tenga exactamente el ícono que le corresponde. Este tema está disponible en este link.

Al tema le he añadido íconos de archivos:
- lnk de windows, arduino, matlab, c++, c, bash, iso, microsft office, latex, bibtex, rar, sql, apk, pascal, makefile, modifiqué firefox, google-chrome, nautilus, gnome-terminal.









Como ya dije, en gustos se rompen géneros. Gracias por visitar.