Conexiones remotas (Parte 3: Remmina)

  Remmina es un cliente de escritoro remoto para sistemas operativos basados en POSIX (estándar oficial para el mantenimiento de la compatibilidad de los sistemas operativos).
  Soporta los siguientes protocolos:
  •   Protocolo de Escritorio Remoto ["Remote Desktop Protocol" ("RDP"), en inglés].
  •   Virtual Network Computing (VNC).
  •   NX Technology (NX).
  •   X Display Manager (XDMCP).
  •   SPICE.
  •   SSH.
  Entre sus características más destacadas se encuentran su soporte para la creación de perfiles, su capacidad para tener abiertas varias sesiones accesibles a través de una pestaña, y su barra de herramientas flotante en el modo de pantalla completa.

Configurar el LVM en la instalación de Linux

  El gestor de volúmenes lógicos ["Logical Volume Manager" ("LVM"), en inglés] es una implementación de un administrador de volúmenes lógicos para el núcleo de Linux.
  LVM incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:
  • Redimensionado de grupos lógicos
  • Redimensionado de volúmenes lógicos
  • Instantáneas de sólo lectura (LVM2 ofrece lectura y escritura)
  • RAID0 de volúmenes lógicos.
  LVM no implementa RAID1 o RAID5, por lo que es recomendable usar programas informáticos específicos de RAID para estas operaciones, teniendo los volúmenes lógicos por encima del RAID.

El programa Nmap


  Nmap es un programa de código abierto que sirve para efectuar rastreo de puertos.
  Fue creado originalmente para Linux aunque actualmente es multiplataforma. Se usa para evaluar la seguridad de sistemas informáticos, así como para descubrir servicios o servidores en una red informática, para ello Nmap envía unos paquetes definidos a otros equipos y analiza sus respuestas.
  Este programa posee varias funciones para sondear redes de ordenadores, incluyendo detección de equipos, servicios y sistemas operativos. Estas funciones son extensibles mediante el uso de guiones para proveer servicios de detección avanzados, detección de vulnerabilidades y otras aplicaciones. Además, durante un escaneo, es capaz de adaptarse a las condiciones de la red incluyendo latencia y congestión de la misma.
  En general, es una buena alternativa al programa Wireshark.

Crear y agregar claves para conexión SSH

  Se ha visto ya qué es una conexión SSH y cuáles son sus utilidades más características.
  En esa misma entrada se han dado consejos para hacer que este tipo de conexiones remotas sea más segura. No obstante, siempre habrá alguien que pueda sortear los cambios explicados en esa entrada anterior, puesto que la seguridad en la red virtual es un tema aún demasiado poco estudiado, con la inherente consecuencia de que esta última aún es muy insegura.
  Sin embargo, se va a explicar aquí otro avance en cuanto a seguridad de las conexiones SSH que permitirá hacer más resistente a los ataques, aunque no completamente invulnerable, cualquier conexión remota de este tipo entre equipos informáticos. 

Introducción a las bases de datos (Parte 4: Recursos humanos de las bases de datos)

  Las bases de datos representan un modo muy complejo de organizar los datos, motivo por el cual necesitan un nivel de recursos bastante alto para su creación y mantenimiento.
  Parte de esos recursos son de hardware, otra parte (dentro de la que se encuentran los sistemas de gestión de bases de datos) son de software, y otra de esas partes la constituyen los recursos humanos formados por aquellas personas que participan en las diferentes fases de la existencia de una base de datos, desde su diseño mediante el modelado de datos hasta su mantenimiento por parte de los miembros del equipo de mantenimiento.
  Naturalmente, dicho mantenimiento  se realiza a nivel físico y lógico, es decir, de los equipos informáticos que albergan la base de datos y de los datos de los que esta se compone.

Crear un silo lógico en KVM

  Una de las utilidades más interesantes del programa de virtualización KVM es poder crear silos ("pools", en inglés) donde poder almacenar volúmenes lógicos que luego se podrán redimensionar cuando sea necesario sin tener que desconectarlos.
  El volumen lógico (que puede abarcar volúmenes físicos) se compone de particiones lógicas asignadas a particiones físicas.
  A pesar de que el KVM posee ciertas herramientas gráficas para realizar algunas de sus funciones, su verdadero potencial se encuentra en sus herramientas de consola, una de las cuales es Virsh.
  Esta herramienta se crea en la aplicación de administración "libvirt" y funciona como una alternativa para el comando xm y el gestor de máquinas virtuales gráfico (virt-manager). Virsh puede ser utilizado en modo de sólo lectura por usuarios sin privilegios, y también se puede utilizar para ejecutar guiones para las máquinas de huésped.
  Como cualquier otro programa, Virsh tiene unos comandos genéricos como version (muestra la versión del programa), help (muestra los comandos del programa), help <nombre del comando> (explica el comando del programa designado), quit o exit (ambos salen del programa).

El particionado de discos durante la instalación de Linux

  Uno de los problemas con los que se encuentra la mayoría de los usuarios informáticos que están comenzando a utilizar sistemas operativos de Linux es la difcultad para crear particiones personalizadas, ya que la propia estructura de este tipo de sistemas operativos dificulta esta tarea.
  Se debe tener en cuenta que en Linux (y Unix) todo es un fichero. Los directorios son ficheros, los ficheros son ficheros, y los dispositivos son ficheros. A veces a los dispositivos se les llama nodos, pero siguen siendo ficheros.
  Estos sistemas de ficheros se organizan en una estructura jerárquica, de tipo árbol. El nivel más alto del sistema de ficheros es "/" o directorio raíz. Todos los demás ficheros y directorios están bajo el directorio raíz. En general, esta estructura suele ser como se ve en la siguiente imagen.

Introducción al SQL (Parte 2: Componentes básicos)

  Como se ha visto en una entrada anterior de la presente bitácora, el lenguaje estructurado de consultas está basado en el cálculo relacional de tuplas. Como resultado, toda consulta formulada utilizando el cálculo relacional de tuplas (o su equivalente, el álgebra relacional) se puede formular también utilizando SQL. Existen, sin embargo, capacidades que van más allá del cálculo o del álgebra relacional. El lenguaje SQL consta de unas 30 sentencias que permiten desde la creación de tablas, hasta la recuperación de datos, modificación de éstos, asignación de permisos, etc.
  En el contexto en el que se utiliza el lenguaje SQL, una tupla, o registro, representa un objeto único de datos implícitamente estructurados en una tabla. En términos simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.
  Así, la tupla es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Se le asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índice aunque lo normal y práctico es asignarle a cada registro un campo clave para su búsqueda.

El archivo YAML

  Se ha explicado, en una entrada anterior, que para instalar contenedores con Docker Compuesto hace falta que haya en el directorio donde se ejecute un archivo del tipo yaml.
  No obstante, este tipo de archivo no es exclusivo de su empleo con la mencionada herramienta de Docker, sino que se utiliza para otras tareas informáticas, llegando a ser muy versátil.
  YAML es un formato de serialización de datos legible por humanos inspirado en lenguajes como XML, C, Python, Perl, así como el formato para correos electrónicos especificado en RFC 2822.
  Este tipo de archivo fue creado bajo la creencia de que todos los datos pueden ser representados adecuadamente como combinaciones de listas, mapeos ("hashes", en inglés) y datos escalares (valores simples). La sintaxis es relativamente sencilla y fue diseñada teniendo en cuenta que fuera muy legible pero que a la vez fuese fácilmente mapeable a los tipos de datos más comunes en la mayoría de los lenguajes de alto nivel. Además, YAML utiliza una notación basada en la indentación y/o un conjunto de caracteres Sigil distintos de los que se usan en XML, haciendo que sea fácil componer ambos lenguajes.

Modos alternativos de instalar Telegram en Linux

  En una entrada anterior se ha hablado del cliente de mensajería instantánea Telegram, y se ha explicado el modo más sencillo de instalarlo en varios de los sistemas operativos más comunes, incluyendo uno de Linux.
  Sin embargo, el método explicado anteriormente puede fallar debido a cambios en los sistemas operativos Linux más actuales (Debian 9, Ubuntu 18.10 y derivados, etc.), por lo que en esta entrada de la presente bitácora se mostrarán otros métodos diferentes para instalar con mayor seguridad de éxito este programa de mensajería instantánea en los sistemas operativos de Linux.
  Estos métodos requieren algo más de trabajo por parte del usuario, pero lo compensan con su mayor porcentaje de éxito y su menor porcentaje de errores, sin detrimento en las futuras actualizaciones del programa.
  Los ejemplos mostrados en la presente entrada de esta bitácora se han hecho con Debian 9.

Crear imagen plantilla de máquina virtual de KVM de Linux

  Cuando se trabaja con sistemas virtualizados, lo más cómun es que se posean varias máquinas virtuales con el mismo sistema operativo, aunque cada una de ellas tenga instalados diferentes programas. Otra circunstancia que se puede dar es que se posea todo el sistema y una aplicación desplegados en numerosas máquinas, pudiendo hacer cambios sólo sobre la aplicación. Para este tipo de situaciones existen las imágenes plantillas de máquinas virtuales.
  Una imagen plantilla se puede definir como una imagen de un disco virtual de máquina virtual que sirve de modelo para la creación de más discos virtuales, o máquinas virtuales, con las mismas características que esta.
  En el caso de programas de virtualización como VMware o Virtualbox, los propios programas tienen la opción en sus menús de crear imágenes de disco virtual que posteriormente se pueden emplear como plantillas; en el primero son llamadas archivo ovf, y en el segundo archivos ova.
  No obstante, KVM no tiene esa opción para crear tales archivos de imagen de disco virtual, por lo que hay que ser más imaginativos a la hora de crear plantillas de este programa de virtualización; aunque hay que tener en cuenta que los discos virtuales del KVM (archivos con extensión ".qcow2") son más estables que los de los otros dos programas arriba mencionados, lo que hace que se puedan transformar fácilmente en otros formatos de discos virtuales (".vmdk", ".vdi", ".raw" o ".qed", por ejemplo) sin que haya demasiados problemas de compatibilidad entre distintos programas de virtualización.

Introducción a las bases de datos (Parte 3: Funciones de un sistema de gestión de bases de datos)

  Se ha visto, en entradas anteriores de la presente bitácora, que para poder operar con una base de datos (o varias de ellas) era necesario utilizar una clase de programa conocida como sistema de gestión de bases de datos, o simplemente, gestor de bases de datos.
  De esta clase de programa, se ha visto también que existen varios tipos, y qué objetivos persiguen.
  Obviamente, el sistema de gestión de bases de datos debe poder realizar ciertas funciones con estas o resultaría un programa bastante inútil. Además, las funciones están relacionadas con los objetivos antes mencionados.
  Por otra parte, para realizar las mencionadas funciones, el gestor de bases de datos necesita emplear ciertos lenguajes específicos derivados del lenguaje SQL (DDL, DML, DQL, y DCL), que también se explicarán brevemente a su debido momento.

Introducción al SQL (Parte 1: Los tipos de datos)

  El lenguaje de consulta estructurada ["Structured Query Language" ("SQL"), en inglés], más conocido popularmente como lenguaje SQL o SQL a secas, es un lenguaje específico del dominio utilizado en programación, diseñado para administrar, y recuperar información de sistemas de gestión de bases de datos relacionales.  Una de sus principales características es el manejo del álgebra y el cálculo relacional para efectuar consultas con el fin de recuperar, de forma sencilla, información de bases de datos, así como realizar cambios en ellas.
  Este tipo de lenguaje informático consiste en un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de control de datos. El alcance de SQL incluye la inserción de datos, consultas, actualizaciones y borrado, la creación y modificación de esquemas y el control de acceso a los datos. A veces, el SQL también se describe como un lenguaje declarativo, puesto que incluye elementos procesales.
  Actualmente, este tipo de lenguaje es el lenguaje de base de datos más usado. De hecho, hace tiempo que pasó a ser el estándar del ANSI y de la ISO, siendo revisado para incluir más características desde entonces. No obstante, la mayoría de los códigos SQL no son completamente portables entre sistemas de bases de datos diferentes sin ajustes.

Introducción al PHP (Parte 12: Otras sentencias de control)

  Existen algunas sentencias relacionadas con las estructuras de control que no pertenecen ni al grupo de las sentencias condicionales ni al de las sentencias de control de bucles
  Estas sentencias cumplen ciertas funciones de apoyo a las de los dos grupos antes mencionados, por lo que no carecen de importancia a la hora de crear guiones en lenguaje PHP.
  A pesar de ello, su uso es opcional, existiendo alternativas que cumplen sus mismas funciones, aunque de modo menos elegante. 

Crear una red informática mediante archivos en Linux

  Una red informática consiste en dos o más ordenadores conectados entre sí y que comparten recursos, ya sea hardware (periféricos, sistemas de almacenamiento…) o software (archivos, datos, programas, aplicaciones…). Una red informática permite que varios usuarios puedan intercambiar información, pasar archivos, compartir periféricos como las impresoras e incluso ejecutar programas en otros ordenadores conectados a la red.
  En la actualidad prácticamente todo está conectado por redes informáticas, desde las redes internas de las empresas o los hogares particulares, hasta el propio Internet, que no es más que una red informática inmensa.
  Para realizar las conexiones entre los equipos informáticos hacen falta utilizar ciertos protocolos de red, ciertos lenguajes informáticos, y ciertas herramientas físicas.
  Lo más habitual es emplear DHCP para conectar varios equipos informáticos (ver también cómo conectar dos equipos de Linux mediante DHCP en el siguiente enlace), y configurar el dominio empleando el programa bind. No obstante, aquí se verá un método más sencillo para realizar ambas cosas en Linux.
  Para ejemplificar esta explicación se emplearán dos equipos con el sistema operativo Debian 9.

Creación de una máquina virtual con KVM de Linux

  En una entrada anterior se ha explicado qué era KVM, un programa de virtualización, y se ha explicado cómo instalarlo y configurarlo para prepararlo con el fin de poder crear y utilizar máquinas virtuales.
  En la presente entrada se verá el modo de creación de una máquina virtual con este programa. Se debe tener en cuenta que la siguiente explicación es específica para el huésped que se va a instalar en ella, por lo que existen variantes dependientes del sistema operativo que se instale.
  Se utilizará el sistema operativo Debian 9 tanto en el equipo informatico anfitrión como en el huésped para ejemplificar la explicación.

Gestión de puertos de redes desde el cortafuegos de Windows

  El cortafuegos ("firewall", en inglés) es un programa que sirve para bloquear las comunicaciones no autorizadas que, al mismo tiempo, permite el acceso a las que lo están.
  Por su parte, un puerto de red es una interfaz (conexión funcional entre dos sistemas, programas, dispositivos o componentes de cualquier tipo, que proporciona una comunicación de distintos niveles permitiendo el intercambio de información) para comunicarse con un programa a través de una red.
  En numerosas ocasiones, un usuario se encuentra con que ciertos programas no son capaces de acceder por los puertos debido a que el cortafuegos no se lo permite. Aquí se verá como hacer que el cortafuegos posibilite el acceso a dichos programas por el puerto que necesiten.

Instalación básica de contenedor de red Tomcat en Linux


  El mundo de los servidores de red es basto y lleno de misterios.
  En entradas anteriores de la presente bitácora se ha hablado de Apache, de Internet Information Services, y de Nginx. Todos ellos han sido definidos como servidores de red (aunque algunos posean otras funciones añadidas).
  Mas en esta entrada se hablará de un interesante complemento a un servidor de red conocido como contenedor de red (o contenedor web), de entre los cuales uno de los más populares es Apache Tomcat.
  Pero lo primero es lo primero. Un contenedor de red es, desde el punto de vista de la programación informática en Java, la implementación que hace cumplimiento del contrato de componentes web de la arquitectura J2EE (Java 2 Enterprise Edition, plataforma de programación en Java).​ Este contrato especifica un entorno de ejecución para componentes web que incluye seguridad, concurrencia, gestión del ciclo de vida, procesamiento de transacciones, despliegue y otros servicios. Un contenedor web suministra los mismos servicios que el contenedor de JSP así como también una vista federada de las API de la plataforma J2EE. Un contenedor de red se suministra incluido en un servidor de red o J2EE.

Introducción a las bases de datos (Parte 2: Objetivos de un sistema de gestión de bases de datos)

  A pesar de la multitud de tipos de bases de datos, con sus inherentes y evidentes diferencias entre sí, lo que conlleva a diferencias entre los programas que las gestionan, existen objetivos compartidos por todas ellas y ellos.
  Estos objetivos genéricos que deben cumplir especialmente los sistemas de gestión de bases de datos (SGBD), sirven tanto para facilitar el proceso de diseño de aplicaciones, como para que el tratamineto de los datos sea más eficiente y rápido al dar una mayor flexibilidad a los usuarios.
  Debe recordarse que la función de un SGBD consiste en suministrar al usuario las herramientas necesarias  para manipular, en términos abstractos, los datos, de tal forma que no le sea necesario conocer el modo de almacenamiento de los datos en el ordenador, ni el método de acceso empleado.

Hacer que el fondo de una bitácora se adapte a cualquier resolución de pantalla

  Una bitácora​, popularmente conocida por su nombre en inglés "blog"​, es un sitio web que incluye, a modo de diario personal de su autor o autores, contenidos de su interés, que suelen estar actualizados con frecuencia y a menudo son comentados por los lectores.
  Sirve como publicación en línea de historias con una periodicidad muy alta, que son presentadas en orden cronológico inverso, es decir, lo más reciente que se ha publicado es lo primero que aparece en la pantalla. Antes era frecuente que las bitácoras mostraran una lista de enlaces a otras bitácoras u otras páginas para ampliar información, citar fuentes o hacer notar que se continúa con un tema que empezó otro blog.
  Actualmente, una bitácora puede tener diversas finalidades según el tipo, taxonomía o incluso su autoría, como por ejemplo para reforzar la marca personal del autor, generar información para comunidades temáticas concretas o incluso servir como medio para buscar oportunidades laborales.

Instalación de KVM en Linux

  Kernel-based Virtual Machine (KVM) ("Máquina virtual basada en el núcleo", en español) es una solución para implementar virtualización completa con Linux. Está formada por un módulo del núcleo (con el nombre "kvm.ko") y herramientas en el espacio de usuario, siendo en su totalidad software libre.
  KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc.
  Este programa de virtualización requiere que el equipo anfitrión posea un procesador x86, o x86_64, con soporte para virtualización. La tecnología de virtualización recibe la denominación VT en Intel y SVM en AMD. Además, puede ejecutar huéspedes (o invitados) Linux/Unix/Windows de 32 o 64 bits.
  Actualmente, KVM utiliza una versión modificada de QEMU como interfaz ("front-end", en inglés). Por otra parte, sus pruebas de rendimiento han demostrado que, para algunas cargas de trabajo, ha resultado ser más rápido que otros programas del mismo tipo, mientras que para otras, no tanto.
  Una de las características más relevantes de KVM es el "overcommit" que es el uso de memoria excediendo aún la memoria física del anfitrión.
  Para ejemplificar la explicación se utilizará un equipo informático con el sistema operativo Debian 9 como anfitrión.

Configurar Nginx con proxy inverso y una aplicación de Tomcat en Linux

  En entradas anteriores se ha visto el modo de instalar un servidor de red Nginx y un contenedor de red Tomcat. También se ha comentado que el segundo solía ir conectado al primero (o a un servidor de red Apache), y que otra función de Nginx era crear proxys inversos con diferentes finalidades.
  Pero, ¿qué es un proxy inverso?, pues nada menos que un tipo de servidor proxy que recupera recursos en nombre de un cliente desde uno o más servidores. Estos recursos son entonces devueltos al cliente como si se originaran en el propio servidor de red. Por lo tanto, el proxy inverso es un intermediario para que sus servidores asociados sean contactados por cualquier cliente.
  Para ejemplificar esta explicación se ha empleado el servidor Debian 9 Stretch como sistema operativo base, el Nginx 1.14 como servidor de proxy inverso, y el contenedor de red Tomcat 8.

La paleta de colores en el terminal de Linux

  Todos los sistemas operativos basados en Unix disponen de un intérprete de comandos u órdenes (conocido como terminal, consola o "shell") que hace de interfaz entre el usuario y el propio sistema operativo, por lo que es posible acceder al sistema operativo sin utilizar la interfaz gráfica y realizar todo tipo de tareas en modo texto.
  El formato predeterminado del terminal se compone de los siguientes elementos (de izquierda a derecha):
  •   Nombre del usuario conectado al terminal.
  •   @: Significa "en".
  •  Nombre de la máquina a la cual  está conectado el usuario.
  •   ~: Ruta en la cual se encuentra el usuario.
  •   $: Indicador para comenzar a escribir nuevas órdenes o comandos.

Ejemplos de código PHP (Parte 3: Estructuras repetitivas)

  En esta parte de la serie sobre ejemplos de código PHP se verán ejemplos de estructuras repetitivas, que forman parte de las estructuras de control, como se ha visto en esta entrada anterior.
   Cada uno de los códigos aquí mostrados como ejemplo se refieren a una situación hipotética a la que son útiles, pero eso no significa que no haya otros códigos PHP que resuelvan igualmente tales situaciones.
  Los códigos aquí mostrados han sido probados y funcionan sin ningún problema.

Introducción al PHP (Parte 11: Estructuras repetitivas)

  Una situación habitual en la lógica de los programas consiste en tener que ejecutar repetidamente un conjunto de instruciones hasta que se cumpla una determinada condición o que, lo que es lo mismo, deje de cumplirse una condición. Las sentencias que se utilizan para controlar esas iteraciones, o bucles, son denominadas sentencias de control de bucles, o repetitivas.
  Como se verá en esta entrada de la presente bitácora, que continúa con la serie de entradas relacionadas con el lenguaje de guiones PHP, uno de los lenguajes informáticos que utilizan dichas sentencias es el antes mencionado.

Conectar un gestor de correo electrónico a un servidor de correo con la verificación en dos pasos activada

  Un gestor de correo electrónico es un programa, del tipo cliente de correo electrónico, que permite gestionar múltiples cuentas de correos electrónicos sin necesidad de acceder a la página web del servidor. También brinda, en caso de usar el protocolo POP3, la posibilidad de revisar y crear los mensajes de correo electrónico sin disponer de una conexión a Internet para que sean enviados cuando exista una conexión (se sincronizan con el servidor al conectarse).
  Por otra parte, se entiende por servidor de correo electrónico una aplicación de red de ordenadores ubicada en un servidor de Internet, para prestar servicio de correo electrónico.
  El protocolo estándar para la transferencia de correos entre servidores es el Protocolo Simple de Transferencia de Correo ["Simple Mail Transfer Protocol" (SMTP), en inglés]. Está definido en el RFC 2821 y es un estándar oficial de Internet.

Creación de cuentas de usuario en Windows Server

  Uno de los objetos de dominio vistos en una entrada anterior es el usuario.
  En términos generales, en informática, un usuario es aquella persona que utiliza un dispositivo o un ordenador y realiza múltiples operaciones con distintos propósitos.
  No obstante, los cambios en el ámbito informático han hecho replantear esta definición del concepto, considerándolo actualmente como un conjunto de permisos y de recursos (o dispositivos) a los cuales se tiene acceso, por lo que un usuario puede ser tanto una persona como una máquina, un programa, etc.

Conexiones remotas (Parte 2: TeamViewer)

  TeamViewer es un software informático privado de fácil acceso, que permite conectarse remotamente a otro equipo. Entre sus funciones están: compartir y controlar escritorios, reuniones en línea, videoconferencias y transferencia de archivos entre ordenadores. Existen versiones para los sistemas operativos Windows, Mac OS X,​ Linux,​ iOS,​ Android, Windows Phone 8, Windows RT y BlackBerry. También es posible el acceso a un equipo remoto mediante un navegador de red.​ Aunque el principal cometido de la aplicación es el control remoto, también incluye funciones de trabajo en equipo y presentación.

Entornos gráficos de escritorio de Linux (Parte 10: XFCE)

  Dentro de los entornos gráficos de escritorio para sistemas operativos de Linux se encuentra también Xfce.
  En este caso se trata de un entorno de escritorio libre que también funciona en sistemas como BSD, Solaris y derivados. Su objetivo es ser rápido y ligero, sin dejar de ser visualmente atractivo y fácil de usar. Consiste en varios componentes empaquetados por separado que en conjunto proporcionan la funcionalidad completa del entorno de escritorio, pero se pueden seleccionar por separado para que el usuario pueda adaptar el ambiente de trabajo a sus necesidades.
  Este entorno gráfico de escritorio está basado en la biblioteca GTK+ 2, al igual que GNOME 2, utiliza el gestor de ventanas Xfwm y se puede configurar íntegramente con el ratón, permaneciendo de esta forma los ficheros de configuración ocultos al usuario no experimentado.

Instalación básica del servidor Nginx en Linux

  Ya se ha explicado en su momento qué es un servidor de red y para qué sirve, ejemplos de servidores de red son Apache o Internet Information Services, de los que se ha hablado en esta bitácora en varias ocasiones.
  En la presente entrada se explicará qué es y cómo se instala otro servidor de red que, además, posee otras funciones de servidor muy particulares, se trata de Nginx (pronunciado en inglés “engine X”).
  Se trata de un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3).
  Es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada; también existe una versión comercial distribuida bajo el nombre de Nginx Plus. Es multiplataforma, por lo que corre en sistemas tipo unix (GNU/Linux, BSD, Solaris, Mac OS X, etc.) y Windows.
  Para ejemplificar esta explicación se utilizará el sistema operativo Debian 9 (Stretch) y Nginx  1.14.

Introducción a las bases de datos (Parte 1: tipos)

  Una base de datos ("database", en inglés) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. Debido al desarrollo tecnológico de campos como la informática y la electrónica, en la actualidad la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.

Creación de grupos en Windows Server

  En la entrada acerca de los objetos de dominio se ha visto el de grupo.
  En la presente entrada se mostrará cómo crear los grupos en los que se pueden organizar las cuentas de usuarios y sus permisos.
  Debe recordarse que el nombre distintivo para un grupo en el protocolo LDAP es "cn", puesto que se trata de un contenedor.
  Los medios más habituales para la creación de grupos suelen ser las herramientas gráficas "Centro de Administración de Active Directory" ["Active Directory Administrative Center (ADAC)", en inglés], y "Usuarios y Equipos de Active Directory" (más antigua), y el PowerShell.

Crear una carpeta compartida con VirtualBox

  Oracle VM VirtualBox es un software de virtualización para arquitecturas x86/amd64. Actualmente es desarrollado por Oracle Corporation como parte de su familia de productos de virtualización. Por medio de esta aplicación es posible crear máquinas virtuales funcionales. Entre los sistemas operativos soportados (en modo anfitrión) se encuentran GNU/Linux, Mac OS X, OS/2 Warp, Microsoft Windows, y Solaris/OpenSolaris, y dentro de ellos es posible virtualizar los sistemas operativos FreeBSD, GNU/Linux, OpenBSD, OS/2 Warp, Windows, Solaris, MS-DOS y muchos otros.

VirtualBox ofrece algunas funcionalidades interesantes, como la ejecución de máquinas virtuales de forma remota, por medio del Remote Desktop Protocol (RDP), soporte iSCSI, aunque estas opciones no están disponibles en la versión gratuita.

Creando diccionarios de claves con "Crunch" (Parte 2)

  Ya se ha visto, en una entrada anterior, el uso del programa Crunch, que genera diccionarios de claves (o de contraseñas), al nivel más básico. Esto permite al usuario del programa generar  dichos diccionarios especificándole el tamaño y el conjunto de caracteres a usarse.
  Ahora se verán más posibilidades con este programa.

Ejemplos de código PHP (Parte 2: Estructuras condicionales)

  Continuando con la serie de ejemplos de código PHP, se mostrarán ejemplos de código PHP relacionados con las estructuras condicionales (para saber más sobre este tema, ver la siguiente entrada de este blog).
  Los códigos están relacionados a situaciones hipotéticas en las que son útiles. Además, se trata de una de las múltiples posibilidades de tales situaciones, pero no la única.
   Todos los códigos de los ejemplos han sido probados y funcionan perfectamente en las situaciones referidas a cada uno de ellos.

Introducción al PHP (Parte 10: Sentencias condicionales)

  La flexibilidad del código del lenguaje PHP se consigue cuando se pueden introducir decisiones y bucles.
  Una decisión permite ejecutar un apartado u otro del código, basado en los resultados de una prueba específica.
  Por su parte, el bucle permite ejecutar el mismo apartado de código una y otra vez hasta que se cumpla una condición específica.
  El uso de estos elementos agrega mucha potencia a los guiones y se pueden hacer verdaderamente dinámicos, al contrario de aquellos con ejecución secuencial, donde el motor PHP comienza en la primera línea del guión y continúa hacia abajo hasta que llega al final.
  Para poder incluir estas decisiones y bucles en el código existen las estructuras de control que se pueden clasificar en dos grupos principales:
  •    Sentencias condicionales: Aquellas sentencias que ejecutan una sección del código del programa si se cumple una condición.
  •    Sentencias de control de bucles: Aquellas sentencias que definen bucles que encierran grupos de instrucciones que se ejecutan repetidamente hasta que se cumpla cierta condición. También reciben el nombre de "repetitivas".

Gestión básica de servicios en Linux

  Básicamente, los servicios en Linux, o demonios, son lo mismo que los servicios en Windows. Se trata de procesos que se ejecutan en segundo plano y que suelen estar gestionados por el sistema, aunque el usuario puede gestionarlos también si sabe cómo proceder.
  El servicio inicial clásico que inicia el sistema operativo y sus servicios en Linux es "init".
  Las tareas de "init" son las siguientes:
  • Comprueba los sistemas de ficheros.
  • Monta los sistemas de ficheros permanentes.
  • Activa la zona de memoria de intercambio.
  • Activa los demonios del sistema (p.e: atd, syslog).
  • Activa la red.
  • Inicia los demonios de red del sistema (p.e.: sendmail, httpsd).
  • Limpia los sistemas de ficheros temporales.
  • Habilita el inicio de sesión a los usuarios del sistema.

Crear unidades organizativas en Windows Server

 En una entrada anterior de este blog se han expuesto brevemente los objetos de dominio básicos que posee cualquier dominio.
  Por otra parte, en la mencionada entrada se ha explicado lo que es el Directorio Administrativo de Microsoft (utilizado desde el Windows 2000) y su utilidad como depósito estructurado de la información de dichos objetos (impresoras, usuarios, equipos, unidades organizativas, grupos, etc.).
 En la presente entrada se explicará el modo de crear las unidades organizativas ["Organizational Units" (OU), en inglés] en el Directorio Activo de un servidor de Windows.
 Los ejemplos utilizados durante la explicación se han probado en el Windows Server 2012 R2, pero las indicaciones son extrapolables a otros sistemas operativos de servidor Windows (aunque se deben tener en cuenta las variaciones exclusivas de cada sistema operativo, por supuesto).

Entornos gráficos de escritorio de Linux (Parte 9: Unity)

  Continuando con la serie de entradas acerca de entornos gráficos de escritorio de Linux, se expondrán aquí las características de Unity, el nuevo entorno gráfico de escritorio básico de Ubuntu.
  En realidad, a pesar de sus funciones de entorno gráfico de escritorio, Unity es una interfaz de usuario creada para el entorno de escritorio GNOME, y desarrollado por Canonical para la distribución de Ubuntu.

Creando diccionarios de claves con "Crunch" (Parte 1)

  Un diccionario de claves, o de contraseñas, ("wordlist", en inglés) es un archivo que tiene escritas numerosas contraseñas algunas de las cuales, posiblemente, utilice algún usuario de informática en algún momento.
   Este tipo de diccionarios suele usarse en auditorías de redes que comprueban la seguridad y solidez de sus contraseñas. No obstante, tambien se emplea en los ataques de fuerza bruta a las redes, sobretodo las inalámbricas.
   Crunch es un programa que, basándose en criterios establecidos por el usuario, es capaz de generar estos di]ccionarios para ser usados por el mismo; el resultado de Crunch puede ser visto en pantalla, puede ser guardado en un archivo de texto plano (".txt"), o puede enviarse a otro programa en tiempo real para su uso.

Instalación de WordPress en un sistema operativo Linux con XAMPP

  En una entrada anterior del presente blog se ha hablado brevemente del sistema de gestión de contenidos WordPress.
  La presente entrada explicará cómo instalar dicho gestor de contenidos en un sistema operativo Linux donde previamente haya instalado un paquete XAMPP (o un paquete LAMP, que es su equivalente exclusivo para sistemas operativos Linux), que es, básicamente, un paquete con un conjunto de programas de licencia libre apropiados para crear fácilmente un servidor con su base de datos.
  Para ejemplificar dicha explicación se utilizará el sistema operativo Lubuntu 16.04.

Los objetos de un dominio de Windows

  En una entrada anterior se ha mencionado el Directorio Activo ("Active Directory", en inglés), o Directorio Administrativo, como también se le llama.
  Se trata de la implementación de servicio de directorio en una red distribuida de ordenadores de Microsoft. Utiliza distintos protocolos, principalmente LDAP, DNS, DHCP y Kerberos.
  Se puede explicar fácilmente definiéndolo como un servicio establecido en uno o varios servidores en donde se crean objetos tales como usuarios, equipos o grupos, con el objetivo de administrar los inicios de sesión en los equipos conectados a la red, así como también la administración de políticas en toda la red.
  Su estructura jerárquica permite mantener una serie de objetos relacionados con componentes de una red, como usuarios, grupos de usuarios, permisos y asignación de recursos y políticas de acceso.​
  El Directorio Administrativo permite a los administradores establecer políticas a nivel de empresa, desplegar programas en muchos ordenadores y aplicar actualizaciones críticas a una organización entera. Un Directorio Activo almacena información de una organización en una base de datos central, organizada y accesible. Pueden encontrarse desde directorios con cientos de objetos para una red pequeña hasta directorios con millones de objetos. 

Entornos gráficos de escritorio de Linux (Parte 8: Razor-qt)

  Continuando con la serie de entradas sobre entornos gráficos de escritorio de Linux, en la presente entrada se hablará del entorno gráfico de escritorio Razor-qt, llamado así por estar basado en el entorno de trabajo Qt.

Introducción al PHP (Parte 9: Precedencia de los operadores)

  En la entrada anterior de esta serie sobre el lenguaje de guiones PHP se habló sobre los operadores que se emplean en este.
  La presente entrada de este blog profundizará en el mismo tema que la anterior explicando el orden de precedencia que tienen los operadores cuando aparecen en una misma expresión dentro de un guión de PHP.

Ejemplos de código PHP (Parte 1: Ejemplos básicos)

  Los ejemplos aquí mostrados son representativos de las partes 1 - 9 de la serie de entradas de introducción al lenguaje de guiones PHP.
  Esto significa que mostrarán estructuras de PHP bastante simples, independientemente de su longitud.
  Cada uno de los códigos aquí mostrados como ejemplo se refieren a una situación hipotética a la que son útiles, pero eso no significa que no haya otros códigos PHP que resuelvan igualmente tales situaciones.
  Los códigos aquí mostrados han sido probados y funcionan sin ningún problema.

El sistema de gestión de contenidos

  Un sistema de gestión de contenidos ["Content Management System" (CMS), en inglés], o gestor de contenidos, es un programa informático que permite crear una estructura de soporte ("framework", en inglés) para la creación y administración de contenidos, principalmente en páginas web, por parte de los administradores, editores, participantes y demás usuarios.