Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 21 2016 13:31
    @listochkin banned @MayyaLitvina
  • Mar 15 2015 01:09
    User @mr-mig banned @putin-hero from this room
  • Mar 15 2015 01:08
    User @mr-mig banned @stepan-bendera from this room
Maxim Kolesnikov
@xCASx
@lempiy меня просто очень смущает второй пункт. То, что мне надо делать git clone в $GOPATH/src/.
У нас моно репозиторий. Куча модулей на разных языках, преимущественно java. Если я это все склонирую, то мне даже тяжело представить что может произойти. Долбаться со sparse checkout не хотелось бы.
Опять же, вести всю разработку в $GOPATH/src/ как-то странно. Он у меня и источник зависимостей и рабочий проект одновременно. А если этого не делать, то мне каждый репозиторий надо клонировать по два раза: в рабочую директорию и в $GOPATH/src/. При этом надо не забывать последний поддерживать в актуальном состоянии.
Я понимаю, что проблема заезженная, поэтому всем лень отвечать, но хоть ссылкой в меня киньте, где это нормально объяснено.
Yuriy Yarosh
@yuriy-yarosh

@xCASx

1 Допустим я только начинаю разработку и у меня еще нет репы.

Ты просто делаешь mkdir -p $GOPATH/src/github.com/xCASx/dummyproj идешь туда и стартуешь новый проект

ча модулей на разных языках, преимущественно java. Если я это все склонирую, то мне даже тяжело представить что может произойти.

Есть vendor и ты можешь использовать нормальный пакетный менеджер, я использую glide

Опять же, вести всю разработку в $GOPATH/src/ как-то странно.

Общепринятая практика, просто надо привыкнуть - погоды не делает.
Пускай $GOPATH/src/ и является твоей рабочей папкой...

Долбаться со sparse checkout не хотелось бы.

Тут такого нету - никто не клонит один проект в два места.

Если ты хочешь отказаться от $GOPATH/src то тебе придётся клонить твой проект submodule'ом в vendor и там его ещё и .gitignore'ить %)
Что будет ещё более костыльно и неприятно.

Anton Lempiy
@lempiy
@yuriy-yarosh :+1:
Yuriy Yarosh
@yuriy-yarosh

Если завтра кто-то захочет собрать у себя проект

Пускай используют пакетный менеджер

Здесь {folder_name} это наша папка service. И что, мне структуру пакетов завязывать вот на эту жесть с browse и прочим хламом?

У гита были alias'ы вроде как... а структура действительно вырвиглазная.

Если завтра проект переедет с битбакета на гитхаб, мне надо будет обновить все импорты?

Да. Но ты можешь заюзать православный find . | sed -i '' ...

Значит мне все эти завязки на репозитории не нужны и я могу просто использовать относительные пути?

Нужны так как в golang'e запрещён циклический импорт - ты не можешь в пакете А заимпортить пакет Б, а в пакете Б заимпортить пакет А.

Maxim Kolesnikov
@xCASx
@yuriy-yarosh спасибо! Просто как-то много церемоний получается. Мне надо проект из трех файлов собрать, а я уже два дня разобраться не могу как же оно должно быть правильно.
Yuriy Yarosh
@yuriy-yarosh
Можешь писать мне сюды https://discord.gg/8dFGXrx или прямо в скайп %)
Помогу по возможности ...
Maxim Kolesnikov
@xCASx
@yuriy-yarosh благодарю ;)
Maxim Kolesnikov
@xCASx
Подскажите, в го есть поддержка интерсепторов, или мне надо самому написать обертку и заворачивать в нее каждый хендлер?
TarasZak
@taras-zak

Ребят, подскажите, как правильно в Го сделать словарь с мьютексами, что-то типо такого

mutexes = map[string]*sync.Mutex 
mutexes[key].Lock()

defer mutexes[key].Unlock()

Есть поток ключей, который слушают горутины, и нужно чтобы одинаковые ключи обрабатывались только одной горутиной. Т.е. если пришло 2 одинаковых ключа подряд, их взяли две разные горутины, но вторая ждет мьютекса.

Yuriy Yarosh
@yuriy-yarosh
@taras-zak тебе нужен RWLock а не мьютексы ...
@xCASx нету, если очень нужно - лучше запилить на горутинах.
... с горутинами напрягает отсутствие backpressure control :(
Maxim Kolesnikov
@xCASx
@yuriy-yarosh ну я наклепал в итоге обертку и в нее заворачиваю. Авторизацию ж надо как-то делать...
Yuriy Yarosh
@yuriy-yarosh
Авторизация дело тонкое
Я вот на React Kiev готовлю доклад про релешку ... там очень оригинально авторизация выполняется
Maxim Kolesnikov
@xCASx
@yuriy-yarosh мне не надо оригинально. Мне надо просто и чтоб работало :D
TuxUbuntu
@TuxUbuntu
привет, ребята, подскажите, что я делаю не так:
запускаю в папке с исходниками go test _test_Source.goа мне выдаёт can't load package: package main: no buildable Go source files in /go/src/mirror
Alexey Palazhchenko
@AlekSi
не надо так файл называть
Файлы, начинающиеся с _, игнорируются утилитой go
Файл с тестом должен заканчиваться на _test.go
И при этом хотя бы один файл без тестов должен быть
Maxim Kolesnikov
@xCASx

А что за проблемы у Go c PKCS12 хранилищами? Если я импортирую хранилище с ключем и сертификатом - все ок. Но если в хранилище только сертификат (аналог truststore в Java), то я получаю ошибку:

pkcs12: expected exactly two items in the authenticated safe

Yuriy Yarosh
@yuriy-yarosh

А что за проблемы у Go c PKCS12 хранилищами?

Просто захардкодили, типа ключ и серт - и ниипёт.
Обычно стоит глянуть исходники в таких случаях.

Maxim Kolesnikov
@xCASx
@yuriy-yarosh да там и из сообщения ошибки все понятно, в принципе. Непонятно почему так захардкодили.
Anton Lempiy
@lempiy
Вопрос по кросс компиляции. Нужно время от времени компилировать с linux amd64 на windows 386. Проблема в том, что есть зависимость от пакетов работающих на C+GO. В частности https://github.com/mattn/go-sqlite3 . Понятное дело нужен какой то кросс компайлер і для С/С++ . Пробовал mingw-w64 (CC=mingw-w64), но go build как будто не реагирует на задание кастомного C-компилятора. У кого то была такая проблема/необходимость?
только что попробовал скомпилировать с windows amd64 на windows 386 используя mingw-w64 - скомпилировалось. Но хотелось бы компилировать с под linux.
Yuriy Yarosh
@yuriy-yarosh
@lempiy golang/go#11058
Eugene
@jdevelop
@lempiy я сделал через docker
как раз делает все правильно
Anton Lempiy
@lempiy
@jdevelop Oo :+1: норм идея
Eugene
@jdevelop
да, там только надо будет подкрутить образ чтобы поставить го
Anton Lempiy
@lempiy
Тоесть, создать свой докерфайл на основе их имиджа, правильно?
Eugene
@jdevelop
да
там уже поставлены все нужные MingW и прочий тулчейн с правильными бинариками для нужной линковки, все что нужно сделать - просто запустить имедж и запустить сборку в нем
Anton Lempiy
@lempiy
Ок, спс!
Oleksandr
@pifagor87
Привіт. Хтось стикався з - jackc/pgx#378
Yuriy Yarosh
@yuriy-yarosh
Просто Numeric с Integer'a не расспаковывается, это надо ковырять go-pg на сколько помню.
Oleksandr
@pifagor87
там не go-pg а pgx
Eugene
@jdevelop
никто Go в ардуину не пихал?
гугль говорит что как-то оно кто-то когда-то делал, но тишинааа
Artem
@tenmozes
только в rpi3
Eugene
@jdevelop
в rpi0/1/2/3 неспортивно, оно из коробки пихается само
Yehor Nazarkin
@nimnull
эм, ардуино ж про другое, туда go не засунуть
да и не нужно, тащемта
Eugene
@jdevelop
писать софт на С как-то грусть
с другой стороны, там памяти чуть-чуть, соответственно GC никак не вписывается
Yehor Nazarkin
@nimnull
Ну во первых можно на С++
А во-вторых там были попытки сделать туллчейн для rust, с успешными примерами
Eugene
@jdevelop
rust != go, за такое можно и по лицу
Yehor Nazarkin
@nimnull
Пфф, дружелюбие в коммьюнити зашкаливает