Evgeny
Добрый день. Подскажите пожалуйста, я не замечаю какое-то очевидное апи, или dynamock правда не умеет мокать скан с фильтром? Заранее спасибо.
Evgeny
ничем не могу помочь, но очень любопытно, какой юзкейс такого потребовал
Alexey
ну их же туда поставили зачем-то, а они как раз и нужны для сохранения целостности таблиц. снять их только table owner и выше может. Или просто так кто-то их туда добавил?)
whois
Друзья, подскажите как слайс структур превратить в json подобно мапе? Вот так выглядит мапа замаршаленная в json: {"key4":"val4", "key2":"val2", "key7":"val7"}. Обратите внимание, порядок отсутствует!!! Это же мапа. А мне нужен json подобный этому, но с условием порядка: {"key1":"val1", "key2":"val2", "key3":"val3"}
whois
Благодарю, я что-то подобное хотел сделать
Andrey
Если ты маршалеш структуру, то поля в json летят так же, как у тебя описана структура. А вот если ты маршалеш мапу, то ключи ставятся автоматически в лексеграфическом порядке
John
если тебе нужен порядок/очередность, то указывай его в явном виде, а не это вот всё
John
ибо спустя полгода твоя магия выстрелит тебе в ногу веревкой достаточной длинны
Alexander
Crud это понятно, join ты прав, это про объединения
Herman
нет
Herman
не понял
Herman
thread это поток
Herman
поток != горутина
Herman
они не обязательно распределятся на все возможные потоки
Evgeny
а расскажите плз про то как вообще моки в го делаются для тестов
Evgeny
только кодогенерацией?
Evgeny
мне просто неуютно от этого, я явер
Herman
это в документации
Tikhon
Ребят, вопрос возможно глупый, но я новичок. Возможно ли в go как-то организовать запуск БД ? В общем сделать так, чтобы она запускалась из go, а не работала где-то отдельно
ARTEM
><
Alexander
Или ты хочешь какую-то БД, для работы которой не требуется СУБД?
Tikhon
Или ты хочешь какую-то БД, для работы которой не требуется СУБД?
Скорее всего, не знаю. Ситуация такая - у меня работает apache, на нём mysql. С этим всем взаимодействует сервер. Проблема появилась тогда, когда попытался запустить свой сервер на windows вместо linux. Там уже пришлось устанавливать и запускать openserver, для запуска той же самой mysql Хотелось бы автоматизировать этот процесс - чтобы запуск БД не ложился на пользователя
Tikhon
Возможно ли реализовать такое ?
Tikhon
Ты хочешь запустить докер образ с БД через приложения на го?
Докеров никаких не запускал, с ними ещё не знаком
Andrey
какая-то у тебя странная концепция понимания БД, так как ты считаешь, что ЮЗЕР должен ее поднимать
Tikhon
Ну.. под юзером я подразумеваю не конечного пользователя, а того, кто запускает сервер
Tikhon
да, понимаю
Alexander
да, понимаю
Чтобы автоматизировать поднятие тестового окружения посмотри в сторону вирутализации и контйнеров
Tikhon
Спасибо
Evgeny
Спасибо
короче, если ты писал-писал свой обучающий проектик под виндой, а потом решил его запустить на линухе, и расстроился что бд надо заново настраивать — встраивать бд в приложение это неправильное решение и научит тебя не тому. иногда это имеет смысл, но не в твоем случае.
Tikhon
Понял
Tikhon
Тогда не буду этим заниматься
Herman
Тогда не буду этим заниматься
для тестов юзаю это https://github.com/ory/dockertest
Evgeny
так, я хочу поюниттестать код, который ходит в dynamo. как мне правильно мокать запросы к бд?
Evgeny
есть например dynamock, но он сырой и много чего не умеет самого тривиального
Andrey
мокай интерфейс, в чем проблема то?)
Evgeny
ну мне лень руками это делать
Evgeny
в смысле прям честно сидеть реализовывать нужные методы, экспектейшены всякие и тд
Evgeny
я думал вдруг какой-нибудь фреймворк есть нормальный
Evgeny
это не про dynamo
Evgeny
https://github.com/onsi/ginkgo
это не мокает! )
Vladislav
Кто нибудь знает библиотеку для проверки/генерации mrz на go?
N
Привет, подскажите пожалуйста , хочу вот этот кусоечк кода вывести в отдельную функцию result = append(result, responses.ConversionResponse{ LeadBrandCrmID: ID, Amount: amount, Currency: "USD", Created: created, }) Подскажите как сделать это то что я набросал func Conversions(ID, currency string, created time.Time, amount float64, result []string) string { result = append(result, responses.ConversionResponse{ LeadBrandCrmID: ID, Amount: amount, Currency: currency, Created: created, }) return fmt.Sprint(result) } Что то накидал, но не правильно ... helpers.Conversions()
N
а зачем стринг возвращать?
func Conversions(ID, currency string, created time.Time, amount float64, result []string) []string { result = append(result, responses.ConversionResponse{ LeadBrandCrmID: ID, Amount: amount, Currency: currency, Created: created, }) return result } так сделать?
Herman
Можно сократить return append …
N
```result = append(result, responses.ConversionResponse{```Вот тут ошибка
N
helpers.Conversions(сюда ID,Time и тд.) Хочу вызывать ее и просто указаывать парамы и все
Nikita
helpers.Conversions(сюда ID,Time и тд.) Хочу вызывать ее и просто указаывать парамы и все
Как говорил дядюшка боб, нельзя делать функции более чем с 2 аргументами. Любые функции, где более 2х - фигня не очевидная. Если необходимо передать много параметров, как в твоём случае, сделай что то типо дто. Объявляешь структуру, и передаешь её как аргумент. Или ещё проще, на вход даёшь result и ConversionRespose а на выход []string И даёшь return append Но коротко - не всегда хорошо . Лучше чуть длиннее, зато очевиднее
Nikita
Ну, да. А можно func Conversions(result []responses.ConversionsResponse, item responses.ConversionsResponse) []responses.ConversionsResponse { return append(result, item) }
Nikita
Будет ещё короче 😁
Nikita
За отступы сорри, с телефона писать код не удобно
Anonymous
Здравствуйте ребят знает кто что такое ispmanager
Anonymous
😁
Oleg
params = "file=test.htm&p1=aaa&p2=bbb" test, _ := url.ParseQuery(params) log.Print(test["file"]) ======= [test.htm] Почему, аглавное, зачем url.ParseQuery парсит и запихивает значения в квадратные скобки? Если я делаю парсинг набора url запроса, я логично хочу получить массив пар ключ-значение и потом по ключу вытаскивать нужное мне значение. Какого лешего мне возвращается значение в гребучих квадратных скобках? Что со мной не так? У меня настолько извращённая логика и я хочу невозможного?
Oleg
Oleg
Хорошо, пусть я извращенец конченный. Думаю, ладно, будем хардкодить! params := "file=test.htm&p1=aaa&p2=bbb" pairs := strings.Split(params, "&") for _, values := range pairs { keyval := strings.Split(values, "=") x := string(keyval[0]) y := string(keyval[1]) //d.setParam(x, y) log.Println(x, y) }
Oleg
ок, типа работает
Oleg
раскоменчиваю d.setParam(x, y)
Oleg
2022/04/09 09:29:59 file test.htm 2022/04/09 09:29:59 p1 aaa 2022/04/09 09:29:59 p2 bbb panic: runtime error: slice bounds out of range [:1] with length 0 goroutine 1 [running]: main.(*Dom).parseAttrs(0xc00002e480, 0x0?) /home/www/gowbdom/main.go:74 +0x35d main.(*Dom).Fetch.func1(0xc000010140?, 0xc000159d08?) /home/www/gowbdom/main.go:43 +0x2b github.com/PuerkitoBio/goquery.(*Selection).Each(0xc00007d6b0, 0xc000159d18) /home/blacker/go/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go:10 +0x46 main.(*Dom).Fetch(0xc00002e480) /home/www/gowbdom/main.go:42 +0x59 main.(*Dom).include(0xc00002e300?, 0x669b93?, {0x676b36, 0x24}) /home/www/gowbdom/main.go:67 +0x1af main.(*Dom).Fetch.func1(0xc000010040?, 0x0?) /home/www/gowbdom/main.go:47 +0x85 github.com/PuerkitoBio/goquery.(*Selection).Each(0xc00007d320, 0xc000159f18) /home/blacker/go/pkg/mod/github.com/!puerkito!bio/goquery@v1.8.0/iteration.go:10 +0x46 main.(*Dom).Fetch(0xc00002e300) /home/www/gowbdom/main.go:42 +0x59 main.main() /home/www/gowbdom/main.go:35 +0x10e exit status 2
Oleg
нафига? если сервер всё равно будет брать последнее значение?
Oleg
если ты присвоил переменную, а потом ещё раз, то результирующее значение - последнее
Oleg
нафига мне этот массив массивов? если в url передаются пары ключ-значение
Oleg
пытаюсь, с плачевным результатом
Oleg
Квадратные не нужны
Oleg
<?php $str = "file=test.htm&p1=aaa&p2=bbb"; parse_str($str, $res); print_r($res); ?> вот на PHP - всё логично Array ( [file] => test.htm [p1] => aaa [p2] => bbb )
Oleg
почему в Go парсер возвращает ахинею? ладно, пусть не ахинею, а логичный результат тогда объясните мне, пожалуйста, логику
Nikita
Get и set и никаких проблем. Зачем парсить параметры в json?
Oleg
Get и set и никаких проблем. Зачем парсить параметры в json?
да не важно зачем, важно, почему не работает?
Oleg
и почему тогда url.ParseQuery сразу не возвращает результат с предложенными вами преобразованиями
Oleg
зачем я должен ещё двацикла крутить после парсинга? нах он такой нужен?