Maks
Кстати. А что если во время работы приложения запущенного вытащить крипто ключ?
Maks
Оно же уже запущено и все такое
Maks
К железу привязываться это получается через материнку чисто
Maks
Потому что остальное можно менять
Maks
И привязывать придется непосредственно на объекте
Maks
Билдить прям там. Потому что иначе тебе могут сказать через пол года что мать вышла из строя и не могут запустить по
Maks
И будет 2 копии приложения по цене одной)
Igor
если сделает правильно то сможет это контролировать и отзывать лицензии
Maks
Только если у сервера будет выход в сеть
Maks
А идея в том что он в сеть не выходит если я правильно понял
Maks
Он существует только внутри корпоративной сети
Igor
можно и при первой инициализации делать токен из ключа и данных о MB. и потом сверять при запуске
Maks
Тогда ты где то его хранить вместо с флагом первой инициализации. А значит это не вариант. Если почистить то все будет работать. А если по очень дорогое то желающие наверняка будут
Maks
Джира например просто токеном лицензируется
Igor
в питоне и го есть шифрованное хранилище.
Maks
А его просто дропнуть нельзя? Или восстановить в первозданном виде? Я просто не в курсе
Maks
У джири точнее 2 типа лицензирования. Клауд (саас) и стендалон
Maks
Вот интересно как у них саас устроено изнутри
Maks
Вряд ли же они внутри одной базы данные по всем клиентам хранят
Igor
если дропнул делай заново привязку
Igor
примерно как в MS
Maks
Ну то есть условно копии приложения можно будет распространять.
Maks
Если оно не сверяется с сервером твоим то это не защита
Maks
Верно понимаю?
Maks
О прикольно в рф джиру не купить)
Igor
оно сверяется с матерью. А код к шифру только у разработчика
Igor
и вообще мы полезли в дебри. ничего не зная о приложении и начинаем придумывать лишнее
Alexander
как мне кажется, такие вещи живут не без доработок под клиентов, и типа ну какой им смысл дизасмблировать твой код. искать человека, который это сможет
Alexander
ну иначе, если доработки не интересны, то скорее всего никто клиента устроит и пользование внешним веб сервисом
kostyaBro
Обработка ошибок приложений CLI в Golang  https://dev-gang.ru/article/obrabotka-oshibok-prilozhenii-cli-v-golang-tizggrwzv1/ @Golang_google
Ещё вариант, переопределить fatal так, чтобы он слал сам себе сигнал kill. Тем самым, отработает grateful shutdown и все аккуратно завершится.
Null
Golang - оператор fallthrough Оператор fallthrough используется в предложении case switch. Он должен использоваться в конце предложения case. Он используется для выполнения следующего предложения case без проверки выражения. Читать дальше Спецификация Go @Golang_google
Null
The first WSQ pre-release announcement https://fosstodon.org/@lig/108615372264747367 #wsq
Null
The first WSQ pre-release announcement https://fosstodon.org/@lig/108615372264747367 #wsq
Начал вот пилить такую штуку. NSQ + Websocket = ❤️ И демо-чат на Flutter там же в репе;)
David
подскажите пожалуйста, могу ли я просто напрямую из grpc сервера сделать клиентское подключение, чтобы отправить запрос на другой grpc сервер? Или это не так просто?)
David
неа
David
а
Vladislav
неа
ну значит нет хД)
David
)))00
David
затуп
David
спс
David
а ваще могу же
David
прокси же как работает
David
Vladimir
Подскажите. Можно ли как-то в го достать в каком пакете и в какой функции выполняется код
Igor
через логирование как минимум
Vladimir
через логирование как минимум
Ну руками в логирование я могу запихнуть нужную информацию, но это добавляет много мусора в код. Может есть какие-то более универсальные методы
Vladimir
Может быть go-delve
Наверно переформулирую вопрос. Я хочу, чтобы у меня в логах при принте ошибок писалось где именно сработала эта ошибка. Это выглядит немного сложно, т.к. у меня есть функция main, в которой выполняется функция app, в которой выполняются различные функции с логикой с неизвестной вложенностью и все эти функции по цепочке возвращают error в main. А тот уже принтует. Однако я хочу знать где именно сработал error, т.к. в error.message по умолчанию может быть недостаточно информации, чтобы понять это. Сейчас, как быстрое решение я делаю кастомный интерфейс error, в структуру которого прямо руками запихивую нужную мне информацию и принтую его. Но это очень сильжно визуально нагружает код
Emin Zalaev
Грепать
Igor
можно сделать через контекст
Emin Zalaev
И расписать где у тебя ошибки
Emin Zalaev
Ну это везде тогда нужно будет
Vladimir
А вот можно как-то не расписывая?
Emin Zalaev
Интересный кейс
Vladimir
Чтобы была какая-нибудь функция/метод, которая поймет, что она исполняется в таком-то пакете в такой-то функции и возвращать эту информацию
Vladimir
Я могу, конечно, руками рассписать все ошибки. Но в 99% случаев информации ОБ ошибке хватает от пакетов, которые я использую. А вот информации ГДЕ ИМЕННО сработала ошибка - ее не хватает для хорошей жизни)
Vladimir
Т.е. по ошибке типа: 2022/07/02 12:49:40 unknown response status: 504 Gateway Time-out Я прекрасно понимаю что я не смог достучаться до какого-то адреса, но у меня код ходит в 50 различных адресов и получается в каждом надо оборачивать еррор и дополнять его информацией где именно сработала ошибка и куда код не смог сходить
Юра (Юрий Александрович)
Ищите StackTrace https://stackoverflow.com/questions/33034241/how-to-get-the-stack-trace-pointing-to-actual-error-reason
Vladimir
Бля. Точно Спасибо.
Null
Ну руками в логирование я могу запихнуть нужную информацию, но это добавляет много мусора в код. Может есть какие-то более универсальные методы
Чот, простите, но не в го бояться мусора в коде;) Это не наезд на го, а наблюдение основное на опыте.
Null
Я так и не придумал ни одного разумного кейса для его пользования
Два кейса -- общий обработчик. Кейс подготовки, потом уточняющие кейсы. Но в целом, это всё про нытье типа "у меня в языке Х так мона была, а в го так низя -- я плакаю"
Vladimir
Подскажите еще такую штуку. Я пытаюсь понять как работает в инструменте Argo, сбор данных о кластерах. Вот тут - https://github.com/argoproj/argo-cd/blob/master/controller/metrics/clustercollector.go Вызывается функция GetClustersInfo() интерфейса HasClustersInfo. Но я не могу понять какая структура соответствует этому интерфесу и где реально описывается логика функции GetClustersInfo()
Anonymous
Как в go в случае ошибки(допустим nil pointer,ну или любая другая критическая ошибка) продолжать работу? Ну,как в питоне try: except: или try {} catch(){} Не надо писать про проверку ошибок )
Grigory
Но учти что ты можешь отловить панику только на конкретной горутине
Dilame
var file, readFileErr = io.ReadFile("./file") if readFileErr != nil { panic(readFileErr) } Подскажите, как на верхнем уровне, вне функции main, выполнить эту конструкцию? Я хочу закэшировать в оперативке содержимое файла для переиспользования IDE ругается 'if' unexpected
Maksim
/settings@SimpleCleanup_bot
Dilame
Как можно в go выразить такую конструкцию: var PORT = os.Getenv("PORT") ИЛИ 5000;
Alexander
If port == "" {port = "5000"}
Ron Mount
хрюкнул с того что у гетенв нет подставление дефолтного значения