132 meneos
2707 clics
Este envío tiene varios votos negativos. Asegúrate antes de menear
Construyendo un cliente de BitTorrent completo en Go [ENG]
Un cliente de BitTorrent escrito desde cero en Go, con el protocolo muy bien explicado y el fuente comentado según va progresando el desarrollo.
|
comentarios cerrados
A ver si alguien me encuentra fuentes para rust (que compilen/funcionen con versiones actualizadas).
>multithread sería un plus
golang.org/doc/faq#goroutines
blog.golang.org/share-memory-by-communicating
golang.org/doc/codewalk/sharemem/
Hay librerias para threading que no tienen nada que envidiar al GO, lo mismo para el resto de cosas....
www.digitalocean.com/community/tutorials/how-to-build-go-executables-f
a:~/Docs/go/stuff>nvi ex.go
a:~/Docs/go/stuff>env GOOS=windows GOARCH=amd64 go build ex.go
a:~/Docs/go/stuff>file *
ex.exe: MS-DOS executable PE for MS Windows (console) Mono/.Net assembly
ex.go: ASCII Java program text
Para mí es lo único que le falta (o que no he sabido encontrar) al tema. De esto que en "pares" no te salga la IP en la info del archivo vamos.
PD: uso transmission.
El problema con los comentarios es que te puedes olvidar actualizarlos, con lo que si tienes ese código y un comentario diciendo "hago A si a es impar" y ya no sabes si el código está mal o el comentario no corresponde.
Here is why you shouldn't think very much about SOLID in Go
Repito: ¿para qué quieres mezclar churras (SOLID/POO) con merinas (Go)?
Uno crea interfaces (por regla general) si espera que su código sea reusado en algún momento. Para hacer una aplicación final sencilla, lo más probable es que no haga falta crearse abstracciones. ¿Para qué complicar el código?
Igualmente en otros casos concretos si veo necesario poner ejemplos en código. Una regular expression por poner un ejemplo muy concteto aunque es aplicable a otros casos. Depende del uso. Siempre hay que aplicar la lógica y filosofía KISS. En mi experiencia es lo que mejores resultados ha dado.
Saludos.
Sin esa IP, no se puede establecer una comunicación a través de internet.
El resto como decía depende del contexto. Un i++ dentro de un bucle puede ser nada o bien siguiente estrella como mencionas, con lo cual el sentido del comentario cambia en función de la semántica. Uno es relevante y otro no en el caso de un bucle.
Creo que en el fondo del asunto estamos de acuerdo.
Puedo hacer lo mismo con un target FreeBSD y ARM:
a:~/Docs/go/stuff>uname -s
OpenBSD
a:~/Docs/go/stuff>env GOOS=freebsd GOARCH=arm go build ex.go
a:~/Docs/go/stuff>file ex
ex: ELF 32-bit LSB executable, ARM, version 1
Intenta eso con C sin meter una suite gorda de compiladores cruzados.
Yo solo he instalado el paquete "go" en OpenBSD. Nada más, cero dependencias.
Tienes el compilador 1-9c, donde un número va a asociado a cada plataforma de CPU. Y 1-9l, el enlazador. Todos los binarios son estáticos, y claro está que crear un binario para ARM o MIPS en C de ARM está tirado. Otra cosa son rollos big/little endian, pero creo que la librería C de plan9 (u.h, libc.h) están en un nivel bastante superior en capacidad y sencillez respeto a POSIX.
De hecho la filosofía de Go está basada en la suite de plan9 y en dicho diseño, y creo que usan una concurrencia similar :). Por algo son de los misma gente ha creado C.
No es algo del torrent.