@proGO

Страница 1529 из 1674
Vasily Romanov
24.06.2018
12:10:20
у нас реально потребность была заморачиваться :)

Pawel
24.06.2018
12:11:06
я это сделал
вы vebdor добавили в репу?

Dmitry
24.06.2018
12:11:28


https://github.com/RedSkotina/xrich/tree/develop/vendor

Google
Dmitry
24.06.2018
12:12:36
и че мне делать? деп понимаете что это тотже самый проект и не вендорит его, а херока видите ли не понимает

Roman
24.06.2018
12:24:58
если уж очень хочется прямо пооптимайзить и выжать ну вообще всё что можно из вашего webwire - почитайте https://habr.com/company/mailru/blog/331784/ там про то как оптимайзили вебсокеты для Почты@Mail.RU
о, пасиб, почитай обязательно в саму реализацию websocket пока лезть страшно, ибо боюсь времени не мало займёт. Планирую абстрагировать webwire от реализации вебсокетов, чтоб можно было их через интерфейс прикручивать по желанию (внутри библиотеки это уже реализовано, но наружу ещё нет) и тогда уже можно будет подумать о специфичной реализации бэкэнда сокетов.

Vasily Romanov
24.06.2018
12:25:24
там выложена либа на которой оно у нас реализовано

Dmitry
24.06.2018
12:26:04
скажите че прочитать тогд если тут никто помочь не в состоянии с моей бедой с херокой

Roman
24.06.2018
12:26:07
там выложена либа на которой оно у нас реализовано
ну в таком случае достаточно будет написать адаптер, который реализует webwire-websocket-backend интерфейс и использовать его вместо gorilla/websocket

это примерно 20 строчек кода
предлагаешь использовать какую-то конкретную либу для пула или самому ручками?

Dmitry
24.06.2018
12:29:02
а почему вы кстати godep а не dep юзаете?
я испольовал godep, было в мануале хероку потому что. оно работало. счас я пересел на деп и оно не работает с хероку.

Vasily Romanov
24.06.2018
12:29:37
но если ручками - то лучше сразу отдельно общее решение писать и выложить, всем полезно будет

Roman
24.06.2018
12:30:24
я испольовал godep, было в мануале хероку потому что. оно работало. счас я пересел на деп и оно не работает с хероку.
ах вот оно что.. ну вы можете за-embed'ить все зависимости в репу в /vendor, это должно сработать абсолютно везде

Vasily Romanov
24.06.2018
12:31:54
ну там всё же чуть сложнее :)

Google
Vasily Romanov
24.06.2018
12:32:01
но это тоже работать будет в базовом варианте

Roman
24.06.2018
12:49:21
как я могу заэмбедить сам пакет в свою же папку вендор?
1. cd /path/to/your/project 2. mkdir vendor 3. cd vendor 4. mkdir -p github.com/$DEPENDENCY_VENDOR * for your includes to work properly - use /vendor/<vendorname>/ subdirectory 5. cd github.com/$DEPENDENCY_VENDOR 6. git clone https://github.com/$DEPENDENCY_VENDOR/$LIBNAME 7. cd $LIBNAME 8. rm -rf .git strip off the git repository meta data 9. rm -rf examples [optionally] strip off any irrelevant files such as examples, documentation or similar if you want 10. cd /path/to/your/project 11. git add /path/to/your/project/vendor add your dependencies to your projects repo 12. git commit && git push * assuming your dependency is hosted on github.com

Roman
24.06.2018
12:52:00
окей. оставлю этот изврат на крайний случай. все равно спасибо
это не изврат, а вполне годная практика. например в нашей библиотеке мы так и делаем: https://github.com/qbeon/webwire-go/tree/master/vendor/github.com, однако мы поддерживаем и dep: https://github.com/qbeon/webwire-go#dep

встроенные зависимости куда безопаснее внешних. Они просто не могут измениться, их изменение легко отследить в комитах. Был тут недавно скандал с https://www.npmjs.com/ там сервер раздавал инфицированные зависимости... типа в package.json у тебя указан password-hasher@v1.1.2 и при npm i он тебе грузит его инфицированный вариант, который перехватывает например пароли

можно одновременно эмбэдить зависимости и поддерживать dep, но проблемо. Единственный минус это больше файликов в репе если зависимостей очень много

ещё один плюс: поддержка go get изкоробки, код сразу приходит со своими зависимостями

many-faced
24.06.2018
13:06:43
Коллеги, подскажите, если одну структуру встроить в другую, и её в третью, то из самой верхней не будет прямого доступа к полям самой внутренней?

Встраивание всмысле работает только на соседние уровни или сквозно?

Daniel
24.06.2018
13:15:36
встраивание вообще не работает между уровнями

many-faced
24.06.2018
13:30:07
Как это не работает? работало же

Daniel
24.06.2018
13:30:21
а?!

Kirill
24.06.2018
13:31:22
Кто сломал людей?

Daniel
24.06.2018
13:31:23
встраивание - это сиснаксический сахар, позволяющий не определять все методы втраиваемого у встраивающего - они пробрасываются автоматически. все.

many-faced
24.06.2018
13:32:25
а?!
Реботало же говорю!! слышно?

Daniel
24.06.2018
13:33:19
слышно. но, коллега, вы просто ошибаетесь

Pawel
24.06.2018
13:39:03
и че мне делать? деп понимаете что это тотже самый проект и не вендорит его, а херока видите ли не понимает
занчит хероку ищет папку vendor не там где вы ожидаете. дайте ссылку на репу, посмотрим что в procfile. И таки да, вы зря перешли с godep на dep, первый херока понимает, вотрой насколько мне известно нет

Google
many-faced
24.06.2018
13:42:57
Pawel
24.06.2018
13:43:10
тогда невозможно обрабатывать несколько запросов одновременно на 1 клиенте
естественно, в евентлупе только те вычисления, которые нет смысла распарраллеливать. Ну так вы обозначили проблему - избавиться от оверхеда связанного со стартом динамически создаваемых горутин. Самое простое решение - не использовать горутины :)

Daniel
24.06.2018
13:44:18
https://goplay.space/#6aBQUA2Dm8d
методов и публичных полей, да

many-faced
24.06.2018
13:45:11
Daniel
24.06.2018
13:45:41
того самого "доступа" нет

many-faced
24.06.2018
13:47:56
Кстати, коллеги, существует ли возможность в go назначить разным типам один метод?

Daniel
24.06.2018
14:38:50
а?!

Semyon
24.06.2018
14:39:07
а?!
Думаю речь про перегрузку

Daniel
24.06.2018
14:39:19
или про генерики

Semyon
24.06.2018
14:39:42
или про генерики
в прочем и того и того нет..)

many-faced
24.06.2018
14:40:04
Думаю речь про перегрузку
Нет, просто про назначение одинаковых действий для схожих типов.

Semyon
24.06.2018
14:40:50
Нет, просто про назначение одинаковых действий для схожих типов.
ну что мешает ? есть интерфейсы есть структуры, описываешь интерфейс и делаешь реализацию для двух структур

many-faced
24.06.2018
14:40:59
а?!
К ЧЕМУ говорю доступа нету?

Semyon
24.06.2018
14:42:37
Daniel
24.06.2018
14:42:50
many-faced
24.06.2018
14:43:24
Dmitri
24.06.2018
15:06:53
*100*100, вот это всё
Можешь написать *10000, тут для понятности алгоритма так написано

Google
many-faced
24.06.2018
15:07:39
Можешь написать *10000, тут для понятности алгоритма так написано
нет, я про то, что можно ли меньше места занимать. Ну это не проблема сам посмотрю. Спасибо

many-faced
24.06.2018
15:08:38
вот, скорее да. чуть позже проверю

Roman
24.06.2018
15:09:50
какой вариант лучше? func prepare(data *Data) func() { data.something() // returned lambda captures data return func() { data.somethingElse() } } или не захватывать scope variable? func prepare(data *Data) func(*Data) { data.something() // returned lambda doesn't capture anything return func(data *Data) { data.somethingElse() } }

если я правильно понимаю, то во втором варианте больше вероятность размещения data в stack'е, а в первом вероятность размещения data в heap'е выше, нет?)

Admin
ERROR: S client not available

Vasily Romanov
24.06.2018
15:19:10
если я правильно понимаю, то во втором варианте больше вероятность размещения data в stack'е, а в первом вероятность размещения data в heap'е выше, нет?)
сходу - оно в обоих случаях на хипе разместит скорее всего, так переменная уходит из функции там есть флаги сборки, которые показывают где он переменную разместит и почему, но на память не помню

Daniel
24.06.2018
15:19:30
если уходит - точно в хипе, как еще

Roman
24.06.2018
15:21:58
если уходит - точно в хипе, как еще
func caller() { data := NewData() finalize := prepare(data) finalize(data) } вроде же он может data на стэке определить, ибо она не покидает caller, или нет?

Daniel
24.06.2018
15:22:24
вот те, которые покидаю скоп - те точно в хипе окажутся

и еще те, про которые компилятор не смог понять, что они за пределы скопа не уходят

Roman
24.06.2018
15:23:16
Daniel
24.06.2018
15:23:55
я не видел

Roman
24.06.2018
15:25:03
вот те, которые покидаю скоп - те точно в хипе окажутся
ну я вроде слышал, что если мол указатель на локальную переменную передать в под-функцию в стэке, то она в хип не попадёт, ибо escape analysis докажет что она не покидает scope

Daniel
24.06.2018
15:25:20
да

Roman
24.06.2018
15:26:26
какой вариант лучше? func prepare(data *Data) func() { data.something() // returned lambda captures data return func() { data.somethingElse() } } или не захватывать scope variable? func prepare(data *Data) func(*Data) { data.something() // returned lambda doesn't capture anything return func(data *Data) { data.somethingElse() } }
тогда во втором варианте меньше вероятности размещения data в хипе должно быть, ибо она не покидает scope caller() а лишь передаётся в функции prepare и finalize в callstack'е

по сути, с имеющейся реализацией стэка в Go, можно всё в стэк пихать, что не покидает callstack

Vadim
24.06.2018
15:45:46
Привет, я тут подумал. Есть какое-нибудь ide, в котором реализована функция одновременной работы с файлом. Для тимкода.

Google
Александр
24.06.2018
16:22:59
кто сталкивался с багом в template.HTML ?

собираю тут сторонний HTML в слайсы

var allPosts []template.HTML и на одном из кусков при финальном рендере режет на половине

что-то я пока не допер почему такая обрезка

при сборке "как строки" все ок

Daniel
24.06.2018
16:24:07
Там ошибка в синтаксисе, и ты ее игноришь

Александр
24.06.2018
16:24:30
можно обойти?

HTML то с стороннего источника ?

Daniel
24.06.2018
16:56:25
коллеги, кто gometalinter пользуется, вы успели заценить https://github.com/golangci/golangci-lint?

я вот рекомендую весьма

Dmitry
24.06.2018
19:16:57
помогите с viper. не цепляет переменные окружения почему то

https://github.com/RedSkotina/xrich/blob/b0dc456f17cdd8befb83a7dbbf92f7f6852141d9/cmd/xrich_telebot/main.go#L37

почему то пустая строка в viper.GetString("token")

хотя на os.GetEnv все нормально получает

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