@proGO

Страница 1234 из 1674
Daniel
16.02.2018
15:03:23
можно не переделывать, кстати

хочешь отстрелить себе ногу - стреляй

Alexander
16.02.2018
15:04:16
)))

тогда смысл теряется

Google
Daniel
16.02.2018
15:04:54
нет, смысл как раз остается

Roman
16.02.2018
15:05:01
но без иммутабельности то никак

Daniel
16.02.2018
15:05:14
мы боимся не самих мутаций, а случайных мутаций

Alexander
16.02.2018
15:05:30
возвращай интерфейсы

Alexander
16.02.2018
15:05:39
в чем проблемма

Roman
16.02.2018
15:05:50
.At() .Find() etc.

Alexander
16.02.2018
15:05:51
IClient только с Get/ами

но от рефлекции не спасет сильно

Roman
16.02.2018
15:06:43
IClient только с Get/ами
не спасёт, дело не в том что хранится в списке, а то-что список мутабелен

Roman
16.02.2018
15:07:56
ладно, короче просто в документацие напишу что ни про коем обстоятельстве низзя мутировать список клиентов иначе придёт бармалей и всех зарежет нахрен

Google
Roman
16.02.2018
15:08:42
Arch
16.02.2018
15:09:19
в смысле?
Бамбарбия, киргуду. Шутка.

Roman
16.02.2018
15:09:24
про Бармалея? конечно... panic(fmt.Errorf("Free Barmaley, yaizen klaz klaz ahhh!"))

Arch
16.02.2018
15:10:23
The
16.02.2018
15:18:06
Друзья, а ещё такой вопрос, есть ли какая-то либа, которой на вход подаю строку n + 100 / 20.14 * 421, потом меняю n на число, и оно высчитывает значение. Что-то вроде калькулятора на польской нотации, только уже готовое.

The
16.02.2018
15:19:58
да они все просят, польскую нотацию это не сложно, просто нужно уже готовое чтобы не заморачиваться с тестированиями и прочим

Vlad
16.02.2018
15:20:09
Alexander
16.02.2018
15:26:24
возвращай список ID

хотя...

Roman
16.02.2018
15:27:16
возвращай список ID
не, лишний overhead

просто в доке пометить: "Не влезай, убьёт"

Daniel
16.02.2018
15:34:13
Можно, пожалуйста, разьяснение о "нетипизированных" ошибках
если тебе из чужой либы приехал error - это может быть что угодно, от EAGAIN до EFAULT, условно говоря. и никакого стандартного способа вернуть что-то анализируемое нет

Vlad
16.02.2018
15:35:34
Ну есть строка, описывающая ошибку.. но, кажется, я Вас понял. База вернула ошибку. И типа у нее нет, только строчное описание. И приходится извращаться. как же вернуть на UI хоть что-то

Я правильно Вас понял?

Google
Vlad
16.02.2018
15:36:06
Это конкретный пример из моих будней

Daniel
16.02.2018
15:36:07
да

Alexander
16.02.2018
15:36:19
так error этож интерфейс

там может быть и структура

ограничение - только фантазия

Daniel
16.02.2018
15:36:59
способы есть, стандартного нет

Vlad
16.02.2018
15:38:06
там может быть и структура
Да, и можно добавить что-то типа ErrorCode int

Alexander
16.02.2018
15:38:11
способы есть, стандартного нет
всм, если бы у ошибок была стандартная структура а не просто текст - гуд?

Vlad
16.02.2018
15:38:30
Но кто-то сделает, а кто-то -- нет

welcome to C
"Что поделать, десу?"

Alexander
16.02.2018
15:39:02
Но кто-то сделает, а кто-то -- нет
так везде, можно найти способ сделать иначе

Daniel
16.02.2018
15:39:53
всм, если бы у ошибок была стандартная структура а не просто текст - гуд?
гуд - это иерархия исключений, как в яве. и тут можно было бы с интерфейсами такое же замутить. но, как минимум, у интерфейса error должен появиться метод Code(), а лучше два, Kind() и Code()

Michael
16.02.2018
15:39:57
"Что поделать, десу?"
как мне представляется, возвращать строки об ошибках согласно доков, делать перевод на другие языки или более вменяемые описания и отдавать в юи

Alexander
16.02.2018
15:41:06
Michael
16.02.2018
15:43:28
иерахия исключений звучит хорошо, но врядли ли кто-то будет придерживать каких-то рекомендаций, и стройная иерархия превпратится в неизвестно что

Michael
16.02.2018
15:44:24
почему бы и нет
нет, так - нет)

Google
Alexander
16.02.2018
15:44:33
)))

Алекс
16.02.2018
15:48:12
Всем привет, посоветуйте columnar store на го, если такие есть

можно даже проприетарную

Michael
16.02.2018
15:49:51
можно даже проприетарную
PostgreSQL Columnar Store for Analytic Workloads гугл подсказывает

можно даже проприетарную
есть с тараканами https://www.cockroachlabs.com/docs/stable/column-families.html oltp

если аналитику считать, то можно глянуть на vertica

Алекс
16.02.2018
15:55:17
не аналитику, без инсертов, чисто ридонли датасэты

и с постгре непонятно надо ли откатываться на <9.4

Michael
16.02.2018
16:05:15
и с постгре непонятно надо ли откатываться на <9.4
10 поддерживают https://github.com/citusdata/cstore_fdw

Admin
ERROR: S client not available

The
16.02.2018
16:17:51
господа, если у меня есть слайс из элементов, я прохожусь и в конце цикла каждому элементу делаю nil, это снизит потребление памяти? или присваивание nil не значит что память выделенная под этот элемент будет освобождена? в конце ещё сделать runtime.GC(), но не уверен что я делаю правильно.

The
16.02.2018
16:28:13
элементов суммарно около 200 тысяч, это всякие модели из базы, их все нужно положить в сайтмэп (да-да, я знаю что можно лимит/оффсет и чанками работать, но...). вопрос уже не к реализации, а к пониманию механизма. я хочу знать, присвоив nil - освободил ли я память? и как принудительно дернуть GC и сказать, парень, все что внутри этой функции == nil мне больше не нужно.

Хочу понимать просто

Палками не бейте за SELECT *))

Michael
16.02.2018
16:30:50
Хочу понимать просто
nil на элементе освободит ссылку на объект, сам же массив будет держать место

у массива кроме len, есть ещё cap(acity)

The
16.02.2018
16:32:06
да, это я знаю, и читал про утечку ссылок когда мы вышвырнули из слайса элемент, но массив ниже на него ссылается и не дает GC собрать.

Google
Michael
16.02.2018
16:32:49
ну вот nil на элементе и поможет разорвать эту порочную свзязь

самому же массиву можно делать ресайз

но вы сами должны отвечать за его фрагмнтацию

кроме фрагментации самого массива, проблемой может стать фрагментация памяти в целом по кот. завели парочку тикетов в го трекере, вроде как в 1.10 пофиксили

The
16.02.2018
16:39:19
короче, правильно ли я понял, допустим есть у нас структура, которая содержит кучу данных, пусть весит она 10 кб (к примеру) если это ссылка на структуру, и я просто сделал как-то так data = append(data[:i], data[i+1:]...), то массив ниже ссылается на эту структуру, я тут ничего не выиграл, и скорее даже поимел проблем, если элементы слайса ссылочного типа. если же я сделаю предварительно data[i] = nil, тогда память ещё не освободилась, (структура ещё в памяти, я убрал ссылку на неё), но по вызову GC он соберет память выделеную под структуру? А если я сделаю так: *data[i] = MyStruct{}, то все поля в этой структуре станут нулевого типа, и память освободится уже сейчас?

Daniel
16.02.2018
16:40:30
про второе - нет

второе в ту же память положит новую структуру

The
16.02.2018
16:41:08
второе это *data[i]..?

Daniel
16.02.2018
16:41:21
чтобы старая освободилась и новая выделилась - надо data[i] = &MyStruct{} делать

The
16.02.2018
16:44:32
чтобы старая освободилась и новая выделилась - надо data[i] = &MyStruct{} делать
но ведь так мы создадим ссылку на новую структуру, а старая структура останется в памяти, просто никто не будет на неё ссылаться, а если мы сделаем так *data[i] то мы сделаем прямое обращение к ней, и создадим на её месте пустую структуру, но с полями нулевого типа. другой вопрос, что поля нулевого типа особого выигрыша в памяти не дадут, если там допустим не массивы. если там слайсы, то они тоже ссылочного. может есть какая-то статья на примете, чтобы простым языком было понятно?

The
16.02.2018
16:45:54
а, это я понял, а если вот прямо щас взять, и очистить все. или в Go так нельзя и нужно полностью доверится GC?

Daniel
16.02.2018
16:46:48
можно дернуть gc самому, если очень хочется

но лучше довериться

Vladimir
16.02.2018
16:47:39
можно дернуть gc самому, если очень хочется
Мне в один момент приходилось

The
16.02.2018
16:48:07
Ясно, в общем, резюмируя, то что мы присвоили nil, это не значит что память уже сейчас освободилась, но это значит, что мы пометили этот элемент как готовый к сборке, и когда GC "проснется", то соберет. Как-то так?

The
16.02.2018
16:48:55
Ясно, всем спасибо за помощь! :)

Если вдруг найдется чтиво на эту тему, делитесь. Буду признателен.

Roman
16.02.2018
16:53:20
в go тестах видимо буфер flush'ится после исполнения кейса, но у меня тут проблема с блокирющими каналами и было бы неплохо видить до какого канала он дошёл и где блокирует (дада, console log debugging), т.е. как flush'нуть t.Log ?

а, fmt вроде сразу пишет в консоль

Eldar
16.02.2018
17:05:12
Здравствуйте, интересует, стоит ли начинать делать веб приложение на Golang используя стандартные пакеты к примеру : регистрация/авторизация, парсинг и другой функционал или же все таки делать на PHP/Laravell/Yii или же C# ? Насколько будет сложно создавать на Golang ?

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