the special one
добавьте    restart: on-failure в migrate
не помогает, и вручную перезапускал, и с рестартом, все одна ошибка
Илья
у меня в композе также и работает
Илья
https://github.com/illiafox/url-short-api/blob/pg/docker-compose.yml#L25-L40
the special one
мне кажется, проблема в порте
the special one
migrate пытается стучаться по одному
the special one
а субд на другом
the special one
но не знаю как связать их
the special one
добавьте    restart: on-failure в migrate
вот просто к бесконечному повтору ошибки приводит
Илья
я использую алиас, но если меняю database на db в command у migrate, то получаю error: dial tcp 172.24.0.2:5432: connect: connection refused
вроде порт правильный если не ошибаюсь то пг не успевает запуститься
Илья
посмотрите его логи
the special one
"5432:5432"?
для субд? указал, но migrate по другим стучится
the special one
или вообще к локалхосту стучится
Илья
теперь вручную миграции
Илья
udp?
the special one
ага
Patamen
У таблицы куда вставляешь есть активные триггеры? Может индексы подропать какие?
Чистая таблица без индексов Чисто тестовая для проверки быстродействия col1;col2;col3;col4
Patamen
Господа мои хорошие! Спасибо всем, кто участвовал в моей проблеме ещё раз! Разобрался частично в работе с MS SQL Обнаружил такой функционал: Как оказывается, библиотека способна поддерживать BulkCopy достаточно костыльным методом https://github.com/denisenkom/go-mssqldb/pull/457/files#diff-061bebb535545742abf620f6ae549e8939afa666e3f1f9c57ce3b072d3120fed Смысл в том, что всё происходит через спец-команду в качестве Prepare'ов, а затем происходит Commit 1млн строк за 15 секунд
Alexander
ну это удобнее, чем дуру полукилометровую готовить. да и в базу ее передавать
Alexander
там нет транзакции случайно под капотом? именно гошной, не на уровне бд
Alexander
ну то бишь нет ли просто скрытого механизма, который стартует транзакцию и в ней уже стейтмент препейрит
Alexander
хм, нативная фигня
Alexander
но мне до сих пор люто не нравится лимит в 2100 параметров для стейтментов
Patamen
но мне до сих пор люто не нравится лимит в 2100 параметров для стейтментов
Это вообще забей Я в таком шоке, что мама не горюй
Patamen
Сейчас затестил 31 столбец на лям строк 1 минута
Alexander
напиши issues. я бы сам написал, но мне не повторить экспириенс
Максим
Добрый день, начал учить go. Никак не могу понять, зачем в некоторых примерах при объявлении переменной для структурой используют следующую запись: h := &Human{Name: "Bob"} Зачем нам тут узнавать адрес, в котором лежит структура. Мы же даже ничего в ней менять не будем. Или я что-то упустил, когда указатели проходил?
Alexander
1. Чтобы передавать указатель и не копировать. 2. Чтобы передавать куда-то по интерфейсу
Alexander
возможно просто привычка автора ни чем не обоснованная
Максим
возможно просто привычка автора ни чем не обоснованная
Возможно. Ибо в коде дальше нет ничего, для чего бы приходилось знать адрес структуры
Максим
Спасибо
Максим
Теперь дальше смогу учить, а то намучился с этой проблемой )
Alexander
главное ошибки проверяй ;))
Илья
модуль? и ещё: используй decimal
Илья
пожалуйста, телепатически объяснил
Не ну это
эээ...
Ron Mount
да просто статистику ловят
Илья
в decimal Mod()
Pushok
Кто уже мастер в дженериках, почему ругается? func RemoveElement[T []int | []string](s T, i int) T { s[i] = s[len(s)-1] return s[:len(s)-1] }
Igor
import "fmt" func main() { a := []int{1,2,3,4,5} fmt.Println(RemoveElement(a , 2)) } func RemoveElement[T int | string](s []T, i int) []T { s[i] = s[len(s)-1] return s[:len(s)-1] }
Tony
Немного непонятно... Как сделать, чтобы удобно было пользовать в дальнейшем? Возвращаю из REST API - На запрос клиента за данными - структуру какой-то сущности - При ошибке структуру { Result: false, message: er.Error() } - При выполнении удаления или обновления структуру { Result: true, message: "...как всё хорошо прошло..." } Вопрос: При обработке результата на клиенте, во 2 и 3 пунктах планирую проверять на Result, а как быть в первом... Добавлять к структуре в JSON поле Result или проверять на его наличие и при отсутствии уже парсить как структуру?
Константин
Доброе утро. Коллеги кто нибудь делал Cloud Function в Яндекс облаке которая через Gateway API работает? Может кто подсказать как выцепить в коде функции передаваемый из API параметры?
Sergey
Немного непонятно... Как сделать, чтобы удобно было пользовать в дальнейшем? Возвращаю из REST API - На запрос клиента за данными - структуру какой-то сущности - При ошибке структуру { Result: false, message: er.Error() } - При выполнении удаления или обновления структуру { Result: true, message: "...как всё хорошо прошло..." } Вопрос: При обработке результата на клиенте, во 2 и 3 пунктах планирую проверять на Result, а как быть в первом... Добавлять к структуре в JSON поле Result или проверять на его наличие и при отсутствии уже парсить как структуру?
Проще всего кажется всегда содержать в ответе result и error, которые не null в результате нормальной работы или ошибки соответственно, то есть как было упомянуто в конце. И логичнее сначала проверять на наличие/пустоту поле error, и потом уже пытаться интерпретировать ответ - при таком подходе ничто не мешает оставить все как есть, без вложенного поля с результатом
Sergey
А как быть при случае 1? сейчас так: json, err := json.Marshal(u) //u - заполненная структура //Возвращаю полученный из структуры JSON объект w.WriteHeader(200) w.Write(json) Тогда мне надо как-то в json добавить еще структуру { Result: true, message: "...как всё хорошо прошло..." }
Не совсем понял вопрос. Как сделать так чтобы в result можно было положить разные структуры, в этом проблема? Для этого поле должно быть типа json.RawMessage. Сначала маршалится результат отдельно (структура, массив, инт, бул, что угодно), присваивается к result, и потом уже маршалится целиком json, который вы кладете в WriteHeader
Tony
Не совсем понял вопрос. Как сделать так чтобы в result можно было положить разные структуры, в этом проблема? Для этого поле должно быть типа json.RawMessage. Сначала маршалится результат отдельно (структура, массив, инт, бул, что угодно), присваивается к result, и потом уже маршалится целиком json, который вы кладете в WriteHeader
Я так понимаю, что нужно сделать структуру type Response struct { Result bool json:"result" Message string json:"msg" Body json.RawMessage json: "body, omitempty" } И уже перед маршилингом этой структуры пихать в её поле Body отмаршалинную структуру самих данных?
Sergey
Про использование rawMessage - все так, да. Я просто думал что вам для ответа апдейта/удаления хочется положить message и result внутрь body
Sir
Здравствуйте, наверно странный вопрос Но, что поучить(библиотеки например) до того как начать учить rest api golang
Grigorij
ос, бд, сети
Anonymous
{ "checksum": "ea72f3e2f4df4ccdfb3783485ad9bdfa", "roots": { "bookmark_bar": { "children": [ { "name" : "choto" }, { "name" : "choto2" } ],
Anonymous
children
Anonymous
не хочет указываться
Alexander
как спарсить на json примерно такой обьект?
Погугли что-нибудь вроде golang json online. Есть как минимум один сайт, который тебе сделает по жсону описание гошеой структуры
Anonymous
или так
Rust? 🤬🤬🤬
Anonymous
или так
Че за ide?
Juliana
Sergey
или так
достаточно в goland просто попытаться вставить в go-файл json и IDE предложит сгенерировать структуру для вставляемого json
Anonymous
Допустим есть большой текст,мне нужно посчитать сколько в нем слова "name". Ну т.е может быть их 10-15 и тд,как мне это сделать?
Не ну это
Какой нибудь instr или регуляр очка
Константин
Допустим есть большой текст,мне нужно посчитать сколько в нем слова "name". Ну т.е может быть их 10-15 и тд,как мне это сделать?
Если тупо и в лоб. То разбить весь текст на слова по признаку пробел. А далее в цикле сравнивать и при совпадении увеличивать счётчик.
Константин
просто не совсем обычный текст и разбить так не получится)
Тогда двигать слово как маску по тексту сдвигая на символ и опять же сравнивая.
Константин
Условно текст это массив байтов просто сдвигать начало этого массива. И сравнивать.
Илья
можно bufio.ScanWords