Nosotros en el Distrito Binario nos estamos volviendo intensivos en Go. En dos d铆as, puede aprender a comprender la ideolog铆a y el interior de Go, escribir c贸digo limpio y comprobable. Pero este es el primer paso, y luego, practicar, practicar, practicar: leer el c贸digo de otra persona, escribir y editar el suyo.
El c贸digo abierto es ideal para esto:
- El c贸digo abierto aumenta la visibilidad. Puede estudiar de forma no selectiva la fuente.
- El c贸digo abierto ofrece un incentivo para escribir c贸digo lo m谩s limpio posible y documentar la l贸gica.
- Contribuir al movimiento de c贸digo abierto mejora el karma.

Junto con Sergey
Tolsi, un graduado de nuestro
curso Go, hicimos una lista de proyectos de c贸digo abierto de varios niveles y orientaciones que son adecuados para aprender a escribir un buen c贸digo y al mismo tiempo hacer del mundo un lugar mejor.
Estrategia
Tolsi :
鈥淪i desea utilizar el c贸digo abierto para la capacitaci贸n, primero decida sobre un 谩rea espec铆fica de trabajo y establezca un objetivo, por ejemplo, hacer un sitio web o un juego, alg煤n tipo de servicio, y luego encuentre un proyecto similar o un marco con ejemplos. Por ejemplo, trabajo en el campo de las criptomonedas y descubr铆 que est谩n escribiendo en Go una implementaci贸n de la red Lightning para acelerar las transferencias en la red Bitcoin y el nodo m谩s estable para Ethereum es geth ".
1. Docker
Comencemos con uno de los proyectos m谩s complejos y voluminosos conocidos m谩s all谩 de la Comunidad Go. Desde 2013,
Docker se distribuye libremente bajo la licencia Apache 2.0 y es un sistema para crear m谩quinas virtuales aisladas con cualquier entorno necesario para probar aplicaciones. Su componente clave,
libcontainer, es el est谩ndar para este tipo de sistema. La mejor implementaci贸n del "sandbox", por ejemplo, no se encuentra.
2. Kubernetes
Otro proyecto interesante, que apareci贸 a mediados de 2014, est谩 estrechamente relacionado con Docker:
Kubernetes , software para la gesti贸n grupal de contenedores en una gran flota de dispositivos. Es posible que ya hayas tratado con 茅l, pero 驴has mirado bajo el cap贸 de este proyecto?
Si estudia Go, vale la pena hacerlo solo porque Kubernetes fue escrito por programadores de Google, y entre los contribuyentes del proyecto hay especialistas de RedHat, IBM y Microsoft. El c贸digo base de Kubernetes se proporciona con una buena
gu铆a para colaboradores de Kubernetes , y puede chatear con el equipo de desarrollo en Slack durante
las sesiones regulares de preguntas y respuestas .
3. Sincronizaci贸n
Syncthing es un proyecto bien dise帽ado sin problemas t茅cnicos notables y errores cr铆ticos, creado teniendo en cuenta las pr谩cticas de
Effective Go .
Esta implementaci贸n de un sistema de intercambio de archivos distribuido como BitTorrent Sync se basa en el Protocolo de intercambio de bloques (BEP) de c贸digo abierto.
En comparaci贸n con Kubernetes, Syncthing tiene una arquitectura simple que consta de solo tres capas principales. El c贸digo del programa corresponde a la biblioteca Go est谩ndar y lo combina con LevelDB y varias otras bibliotecas. Se utilizan para cifrar conexiones de red, calcular hashes y almacenar datos. Comprender su c贸digo base ayudar谩 a la
gu铆a desde el sitio oficial y un
foro animado .
4. G3N
驴Qu茅 pasa con el motor 3D creado por programadores para programadores? Este t铆tulo lo posee
el G3N , y tambi茅n est谩 completamente escrito en Go. El motor es adecuado para juegos, pero se posiciona como una herramienta para escribir aplicaciones interactivas.
5. GoLearn
El aprendizaje autom谩tico y Python son casi sin贸nimos, pero Go tambi茅n es 煤til para los cient铆ficos de datos.
La biblioteca de aprendizaje autom谩tico simple y flexible de
GoLearn est谩 escrita en este idioma. Utiliza el shell
Gonum BLAN y admite algoritmos b谩sicos de aprendizaje autom谩tico, que incluyen: m茅todo de vector de soporte, regresi贸n lineal, redes neuronales, bosque aleatorio, 谩rboles de decisi贸n y un ingenuo clasificador bayesiano.
6. Gorgonia
La soluci贸n de aprendizaje autom谩tico de bajo nivel de Go,
Gorgonia , tambi茅n es notable. Esta biblioteca, que recuerda el concepto de
TensorFlow , utiliza el concepto de representar ecuaciones en un gr谩fico y est谩 empaquetado en un solo archivo binario.
7. acra
Estudiar la base de c贸digo de
acra , una herramienta de cifrado y almacenamiento seguro de bases de datos dise帽ada para microservicios en plataformas m贸viles y en la web, puede ser una experiencia interesante. Esta es una oportunidad para aprender c贸digo verdaderamente seguro y aprender de la experiencia c贸mo detectar y proteger contra fugas de datos, integrar la criptograf铆a en un proyecto.
Adem谩s, la biblioteca del cliente
AcraWriter est谩 disponible no solo en Go, sino tambi茅n en Ruby, Python, NodeJS, iOS (Objective-C / Swift), Android Java y
PHP : puede comparar implementaciones y aprender algunas de las sutilezas del software de portabilidad en la pr谩ctica.
La 煤ltima versi贸n de la documentaci贸n y tutoriales de Acra est谩 disponible en el
servidor oficial de
Cossack Labs .
8. ConnectorDB
ConnectorDB es adecuado si no solo desea aprender el c贸digo de otra persona, sino tambi茅n hacer algo 煤til para usted personalmente. Esta es una plataforma de c贸digo abierto para desplegar su propio segmento de Internet de las cosas en funci贸n de los dispositivos que ya est谩n disponibles. Agrega datos de computadoras, tel茅fonos inteligentes de navegadores y los procesa.
Una vez que comprenda el c贸digo, puede escribir nuevos m贸dulos y conectar casi cualquier dispositivo a ConnectorDB, configurar el monitoreo de su propia vida, comenzando por monitorear la actividad f铆sica y terminando contando la productividad y evaluando el estado de 谩nimo.
Y tambi茅n ...
Un lugar ideal para comenzar su b煤squeda es
la lista Awesome Go , donde la comunidad recopila enlaces a las mejores bibliotecas y aplicaciones de c贸digo abierto en Go. Adem谩s, el Wiki es 煤til para repositorios de idiomas. Tiene listas de
art铆culos ,
cursos y
libros potencialmente 煤tiles .
Al analizar el c贸digo del proyecto y contribuir, puede desarrollar las habilidades adquiridas y actualizar el conocimiento. Existe la posibilidad de involucrarse en el movimiento de c贸digo abierto, y solo hay una forma de averiguar qu茅 tan profundo y largo. Y para aquellos que van a comenzar con lo b谩sico y desean unirse de inmediato al desarrollo, el 8 y 9 de diciembre se llevar谩 a cabo una
pr谩ctica programaci贸n de intensidad en Go en el Distrito Binario.