Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Vista de todas las páginas

Número total de páginas: 76

Arquitecturas Orientadas a Servicios - Redes y Computación Distribuida

20-01-2025

Las arquitecturas orientadas a servicios (SOA) intentan mejorar la interoperabilidad de los servicios para que sean independientes del lenguaje de programación y se puedan usar para modelos de datos diferentes.

Agentes - Redes y Computación Distribuida

19-01-2025

Introducción a los agentes: definición y sus características. Veremos los tipos de entornos en los que los agentes suelen operar y algunas arquitecturas comunes. A continuación, se comentarán los protocolos y lenguajes de comunicación de FIPA ACL, definición de ontologías; y para terminar, implementación de agentes en la plataforma de JADE.

Redes P2P - Redes y Computación Distribuida

16-01-2025

Introducción a las Redes Peer-to-Peer, con algunos ejemplos notables: Napster, Gnutella, Kazaa y Freenet. También se discutirán redes P2P estructuradas, con la implementación más sencilla: Chord.

Decidibilidad y Complejidad - Compiladores e Intérpretes

14-01-2025

Lenguajes generados por las máquinas de Turing. Análisis de la complejidad de una máquina de Turing y las clases de complejidades P y NP. Decibilidad y el problema de la parada.

Máquinas de Turing - Compiladores e Intérpretes

13-01-2025

Definición de una máquina de Turing y algunas de sus variaciones. Demostración de que dichas variaciones son equivalentes a la máquina de Turing estándar. Máquina de Turing Universal. Computación de funciones y la tesis de Church-Turing. Autómatas Linealmente Acotados.

Autómatas de Pila - Compiladores e Intérpretes

13-01-2025

Autómatas de Pila por vaciado de pila, estados finales o deterministas. Cómo pasar de APN a APF y viceversa. Equivalencia con gramáticas independientes del contexto. Lema del Bombeo para lenguajes independientes del contexto.

Gramáticas - Compiladores e Intérpretes

13-01-2025

Definición de una gramática y sus diferentes tipos. Derivaciones y los lenguajes que generan. Árboles sintácticos. Las diferentes formas normales de una gramática.

Lenguajes Regulares - Compiladores e Intérpretes

12-01-2025

Definición de los lenguajes regulares y del álgebra expresiones regulares. Cómo construir autómatas finitos que aceptan expresiones regulares y cómo obtener la expresión regulare de un autómata. El lema del bombeo.

Autómatas Finitos - Compiladores e Intérpretes

11-01-2025

Autómata Finitos Determinitas, No Deterministas y No Deterministas de cadena vacía. Equivalencia entre varios tipos y minimización de autómatas.

Introducción - Compiladores e Intérpretes

11-01-2025

En este artículo de introducción a la Teoría de Autómatas y Lenguajes Formales, veremos los conceptos básicos y notación alfabetos, lenguajes, gramáticas y autómatas. La parte más importante de este campo es comprender la relación entre estos últimos tres conceptos.

Módulos del Kernel y Servicios - Linux

09-01-2025

Sistemas Conexionistas - Algoritmos y Estructuras de Datos

06-01-2025

Conceptos básicos sobre redes neuronales artificiales. El Perceptrón. Aprendizaje automático supervisado, no supervisado, aprendizaje por refuerzo.

Admininistración de Sistemas - Linux

05-01-2025

Algunas tareas que un buen administrador de sistemas debería hacer.

Instalación de Software - Linux

04-01-2025

Post sobre las diferentes formas de instalación de Software en Linux, incluyendo gestores de paquetes y la compilación desde el código fuente.

Sistemas Basados en Conocimiento - Algoritmos y Estructuras de Datos

02-01-2025

Los Sistemas Basados en Conocimiento, simulan el razonamiento de un humano experto para resolver problemas complejos en dominios especializados. Emplean conocimiento explícito y reglas predefinidas, aplicadas mediante motores de inferencia. Discutiremos su razonamiento lógico, redes semánticas y métodos explicativos, ofreciendo soluciones precisas en áreas donde los algoritmos tradicionales no son viables.

Búsqueda en Espacios de Estados - Algoritmos y Estructuras de Datos

01-01-2025

En los problemas de optimización es necesario encontrar una solución que cumpla unas condiciones. Sin embargo, existen muchos estados posibles, por lo que se necesitan estrategias y algoritmos eficientes para abordar problemas complejos.

Introducción a la Inteligencia Artificial - Algoritmos y Estructuras de Datos

01-01-2025

Instalación - Linux

31-12-2024

Post sobre la instalación de Linux, esquemas de particionado del disco y cómo obtener información del hardware para comprobar que la instalación fue correcta.

Sistemas de Mensajes: RabbitMQ - Redes y Computación Distribuida

30-12-2024

Con el propósito de transferir información entre sistemas heterogéneos, se crearon los sistemas de mensajes, que reciben los mensajes y los almacenan en colas hasta que los receptores están disponibles.

Llamadas a métodos remotos y Objetos Distribuidos - Redes y Computación Distribuida

28-12-2024

En este artículo aumentamos el nivel de abstracción respecto al paso de mensajes. Veremos el paradigma de Remote Proceduce Call (RPC) y su equivalente orientado a objetos, los Objetos Distribuidos. Nos centraremos principalmente en Java RMI.

Hilos en Java - Redes y Computación Distribuida

28-12-2024

Repaso rápido de cómo funcionan los hilos de Java y cómo gestionar las posibles carreras críticas.

Paso de Mensajes - Redes y Computación Distribuida

23-12-2024

En este artículo se discutirá el paradigma de la Computación Distribuida de más bajo nivel: paso de mensajes. En UNIX, se implementa mediante la API de Sockets.

Paradigmas de la Computación Distribuida - Redes y Computación Distribuida

22-12-2024

Tema introductorio a la Computación Distribuida. Se discutirán los temas principales que se tratarán en posteriores artículos.

Sistemas Operativos Distribuidos - Sistemas Operativos

28-05-2024

La tendencia actual del desarrollo del Hardware es incrementar el número de procesadores totales, dado que se ha llegado al límite de mejora de un solo núcleo. En este artículo, discutiremos algunas arquitecturas y luego cómo se debe enfrentar el Sistema Operativo a eso.

Sistemas Operativos en tiempo real - Sistemas Operativos

27-05-2024

En este artículo se definirá lo que es un Sistema Operativo en Tiempo Real y cómo se soluciona su mayor problema: la planificación de procesos para llegar a tiempo.

Interbloqueos - Sistemas Operativos

26-05-2024

Cuando se trabaja con varios procesos y recursos compartidos, es habitual utilizar semáforos y mutexes para proteger su acceso. Sin embargo, su uso despreocupado puede causar que varios procesos se queden bloqueados entre sí. En este artículo veremos en detalle las causas y diferentes estrategias para tratar con los interbloqueos.

Comunicación y Sincronización de Procesos - Sistemas Operativos

24-05-2024

Con frecuencia, es necesario pasar información entre varios procesos que se ejecutan de forma concurrente, o también sincronizarlos para ejecutar una tarea de forma correcta. En este artículo se discutirá qué mecanismos se utilizan y los problemas que emergen.

Shell y Bash - Linux

09-02-2024

En este artículo se hará un overview del uso de la shell, más concretamente Bash. Algunos temas a tratar serán comandos, expansiones, redirecciones, tratamiento de caracteres especiales…

Grafos - Algoritmos y Estructuras de Datos

18-01-2024

Cómo representar grafos en un computador y algunos algoritmos interesantes, como encontrar caminos mínimos, maximizar el flujo, encontrar las componentes conexas, etc.

Árboles - Algoritmos y Estructuras de Datos

16-01-2024

Las estructuras de datos no lineales organizadas de forma jerárquica, o árboles, son muy útiles en computación porque suelen tener complejidad logarítmica, a diferencia de las estructuras lineales. En este artículo se muestran algunos tipos de árboles junto a sus características.

Herencia y Composición. Polimorfismo - Programación Orientada a Objetos

15-01-2024

En este artículo se tratan los aspectos de la Herencia y el Polimorfimo en Java. Se verá el concepto de Clase Abstracta e Interfaz.

Conjuntos de Datos - Programación Orientada a Objetos

15-01-2024

Una buena parte de la programación se dedica a las estructuras de datos, y es algo que afecta directamente al rendimiento de un programa. En este artículo se da una visión general sobre las colecciones que provee Java.

Referencias - Programación Orientada a Objetos

13-01-2024

En este artículo se trata en detalle el Aliasing otros detalles importantes sobre la gestión de memoria que realiza la Máquina Virtual de Java.

Encapsulación - Programación Orientada a Objetos

13-01-2024

En este primer artículo, se verá el concepto de Encapsulación, Clase y Objeto. Además, se explorarán los constructores, getters, setters y métodos funcionales.

Entrada/Salida - Sistemas Operativos

08-01-2024

Además de crear abstracciones para los procesos, la memoria y los archivos; el Sistema Operativo es el encargado de manejar los dispositivos de Entrada/Salida. Debe pasarles comandos, captar interrupciones y manejar errores.

Sistema de Archivos - Sistemas Operativos

06-01-2024

Cuando el proceso termina, se pierde todo lo que se había almacenado en memoria. Además, los discos solo permiten dos operaciones: lectura y escritura, lo que presenta muchos problemas. Para solucionarlo, el Sistema Operativo crea la abstracción del Sistema de Archivos.

Memoria - Sistemas Operativos

02-01-2024

La memoria principal es un importante recurso del ordenador, y debe gestionarse con cuidado para obtener un buen rendimiento, ya que las CPUs son mucho más rápidas que las memorias. Para ello, se creó la jerarquía de memoria, y el administrador debe llevar registro de qué partes están en uso y de asignarlas a los procesos cuando la necesiten.

Arranque y Proceso Hardware - Sistemas Operativos

28-12-2023

Pasos que realiza el Sistema Operativo cuando se inicia y su funcionamiento normal, llamado proceso hardware.

Procesos e Hilos - Sistemas Operativos

26-12-2023

El concepto más importante en cualquier Sistema Operativo es el proceso, una abstracción de un programa en ejecución. Todo lo demás depende de este concepto. En este post se definirá qué es un proceso, cómo se crean, cómo terminan y cómo el Sistema Operativo los maneja.

Introducción - Sistemas Operativos

26-12-2023

El Sistema Operativo es el software encargado de gestionar los recursos del ordenador y de proporcional una interfaz amigable para su uso. Probablemente sea el software más importante que se ejecuta, dado que da soporte al resto de programas. En este artículo, se comentará brevemente los retos a los que se debe enfrentar.

Usuarios - Linux

30-09-2023

Cómo crear/modificar/eliminar usuarios en Linux. Grupos de usuarios. Uso básico de los comandos passwd, useradd, groupadd, su, sudo y otros. Los archivos /etc/passwd, /etc/shadow, /etc/groups y /etc/gshadow.

Programación Estructurada en C - C/C++

16-07-2023

Uso de estructuras básicas para el control del flujo del programa.

Sintaxis básica - C/C++

07-07-2023

En este post se trata la sintáxis básica de C/C++: comentarios, sentencias y bloques.

Introducción - C/C++

05-07-2023

Introducción a la programación: lenguajes de programación, nivel de abstracción de un lenguaje de programación, traducción a código máquina y errores en la programación.

Teoría de Grafos - Mates Discretas

02-07-2023

Grafos es un tema muy útil para la informática y que ayuda a entender determinados problemas y estructuras de datos.

Preprocesador - C/C++

27-06-2023

Cómo usar las directivas del preprocesador en C/C++, aquellas que comienzan por un #.

GitHub - Herramientas

17-06-2023

Guía para contribuir a proyectos Open Source en GitHub

Recursividad - Mates Discretas

15-06-2023

Definiciones recursivas y cómo resolver relaciones de recurrencia.

Estructura de directorios - Linux

13-06-2023

La estructura de archivos de Linux es bastante diferente a la de Windows, y quizás un poco contraintuitiva; pero en este post se explica con detalle qué es cada carpeta y qué se debería almacenar en ella.

El Binomio Newton y el Triángulo de Pascal - Mates Discretas

12-06-2023

El binomio de Newton y el multinomio de Leibniz. La identidad y el triángulo de Pascal. El principio de inclusión-exclusión.

Combinatoria - Mates Discretas

11-06-2023

Combinatoria es la rama de las matemáticas que estudia la enumeración, construcción y existencia de propiedades de configuraciones que satisfacen ciertas condiciones establecidas. También estudia las ordenaciones o agrupaciones de un determinado número de elementos. En este artículo se comentarán principios básicos y sencillos de esta disciplina.

Criptografía - Mates Discretas

10-06-2023

Introducción a la criptografía básica. Claves simétricas y asimétricas. Cifrado RSA.

Aritmética Modular - Mates Discretas

07-06-2023

Números - Mates Discretas

07-06-2023

Números enteros, divisibilidad, el algoritmo de división y números primos.

Algoritmos - Mates Discretas

05-06-2023

Introducción al análisis de algoritmos y diferentes tipos de algoritmos. N vs NP.

Cuando Linux crashea - Linux

01-01-2023

Algunos consejos para cuando Linux deja de funcionar.

Shell, Bash y Bashrc - Linux

31-08-2022

Guia breve sobre Bash, diferencias con Shell, terminal, consola y prompt.

tmux - Herramientas

29-08-2022

tmux, un programa de terminal que permite crear otras terminales dentro de él: pestañas, divisiones. Así puedes ser mucho más productivo.

Vim y Neovim - Herramientas

26-07-2022

Una pequeña overview de las principales funcionalidades de Vim con sus comandos

CMake - C/C++

05-08-2021

CMake es una de las build tools más utilizadas para proyectos C++.

WASM - Rust

30-07-2021

Breve guía por pasos de cómo compilar Rust para Web Assembly (WASM)

Instalación y compilación - C/C++

30-07-2021

Guía de como instalar un compilador de C/C++. También se aportan algunas directrices de compilación de librerías así como su importación.

JSON - !Prog

30-07-2021

Breve descripción de la sintaxis de JSON, uso y posibles tipos que almacena.

XML - !Prog

15-07-2021

Lenguaje de marcado para guardar información.

Markdown - !Prog

10-06-2021

Guía rápida de cómo escribir Markdown

- Java

Testing - Rust

Strings - Rust

Módulos - Rust

Macros - Rust

Listas y Iteradores - Rust

Generics, traits y closures - Rust

Errores en Rust - Rust

Memoria - Rust

Un resumen del sistema de ownership y borrowing, tipos de memoria (Stack y Heap), lifetimes, Smart Pointers y otros detalles importantes para entender cómo funciona Rust gestiona la memoria a diferencia de C o C++.

Documentación, Cargo y Crates - Rust