Anonymous
ошибки не вижу
Tikhon
Всем привет. Прошу не кидать в меня палками, если что-то глупое напишу. Я хотел бы реализовать авторизацию и регистрацию пользователей на сайте с помощью go, чисто научный интерес. Но проблема в том, что когда ищу как это реализовать - везде на rest api натыкаюсь. А у меня просто одностраничный сайт, мне кажется что api писать для таких целей немного избыточно.
Возможно ли просто реализовать отправку post запроса через async await на js, и далее просто обработать этот запрос через файл на go (произвести там простейшие проверки и работу с БД) ? Знаю что это можно реализовать на php, но принято ли так делать на go ?
Maks
Так отправить запрос это и есть rest нет? Или ты хочешь сделать что бы страница генерировалась на сервере?
Maks
Прежде чем что то сделать, нужно понять зачем это нужно.
Andrey
@tikhonfedulov не зря же существует frontend и backend. да и ты сам написал про post запрос, а это уже api
Tikhon
Да, похоже что я что-то попутал. Извиняюсь
Alexander
Ну через файл нет. Го так не работает. Надо все-таки написать веб сервер (а точнее использовать существующий в виде библиотеки и написать свой обработчик запроса), скомпилировать и запустить
Alexander
А так да, не обязательно придерживаться rest концепции
Tikhon
Tikhon
Alexander
Наверное, все-таки лучше изучить сам го, а потом уже веб какой-то на нём делать
Alexander
Ну ты можешь просто обработать запрос, распарить тело пост запроса и чтото отдать. Рест это как бы философия
Tikhon
А, понял. Да, так я собственно и собирался поступить
Alexander
Да, в этом и был мой вопрос. Спасибо
Если у тебя есть уже какой-то другой веб, то надо будет либо на другой айпи или порт повесить, либо прокинуть в настройках веб сервера на веб сервер го
Alexander
Либо допустим относится к го серверу как к микро сервису: то есть пыха получает запрос и сам делает запрос к гошке, а там выставляет, что типа для текущей сессии вход осуществлён под таким-то пользователем
Alexander
По сути для авторизации нужен какой то ключ, и в классической идиоме это просто кука указывающая на сессию, а сессия хранит что за юзер
Alexander
Но, что ты планируешь сделать я не знаю, конечно
wagner
Добрый день, помогите с горутинами пожалуйста
кто знает как в одной анонимной горутине читать сразу два канала?
дано:
канал quit = make(chan bool)
канал jobs = make(chan jobs)
канал quit нужен для остановки горутины вот так: quit <- true
канал jobs живёт на всём протяжении жизни процесса go и независим от состояния горутины
то есть, в штатной ситуации, мне нужно читать канал X и принимать от него сообщения
но как только по каналу quit в горутину приходит true, то нужно прекратить выполнение этой горутины
🦧
используй select
wagner
🦧
ога
🦧
еще бы контекст или os.Signal, но это уже для привереды
🦧
чтобы не висела горутина, если вдруг что то произойдетё
🦧
и в твоем скрине сразу все закончится, ты в стоп сразу после пишешь true. надеюсь, это просто для примера
wagner
wagner
въезжаю в связку RoadRunner-PHP
пишу плагины под себя
🦧
как раз сегодня только про него читал) интересная штука
wagner
как раз сегодня только про него читал) интересная штука
у меня тут как раз плагины есть по Tus, определении информации по стране/браузеру через RPC
и своя реализация trusted_subnets, так как базовая не устроила
если что спрашивайте)
из плюсов, запрос отрабатывает в 10 раз быстрее, и избавился от контейнера с react-php, который определял браузер/ос и страну по ip
🦧
Я интереса ради читал. Мы такое не используем. Наоборот, переписываем все, что можно с пхп в го
🦧
🙂
🦧
Но спасибо)
wagner
🦧
Null
🌳 Основная идея реализации бинарного дерева с Golang
https://dev-gang.ru/article/osnovnaja-ideja-realizacii-binarnogo-dereva-s-golang-z1jwmqww7l/
@Golang_google
Aleks
Если прикроют телеграмм, есть ли какие нибудь резервные каналы?
🅞leksiy
Его прикрывают уже давно
Aleks
Aleks
Vladimir
Подскажите. Настраиваю GRPC сервер на go.
При использовании структуры:
type Server struct {
pb.UnimplementedServer
}
Все работает корректно.
Как только в эту структурку пытаюсь добавить еще одно поле, чтобы использовать его (например коннект к БД):
type Server struct {
conn *sql.DB
pb.UnimplementedServer
}
Получаю ошибку:
*"app/internal/app/handlers".Handler does not implement "app/pkg/proto".Server (missing "app/pkg/proto".mustEmbedUnimplementedServer method)
have "app/internal/app/handlers".mustEmbedUnimplementedServer()
want "app/pkg/proto".mustEmbedUnimplementedServer()
Anonymous
попробуй перегенить прото файл
Vladimir
Помогло... Не понимаю почему так
Tikhon
Ребята, как в go.mod правильно определять версии зависимостей ? Например тех, что я с github беру
Tikhon
Например вот это https://github.com/go-yaml/yaml#readme
Anonymous
Tikhon
То что надо, спасибо
Vladimir
Anonymous
странно
Maks
Кто на винде сидит кстати
Maks
Можете папку создать через разные языки программирования
Maks
С именами зарезервированными
Maks
Типо con
Maks
Ну прост) так то ты создать не можешь такой папки вроде как)
Maks
Вспомнил чот
Maks
пробовал в ней хранить некоторые вещи
Aleks
Вроде Go не работает с листами доступа к файлам на виндовс.
Aleks
Могут быть проблемы с доступом.
Feofan
Доброго времени суток.
Есть такой код, безопасно ли его вызывать из разных горутин?
И на Ваше мнение какие видны недостатки ... ошибки?
Herman
Herman
нужен канал, который будет с этими packet работать
Feofan
Feofan
легаси) ... как вариант что отлетит при ошибке
Feofan
Можно ли такой код использовать из разных горутин?
Aleks
Мапа в packet защищена мютексами?
Aleks
Одновременная запись в мапу даст panic.
Aleks
Feofan
Oleg
@banofbot
Alexander
final shot!
Verdoga
Любители суда Линча)
Ivan 🌲
Как вот объяснить такое поведение?
var n int = 5
println(byte(10 << n / 10))
println(byte(10 << 5 / 10))
println(byte(32))
6 32 32
Ivan 🌲
https://go.dev/play/p/0C71x5-zDRo
Alexander
println(byte(10 << 5 / 10)) - по крайней мере завязано на том, что вот эта фигня внутри считается константой
Alexander
если первое / 10 убрать, то все ок, а вот если второе - говорит константа переполняет байт
Alexander
println(byte(1 << n)) - притом вот с этим все ок
Alexander
a := 10 << n / 10
println(byte(a))
еще так все збс
Alexander
если верить цифрам, то получается, что он на самом деле делает byte(10 << n)/10