Nikita
получается есть 2 стула, менять глобальные настройки ОС, либо делать го модуль. Мне модуль сделать несложно, если нужно всего лишь написать go mod init, просто почему то у меня сразу не получилось запустить в вскоде на другой машине, там вроде бы тоже нужно было писать go mod init..
Nikita
но сейчас точно попробую)
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
П - программисты
Maks
но сейчас точно попробую)
ты попробуй для начала написать нормально мейн пакет
Nikita
А где ?? package main import "fmt"
в вскоде оно само добавляется)
Maks
но у тебя не добавлено ничего
Maks
Ты показываешь код и говоришь а че не билдится
Nikita
потому что он жалуется что нет модуля)
🔥
🤡🤡🤡
Maks
сек
Nikita
окай, пишу go mod init и снова ошибка)
Nikita
🔥
У тебя проект в гопатч?)
Nikita
хмм..а вы там проекты пишете?? нет конечно)..зачем писать проекты туда куда поставилось))
Nikita
видимо дефолтная настройка go
Nikita
Maks
я просто установил go
Maks
ничего вообще не делал
Maks
просто установил и перезагрузил комп
Maks
и у меня всё работает
Nikita
везёт же
Maks
go mod init package_name
Nikita
кто то в своём уме пишет программы в c:\users\user\go?)
Maks
Документация говорит что инит нужно делать с именем модуля
Nikita
во))...я так и делал...сейчас для чистоты эксперимента попробуем)
Nikita
ладно, давайте тогда по другому.. что такое модуль...какой нибудь пример не из мира го..можно
Nikita
это папка где лежит мой код?
Nikita
Я например)
просто у меня диск С маленький)))
🔥
и че
Что я должен на это ответить?)
🔥
просто у меня диск С маленький)))
Го патч можно для проекта настроить отдельный
Nikita
хмм....а если у меня будет 2 проекта?
Maks
Что я должен на это ответить?)
у меня проект тоже не в гопас, ну и что.
Maks
ошибка потому что я не указал название пакета
Maks
укажи название пакета просто
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
хмм....а если у меня будет 2 проекта?
у меня в единой папке GOPATH более 60 проектов
Maks
у тебя создастся go.mod файл
Maks
в нем будут потом зависимости прописываться
Maks
ты же видишь что я ниже создал модуль используя название модуля
Nikita
укажи название пакета просто
окай...название должно чему то соответствовать?...имени папки в которой лежит, имени файлу в которой функция main?
Maks
нет. Просто придумываешь, потом можно поменять
Nikita
отлично)
Maks
У тебя от него потом будет зависеть название вложенных модулей
Nikita
что такое go mod tidy?
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
что такое go mod tidy?
обновляет зависимости в go.mod
Nikita
оно нужно?...чтобы что то добавлять, как я понял
Nikita
лан, теперь заливаем в гитхаб)
Maks
если у тебя проект будет в гитхабе
Maks
то сразу пиши гит репозиторий для имени модуля
🔥
ты же видишь что я ниже создал модуль используя название модуля
Ну так ты к нему обратиться не сможешь же если он тебе будет нужен
Nikita
вот это я не понимаю для чего...
Nikita
зачем для имени модуля юзать адрес в интернете..
🔥
fmt же не адрес в инете
Nikita
о...и вправду взлетело, всем большое спасибо за помощь...примерно понял как начать со старой книжкой разбираться)
Chshr
Задаблил вопрос, так как он явно потеряется. День добрый, вопрос к знающим: Пакет: "os/exec" Задача: Убить процесс и все саб-процессы через context.WithTimeout(...), который передаётся в cmd := exec.CommandContext(ctx, name, args...) cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} if err := cmd.Run(); err != nil { if ctxErr := ctx.Err(); ctxErr != nil { if ctxErr == context.DeadlineExceeded { err = errors.New("operation timeout exceeded") } else { err = errors.New("operation canceled") } } return err } Но по истечению времени, exec посылает только один сигнал kill(pid) первого процесса, но не посылает сигнала для всей группы процессов(Которая имеет идентификатор -pid, kill(pid)). Из-за этого приходится юзать трюк if killErr := syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); killErr != nil{ err = fmt.Errorf("%s, but we can't kill process err: %s", err.Error(), killErr.Error()) } Можно ли как-то избежать трюка и остаться с контекстом наедине? UPD: в офф пакете и на гхб ответа не нашёл :\ UPD 2: Linux, процессы не детачнуты
🔥
Если виндовс то через винапи можно убить по pid
🔥
не, Linux
а чайлд процессы детачед или все еще приконекченны?
🔥
приконекченны
Вот вытащил из старого проекта, вроде должно работать syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
Chshr
=)
🔥
Спасибо, но мне хочется как раз избежать этого
Не дочитал) Ну можно залистить все чайлд процессы, и их по очереди убить
Chshr
Вот вытащил из старого проекта, вроде должно работать syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
Вот здесь https://cs.opensource.google/go/go/+/refs/tags/go1.17:src/os/exec/exec.go;l=451 контест выходит по таймауту, но делает kill(pid). Для меня загадка, почему при выставленном атрибуте не делается ещё kill(-pid). Поэтому и вопрос к знающим, почему он не делает kill(-pid), каковы причины этого? Или я дундук и не правильно пользуюсь https://cs.opensource.google/go/go/+/refs/tags/go1.17:src/os/exec/exec.go;l=189
Null
🔍 Micro в действии: начало работы Часть 1: https://dev-gang.ru/article/micro-v-deistvii-naczalo-raboty-pbymm0ae2d/ Часть 2: https://dev-gang.ru/article/micro-v-deistvii-czast--polnoe-rukovodstvo-po-bootstrap-9oyo5h33wi/ @Golang_google
Suleiman
Ребят, пакет ioutil считается deprecated ?
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
Ребят, пакет ioutil считается deprecated ?
Вроде как с 1.16 да, где то читал.
Maks
он просто говорит что либа для 1.6 сделана какая то вроде
Maks
или я хз)
Maks
пусть кто нить умный ответит