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
как мне кажется, такие вещи живут не без доработок под клиентов, и типа ну какой им смысл дизасмблировать твой код. искать человека, который это сможет
Alexander
ну иначе, если доработки не интересны, то скорее всего никто клиента устроит и пользование внешним веб сервисом
Roman
Roman
Null
Golang - оператор fallthrough
Оператор fallthrough используется в предложении case switch. Он должен использоваться в конце предложения case.
Он используется для выполнения следующего предложения case без проверки выражения.
Читать дальше
Спецификация Go
@Golang_google
Null
The first WSQ pre-release announcement https://fosstodon.org/@lig/108615372264747367
#wsq
David
подскажите пожалуйста, могу ли я просто напрямую из grpc сервера сделать клиентское подключение, чтобы отправить запрос на другой grpc сервер? Или это не так просто?)
Vladislav
David
неа
David
а
Vladislav
David
)))00
David
затуп
David
спс
David
а ваще могу же
David
прокси же как работает
David
Vladimir
Подскажите. Можно ли как-то в го достать в каком пакете и в какой функции выполняется код
Igor
через логирование как минимум
Anonymous
Vladimir
через логирование как минимум
Ну руками в логирование я могу запихнуть нужную информацию, но это добавляет много мусора в код. Может есть какие-то более универсальные методы
Vladimir
Может быть go-delve
Наверно переформулирую вопрос.
Я хочу, чтобы у меня в логах при принте ошибок писалось где именно сработала эта ошибка. Это выглядит немного сложно, т.к. у меня есть функция main, в которой выполняется функция app, в которой выполняются различные функции с логикой с неизвестной вложенностью и все эти функции по цепочке возвращают error в main. А тот уже принтует.
Однако я хочу знать где именно сработал error, т.к. в error.message по умолчанию может быть недостаточно информации, чтобы понять это.
Сейчас, как быстрое решение я делаю кастомный интерфейс error, в структуру которого прямо руками запихивую нужную мне информацию и принтую его. Но это очень сильжно визуально нагружает код
Emin Zalaev
Грепать
Emin Zalaev
Igor
можно сделать через контекст
Emin Zalaev
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
Бля. Точно
Спасибо.
Grigory
Null
Null
Alexandr🇷🇺
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
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"}
Igor
Ron Mount
хрюкнул с того что у гетенв нет подставление дефолтного значения