Anonymous
https://github.com/jahewson/node-big-xml
Anonymous
а сорян это на ноде
Vasily
потоковым парсером
Vasily
https://golang.org/pkg/encoding/xml/#NewDecoder
dev_sheep
благодарю
Axm
подскажите, есть ли какой-то красивый способ логировать ошибки перед вызовом http.Error? в коде есть много мест, где что-то произошло и возвращается определеный статус с текстом ошибки. хочется залогировать проблему. в питоне для этого декораторы, а в go есть что-то подобное?
Vasily
middleware
Vasily
если кратко - делай роуты в ServeMux, потом оборачивай его в функцию которая уже и будет логировать что надо
Vasily
или там панику ловить, или что ещё делать
Axm
и что это даст? у меня проблемы внутри хэндлеров, типа такое-то условие не прошло проверку, возвращаем значит что-то типа http.Error(w, "Some error: %v", err, http.StatusInternalServerError). и таких проверок может быть до десятка в хэндлере. не хочется дублировать везде Logger.Error(...) и http.Error(...).
Vasily
сделать свою функцию? которая будет внутри писать в лог дпоолнительно?
Vasily
и в коде заменить http.Error на myhttp.Error
Axm
я надеялся на что-то красивее, ну да ладно, спасибо
Low
Привет, всем, прошу совета. Изучаю го, хотел бы переписать сервис с ноды, в общем нужен совет по фреймворку: сервис похож на сложную прокси-- делает из входящего реквеста более сложный на XML к другому серверу и обрабатывает ответ (приводит из XML к json и добавляет поля), хотелось бы фреймворк наиболее простой для вхождения с такой задачей:)
ceiling cat
Всё на стандартных либах можно сделать
ceiling cat
Ну или вместо net/http использовать fasthttp
Low
А проверку запроса по джсон схеме и роутинг тоже отдельными либами?
ceiling cat
fasthttprouter в качестве роутера
ceiling cat
json - стандартная либа
ceiling cat
Но могу ошибаться. Гуру, поправьте плез
Alexander
Преобразование в xml и json поддерживается стандартной либой
Alexander
соответственно из json и xml в структуру тоже
Oleg
если нужно именно простой "фреймворк", то советую https://github.com/gorilla/mux , это конечно не супер быстро, но зато свою работу делает и примеров много и документация хорошая. Но если я правильно понял задачу, то хватит и стандартных библиотек.
Oleg
Low
Спасибо вам, пойду пробовать
Anton
echo классный имо :)
Axm
Axm
А проверки у меня внутри doDecorator
Oleg
ясно) надо и самому так попробовать. 👍
Viktor
Вопрос снимается, у меня были type alias
Viktor
Кстати, существует ли какой-то способ заимплементить Valuer/Scanner интерфесы на структуры из внешнего пакета ?
Slava
используй композицию
Oleg
Мерль
Разбираемся с новым sync.Map в Go 1.9 / Хабрахабр
https://m.habrahabr.ru/post/338718/
ceiling cat
Интересно...
ceiling cat
А можно ли вместо мьютексов передавать копию мапа в каждую из горутин?
Michael
ceiling cat
то есть это плохая идея в целом?
Michael
без привязки к задаче сложно сказать
ceiling cat
Ок. Тогда у меня есть некая мапа из БД, простенькая map[string]map[string]string
ceiling cat
И я обычно вызываю 20-30 горутин
ceiling cat
С копией этой мапы. Лучше сделать мьютекс и передавать по ссылке?
ceiling cat
Я не делаю записей в эту мапу, а только читаю
Michael
а мапу заменить каналом?
ceiling cat
Если честно, я плохо понимаю, как это можно сделать
Michael
и что рутины делают с мапами и данными, кот. там лежат?
Michael
ceiling cat
Вкратце: надо отпарсить логи, каждый лог-файл я запускаю в горутине. В функции ProcessFile я передаю копию моей мапы, чтобы один параметр из строки лога заменить на значение, лежащего по ключам
Мерль
Мерль
Мерль
Читать можно спокойно
Michael
ага
Мерль
Я бы правда чисто из паранойи обернул map в структуру с методом типа GetValue но не суть
ceiling cat
Мерси)
ceiling cat
Благодарю!
ceiling cat
Бтв, может, у кого-то найдётся лишний час (или меньше), чтоб заревьюить эту программу, очень бы хотелось (если возможно офк) по воесу это сделать. Писал уже в слак, но когда скинул ссылку на репу, сообщенько было погребено )
Мерль
Ну скинь сюда
Valentin
Клади на GitHub
Michael
или https://play.golang.org
nikita
gofmt для начала запусти только
ceiling cat
Блин, забыл совершенно про goftm..Благодарю, буду дома - сделаю и пушану)
Valentin
рекомендую забиндить в IDE gofmt, govendor, go vet и gometalinter -)
ceiling cat
В гогланге же это всё можно сделать, да?
nikita
прекоммит хук 🤔
ceiling cat
Та надо было просто пушануть в репу, без оверинджиниринга
ceiling cat
Вот. Такая ещё проблема у меня, что я не только процессю файлы, а пытаюсь отправить балком в эластик в горутине
Valentin
Michael
ну, я хз, но плагин в vscode делает автоматически запуски тулзов
ceiling cat
Поставил там вейтгруппу. Но каждый раз получаю разное количество документов, очевидно, горутина какая-то не завершается..Не знаю пока в чём проблема
Michael
Michael
лучше показывай код
Pawel
то есть это плохая идея в целом?
это хорошая идея, но тут нужно понимать, что для этого мапу нужно полность клонировать. Что в гошечке является проблемой. Как и в любом кондовом императивном языке - ссылочной прозрачности нет. Клонирование мало того что не эффективно, но требует трудного для понимания монки-кода, в котором легко ошибиться