
Aleksandr
21.05.2018
03:58:47
бинарник закоммитил, картинки, конфиги
структуры приложения нет - просто все на одном уровне накидано

Stanislav
21.05.2018
04:10:39
шаблон впилен в код, без перекомпила шаблон не поменять

Alexander
21.05.2018
04:14:58

Google

Сергей
21.05.2018
04:17:14
Я про структуру store
Blacklist.Clear логичнее использовать тикер ну и выглядеть будет понятнее чем sleep
Самое важное нет тестов...
Не выдержан общий стиль работы с локами. Где то снимаешь лок через defer где то сам снимаешь перед return

Yura
21.05.2018
06:04:49

Данила
21.05.2018
06:05:20
Кто ради уважения труда разработчика будет платить деньги?

Yura
21.05.2018
06:07:47

Сергей
21.05.2018
06:08:42

Yura
21.05.2018
06:09:13
Другое дело - поддержка. Если программа сложная и полезная, то пользователь может захотеть иметь возможность спросить тебя, послать баг репорт.

Сергей
21.05.2018
06:11:46

Google

Мерлин
21.05.2018
06:12:23

Сергей
21.05.2018
06:12:26
Тем более нет сложных ветвлений

Yura
21.05.2018
06:13:25

Сергей
21.05.2018
06:14:13
Это да,но не в этом случае.код маленький и без паники ?

Nikita
21.05.2018
06:22:43
ребят, кто-нибудь может скинуть, как слать responce в GoLang ?
мануал какой-нибудь

Aleksandr
21.05.2018
06:23:30
resp.Write(...)

Nikita
21.05.2018
06:23:52
спасибо !

tsov
21.05.2018
06:34:15
ок, спасибо коллеги! буду править. тестов добавлю.

Илья
21.05.2018
06:55:34

Сергей
21.05.2018
06:57:48
Почему вам это кажется логичнее?
Потому что это часть внутренней кухни и не должна быть публичной.
Если посмотрите ещё на stdlib то вряд ли найдёте (во всяком случае я не нашёл) структуру где мьютексы встроены в структуру. Они всегда являются явным приватным атрибутом.

Илья
21.05.2018
07:01:34
Это вкусовщина, встраивание мутекса вполне обычная ситуация, чуть ли не в примерах с мутексами используется, а вот публичный Store у коллеги, это плохо, тк можно руками туда залезть

Сергей
21.05.2018
07:01:35
На мой взгляд встраиваться должны внешние зависимости например какие нибудь сервисы или соединения с бд то что по хорошему должно шариться между разными объектами.

Илья
21.05.2018
07:10:28
Также «единый стиль» работы с мутексами, то же вкусовшина, если в функции несколько точек выхода, я бы вешал дефер (если нет критичной производительности), но это не повод везде писать деферы

Сергей
21.05.2018
07:12:46

tsov
21.05.2018
08:46:35
поправил часть
про встраивание мьютекса - не вижу проблем с этим. ну доступны локи снаружи пакета, не критично, иногда даже полезно бывает, т.к. мапа не приватная

Sergey
21.05.2018
08:54:51
> ну доступны локи снаружи пакета, не критично
согласен

Andrei
21.05.2018
08:56:04
неприватные мапы опасны в том смысле, что использующий код разработчик может банально забыть про необходимость работы с мьютексом

Google

Sergey
21.05.2018
08:56:26
ой, да когда это вообще случается?
забыл про мьютекс — сам виноват

Andrei
21.05.2018
08:56:53
я стараюсь везде, где возможна гонка, делать структуры приватными и давать наружу только гетеры и сетеры

tsov
21.05.2018
08:59:15
а приватные мапы задолбаешься парсить из json, например. придется лепить еще более сложные костыли. тут нужен баланс, не надо все инкапсулировать, тем более в таком простом проекте, имхо

Sergey
21.05.2018
09:00:04
+++

Andrei
21.05.2018
09:00:23

Mike
21.05.2018
09:01:11
Глупости какие-то
Вот как случится гонка — тогда и будем думать

The
21.05.2018
09:01:43

Mike
21.05.2018
09:02:21
это сарказм?
Как и все сообщения кроме сообщений Романа, который не прав и Андрея, который не выкупает сарказм

The
21.05.2018
09:03:07
мне кажется андрей "не выкупает" сарказм, так как его там просто нет.

Sergey
21.05.2018
09:03:25

Mike
21.05.2018
09:03:34
Есть, есть)
Сергей же жирный тролль из расточата

tsov
21.05.2018
09:05:32
донован одобряет встраивание мьютексов. а вот геттеры и сеттеры это инакомыслие

The
21.05.2018
09:05:55
Если я вижу структуру с экспортируемыми полями, я сразу делаю вывод, что конкурентного обращения с ней делать нельзя, какие бы у неё методы не присутствовали. Если я вижу структуру с проброшенными методами для доступа, тогда я делаю осторожный вывод, что там внутри мьютекс. Но если его там нет, вот тогда это странно.

Mike
21.05.2018
09:06:59
Херово что система типов никак не показывает, что с типом данных можно безбоязненно общаться конкуррентно

Sergey
21.05.2018
09:07:17

Mike
21.05.2018
09:07:18
Приходится в код лезть смотреть как там реализованы методы доступа

Sergey
21.05.2018
09:07:38
эх..

Google

Daniel
21.05.2018
09:07:52

The
21.05.2018
09:07:58
обычно, об этом пишут в доке к структуре

Sergey
21.05.2018
09:08:10
ненене, это потому, что слишком сложно

Andrei
21.05.2018
09:08:14

Daniel
21.05.2018
09:08:15
вот да. но могут же написать, а потом переписать

Mike
21.05.2018
09:08:49
это потому, что нельзя
Ну а потом получается что на одной структуре висят дабл локи, один внутренний, другой внешний, потому что юзер не знал что внутри уже есть мьютекс)

Daniel
21.05.2018
09:09:28
было бы круто внести синхронизацию в язык, это бы, действительно, помогло. но! они же хотели, чтобы мы вообще мутексами не пользовались, а пользовались другими способами. каналами, к примеру

Sergey
21.05.2018
09:10:14

Admin
ERROR: S client not available

Mike
21.05.2018
09:10:27

Daniel
21.05.2018
09:10:37

Mike
21.05.2018
09:10:48

Sergey
21.05.2018
09:10:50

Mike
21.05.2018
09:10:52
Мач перформанс

Daniel
21.05.2018
09:11:03
ой, перестаньте

Александр
21.05.2018
09:11:03
если сотворили глобальный счетчик какой либо

Mike
21.05.2018
09:11:24

Александр
21.05.2018
09:11:32
да знаю про них

Daniel
21.05.2018
09:11:37
ну вот

Google

Александр
21.05.2018
09:11:39
они же мьютекс оборачивают?

Daniel
21.05.2018
09:11:45
нет, наоборот

Sergey
21.05.2018
09:11:46

Mike
21.05.2018
09:11:49

Daniel
21.05.2018
09:11:52
это мутексы сделаны на атомиках

Александр
21.05.2018
09:12:26
не знаю
в кишки не лезу по возможности
работаю по возможности как с "черным ящиком"

Daniel
21.05.2018
09:13:06
а надо бы знать, если на перформанс топить

Александр
21.05.2018
09:13:34
обычно перфоманс явно просаживается не на уровне приложения

Mike
21.05.2018
09:13:47

Daniel
21.05.2018
09:14:46
"барьеры памяти" в нем базовые. с тех пор, как в проце есть кеш, и ядер больше одного

The
21.05.2018
09:19:23
копию пробрасывая...
подлянка в том, что даже если саму структуру копировать, то её ссылочные поля передаются по ссылке, и всякие слайсы/мапы тоже, что делает процесс копирования генерацией бойлерплейта

Daniel
21.05.2018
09:20:00
на самом деле - это все вопрос дизайна
совершенно не обязательно шарить что попало
самое неприятное в каналах то, что они медленные
правда, узнать об этом можно только в очень специфических случаях

The
21.05.2018
09:22:24
я не сильно компетентен в хайлоаде, но мне кажется, что если каналы стали боттлнеком, то нужно пересмотреть используемые инструменты и подход.

Sergey
21.05.2018
09:22:55

Mike
21.05.2018
09:23:22

Daniel
21.05.2018
09:24:19
да