Go: модули

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 10 фев 2024, 18:08

Olej писал(а):
10 фев 2024, 18:03
2. Набрасываю себе код:
Там гораздо больше, чем требовала первоначальная задумка - там быстренько набросаны 2 собственных функции калькулятора: sum() + prod().
Чем демонстрируется возможность добавить туда обработку всего что не вздумается... :-o

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 10 фев 2024, 18:16

Olej писал(а):
10 фев 2024, 18:03
В итоге:

Код: Выделить всё

lej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/types$ olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/types$ go run math.eval.go 
? 2 + 3
2 + 3 = 5
? 2/3
2/3 = 0.6666666666666666
? (3+4)/(6-2)
(3+4)/(6-2) = 1.75
? pi
pi = 3.141592653589793
? log(11,15)
log(11,15) = 1.1293446514625658
? log(2,256)
log(2,256) = 8
? sin(0.5*pi)
sin(0.5*pi) = 1
? 2<<1
2<<1 = ошибочное выражение: cannot evaluate "2<<1": Unkown Token: token.Token(<<)
? sum( 1, 2, 3, 4)
sum( 1, 2, 3, 4) = 10
? sum(sin(pi*1/3)*2)
sum(sin(pi*1/3)*2) = 1.7320508075688772
? 

Код: Выделить всё

olej@R420:~/2024/own.BOOKs/BHV.Go.3/examples.work/types$ go run math.eval.go 
? prod(1,2,3)
prod(1,2,3) = 6
? prod(sin(pi/4) * log(2,8))
prod(sin(pi/4) * log(2,8)) = 2.1213203435596424
? 
Такой вот вещественный CLI калькулятор :-D

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 21:12

Olej писал(а):
12 мар 2023, 01:35
Выполним (с произвольным именем модуля generic — пусть он у нас просто совпадает с именем каталога):
Это всё, до сих пор, касалось только локальных описаний модулей ... не связанных с сетевыми GIT...
Olej писал(а):
12 мар 2023, 01:35

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples/generic$ go mod init generic
go: creating new go.mod: module generic
go: to add module requirements and sums:
    go mod tidy
После чего у нас появится новый файл, пока только такого содержания:

Код: Выделить всё

olej@R420:~/2023/own.BOOKs/BHV.Go.2/examples/generic$ cat go.mod
module types
go 1.20
Теперь смотрю как это работает с модулями в сетевых GIT-репозиториях + последующий импорт из них...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 21:34

Olej писал(а):
17 фев 2024, 21:12
Теперь смотрю как это работает с модулями в сетевых GIT-репозиториях + последующий импорт из них...
Возьму любой Go проект который отрабатывался ранее ... вот этот - примеры CLI вывода: Go: обработка текстовой информации
Сделал копии в каталог (для экспериментов):

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ pwd
/home/olej/2024/Go/git/inout
И в нём:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ go mod init https://github.com/olej-tsil-51/inout
go: malformed module path "https://github.com/olej-tsil-51/inout": double slash

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ go mod init github.com/olej-tsil-51/inout
go: creating new go.mod: module github.com/olej-tsil-51/inout
go: to add module requirements and sums:
    go mod tidy

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ cat go.mod 
module github.com/olej-tsil-51/inout

go 1.22.0

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ go mod tidy

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ cat go.mod 
module github.com/olej-tsil-51/inout

go 1.22.0
Как видите ни в чём не отличается...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:14

Olej писал(а):
17 фев 2024, 21:34
Как видите ни в чём не отличается...
Можно даже подумать (помечтать :lol: ), что это каким-то образом создаст проект в GitHub :roll:
Как бы не так :!: :oops:
Это просто пустая заглушка...
Всё для репозитория вы должны создать вручную (иначе это просто тупая ссылка :!: )
Снимок экрана от 2024-02-17 19-18-29.png
Снимок экрана от 2024-02-17 19-18-29.png (165.46 КБ) 166 просмотров
Я, к сожалению, не знаю способа создать новый репозиторий/проект под своим именем :!: (Нужно обязательно изучить вопрос).
Пустой репозиторий:
Снимок экрана от 2024-02-17 19-19-22.png
Снимок экрана от 2024-02-17 19-19-22.png (152.72 КБ) 166 просмотров
Вот он в моём GitHub в календаре:
Снимок экрана от 2024-02-17 19-20-37.png
Снимок экрана от 2024-02-17 19-20-37.png (217.82 КБ) 166 просмотров

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:17

Olej писал(а):
17 фев 2024, 22:14
Пустой репозиторий:
К картинкам мы ещё вернёмся :lol: , а сейчас загрузим этот пустой репозиторий:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ git clone https://github.com/olej-tsil-51/inout
Клонирование в «inout»...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Получение объектов: 100% (3/3), 7.49 КиБ | 2.50 МиБ/с, готово.
Новый каталог для локального репозитория:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout$ ls -la inout
итого 32
drwxrwxr-x 3 olej olej  4096 фев 17 19:25 .
drwxrwxr-x 3 olej olej  4096 фев 17 19:25 ..
drwxrwxr-x 8 olej olej  4096 фев 17 19:25 .git
-rw-rw-r-- 1 olej olej 18092 фев 17 19:25 LICENSE

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:23

Olej писал(а):
17 фев 2024, 22:17
Новый каталог для локального репозитория:
Зашёл тутда ...

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ pwd
/home/olej/2024/Go/git/inout/inout
Вот все ветви нового репозитория:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
... и откопировал туда все файлы, которые считаю Go-модулем (проектом):

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ ls -la
итого 52
drwxrwxr-x 3 olej olej  4096 фев 17 19:27 .
drwxrwxr-x 3 olej olej  4096 фев 17 19:25 ..
drwxrwxr-x 8 olej olej  4096 фев 17 19:25 .git
-rw-rw-r-- 1 olej olej   215 фев 13 01:28 inputf.go
-rw-rw-r-- 1 olej olej   296 фев 13 01:28 inputr.go
-rw-rw-r-- 1 olej olej   387 фев 13 01:54 inputs2.go
-rw-rw-r-- 1 olej olej   265 фев 13 01:28 inputs.go
-rw-rw-r-- 1 olej olej 18092 фев 17 19:25 LICENSE
-rw-r--r-- 1 olej olej   103 фев 13 01:48 Makefile
4 файла *.go + Makefile

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Неотслеживаемые файлы:
  (используйте «git add <файл>...», чтобы добавить в то, что будет включено в коммит)
	Makefile
	inputf.go
	inputr.go
	inputs.go
	inputs2.go

индекс пуст, но есть неотслеживаемые файлы
(используйте «git add», чтобы проиндексировать их)
Это всё файлы неотслеживаемые, не включённые в репозиторий, пока...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:27

Olej писал(а):
17 фев 2024, 22:23
Это всё файлы неотслеживаемые, не включённые в репозиторий, пока...
Включил под контроль:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git add Makefile 

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git add inputf.go 

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git add inputr.go 

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git add inputs.go 

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git add inputs2.go 

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git status
Текущая ветка: main
Эта ветка соответствует «origin/main».

Изменения, которые будут включены в коммит:
  (используйте «git restore --staged <файл>...», чтобы убрать из индекса)
	новый файл:    Makefile
	новый файл:    inputf.go
	новый файл:    inputr.go
	новый файл:    inputs.go
	новый файл:    inputs2.go
Теперь их нужно включить в комит:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git commit -m 'Сб 17 фев 2024 19:43:07 EET'
[main 6b5d09a] Сб 17 фев 2024 19:43:07 EET
 5 files changed, 80 insertions(+)
 create mode 100644 Makefile
 create mode 100644 inputf.go
 create mode 100644 inputr.go
 create mode 100644 inputs.go
 create mode 100644 inputs2.go
olej@R420:~/2024/Go/git/inout/inout$ 
olej@R420:~/2024/Go/git/inout/inout$ git status
Текущая ветка: main
Ваша ветка опережает «origin/main» на 1 коммит.
  (используйте «git push», чтобы опубликовать ваши локальные коммиты)

нечего коммитить, нет изменений в рабочем каталоге

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git status
Текущая ветка: main
Ваша ветка опережает «origin/main» на 1 коммит.
  (используйте «git push», чтобы опубликовать ваши локальные коммиты)

нечего коммитить, нет изменений в рабочем каталоге
Изменения локально зафиксированы + их нужно отправить в сетевой репозиторий :!:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:37

Olej писал(а):
17 фев 2024, 22:27
Изменения локально зафиксированы + их нужно отправить в сетевой репозиторий
И тут жестокий облом:

Код: Выделить всё

olej@R420:~/2024/Go/git/inout/inout$ git push
Username for 'https://github.com': olej-tsil-51
Password for 'https://olej-tsil-51@github.com': 
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/olej-tsil-51/inout/'
Но этот облом известен и понятен ... я забыл (давно не заходил), что GitHub с некоторых времён запретил доступ по паролям, и требует доступ по индивидуальным токенам :!:
Вот, собственно, из документации на сайте Cloning with HTTPS URLs
Когда вы выполняете git clone, git fetch, git pull или git push в удаленный репозиторий, используя URL-адреса HTTPS в командной строке, Git запросит ваше имя пользователя и пароль GitHub. Когда Git запросит пароль, введите свой личный токен доступа. Альтернативно вы можете использовать помощник по учетным данным, например Git Credential Manager. Аутентификация на основе пароля для Git была удалена в пользу более безопасных методов аутентификации. Дополнительную информацию см. в разделе «Управление вашими личными токенами доступа».
Но это совсем другая песня ... и вспоминать я это буду в другом месте, а потом вернусь сюда - закончить начатое.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Go: модули

Непрочитанное сообщение Olej » 17 фев 2024, 22:46

Olej писал(а):
17 фев 2024, 22:37
и вспоминать я это буду в другом месте, а потом вернусь сюда
Про это уже было: GitHub модулей Go
Olej писал(а):
10 май 2022, 17:31
Суть ошибки в том, что с 13 августа 2021 года поддержка аутентификации по паролю была удалена и теперь нужно использовать токен.
Но там было про создание модуля для Go, а здесь про использование модулей.
Поэтому объединять нет смысла.
Генерирую токен здесь GitHub модулей Go
Изображение

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей