Ivan
хранилища не должны быть в докере
Artem
я вашего комментария не понял
искать я не пойду, но в докере даже в доках написанно что данные должны приходить из вне. Для этого есть вольюмы и все такое. Это же касается базы, которая хранит данные -она никогда не должна быть в контейнере
Andrey
искать я не пойду, но в докере даже в доках написанно что данные должны приходить из вне. Для этого есть вольюмы и все такое. Это же касается базы, которая хранит данные -она никогда не должна быть в контейнере
Данные не должны быть в контейнере - это да, с этим никто не спорит. Но в контейнере должен быть инстанс. Который, в момент "зависания", может попортить данные, которые лежат снаружи.
Andrey
Вы, похоже, не знаете как мускуль с файлами работает.
Artem
Вы, похоже, не знаете как мускуль с файлами работает.
я им не пользуюсь, но при чум тут это? данные должны либо успешно записаться либо вернуть отказ и откатить изменения. это не проблема приложения в докере. я себе это представляю просто, если грубо - prc с sql запросом внутри -и никак иначе
Andrey
Докер - это еще одна точка отказа. Если вас это устраивает, пользуйтесь на здоровье.
Andrey
Ни в коем случае ни кого не хочу переубедить. Просто рассказал как у нас с ним не пошло.
Илья
Да, вообще
Artem
Ни в коем случае ни кого не хочу переубедить. Просто рассказал как у нас с ним не пошло.
так я не против, просто мне кажется что те, у кого такая проблема не совсем "нормальные"... а по поводу докера, ну как бы кейсы разные и иногда вместо настройки полноценной CI инфраструктуры проще выкатить контейнеры и настроить резервные маршруты в случае сбоев с востановлением. Это совершенно не сложно и очень дешево. А дальше по мере нахождения узких мест их устранять.
Andrey
Да, вообще
Хороший вопрос. За 8 лет работы ни разу не зависал и данные не бились, поэтому не могу ответить.
Artem
Тоже верно, если у вас достаточно большая команда и есть время на настройку и поддержку этого.
есть SRE -это их работа, а более или менее крупный проект без них сегодня я не вижу
Slava
Те если мускул сам по себе зависнет, то тоже побьет данные?
всё зависит от настроек мускуля, если журнал пишется на каждую транзакцию - то данные восстановятся
Andrey
есть SRE -это их работа, а более или менее крупный проект без них сегодня я не вижу
Значит ли это, что пользоваться докером и CI может только более-менее крупный проект с отдельной ролью SRE?
Artem
Значит ли это, что пользоваться докером и CI может только более-менее крупный проект с отдельной ролью SRE?
это начит только то, что нужно понимать инструмент, которым пользуешься :) Докер -это не долгоиграющая пластинка, обычное его использование -это поднял > выдал результат > убил
Andrey
ой
Andrey
пхп запахло
Michael 🌌
Значит ли это, что пользоваться докером и CI может только более-менее крупный проект с отдельной ролью SRE?
Хз, в моей прошлой компании все бекендеры умели докер настраивать и развёртывать
Andrey
Это был риторический вопрос. =)
Artem
пхп запахло
дело не в пхп или ограниченности использования а в понимании процесса и оценке стоимости рисков. Безусловно есть контейнеры, которые живут долго, но их использование не ограничивается стартом и ожиданием коннекта. Обычно восстановление предусмотренно
Andrey
Ладно, опять же повторюсь. Докер - прекрасное изобретение. Мы с ним не справились. Возможно, при повторной необходимости оркестрировать больше, чем тремя серверами, мы к нему вернемся. Пока отложили в долгий ящик.
Artem
Ладно, опять же повторюсь. Докер - прекрасное изобретение. Мы с ним не справились. Возможно, при повторной необходимости оркестрировать больше, чем тремя серверами, мы к нему вернемся. Пока отложили в долгий ящик.
прежде чем внедрять инструменты вроде докера нужно понять потребности и возможности. Оценить требуемую доступность и сравнить с тем, что реально предоставить. Падение докера в том числе легко решается простейшим балансировщиком благо стоимость ничтожная. Но опять же если это три сервера т зачем вам оркестрация? когда речь пойдет о сотне серверов у вас просто может не быть выбора, хотя и тут он есть.
Michael
Доброе утро. Есть вот такая функция https://golang.org/pkg/os/#StartProcess . Она позволяет через https://golang.org/pkg/os/#ProcAttr наследовать запускаемому процессу несколько открытых файлов. Как запускаемой программе понять, какой из переданных файлов какой?
Artem
Вы какую то дич несёте, простите. Докер может грохнуться по тысячи причин, о которых вы представления не имеете. Хранить в нём что-то, что не жалко выкинуть - это абсурд вообще.
речь о том, что у докера другие задачи и в первую очередь это возможность развернуть код на разных машинах без войны с зависимостями.
Michael
в attr.Files посмотреть
А как запускаемой программе в них посмотреть, если они задаются в запускающей программе?
Michael
я пробовал класть дескрипторы. Но это не прокатыват. Они перемешиваются и дублируются при запуске программы: user@debian:~$ sudo ls -l /proc/1107/fd [sudo] пароль для user: итого 0 lrwx------ 1 user user 64 мар 3 10:04 0 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 1 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 2 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 3 -> socket:[15955] lrwx------ 1 user user 64 мар 3 10:04 4 -> anon_inode:[eventpoll] lrwx------ 1 user user 64 мар 3 10:04 5 -> socket:[15956] lrwx------ 1 user user 64 мар 3 10:04 6 -> socket:[15957] lrwx------ 1 user user 64 мар 3 10:04 7 -> socket:[15958] user@debian:~$ sudo ls -l /proc/1114/fd итого 0 lrwx------ 1 user user 64 мар 3 10:04 0 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 1 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 2 -> /dev/pts/1 lrwx------ 1 user user 64 мар 3 10:04 3 -> socket:[15957] lrwx------ 1 user user 64 мар 3 10:04 4 -> socket:[15956] lrwx------ 1 user user 64 мар 3 10:04 5 -> socket:[15958] lrwx------ 1 user user 64 мар 3 10:04 6 -> socket:[15958] lrwx------ 1 user user 64 мар 3 10:04 8 -> socket:[15955] lrwx------ 1 user user 64 мар 3 10:04 9 -> anon_inode:[eventpoll] user@debian:~$
Michael
сверху запускатель, снизу - запущенная.
Artem
ну так там есть же имена и pid, а зачем они дублируются фиг его знает, но это скорее всего логика пользовательская
Michael
А как ко всему этому из Go достучаться?
John
всем привет, подскажите пожалуйста, кто как балк инсерт разруливает? у меня постгрес, выяснилось что gorm не поддерживает балки (пока), что печально (учитывая то что среди гошных орм она самая популярная). лепите свои raw SQL или можно как-то красиво это сделать? у меня к raw SQL отвращение после django
Artem
А как ко всему этому из Go достучаться?
скорее всего только через рефлексию, если вообще можно, может лучше использовать обычный exec?
Artem
Вы наверное думаете, что помогаете, но это не так.
на сколько я понимаю у вас файлы заменяют Stdin, Stdout и Stderror ну и остальное в зависимости от ОС (я хз че там быть должно) Вот именно в том порядке в котором вы их передаете они и идут, т.е. вы можете прямо os.Stdout и остальные использовать и это будут эти файлы ну и передавая в качестве одного из файлов nil -вы говорите что файл закрыт
Michael
я передаю 4 сокета. в примере выше их видно. первые три это стдин, аут и ерр. потом мои 4 сокета. приходят они перемешавшись и дублируясь, что тоже видно в ls -l выше.
Michael
и проблема в том, что я не могу их никак использовать из-за этого.
Michael
ибо не ясно, какой сокет какой.
Artem
я передаю 4 сокета. в примере выше их видно. первые три это стдин, аут и ерр. потом мои 4 сокета. приходят они перемешавшись и дублируясь, что тоже видно в ls -l выше.
ну так там так и написанно "An implementation may support additional entries, depending on the underlying operating system" значит просто операционная система их не воспринимает и просто создает случайные потоки в случайном порядке
Michael
всё она воспринимает нормально. просто в удобном ей порядке.
Artem
всё она воспринимает нормально. просто в удобном ей порядке.
ну так на поведение ос вы не повлияете никак, можно какие то внутренние средства наверно использовать, но наверно лучше поискать другой путь.
Artem
всё она воспринимает нормально. просто в удобном ей порядке.
попробуйте из процесса по pid получить что то через SysUsage, но не факт, что там что то полезное будет. Он должен системные вызовы вернуть
Michael
там нет нужной информации: https://golang.org/pkg/syscall/#Rusage
Artem
там нет нужной информации: https://golang.org/pkg/syscall/#Rusage
в теории можно через pfiles/pfile по pid получить файлы и уже как то на этом логику строить. Но это опять же в рантайме, т.е. через рефлексию
Anonymous
Коллеги, кто использовал btcsuite/btcd? Подскажите, пожалуйста, беру транзакцию по хэшу с помощью GetRawTransactionVerbose, в ответе приходят Vin, Vout. Cо вторым все предельно ясно, а вот с Vin как-то не идёт, не могу понять как правильно индекс входа взять, чтобы считать выход предшествующей транзакции
Altay unstppbl
Народ, подскажите как выполнять plpgsql процедуры, и сохранять результат в переменную
Altay unstppbl
написал процедуру, выполняю её через db.Exec("SELECT procedure_name($1)", "some value"), возвращается структура с поинтером на какой-то адрес и 0
Alexey
Надо через QueryRow
Alexey
Exec возвращает sql.Result
Altay unstppbl
Надо через QueryRow
спасибо, сделал 👍🏻
Alexey
Wingman
кто в регекспах шарит? какую альтернативу можно применить в гошке для positive lookahead? (не поддерживается =\)
Wingman
я там уже полдня экспериментирую, и? :)
Aleksey
я там уже полдня экспериментирую, и? :)
там вменяемая дока и генератор кода на го
Wingman
в доках сказано только, что "лукахеда нет, извиняйте" :)
Wingman
тут не дока, а скорее рецепт нужен
Wingman
на всяких stackoverflow при overlapping lookaheaad советуют половину логики в коде реализовывать
Wingman
дико не хочется =\
Wingman
где мои pcre, хнык
Aleksey
os.Exec(perl) :))
Oleg
где мои pcre, хнык
Есть биндинг к реализации на C
Oleg
Еще есть биндинг к реализации на Rust
Wingman
о, спасибо
Wingman
пошел гуглить
Oleg
Спасибо
Wingman
туплю
Vasily
где мои pcre, хнык
есть биндинги к pcre через cgo можно использовать если очень надо
Wingman
да, уже нагуглил, пытаюсь...
Anonymous
В go есть аналог StreamReader с шарпа? Чтобы не грузил ОЗУ при чтении больших файлов
Илья
bufio