
Алексей
18.05.2018
13:00:55

Vladislav
18.05.2018
13:02:32

Pawel
18.05.2018
13:02:53

Alexander
18.05.2018
13:03:08
func (t *TaskManager) Command(task *models.Task, account *models.Account, params interface{}) error
Или вот, попробуйте, называется, догадаться что там за параметры могут быть в params

Google

Vladislav
18.05.2018
13:03:31

Алексей
18.05.2018
13:03:43

Alexander
18.05.2018
13:04:09

Vladislav
18.05.2018
13:04:32
Начиная от пакета models. Заканчивая использованием не интрефейсов.

Alexander
18.05.2018
13:04:42

Jentry
18.05.2018
13:05:31

Alexander
18.05.2018
13:05:49

Vladislav
18.05.2018
13:06:08

Jentry
18.05.2018
13:06:38
мне кажется, что наш лагерь разбился на тех, для кого golang первый язык и они не понимают, зачем дженерики, и тех, кто видел/писал на плюсах/java/c#

Антон
18.05.2018
13:07:49

Pawel
18.05.2018
13:07:56
Главное не забывать про то, что без типов сумм программировать нельзя. Не спрашивайте, что это значит. Это первая заповедь программиста! Она не подлежит обсуждению.

Алексей
18.05.2018
13:08:39

Google

Alexander
18.05.2018
13:08:45
Ты не структуры приводи а их использование.
Есть банальный кейс - есть очередь комманд для выполнения таск менеджеру. Эта очередь может быть очень большая. Ну и всё вроде бы хорошо, взял слайс, написал по быстрому обёртку, чтобы был ринг. Но тут нам вдруг понадобились приоритеты. И всё, приехали.

Pawel
18.05.2018
13:09:57

Vladislav
18.05.2018
13:10:48
"микросервисы"

Jentry
18.05.2018
13:11:54

Vladislav
18.05.2018
13:12:46

Jentry
18.05.2018
13:13:12
насколько мне известно боги плюсов с огромным презрением смотрят на го как на тупой кусок, где ничего нельзя, кроме как строгать рубанком, который выдал Роб) они больше в rust уходят и я с ними согласен

Алексей
18.05.2018
13:13:14

Vladislav
18.05.2018
13:14:32

Pawel
18.05.2018
13:16:12
Ты не структуры приводи а их использование.
зачем? это же многабукф, куча саршип-опреаторов и прочего срашного говнокода, не убедительно будет совсем
Чтобы не быть голословным, возьмем для примера код heap’а на Scala или на Go. Какой из них проще понять и рефакторить? Зачем в реализации heap’а на Scala такие абстракции, как stream, forest, fold, rank, flatten, map, singleton, monoid? Без них никак нельзя? :)
https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Heap.scala
https://golang.org/src/container/heap/heap.go
на этом савим жырную точку в этом базаре

Alexander
18.05.2018
13:17:22

Slava
18.05.2018
13:17:29
Лучше уж рубанком делать реальные проекты, чем ваять в подвале для себя :)

Jentry
18.05.2018
13:18:33

Sheldon
18.05.2018
13:18:37
зачем? это же многабукф, куча саршип-опреаторов и прочего срашного говнокода, не убедительно будет совсем
Чтобы не быть голословным, возьмем для примера код heap’а на Scala или на Go. Какой из них проще понять и рефакторить? Зачем в реализации heap’а на Scala такие абстракции, как stream, forest, fold, rank, flatten, map, singleton, monoid? Без них никак нельзя? :)
https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Heap.scala
https://golang.org/src/container/heap/heap.go
на этом савим жырную точку в этом базаре
Чем меньше абстракций - тем лучше?

Pawel
18.05.2018
13:19:53
Чем меньше абстракций - тем лучше?
Го - против бесполезных абстракций и монадирующих программистов. тут подробности https://medium.com/@kaveh.shahbazian/abstractions-the-costs-b0c00835aa8d

Антон
18.05.2018
13:20:17
зачем? это же многабукф, куча саршип-опреаторов и прочего срашного говнокода, не убедительно будет совсем
Чтобы не быть голословным, возьмем для примера код heap’а на Scala или на Go. Какой из них проще понять и рефакторить? Зачем в реализации heap’а на Scala такие абстракции, как stream, forest, fold, rank, flatten, map, singleton, monoid? Без них никак нельзя? :)
https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Heap.scala
https://golang.org/src/container/heap/heap.go
на этом савим жырную точку в этом базаре
Чтобы использовать heap там, где от объекта требуется быть только стримом, лесом, свёртываемым объектом, функтором или моноидом, очевидно же.

Sheldon
18.05.2018
13:20:32

Алексей
18.05.2018
13:20:37

Антон
18.05.2018
13:21:00

Google

Sheldon
18.05.2018
13:21:01

Алексей
18.05.2018
13:21:07

Aleksandra
18.05.2018
13:22:19
Company: Bitfury (Blockchain)
Position: Senior Go / Golang Developer
Short Description: We are looking for a Go programming language expert to join our team to design APIs, functionality and solutions for the next-gen financial services based on cutting edge blockchain technologies.
Location: Novosibirsk
Salary: $3+K Net depending on skills
Full JD: https://spb.hh.ru/vacancy/25674491
#вакансия


Pawel
18.05.2018
13:22:34
Ну дженерики и монады это же одно и то же, ненужные абстракции
примерно так. Дженерики мало кому нужны. Для особо упоротых есть github.com/ncw/gotemplate . Только почему-то дальше парочки стандартных структур (list, ring, set, heap) и алгоритмов (sort) дело не пошло. Причем необходимость list и ring высосана из пальца:
— вместо list проще и эффективнее использовать стандартный слайс
— ring используется чуть меньше, чем в одном проекте на миллион, где проще написать один раз реализацию этого ring под конкретный тип в 10 строчек.
Set тоже легко заменяется стандартной map[key]struct{}, хотя синтаксический сахарок тут уже поприятнее.
Остается лишь дженерики для heap и sort, которые необходимы лишь в небольшом проценте оптимизированных по скорости программ, где стандартные heap и sort на интерфейсах не подходят из-за накладных расходов на вызов интерфейсных функций.
Приведите примеры из настоящих программ, где еще могут понадобиться эти дженерики? вот только если у вас есть трудности с пониманием того, чем настоящая программа отличается от академического плана - лучше не надо


Jentry
18.05.2018
13:22:50
Отключаюсь, резюмируйте потом, пожалуйста- чем закончился очередной флейм и кто победил

Vladislav
18.05.2018
13:23:30


Алексей
18.05.2018
13:23:45
примерно так. Дженерики мало кому нужны. Для особо упоротых есть github.com/ncw/gotemplate . Только почему-то дальше парочки стандартных структур (list, ring, set, heap) и алгоритмов (sort) дело не пошло. Причем необходимость list и ring высосана из пальца:
— вместо list проще и эффективнее использовать стандартный слайс
— ring используется чуть меньше, чем в одном проекте на миллион, где проще написать один раз реализацию этого ring под конкретный тип в 10 строчек.
Set тоже легко заменяется стандартной map[key]struct{}, хотя синтаксический сахарок тут уже поприятнее.
Остается лишь дженерики для heap и sort, которые необходимы лишь в небольшом проценте оптимизированных по скорости программ, где стандартные heap и sort на интерфейсах не подходят из-за накладных расходов на вызов интерфейсных функций.
Приведите примеры из настоящих программ, где еще могут понадобиться эти дженерики? вот только если у вас есть трудности с пониманием того, чем настоящая программа отличается от академического плана - лучше не надо
вместо list проще и эффективнее использовать стандартный слайс
интересно почему это?


Pawel
18.05.2018
13:24:29

Maxim
18.05.2018
13:24:46
Флейма не было бы если бы все в чате имели одинаковые скиллы)

Алексей
18.05.2018
13:24:49

Alexander
18.05.2018
13:25:24
зачем? это же многабукф, куча саршип-опреаторов и прочего срашного говнокода, не убедительно будет совсем
Чтобы не быть голословным, возьмем для примера код heap’а на Scala или на Go. Какой из них проще понять и рефакторить? Зачем в реализации heap’а на Scala такие абстракции, как stream, forest, fold, rank, flatten, map, singleton, monoid? Без них никак нельзя? :)
https://github.com/scalaz/scalaz/blob/series/7.3.x/core/src/main/scala/scalaz/Heap.scala
https://golang.org/src/container/heap/heap.go
на этом савим жырную точку в этом базаре
лул. во-первых толсто. во-вторых не в scala, а в scalaz, если не знаете разницу - не позорьтесь. в третьих, скала и тем более скалаз - отдельная тема, люди действительно могут немного упороться по матану.

Aleksandr
18.05.2018
13:25:25
ладно, ребятки, давайте 5 минут на завершение, или я принудительно завершу

Антон
18.05.2018
13:25:28

Pawel
18.05.2018
13:26:36

Антон
18.05.2018
13:27:01

Jentry
18.05.2018
13:27:07

Alexander
18.05.2018
13:27:34

Pawel
18.05.2018
13:28:35

Алексей
18.05.2018
13:28:39
Резюме: дженерики не нужны, потому что Роб Пайк так сказал, но встроенные обобщённые типы почему то нужны. И да, встроенных обобщённых типов должно хватить всем, если вдруг не хватит, значит лучше взять монады из скалы (причём тут монады и скала мы так и не выяснили).

Vladislav
18.05.2018
13:28:45

Google

Pawel
18.05.2018
13:29:24

Алексей
18.05.2018
13:29:50

Антон
18.05.2018
13:30:10

Vladislav
18.05.2018
13:31:11

Антон
18.05.2018
13:32:00

Vladislav
18.05.2018
13:32:39

Emil
18.05.2018
13:33:36

Jentry
18.05.2018
13:33:41

Admin
ERROR: S client not available

GoodMoodDealler
18.05.2018
13:34:01

Emil
18.05.2018
13:35:53
Как решили?
Прокидыванием внутрь контейнера докер сокета и там уже через докер апи по сопоставлению айпи контейнера, но у нас не только для этого был сокет внутрь прокинут

GoodMoodDealler
18.05.2018
13:36:22

Emil
18.05.2018
13:36:38
Ну тогда вот решение

Mike
18.05.2018
13:36:50
Весело у вас тут

Emil
18.05.2018
13:37:06
Там в итоге можно даже курлом и jq обойтись

Pawel
18.05.2018
13:45:07

Алексей
18.05.2018
13:46:04

Pawel
18.05.2018
13:46:15
нуну

Sergey
18.05.2018
13:50:43

Kirill
18.05.2018
14:08:36
Здравствуйте, никто не хочет побыть ментором? Мне нужен ментор\помошник возможно консультант, не знаю как правильнее будет звучать - проконсультировать по архитектуре и так далее, выслушать мои мысли и скорректировать их в нужном направлении. Не задаю вопросов не прогуглив всё что только можно, неплохо знаю английский, буду задавать только конкретные вопросы касаемо направления и лучшего решения в той или иной ситуации. Не бесплатно конечно. И не слишком часто. Буду рад фидбеку, спасибо

Google

Aleksandr
18.05.2018
14:11:33
чат в том числе для этого. бесплатно. велкам

Slava
18.05.2018
14:15:40

Oleg
18.05.2018
14:24:45
У кого-нибудь возникала необходимость засунуть в reflect.Value у которого к примеру *int внутри и засунуть в него другой reflect.Value c типом int внутри и наоборот. бьюсь на этим вопросом уже пятый час и не помогли многократное чтение документации, гугл.
Может кто справлялся с подобной проблемой?
https://play.golang.org/p/OpYQHIocNF2

GoodMoodDealler
18.05.2018
14:54:10
path, id, err = list[0], strconv.Atoi(list[1])
Как записать это правильно?
./scan.go:356: multiple-value strconv.Atoi() in single-value context
./scan.go:356: assignment count mismatch: 3 = 2

Alan
18.05.2018
14:54:48
Ты хочешь заполнить 3 переменные, а кладешь всего 2

Aleksandr
18.05.2018
14:55:04

GoodMoodDealler
18.05.2018
14:55:47

Andrei
18.05.2018
14:55:57

Aleksandr
18.05.2018
14:56:10

GoodMoodDealler
18.05.2018
14:56:12

Andrei
18.05.2018
14:56:22
даже питон вот конкретно так не умеет

GoodMoodDealler
18.05.2018
14:56:28
Крч как мне изящнее поступить чтобы не заводить кучу переменных?
Крч как это можно сделать изящно?
Подскажите

Aleksandr
18.05.2018
14:57:18
в любом случае раскидать в 2 строки, в одной определить path, в другой id и err

Andrei
18.05.2018
14:58:15
Умеет
https://repl.it/repls/DifferentTiredCoordinate не умеет

Aleksandr
18.05.2018
14:59:02
ну с оговорками
a, (b, c) = 1, return_tuple()
в любом случае в голанге так не выйдет

Andrei
18.05.2018
15:01:06