Антон
Artem
Можете подсказать статью по работе с websocket’ами из стандартной библиотеки?
Vasily
в стандартной библиотеке нет веб-сокетов
Vasily
https://github.com/gorilla/mux
Vasily
https://gowebexamples.com/routes-using-gorilla-mux/ вот по ней статейка есть
Vasily
вообще ресурс этот полезный
Artem
Спасибо
Aleksey
в стандартной библиотеке нет веб-сокетов
В иксе он есть https://godoc.org/golang.org/x/net/websocket но теперь даже в нём самом написано гориллу пользовать
.
Есть функция, которая запускает команду в выбранной папке 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
go run размещает выполняемый файл во временной папке.
.
и...? Что надо добавить/изменить?
Zver
или указывать полный путь или вышу программу сначала билдить и запускать.
.
так я указываю полный путь
.
process.Dir = filepath.Join(cwd, source)
.
ставится абсолютный путь
Дмитрий Петров
не не так path.Abs
Дмитрий Петров
чтобы сделать абсолютный путь
.
cwd, _ := filepath.Abs(filepath.Dir("source"))
.
это делается уже
.
Путь правильный
Дмитрий Петров
process.Dir = вот это непонятно
Дмитрий Петров
Ты хочешь установить рабочую директорию для просесса?
Дмитрий Петров
А, все понятно. exec.Command("sh", "-c", cmd) вот так запускай
.
и аргументы толкайте в аргументы а не в путь.
передал run Controller.go как аргумент, сработало. Спасибо
.
А все таки нет. Что-то не так. Ошибку не выдает, PID возвращает, но сам процесс завершается с сообщением [] exec: already started и exit status 2
.
При том, самого процесса нет!
Дмитрий Петров
Попробуй вот так exec.Command("sh", "-c", cmd)
🎉
У меня подозрение, что поддержка венды это маркетинговый ход, не более... лучше не расчитывать на адекватную работу приложения....
.
если cmd как go run Controller.go
.
Спасибо
.
Только вот почему сработало только таким способом?
Zver
[] exec: already started - это process.Output()
Ну так вы два раза запускаете. Сначала делаете старт, а потом Otput, вот и матерится.
Andrey
потому что первый аргумент exec.Command - это имя исполняемого файла. А ты туда командную строку целиком пихаешь.
Дмитрий Петров
exec принимает команду и аргументы по отдельности а так ты используешь всю мощь шелла, можно даже перенаправления использовать
Дмитрий Петров
Зависит от задачи, иногда нужно
Дмитрий Петров
@koziavka Вот, только вчера использовал, возможно пригодится https://github.com/komly/filewatch/blob/master/main.go#L99
Zver
@koziavka Вот, только вчера использовал, возможно пригодится https://github.com/komly/filewatch/blob/master/main.go#L99
Да там в документации по данному вопросу все написано и примеров понатыкано. Эти проблемы от нежелания разбираться в ней.
heavycharged
господа, а как тестировать API? просто описать методы, и проверять что возвращается не пустой слайс (например)?
heavycharged
или апи не тестируют?
heavycharged
забыл сказать, что апи не мой. я пишу клиент
⏺ Vаdim
Это функциональное тестирование. Хорошо наличие негативных и позитивных тестов. Например в бд есть какието данные. Нужно проверить как их отдает при разных условиях. Какие ответы ответит сервер если их запросить с ошибкой
⏺ Vаdim
Обычно делаются готовые фикстуры для функционалтных тестов
heavycharged
спасибо, т.е. от тестов своего собственного API ничем не отличается?
⏺ Vаdim
Ну тесты апи это функионалтное тестирование почитайте хорошая тема
Pawel
Будь моя - расстрелял всех тех, кто пишет на электроне и т.п. вещах. Но остаётся только мечтать ))
этих растрелять вторым эшелоном первым - тех, кто пишет бэкэнд на node.js
Диёр
что не так-то
Не любить электрон и ноду щас модно, это как с пхп чуть раннее
Pauline
всё
понятно
Pawel
понятно
язык, инфраструктура, однопоточный рантайм - всё ужасно
Anonymous
язык, инфраструктура, однопоточный рантайм - всё ужасно
Из "всё" не перечислил ещё название, логотип, сообщество и разрабов ))
иьг71
товарищи, подскажите плз, хочется дергать данные с сайта одного из го, но проблема такая, находясь на сайте вызываю: $.ajax({ url: "https://somehost/more-history", type: "POST", dataType: "json", data: { event_attr_ID: 866 } }) и всё ок, вызываю то же самое из го и получаю 404. пробовал делать сначала GET, получил куки, пишу их в реквест в POST и всё равно 404, хедер в ГО идентичен тому что посылает хром.
Дмитрий Петров
Заголовки добавь те же, что и браузер добавляет
Дмитрий Петров
Ну скопируй запрос 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
Alexander
вам смешно, а я админю бэкенд на пыхе...
А какие сложности в администрировании пыхи?
Great
а кто говорит про сложности?
Great
грусть начинается когда в код смотришь. Не то чтобы это пых был плохой, скорее программисты ушлёпки. У нас воркеры на пыхе в зависимостях имеют питона :D
Pawel
Из "всё" не перечислил ещё название, логотип, сообщество и разрабов ))
Название шизофреничное, это точно. А вот главный автор Раян Дал не такой уж дурак - одумался и перешёл на Го.