Pavel
(такое бывает часто по рассказам трактористов)
Sergei V4
В больших компаниях хорошо берут
Sergei V4
И в старых, типо для омоложения коллектива
Pavel
oi wei mate
Pavel
конечно, если искать с разговорным аглийским 🙂
Pavel
В 2007 и трава была зеленее, и сениоров меньше.
Pavel
Сейчас и трава и тогдашние джуны выросли.
Pavel
И на смену им пришли доставщики пиццы 😂😂
Pavel
Статья прикольная, вот, но каждый сам решает нанимать ему человека или нет 🙂
Pawel
А есть какая нибудь либа, которая делает тэг для кастомизации знаечний полей десериализованной структуры по умолчанию, чтобы можно было вот так сделать type ComportConfig struct { Name string `default:"COM1"` Baud int `default:"9600"` ReadTimeout time.Duration `default:"1000000"` } var x ComportConfig // десериализация из жсон // x.Name == "COM1" // x.Baud == 9600 // x.ReadTimeout == time.Millisecond
Roman
А есть какая нибудь либа, которая делает тэг для кастомизации знаечний полей десериализованной структуры по умолчанию, чтобы можно было вот так сделать type ComportConfig struct { Name string `default:"COM1"` Baud int `default:"9600"` ReadTimeout time.Duration `default:"1000000"` } var x ComportConfig // десериализация из жсон // x.Name == "COM1" // x.Baud == 9600 // x.ReadTimeout == time.Millisecond
как она должна понять что для поля Baud нужно применить default? по нулевому значению? А что если нулевое значение и есть то значение которое тебе было нужно? Ну я надеюсь ты понял логику nullable fields обычно с помощью указателей реализовываются
Roman
Что-то range меня расстроил. Получается, я не могу итерироваться по кастомным контейнерам :(
Roman
https://stackoverflow.com/questions/35810674/in-go-is-it-possible-to-iterate-over-a-custom-type
Но как-то грустно и неконсистентно. Хотелось чтобы все что реализовало Next() могло быть итерабельным
Pawel
в C#-е это есть из коробки, а мы чё рыжие что ли
Eugenii
Но как-то грустно и неконсистентно. Хотелось чтобы все что реализовало Next() могло быть итерабельным
Стало интересно, нагуглился вариант от Steven Blenkinsop https://play.golang.org/p/I6GHIOmurv это больше нравится?
Roman
Но как-то грустно и неконсистентно. Хотелось чтобы все что реализовало Next() могло быть итерабельным
мне кажется это было сделано намерено ибо реализация range как интерфейса уже попахивает дымом от перегруженых операторов. "Go code should be obvious", следственно было бы не obvious если range мог вызывать какие-то там внутренние реализации чего либо, поэтому Go-way скорее: for custom.Next() { p := custom.Get() } for i, p := range slice { p } does it make sense to you?
Roman
Так сделали бы Next() у всех, в том числе у мап и было бы консистентно.
думаю они наоборот не хотят чтобы встроенные массивы/слайсы/мапы были похожи на кастомные итераторы, чтоб не путать и не заводить в заблуждения читателя кода
Roman
Имхо, это плохо.
такова философия языка 🙂
Ilya
Ткните носом как настроить gorilla/mux так чтобы из браузера можно fetch(url, {method: "DELETE"}) юзать. В Postman всё нормально, а мозилла со своим OPTIONS не хочет. Я так понял все дело в двойном запросе (Pre-flight requests).
Нави
как округлить float64 до 4 знаков после запятой? так и не понял, есть round() или нет
Pavel
Ткните носом как настроить gorilla/mux так чтобы из браузера можно fetch(url, {method: "DELETE"}) юзать. В Postman всё нормально, а мозилла со своим OPTIONS не хочет. Я так понял все дело в двойном запросе (Pre-flight requests).
Думаю вам стоит посмотреть на gorilla.CORS, эта мидлвара как раз позволяет настроить допустимые хедеры и т.п, OPTIONS запросы она тоже обрабатывает
Ilya
спасибо
Ilya
allowedOrigins := handlers.AllowedOrigins([]string{"*"}) allowedMethods := handlers.AllowedMethods([]string{"GET", "POST", "DELETE"}) handlers.CORS(allowedOrigins, allowedMethods)(r)
Ilya
GET не обязательно указывать, он по спецификации работает по умолчанию
POST вроде тоже считается безопасным? PUT точно указывать нужно
Ilya
https://github.com/gorilla/handlers/blob/master/cors.go#L30
Прост где-то прочитал, что Методы, которые указываешь, переписывают деволтные значения и поэтому их все перечислять нужно.
Ilya
Но вроде работает и без GET
Pavel
Прост где-то прочитал, что Методы, которые указываешь, переписывают деволтные значения и поэтому их все перечислять нужно.
В методе ServeHttp сначала идёт проверка на дефолтные хедеры, потом на хедеры, которые были добавлены вручную. И судя по этому https://github.com/gorilla/handlers/blob/master/cors.go#L334 allowedOrigins можно вообще не указывать, должно работать как в вашем снипете
Roman
есть у нас какая-нибудь функция из стандартной библиотеки которая берёт слайс строк и его манипулирует?
Roman
strings.Join
strings.Join не манипулирует a, он его только читает 😑
Roman
ну или не обязательно строк, просто слайс чего либо который манипулируется?
Roman
Что значит манипулируется? 😅
изменяет его, пишет в него, сортирует его...
Roman
sort.Slice?
а кроме sort?
Pavel
а кроме sort?
А зачем?
Roman
А зачем?
нннннадо)
Roman
для примера)
Roman
я думал может кому что-то в голову быстрее придёт нежели чем я буду сидеть пол часа искать подходящее в доках))
Anonymous
присвоение елементу слайса стандартное как и у массива, оно же изменение , операцияя append как добавляет так и удаляет элемент! Сортировку дали выше .... все остальное в ваших руках!
Anonymous
зачем вы спрашиваетет если сами и отвечаете ?😊
Anonymous
я стараюсь относиться к GO as-it-is , поэтому на эксперта не тяну
Dmitri
== как она должна понять что для поля Baud нужно применить default? как на счёт - если в жсоне нету поля baud, то сделать его 9600 а не 0
Возможно, сначала сгенерить структуру с дефолтными значениями, а потом туды анмаршаллить
Analoliy
Люди добрые, а подскажите, можно ли как-то автоматически билдить проект, который тянет зависимости по HTTPS вместо SSH? Там нужно интерактивно пароль вводить, репозитории зависимостей приватные
Analoliy
Всё в один проект вендорить как-то не очень хочется, но видать, всё же придётся
Pavel
Monorepo FTW
Daniel
о, ну раз тут ДБшный треп - я правильно понимаю что заранее подготовленный db.Prepare внутрить транзакции запихнуть нельзя?
Нельзя. Там же пул коннектов, и обеспечить и prepare, и begin на одном коннекте в общем случае невозможно
Daniel
это время достаточно длительное
Вы его меряли? Со временем исполнения транзакции сравнивали?
Aleksey
Вы его меряли? Со временем исполнения транзакции сравнивали?
Давно было, мерял, еденицы не скажу. Помню только что в итоге на подготовленных запросах время загрузки файла в базу с нескольких минут до пары десяток секунд сократилось.
Daniel
Я думаю - дело было не во времени на prepare
Pavel
Нельзя. Там же пул коннектов, и обеспечить и prepare, и begin на одном коннекте в общем случае невозможно
есть идейка вынести prepare из базы, и сделать свой пул конектов... тоесть делаем метод stmt := Prepare("sql") а потом применять его к бд. rows, err := stmp.query(&db, args ...) если нужда транзакция: connnew := db.begin() stmp.query(&connnew, args...) под ковром query внутри стейтмента будет проверять в мапчике делал ли он prepare для данного соединение, если да - использовать его, если нет - создавать новое
Pavel
db.begin естественно свой, родной не подойдет.
Lucky
день добрый, решал уже кто задачу преобразования c# protobuf-net в golang protobuf? в частности типов list и dictionary
Vladimir
день добрый, решал уже кто задачу преобразования c# protobuf-net в golang protobuf? в частности типов list и dictionary
протобуф по определению языконезависимый, если библиотека следует спецификациям
Vladimir
так что задачи нет