Summer
на coursera был крутой курс про Go от mail.ru. Он сейчас не доступен, не знаете куда они его перенесли?
Akhmed
У структуры Response есть поле *Request - это ссылка на тот запрос, который этот ответ породил.
Я тут почитал класс response и оказывается, что у класса request, ссылка на который находится в классе response, отсутствует body. А есть способ, как сохранить body ?
Юра (Юрий Александрович)
Я тут почитал класс response и оказывается, что у класса request, ссылка на который находится в классе response, отсутствует body. А есть способ, как сохранить body ?
Можно сделать копию класса Request перед его выполнением. Но тогда возникнет задача сопоставления выполненного запроса (без тела) с его предварительно скопированной копией 🤔Надо подумать. Может быть нужно выйти за пределы задачи? Откуда возникла задача сопоставлять запросы и соответствующие им ответы?
Akhmed
У меня появилась идея переписать библиотеку, а точнее, в класс добавить переменную clonedbody, но я не очень понимаю, как в golang работают библиотеки и где они находятся.
Юра (Юрий Александрович)
Задача такая. Если боди респонса соответствует строке, надо сохранить боди реквеста
Тогда перед выполнением сохраняйте (во временную переменную, например) запрос, после выполнения смотрите в ответ и дальше принимайте решение, сохранять ли запрос.
Юра (Юрий Александрович)
У меня появилась идея переписать библиотеку, а точнее, в класс добавить переменную clonedbody, но я не очень понимаю, как в golang работают библиотеки и где они находятся.
"Библиотеку" (в Go они называются пакеты) не трогайте. Редактирование стандартных пакетов - это очень плохая практика. Стандартные пакеты должны оставаться стандартными и работать предсказуемо (т.е. стандартно). Модифицируйте ваш код, который вызывает функции из библиотеки http. Ваш код же сам формирует запросы и получает на них ответы. Вот перед выполнением запроса запрос и копируйте.
Akhmed
"Библиотеку" (в Go они называются пакеты) не трогайте. Редактирование стандартных пакетов - это очень плохая практика. Стандартные пакеты должны оставаться стандартными и работать предсказуемо (т.е. стандартно). Модифицируйте ваш код, который вызывает функции из библиотеки http. Ваш код же сам формирует запросы и получает на них ответы. Вот перед выполнением запроса запрос и копируйте.
Тут проблема возникает с тем, что я модернизирую чужой проект под себя и он работает на многопоточности (синхронной, асинхронной, хз) и я не понимаю, как будет себя вести программа. Возможно, один запрос дойдет быстрее другого и временная переменная перепутается.
Akhmed
Появилась другая идея, сделать какой-нибудь мусорный хедер, в который записывается хэш и сделать хэш таблицы с body запроса
Юра (Юрий Александрович)
Появилась другая идея, сделать какой-нибудь мусорный хедер, в который записывается хэш и сделать хэш таблицы с body запроса
У вас где-то в коде должна быть отправка запроса на выполнение. Скорее всего это строка response, err:= client.Do(...) (в которую передается запрос). Вот перед выполнением запроса и сохраняйте копию запроса.
Юра (Юрий Александрович)
ответ будет здесь же строкой дальше (у вас в коде)
Юра (Юрий Александрович)
у вас есть уже готовый Request Дальше вы делаете resp, err:=client.Do(Request) дальше проверяете свой resp. Это все происходит в линейном участке кода Вот перед client.Do вставляете строчку requestCopy:=request и дальше, if (проверяем респонс) { сохраняем requestCopy куда там нам надо }
Anonymous
Всем привет. Нужно создать неизменяймый из кода список, по типу тапла в python. Как в го решается данная проблема?
Юра (Юрий Александрович)
Всем привет. Нужно создать неизменяймый из кода список, по типу тапла в python. Как в го решается данная проблема?
Создайте изменяемый и передавайте туда, куда вам нужно его передать, его копию. И даже если его там изменят, у вас копия останется неизменная.
Null
Использование sync/atomic в golang для float64 Привет всем гоферам! В данной статье я хочу разобрать как можно воспользоваться модулем sync/atomic для типа float64. Постановка задачи У нас есть канал из которого мы можем читать результаты выполнения задач. Результат задачи содержит флаг показывающий была ли ошибка при выполнении задачи и результат выполнения этой задачи (тип float64). Нужно найти сумму всех результатов и количество ошибок. Читать дальше @Golang_google
Evgeniy
Всем здравствуйте! Подскажите, как в Golang получить список работающих служб на винде?
Emin Zalaev
Процессов?
Evgeniy
Evgeniy
А-ля "Get-Service" в Powershell. Но вроде я кое-что с 10го раза нагуглил.
Юра (Юрий Александрович)
служб
Я сам не пробовал, но попробуйте в этом направлении: За получение всей системной информации в windows отвечает механизм WMI. Он большой и сложный, но хорошо задокументированный. Беглый поиск находит такой пакет для работы с WMI https://github.com/yusufpapurcu/wmi
Юра (Юрий Александрович)
служб
о, оказывается, есть уже и стандартный пакет wmi https://pkg.go.dev/github.com/stackexchange/wmi
Юра (Юрий Александрович)
служб
И я нашел такой пример получения списка служб через wmi (не на Go) http://scriptcoding.ru/2013/08/06/spisok-sluzb-windows-wmi/
Юра (Юрий Александрович)
Да, на него я наткнулся с 10-ой попытки)
Главное тут - тексты WMI запросов: objWMIService.ExecQuery("Select * From Win32_Service") objWMIService.ExecQuery("Select * From Win32_Service Where State <> 'Stopped'") objWMIService.ExecQuery ("Select * From Win32_Service Where State <> 'Running'") objWMIService.ExecQuery("Select * From Win32_Service Where AcceptStop = True") objWMIService.ExecQuery("Select * From Win32_Service Where AcceptPause = True")
Anonymous
SOS
Илья
1) прочитать данные 2) изменить 3) записать обратно
Grigorij
на жсон похоже
Anonymous
ioutil > os
Maks
Гугли или ты не достоин стать прогером)
Grigorij
им не надо уметь немного код писать?
Grigorij
ну это же кусок жсона или нет? по отывку похоже жсон спарсить да изменить там где надо
NU
Anonymous
Что нужно было сделать?
NU
/var/test/test-dir/2022-05-19:09:24:48 дата в каждом файле разная
NU
при прогонке скрипта дату нужно чтобы заменял на текущую
NU
да
NU
но это conf файл
NU
внутри json
Anonymous
Можно весь json؟
Артем
Всем привет, есть один вопрос. Буду рад если поможете. И так. Я пишу binder json'a. В кач-ве инпута принимаю interface{}, а передаю ссылку на структуру (&dto). Далее я провожу некие операции с типами, валидацию итд. В конце функции у меня есть указатель на мою перменную в функции с которой я работал ( в которую скопировал тип из инпута), еще раз: 1. есть поинтер на внутр. переменную 2. есть сам инпут ( в виде поинтера) В чем вопрос - как мне записать значение из моей внутр переменной во внешний указатель как бы. Как поменять значение извне? Звучит как какая то базовая фигня по гохе с указателями, но я уже не много часов долблюсб. Через присваивание указателя не получилось, значение из вне не поменялось Получилось только через marshal и unmarshal обратно. Не сильно умею в рефлексию Спасибо за помощь заранее
Артем
Артем
Артем
Извиняюсь за спам картинками, это последняя
Andrey
а почему в ptr сохраняется не поинтер а интерфейс?
NU
?
там 1000 строк, нужна только одна
Артем
и я кусок кода опустил, я провожу валидацию, туда в функцию сую прямо этот поинтер (ptr)
Артем
с UnsafePointer() тоже самое, снаружи нет изменений
Артем
самое интересное знаете что, если логнуть out и ptr после приравнивания, то они равны, но снаружи как будто в бункере сидит переменная
Andrey
out где-то снаружу объявляется?
Andrey
у нее область видимости выходит из функции?
Артем
Извиняюсь за спам картинками, это последняя
да, вот вызов. В качестве out payload
Andrey
ну тем не менее out это новая переменная внутри который хранится ссылка на внешнюю переменную, а при присвоении ты заменяешь ссылку на другую
Артем
следовательно и та переменная, на которую ссылалась out должна измениться, разве нет?
Артем
аа, стоп)
Andrey
ну так ты ее не меняешь, почему она должна измениться
Артем
хотите сказать, что я как бы поменял у out адрес накоторый она ссылается и все
Andrey
да
Артем
чтоб поменять внешнюю, мне по надо адрес из out разпоинтить, засунуть значение туда из ptr, и тогда поменяется она, верно?
Артем
получилось.
Артем
спасибо за помощь большое
Артем
получил локальное значение и значение из out и сетнул. Запомню) Спасибо еще раз за помощь
Aртем
Всем привет, получаю переменную string , в ней содержится текст с обратной косой. При выводе все падает, как привести к нормальному виду ее подскажите.
Aртем
"" + entry + "" вот так не получается
Aртем
Aртем
Не пойму как экранировать
Emin Zalaev
А что за знак `
Emin Zalaev
Зачем