Alexander
есть аналог на go ? apache camel ? есть что-то похожее ? jboss drools ? bpmn ?
Alexander
а зачем в go аналоги всяких мультитулов ?
Alexander
инструмент надо выбирать под задачу
Alexander
именно. поэтому го пока не для энтерпрайза.
Alexander
точнее не замена той же джаве
invariance
С каких пор энтерпрайз вообще подразумевается в контексте одного языка какого то
invariance
в 2017 году
invariance
вы че, люди)
Alexander
дело не в языке. дело в экосистеме
invariance
Именно
invariance
и вы продолжаете говорить, что го не для энтерпрайза, а вот джава другое дело
invariance
хотя их можно юзать в одной экосистеме и жить счастливо
Alexander
дело не в языке. дело в экосистеме
я ж говорю это все от лени
invariance
и еще кучу инструментов и языков
Alexander
у го маленькая ниша в традиционном тырпрайзе
invariance
у го маленькая ниша в традиционном тырпрайзе
Растет семимильными шагами относительно других
Alexander
но шансы вклинится есть
Alexander
так я и начал блин с того, что у го хорошие шансы вклиниться
Alexander
но задач, которые с помощью го решаются лучше чем на других инструментах - пока невелико
Alexander
именно поэтому я на нем пилю пет проекты, ну и может попробую потихоньку какие-то эмули в рабочем окружении поднимать
Alexander
вдруг прокатит
Anton
вот тут не соглашусь, монолит легко поднять и запустить, если он написан грамотно, а десяток микросервисов поднять и заставить общаться между собой на новой железке гораздо сложнее
У нас микросервисы в обвязке с докером поднимаются довольно просто (отдельные тяжелые куски просто не поднимаются на стейджах и девах). Но мы видать ещё не достигли предельного количества сервисов при котором этим всем тяжело рулить. А вот с гигантским монолитом проблема - он слишком ресурсозатратный, чтобы тащить на локальную машину. И да, тут проблема и в написанном монолите, но теперь как его оптимизировать кроме как всё переписать - хз.
Alexander
видел монолиты, которые жрали несколько десятков гигов памяти просто при запуске
Anton
Йеп, вот что-то вроде такого
Anton
+ когда у нас какой-то кусок начинает создавать проблемы, то можно его выкинуть и переписать сильно оптимизировав на чём хочешь
Fedor
видел монолиты, которые жрали несколько десятков гигов памяти просто при запуске
У меня так на прошлой работе монолит на рельсе с необходимыми сервисами сжирал под 10Г памяти. Я тогда просто поковырялся в конфигах elasticsearch и редиса, и мне вполне стало хватать 4Г на домашнем ноутбуке )
Fedor
все зло от сервисов на яве ))))
Anton
Само собой, что при масштабировании тут возникает целая куча проблем: с дискавери, хелф чеками каждого сервиса и вот этим всем, но до этого момента всё прекрасно для развития и поддержки проектика :)
Alexander
а если ограничивать ресурсы на JVM то тупить начинает
Alexander
в место эластика начал вот это использовать - https://github.com/blevesearch/bleve
Fedor
elasticsearch - эластик сам по себе жрет много очень, только ему наверно и нужно около 4 Гб
он по умолчанию под себя резервирует 2Г, и потом еще отжирает по необходимости. Причем необходимость странная, я ограничил в 512 и не заметил разницы, то ли в swap все выкидывать начал, а в dev окружении нагрузка не такая, что бы в диск упираться, то ли ему реально столько памяти не надо, просто жадничает
Alexander
ну если еще sphinx n-граммы допилят то можно на него смело пересаживаться
Fedor
И все-таки где можно почитать best practice для go?
Alexander
https://golang.org/doc/effective_go.html
Fedor
по прежнему решаю задачки из тура и у меня волосы дубом встают от того, как ужасно это выглядит
Fedor
вот что в effective_go, что в статьях из интернетов, для обработки ошибко создают структуру из строк, и метод, который для этой структуры возвращает общую строку с ошибкой
Fedor
в туре же просят сделать type ErrNegativeSqrt float64, и написать для него метод такой, что: ErrNegativeSqrt(-2).Error() будет возвращать строку с ошибкой
Fedor
тоесть проверка на ошибочное состояние должна происходить внутри метогда вызывающего ошибку
Fedor
нахрена это надо, если я этот метод буду вызывать только если уже проверю, что у меня число отрицательное?
Aleksandr
нахрена это надо, если я этот метод буду вызывать только если уже проверю, что у меня число отрицательное?
твоя логика правильна, но возможно ты не правильно понял условие задачи. кинь линку
Fedor
это понятно, вопрос почему они предлагают тип ошибки делать float64
Fedor
https://go-tour-ru-ru.appspot.com/methods/20
Мерль
тоесть проверка на ошибочное состояние должна происходить внутри метогда вызывающего ошибку
Нет Функция, которая возвращает ошибку, должна заворачивать в этот тип отрицательные числа Сам метод никакой проверки делать не должен
Alexei
он лишь выводит в текст отрицательное число
Fedor
Может я и правда не так условие понимаю, но объявив для него метод func (e ErrNegativeSqrt) Error() string такой, что ErrNegativeSqrt(-2).Error() возвращает "cannot Sqrt negative number: -2"
Fedor
как я понял, они хотят что бы этот метод возвращал текст ошибки, только если передано отрицательное число
Fedor
что не имеет смысла, если проверка идет перед вызовом метода
Fedor
я уж даже на русский перешел что бы лучше условие понимать...
Fedor
ну я по сути так и сделал
Aleksandr
Sqrt должна вернуть не-nil значение ошибки, когда получает на вход отрицательное число, т.к. не поддерживает комплексные числа.
Мерль
это понятно, вопрос почему они предлагают тип ошибки делать float64
Ошибка должна хранить в себе информацию В данном случае она хранит в себе невалидный параметр функции
Fedor
ок, тоесть проверки внутри они от меня и не ждут
Fedor
хорошо, спасибо
Alexei
это было бы бессмысленно
Fedor
ну вот это меня и удивлят, что это бессмысленно, а вроде как просят
Aleksandr
ну вот это меня и удивлят, что это бессмысленно, а вроде как просят
они просят проверку внутри Sqrt, а не внутри Error
Roman
иии?
Alexander
куда все будут ходить за модельками
Alexander
нет ни одной проблемы, которую нельзя решить введением еще одного слоя абстракции (с)
Roman
куда все будут ходить за модельками
ну и как жить, когда тебе надо пересечение хотя бы пары множеств, где в каждом множестве по 50к элементов?
invariance
😂
Aleksandr
наследование ради наследования, хэлперы в моделях, протечка вьюшек в модели, модели в контроллеры, обмазывание статикой и магией, "фейсбуку это скажите" - слышали, слышали...
Aleksandr
да, god object, конечно.
3030
получилось у меня заставить работать goland+docker+debug, но вот только как-то частично. Где-то брейкпоинты срабатывают, где-то нет. Не срабатывают когда в самом goland'е брейкопоинт с крестиком стоит: http://prntscr.com/heot3h В соседнем файле, крестика нет и бп работает: http://prntscr.com/heotfz
Anton
а как жить, когда нужно шарить модельки данных между сервисами?
Вас же не заставляют прям каждую модель пилить в микросервис и потом думать как они вообще должны работать друг с другом. Пилите сервисы на логические куски, группируйте модели и их взаимодейтсвие. А если у вас ситуация, что всё взаимодействует со всем, то да, микросервисы вам не подходят. Микросервисы это не грааль, а всего лишь подход.
folex
Вечер добрый. Скажите, у кого-нибудь работает go get git.apache.org/thrift.git/lib/go/thrift? У меня бесконечно висит, видимо их git висит :( пробовал так же зеркало go get -u github.com/apache/thrift/tree/master/lib/go/thrift, но там странное: package github.com/apache/thrift/tree/master/lib/go/thrift: cannot find package "github.com/apache/thrift/tree/master/lib/go/thrift" in any of: /usr/local/Cellar/go/1.7.5/libexec/src/github.com/apache/thrift/tree/master/lib/go/thrift (from $GOROOT) $HOME/go/src/github.com/apache/thrift/tree/master/lib/go/thrift (from $GOPATH) И я как-то теряюсь что делать дальше.
Vasily
go get -u github.com/apache/thrift
Vasily
а, не , там всё равно подпапка
Vasily
go get git.apache.org/thrift.git/lib/go/thrift/...