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 концепции
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
въезжаю в связку 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
Его прикрывают уже давно
Сергей
Если прикроют телеграмм, есть ли какие нибудь резервные каналы?
Пчёлы против мёда? Сомневаюсь. Я для себя уяснил, что всё завязывать на чужих людей нельзя. Поэтому даже если закроют телегу, вайбер и прочее не пострадаю от слова совсем. Рекомендую подумать над этой стратегией!
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
Помогло... Не понимаю почему так
потому что чекается твой сгенерированный файл и в нем отсутствует поле conn
Tikhon
То что надо, спасибо
Anonymous
странно
Maks
Кто на винде сидит кстати
Maks
Можете папку создать через разные языки программирования
Maks
С именами зарезервированными
Maks
Типо con
Maks
Ну прост) так то ты создать не можешь такой папки вроде как)
Maks
Вспомнил чот
Maks
пробовал в ней хранить некоторые вещи
Aleks
Вроде Go не работает с листами доступа к файлам на виндовс.
Aleks
Могут быть проблемы с доступом.
Feofan
Доброго времени суток. Есть такой код, безопасно ли его вызывать из разных горутин? И на Ваше мнение какие видны недостатки ... ошибки?
Herman
нужен канал, который будет с этими packet работать
Feofan
а в чем смысл его вызывать из рахных горутин?
рассматривается как гипотетический вариант )
Feofan
легаси) ... как вариант что отлетит при ошибке
Feofan
Можно ли такой код использовать из разных горутин?
Aleks
Мапа в packet защищена мютексами?
Aleks
Одновременная запись в мапу даст panic.
Feofan
Мапа в packet защищена мютексами?
а если для каждой горутины свой packet?
Aleks
а если для каждой горутины свой packet?
Лучше попробовать race detect.
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