@proGO

Страница 1548 из 1674
Nikita
03.07.2018
19:16:35
угу

Roman
03.07.2018
19:19:27
правда мутабельность опять всё портит..

можно изменить состояние конфига во время исполнения теоретически

Никита
03.07.2018
19:21:28
И что? Вы же этого делать не собираетесь

Google
Vadim
03.07.2018
19:31:12




Roman
03.07.2018
22:38:50
И что? Вы же этого делать не собираетесь
да опасно блин, компилятор не даёт гарантий..

есть вообще планы завести имутабельность в Go?

Никита
03.07.2018
22:39:47
Зачем?

Roman
03.07.2018
22:44:06
Гарантий чего?
имутабельности блин

Никита
03.07.2018
22:44:19
Ну а зачем она нужна ?

В контексте Го

Roman
03.07.2018
22:44:29
Зачем?
ну как зачем... чтоб избежать лишние копии не потеряв compile-time безопасность

Ну а зачем она нужна ?
представь себе, что ты пишешь библиотеку для гитхаба и твоя библиотека ведёт учёт чего-либо... например регистр пользователей... и у тебя есть метод передачи списка зарегистрированных пользователей lib.GetUsers() []lib.User так вот проблема в том, что ты либо отдаёшь копию (deep copy) слайса пользователю библиотеки, либо отдаёшь сам слайс, но UPPERCASE'ОМ в документации пишешь что НЕЛЬЗЯ МУТИРОВАТЬ ПОЛУЧЕННЫЙ СЛАЙС!!!

Никита
03.07.2018
22:48:57
Ну а зачем его мутировать человеку то?)

Roman
03.07.2018
22:49:20
а это херово... приходится жертвовать производительностью для получения безопасности.. в C++ же мы можем передать пользователю указатель на константу и компилятор будет бить по рукам, если пользователь библиотеки где либо попытается мутировать этот объект

Google
Roman
03.07.2018
22:50:16
Ну а зачем его мутировать человеку то?)
это банальный пример для пояснения проблемы, а проблема такова: компилятор промолчит и ничего не скажет.

Никита
03.07.2018
22:50:43
Нет ну просто странная ситуация получается

Никто менять значение не собирается

Но при этом надо ещё чтобы и компилятор гарантировал это

Тут больше ответственность лежит на разработчике

Зачем менять то, что ты менять не собираешься

Roman
03.07.2018
22:52:27
Нет ну просто странная ситуация получается
странная ситуация получается, когда мы получаем undefined behavior, когда кто-то где-то что-то мутировал... пользователь библиотеки мог бы сказать мол "я не мутирую этот слайс, я лишь передаю его в третью функцию"... а там... где-то в глубине callstack'а какой-то тридевятиземельный программист мутирует какой-то слайс, который в конце оказывается ссылкой на тот массив из той библиотеки и всё взлетает на ветер и никто не понимает почему..

Roman
03.07.2018
22:53:47
это-же копия
Копия чего?

Roman
03.07.2018
22:54:41
Никто менять значение не собирается
да бляха-муха... как часто вы в коллективном программировании (к этому относится и использование стороннего кода) в натыкались на то, что люди не (-внимательно) читают документацию? вероятность ошибиться и мутировать немутабельное - велико

Никита
03.07.2018
22:55:20
Я понимаю, да, что проще было бы иметь возможность создавать иммутабельные структуры данных

Roman
03.07.2018
22:55:51
а если кому compile time безопасность ни о чём не говорит то этому кому тут явно не место в чате про статически типизированный ЯП)) (извиняюсь за грубость)

про то, что в Go абсолютно всё мутабельное.. и приходится либо копировать, либо жутко рисковать, вот и задаюсь вопросом, есть ли надежда что завезут наконец?

Daniel
03.07.2018
23:04:56
Не известно

Roman
03.07.2018
23:06:16
Не известно
печально блин

хай секунду дольше компилился бы но с const qualifier'ами

Google
Daniel
03.07.2018
23:07:16
Ну - пока без них

Alexander
04.07.2018
03:31:30
Но ничто не мешает кастить и потом менять
Ничего не мешает запретить кастить конст указатели в мут указатели на уровне компилятора

Harry
04.07.2018
06:30:28
пасаны, каждый раз при запуске go файла просит разрешение сети. как енто убрать?

Kirill
04.07.2018
06:32:51
перейти на линукс/мак)00

вероятно в винде можно настроить чтоб всегда разрешение было

Harry
04.07.2018
06:33:55
зочем линукс. я ж не хацкер

Linux
04.07.2018
06:41:25
зочем линукс. я ж не хацкер
https://remontka.pro/uac-disable-windows-10/

Harry
04.07.2018
06:43:01
Linux
04.07.2018
06:45:01
Есть спецы монго? Ни то я тут уже на кофейной гуще гадаю как выполнить этот запрос в mgo db.getCollection('sstweb').findOne( { car_id:1}, { car_id:0, modules: { $elemMatch: { module: 1 } } } ).modules[0].module

Александр
04.07.2018
06:56:00
а в чем проблема?

Kirill
04.07.2018
06:56:02
можно тестировать запросы через какой-нибудь монго клиент

Александр
04.07.2018
06:56:06
там тоже findOne есть

Dmitri
04.07.2018
07:00:15
о спс бро
зря ты его благодаришь...

Harry
04.07.2018
07:02:05
Dmitri
04.07.2018
07:03:08
ну, как бэ, совет отключить контроль учетных записей к чОртовой матери заради "не спрашивать разрешения на сеть для одной приложухи"...

какбэ, UAC - это т.н. "проактивная защита"

Linux
04.07.2018
07:04:57
можно тестировать запросы через какой-нибудь монго клиент
Я оттестировал запрос в robo3t он работает сейчас хочу запихнуть его в mgo

а в чем проблема?
не знаю как добавить это: { car_id:0, modules: { $elemMatch: { module: 1 } } } и это .modules[0].module

Dmitri
04.07.2018
07:06:13
на фоне предположения, что отключение UAC - достойный способ разрешения проблемы запроса приложением доступа к сети, предложение перейти на линукс для решения проблемы - примерно из той же оперы.

Google
Dmitri
04.07.2018
07:08:01
ага, заодно софт с файлопомоек без вопросов будет устанавливаться, и вообще...

Linux
04.07.2018
07:08:34
ага, заодно софт с файлопомоек без вопросов будет устанавливаться, и вообще...
еще как вариант выключить сетевой фильтр, который наверное он знает как пилот

Dmitri
04.07.2018
07:09:06
ну вообще, есть вариант "сдать компьютер в магазин и попросить вернуть деньги"

тоже норм решение проблемы

Александр
04.07.2018
07:09:30
не знаю как добавить это: { car_id:0, modules: { $elemMatch: { module: 1 } } } и это .modules[0].module
gopkg.in/mgo.v2 var result *Model c := connect.C("DBNAME") err := c.collection().Find(bson.M{"car_id": 0 и далее}).One(&result) if err != nil { return nil, err }

Model это просто структура как json (у тебя же там json лежит?)

сгенерить можно тут - http://json2struct.mervine.net/

Linux
04.07.2018
07:10:26
Model это просто структура как json (у тебя же там json лежит?)
он мне вернет структуру а по моему запросу он мне вернект значение элемента

Алексей
04.07.2018
07:11:47
Linux
04.07.2018
07:15:08
err := c.collection().Find(bson.M{"car_id": 0, "modules" : bson.M{ и т.д. }}).One(&result)
что то я не вижу тут решения первое что он должен сделать это поиск Find(bson.M{"car_id": 1}). с таким шаблоном bson.M{"car_id":0,"modules": bson.M{"$elemMatch":bson.M{"module":1}}} и выбрать в этой структуре такой элемент .modules[0].module

Linux
04.07.2018
07:18:06
{ "_id" : ObjectId("5b3c52b51d9c9c8584ab45a4"), "car_id" : 1, "modules" : [ { "module" : 1, "session" : [ "hash1" ] } ] }

Алексей
04.07.2018
07:18:57
err := c.collection().Find(bson.M{"car_id": 1, "modules.module" : 1}).One(&result)

Linux
04.07.2018
07:19:49
я не понимаю чего то разве это не шаблон а где он мне найдет машину с идентификатором 1

или где используется шаблон для поиска

он же вернет структуру

?

а не значение поля?

Алексей
04.07.2018
07:21:52
А тебе только значение поля нужно в результате?

Google
Алексей
04.07.2018
07:23:43
Если да, то aggregate используй а не find, в нем можно пост обработку результата сделать

Алексей
04.07.2018
08:03:14
Тебе сначала необходимо куда нибудь получить результат. А потом уже его разобрать

В One он помещается у тебя

Linux
04.07.2018
08:04:42
Тебе сначала необходимо куда нибудь получить результат. А потом уже его разобрать
тоесть средствами mgo я не смогу получить просто цифру, только структуру которую потом разбирать средствами go?

DMITRY
04.07.2018
08:05:37
это же вроде логично

Linux
04.07.2018
08:09:42
это же вроде логично
Да ну, когда я работаю с пострес я указываю select value from my_table limit 1 и в го я получаю в конкретную переменную а не структуру mongo само позволяет вернуть мне цифру, тоесть я ожидаю что mgo имеет инструмент вернуть мне нужную цифру а не возвращать структуру с кучами полей

Алексей
04.07.2018
08:16:16
Mgo сам по себе в нутри Шлаковый)) хотел свою версию запилить с блекджеком и шлюхами)) но пока просто руки не доходят

Vasily Romanov
04.07.2018
08:31:29
пасаны, каждый раз при запуске go файла просит разрешение сети. как енто убрать?
В настройках брандмауэра есть возможность добавить исключения По имени проги или по порту

Страница 1548 из 1674