La arquitectura de las Aplicaciones de Código Abierto: 4 Libros Completos Gratis

  • Autor de la entrada:
  • Categoría de la entrada:Programación
  • Tiempo de lectura:13 minutos de lectura

Los arquitectos observan miles de edificios durante su formación y estudian las críticas de esos edificios escritas por maestros. Al contrario, la mayoría de los desarrolladores de software sólo llegan a conocer bien un puñado de programas grandes (por lo general, programas que ellos mismos escribieron).

Nunca estudian los grandes programas de la historia. Como resultado, repiten los errores de los demás en lugar de basarse en los éxitos de los demás.

El objetivo de los autores de estos libros, es precisamente cambiar eso. En ellos, los programadores de cuatro docenas de aplicaciones de código abierto explican cómo está estructurado su software y por qué.

¿Cuáles son los componentes principales de cada programa? ¿Cómo interactúan? ¿Qué aprendieron sus constructores durante su desarrollo?

Al responder a estas preguntas, los colaboradores de estos libros brindan información única sobre cómo piensan.

Si eres un desarrollador junior y deseas saber cómo piensan tus compañeros más experimentados, estos libros son el lugar perfecto para comenzar, a pesar de que pueda ser un contenido algo desactualizado.

Si eres un desarrollador intermedio o senior y desea ver cómo sus compañeros han resuelto problemas complejos de diseño, estos libros también pueden ayudarte.


El contenido se encuentra en inglés, en principio, es bastante entendible mediante la traducción automática; aunque pueda haber alguna parte un poco extraterrestre. Lo que yo he revisado, me ha parecido bastante entendible.

El contenido de estos libros se encuentra bajo licencia Creative Commons Attribution 3.0 Unported, y se encuentran disponible para su compra en inglés tanto en papel como en PDF.

Lo más importante, es, que cualquier beneficio derivado de su venta será donado a Amnistía Internacional. Por ello, está página no contendrá anuncios, ¡Qué lo disfruten! 🤗


A continuación, un índice completo del contenido de los cuatros libros:

Introducción: La arquitectura de las Aplicaciones de Código Abierto I

La carpintería es un oficio exigente y las personas pueden pasar toda su vida aprendiendo cómo hacerlo bien. Pero la carpintería no es arquitectura: si nos alejamos de los tableros de madera y las juntas de inglete, los edificios en su conjunto deben diseñarse, y hacer eso es tanto un arte como un oficio o una ciencia.

La programación también es un oficio exigente, y las personas pueden pasar toda su vida aprendiendo cómo hacerlo bien. Pero la programación no es una arquitectura de software. Muchos programadores pasan años pensando (o luchando con) problemas de diseño más importantes:

¿Debería ser extensible esta aplicación? Si es así, ¿debería hacerse proporcionando una interfaz de scripting, a través de algún tipo de mecanismo de complemento, o de alguna otra manera? ¿Qué debería hacer el cliente, qué debería dejarse en manos del servidor? ¿Es «cliente-servidor» una forma útil de pensar en esta aplicación?

No se trata de cuestiones de programación, como tampoco de dónde poner las escaleras es una cuestión de carpintería.

La arquitectura de construcción y la arquitectura de software tienen mucho en común, pero hay una diferencia crucial. Mientras que los arquitectos estudian miles de edificios en su formación y durante sus carreras, la mayoría de los desarrolladores de software solo llegan a conocer bien un puñado de programas grandes.

Y la mayoría de las veces, esos son programas que ellos mismos escribieron. Nunca llegan a ver los grandes programas de la historia ni a leer críticas de los diseños de esos programas escritas por practicantes experimentados. Como resultado, repiten los errores de los demás en lugar de basarse en los éxitos de los demás.

Este libro es nuestro intento de cambiar eso. Cada capítulo describe la arquitectura de una aplicación de código abierto: cómo está estructurada, cómo interactúan sus partes, por qué está construida de esa manera y qué lecciones se han aprendido que se pueden aplicar a otros grandes problemas de diseño.

Las descripciones están escritas por las personas que mejor conocen el software, personas con años o décadas de experiencia en el diseño y rediseño de aplicaciones complejas. Las aplicaciones en sí varían en escala, desde simples programas de dibujo y hojas de cálculo basadas en web hasta conjuntos de herramientas de compilación y paquetes de visualización de varios millones de líneas.

Algunos tienen solo unos pocos años, mientras que otros se acercan a su trigésimo aniversario. Lo que tienen en común es que sus creadores han pensado mucho en su diseño y están dispuestos a compartir esos pensamientos contigo.

Libro: La arquitectura de las Aplicaciones de Código Abierto I

IntroducciónAmy Brown y Greg Wilson
1.AsteriscoRussell Bryant
2.AudaciaJames Crook
3.El caparazón de Bourne-AgainChet Ramey
4.Berkeley DBMargo Seltzer y Keith Bostic
5.CMakeBill Hoffman y Kenneth Martin
6.EclipseKim Moir
7.GrafitoChris Davis
8.El sistema de archivos distribuido de HadoopRobert Chansler , Hairong Kuang , Sanjay Radia , Konstantin Shvachko y Suresh Srinivas
9.Integración continuaC. Titus Brown y Rosangela Canino-Koning
10.JitsiEmil Ivov
11.LLVMChris Lattner
12.MercurialDirkjan Ochtman
13.El ecosistema NoSQLAdam Marcus
14.Embalaje de PythonTarek Ziadé
15.Riak y Erlang / OTPFrancesco Cesarini , Andy Gross y Justin Sheehy
dieciséis.Selenium WebDriverSimon Stewart
17.Enviar correoEric Allman
18.SnowFlockRoy Bryant y Andrés Lagar-Cavilla
19.SocialCalcAudrey Tang
20.TelepatíaDanielle Madeley
21.Mil pasecAlan Laudicina y Aaron Mavrinac
22.VioletaCay Horstmann
23.VisTrailsJuliana Freire , David Koop , Emanuele Santos , Carlos Scheidegger , Claudio Silva y Huy T. Vo
24.VTKBerk Geveci y Will Schroeder
25.Batalla por WesnothRichard Shimooka y David White
Bibliografía

Introducción: La arquitectura de las Aplicaciones de Código Abierto II

En la introducción al Volumen II de esta serie, escribimos:

La arquitectura de construcción y la arquitectura de software tienen mucho en común, pero hay una diferencia crucial. Mientras que los arquitectos estudian miles de edificios en su formación y durante sus carreras, la mayoría de los desarrolladores de software solo llegan a conocer bien un puñado de programas grandes … Como resultado, repiten los errores de los demás en lugar de aprovechar los éxitos de los demás … intente cambiar eso.

En el año transcurrido desde que apareció ese libro, más de dos docenas de personas han trabajado duro para crear la secuela que tienes en tus manos. Lo han hecho porque creen, como nosotros, que el diseño de software puede y debe enseñarse con el ejemplo, que la mejor manera de aprender a pensar como un experto es estudiar cómo piensan los expertos.

Desde servidores web y compiladores a través de sistemas de administración de registros médicos hasta la infraestructura que usa Mozilla para sacar a Firefox por la puerta, hay lecciones a nuestro alrededor. Esperamos que al recopilar algunos de ellos en este libro, podamos ayudarlo a convertirse en un mejor desarrollador.

  • Amy Brown y Greg Wilson

Libro: La arquitectura de las Aplicaciones de Código Abierto II

IntroducciónAmy Brown y Greg Wilson
1.Arquitectura web escalable y sistemas distribuidosKate Matsudaira
2.Ingeniería de lanzamiento de FirefoxChris AtLee , Lukas Blakk , John O’Duinn y Armen Zambrano Gasparnian
3.FreeRTOSChristopher Svec
4.GDBStan Shebs
5.El compilador de Glasgow HaskellSimon Marlow y Simon Peyton-Jones
6.GitSusan Potter
7.GPSDEric Raymond
8.Dynamic Language Runtime y Iron LanguagesJeff Hardy
9.ITKLuis Ibáñez y Brad King
10.GNU MailmanBarry Varsovia
11.matplotlibJohn Hunter y Michael Droettboom
12.MediaWikiSumana Harihareswara y Guillaume Paumier
13.MoodleTim Hunt
14.nginxAndrey Alexeev
15.MPI abiertoJeff Squyres
dieciséis.OSCARJennifer Ruttan
17.Processing.jsMike Kamermans
18.MarionetaLuke Kanies
19.PyPyBenjamin Peterson
20.SQLAlchemyMichael Bayer
21.RetorcidoJessica McKellar
22.YesodMichael Snoyman
23.YoctoElizabeth Flanagan
24.ZeroMQMartín Sústrik
Bibliografía

Introducción: El rendimiento de las Aplicaciones de Código Abierto

Es un lugar común decir que el hardware de las computadoras es ahora tan rápido que la mayoría de los desarrolladores no tienen que preocuparse por el rendimiento. De hecho, Douglas Crockford se negó a escribir un capítulo para este libro por esa razón:

Si tuviera que escribir un capítulo, sería sobre anti-desempeño: la mayor parte del esfuerzo invertido en la búsqueda del desempeño es en vano. No creo que eso sea lo que estás buscando.

Donald Knuth hizo lo mismo hace treinta años:

Deberíamos olvidarnos de las pequeñas eficiencias, digamos alrededor del 97% del tiempo: la optimización prematura es la raíz de todos los males.

Pero entre los dispositivos móviles con potencia y memoria limitada, y los proyectos de análisis de datos que necesitan terabytes de proceso, un número creciente de desarrolladores no necesitan para hacer su código más rápido, sus estructuras de datos más pequeños, y sus tiempos de respuesta más cortos.

Sin embargo, aunque cientos de libros de texto explican los conceptos básicos de los sistemas operativos, las redes, los gráficos por computadora y las bases de datos, pocos (si los hay) explican cómo encontrar y arreglar cosas en aplicaciones reales que son simplemente demasiado lentas.

Esta colección de casos de estudio es nuestro intento de llenar ese vacío. Cada capítulo está escrito por desarrolladores reales que han tenido que hacer que un sistema existente sea más rápido o que han tenido que diseñar algo para que sea rápido en primer lugar.

Cubren muchos tipos diferentes de software y objetivos de rendimiento; lo que tienen en común es una comprensión detallada de lo que sucede realmente, cuándo y cómo encajan las diferentes partes de las aplicaciones grandes.

Nuestra esperanza es que este libro, al igual que su predecesor, La arquitectura de aplicaciones de código abierto, lo ayudará a convertirse en un mejor desarrollador al permitirle mirar por encima de los hombros de estos expertos.

  • Tavish Armstrong

Libro: El rendimiento de las aplicaciones de código abierto

IntroducciónTavish Armstrong
1Redes de alto rendimiento en ChromeIlya Grigorik
2De SocialCalc a EtherCalcAudrey Tang
3NinjaEvan Martín
4Analizar XML a la velocidad de la luzArseny Kapoulkine
5MemShrinkKyle Huey
6Aplicación de patrones de principios de optimización a herramientas de implementación y configuración de componentesDoug C. Schmidt , William R. Otte y Aniruddha Gokhale
7InfinispanManik Surtani
8TalosClint Talbert y Joel Maher
9ZotónicoArjan Scherpenisse y Marc Worrell
10Secretos del rendimiento de la red móvilBryce Howard
11DeformaciónKazu Yamamoto , Michael Snoyman y Andreas Voellmy
12Trabajando con Big Data en BioinformáticaEric McDonald y C. Titus Brown

Introducción 500 Líneas o Menos

Este es el cuarto volumen de la serie Arquitectura de aplicaciones de código abierto , y el primero en no incluir las palabras «aplicaciones de código abierto» en ninguna parte del título.

Los primeros tres volúmenes de la serie trataban de grandes problemas que los grandes programas tenían que resolver. Para un ingeniero que está al principio de su carrera, puede ser un desafío comprender y desarrollar programas que sean mucho más grandes que unos pocos miles de líneas de código, por lo que, si bien puede ser interesante leer sobre problemas importantes, también pueden ser un desafío. para aprender.

500 líneas o menos se centra en las decisiones de diseño que los programadores toman en lo pequeño cuando están construyendo algo nuevo. Los programas sobre los que leerá en este libro se escribieron desde cero para este propósito (aunque varios de ellos se inspiraron en proyectos más grandes en los que los autores habían trabajado anteriormente).

Antes de leer cada capítulo, le recomendamos que primero piense en cómo podría resolver el problema. ¿Qué consideraciones de diseño o limitaciones crees que el autor va a considerar importantes? ¿Qué abstracciones esperas ver? ¿Cómo cree que se va a descomponer el problema? Luego, al leer el capítulo, intente identificar qué le sorprendió. Esperamos que aprenda más haciendo esto que simplemente leyendo cada capítulo de principio a fin.

Escribir un programa útil en menos de 500 líneas de código fuente — sin recurrir a trucos baratos — es un ejercicio desafiante en sí mismo; escribir uno para que se lea con fines pedagógicos cuando se traduce nítidamente en un libro impreso es aún más difícil. Como tal, los editores ocasionalmente se han tomado libertades con algunos de los formatos de fuente al portarlos al libro. La fuente original de cada capítulo se puede encontrar en el codesubdirectorio de su carpeta de proyecto.

Esperamos que las experiencias de los autores de este libro le ayuden a salir de su zona de confort en su propia práctica de programación.

  • Michael DiBernardo

Libro: 500 Líneas o Menos

IntroducciónMichael DiBernardo
1Blockcode: un conjunto de herramientas de programación visualDethe Elza
2Un sistema de integración continuaMalini Das
3Agrupación por consensoDustin J. Mitchell
4Contingente: un sistema de construcción completamente dinámicoBrandon Rhodes y Daniel Rocco
5Un rastreador web con asyncio CoroutinesA. Jesse Jiryu Davis y Guido van Rossum
6Dagoba: una base de datos de gráficos en memoriaDann Toliver
7DBDB: Base de datos de camas para perrosTaavi Burns
8Un marco web basado en eventosLeo Zovic
9Un programador de Flow ShopDr. Christian Muise
10Una base de datos inspirada en la arqueologíaYoav Rubin
11Hacer sus propios filtros de imagenCate Huston
12Un intérprete de Python escrito en PythonAllison Kaptur
13Un modelador 3DErick Dransch
14Un modelo de objeto simpleCarl Friedrich Bolz
15Reconocimiento óptico de caracteres (OCR)Marina Samuel
16Un podómetro en el mundo realDessy Daskalov
17La política del mismo origenEunsuk Kang, Santiago Perez De Rosso y Daniel Jackson
18Un muestreador de rechazoJessica B. Hamrick
19Hoja de cálculo webAudrey Tang
20Análisis estáticoLeah Hanson
21Un motor de plantillasNed Batchelder
22Un servidor web simpleGreg Wilson

Fuente: AOSA BOOK


ROSEPAC

Redactor Diario Ciberninjas. Curador Digital. 🔗 Telegram 👨‍💻 Twittter 🐦 Discord 🧰