Daniel
ну вот я не очень уверен, что так уж мало там останется.
Anonymous
Мне кажется, больше кода - больше шанс ошибиться. Дженерики уменьшат объём кода (не нужно заниматься кодогенерацией).
Лёша
а есть какой-нибудь чат like golang_begginers, ну или человек, который непрочь отвечать на вопросы новичков?
Daniel
есть канал #school в слаке
Igor
@NXShock а мне кажется что дженерики код усложнят
Лёша
я пока gobyexample.com прохожу, просто некоторые вещи, типа Non-Blocking Channel Operations не сразу понятны
Anonymous
дженерики - это та же кодогенерация, только спрятанная под капот
Инкапсуляция это хорошо. Больше думаешь о деле, а не о том, как нагенерировать все функции для всех типов :)
Igor
я не хочу читать вот говно опять testMethod(Class<? extends ShapeProcessor<? extends Shape» a) {}
Michael
я пока gobyexample.com прохожу, просто некоторые вещи, типа Non-Blocking Channel Operations не сразу понятны
я проходил только тур, там вроде понятно было кмк но на вопросы тут кто-нибудь да и ответит
Igor
@NXShock да, но читать это все равно не очень приятно
Igor
но то что я тупой это не отрицает
Anonymous
Ну так наследование и дженерики вроде несколько разные вещи :)
Anonymous
P.S. ещё в Nim всё красиво
Daniel
как только ты прячешь под капот кодогенерацию - ты прячешь туда и нейминг. и ссылаться на параметрические типы тебе придется с указанием параметрического имени. и читабельность упадет резко. тем более, что большинство программеров не знают меры :(
Michael
там красиво пока собрать не попробуешь
Мерль
так не надо так делать
Но так делают и часто это единственный способ
Мерль
зачем нужны дженерики если есть интерфейсы? 🙂
Интерфейсы покрывают не все приложения дженериков и наоборот Есть множество проблем, которые решают оба этих подхода (например, гетерогенные коллекции)
Мерль
Мерль
Забудь. Это херь из версии go 92го года, которую лет через 15 из go выпилили, а в жабу впилили
аааыыыы Я конечно много чего в этих ваших интернетах видел, но вот чтобы мне доказывали, что анбоксинг и приведение к нужному типу в райнтайме - это более прогрессивно, чем дженерики - такое я вижу впервые
Anton
вчера на ютубе доклады с гоферкона 2017 появились. вроде еще не было в чатике ;) доклады: https://www.youtube.com/playlist?list=PL2ntRZ1ySWBdD9bru6IR-_WXUgJqvrtx9 лайтинги: https://www.youtube.com/playlist?list=PL2ntRZ1ySWBfhRZj3BDOrKdHzoafHsKHU
Ivan
аааыыыы Я конечно много чего в этих ваших интернетах видел, но вот чтобы мне доказывали, что анбоксинг и приведение к нужному типу в райнтайме - это более прогрессивно, чем дженерики - такое я вижу впервые
Ну это же Go и гоферы. Это не просто язык программирования и сообщество программистов. Это как религия и ярые монахи-последователи. Есть Go Way, который дали пресвятые Роберт, Роб и Кен, и любые обсуждения (а тем более осуждения) строго пресекаются и наказываются. В Go не надо думать, в Go надо следовать Особому Пути Go.
Мерль
go generate очень распространен :)
Это всего лишь запускалка, для неё нужно писать свой кодогегератор или использовать один из сотни готовых Это не есть хорошо, т.к. к каждому проекту надо тащить либо ещё и список генераторов (привет, дополнительные зависимости), либо дополнительный пакет со своим генератором
Valentin
CI все сама генерит при сборке
Ivan
CI все сама генерит при сборке
генераторы она тоже сама напишет? :)
Valentin
1 раз написал и все само будет собираться, я это имел ввиду
Valentin
Я не против дженериков если что :))
Valentin
Я весь чат не читал, но так понял спор о них был изначально
Zhenja
генераторы она тоже сама напишет? :)
крупные компании могут позволить себе отдельного человека на написание генераторов. Человек-дженерик
Valentin
:D
Zhenja
Дженерики не нужны. дополнительные рабочие места, опять же
Anonymous
лол
Ivan
error handling из той же серии - больше кода, больше рук, больше рабочих мест)
Мерль
CI все сама генерит при сборке
Это очень здорово (хотя не понятно зачем, ведь генерация мне нужна ещё на стадии написания самого кода собственно, никакая IDE и никакие плагины не поддерживают пока кодогенерации), но для того, чтобы мне использовать этот генератор, мне либо надо его написать (отдельный геморрой с поддержкой ещё и генератора) либо прикручивать один из 100500 генераторов написанных до меня (и не дай бог, если я использую библиотеку с ещё одним генератором, начинается рекурсивный адъ кодогенарации) В итоге разумеется нормальный программист плюнет на это дерьмо и будет кастовать интерфейсы (середина 2017 года, компилируемый язык системного назначения, дадаад)
Ivan
Senior Error Handler Engineer Error Handler Engineer Team Lead
"покажи, как ты хэндлишь ерроры, и я скажу какой твой левел" 😂
Мерль
"покажи, как ты хэндлишь ерроры, и я скажу какой твой левел" 😂
Мои вкусы очень специфичны: if err := doShit(); err != nil { panic(err) }
Zhenja
if doShit() != nil { panic(doShit()) }
Michael
if doShit() != nil { panic(doShitNaJavaIliCSharp()) }
Alexey
Го вей - это прежде всего простота и немагичность.
Anonymous
эх, поною еще немного, может, кто откликнется. в общем, взял погонять VPS-ку, запустил там ipfs daemon запустил ipfs daemon на своем компустире и сделала ipfs add file.txt получил хэш и сделал на VPS-ке ipfs cat $hash в итоге, стоит вот так уже минут 10 и есть у меня подозрение, что ничего вообще не происходит кто-нибудь знаком с IPFS, чтобы подсказать в чем беда?)
Alexey
Еслт чего то не хватает - сделай это сам.
Vladimir
давайте я тоже поною что ли для разнообразия
Vladimir
пишу демон, захотел сделать ему нормальный graceful stop. А у net.Listener нет SetDeadline
Vladimir
и будет только в Го 2.0
Vladimir
притом что у TCPListener и UnixListener метод то есть
Anonymous
пишу демон, захотел сделать ему нормальный graceful stop. А у net.Listener нет SetDeadline
Там и в работе с SOCKS серверами трабла есть, нельзя указать таймаут. Лечится костылем, думаю можно и для вашей задачи костыль придумать
Vladimir
@DeNZeL13 просто приходится теперь держать вместо net.Listen - interface{}, смотреть кто этот интерфейс - net.UnixListener или net.TCPListener
Vladimir
и написать дважды код выставления таймаутов
Vladimir
и так в 3-х местах
Vladimir
Ну да, есть косяки в го, есть над чем разрабам работать )
ну просто добавить SetDeadline метод это просто должно быть
Vladimir
но Go 2.0 :)
Anonymous
Ну в 2.0 ) Только когда он будет )) эххх
Vladimir
тем более то у нижележащих структур методы есть
Vladimir
то есть кажется что достаточно добавить 1 строку в net.go и все будет
Vladimir
а да, бага с 2013 года висит )
Anonymous
socks5.go прошу прощения
Anonymous
Anonymous
Давай сначала. Откуда взял ipfs и какой версии?
Anonymous
ipfs version 0.4.10 взял с ipfs.io
Anonymous
и на локальном и на VPS-ке та же версия
Anonymous
QmcXx5mKDQAc7tCWLq84Hn7XFxWfBdZpvogJk3tNXQRFiv Такой хеш со своего хоста качает?
Anonymous
может я тупой и не так делаю?)
Anonymous
Тоже висит что-ли?
Anonymous
ага
Anonymous
поговаривают, что макбук мог не приконнектится к сети
Anonymous
Останавливай все демоны. Затем удали ~/.ipfs. Затем делай ipfs init Затем ipfs daemon Затем ещё раз попробуй ipfs cat QmcXx5mKDQAc7tCWLq84Hn7XFxWfBdZpvogJk3tNXQRFiv
Anonymous
хех