viernes, 1 de agosto de 2025

VNC RDP Conexión Remota

Veremos como configurar los servidores y clientes para realizar conexiones remotas VNC y RDP.

1. Actualización de Ubuntu Server.

2. VNC configuración del servidor Ubuntu y comprobación de los clientes Windows 11 y aubuntu.

lunes, 28 de julio de 2025

Opnsense Firewall

En esta entrada disponemos de varios vídeos dónde podremos ver como configurar algunas reglas de nuestro firewall Opnsense y mucho más...

1. Configuración inicial.

2. Crear DMZ.

domingo, 20 de julio de 2025

Kali Linux: Keylogger, Metasploit, Pretermeter y ShellReverse

En este vídeo de seguridad informática veremos como mediante Metasploit y Pretermeter, ejecutar un keylogger en una máquina víctima, y a posteriori ejecutar un ShellReverse para tener acceso al sistema.

Apache Ubuntu

Disponemos en este post de unos vídeos de configuración de Apache en Ubuntu. Instalación y configuración, ssl con webmin, sitios 80 y 443.

1. Apache instalación, comandos y configuración.

sábado, 19 de julio de 2025

Tiendas Online: PrestaShop & WordPress WooCommerce

Estos son unos vídeos de introducción a PrestaShop y a WooCommerce para WordPress.

1. WooCommerce instalación y configuración.

2. PrestaShop instalación.

Clonezilla

En esta serie de vídeos podremos ver como realizar y recuperar una imagen del sistema con clonezilla, y como clonar una máquina virtual en VirtualBox.

1. Crear imagen del sistema con Clonezilla.

2. Recuperar imagen del sistema con Clonezilla.

jueves, 17 de julio de 2025

Ldap Ubuntu Server

LDAP (Lightweight Directory Access Protocol) es un protocolo estándar que permite a las aplicaciones y sistemas acceder a información almacenada en un directorio, como usuarios, grupos y recursos. En esencia, LDAP actúa como un intermediario para consultar y administrar datos en un directorio centralizado, facilitando la autenticación, autorización y gestión de recursos en una red. 

En este post encontráis unos videos que os explican la configuración e instalación de Ldap en Ubuntu Server, preaparción de los clientes Windows 11 y Ubuntu, gestión de unidades organizativas y usuarios, y más cosas.

1. Ldap instalación y configuración.


2. Conectividad entre equipos de red.

miércoles, 16 de julio de 2025

Ssh Ubuntu Server

Disponemos de una serie de vídeos que van desde la instalación de Ubuntu Server, configuración de IP estática, configuración y conexión ssh, compartir archivos scp, tareas programadas cron...

1. Instalación de Ubuntu Server.


2. IP estática y nombre del servidor.

Windows Server 2022

En esta entrada encontraremos una serie de vídeos relacionados con Windows Server 2022.

En ellos se describe desde la instalación inicial a la creación de perfiles móviles, carpetas compartidas, directivas de grupo, unir clientes Windows y mucho más.

1. Instalación no gráfica.


2. Cambiar nombre del servidor.

OpenShot editor de vídeo gratuito

Os comparto un par de vídeos que describen el uso básico del editor de vídeo gratuito OpenShot.

1. Descarga e instalación.


2. Uso básico de OpenShot.

Flashear Bios - Programar Memoria W25Qxxx

En esta entrada se comparten varios vídeos relacionados con: Flashear Bios - Programar Memoria W25Qxxx.

1. Programador USB CH341A.


2. Drivers Programador USB CH341A.

martes, 15 de julio de 2025

07 Php POO Herencia Múltiple Traits

 En Php no se permite la herencia múltiple, sólo se permite la herencia simple.

Una clase sólo puede heredar de una clase padre, para simular la herencia múltiple podemos usar los traits.
Si quisiera tener dos clases padre, a la segunda clase padre no la definiré como class, sino como traits.
Y para extender esta segunda clase padre, dentro de la clase hija, definiremos dentro de la clase hija el trait:
                class Persona00{ }
                trait Persona01{ }
                class Persona02 extendes Persona00{ use Persona01; }

Con esto logramos extender la clase Persona00 y la clase Persona01.
Lo mismo podríamos hacer dentro de un trait para extender otros.

Una de las diferencias entre los traits y las clases es que los traits no se pueden instanciar.

lunes, 14 de julio de 2025

16 Python 3.13. POO Herencia

 

15 Python 3.13. Qué es POO, Clase, Parámetros, Métodos y Encapsulación

 ¿Qué es y en qué consiste la programación orientada a objetos?

Se trata de un paradigma de programación.

 

Dos grandes grupos o categorías:
Leguajes de programación orientados a procedimientos y orientados a objetos.

- Programación orientada a procedimientos: cobol, basic…
- Desventajas:
             - Unidades de código muy grandes en aplicaciones complejas.
             - Código difícil de descifrar en aplicaciones complejas.
             - Código poco reutilizable.
             - Error en una línea, probable que el programa caiga.
             - Difícil de depurar.

 



14 Python 3.13. Excepciones

 ¿Qué es una excepción?

Son un error que ocurre durante la ejecución de un programa.
La sintaxis es correcta, pero durante la ejecución ha ocurrido algo inesperado.
La solución son la captura o control de excepción.
Consiste en decirle al programa, intenta realizar esta operación y si no puedes ejecutar el resto del programa.

13 Python 3.13. Generadores

 Los generadores extraen valores de una función, que se van a almacenar en objetos iterables. Esto quiere decir que estos objetos los vamos a poder recorrer con un bucle, iteradores o el método next.

Estos valores se almacenan de uno en uno y permanecen en un estado de espera (pausa o suspensión de estado) hasta que se solicita el siguiente.
En una función en lugar de utilizar la instrucción return utilizamos la instrucción yield.

En una función tradicional que construya una lista de valores, la instrucción return nos devuelve todos los valores.

Pero la instrucción yield, sólo nos devuelve el primer valor y se mantiene a la espera.
El control de flujo retorna a la llamada a la función y la llamar de nuevo a la función nos retorna el segundo valor, por eso decimos que se generan objetos iterables.

La diferencia estriba en que se nos devuelven los valores uno a uno, dentro de un objeto iterable.

- Las ventajas:

- Es más eficiente que una función tradicional, menos consumo de memoria y recursos.
- Para trabajar con listas de valores infinitos.

12 Python 3.13. Bucle Continue, pass y for else

 La instrucción Continue lo que hace es tras evaluar una condición y se esta se cumple, ignorar el código que se ha de ejecutar a continuación y comenzar la siguiente vuelta de bucle.

Si la condición a evaluar no se cumple se ejecuta el código dentro del bucle normalmente.

11 Python 3.13. Bucle While

While es un bucle indeterminado, pues no sabemos cuántas veces ejecutará el código en su interior.

Sintaxis:
Palabra reservada While.
Condición que se ha de cumplir, exactamente igual que un condicional.
Mientras la condición sea verdadera el bucle se ejecuta.
En el momento que la condición pasa a ser falsa, el bucle deja de ejecutar el código en su interior y continuaría la ejecución del flujo del programa.

While condición:

            Código a ejecutar.

10 Python 3.13. Bucles For

 El objetivo del bucle es repetir una serie de código una serie de veces.

Existen dos tipos de bucles, los determinados y los indeterminados.

Un bucle consta de dos partes, la declaración del bucle y el cuerpo.

En el flujo, leerá la declaración del bucle y luego leerá las líneas de código.
Si es un bucle determinado leerá el código que se encuentre dentro del bucle un número determinado de veces, un número concreto.
Si es un bucle indeterminado puede ejecutarlo un número de veces o un bucle infinito.

El elemento a recorrer puede ser una lista, una tupla, un texto…
La sintaxis es:
for variable in elemento_a_recorrer:
            (Identación)Cuerpo del bucle.
            (Identación)Cuerpo del bucle.
            (Identación)Cuerpo del bucle.

09 Python 3.13. Condicionales

 Estructuras de control de flujo o condicionales.

Tenemos dos grandes grupos, los condicionales y los bucles.

El flujo de ejecución de un programa es el orden en que se ejecutan sus instrucciones.
El flujo normalmente es de arriba hacia abajo, aunque este flujo se puede ver alterado entre otras causas por las estructuras de control de flujo.

De tal forma que el programa al llegar a la estructura condicional, a la estructura de control de flujo, evalúa la condición y ejecuta el código que está en su interior, dependiendo de que esta condición se cumpla o no.
Y cuando termina de ejecutar las instrucciones, continua ejecutando las siguientes instrucciones después del condicional.

De un lenguaje a otro lo que cambia es la sintaxis del cada lentuaje.

08 Python 3.13. Los diccionarios

 La diferencia entre los diccionarios y las estructuras de almacenamiento de datos que hemos visto anteriormente, como las listas, tuplas o conjuntos, es que estos almacenan los datos con una estructura de clave:valor.

Similar a un array bidimensional o asociativo en php.

La clave es única y podemos almacenar cualquier tipo de valor, incluso tuplas, listas y otros diccionarios.

La sintaxis: Los elementos van entre llaves igual que los set, conjuntos, pero con estructura de clave:valor.

nombre={“Clave01”:”Valor01”, “Clave02”:”Valor02”,…}

Acceder a un elemento del diccionario.

print(nombre[“clave”])

Acceder a un diccionario completo.

print(nombre)

07 Python 3.13. Sets o Conjuntos

Los sets o conjuntos se utilizan para almacenar varios valores en una variable.

Los valores se establecen entre llaves. conjunto={“elemento1”, “elemento2”, “elemento3”,…}

Los elementos son no ordenados, inmutables, no permiten valores duplicados.

No ordenado significa que los elementos en un conjunto no tienen un orden definido.
Los elementos pueden aparecer en un orden diferente cada vez que los usas, y no puede ser referido por índice o clave.

Los elementos del conjunto son inmutables, lo que significa que no podemos cambiar los elementos después de la creación del conjunto.

Una vez que se crea un conjunto, no puede cambiar sus elementos, pero puede eliminar elementos y añadir nuevos elementos.

Los elementos del conjunto pueden ser de cualquier tipo de dato:
    set1 = {"abc", 34, True, 40, "male"}
 

06 Python 3.13. Las tuplas

 Las tuplas son listas inmutables, no se pueden modificar después de su creación.

Ni se pueden eliminar, ni añadir, modificar o mover elementos.

No permiten realizar búsquedas, pero permiten comprobar si un elemento se encuentra en una tupla.

Permiten extraer rangos, pero estos son una tupla nueva.

Una tupla unitaria es una tupla con un solo elemento tupla=(“elemento”,)

¿Qué beneficios tienen las tuplas?
- Son más rápidas.
- Ocupan menos espacio en memoria.
- Mayor optimización.
- Nos permiten formatear strings, o cadenas.
- Pueden utilizarse como clave de un diccionario.


05 Python 3.13. Las listas

Las listas es el equivalente al array en otros lenguajes.

Las listas nos permiten guardar diferentes tipos de valores, cosa que los array no.

Las listas se pueden expandir dinámicamente, añadiendo nuevos valores.

Sintaxis de una lista: nombre_lista=[elemento1, elemento2, elemento3,…].

Pueden tener ningún elemento, una lista vacía, un elemento o varios separados por comas…

04 Python 3.13. Funciones

 Las funciones son unas funciones básicas en cualquier lenguaje de programación.

Una función son varias líneas de código agrupadas, formando un bloque, que tienen una tarea, que a su vez se pueden dividir en tareas más pequeñas.

Pueden devolver o no valores, pueden tener o no parámetros o argumentos, a las funciones también se les denomina métodos.

03 Python 3.13. Tipos, operadores y variables

 Tipos de datos:
            - Numéricos:               Enteros (int)                           edad = 35
                                               Coma Flotante (float)
                                               Complejos
            - Texto:
           - Booleanos:                True.               False.


02 Python 3.13. SINTAXIS BÁSICA

 >>> prompt es el punto donde dentro de nuestro editor donde introduciremos nuestras instrucciones en Python.

Una instrucción sería:

>>> print(“Hola Mundo”) la podemos definir como una línea de código.

Una de las características de Python es que el final de las instrucciones en Python no llevan ; al contrario que en otros lenguajes de programación.

Sólo hemos de pulsar la tecla intro para ejecutar el código y como vemos el IDLE nos muestra el resultado.

01 Python 3.13. INTRODUCCIÓN INSTALACIÓN

 https://www.python.org/downloads/ Para las descargas.

- Descargamos la última versión, ejecutamos el asistente y seguimos la instalación típica de Windows.

Es importante en la instalación decirle que agregue Python al Path, para que podamos trabajar con phyton desde la consola, independientemente del directorio donde nos encontremos en ese momento.

Tras finalizar la instalación nos aparece una ventana dándonos la opción de deshabilitar el límite de longitud del path que trae Windows por defecto que es de 260 caracteres, esto sería opcional, aunque no necesario.

Ya podremos ver en todos los programas los paquetes instalados de Python, incluido un IDLE que no es más que una ventana de consola.

Podremos comprobar las variables de entrono o añadir las rutas de instalación y scripts de Python:


sábado, 12 de julio de 2025

06 Php POO Clases Abstractas

 6. Clases Abstractas.

Cuando generamos las interfaces hemos de generar todos los métodos como públicos.

Si queremos desarrollar un método ya no podremos utilizar las interfaces, tendremos que utilizar las clases abstractas.

Estas se comportan de una manera similar a las interfaces, pero nos permiten definir los métodos como protegidos o extender la funcionalidad de algún método.

Para crear una clase abstracta lo hacemos igual que si creásemos una clase normal, pero delante escribimos abstract.

abstract class MiClaseAbstracta{

abstract protected function setNombre($nombre);

abstract protected function getNombre();

}

05 Php POO Interfaces

 5. Interfaces.

Las interfaces son unas plantillas que obligan a los desarrolladores a implementar una estructura y unos métodos de forma obligatoria.

Permite una clase con funciones definidas, pero sin desarrollarla que obliga a todas las clases que lo implemente a tener estos métodos como mínimo.

Dentro de la clase que implemente las interfaces podemos definir los métodos que queramos, pero los definidos por las interfaces son obligatorios.

04 Php POO Encapsulacion Public Protected Private

 4. Encapsulamiento.

Con la palabra clave public, lo que hacíamos era darles una visibilidad pública a nuestras propiedades.

Podríamos acceder a nuestras propiedades desde cualquier lado, por medio de un objeto instanciado o un heredado de una clase padre.

Cuando no definimos si una propiedad o método es de un tipo o de otro, php entiende por defecto que es de tipo público.

Existen tres formas de declarar nuestras propiedades, pública, protegida y privada.

Este proceso se define como encapsulamiento.

Si declaramos una propiedad como protegida o privada no vamos a poder acceder directamente a su valor.

03 Php POO Herencia Extends

 3. Herencia.

Los objetos, como persona, van a tener características diferentes y necesitamos almacenar una información distinta.

Necesitamos crear subclases que heredan las características principales de la clase padre, pero podemos agregarle más características.

Para esto decimos que se extienden de la clase padre.
class Mallorca extends alumno{ }

Con esto logramos que esta clase herede todas las propiedades de la clase alumno y todas las propiedades o métodos.

02 Php POO Clases y Objetos

 2. Clases y Objetos.

Los objetos se crean a partir de clases y las clases vienen a ser como plantillas.

Vamos a crear objetos de tipo persona que van a tener un nombre, apellido, edad, y lo primero que vamos a hacer es construir esa plantilla.

Es muy común que cada vez que creemos una clase, creemos un documento para esa clase, para tener nuestro código mucho más ordenado. Es mejor tener una carpeta donde tengamos nuestras clases.

Para definir una clase hemos de utilizar la palabra reservada class y darle el nombre que le queremos dar a esa clase.

Los objetos tienen propiedades y tienen métodos.
Comenzamos por definir las propiedades.
public $nombre, $apellido, $edad;
Todos los objetos que instanciemos de esta clase tendrán estas propiedades

01 Php POO Qué es la Programación Orientada a Objetos

 1. Qué es la Programación Orientada a Objetos.

Podemos decir que programar es resolver un problema utilizando el poder de procesamiento que tiene nuestra computadora.

Un paradigma es una forma en que enfrentamos la forma de resolver un problema. Si quisiéramos encender una hoguera podríamos hacerlo de muchas maneras.

El paradigma procedimental consiste en ejecutar una sentencia tras otra de una manera ininterrumpida, con un flujo de programa de arriba hacia abajo y si quisiésemos reutilizar un código podríamos generar una función e ir ejecutándolo las veces necesarias.

Este paradigma funciona bien cuando estamos trabajando con programas pequeños, pero nos dará problemas cuando estamos utilizando programas grandes.