16 de noviembre de 2014

Establecer conexión entre PHP (mysqli) y MariaDB

En estos años se ha ido experimentado un gran crecimiento en la búsqueda de digitalizar toda la información que emiten desde grandes empresas hasta en pequeños subsistemas de información que podamos hacer nosotros por andar por casa como es el caso de un blog. 

Para así gestionar toda nuestra información por muy irrelevante que sea, de una manera más cómoda, eficiente, rápida y segura. En contra posición de la procedimiento tradicional que es papel, tinta, una impresora y un gran armario para almacenar todos esos papeles molestos y difíciles de encontrar.



Como hablamos anteriormente, PHP es un lenguaje de programación orientado al desarrollo de páginas Web dinámicas. Por ende, podemos sacarle un gran partido combinándolo con un sistema gestor de base de datos como MariaDB haciendo páginas Web que muestren la información que queramos. Esto ocurre gracias a los ODBC, inglés Open Database Connectivity, una serie de drivers que permiten conectarnos a nuestro SGDB y poder trabajar con él. Por norma general todos los SGBD deben tenerlos porque forma parte de un estándar. PHP tiene una serie de funciones, métodos, clases que permiten mediante una API conectar a estos SGBD.

12 de noviembre de 2014

Introducción al SQL

Según la Wikipedia, han pasado ya muchos años desde que en aquellos 1970, se ideó una forma de como crear un modelo en el que los datos se pudieran almacenar de manera lógica haciendo uso de una serie de estructuras llamadas tablas dentro de una base de datos. 

Imagen obtenida de Freevectors.net
Esta manera de como organizar y estructurar la información se llama modelo relacional y fue ideado por Edgar Frank Codd, un gran científico informático que trabajó para IBM y que gracias a él se sustentan la mayor parte de las bases de datos actuales basadas en este modelo relacional. 

Más tarde de haber publicado su idea, IBM desarrolló en sus laboratorios un lenguaje llamado Structured English Query Language o conocido por sus siglas como SEQUEL, y puesto en práctica en un SGBD experimental llamado System R, también elaborado en los laboratorios de IBM sobre el 1977. Sin embargo, Oracle fue la primera empresa que pudo comercializarlo en sus productos en el año 1979.

8 de noviembre de 2014

Finalizando las entregas de PHP

Y ya tocamos el techo sobre estas pequeñas entregas de PHP. Aún queda mucho más por supuesto, como realizar consultas a bases de datos mediante mysqli o PDO, depurando errores, funciones que dependan de nuestros intereses como programador.... Teniendo esta pequeña base y como gusto buscar en Google. Se puede empezar hacer desde ya un pequeño proyecto.

Lo que si he visto en varias ofertas de trabajo, es que se sepa manejar un framework de PHP como Laravel, CakePHP, Symfony, ZendPHP.... os lo dejo como apunte por si queréis investigarlos. De momento no lo mencionaremos dentro de estas pequeñas entregas de PHP.




Objetos

Introducción

Hacer uso de objetos en nuestra forma de programar hace más legible, simple, eficiente y sobre todo más sencillo para todo incluyendo resolución de errores. Cada objeto tiene una serie de variables como si fuera una persona. Bien, pongamos como objeto a una persona tiene un tipo de medida para el color de ojos, longitud de pelo, color del pelo, tez, altura, peso... esto serían variables. Además de eso, nosotros los seres humanos realizamos una serie de funciones como correr, saltar, pensar, calcular... 

7 de noviembre de 2014

Tercera entrega de PHP

Como bien sabrán, estoy realizando una serie de entregas de PHP dónde voy explicando un poco la introducción a la sintaxis, los tipos de condicionales y bucles. Se supone que era un post por día, pero debido al alto grado de actividad que soporto no he podido hacerlo y os obsequiaré con dos entradas en una.



Continuando las sentencias por el lado de los bucles.

Otro tipo de bucle es foreach. Este se utiliza para recorrer los arrays de los que hemos hablado anteriormente. Permite acceder a cada uno de ellos y realizar las operaciones que queramos.

<?php
foreach (variable as variable) // También puedes sustituirlo por una nueva variable
{
Operación;
}
?>

Veamos un ejemplo con un array que contiene una serie de colores como el Rojo, el amarillo el verde pero sin tener un índice definido:

<?php
$colores = array(“Rojo”, “Amarillo”, “Verde”);

foreach ($colores as $color)
{
echo “Este es el color “.$color.”<br>”;
}
?>
Esto mostrará la frase con los tres tipos de colores asignados.

En suma, tenemos un bucle muy utilizado sobre todo para sacar datos de una base de datos. El bucle while. El bucle while permite ejecutar una cosa mientras se cumpla una condición.

<?php


while (condición)
{
Operación;
}
?>


3 de noviembre de 2014

Segunda entrega de PHP

Para los que no se encuentren al tanto. Estoy realizando una serie de publicaciones de apuntes con PHP que se irán publicando a lo largo de la semana. Puedes leer la entrada inicial pulsando aquí.

Aquí os deleito con la segunda entrega diaria de PHP, espero que os sirva de utilidad.


Constantes

Las constantes son valores definidos que no se pueden modificar. Es decir, lo contrario a las variables.
Para definir una constante se hace uso de la función define();

<?php
define(“nombre_constante”, valor);
echo nombre_constante;
?>

Concatenar

En este estupendo lenguaje, se pueden “unir” tipos de datos y que se muestren sin problemas.
Para llevar a cabo esto, se interpone un . entre los valores que queramos “unir”.

<?php
$a = “Esta es una frase”;
$b = 1;
echo $a.$b;
?>
Esto muestra en pantalla: Esta es una frase1

Comentarios

¿Qué sería de un lenguaje sin comentarios? Los comentarios permiten almacenar información relativamente relevante cuando hacemos cambios en nuestro programa, poder verlo al día siguiente, una semana después, o al mes siguiente y comprender por qué hicimos ese cambio.

Además, si queremos compartir ese programa para que lo puedan ver tanto en casa como en Inglaterra, EEUU, India... tendrán que hacerse una idea de como funciona y qué mejor manera que comentar nuestro programa.

Existen dos formas de realizar los comentarios, por línea que permiten hacer un pequeño inciso en una línea para hacer hincapié en algo concreto.

<?php
// Esto es un comentario, acaba de declarar una variable vacía.
$ejemplo;
?>

Y por otro lado, tenemos la opción de comentar bloques de código, para bien hacer pruebas, o incluir la licencia del programa...

<?php
/*
Esto es un ejemplo de un comentario
Muy largo, muy largo, muy largo....
*/
?>

Sentencias

Como todo lenguaje de programación tenemos una serie de estructuras con las que trabajar con nuestro programa, estas estructuras se llaman sentencias.
Como sentencia principal tenemos la más simple y básica que es la sentencia echo. Esta nos permite mostrar en pantalla los tipos de datos que hemos visto.

2 de noviembre de 2014

Primera entrega de PHP

Bienvenidos a mi primera pequeña entrega de PHP. Aprovechando que me encuentro realizando el documento integrador de un proyecto de clase como último curso. Tengo la oportunidad de añadirlo a mi blog para que otras personas puedan leerlo y estudiarlo. 

En esta primera entrega, explicaremos un poco qué es este maravilloso lenguaje lo justo para trabajar, qué son las variables, operadores aritméticos, lógicos, comparativos, tipos de datos... y un poco más.

Iré añadiendo más apuntes cada día.

Un saludo y espero que los disfrutéis.

¿Qué es PHP?

Imagen obtenida de Wikimedia

PHP viene de las siglas un tanto recursivas en inglés PHP: Hypertext Preprocessor.Es uno de los lenguajes de programación más populares que existen para el desarrollo de páginas Web dinámicas y además pertenece a la familia de desarrollo de código abierto u Open Source . Este lenguaje se ejecuta de cara al servidor, es decir que toda la información que mande o envíe el usuario será recogida por él para después, devolverle los cálculos o el proceso que se haya programado en código básico de HTML.

Por otro lado, no sólo podemos hacer uso de PHP para que se ejecute utilizando páginas Web. PHP posee una consola interactiva o terminal para ejecutar nuestros programas en él sin necesidad de hacer uso de un navegador Web.

Primeros pasos

¿Cómo declarar un archivo en PHP?

Si vamos a realizar una página Web totalmente dinámica que contenga código PHP, deberemos especificarlo previamente con la siguiente directiva además de almacenarlo con extensión .php.

<?php

?>

Si no se incluyen esa declaración, el código no funcionará y solo se interpretará mostrando texto en HTML.

Sintaxis y flujo de trabajo

En este tipo de lenguaje siempre que hagamos cualquier tipo de operación hay que cerrarla mediante el uso de punto y coma. (;). De lo contrario puede darnos error y no nos funcionará a excepción de que se encuentre en el último proceso de todo el archivo, no obstante siempre es bueno hacer uso siempre de (;). Más adelante veremos como de importante es mantener cerrados los paréntesis, y llaves en tipos de objetos más adelante.

En cuánto al flujo de trabajo, si invocamos al PHP en ciertos bloques de código como mencionamos en el ejemplo anterior. Funcionarán como si se ejecutase en uno solo. Por ejemplo. Si hacemos uso de una variable en la parte superior del archivo, y en el final declaro otra variable. Yo puedo acceder desde cualquier parte del documento a esas dos variables. No es algo secuencial, a menos que alteremos sus valores, entonces su valor no es el mismo al principio como al final.

23 de octubre de 2014

Portapapeles en GNOME 3

Un dato curioso de la instalación por defecto de GNOME 3 en Fedora es que no viene un gestor de portapapeles por defecto. Para los que no sepan que es un 'gestor de portapapeles' es un programa que permite gestionar lo que copiamos, cortamos, pegamos con las famosas teclas CTRL+X, C ó V; o bien con el ratón haciendo clic derecho y seleccionando 'Copiar, pegar...'.

Bien hay un portapapeles que se integra bastante bien en GNOME 3 llamado gpaste. Lo podemos instalar con los paquetes gpaste y además de la extensión gnome-shell-extension-gpaste para GNOME-Shell.

Visualizando el historial del portapapeles
GPaste provee multitud de funcionalidades que van desde cuántas líneas queramos que se nos guarde en nuestro historial, pasando por almacenamiento de imágenes que se hayan copiado, cortado previamente hasta la configuración de combinaciones de teclas o realizar una copia de seguridad de lo que hayamos copiado entre otras muchas funcionalidades.

Gestionando algunos parámetros de GPaste

Referencias


21 de septiembre de 2014

Depurando PHP con un poco más de estilo

Una de las mejores prácticas para probar si nuestra 'aplicación' Web en PHP, código...etc en PHP es depurarlo lo máximo posible. Y pasar horas y horas frente a la pantalla viendo errores, warnings...etc en una triste letra con un fondo blanco se nos hace un pelín más deprimente.

Si no te gusta, puedes cambiarlo a golpe de paquete llamado php-pecl-xdebug y reiniciando por supuesto el servidor de Apache (httpd).

Pasaremos de tener esta interfaz:

 Por esta:

Para más información, puedes visitar la página de Xdebug. Para modificar parámetros o añadirlos. El fichero está localizado en /etc/php.d/xdebug.ini

Nota: Tenemos que tener habilitadas los siguientes parámetros del fichero /etc/php.ini para poder visualizar correctamente los Warnings o errores a la hora de probar nuestro código:
error_reporting = E_ALL
display_errors = On

17 de agosto de 2014

Servidor PHP5 + Apache + MariaDB server en local con Fedora 20

Como ando profundizando poco a poco en la programación Web y entre tanto framework de cada lenguaje como Zend, Symfony (entre otros) de PHP, Django de Python, Ruby on Rails de Ruby, lenguajes de programación unos orientados a desarrollo Web, otros generalmente para programas o scripts en local... esto acaba siendo un gazpacho de innumerables dimensiones.

Por lo pronto ando mejorando los conocimientos con PHP investigando sobre la orientación a objetos. Así puedo subirme a la "nueva" forma de programar. Y hasta que no domine bien las clases, métodos, atributos y multitud de cosas raras no creo que me vea dentro de un framework como Zend. Eso sí, a finales de este año deberé saber al menos hacer ¡una línea!

Pués, nos subimos al deportivo de las conexiones Web, y montemos el servidor local para trabajar. 

Primero, deberemos instalar los respectivos paquetes, httpd, mariadb-server, php, phpMyAdmin.
$ su -c "yum install php phpMyAdmin mariadb-server httpd"
Segundo, arrancamos los 'demonios' (de daemons en inglés).
$ su -c "systemctl start httpd mysqld"
Tercero, configuramos el servidor MariaDB.
$ su -c "mysql_secure_installation"
Este comando nos generará una serie de preguntas a las que deberemos atender. Generalmente lo que nos importará aquí es que debamos setear la contraseña de root. Que es la que más adelante utilizaremos para acceder a PHPMyAdmin, realizar conexiones con mysqli.... El resto de preguntas con pulsar todo enter no deberíamos tener problemas.

Y por último, una vez finalizada la configuración, accederemos a través de nuestro navegador accedemos a http://127.0.0.1 que es nuestra dirección local dónde tendremos nuestro servidor Web.


Ya tendremos nuestro servidor corriendo. Personalmente, no lo inicio cuando arranque el sistema (boot), porque prefiero lanzarlo solo cuando quiera trastear. Si os interesa mantenerlo iniciado desde el arranque deberéis entonces ejecutar los siguientes comandos:
$ su -c "systemctl enable httpd mysqld"
Para detenerlos.
$ su -c "systemctl stop httpd mysqld"
Antes de finalizar con este post. Os diré que los archivos de nuestros proyectos, o de cualquier cosa que dependa de un servidor, de otro o de ambos queda alojado en el directorio /var/www/html y por último daré un par de consejillos que nos hará la vida un pelín más feliz.

Debuggeando en PHP.

Esto es muy importante, la configuración por defecto de PHP ubicada en /etc/ como php.ini no tiene un buen debug. Esto supongo que está de este modo para utilizar en producción y olvidarse de que 'malechores' se aprovechen de los errores para acceder a los sistemas y 'corromper' o revender los datos de las DBs.

Para ello deberemos editar el fichero /etc/php.ini y modificar estas dos líneas tal que se queden del siguiente modo.
display_errors = On
error_reporting = E_ALL
Una vez hecho esto, reiniciamos el servidor httpd.

¿Permisos? ¿Problem officer?

Cuando pensamos en caliente, no hay nada más pedante que los permisos en GNU/Linux o en sistemas Unix-like. Y cargamos contra ellos. Sin embargo, nos enfriaremos un poco y lo haremos lo más simple posible.

Si vamos a trabajar en una carpeta llamada por ejemplo 'proyectos' en la que dentro de ella, crearemos proyectos independientes basta con hacer lo siguiente:
$ su -c "mkdir /var/www/html/proyectos"
$ su -c "chown tu_usuario:tu_usuario /var/www/html/proyectos"
Si por el contrario vas a poner patás arriba todo el directorio general o principal dónde trabajará el servidor Apache.
$ su -c "chown tu_usuario:tu_usuario /var/www/html/"
Esto es una configuración para un servidor local, ¡no para producción por el amor de dios!

¿Editores de texto? ¡No! Mejor un IDE

¡Cuántos quebraderos de cabeza nos da ya un editor simple de textos! Para eso tenemos un grupo de programas llamados IDE. Un IDE es un Entorno integrado de desarrollo (traducido a mi bardo español) en el que te hará la vida más sencilla a la hora de trabajar con diferentes lenguajes, sean de programación, etiquetas...etc. Te colorean palabras clave, te ayudan a finalizar la sintaxis de los (),[],{}, de las palabras reservadas, textos...

Para que vean un poco a lo que me refiero, en el lado izquierdo tenemos el editor de textos Gedit, y a la derecha Geany. Es notable la diferencia ¿no?
Nota: Gedit también podría actuar como IDE, pero es para dejar un símil de lo que intento explicar.


Personalmente utilizo Geany, es bastante liviano y cumple con lo que necesito ahora mismo. Sublime Text es bastante utilizado y recomendado también. Y por lo visto hay muchos más de ellos como Eclipse, NetBeans...etc ¡Ahí lo dejo a libre elección!

Breves notas explicativas:
  • Apache. Es un servidor Web que mediante el uso del protocolo http y un puerto, el 80 por defecto nos permite interactuar y sobre todo ver los sitios Webs.
  • MariaDB. Es un fork que salió un tiempo después de la adquisión de Sun por parte de Oracle. MySQL es un sistema gestor de base de datos que permite el almacenamiento, consultas... a una base de datos que hayamos creado o a la que nos hayamos conectado previamente.
  • PHPMyAdmin. Es un conjunto de librerías, funciones... que interactúan con el servidor de Apache y MariaDB en este caso para mostrar, modificar, o alterar datos de una base de datos gráficamente mediante una interfaz Web.

Referencias
  • Google
  • PHP.net
  • Geany doc
  • ComunidadPHP
  • StackOverflow
  • Apache Web server
  • Fedora doc

21 de marzo de 2014

Pequeño cheat sheet improvisado para clase. Switch iOS Cisco Packet Tracer

Este es un pequeño "chuletario" en el que la carne no es el punto principal que digamos. Aquí se recogen los comandos más comúnes que he utilizado en clase de Networking una de las asginaturas que tengo que estudiar. Para saber como configurar los Switch en el gran y conocido simulador que es Packet Tracer. Desarrollado y liberado por Cisco. Una de las empresas expertas en la rama de redes a nivel internacional.

Este es uno de los ejemplos del "cheat sheet", o, chuletario.

Podéis descargároslo desde aquí, o también desde mi cuenta Google Drive.

20 de enero de 2014

Servidor Web Cherokee con PHP en Fedora 20

¡No no compañeros! No es Fedora ni nigún otro Linux metido en la marca de automóviles reconocida Cherokee. ¡Estamos hablando de un servidor Web!
 
Muchos o muchas somos a veces preguntones, y nos interesa saber si existe alguna especie de servidor que incluya una interfaz gráfica. Con la que monitoricemos el servidor con el que podamos crear uno de eso “Virtual host” sin tener que toquetear ficheros de configuración, definir reglas de seguridad o viceversa. Pues al parecer tenemos un programa ideal para ello.

Cherokee es un servidor Web creado por un desarrollador llamado Álvaro López Ortega con la intención de crear un servidor escrito plenamente en C con la intención de ser mucho más rápido que el propio Apache. Este cuenta con una interfaz multi-lenguaje y multiplataforma fácil de configurar.

Por otro lado la configuración o mantenimiento del servidor, se puede realizar mediante texto como es obvio, o mediante una interfaz gráfica mediante navegador. Para una fácil gestión del mismo. Cherokee permite entre muchas otras cosas, dar de alta, eliminar o modificar Virtual hosts, que en una explicación escueta, quiere decir, que permite tener múltiples instancias de “servidores” al mismo tiempo. Cada uno con una carpeta distinta, e incluso, hostname distintos.

Y no sólo eso, si no que en cada uno se puede añadir un “complemento”, como un CMS, PHP, Symphony, Django...

Para tenerlo en nuestro PC, tan solo tendremos que instalar los siguientes paquetes:
  • $ su -c “dnf install cherokee php php-common rddtool rddtool-php
Y para empezar a configurarlo, arrancamos con el siguiente comando en una terminal:
  • $ su -c “cherokee-admin”
Saldrá una salida como en la siguiente imagen que incluirá una contraseña generada aleatoriamente y de un solo uso con un usuario llamado admin y una dirección de red local, con un puerto por defecto, que es el 9090.

Tomamos la IP, y nos logueamos, en la interfaz que nos aparece después de abrir el enlace de la salida anterior y nos encontraremos con un portal así:


En este portal podemos configurar todo lo que queramos (hasta lo que nos permita) seguridad, puertos, virtual hosts, reglas de seguridad, SSL, TLS, IPv6....

Tan sólo para testarlo deberemos “encenderlo”, y poner en el navegador:


Nota: Una vez que activemos el servidor, siempre se ejecutará al arranque del sistema, de tal forma, que no necesitaremos activarlo desde systemd. (systemctl). Aunque nuestro compañero Cherokee, aún sigue utilizando SysV (init.d).
Para desactivarlo, podemos hacer o bien systemctl disable cherokee. (Esto le dirá a chkconfig el viejo programa para la manipulación de servicios SysV, que lo desactive). O bien utilizando chkconfig cherokee off.

Deberá abrirse una página como la siguiente:


¡Y eso es todo!

Fuentes:
  • Google.com
  • Cherokee-project.com
  • Wikipedia.org

17 de enero de 2014

MySQL Workbench 6.0.1 en Fedora 20

Para aquellos que les guste el diseño de una base de datos con un toque visual. Tenemos la súper herramienta MySQL Workbench. Este programa nos permitirá entre otras cosas, crear un esquema lógico para facilitarnos la estructura y diseño de la base de datos que queramos usar acorde a nuestros fines. Porque no solo es una interfaz sencilla para ver como están las tablas con sus atributos, relaciones... si no que nos permite exportarla a un fichero .SQL. Esto nos facilita en un cierto modo el trabajo. Porque si tenemos un servidor corriendo con MySQL o MariaDB, importamos el fichero y ¡voilá! Tendremos una fantástica base de datos ¡sin haber tocado un solo comando SQL!

Este programa te permite definir los campos de las tablas incluyendo el mecanismo de cómo almacenar la información incluyendo InnoDB, Spider, MyISAM, Aria, Xtra... entre muchas mas elecciones; además de multitud de codificaciones utf8, koio8u, ascii...; pasando por los 'disparadores o triggers' y una larga lista de funciones sólo para las tablas.

Por otro lado, el programa cuenta, incluso con una gestión de base de datos en red, pudiendo conectarse a cualquier servidor de base de datos que administremos con MySQL o MariaDB; consola interna.... ¡necesitaría 1 año para ver todo lo que tiene el programa!


También viene con un diseño lógico por defecto llamado 'sakila_full.mwb' que se muestra en la siguiente captura de pantalla, que nos aclarará un poco cómo es su uso y su diseño. No parece que esté tan mal ¿verdad?



Para poder instalarlo, necesitaremos descargar los paquetes desde la página web comunitaria de MySQL. Al no ver una versión para Fedora 20, me vi obligado a usar la de Fedora 19. Pero sin ningún problema. :)

Descarga tu versión en los siguientes enlaces:
Si te gustaría ver si está la versión actualizada para Fedora 20, puedes echarle un vistazo aquí.

Fuentes:
  • Google
  • MySQL Web page

Licencia y responsabilidades

Licencia Creative Commons
netSys blog por Álvaro Castillo se encuentra bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.

El propietario de este blog no se responsabiliza de los daños que puedan generarse u ocurrir por la información expuesta aquí, en caso de ser utilizada la responsabilidad recae bajo quién la use.

Se les informa de posibles publicaciones donde queden expuestas imágenes a terceros o marcas comerciales que siempre tendrán sus fuentes, y sus atribuciones.

Por último, en caso de confusión por la temática que se trate de los artículos, tutoriales...etc dejaremos claro que este sitio Web no colabora directamente con ningún proyecto de forma oficial.