Nikita
получается есть 2 стула, менять глобальные настройки ОС, либо делать го модуль. Мне модуль сделать несложно, если нужно всего лишь написать go mod init, просто почему то у меня сразу не получилось запустить в вскоде на другой машине, там вроде бы тоже нужно было писать go mod init..
Nikita
но сейчас точно попробую)
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
П - программисты
Nikita
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
это папка где лежит мой код?
Maks
🔥
Что я должен на это ответить?)
Nikita
хмм....а если у меня будет 2 проекта?
🔥
Nikita
Maks
ошибка потому что я не указал название пакета
Maks
укажи название пакета просто
Maks
у тебя создастся go.mod файл
Maks
в нем будут потом зависимости прописываться
🔥
Maks
ты же видишь что я ниже создал модуль используя название модуля
Nikita
укажи название пакета просто
окай...название должно чему то соответствовать?...имени папки в которой лежит, имени файлу в которой функция main?
Maks
нет. Просто придумываешь, потом можно поменять
Nikita
отлично)
Maks
У тебя от него потом будет зависеть название вложенных модулей
Nikita
что такое go mod tidy?
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, процессы не детачнуты
🔥
Задаблил вопрос, так как он явно потеряется.
День добрый, вопрос к знающим:
Пакет: "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
Chshr
🔥
не, Linux
а чайлд процессы детачед или все еще приконекченны?
Chshr
🔥
приконекченны
Вот вытащил из старого проекта, вроде должно работать
syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
Chshr
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
Chshr
Suleiman
Ребят, пакет ioutil считается deprecated ?
𝕌ℕ𝔼𝕏ℙ𝔼ℂ𝕋𝔼𝔻
Maks
он просто говорит что либа для 1.6 сделана какая то вроде
Maks
или я хз)
Maks
пусть кто нить умный ответит