Что: e3a0d124237e80da1ec57feaefb025df3f416b1f
Когда: 2019-10-04 11:43:44+03:00
Темы: go
Начал переводить проекты на go modules и создал go.cypherpunks.ru Решил углубиться в понимание и использование Go модулей и чем дальше, тем больше мне нравится всё что они там придумали. Чем дальше, тем больше понимаешь насколько же всё продумано и эстетично красиво просто делается. Во-первых, по моему, у них прям идеальный package manager вышел. В Python до сих пор за все долгие годы существования нет ничего похожего, нельзя использовать несколько версий одной библиотеки (не говоря уже о том, чтобы это было в пределах одного модуля), никакой аутентификации и целостности пакетов. В Go всё просто, эффективно, безопасно, здорово. Во-вторых, они продумали как не просто использовать модули, но и обеспечить "modulaized" пакеты работать в более старых версиях Go прозрачно. Они не обязывают и не заставляют использовать VCS-ы: можно хоть файловую систему, можно tarball-ами релизить и подкладывать исходники. В-третьих, у них всё очень круто продумано для кэширования скачиваемых вещей (в том числе VCS-ов) и нахождения самых разных версий в общем GOPATH-е для всех проектов. Модули это тема полезная и свой проект модуляризировать безусловно стоит, но лично я не хочу релизить свои программы только как например слепок VCS-а где будут прописаны зависимости. Ибо скачав такой tarball, всё-равно нужно иметь подключение к Интернету и надежду что все зависимости будут доступны. Я хочу делать самодостаточные пакеты, где все зависимости будут предоставлены внутри. Кто не хочет использовать -- пускай, это не must-have, модули остаются вариантом. Делать такие tarball-ы получается без особых проблем: https://git.cypherpunks.ru/cgit.cgi/gogost.git/tree/makedist.sh#n12 go mod vendor команда не подходит, так как она даже тесты не будет копировать, не говоря о тьме других прилагающихся файлов. Но об этом как-то писал в ff602609469a5830b0c9be1f24d2d519dbb84561. Плюс я решил реализовать возможность делания go get на мои Go проекты. Для этого нужно, если хочется чтобы код забирался из VCS (Git) включить HTTPS Git отдачу и отдавать HTML-ки с определённым контентом на HTTP сервере. Так как у cypherpunks.ru вообще нет адресов в DNS (только MX), то использовать cypherpunks.ru namespace не выйдет. Заводить адреса и их HTTP-сервером мне очень не хочется. Поэтому решил отдельный домен для этой цели сделать и поменять namespace в своих проектах. Мне когда-то запомнилось что HTTPS Git backend поднимать очень геморройно, но оказалось что проще простого для CGI сервера. В итоге сейчас можно поставить goircd, uploader, streebog256 вот такими вот командами: go get go.cypherpunks.ru/goircd go get go.cypherpunks.ru/uploader go get go.cypherpunks.ru/gogost/cmd/streebog256
Сгенерирован: SGBlog 0.34.0