Anonymous
что лучше использовать в бд для записи паролей? шифрование или хеширование?
Anonymous
скорее всего хеширование
Maks
Тут двоякая ситуация. Если тебя будут ддосить, то сложный алгоритм будет здесь узким местом(нагрузка регистрациями)
Например мд5 быстро работает, но на него полно таблиц и быстро перебирается.
Бкрипт долго генерируется, соответственно безопаснее если базу увели, но для ддоса он удобнее. Но можно об этом не думать особо и брать на первое время любой алгоритм хеширования. Шифровать смысла не вижу. Шифрование имеет обратный алгоритм. А тебе это не нужно. Это выглядит менее безопасным
Anonymous
хеш можно брутить
Anonymous
но он в любом случае лучше чем шифрование
🔥
Антон
EOF
Антон
Can't decode alertmanager message EOF
🔥
А сам жсон?
Антон
{
"receiver": "tg-bot",
"status": "resolved",
"alerts": [
{
"status": "resolved",
"labels": {
"alertgroup": "general.rules",
"alertname": "Watchdog",
"cluster": "cluster-name",
"severity": "none"
},
"annotations": {
"message": "This is an alert meant to ensure that the entire alerting pipeline is functional.\nThis alert is always firing, therefore it should always be firing in Alertmanager\nand always fire against a receiver. There are integrations with various notification\nmechanisms that send a notification when this alert is not firing. For example the\n\"DeadMansSnitch\" integration in PagerDuty.\n"
},
"startsAt": "2021-10-13T02:40:13.939900982Z",
"endsAt": "2021-10-13T03:28:28.93736161Z",
"generatorURL": "http://vmalert-monitoring-88fd75d59-5mm7s:8080/api/v1/12085381733995192156/6246697130099853598/status",
"fingerprint": "780ebbdb19b2d7dc"
}
],
"groupLabels": {},
"commonLabels": {
"alertgroup": "general.rules",
"alertname": "Watchdog",
"cluster": "cluster-name",
"severity": "none"
},
"commonAnnotations": {
"message": "This is an alert meant to ensure that the entire alerting pipeline is functional.\nThis alert is always firing, therefore it should always be firing in Alertmanager\nand always fire against a receiver. There are integrations with various notification\nmechanisms that send a notification when this alert is not firing. For example the\n\"DeadMansSnitch\" integration in PagerDuty.\n"
},
"externalURL": "https://monitoring.prod.domain.tech/alertmanager",
"version": "4",
"groupKey": "{}:{}",
"truncatedAlerts": 0
}
Azat
Мне кажется или это дело в том что body не закрывается?
Антон
Azat
Антон
ааа, в том плане
Антон
хм... сейчас попроьую, спс
Антон
Антон
а подскажите плиз, если json будет вот таким, а структура
type Message struct {
Receiver string `json:"receiver"`
}
Здесь просто одно поле прочитается, или будет ошибка, потому что все поля должны присутствовать в json-е?
Антон
при таком раскладе ошибка сохраняется, и я начинаю подозревать, что в запросе что-то не так с json-ом
Антон
сам запрос, который прилетает в приложение выглядит так:
...
"queryStringParameters": {},
"multiValueQueryStringParameters": {},
"requestContext": {
"identity": {
"sourceIp": "84.201.183.15",
"userAgent": "Alertmanager/0.22.2"
},
"httpMethod": "POST",
"requestId": "5f09bc11-9fa6-4b30-bb3b-70520e23c134",
"requestTime": "14/Oct/2021:04:24:09 +0000",
"requestTimeEpoch": 1634185449
},
"body": "{\"receiver\":\"tg-bot\",\"status\":\"firing\",\"alerts\":[{\"status\":\"firing\",\"labels\":{\"alertgroup\":\"general.rules\",\"alertname\":\"Watchdog\",\"cluster\":\"cluster-name\",\"severity\":\"none\"},\"annotations\":{\"message\":\"This is an alert meant to ensure that the entire alerting pipeline is functional.\\nThis alert is always firing, therefore it should always be firing in Alertmanager\\nand always fire against a receiver. There are integrations with various notification\\nmechanisms that send a notification when this alert is not firing. For example the\\n\\\"DeadMansSnitch\\\" integration in PagerDuty.\\n\"},\"startsAt\":\"2021-10-14T04:19:13.937074418Z\",\"endsAt\":\"0001-01-01T00:00:00Z\",\"generatorURL\":\"http://vmalert-monitoring-88fd75d59-5mm7s:8080/api/v1/12085381733995192156/6246697130099853598/status\",\"fingerprint\":\"780ebbdb19b2d7dc\"}],\"groupLabels\":{},\"commonLabels\":{\"alertgroup\":\"general.rules\",\"alertname\":\"Watchdog\",\"cluster\":\"cluster-name\",\"severity\":\"none\"},\"commonAnnotations\":{\"message\":\"This is an alert meant to ensure that the entire alerting pipeline is functional.\\nThis alert is always firing, therefore it should always be firing in Alertmanager\\nand always fire against a receiver. There are integrations with various notification\\nmechanisms that send a notification when this alert is not firing. For example the\\n\\\"DeadMansSnitch\\\" integration in PagerDuty.\\n\"},\"externalURL\":\"https://monitoring.prod.katren.tech/alertmanager\",\"version\":\"4\",\"groupKey\":\"{}:{}\",\"truncatedAlerts\":0}\n",
"isBase64Encoded": false
}
Антон
тут все кавычки экранированы, может в этом все дело? как декодер должен это воспринимать?
Антон
Отвечу сам: да, дело в этом - экранирование. ДЕкодер такое не ест, поэтому пришлось сделать так:
b, err := ioutil.ReadAll(req.Body)
if err != nil {
fmt.Println("Can't read request body", err.Error())
}
fmt.Println("request body", string(b))
var m Message
defer req.Body.Close()
err = json.Unmarshal(b, &m)
if err != nil {
fmt.Println("Can't decode alertmanager message", err.Error())
return
}
так работает, как ожидалось
Maks
Зачем тебе соль, если можно просто взять бкрипт
Vitaliy
Антон
Антон
это яндексовая лямбда оборачивает запрос от алертменеджера своим жсоном
Vitaliy
Десериализация в два этапа наверное тут была бы логична. Ничего костыльного тут нет, если такого протоколоа придерживается 3rd party service
Vitaliy
👍
Антон
Это да. Просто serverless функцию не очень удобно дебажить, вот и не разобрался сначала, подумал, что где-то в коде косячу) в go опыта почти ноль
Антон
а подскажите еще плиз такое.
у меня два файла в package main
в одном файле описаны структуры и функции, во втором я их хочу использовать:
package main
import (
"encoding/json"
"fmt"
)
func main() {
b := `{"receiver":"tg-bot","status":"firing"}`
var m Message
err := json.Unmarshal([]byte(b), &m)
if err != nil {
fmt.Println("Can't decode alertmanager message", err.Error())
return
}
println(render(&m))
}
однако выполняя go run cmd.go получаю такое:
# command-line-arguments
./cmd.go:11:8: undefined: Message
./cmd.go:19:10: undefined: render
А как тогда обращаться то к ним?
Антон
о! отставить вопросы, надо просто go run . сделать
Антон
)
SpiritOfSim
https://github.com/spiritofsim/go-space-crane
Коллеги, сделал игрушку на GO по мотивам старой moonlander. Покритикуйте, ну либо просто поиграйте )
Зачем?
Всегда мечтал написать игру!
Почему GO?
Потому что могу )
Aleksey
Aleksey
И как вам ebiten? :)
SpiritOfSim
нормуль. Но сравнивать особо не с чем
Null
Поддержка сжатия gRPC в Go, Java и Ballerina
https://dev-gang.ru/article/podderzhka-szhatija-grpc-v-go-java-i-ballerina-j2eqv6a8ov/
@Golang_google
Anonymous
оффтоп, но кто нибудь собирал пк на хакинтоше?
со степухи накопил и хотелось бы собрать пк(20-30к)
Shaplin
У меня есть функция, которую надо протестировать. Один из аргументов это интерфейс Claims.
func ToTest(c Claims) {
...
}
Как мне замокать его Roles(), дабы он выдавал заданный мною массив стрингов?
type Claims interface {
Roles() []string
}
SpiritOfSim
https://github.com/golang/mock
SpiritOfSim
генеришь мок с помощью mockgen, а далее что-то вроде claims.EXPECT().Roles().Return([]{"..."})
Shaplin
Павел
Приветствую! Можете подсказать, как мы вытащить изображение из post запроса? Сервер на го написан через gin, клиент на питоне через requests. Изображение хотел бы получить как image.Image
SpiritOfSim
jpeg.Decode(c.Request.Body)
Павел
попробую, спасибо
Anonymous
просто хочется :/
Anonymous
бывает так :/
Anonymous
ну, я с детства линух юзаю
Anonymous
6-7 класс
Anonymous
но в универе приходится юзать ворд эксель
Anonymous
а мусорку винду я ставить не намерен
Anonymous
сейчас любой шкет в состоянии купить модем и кидать деф пакеты на твою сеть
Anonymous
офк через кали
Anonymous
Anonymous
мне откуда знать? детский максимализм
Anonymous
ну у меня арты стоят
Anonymous
и не понимаю к чему это
Anonymous
и как ты можешь за это троллить
Anonymous
мне обидно должно быть?
Alexander
Anonymous
Alexander
неплохо работают
Alexander
я юзал, когда надо было распечатать документ в исходном виде, а не в интерпретации либре офиса
Alexander
збс
Anonymous
я только рад юзать линух
Anonymous
но я устал от него
Anonymous
Ilya
Новый в xlsx - открывает
Ilya
Ну памяти жрёт как не в себя.
Maks
По поводу макбук бу за 20-30 - категорически нет. Виндовый бук не за что хейтить. Докер на винде работает в разы лучше чем на маке. И конфиг остается как на линуксе. Мак стоит брать если пишешь под натив и у тебя парк устройств эпл - ради инфраструктуры. Хакинтош даже не заморачивайся. Нет того экспериенса.
Maks
По поводу моков: теоретический можно без этого пакета сделать)))) создаешь класс который должен быть зависимостью, реализуешь интерфейсы, через инициализацию задаешь параметры которые должен возвращать класс своими методами. Только не знаю, если в гомок тулзах штука которая говорит что тот или иной метод должен быть обязательно вызван
Anonymous
Anonymous
я ни слова не сказал ставил хак или нет
Anonymous
сидел под хаком год)
Anonymous
видюха, вифи карточка все настраивал, звук, дуал монитор
Anonymous
я спросил про дешевую сборку, а не про то как его ставить)
Maks
Не вижу смысла в дешевом хаке. Не уверен во первых что заведется, во вторых если с докером работать то там уж точно за этот прайс довить нечего) имхо