@gogolang

Страница 519 из 1630
Aleksandr
20.09.2017
14:39:43
(шутка)

praut
20.09.2017
15:58:56
Есть тут пользователи BoltDB? Пытаюсь залить 8 млн. записей, 7 млн. из них залетают моментально, остальное висит уже час... Может какие-то настройки подкрутить?
bolt будет тормозить в силу своей организации. При первичной заливке мне NoSync = true помог максимально нагрузить винт. Ну и SSD очень желательно.

Ivan
20.09.2017
16:03:57
Фигасе, чел очень похож на учителя по хастлу

Google
praut
20.09.2017
16:11:00
Нагружает не диск, а процессор. 100% кушает один поток.
у болта есть тулза для тестирования производительности погоняй туда сюда с разными параметрами

Ivan
20.09.2017
16:13:10
У вы там одной транзакцией ?

Andrew
20.09.2017
16:35:44
У вы там одной транзакцией ?
Да, всё в одном bolt.DB.Update(). Попробую разбить на транзакции поменьше...

Ivan
20.09.2017
16:36:49
У нас была такая проблема да. Но мы её не решили

Чем дальше тем хуже при bulk write

Andrew
20.09.2017
16:38:21
Звучит грустно.

Чем дальше тем хуже при bulk write
Перешли на что-то другое или так терпите?

Ivan
20.09.2017
16:39:24
У нас разовая операция была, вытерпели

Alexander
21.09.2017
06:16:54
Есть рабочий API сервис. Написал еще один микросервис. Всё работает. Шеф говорит "не хочу два сервиса, хочу один". Как мне запустить мой микросервис из другого сервиса?

Daniel
21.09.2017
06:25:07
Не надо этого делать

Alexander
21.09.2017
06:25:31
догадываюсь.

а как сделать?

Oleg
21.09.2017
06:25:39
кхм, тут как по мне обычного лоад-балансера хватит который будет разделять запросы по локешенам.

Google
Michael
21.09.2017
06:27:58
и тут шеф говорит: не хочу балансировщика

Konstantin
21.09.2017
06:29:15
?

Alexander
21.09.2017
06:29:36
шеф однозадачный )))

однобитный )

Oleg
21.09.2017
06:29:52
ну, "запустить мой микросервис из другого микросервиса" по-сути и есть простое проксирование запросов. Я просто не понимаю зачем такое городить внутри самой программы.

Michael
21.09.2017
06:30:46
толстый шеф не любит худых микросервисов

Alexander
21.09.2017
06:30:59
чтобы делать sudo systemctl start myservice один раз, а не столько, сколько микросервисов

Oleg
21.09.2017
06:31:31
а 2 микросервиса написанны на GO ?

Alexander
21.09.2017
06:31:40
да

Oleg
21.09.2017
06:33:58
так оформи\отрефакторь как библиотеки свои микросервисы, подключи в основной пакет и всё. Переписывать всё равно прийдёться.

Oleg
21.09.2017
06:38:19
Завернуть оба в доин докер)
тоже нормально, но тут попробуй обьяснить , зачем при развёртывании своего сервиса тебе нужен установленный докер.

Stanislav
21.09.2017
07:01:17
товарищи, (относительно) глупый вопрос появился, мб сталкивался кто - как прочитать данные с fd? Конкретно интересует работа с https://wiki2.dovecot.org/AuthDatabase/CheckPassword

Vasily Romanov
21.09.2017
07:04:48
Есть рабочий API сервис. Написал еще один микросервис. Всё работает. Шеф говорит "не хочу два сервиса, хочу один". Как мне запустить мой микросервис из другого сервиса?
Посмотри как grpc работает он генерит интерфейс, который ты должен реализовать соответственно не сильно велика разница - вызывать грпц-обёртку которая сходит в микросервис или уже твою конечную реализацию, которая удволетвоярет этому интерфейсу таким образом можно будет потом удобно вынести твой микросервис отдельно когда потребуется

но это если тебе просто надо им пользоваться внутри твоего монолита, а не выставлять это именно как микросервис наружу

если типа слушать несколько пртов и на них будут разные сервисы жить, то это плохая идея

Daniel
21.09.2017
07:36:37
Waitgroup не забыть

Valentin
21.09.2017
08:12:36
Можно сказать шефу, что для лучшей доступности лучше запускать несколько инстансов

Momano
21.09.2017
08:13:52
Ребят, вопрос. Нужно запретить завершение программы, пока выполняется рутина из другого пакета. Что почитать, какие варианты решения? Лучше всего, если напишете куда капнуть, что использовать. Без кода, хочу поучиться. Спасибо

Google
in favor
21.09.2017
08:16:12
Можно заблочить ту рутину чтением из канала и select'ом

Alexander
21.09.2017
08:16:15
значит там и надо ждать

через каналы можно

никто же на запрещает передать канал в вызов функции из другого пакета

Maks
21.09.2017
08:37:25
Спасибо, попробовал и вариант с WaitGroup, и с каналами. Всё получилось, спасибо!

Momano
21.09.2017
09:58:46
Возник ещё один вопрос. Есть ли в го сравнение структур по значениям полей? Или только руками?

Mush
21.09.2017
09:59:34
в самом языке возможности нет

Vasily Romanov
21.09.2017
10:00:21
В смысле нету?

Структура - это сравниваемый тип

В случае если её типы сравниваемые

https://golang.org/ref/spec#Comparison_operators

Если не сравниваемые - DeepEqual как подсказывают выше

Димка
21.09.2017
10:02:37
А если будет слайс в структуре, как тогда сравнение пройдёт?

Vasily Romanov
21.09.2017
10:03:47
нет, слайс только с nil сравнить можно через ==

если слайс - то тебе в DeepEqual

Google
Vasily Romanov
21.09.2017
10:04:57
потому что это не сравниваемый тип. и структура с после типа слайс тоже будет енсравниваемой

Димка
21.09.2017
10:07:04
Ага, прочитал по твоей ссылке

Mush
21.09.2017
10:07:29
мапа тоже не сравниваемый

2 самых распространненых типа не сравниваемые

Valentin
21.09.2017
10:09:53
Сравниваемый, только указатели, а не значения -)

Mush
21.09.2017
10:10:23
ну и нах это надо )

Andrew
21.09.2017
11:27:41
2 самых распространненых типа не сравниваемые
У авторов Go особый взляд на нужный функционал языка. Например, нет ещё нескольких часто используемых вещей. Пара штук из того, что я встретил: - нет функции проверки наличия файлов - нет функции копирования файлов

Andrew
21.09.2017
11:30:06
Никита
21.09.2017
11:30:29
по-моему прочитать из файла сразу в новый это очень красиво )

Andrew
21.09.2017
11:32:53
1) stat же есть? 2) https://golang.org/pkg/io/#Copy, да придётся самому открывать файлы, но зато не будет возникать вопросов :)
1. Я бы хотел одну функцию fileExists(), а не две 2. copy(dst, src) - ещё короче и без вопросов

Илья
21.09.2017
11:35:02
1. Я бы хотел одну функцию fileExists(), а не две 2. copy(dst, src) - ещё короче и без вопросов
что мешает сделать себе file.utils на github и пользовать? :)

Andrew
21.09.2017
11:36:49
что мешает сделать себе file.utils на github и пользовать? :)
Лучше я форкну Go. Будет у меня версия с блекджеком ?

Илья
21.09.2017
11:37:54
просто я не понимаю, почему это должно быть частью стандартной библиотеки, если это реализуется в 3-5 строк? :)

то, что сделали copy/copybuffer/copyn - вот это круто :)

in favor
21.09.2017
11:40:00
Сахар лишним не бывает :)

Google
Andrew
21.09.2017
11:40:21
просто я не понимаю, почему это должно быть частью стандартной библиотеки, если это реализуется в 3-5 строк? :)
Ну с такой политикой можно порезать все функции длиннее трёх строк. Не долго же написать самому! )) Плохо то, что смысл не сразу видно. А одна функция isFileExists() - смысл сразу виден

Andrew
21.09.2017
11:46:17
потому что Go очень похож на C FILE *file; if ((file = fopen(fname, "r")) == NULL) { printf("file doesn't exists"); } return 0;
Не шарю в C, но в printf должен быть "немогу открыть файл". Т.к. файл может быть, но прав на него нет.

Димка
21.09.2017
11:47:19
Не шарю в C, но в printf должен быть "немогу открыть файл". Т.к. файл может быть, но прав на него нет.
верно FILE *file; if ((file = fopen(fname, "r")) == NULL) { if (errno == ENOENT) { printf("File doesn't exist"); } else { // Check for other errors too, like EACCES and EISDIR printf("Some other error occured"); } } else { fclose(file); } return 0;

Ivan
21.09.2017
11:48:16
Some other error - какая жесть. А как же perror иже с ним?

Димка
21.09.2017
11:48:59
это не так важно в вопросе проверки существования файла))

Andrew
21.09.2017
11:51:12
Если в стандартную либу добавить isFileExist, то а) обратная совместимость не поломается б) будет рад как минимум один прогер (я ?). Минусов не вижу ))

Igor
21.09.2017
11:54:10
Я заранее извиняюсь за тупые вопросы. Скажите кто что использует для конфигурационных файлов?

Mush
21.09.2017
11:54:47
viper

Димка
21.09.2017
11:55:23
Если в стандартную либу добавить isFileExist, то а) обратная совместимость не поломается б) будет рад как минимум один прогер (я ?). Минусов не вижу ))
обычно проверяют создан ли файл, если хотят его открыть, то можно использовать os.OpenFile с флагом O_CREATE

Igor
21.09.2017
11:57:38
@NXShock , @antelman спасибо

Andrew
21.09.2017
11:58:03
обычно проверяют создан ли файл, если хотят его открыть, то можно использовать os.OpenFile с флагом O_CREATE
Если бы у авторов Go была такая политика, они бы не ввели бы os.Create. Ведь есть же os.OpenFile(name, O_CREATE). Так что дело в чём-то другом.

Димка
21.09.2017
11:58:45
http://man7.org/linux/man-pages/man2/open.2.html

Страница 519 из 1630