heavycharged
судя по доке там просто директиву proxypass прописываешь и все
heavycharged
но судя по всему апач на себя берет роль установки websocket коннекшена
Daniel
Если неправильно настроен - да
Roman
Roman
https://github.com/romshark/Go-1-2-Proposal---Immutability/issues/23#issuecomment-427606414
как один из вариантов решения проблемы:
//go:immutable
активирует операторы mut и immut, которые доступны только в тех пакетах в которых immutability включён.
пакеты, в которых go:immutable активирован, уважают immutability аналогичных пакетов. Старые пакеты об этом не заботятся, для них mut и immut практически невидимы
1. Это не ломает обратную совместимость
2. это не принуждает пользоваться immutability инструментарием всех
3. это позволяет тем, кому данный инструментарий нужен, его активировать
принцип таков: Immutable types should be given to those who care and remain transparent to those, who don't.
🏳️ Phil
Я немного отстал от жизни, а что такое операторы mut и immut?
Roman
🏳️ Phil
Это proposal
А. Прочитал. Не понял что он делает и зачем. Крутой proposal
Roman
я бы назвал данное предложение с compiler flag'ом = "The Go Immutability Experiment"
у него конечно есть небольшой недостаток, код пакетов с включённой иммутабельностью будет выглядеть непривычно для тех, кто привык к сквозной повсеместной мутабельности Go. Однако это самый безболезненный переход который я пока могу себе представить.
Immutable types should be given to those who care and remain transparent to those, who don't.
Daniel
чет я опять ищу стикер с пеппой
🏳️ Phil
Roman
именно так и решают эту проблему на данный момент. Но проблем у этого подхода - уйма. Он актуален только потому-что в Go нет иммутабельности вовсе.
1. копирование зачастую не дешёвое.
2. копирование это boilerplate code.
3. копирование подвержено ошибкам потому-что пишется человеком (скопировать массив указателей приведёт к опасному aliasing'у например)
иммут типы в этом плане гораздо удобнее и безопаснее
Daniel
смотри
есть такой класс багов, довольно редких, но при этом очень трудных в отладке
когда ты не хотел изменять нечто, но в недрах своего кода изменил
и теперь программа ведет себя непредсказуемо.
хорошо бы иметь возможность при передаче аргумента в функцию, или создании глобальной переменной запретить - себе, в первую очередь - изменения этого объекта
Roman
А можно просто в двух словах — анафига?
иммутабельность нужна для: точного описания намерений!
1. либо меняю значение X...
2. ...либо не трогаю X
это позволяет избегать многие страшные баги
🏳️ Phil
🏳️ Phil
Dmitri
Dmitri
Daniel
да разобрались уже :)
Daniel
там вообще про go run *.go был вопрос
Dmitri
Daniel
и даже [n:m] - байтовый
Danil
так все таки лучше если я перепишу цикл через range?
Dmitri
Смотря что ты хочешь
Dmitri
Хотя один фиг переписывай
Dmitri
Но либо рейндж по строке, либо рейндж по слайсу байт
Dmitri
Результат будет разный
Pavel
всем привет. Подскажите пожалуйста мануал как рапарсить xml и запихнуть нужные поля в mysql
Dmitri
Пакет xml, пакет sql оба в стандартной библиотеке
Pavel
я так понимаю нужно сделать структуру для парсинга xml, и вторую для отправки в БД?
Daniel
правильно делать так, да
Pavel
а как мапить переменные из первой структуры во вторую? через функцию?
Daniel
руками
Roman
https://github.com/romshark/Go-1-2-Proposal---Immutability/issues/23#issuecomment-427660533
думаю что от иммутабельности по умолчанию (как например в Rust) придётся отказаться. Оставить все типы по прежнему мутабельными и позволить явно квалифицировать их в немутабельные с помощью оператора immut (и оператора mut для mixed-mutability types)
Ilya
Друзья приветствую. Помогите разобраться. Вот есть структура водителя (я сразу на примере) в ней айди имя (...всякаяхерня) и поле со статистикой скажем заказов. Все это парсится в JSON. Чтобы не таскать лишние данные, хочу "дополнять" структуру по функции. Скажем по одному вэбзапросу отдается {айди,имя,данные}, по второму {айди,имя,данные,статистика}. Как это пороще реализовать? Не охота плодить кучу структур
Daniel
вопрос не ясен
Daniel
если вы подсунете анмаршалеру структуру - он обновит только те поля, которые есть в json
Dmitriy
Ilya
Суть в том, чтобы лишний раз не запрашивать из БД данные. Например, при запросе информации по водителю по одному адресу, API выдает стандартную инфу, по другому - расширенную. Идея была в том, чтобы когда нужно, у структуры вызывать метод например getStat(), который бы делал еще один запрос к БД и дополнял структуру данными о статистике водителя
Ilya
Или это невозможно?
Daniel
все возможно
Ilya
Статистика, само собой другая структура. Вот как её в водителя вкорячить?
Ilya
пробовал через анонимные поля - инициализируется пустая при создании водителя. Не подходить ибо пустые данные таскать неправильно.
Ilya
type Driver struct {
ID null.Int `json:"id" db:"d_id"`
Name null.String `json:"name" db:"d_name"`
Tour `json:"tour"`
Stat driverGeneralStat `json:"generalStat"`
}
вот Tour постоянно таскается, не важно, каждое поле null или нет
Stat хочу сделать по запросу. Если описываю как анонимное *driverGeneralStat, то в json оно аккуратно светится как null. Вот и вопрос - как его дополнять? Если поле анонимное, я же к нему не могу обратиться никак. Если оно анонимное, то у Driver по идее должны появиться поля, которые отзываются на db:"что-то=там" верно?
Ilya
То есть по идее, я просто делаю когда нужно второй запрос к бд и скармливаю результат в Driver?
Daniel
коллега, мы ваших вопросов не понимаем
Daniel
откуда у вас json?
Ilya
да я их потому что описываю как чудак
Dmitriy
Dmitriy
или даже так: https://play.golang.org/p/moKI1mKHXhY
Ilya
Ilya
Спасибо!
🎉
Спасибо!
А сделать структуру в которой вложена структура со статой, не подходит?
Ilya
в json
Anonymous
всем привет, подскажите что означает tag для поля структуры "binding"?
Anonymous
для json этого тэга нет но в коде присутвует
Daniil
В проекте gin и validator используется? Если да, то вероятно оно: https://github.com/go-playground/validator/blob/71510749b808f107985c4824c9acb4e1c1252bf7/_examples/gin-upgrading-overriding/v8_to_v9.go
Нави
как сделать, чтобы можно было задавать разные типы, например так:
v["one"] = "qwerty"
v["zero"] = 73
Vadim
Nik
можно сделать так, чтобы range работал с кастомными коллекциями? Например с sync.Map
Anton
Nik
Вопрос не об этом... можно ли единообразно работать как с встроенными, так и с кастомными коллекциями с помощью range в цикле?
Pavel
https://habr.com/post/425413/
Michael
tl;dr
Michael
молоко просохло - и сразу стал синьором
Co(n)stantine👨🔬
Где я работаю, нет джунов вообще
Co(n)stantine👨🔬
не нужны они никому
Co(n)stantine👨🔬
редкость
Pavel
Джуны не нужны очень часто в маленьких командах.
Sparrow
Джунов по осени считают
Pavel
Зачем пять лет растить, если можно за месяц-два нанять?
Pavel
В регионах тоже можно, но они не умеют в рынок 🙂
Pavel
Не знают, что по тырнету можно удаленно работать!
Pavel
Не сильно значит и хотели найти. В Европе просто делаешь условия выше рынка+визу -- и многие СНГшники твои, особенно, если язык внутри конторы не немецкий, а английский.