Al contribuir, acepta la LICENCIA de este repositorio.
Al contribuir, acepta respetar el Código de Conducta (traducciones / otros idiomas) presente en el repositorio.
"Un enlace para descargar fácilmente un libro" no siempre es un enlace a un libro gratuito. Por favor, contribuya solo con contenido gratuito. Asegúrese de que se ofrezca gratis. No se aceptan enlaces a páginas que requieran de direcciones de correo electrónico para la obtención de libros, pero sí damos la bienvenida a aquellos listados que así se soliciten.
No es necesario conocer Git: si encontró algo de interés que no esté ya en este repositorio, tenga el gusto de abrir una Issue con su propuesta de enlaces.
Dispone de 6 categorías. Seleccione aquel listado que crea conveniente según:
Asegúrese de seguir la guía de pautas que mostramos a continuación así como de respetar el formato Markdown de los ficheros.
GitHub Actions ejecutará pruebas para asegurarse de que las listas esten ordenadas alfabéticamente y de que se siga dicha normalización de formateo. Asegúrese de verificar que sus cambios pasen todas estas comprobaciones de calidad.
https en vez de http si ambos se refieren al mismo dominio y sirven el mismo contenido.http://example.com en lugar de http://example.com/.http://example.com/dir/ es mejor que http://example.com/dir/index.html.
http://example.com/dir/book/current/ es más asequible que http://example.com/dir/book/v1.0.0/index.html.http si fuera posible (porque aceptar excepciones puede ser complicado en dispositivos móviles).http pero el enlace aún es accesible a través de https agregando una excepción al navegador o ignorando la advertencia.et al." para acortar esa enumeración de autores.in process", tal y como se describe a continuación.archived" (en consonancia con el idioma) tal y como se describe a continuación. Use como mejor versión aquella que sea la más reciente y completa.(*se solicita* email, no requerido...)..md como extensión de fichero. Intente aprender la sintaxis Markdown. ¡Es bastante simple!###) y las subsecciones de nivel 4 (####).La idea es tener:
2 líneas vacías entre el último enlace de una sección y el título de la siguiente sección.1 línea vacía entre la cabecera y el primer enlace de una determinada sección.0 líneas en blanco entre los distintos enlaces.1 línea en blanco al final de cada fichero .md.Ejemplo:
[...]
* [Un libro increíble](http://example.com/example.html)
(línea en blanco)
(línea en blanco)
### Sección de ejemplo
(línea en blanco)
* [Otro libro fascinante](http://example.com/book.html)
* [Otro libro más](http://example.com/other.html)
Omita los espacios entre ] y (:
INCORRECTO: * [Otro libro fascinante] (http://example.com/book.html)
CORRECTO : * [Otro libro fascinante](http://example.com/book.html)
Si en el registro decide incluir al autor, emplee - (un guión rodeado de espacios simples) como separador:
INCORRECTO: * [Un libro sencillamente fabuloso](http://example.com/book.html)- John Doe
CORRECTO : * [Un libro sencillamente fabuloso](http://example.com/book.html) - John Doe
Ponga un solo espacio entre el enlace al contenido y su formato:
INCORRECTO: * [Un libro muy interesante](https://example.org/book.pdf)(PDF)
CORRECTO : * [Un libro muy interesante](https://example.org/book.pdf) (PDF)
El autor se antepone al formato:
INCORRECTO: * [Un libro muy interesante](https://example.org/book.pdf)- (PDF) Jane Roe
CORRECTO : * [Un libro muy interesante](https://example.org/book.pdf) - Jane Roe (PDF)
Múltiples formatos:
INCORRECTO: * [Otro libro interesante](http://example.com/) - John Doe (HTML)
INCORRECTO: * [Otro libro interesante](https://downloads.example.org/book.html) - John Doe (sitio de descarga)
CORRECTO : * [Otro libro interesante](http://example.com/) - John Doe (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html)
Preferimos un solo enlace por cada recurso. Tener varios enlaces cobra sentido cuando este único enlace no engloba un fácil acceso a los diferentes formatos existentes. Tenga en cuenta también que, cada enlace que agregamos crea una carga de mantenimiento, por lo que, en general, trataremos de evitarlos.
Incluya el año de publicación como parte del título de los libros más antiguos:
INCORRECTO: * [Un libro bastante especial](https://example.org/book.html) - Jane Roe - 1970
CORRECTO : * [Un libro bastante especial (1970)](https://example.org/book.html) - Jane Roe
Libros en proceso / no acabados aún:
CORRECTO : * [A punto de ser un libro fascinante](http://example.com/book2.html) - John Doe (HTML) *(:construction: en proceso)*
CORRECTO : * [Un recurso recuperado a partir de su línea de tiempo](https://web.archive.org/web/20211016123456/http://example.com/) - John Doe (HTML) *(:card_file_box: archivado)*
aa va antes de ab.one two va antes que onetwo.En cualquier caso o si por casualidad encontrase un enlace fuera de lugar, compruebe el mensaje de error que facilita nuestro linter. Le permitirá saber las líneas de código que debe intercambiar.
Si bien los conceptos básicos son relativamente simples, existe una gran diversidad entre los recursos que enumeramos. Aquí hay algunas notas sobre cómo nos ocupamos de esta diversidad.
Nuestros listados proporcionan un conjunto mínimo de metadatos: títulos, URL, autores, formato, plataformas y notas de acceso.
https) siempre son mejor opción frente a las no seguras (http) donde se ha implementado el protocolo de comunicación encriptado HTTPS.En el caso de obras traducidas, se debe acreditar también al autor original. Recomendamos usar MARC relators para dar presencia al resto de creadores diferentes al autor original, tal y como se muestra en este ejemplo:
* [Un libro traducido](http://example.com/book-es.html) - John Doe, `trl.:` Mike Traduce
donde, la anotación trl.: incluye el código MARC relator para "traductor".
Utilice comas , para separar cada elemento de la lista de autores.
Cuando sean muchas, puedes valerte de "et al." para acortar dicha lista.
No permitimos enlaces directos al creador.
En el caso de recopilaciones u obras remezcladas, el "creador" puede necesitar una descripción. Por ejemplo, los libros de "GoalKicker" o "RIP Tutorial" se acreditan como "Creado a partir de la documentación de StackOverflow" (en inglés: "Compiled from StackOverflow documentation").
No incluiremos títulos honoríficos tales como "Prof." o "Dr.".
youtu.be/xxxx)!*(cuenta Leanpub o email válido requerido)*.La primera regla para decidir en qué listado encaja un determinado recurso es ver cómo se describe a sí mismo. Si por ejemplo se retrata a sí mismo como un libro, entonces tal vez es que lo sea.
Ya que en Internet podemos encontrar una variedad infinita de recursos, no incluimos en nuestro registro:
El listado donde incluimos sitios o software de programación competitiva no es tan restrictivo. El alcance de este repositorio es determinado por la comunidad; si desea sugerir un cambio o extender el alcance, utilice los issues para registrar dicha sugerencia.
No somos tan quisquillosos con lo que consideramos como libro. A continuación, se muestran algunas propiedades que un recurso pueda encajar como libro:
Hay muchos libros que enumeramos los cuáles no poseen estos atributos; esto puede depender del contexto.
¡A veces distinguir puede ser dificultoso!
Los cursos suelen tener libros de texto asociados, que incluiríamos en nuestras listas de libros. Además, los cursos tienen conferencias, ejercicios, pruebas, apuntes u otras ayudas didácticas. Una sola conferencia o vídeo por sí solo no es un curso. Un presentación de PowerPoint tampoco puede ser catalogado como curso.
Si es posible imprimirlo y conservar su esencia, no es un Tutorial Interactivo.
.github/workflows/fpb-lint.yml)Para activar esta validación de URL, envíe un commit que incluya como mensaje de confirmación check_urls=fichero_a_comprobar:
check_urls=free-programming-books.md free-programming-books-es.md
Es posible especificar más de un fichero a comprobar. Simplemente use un espacio para separar cada entrada.
Si especifica más de un archivo, los resultados obtenidos se basan en el estado del último archivo verificado. Debe tenerlo en cuenta ya que, debido a esto, puede obtener falsos positivos al finalizar el proceso. Así que tras el envío de la Pull Request asegúrese de inspeccionar el registro de compilación haciendo clic en "Show all checks" -> "Details".