@gogolang

Страница 1086 из 1630
Aleksandr
21.05.2018
03:58:47
бинарник закоммитил, картинки, конфиги

структуры приложения нет - просто все на одном уровне накидано

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

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
Кто ради уважения труда разработчика будет платить деньги?
Я, например. Купил пару приложух в андроиде просто из уважения, хотя и бесплатные версии меня устраивали. Правда, это копейки. Но всё таки.

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

Не выдержан общий стиль работы с локами. Где то снимаешь лок через defer где то сам снимаешь перед return
Это не проблема, если сделано ради скорости в месте, где не может быть panic. Всё-таки, у defer накладные расходы больше, чем взятие+отпускание мьютекса (если нет контеншена).

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

Yura
21.05.2018
06:13:25
Да я знаю, я тому что лучше в одном стиле и желательно без defer
defer точно нужен, если может быть паника, которую кто-нибудь перехватит. И он удобен, если мьютекс защищает много кода.

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

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

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

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

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
а приватные мапы задолбаешься парсить из json, например. придется лепить еще более сложные костыли. тут нужен баланс, не надо все инкапсулировать, тем более в таком простом проекте, имхо
а может не надо смешивать слой, отвечающий за ввод/вывод (парсинг) и слой, отвечающий за бизнес логику (конкурентная работа с мапой)

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

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

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

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
Херово что система типов никак не показывает, что с типом данных можно безбоязненно общаться конкуррентно

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

может им пропозал написать?
Это дженерики нужны будут, не примут

Sergey
21.05.2018
09:07:38
эх..

Google
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
было бы круто внести синхронизацию в язык, это бы, действительно, помогло. но! они же хотели, чтобы мы вообще мутексами не пользовались, а пользовались другими способами. каналами, к примеру

Admin
ERROR: S client not available

Mike
21.05.2018
09:10:27
было бы круто внести синхронизацию в язык, это бы, действительно, помогло. но! они же хотели, чтобы мы вообще мутексами не пользовались, а пользовались другими способами. каналами, к примеру
В джаве она есть, это не сильно помогает. Все равно никаких гарантий, что новый джун не забудет написать кейворд synchronized в critical section

Daniel
21.05.2018
09:10:37
пробрасывая immutable data structures?
копию пробрасывая...

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: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
я не сильно компетентен в хайлоаде, но мне кажется, что если каналы стали боттлнеком, то нужно пересмотреть используемые инструменты и подход.

Mike
21.05.2018
09:23:22
самое неприятное в каналах то, что они медленные
Они в го mpmc? (multiple producers, multiple consumers)

Daniel
21.05.2018
09:24:19
да

Страница 1086 из 1630