@gogolang

Страница 1144 из 1630
Alexandr
10.06.2018
22:18:16
https://www.codewars.com лучше тут
Спасибо, завёл там акк. Пока что прорешал 8-7-6 уровни, вышел на 5

Oleg
10.06.2018
22:28:50
вопрос по vgo, вот есть проект, у него есть файлик go.mod со всеми зависимостями, каким образом я могу загрузить все зависимости и запустить проект?

Daniel
11.06.2018
02:18:41
ты тут самый адекватный, вот и просим поучаствовать, как арбитра. а, возможно, у тебя еще и идея интересная есть
кто просил идею для компетишена? смотрите: есть такой проект https://github.com/coturn/coturn это STUN/TURN сервер для WebRTC гошной имплементации я не нашел, а она была бы не лишней - возможность встраивать в свой сервер, возможность расширять, например, метриками, и все вот это вот у меня вот на руках сейчас проект, в котором, возможно, придется использовать WebRTC p2p и, соответственно, STUN/TURN

код этого сервера, кстати, хорошая иллюстрация к идее "препроцессор зло". реально нечитаем из-за #if !defined

Google
Daniel
11.06.2018
02:40:35
голый C...

а вот это - иллюстрация к тому, почему такие вещи редко пишут на C (и тут бы не надо, на самом деле) $cloc ./coturn/src/server/ ./coturn/src/apps/relay/ 43 text files. 43 unique files. 0 files ignored. github.com/AlDanial/cloc v 1.76 T=1.04 s (41.4 files/s, 33639.8 lines/s) ------------------------------------------ Language files blank comment code ------------------------------------------ C 20 4811 1586 24401 C/C++ Header 23 724 1339 2041 ------------------------------------------ SUM: 43 5535 2925 26442 ------------------------------------------

24 тысячи строк кода.

24

вдумайтесь, что можно запилить, написав 24 тысячи строк на go

Pawel
11.06.2018
06:10:26
Почему в Го такие дорогостоящие системные вызовы?

Alexander
11.06.2018
06:10:54
почем?

Pawel
11.06.2018
06:18:36
в питоне, в C#

Michael
11.06.2018
06:19:02
???

Alexander μήδομαι
11.06.2018
06:56:06
Какие языковые конструкции в Go больше всего экономят бойлерплейт? Мне в голову сразу идёт сборщик мусора, но в отдельных приложениях это неприменимо. В официальной доке о профилировании Go есть пример, когда для существенного улучшения производительности и потребления памяти переходят на ручное управление через предаллокацию и кэшированное переиспользование аллоцированных объектов.

Google
Alexander μήδομαι
11.06.2018
07:01:30
Каналы и горутины конечно много усилий экономят) Но так ли уж много нужно их в типичном сервере?

Наверное, гошные интерфейсы могут сэкономить много тривиального кода, но к сожалению, я пока видел мало примеров.

В общем, если у кого-то есть размышления и примеры на тему "почему в Go код значительно компактнее чем в C/C++", было бы интересно узнать.

Andrey
11.06.2018
07:12:06
Го можно сравнивать с Java... При чем здесь c++

Alexander μήδομαι
11.06.2018
07:20:50
Го можно сравнивать с Java... При чем здесь c++
@onokonem сравнивает Си с Го и считает, что на Go коррче, поэтому предлагаю развить эту мысль.

Го это не системный язык. Ядро ты на не напишешь.
Почему-то сами создатели Go в официальной документации охотно сравнивают своё детище с системными языками. "— What is the purpose of the project? — No major systems language has emerged in over a decade, but... blah-blah... We believe it's worth trying again with a new language, a concurrent garbage-collected language with fast compilation." https://golang.org/doc/faq#What_is_the_purpose_of_the_project "— Why are you creating a new language? — Go was born out of frustration with existing languages and environments for systems programming..." https://golang.org/doc/faq#creating_a_new_language

Alexander μήδομαι
11.06.2018
07:54:05
Сравнивать они могут с чем угодно, факт в том, что из-за gc , применение его ограничено. Чего не скажешь например о rust. Но вообще, я о том, что сравнивать его более корректно с Java.
ОК, с создателями Гохи разобрались: они ничего не понимают в системном программировании и делают неправильные сравнения. Их в этом чате нет и возразить нам они не смогут :) Но @onokonem здесь есть и он, наверное, сможет нам рассказать, почему он сравнивает Go и C. На мой взгляд влияние сборщика мусора можно контролировать, если использовать предаллокацию. В разработке игр это распространённая практика. Чтобы не вылететь в середине игры по OufOfMemory, чтобы не пойти на сборку мусора на полминутки, разработчики заранее определяют, что будет не более N объектов типа T и управляют их выделением вручную через слайс фиксированного размера. В системном программировании есть похожие soft/hard limits на количество дексрипторов, но я недостаточно компетентен для того чтобы делать твёрдые заявления об устройстве ядер.

Kaspar
11.06.2018
07:57:41
Ага давайте сравним стопы gc в джаве и го

И график изменения пауз за пару лет в го и за 10 в джаве

Nick
11.06.2018
07:58:49
В джаве не один gc

Andrey
11.06.2018
08:11:15
ОК, с создателями Гохи разобрались: они ничего не понимают в системном программировании и делают неправильные сравнения. Их в этом чате нет и возразить нам они не смогут :) Но @onokonem здесь есть и он, наверное, сможет нам рассказать, почему он сравнивает Go и C. На мой взгляд влияние сборщика мусора можно контролировать, если использовать предаллокацию. В разработке игр это распространённая практика. Чтобы не вылететь в середине игры по OufOfMemory, чтобы не пойти на сборку мусора на полминутки, разработчики заранее определяют, что будет не более N объектов типа T и управляют их выделением вручную через слайс фиксированного размера. В системном программировании есть похожие soft/hard limits на количество дексрипторов, но я недостаточно компетентен для того чтобы делать твёрдые заявления об устройстве ядер.
Мы спорить конечно можем, но зачем!? В Яве тоже можно делать биндинги на нативные функций, у управлять памятью через offHeap. Но системным язык от этого не станет. Да это ведь и не проблема. Да, го ближе и легче при работе с нативщиной, и ограничения в языке есть в пользу большей совместимости с С... Ну и ладно. Но в остальном он на Яву похож больше. Яву тоже делали с оглядкой на С.

Мне кажется маловероятным, что кто пишет драйвера на го или ядерные модули...

Если это вообще возможно

Google
Pawel
11.06.2018
08:21:34
Ага давайте сравним стопы gc в джаве и го
в Го gc сверхбыстрый. SWT паузы не превышают 100 мкс на любом размере хипа. Джава и проч - сосут по самые гланды

Pawel
11.06.2018
08:22:57
гугли. всё доступно

Vladimir
11.06.2018
08:23:13
гугли. всё доступно
Да, поэтому я и говорю что хороший вброс, зачет

Поведутся те кто не знает как Гц в го работает

Маладчина

Alexandr
11.06.2018
08:23:46
Имеет, просто чтобы лучше овладеть языком ну и косвенно этот опыт пригождается.
Как именно позволяет лучше овладеть языком, например, такая задача и где это можт пригодиться? https://projecteuler.net/problem=71 имхо, мозгосрани много а кода мало

Andrey
11.06.2018
08:24:47
Или наоборот?! :) Вообще, если смотреть на большие компании, то они любят задротство на собеседованиях...

Alexandr
11.06.2018
08:25:34
Такая нет... т.к. я даже не все слова знаю в этом тексте :)
ахаха да там все такие. Особенно, учитывая, что это из лёгкого уровня...

Alexandr
11.06.2018
08:26:12
Или наоборот?! :) Вообще, если смотреть на большие компании, то они любят задротство на собеседованиях...
Ну часто были вопросы про связь логарифма с числом эйлера или про фигурные числа?

я решил десятка два задач, всей этой матоты в голове поприбавилось, теперь вот думаю, как от неё избавиться.

Alexander μήδομαι
11.06.2018
08:32:01
Vladimir
11.06.2018
08:32:33
А как он работает? :)
Чуть хуже чем в рекламе :)

А как он работает? :)
Я на это обычно ссылку на этот доклад даю: https://www.usenix.org/conference/srecon17asia/program/presentation/sibiryov

Michael
11.06.2018
08:35:06
по поводу го и не системный - https://github.com/achilleasa/gopher-os

Google
Tigran
11.06.2018
10:12:25
у меня го в простой программке аллоцирует 500 ГБ виртуальной памяти, это норма?

Alexander
11.06.2018
10:12:41
норма.

это же линукс ?

Tigran
11.06.2018
10:14:56
мак ось

где можно почитать поподробнее, что и зачем он при этом делает?

Артем
11.06.2018
10:23:08
и в этой статье ответа нет

Admin
ERROR: S client not available

Артем
11.06.2018
10:23:18
там только базовые вещи "а что такое память"

Michael
11.06.2018
10:45:17
красивые картинки погц гоу https://twitter.com/brianhatfield/status/804355831080751104 100гб видимо не проблема, под линукс людям и 512 мало, в 1.11 должны снять это ограничение

Alexander μήδομαι
11.06.2018
11:03:14
Не похоже на 100 мкс :) Хотя и 1 мс это вполне по-божески.

Vladimir
11.06.2018
11:07:06
Не похоже на 100 мкс :) Хотя и 1 мс это вполне по-божески.
Там беда в том что на большом количестве мусора фоновая фаза начинает адски тормозить

И перестает например справляться

Alexander
11.06.2018
11:11:58
И перестает например справляться
да харе, вон там сверху говорят что на любых объемах работает

Vladimir
11.06.2018
11:12:15
Говорят и верят в это

лул. и на 100 гигах ?
Паузы зависят от колличества объектов по скорости. Ну и расплатой за скорость в го то, что память дольше висит в непонятном состоянии.

Alexander μήδομαι
11.06.2018
11:13:15
Примеры нужны. Большие объёмы мусора – сколько ГБ, сколько часов рантайма. Тормозит – это сколько в ms.

Vladimir
11.06.2018
11:13:33
Итого конечно да, паузы короткие

Google
Vladimir
11.06.2018
11:14:36
Но только если приложение создаёт много мелких объектов, к тебе придет оом, хотя по профилировщику никогда больше 1гб не занято, просто ещё 90 в Лимбо лежат и ждут когда их почистят

Alexander μήδομαι
11.06.2018
11:15:59
В продакшене такое бывает? Если swap выключить, то что будет после заполнения RAM? :)

Petr
11.06.2018
11:16:59
ОООМ же

Alexander μήδομαι
11.06.2018
11:18:09
Т.е. чистить своё лимбо не будет, просто упадёт?

Какой интересный GC :) Системный язык! :)

Kirill
11.06.2018
11:56:19
@mersinvald а ты пилил уже тот веб-сервис?

Daniel
11.06.2018
12:03:41
https://github.com/gortc/stun
TURN тоже нужен

Kirill
11.06.2018
12:06:11
TURN тоже нужен
https://github.com/gortc/turn он в работе

Alexander
11.06.2018
12:41:58
В общем, "вроде" разобрался с сервером, снял hprof Showing top 10 nodes out of 76 flat flat% sum% cum cum% 15.92s 62.04% 62.04% 15.93s 62.08% syscall.Syscall 2.88s 11.22% 73.27% 2.88s 11.22% runtime.kevent 1.81s 7.05% 80.32% 1.83s 7.13% runtime.freedefer 1.37s 5.34% 85.66% 1.37s 5.34% runtime.mach_semaphore_wait 0.72s 2.81% 88.46% 0.72s 2.81% runtime.mach_semaphore_signal 0.61s 2.38% 90.84% 0.61s 2.38% runtime.usleep 0.48s 1.87% 92.71% 0.48s 1.87% internal/poll.convertErr 0.27s 1.05% 93.76% 3.16s 12.31% runtime.netpoll 0.22s 0.86% 94.62% 0.22s 0.86% runtime.memclrNoHeapPointers 0.18s 0.7% 95.32% 0.58s 2.26% runtime.mallocgc весь CPU заняли Read/Write в сокет

теперь тогда другой вопрос, как-то тогда работаю супер-можные сетевыесервера, тот же rabbitmq, там же тоже очень много сетевой активности

сотни паблишеров и консумеров

Fastumkruk ✅
11.06.2018
13:27:05
А как вставить переменную в ссылку POST запроса? Например: site.ru/par1?=peremennay1

\"peremennay1\" такое не работает

Kaspar
11.06.2018
13:41:58
это GET

Fastumkruk ✅
11.06.2018
13:46:29
это GET
А в POST запрос добавлять например так? req.Form.Add("key", "value") ???

Andrey
11.06.2018
13:49:08
в теле запроса, дальше иди гугли. Это вообще то по go чат.

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