Grigoriy
Ребят, поделитесь кто плейлистом (кто работает слушая музыку) на работе в последнее время очень много отвлекающих факторов, приходится в наушниках работать
Стоит http://www.pimusicbox.com, умеет Spotify и TuneIn с уймой станций. Достаточно, чтобы дощёлкать до чего-то под текущее настроение.
Anonymous
жанр?
Вообще я в основном Рок и метал слушаю, но для работы нужно что-бы было и приятно для ушей и что-бы сильно не отвлекало
Axm
Вообще я в основном Рок и метал слушаю, но для работы нужно что-бы было и приятно для ушей и что-бы сильно не отвлекало
не уверен, что можно вот так посоветовать что-то с потолка. попробуй на http://di.fm станцию liquid trap, например. или http://listentothe.cloud. еще мне нравятся подборки noonpacific на 8tracks https://8tracks.com/noonpacific. еще можно слушать тематические радио на google music.
Axm
Ну не совсем. Тут больше Capital, BBC Radio и KISS.
что не совсем? я рекомендую с точки зрения своего музыкального вкуса, у них там инди-альтернатива-бритпоп-рок.
Chebyrash
А, ок )
Ivan
@onokonem а можно вопрос про презентацию, которая в пине? Есть какие-то примеры вот этих минусов Go? - Бойлерплейт везде - Лёгкая Питонификация
Daniel
https://www.slideshare.net/DanielPodolsky/golang-highload
Ivan
https://www.slideshare.net/DanielPodolsky/golang-highload
Стало понятнее, спасибо
Anatoly
Вчера, разбирая в книге по Go пример со стеком на слайсах, задался вопросом: ведь в продакшене в сервисах 24/7 использование такого "стека" на слайсах никогда не отдаст память системе, если его рассматривать как часть состояния сервиса: var m []string; ... /// push m = append(m, some_string) ... /// pop m = m[:len(m)-1]
Andrey
@onokonem спасибо
Anton
Всем привет😊
Pawel
Маленький оффтоп - как в atom вызвать окно терминала?
маленкий добрый совет - удалите atom
Anatoly
вы не пытались прочитать об этом или не поняли?
Я прочитал о том, что не рекомендуется возвращать интерфейсы, но натолкнулся на errors, который этой рекомендации противоречит.
Anatoly
в каком смысле? error - интерфейс
в Go не рекомендуется возвращать интерфейсы, а предпочтение необходимо отдавать конкретным типам
Anatoly
errors противоречит этой рекомендации
Илья
вроде оно https://github.com/golang/go/wiki/CodeReviewComments#interfaces
Pawel
что то мне с ходу не приходит в голову разумных причин не возвращать интерфейсы. хотелось бы понять, что имеется ввиду
Илья
ну, насколько я понимаю, идея в том, что интерфейсы - ограничение на входящие параметры, а функции должны возвращать конкретные типы
Pawel
господа, вы не поняли о чом там спич. А он о том, что не надо объявлять не используемые интерфейсы. И вовсе не о том, что вы сказали) Если можно вернуть из функции конкретный тип, который удовлетворяет интерфейсу. Это равнозначно тому, чтобы вернуть интерфейс, но код при этом более чистый.
Pawel
Если вызывающий код использует интерфейс, как это в случае с обработкой ошибок, то можете смело возвращать из функции этот интерфейс
Axm
Там же написано, что интерфейс должен в общем случае делать на стороне, которая им пользуется. Возвращать из другого пакета чужой интерфейс в таком случае не очень выглядит. Ну и не определишь свойства тогда.
Pawel
в статье речь о том, что не надо делать что-то типа такого : type MyError interface { Error() string }
Pawel
ибо не фиг
Pawel
а надо : type MyError struct { ... } func (x MyError) Error() string { ... }
Илья
хм, насколько я понял, в статье как раз говорится возвращаёте конкретные типы, насколько я понимаю, с error вышла путаница, тк это builtin interface, и, поскольку нет консруктора для дефолтной ошибки, они сделали конструктор
Илья
чтобы бойлерплейт не стал еще больше, тк в каждом пакете пришлось бы еще свою ошибку заводить
Pawel
"нет консруктора для дефолтной ошибки," - есть. только не конструктор, а функция
Pawel
чтобы бойлерплейт не стал еще больше, тк в каждом пакете пришлось бы еще свою ошибку заводить
в каждом пакете можно экспортировать свой объект, тип которого удовлетворяет error. это - best paractices
Pawel
?? что ??
в го нет конструкторов
Илья
в го нет конструкторов
конструктор - это не только про ООП, функции-констукторы тоже есть
Илья
:)
Илья
всё, что сейчас используется для обёртки ошибки, fmt.Errorf, который внутри делает errors.New
Илья
https://golang.org/src/fmt/print.go?s=5540:5590#L194
Илья
без этого шортката, каждый пакет обязан был создавтаь свой тип для ошибки
Pawel
и чем же функция конструктор по вашему отличается от обычной функцииии? fmt.Sprintf - это конструктор?
Pawel
без этого шортката, каждый пакет обязан был создавтаь свой тип для ошибки
есть ещё errors.New, но я ни фига не пойму шо вы хотите доказать
Pawel
без этого шортката, каждый пакет обязан был создавтаь свой тип для ошибки
интерфейс error - это и есть тип ошибки. не фиг его создавать. а вот создавать типы, удовлетворяющие error, можно сколько хочешь, ни чего плохого в этом не вижу
Pawel
мы точно об одной статье говорим? https://github.com/golang/go/wiki/CodeReviewComments#interfaces
абсолютно. я так и не понял в чём вы там видите противоречие с рекомендациями по обработке ошибок и использованию error
Pawel
и наоборот, возвращать конкретный тип вместо общего интерфейса - не правильно. Вон сегодня чел в коментариях на хабре жалуется дивану на fat pointer с nil data pointer и валидным vtable pointer https://habrahabr.ru/post/339192/ это потому, что у него не error, а какие-то его собственные типы возвращаются из функции
Alexander
Есть кусок кода, В нём select limit 1000; update selected; как изолировать эту функцию, чтобы нельзя было вызвать её несколькими горутинами одновременно? #вопрос
Alexander
мьютекc?
var mu = sync.Mutex{} func GetPendingBankTransfers(resp http.ResponseWriter, req *http.Request) { mu.Lock() UPDATE mu.Unlock() } Так верно?
ceiling cat
и ещё три ` в конце
ceiling cat
атдуши
ceiling cat
mu.Lock() defer mu.Unlock() UPDATE
принципиальной разницы же нету вроде, если в конце анлок? Дефер отработает в случае паники?
Anatoly
принципиальной разницы же нету вроде, если в конце анлок? Дефер отработает в случае паники?
нет разницы, но где захватываешь, там и откладывай освобождение
ceiling cat
Да или нет? :D
Илья
Да или нет? :D
https://blog.golang.org/defer-panic-and-recover
Мерль
принципиальной разницы же нету вроде, если в конце анлок? Дефер отработает в случае паники?
Есть Если у тебя запаникует функция, то defer выстрелит всё равно
ceiling cat
Во, спасибо
ceiling cat
Всё таки defer одна из самых крутых штук в go
Alexander
fatal error: sync: unlock of unlocked mutex fatal error: sync: inconsistent mutex state
Alexander
Как так?
Anonymous
Alexander
а, точно.
Илья
вообще в веб лучше использовать канал, чтобы можно было select с default case, чтобы при повторном вызове говорить, что занято, а не вешать приложение
Alexander
кстати да, я как раз повесил
Alexander
а как правильно написать?
Мерль
Илья
делаешь канал с бфуером 1, делаешь селект, с записью в канал и дефолтным кейсом 409 каким-нибудь, 1ый воркер запишет в канал, в конце работы читает из канала, что-нибудь такое
Daniel
и?