Антон
Artem
Можете подсказать статью по работе с websocket’ами из стандартной библиотеки?
Vasily
в стандартной библиотеке нет веб-сокетов
Vasily
https://github.com/gorilla/mux
Vasily
https://gowebexamples.com/routes-using-gorilla-mux/
вот по ней статейка есть
Vasily
вообще ресурс этот полезный
Artem
Спасибо
.
Есть функция, которая запускает команду в выбранной папке
func ExecCmd(cwd, source, cmd string) int {
process := exec.Command(cmd)
process.Dir = filepath.Join(cwd, source)
err := process.Start()
fmt.Println(err)
return process.Process.Pid
}
Но по какой то причине при process.Start() вылазит ошибка:
exec: "go run Controller.go": executable file not found in $PATH.
Почему так происходит если я явно указываю папку для запуска и путь к ней нормальный? Если запускать прямо из консоли, то все ок.
Илья
вы путь к папке go указываете?
.
Нет, зачем? У меня файл может находиться не в go/src
Zver
.
.
Опять же, если прямо из консоли - все ок
.
Дело явно не в том как запускаю
Zver
go run размещает выполняемый файл во временной папке.
.
и...? Что надо добавить/изменить?
Zver
или указывать полный путь или вышу программу сначала билдить и запускать.
.
так я указываю полный путь
.
process.Dir = filepath.Join(cwd, source)
.
ставится абсолютный путь
Дмитрий Петров
не не так
path.Abs
Дмитрий Петров
чтобы сделать абсолютный путь
.
cwd, _ := filepath.Abs(filepath.Dir("source"))
.
это делается уже
.
Путь правильный
Дмитрий Петров
process.Dir =
вот это непонятно
Zver
.
.
Дмитрий Петров
Ты хочешь установить рабочую директорию для просесса?
Дмитрий Петров
А, все понятно.
exec.Command("sh", "-c", cmd)
вот так запускай
.
А все таки нет. Что-то не так. Ошибку не выдает, PID возвращает, но сам процесс завершается с сообщением
[] exec: already started
и exit status 2
.
При том, самого процесса нет!
Дмитрий Петров
Попробуй вот так exec.Command("sh", "-c", cmd)
🎉
У меня подозрение, что поддержка венды это маркетинговый ход, не более... лучше не расчитывать на адекватную работу приложения....
Zver
Zver
.
.
.
.
если cmd как go run Controller.go
.
Спасибо
.
Только вот почему сработало только таким способом?
Andrey
потому что первый аргумент exec.Command - это имя исполняемого файла. А ты туда командную строку целиком пихаешь.
Дмитрий Петров
exec принимает команду и аргументы по отдельности
а так ты используешь всю мощь шелла, можно даже перенаправления использовать
Антон
Дмитрий Петров
Зависит от задачи, иногда нужно
Дмитрий Петров
@koziavka Вот, только вчера использовал, возможно пригодится https://github.com/komly/filewatch/blob/master/main.go#L99
heavycharged
господа, а как тестировать API? просто описать методы, и проверять что возвращается не пустой слайс (например)?
heavycharged
или апи не тестируют?
heavycharged
забыл сказать, что апи не мой. я пишу клиент
⏺ Vаdim
Это функциональное тестирование. Хорошо наличие негативных и позитивных тестов. Например в бд есть какието данные. Нужно проверить как их отдает при разных условиях. Какие ответы ответит сервер если их запросить с ошибкой
⏺ Vаdim
Обычно делаются готовые фикстуры для функционалтных тестов
heavycharged
спасибо, т.е. от тестов своего собственного API ничем не отличается?
⏺ Vаdim
Ну тесты апи это функионалтное тестирование почитайте хорошая тема
Pawel
Anonymous
Pauline
Диёр
что не так-то
Не любить электрон и ноду щас модно, это как с пхп чуть раннее
Pawel
Pauline
Pawel
понятно
язык, инфраструктура, однопоточный рантайм - всё ужасно
иьг71
товарищи, подскажите плз, хочется дергать данные с сайта одного из го, но проблема такая, находясь на сайте вызываю: $.ajax({
url: "https://somehost/more-history",
type: "POST",
dataType: "json",
data: {
event_attr_ID: 866
}
}) и всё ок, вызываю то же самое из го и получаю 404.
пробовал делать сначала GET, получил куки, пишу их в реквест в POST и всё равно 404, хедер в ГО идентичен тому что посылает хром.
Дмитрий Петров
Заголовки добавь те же, что и браузер добавляет
иьг71
Дмитрий Петров
Ну скопируй запрос as curl в хроме и проверь что работает
иьг71
либо я не умею их добавлять...
req.Header.Add("Accept", "application/json, text/javascript, */*")
req.Header.Add("Accept-Encoding", "gzip, deflate, br")
req.Header.Add("Accept-Language", "en-US,en;q=0.9,ru;q=0.8")
req.Header.Add("Connection", "keep-alive")
req.Header.Add("Content-Length", strconv.Itoa(len(data)))
// req.Header.Add("Cache-Control", "no-cache")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
for _, cookie := range runGetFullReq() {
req.AddCookie(cookie)
}
Дмитрий Петров
а потом все в точности в го перенеси
Дмитрий Петров
Referer может быть
иьг71
Great
Great
а кто говорит про сложности?
Great
грусть начинается когда в код смотришь.
Не то чтобы это пых был плохой, скорее программисты ушлёпки.
У нас воркеры на пыхе в зависимостях имеют питона :D