DESARROLLO DE MÓDULOS Y APLICACIONES CON APACHE

DESARROLLO DE MÓDULOS Y APLICACIONES CON APACHE

KEW, NICK

39,50 €
IVA incluido
Editorial:
ANAYA MULTIMEDIA, S.A.
Año de edición:
2008
ISBN:
978-84-415-2328-9
Páginas:
528
Encuadernación:
Otros
Colección:
Programación

Disponibilidad:

  • Calle Doce de OctubreConsulte disponibilidad
  • Calle Valeriano MirandaConsulte disponibilidad

Prólogo



Introducción

Lectores

Organización y contenido

Fuera del alcance del libro

Fuentes



1. Desarrollo de aplicaciones con Apache

1.1. Breve historia sobre el servidor Web Apache

1.1.1. Apache 1

1.1.2. Apache 2

1.2. Apache Software Foundation

1.2.1. Meritocracia

1.2.2. Puestos

Usuario

Desarrollador

Asignado

Miembro del PMC

Miembro del ASF

1.2.3. Filosofía

1.3. El proceso de desarrollo de Apache

1.3.1. El código base de Apache

1.3.1.1. Subversión

1.3.1.2. Bifurcaciones: enlace, desarrollo y estabilidad

1.3.1.3. Revisión y consenso

1.3.1.4. Backport

1.3.1.5. Publicación

1.3.2. Foros de desarrollo

1.3.3. Desarrolladores

1.3.4. Participación

1.4. Apache y la propiedad intelectual

1.4.1. La Licencia Apache

Libertad de expresión, no cerveza gratis

Dominio no público

No shareware, nagware o adware

No GPL

Patentes y cláusula de antipiratería

1.4.2. Propiedad intelectual de terceros

Responsabilidad

Auditoría

1.5. Lecturas complementarias

1.5.1. Foros interactivos online

Listas de correo públicas

Usenet

Chat online

1.5.2. Conferencias

1.5.3. Sitios Web

Sitios Web oficiales y semioficiales

Extensiones de terceros

Documentación sobre desarrollo

Otros tutoriales, noticias y artículos

Resumen



2. Plataforma y arquitectura de Apache

2.1. Visión general

2.2. Operación en dos fases

2.2.1. Fase de puesta en marcha

2.2.1.1. Configuración

2.2.2. Fase operativa

2.2.3. Cierre

2.3. Módulos de Multi-Procesamiento

2.3.1. El porqué de los MPM

2.3.2. MPM de la familia UNIX

2.3.3. Trabajar con MPM y sistemas operativos

2.4. Conceptos y estructuras básicos

2.4.1. request_rec

2.4.2. server_rec

2.4.3. conn_rec

2.4.4. process_rec

2.5. Otros componentes clave de la API

2.6. Bases para la configuración de Apache

2.7. Proceso de petición con Apache

2.7.1. Generación de contenidos

2.7.2. Fases del proceso de peticiones

2.7.2.1. Proceso de petición no estándar

2.7.3. Proceso de hooks

2.7.4. Eje de datos y filtros

2.7.4.1 ¿Manejador o filtros?

2.7.4.2. Ejemplos de generadores de contenido

2.7.4.3. Ejemplos de filtros

2.7.5. Orden de proceso

2.7.6. Proceso de hooks

2.8. Resumen



3. Tiempo de ejecución portátil de Apache

3.1. APR

3.2. APR-UTIL

3.3. Convenciones básicas

3.3.1. Manual de referencia: documentación API y Doxygen

3.3.2. Espacio de nombres

3.3.3. Macros de declaración

3.3.4. apr_status_t y valores devueltos

3.3.5. Compilación condicional

3.4. Gestión de recursos: pools APR

3.4.1. El problema de la gestión de recursos

Modelo constructor/destructor

Modelo recuperación de espacio inutilizado

3.4.2. Pools APR

Gestión básica de memoria

Gestión generalizada de memoria

Limpieza explícita e implícita

3.4.3. Duración de los recursos

Pools Apache

Uso de pools en Apache: proceso de una petición

Uso de pools con Apache: inicialización y configuración

Uso de pools con Apache: otros casos

3.4.4. Limitaciones de los pools

3.5. Temas APR seleccionados

3.5.1. Cadenas de literales y formatos

3.5.2. Internacionalización

3.5.3. Tiempo y fechas

3.5.4 Estructura de datos

3.5.4.1. Matrices

3.5.4.2. Tablas

3.5.4.3. Tablas hash

3.5.4.4. Listas

3.5.4.5. Bucles

3.5.5. Buckets y brigades

3.5.6. Sistema de archivos

3.5.7. Redes

3.5.8. Codificación y criptografía

3.5.9 Tratamiento URI

3.5.10. Procesos y threads

3.5.11. Recurso pooling

3.5.12. Extensiones API

3.6. Bases de datos en APR y Apache

3.6.1. DBM y apr_dmb

Ejemplo

3.6.2. Bases de datos SQL y apr_dbd

Driver de MySQL

Uso

3.7. Resumen



4. Técnicas de programación y advertencias

4.1. Convenciones de codificación con Apache

4.1.1. Líneas

4.1.2. Funciones

4.1.3. Bloques

4.1.4. Control de flujo

4.1.5. Declaraciones

4.1.6. Comentarios

4.2. Gestión de los datos de un módulo

4.2.1. Vectores de configuración

4.2.2. Duración de los ámbitos

4.2.2.1. Datos de configuración

4.2.2.2. Datos de petición

4.2.2.3. Datos de conexión

4.2.2.4. Datos persistentes

4.3. Comunicación entre módulos

4.4. Asuntos relativos a la programación thread-safe

4.5. La gestión de datos persistentes

4.5.1. Seguridad thread

4.5.2. Gestión de recursos/memoria

Recuperación de espacio inutilizado

Uso de subpools

Reutilización de los recursos

Uso de reslist

4.6. Programación de plataformas cruzadas

4.6.1. Ejemplo: creación de un archivo temporal

4.7. Programación de MPM cruzados

4.7.1. Bloqueos globales y procesos

4.7.2. Memoria compartida

4.8. Programación segura

Advertencia

4.8.1. Un principio de prevención: no confíe en nada

Validar entradas proactivamente

Uso seguro de entradas

¡No corte las esquinas!

¡No tenga miedo a los errores!

4.8.2. Denegación de servicio: limite el daño

4.8.3. Ayude al sistema operativo a ayudarle

Privilegios

Interconexión

Sistema de archivos

Escribir y ejecutar

chroot

4.9. Dependencias externas y bibliotecas

4.9.1. Bibliotecas de terceros

4.9.2. Prácticas aconsejables para las bibliotecas

Seguridad thread

Iniciación y finalización

¡Precaución!

Cambios de estado de las bibliotecas

4.9.3. Construcción de módulos con bibliotecas

Flexibilidad

Efectos secundarios (bibliotecas indetectables)

Versionado

4.10. Módulos escritos y compilados en otras lenguajes

Macros expandidas

Stubs de C

4.11. Resumen



5. Escribir un generador de contenido

5.1. Módulo HelloWorld

5.1.1 El esqueleto del módulo

5.1.2. Devolver valores

5.1.3. Campo de manejador

5.1.4 El módulo completo

5.1.5. Uso del objeto request_rec

5.2. La petición, la respuesta y el entorno

5.2.1. Módulo E/S

5.2.1.1. Salida

5.2.1.2. Entrada

5.2.1.3. Errores E/S

5.2.2. Lectura de datos tipo

Análisis de datos tipo

5.3. Handler por defecto

5.4. Resumen



6. Ciclo de proceso de petición y manejadores de metadatos

6.1. HTTP

6.1.1. Protocolo HTTP

Sobre, nota de cobertura, cartas y anexos

Metadatos versus datos

Petición y respuesta

6.1.2. Anatomía de una petición HTTP

6.2. Proceso de petición en Apache

6.2.1. Trazado hasta el sistema de archivos

6.2.2. Negociación de contenido

6.2.3. Seguridad

6.2.4. Cacheo

6.2.5. Metadatos privados

6.2.6. Registro

6.3. Desvío de una petición: redireccionamiento interno

6.3.1. Documentos de error

6.3.2. Gestión de peticiones mal formuladas y mal intencionadas

6.4. Recogida de información: subpetición

6.4.1. Ejemplo

6.5. Desarrollo de un módulo

6.5.1. Seleccionar diferentes variantes de un documento

6.5.2. Tratamiento de errores y reutilización

6.6. Resumen



7. AAA: Acceso, Autentificación y Autorización

7.1. Seguridad

7.1.1. Autentificación: niveles de seguridad

7.1.1.1. Basic

7.1.1.2. Digest

7.1.1.3. Diálogo de autentificación

7.1.2. Login en la Web

7.2. Visión general de AAA

7.3. AAA en Apache 1.x y 2.0

7.4. AAA en Apache 2.1/2.2

7.4.1. Control de acceso basado en el ordenador principal

7.4.2. Autentificación: check_user_id

7.4.3. Búsqueda de contraseña

7.4.4. Autorización

7.5. Lógica AAA

7.5.1. Autentificación y requisito

7.5.2. Denegación de acceso

7.5.3. Métodos de autentificación

7.6. Escribir módulos AAA

7.6.1. Proveedor de autentificación basic

7.6.2. Función de autorización

7.6.3. Configuración

7.6.4. Proveedores de autentificación basic y digest

7.7. Ejecución de un esquema login a medida

7.7.1. Gestión de sesión con SQL

7.7.2. Trabajando sin diálogos de autentificación del navegador

7.8. Resumen



8. Módulos de filtro

8.1. Filtros de entrada y salida

8.2. Filtros de contenido, protocolo y conexión

Protocolo

Cabeceros y entidades

Bucket metadatos

8.3. Anatomía de un filtro

8.3.1. Función de rellamada

8.3.2. Canalización

8.4. API de filtros y objetos

8.4.1. Filtros de salida

8.4.2. Filtros de entrada

8.5. Objetos de filtro

8.6. Filtros E/S

8.7. Filtrado inteligente en Apache 2.2

8.7.1. Preproceso y postproceso

8.7.2. mod_filter

8.7.3. Autoconfiguración de filtros

Hook insert_filter

Configuración usando variables de entorno y notas

8.7.4. Manejo de protocolo

8.8. Ejemplo: filtrado de texto mediante la manipulación directade los buckets

8.8.1. Funciones del bucket

8.8.2. El filtro

8.9. Parseo complejo

8.10. Filtrado a través de un parseador existente

8.11. Filtro E/S a modo stdio

Advertencia

8.12. Filtros de entrada y API de solicitud

8.12.1. Mode

8.12.2. Block

8.12.3. readbytes

8.12.4. Ejemplo de filtro de entrada

8.13. Resumen



9. Configuración para módulos

9.1. Fundamentos de configuración

Configuración principal

Host virtual

Directorio

htaccess

9.2. Estructuras de datos de configuración

9.3. Configuración de un módulo

9.3.1. Configuración de módulos

9.3.2. Configuración de servidor y de directorio

¡Precaución!

9.4. Ejecución de directrices de configuración

9.4.1. Funciones de configuración

9.4.2. Ejemplo

9.4.3. Datos de usuario en las funciones de configuración

9.4.4. Funciones de configuración preempaquetadas

9.4.5. Ámbito de la configuración

9.4.6. Configuración de tipos de funciones

AP_INIT_FLAG

AP_INIT_ITERATE

AP_INIT_ITERATE2

AP_INIT_RAW_ARGS

9.5. La jerarquía de configuración

9.6. El contexto en las funciones de configuración

9.6.1. Comprobación de contexto

9.7. Contenedores de configuración a medida

9.8. Métodos de configuración alternativos

9.9. Resumen



10. Ampliación de la API

10.1. Implementación de nuevas funciones en Apache

10.1.1. Funciones de exportación

10.1.2. Funciones opcionales

Implementar las funciones

Uso de las funciones

10.2. Hooks, y hooks opcionales

10.2.1. Una visión más detallada de los hooks

10.2.2. Orden de ejecución

10.2.3. Ejemplo de hook opcional: mod_authz_dbd

Exportar un hook opcional

10.3. Proveedor API

10.3.1. Implementación

10.3.2. Implementación de un proveedor

10.4. Suministrar un servicio

10.4.1. Ejemplo: mod_dbd

Precaución

10.4.2 Implementación de reslist

10.5. Constructores API de plataforma cruzada

10.5.1. Uso de directrices de preprocesador

10.5.2. Declaración del módulo API

10.6. Resumen



11. Espacio de trabajo de la base de datos de Apache

11.1. La necesidad de un nuevo espacio de trabajo

11.1.1. Apache 1.x/2.0 versus Apache 2.2

11.1.2. Connection pooling

11.1.2.1. Modelo CGI sencillo

11.1.2.2. Módelo LAMP clásico

11.1.2.3. Ventajas de Apache 2

11.2 Arquitectura DBD

11.3. API apr_dbd

11.3.1. Operaciones con bases de datos

11.3.1.1. Sentencias SQL, sucesión de formatos, tipos de datosy etiquetas

11.3.1.2. Conjunto de resultados (cursores)

11.3.1.3. Transacciones

11.3.2. Funciones API

11.4. API ap_dbd

11.5. Un ejemplo de módulo de aplicación: mod_authn_dbd

11.6. Desarrollo de un nuevo driver DBD

11.6.1. Archivo de cabecera apr_dbd_internal.h

11.6.2. Exportar un driver

11.6.3. Las funciones del driver

11.7. Resumen



12. Depuración de módulos

12.1. Registro para la depuración

12.1.1. El registro de errores

12.1.2. Depuración

Asistencia de depuracíon para los administradores de sistemas

12.2. Ejecución de Apache bajo un programa de depuración

12.2.1. Puesta en marcha del servidor y depuración

12.2.2. Depuración y MPM

12.2.3. Localización de un fallo

12.2.4. Depuración de Core Dump

12.3. Hooks y módulos de finalidad especial

12.3.1. Módulos estándar

12.3.1.1. mod_info

12.3.1.2. mod_status

12.3.1.3. Marcador

12.3.2. Módulo de excepción fatal

12.3.2.1. mod_backtrace

12.3.2.2. mod_whatkilledus

12.3.3. Módulos para tratar un funcionamiento anómalo

12.3.3.1. mod_backdoor

12.3.3.2. Monitor de hook

12.4. Depuración de filtros

12.4.1. mod_diagnostics

12.4.1.1. Ejemplo: intervalos extraños y conexiones rotasen algunos navegadores

12.4.1.2. Ejemplo: error poco claro en una biblioteca a terceros

12.5 Resumen



Apéndice A. Licencia Apache

Estipulaciones para el uso, reproducción y distribución

Apéndice: Cómo aplicar la licencia Apache a su trabajo



Apéndice B. Acuerdos de licencia de contribución

CLA Individual

CLA Corporativo



Apéndice C. Protocolo de transferencia de hipertextos: HTTP/1.1

Estatus de este memorando

Aviso de Copyright

Resumen

1. Introducción

1.1. Finalidad

1.2. Requisitos

1.3. Terminología

1.4. Operación global

2. Convenciones de notación y gramática genérica

2.1. Razonamiento BNF

2.2. Normas básicas

3. Parámetros de protocolo

3.1. Versión HTTP

3.2. Identificadores uniformes de recursos

3.2.1. Sintaxis general

3.2.2. http URL

3.2.3. Comparación de URI

3.3. Formatos fecha/tiempo

3.3.1. Fecha completa

3.3.2. Segundos delta

3.4. Conjunto de caracteres

3.4.1. Missing charset

3.5. Codificación de contenido

3.6. Codificación de transferencia

3.6.1. Codificación de transferencia fragmentada

3.7. Tipos de medios

3.7.1. Canonicalización y textos por defecto

3.7.2. Tipos multiparte

3.8. Símbolos de producción

3.9. Valores de calidad

3.10. Etiquetas de idioma

3.11. Etiquetas de entidad

3.12. Unidades de campo

4. Mensaje HTTP

4.1. Tipos de mensajes

4.2. Cabeceras del mensaje

4.3. Cuerpo del mensaje

4.4. Longitud del mensaje

4.5. Campos de cabecera generales

5. Petición

5.1. Línea de petición

5.1.2. URI de petición

5.2. El recurso identificado por una petición

5.3. Campos de cabecera de petición

6. Respuesta

6.1. Línea de estatus

6.1.1. Código de estatus y frase explicativa

6.2. Campos de cabecera de la respuesta

7. Entidad

7.1. Campos de cabecera de la entidad

7.2. Cuerpo de la entidad

7.2.1. Tipo

7.2.2. Extensión de la entidad

8. Conexiones

8.1. Conexiones persistentes

8.1.1. Finalidad

8.1.2. Operación global

8.1.3. Servidores proxy

8.1.4. Consideraciones prácticas

8.2. Requisitos para la transmisión de un mensaje

8.2.1. Conexiones persistentes y control de flujo

8.2.2. Conexiones de monitorización para los mensajesde estatus de error

8.2.3. Uso de un estatus 100 (Continuar)

8.2.4. Comportamiento del cliente si un servidor cierrauna conexión prematuramente

9. Definiciones de método

9.1. Métodos seguros e idempotent

9.1.1. Métodos seguros

9.1.2. Métodos idempotentes

9.2. Options

9.3. Get

9.4. Head

9.5. POST

9.6. PUT

9.7. DELETE

9.8. TRACE

9.9. CONNECT

10. Definiciones del código de estatus

10.1. Informativos 1xx

10.1.1. 100 Continuar

10.1.2. 101 Cambio de protocolos

10.2. Éxito 2xx

10.2.1. 200 OK

10.2.2. 201 Creado

10.2.3. 202 Aceptado

10.2.4. 203 Información no autorizada

10.2.5. 204 Sin contenido

10.2.6. 205 Reestablecimiento del contenido

10.2.7. 206 Contenido Parcial

10.3. Redireccionamiento 3xx

10.3.1. 300 Elecciones múltiples

10.3.2. 301 Movido permanentemente

10.3.3. 302 Encontrado

10.3.4. 303 Véanse otros

10.3.5. 304 Sin modificar

10.3.6. 305 Use proxy

10.3.7. 306 No utilizado

10.3.8. 307 Redireccionamiento temporal

10.4. Error de cliente 4xx

10.4.1. 400 Respuesta errónea

10.4.2. 401 Sin autorización

10.4.3. 402 Requerimiento de pago

10.4.4. 403 Prohibido

10.4.5. 404 No encontrado

10.4.6. 405 Método no permitido

10.4.7. 406 No aceptable

10.4.8. 407 Autentificación de proxy requerida

10.4.9. 408 Tiempo de espera de la petición

10.4.10. 409 Conflicto

10.4.11. 410 Ido

10.4.12. 411 Longitud requerida

10.4.13. 412 Fallo de condición previa

10.4.14. 413 Entidad de petición demasiado larga

10.4.15. 414 URI de petición demasiado largo

10.4.16. 415 Tipo de medio no aceptado

10.4.17. 416 Campo solicitado no satisficible

10.4.18. 417 Fallo de expectativa

10.5. Error de servidor 5xx

10.5.1. 500 Error interno del servidor

10.5.2. 501 No implementado

10.5.3. 502 Pasarela errónea

10.5.4. 503 Servicio no disponible

10.5.5. 504 Tiempo de espera de la pasarela

10.5.6. 505 Versión HTTP no aceptada

11. Autentificación de acceso

12. Negociación de contenido

12.1. Negociación server-driven

12.2. Negociación agent-driven

12.3. Negociación transparente

13. Cacheo en HTTP

13.1.1. Corrección de caché

13.1.2. Advertencias

13.1.3. Mecanismos de control de caché

13.1.4. Advertencias de agente de usuario explícitas

13.1.5. Excepciones a las normas y advertencias

13.1.6. Comportamiento controlado por el cliente

13.2 .Modelo de vencimiento

13.2.1. Vencimiento especificado por el servidor

13.2.2. Vencimiento heurítico

13.2.3. Cálculo de edad

13.2.4. Cálculos de vencimiento

13.2.5. Eliminar ambigüedad a los valores de vencimiento

13.2.6. Eliminar ambigüedad de las respuestas múltiples

13.3. Modelo de validación

13.3.1. Fechas modificadas por última vez

13.3.2. Validadores de caché de etiqueta de entrada

13.3.3. Validadores débiles y fuertes

13.3.4. Normas sobre cuándo usar las etiquetas de entidady las fechas de Última-Modificación

13.3.5. Condicionales sin validar

13.4. Cacheabilidad de la respuesta

13.5. Construcción de respuestas desde los cachés

13.5.1. Cabeceras end-to-end y hop-by-hop

13.5.2. Cabeceras no modificables

13.5.3. Combinación de cabeceras

13.5.4. Combinación de campos de bytes

13.6. Cacheo de respuestas negociadas

13.7. Cachés compartidos y sin compartir

13.8. Errores o caché de respuestas incompleto

13.9. Efectos secundarios de GET y HEAD

13.10. Invalidación tras las actualizaciones o las eliminaciones

13.11. Obligación write-through

13.12. Sustitución de caché

13.13. Historiales

14. Definiciones del campo de cabecera

14.1. Aceptar

14.2. Aceptar-Charset

14.3. Aceptar-Codificación

14.4. Aceptar-Lenguage

14.5. Aceptar-Campos

14.6. Edad

14.7. Permitir

14.8. Autorización

14.9. Caché-Control

14.9.1. Qué es cacheable

14.9.2. Qué deben almacenar los cachés

14.9.3. Modificaciones del mecanismo de vencimiento básico

14.9.4. Revalidación de caché y controles de recarga

14.9.5. Directriz no-transform

14.9.6. Extensiones de control de caché

14.10. Conexión

14.11. Contenido-Codificación

14.12. Contenido-Lenguaje

14.13. Contenido-Longitud

14.14 Contenido-Localización

14.15. Entidad-MD5

14.16. Contenido-Campo

14.17. Contenido-Tipo

14.18. Fecha

14.18.1. Operación de servidor origen sin reloj

14.19. ETag

14.20 Expectativa

14.21. Vencimiento

14.22. Desde

14.23. Host

14.24. Si-Ajusta

14.25. If-Modified-Since

14.26. Si-No-Ajusta

14.27. Si-Campo

14.28. Si-Sin-Modificar-Desde

14.29. Última-Modificación

14.30. Localización

14.31. Max-Forwards

14.32. Pragma

14.33. Proxy-Autentificación

14.34. Proxy-Autorización

14.35. Campo

14.35.1. Campo de bytes

14.35.2. Peticiones de recuperación de campo

14.36. Referer

14.37. Reintentar-Después

14.38. Servidor

14.39. TE

14.40. Trailer

14.41. Transfer-Encoding

14.42. Actualización

14.43. Usuario-Agente

14.44. Variar

14.45. Via

14.46. Advertencia

14.47. WWW-Autentificación

15. Cuestiones de seguridad

15.1. Información personal

15.1.1. Abuso de la información de registro del servidor

15.1.2. Transferencia de información confidencial

15.1.3. Codificación de información confidencial en los URI

15.1.4. Asuntos de privacidad relacionados con las cabecerasAceptar

15.2. Ataques basados en los nombres de archivo y de ruta

15.3. DNS spoofing

15.4. Cabeceras Localización y spoofing

15.5. Cuestiones de Contenido-Disposición

15.6. Credenciales de autentificación y clientes holgazanes

15.7. Proxies y cacheo

15.7.1. Denegación de ataques de servicio en los proxies

16. Agradecimientos

17. Apéndices

17.1. Tipos de medios de Internet mensaje/http y aplicación/http

17.2. Tipos de medio de Internet multiparte/campo de bytes

17.3. Aplicaciones tolerantes

17.4. Diferencias entre las entidades HTTP y las entidades RFC 2045

17.4.1. Versión MIME

17.4.2. Conversión a una forma canónica

17.4.3. Conversión de formatos de fecha

17.4.4. Introducción de Contenido-Codificación

17.4.5. No Contenido-Transferencia-Codificación

17.4.6. Introducción de Transferencia-Codificación

17.4.7. MHTML y limitaciones en la longitud de línea

17.5. Características adicionales

17.5.1. Contenido-Disposición

17.6. Compatibilidad con versiones anteriores

17.6.1. Cambios desde HTTP/1.0

17.6.2. Compatibilidad con las conexiones HTTP/1.0 persistentes

17.6.3. Cambios desde RFC 2068

18. Índice

19. Declaración completa de copyright

Reconocimiento



Índice alfabético

El servidor Web Apache es, según numerosos estudios, el principal servidor de la Web desde hace diez años. Respaldado por una comunidad de desarrollo brillante, se sustenta en un amplio número de personas y organizaciones, desde gigantes de la talla de IBM hasta consultores particulares.



Transparencia y diversidad son las principales características de Apache. El código fuente es totalmente abierto. Su arquitectura modular, construida sobre un pequeño núcleo, se adapta a las necesidades específicas de cada usuario. El principal propósito de esta obra, organizada en doce capítulos y tres exhaustivos apéndices, es servir de guía a los desarrolladores que trabajen con Apache. Los comentarios y los ejemplos que presentan el manual están relacionados con el desarrollo de C, aunque la arquitectura y la API son compartidas por importantes entornos de script como mod_perl y mod_python.

Artículos relacionados

  • PROGRAMACIÓN DE MICROCONTROLADORES ARM DE 32 BITS EN C S CON RASPBERRY
    MIGUEL LUNA, RENE
    Este libro ofrece una formación práctica y rigurosa para aprender a desarrollar firmware profesional en lenguaje C utilizando la Raspberry Pi Pico W y el microcontrolador RP2040, una de las plataformas ARM de 32 bits más versátiles y accesibles del mercado.A lo largo de la obra, el lector descubre los fundamentos de la arquitectura ARM Cortex-M0+, el manejo directo de registros...

    24,90 €

  • ACCESIBILIDAD DIGITAL. CURSO PRÁCTICO
    FERNÁNDEZ CASADO, PABLO ENRIQUE
    Este libro constituye una guía actualizada sobre la accesibilidad digital, orientada tanto a la comprensión de la nueva Ley EAA como a su aplicación práctica en entornos reales. A lo largo de sus capítulos, el lector adquiere una visión global de la accesibilidad web y documental, entendida como un requisito técnico, legal y ético imprescindible para garantizar el acceso univer...

    29,90 €

  • INFORMÁTICA E INTERNET BÁSICO PARA MAYORES
    MONTEPINAR, GRUPO
    Este libro es una guía práctica y cercana pensada especialmente para personas mayores que desean aprender a utilizar el ordenador y el teléfono móvil con tranquilidad y confianza. Explicado paso a paso y con un lenguaje claro, permite adquirir las competencias digitales necesarias para desenvolverse en la vida cotidiana. La obra está centrada especialmente en Windows 11 y el pa...

    19,90 €

  • HACIA UN INTERNET MÁS LIBRE
    JORGE SCHNURA
    ¿Y si pudieras ser el verdadero dueño de tu yo digital?En un mundo en el que unos pocos gigantes tecnológicos deciden qué vemos, qué pensamos y qué somos en línea, este libro propone una revolución: la Web 3.0. A través de un viaje apasionante que une historia, tecnología y crítica social, el autor desenmascara los mecanismos de control de la Internet actual y muestra cómo la t...

    23,95 €

  • FACEBOOK PARA MAYORES
    MARTOS RUBIO, ANA
    Facebook es la red social más popular de Internet. En un mundo dinámico, supone toda una evolución social que cuenta con cientos de millones de usuarios por su sencillez de uso y por su capacidad de llegar a cualquier lugar o persona. Si usted se encuentra en esa edad en la que, después de haber disfrutado de muchas cosas, no quiere perderse nada del mundo actual, este libro ...

    15,00 €

  • TWITTER PARA MAYORES
    MARTOS RUBIO, ANA
    Twitter no es un misterio ni un secreto para iniciados. En un mundo dinámico, supone toda una evolución social que cuenta con cientos de millones de usuarios por su sencillez de uso y por su capacidad de llegar instantáneamente a cualquier punto y persona. Si usted se encuentra en esa edad en la que, después de haber disfrutado de muchas cosas, no quiere perderse nada del mund...

    15,00 €