@proGO

Страница 1286 из 1674
Ilnur
12.03.2018
20:22:46
+ конфиги руками писать и читать приходится, и тут yml лучше всего подходит

Vladimir
12.03.2018
20:22:54
хотя прошло уже 6 лет

Roman
12.03.2018
20:23:25
мне конфиг в xml на 20кб до сих пор в кошмарах снится
аналогично, раньше работал в конторе где API был на XML, я там чуть жабу не съел

+ конфиги руками писать и читать приходится, и тут yml лучше всего подходит
yml это конечно красивенько и классненько но... один хер сложнее JSON в плане реализации парсера, может я конечно и не прав, но насколько я помню поддержка реализаций YML на разных языках храмает.. поэтому безопасности ради я бы JSON брал и не правился, це-ж мировой стандарт

Google
Ilnur
12.03.2018
20:39:52
угум, у json только один минус - следить за скобками приходится

Daniel
12.03.2018
20:44:18
мрачный кошмар, конечно, коллеги

Alexey
12.03.2018
20:46:12
Да товарищ троллит, наверняка.

Daniel
12.03.2018
20:47:21
1. json заставляет следить за скобками, кавычками и запятыми. учитывая, что парсер не выдает позицию в файле, в которой он обнаружил ошибку, использовать его в качестве конфига - не любить пользователя 2. yaml и toml - хороши, но, опять же, строку, в которой найдена ошибка синтаксиса, вам никто не сообщит 3. xml маршалер и анмаршалер - самые функциональные из имеющихся, ибо только они позволяют сохранить позицию комментария, и сериализовать вместе с ним. можно сделать генератор дефолтного конфига с пояснениями.

Vladimir
12.03.2018
20:50:32
@onokonem я взял ща toml, сломал конфиг, получил: While parsing config: (16, 3): unexpected token table array key cannot contain ']', was expecting a table array key

ровно на 16-ой строке в 3-ем сиволе и сломано )

Roman
12.03.2018
20:51:05
но вот насчёт комментариев да, если они нужны тогда JSON не вариант

Vladimir
12.03.2018
20:51:28
@onokonem и с ямлом не прав: While parsing config: yaml: line 21: did not find expected key

да, у ямла ошибка хуже чем у томла

но строка указана верно

Google
Roman
12.03.2018
20:53:30
что насчёт JSON schema? она может конкретно на валидность проверить не только синтаксис но и структуру конфига

Mykyta
12.03.2018
20:58:09
В жсоне как вариант использовать какое-то невалидное поле в качестве примера или комментария, например ставить _ вначале

Ilnur
12.03.2018
21:06:40
что насчёт JSON schema? она может конкретно на валидность проверить не только синтаксис но и структуру конфига
хм, "джсоновый" dsl для описания структуры документа, вроде норм, но это можно средствами яп делать по идее

Daniel
12.03.2018
21:10:48
Ilnur
12.03.2018
21:15:32
да вроде норм

против yml (а может за?) можно назвать возможность наследования

https://web.archive.org/web/20130213112648/http://blog.101ideas.cz/posts/dry-your-yaml-files.html

Daniel
12.03.2018
21:16:18
@onokonem и с ямлом не прав: While parsing config: yaml: line 21: did not find expected key
хорошо бы имя парсера указать. а то в стандартной-то библиотеке нет ни того, ни другого

Ilnur
12.03.2018
21:16:25
у нас в проекте из-за этой "фичи" конфиг читать невозможно, придется рефакторить

Vladimir
12.03.2018
21:16:44
Вероятно ямл.в2

И сожжённые суши

Arch
13.03.2018
10:17:34
Народ, привет! Подскажите, создал мапу[string]*struct, в ранее упомянутом struct есть мьютекс для синхронизации, так вот пытаюсь в двух ключах мапы этот самый мьютекс залочить в двух горутинах, естественно, чтобы можно было менять сразу две struct, а оно на меня рычит, паникой плюется мол конкурентная рид-врайт, МБ я что-то не так делаю)) Естественно, если всю мапу в мьютекс обернуть, все живет в добром здравии. Но тогда теряется всякая надежда на конкуретную работы с кусками мапы. По факту же у меня в мапе хранится просто указатель на структуру, чего ему не нравится?

Alexei
13.03.2018
10:24:00
не нравится, что ты в мапу лезешь в горутинах без мьютексов, тут кто-то пытался сделать мапу такую, как ты хочешь, но чем закончилось - хз, по-моему @kirilldanshin

Alexei
13.03.2018
10:24:46
ну по сути это мапа с мьютексами же )

Alexei
13.03.2018
10:25:04
да, но суть та же

Google
John
13.03.2018
10:25:11
Vladimir
13.03.2018
10:25:22
да, но суть та же
Это две мапы, одна из которых с мьютексом

Alexei
13.03.2018
10:25:35
зато без велосипедов :)
ну вот как раз она с велосипедом )

John
13.03.2018
10:25:46
Artem
13.03.2018
10:26:11
https://play.golang.org/p/kxAEc22ipe1 всё ок

Arch
13.03.2018
10:26:43
Я пытаюсь в мапе менять значения одновременно в двух структурах

Vladimir
13.03.2018
10:27:39
Я пытаюсь в мапе менять значения одновременно в двух структурах
ты можешь менять то что внутри структуры, но не саму структуру заменять на другую. Также нельзя добавлять новые. Без лока конечно же

Arch
13.03.2018
10:27:48
Нельзя
Почему, по факту в мапе живут только указатели на структуры, внутри структуры я ставлю лок

Vladimir
13.03.2018
10:28:06
Почему, по факту в мапе живут только указатели на структуры, внутри структуры я ставлю лок
ну покажи код который у тебя паникует. Минимальный пример на play.golang

Arch
13.03.2018
10:28:31
Все дошло!!!!!!!!!!!

Alexander
13.03.2018
10:28:47
Так так и есть
Мб ты указатели пытаешься опять положить в map?

Arch
13.03.2018
10:29:04
Когда я пытаюсь работать со структурой, то вхожу в нее через мапу, вот оно и ругается

Base[Symbol].List[TF] = ....

Kirill
13.03.2018
10:30:05
Да закопируй поинтер и фсё

Google
Alexander
13.03.2018
10:30:22
Base[Symbol].List[TF] = ....
Не надо так)

Kirill
13.03.2018
10:31:06
++
Но сразу скажу - будешь добавлять поинтеры - блокируй и чтение

Alexander
13.03.2018
10:31:26
Arch
13.03.2018
10:31:31
Не надо так)
Рад бы, да нужна структура двух уровневого ассоциативного массива

Kirill
13.03.2018
10:31:56
Если не через канал добавление
4 мьютекса зочем тащить?

Alexander
13.03.2018
10:32:39
4 мьютекса зочем тащить?
Все от архитектуры...

Admin
ERROR: S client not available

Arch
13.03.2018
10:33:01
Если не через канал добавление
Не, все каналы уже пройдены - это финальный шаг

Alexander
13.03.2018
10:33:15
sync.Map выше рекомендовали уже

Kirill
13.03.2018
10:33:58
sync.Map выше рекомендовали уже
Я не рекомендовал его до того, как это стало мейнстримом

Arch
13.03.2018
10:36:00
На сколько я помню там мап по бенчу медленный какой-то

Мне правда просто поинтер надо было в новую переменную скопировать на структуру и все

Kirill
13.03.2018
10:36:31
И держит две копии данных

Arch
13.03.2018
10:36:48
Alexander
13.03.2018
10:36:59
И держит две копии данных
Для поинтеров не критично

Kirill
13.03.2018
10:38:40
И ты всегда можешь прочитать старые данные

Google
Kirill
13.03.2018
10:39:45
А насколько же вам будет приятно, когда вы поймаете момент, когда будете читать устаревший поинтер?

Alexander
13.03.2018
10:40:26
Если поинтер никогда не меняется

Хотя тогда правда и смысла в sync.Map нет)

Kirill
13.03.2018
10:41:12
Все по ситуации, может быть тоже не критично
Если, конечно, вы не словили баг gc

Arch
13.03.2018
10:54:59
Работает, реально дело было в обращении к структуре через мапу, сторло указатель в переменную вынести и все ожило

Спасибо всем откликнувшимся, кто натолкнул на мысль.

Roman
13.03.2018
17:25:29
https://github.com/qbeon/webwire-go/blob/master/message.go#L693 стоит ли данный switch statement превратить в jump table?

Daniel
13.03.2018
17:27:25
а что такое jump table?

Roman
13.03.2018
17:31:32
Daniel
13.03.2018
17:31:57
скорее всего - будет медленнее и менее читаемо.

не говоря уже о runtime контроле типов

Roman
13.03.2018
17:33:55
скорее всего - будет медленнее и менее читаемо.
а вот я слыхал что jump table порой быстрее switch'а

https://hashrocket.com/blog/posts/switch-vs-map-which-is-the-better-way-to-branch-in-go

Daniel
13.03.2018
17:34:41
ну - померяйте, че

не понятно, с чего бы ему быть быстрее

Roman
13.03.2018
17:34:59
"I assumed that switches would be faster. I was wrong. Maps are usually faster, often several times faster."

Alexander
13.03.2018
17:35:40
Additionally, even if that is the case, the memory access pattern and branch prediction success rate have a bigger impact on performance than the choice of a switch or map.

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