🏳️ Phil
гуглитсо про какой-то race data
Anonymous
Сделай 1 рутину на запись в файл и кидай ей в канал из других горутин, так не будет конкурентной записи в файл, хотя и без неё не должно быть проблем. Ошибка про слайс говорит о проблеме в другом месте
🏳️ Phil
Anonymous
Если где-то идёт параллельная работа со слайсом, то надо ставить локи
🏳️ Phil
🏳️ Phil
Anonymous
ээээ....
Напиши тест, где 100 горутин добавят данные в слайс, и посмотри сколько данных будет в слайсе - не 100
Anonymous
Слайсы не потокобезопасны, хотя ошибки зачастую не видны, в отличие от мап
🏳️ Phil
понял
Anonymous
В свое время гуглил является ли запись в файл в го потокобезопасной, и не нашел ответа. Поэтому предостерегся в виде отдельной рутины, которая пишет. Хотя вроде и из многих рутин тоже ошибок не было и данные не терялись
🏳️ Phil
Ну вот я ресолвинг реестра запрещенных сайтов сделал и он нихрена писаться на 100 горутинах уже отказывается
Anonymous
Как буду у компа, проверю параллельный fprintf
Michael
Michael
Michael
и хоть алкоголик, зато функциональный
dev_sheep
😁
engelbart
А есть у нас что то типа persistent rmq но inprocess? что б ничего не надо было ставить, просто в бинарник включить
Anonymous
HipHop?
Пеашпи хипхоп что ли могет компилироваться в бинарник?
Oleksii
Screenshot (Jun 25, 2017 10:50:13)
Oleksii
Сам не проверял
Oleksii
ВПН подключен
Oleksii
Valentin
Nikita
У кого-нибудь был опыт написание апи поддерживающее graphQL на Go?
Michael
Anonymous
Anonymous
а не на их порядок
Anonymous
что при аналогичном конкурентном добавлении данных в слайс, например, без блокировки,не сработает
Valentin
И о каком порядке идёт речь в случае конкурентной записи?)
Anonymous
да я тоже не понял, при чем тут порядок
Michael
поддержу традицию: а причём слайс к файлу?
Anonymous
чееловек спрашивал почему у него не пишутся данные в файл,. при этом у него была ошибка доступа к слайсу
Anonymous
я проверяю как конкурентную запись файл так и конкурентное добавление в слайс
Michael
в первом случае у него был буферизированный вывод
Michael
во втором нет
Anonymous
Тест конкурентного добавления в слайс:
package tests
import (
"testing"
"sync"
)
func Test(t *testing.T) {
slice := make([]int, 0)
var wg sync.WaitGroup
for i := 1; i <= 1000; i ++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
slice = append(slice, i)
}(i)
}
wg.Wait()
if len(slice) != 1000 {
t.Error("Wrong slice length", len(slice))
}
}
результат:
test.go:23: Wrong slice length 837
Anonymous
Michael
и про ядро линукса и в целом пишут такое
The kernel does use locking internally to run each read() and write() operation serially.
Michael
не понятно что с чем вы тестируете
Michael
слайсы, файлы, буферезированный вывод
Michael
Michael
поэтому кто успел, того и тапки, и ничего удивительного
Anonymous
у меня вопросов никаких нет, я высказал 2 тезиса:
- неизвестно как будет работать параллельная запись в файл
- параллельноео добавление элементов в слайс очевидно работать не будет
Michael
The kernel does use locking internally to run each read() and write() operation serially. - кто первым встал на запись, то молодец
а второе из справки понятно, т.к. никто явно не гарантирует
Anonymous
ок
Anton
Привет всем. Дивный вопрос: есть запущенное консольное приложение ХХХ, можно ли как-то получить данные с него? При этом несколько программ хотят читать вывод с того приложения ХХХ
Valentin
Перенаправление вывода в Linux
Michael
может хотят читать с уже запущенного приложения
Michael
надо уточнить
Michael
а то мало ли
Valentin
Приложение пишет в stdout?
Anonymous
Ilya
Anton
Xxx запускается сторонним приложением. Сам я его не могу запустить
Anton
Так что я не могу перенаправить вывод в файл
Anonymous
перенаправть можно через >
Anonymous
это тут верно пишут
Anonymous
./somescript > somefile
Michael
engelbart
А не знаете вот такого же: https://github.com/adam-hanna/golang-vuejs-starter-kit но для vue 2 ?
Anton
Наверное только хукануть если stdout 🤔
Ilya
Внедриться в процесс и сделать все что нужно :)
Valentin
А в чем смысл стартер китов? Берёшь js фреймоврк любой и пишешь rest апи на любом языке
Constantine️
изучать же нужно, а можно хуяк-хуяк и в продакшн
Valentin
engelbart
engelbart
Приятно наверно быть человеком у которого один правильный ответ на всё. Выключил голову и поехал.
Mike
разные правильные ответы появляются когда ты сам опытный
Mike
а когда нет, смотреть на стартеркиты непонятного происхождения с непонятно зачем закапленностью — ну успехов
Mike
это путь в пхп
Aleksandr
Aleksandr
Если ты посмотришь, что в твоём бойлерплейте делает го, то это будут пара строчек запускающих http-сервер
engelbart
Да а кто говорит что вместе. Это вообще тут к чему.
У меня например рест и фронт для супермелкого сайта будут в одном репе, что бы не версионировать рест и прочее.
Предудыщий бойлерплейт был удобен, что все скрипты были уже описаны. сборки и тестов и прочего.
Я помню юзал его, потому и спросил.