Alexander
нужен хелп с модулями, может кто сталкивался. пытаюсь на одном из компов собрать проект. версия go 1.15. Пытаюсь подтянуть все, что в go.mod: GO111MODULE=on go get получаю: go: github.com/PuerkitoBio/goquery@v1.8.0: reading github.com/PuerkitoBio/goquery/go.mod at revision v1.8.0: unknown revision v1.8.0 удаляю реквайры из go.mod, делаю go mod tidy. по каждому импорту примерно следующее выдает: my_proj/cmd/fill-source-urls imports github.com/tidwall/gjson: module github.com/tidwall/gjson: git ls-remote -q origin in gopath/pkg/mod/cache/vcs/b838c9496a4db3e3d0b0932b6d617c74969681e77683e24b3733b260997af297: exit status 129: usage: git ls-remote [--heads] [--tags] [-u <exec> | --upload-pack <exec>] <repository> <refs>...
Alexander
собственно, в чем проблема может быть?
Alexander
по первой проблеме гуглил, только про приватные репозитории речь. у меня никакие приватные репо не подтягиваются
Alexander
без модулей go get package работает
Alexander
у меня нет прайват репозиториев
Alexander
вот так, до кучи поделюсь что он пытается добыть: go: finding module for package gorm.io/gen go: finding module for package gorm.io/gorm/clause go: finding module for package github.com/tidwall/gjson go: finding module for package gorm.io/gorm go: finding module for package github.com/andybalholm/brotli go: finding module for package golang.org/x/image/webp go: finding module for package github.com/PuerkitoBio/goquery go: finding module for package gorm.io/driver/mysql go: finding module for package gorm.io/gorm/schema go: finding module for package gorm.io/gen/field go: finding module for package golang.org/x/image/tiff
Alexander
сам проект конечно прайват и go get'ом его даже не достанешь, ибо домен даже вымышленный. но играть не должно роли
Alexander
может гит старый?
Alexander
git version 1.7.1
Alexander
129й код это типа он не понял команду
🅞leksiy
Обнови гит
xasai.denet
git version 1.7.1
2012 год)
Alexander
Печаль да, но я ничего не решаю
Alexander
Докер туда говорят не встаёт) готовый билженный файл сегфолтит
Alexander
Что это?
John
в .netrc указывается строчка вида machine gitlab.company.ltd login my_fanny_login password my_fanny_password_token
Alexander
у меня не прайват репозитории
John
ой, сорян
Alexander
дело реально в старом гите оказалось
Alexander
слава богу
Alexander
богам
Alexander
и Ктулху
TEH3OP
Сорвал с языка про Ктулху
Maks
У меня в других стеках было тоже с гитвершн трабла)) Только гит был свежее в разы))) Но однако там юзали что то супер свежее)
Anonymous
как в го лучше с хтмл работать?
Anonymous
и как это делается?
Anonymous
я могу создать каталог темплатес и там писать хтмл, а через мейн подключить?
John
Угу
John
Хотя…
John
https://blog.jetbrains.com/go/2021/06/09/how-to-use-go-embed-in-go-1-16/
Anonymous
а как логику приконектить?
Anonymous
чтобы на кнопку логин вызывался login.go
Alexander
https://blog.jetbrains.com/go/2021/06/09/how-to-use-go-embed-in-go-1-16/
а особый смысл? распарсил один раз и все
Alexander
в D кстати прикольно (хоть и не пробовал), что такие мощные дженерики, что темплейты на них пишутся и сразу в готовый код преобразуются как бы
Alexander
и тут должен вылезть парень, который спрашивал про то где дженерики =))
Alexander
хэндлер веб запроса?
Alexander
так делать не надо по коду в целом, ты можешь с помощью select из нескольких каналов прочесть
Alexander
зачем делать регистрацию в одной горутине и обмениваться информацией по каналам?
Alexander
почему в хэндлере не устраивает?
Alexander
так делать не надо по коду в целом, ты можешь с помощью select из нескольких каналов прочесть
то бишь канал с пустым интерфейсом и определение типа потом
Alexander
не понимаю, причем тут какая-то структура с 2х горутин. опиши ситуацию, что именно происходит с точки зрения логики. два запроса на регистрацию по одинаковому емейлу приходят или что?
Alexander
chReg := make(chan RegData) chSend :=make(chan SendData) select{ case reg := <- chReg: ... case send := <-chSend: ... }
Alexander
зачем заниматься рефлексией?
Alexander
ты данные хранишь все в памяти приложения?
Alexander
или у тебя это локальный кэш?
Alexander
но это же кроме эксперимента никуда не пойдет, если у тебя данные только в памяти и больше нигда
Alexander
так а зачем хранить в памяти? можно регать независимо, можно хранить кэш какой-то занятых емейлов в sync.Map или просто мапе защищенной мьютексом в любом случае одним потоком ограничивать для всех юзеров очень странно
Alexander
ну то есть пример, который только игрушечным быть и может. не знаю зачем вообще переживать
Alexander
а так, проще использовать примитивы синхронизации (пакеты sync и atomic), чем всю бизнес логику заставлять в одной горутине выполняться я вижу кейсы, когда можно выделить под какие-то задачи отдельные горутины, которые будут получать данные из других, и вот чтобы только они с этими данными работали. но это надо понимать зачем ты это делаешь действительно
John
ознакомься, они очень веселые и классные ребята. туда же и context с блекджеком и прелестницами
John
может быть уже отвечал, получается у тебя memory storage?
John
т.е. key-value, - т.е. ты всегда можешь узнать был ли такой уже ключ
John
и если 2 запроса придут с одним и теми же данными, то твой экземпляр хранилища должен уже разрулить ситуацию коллизии
John
таким образом пресечешь гонку данных
John
я может чегото не понимаю, но насколько корректно использовать каналы для решения вышеуказанного кейса?
Anonymous
можете подсказать как залогиниться на сайт через го?
Maks
смотри в сторону сессий
Maks
по токену например
Anonymous
хорошо, спасибо
John
можете подсказать как залогиниться на сайт через го?
ты хочешь гошным кодом залогинеться где-то?
Anonymous
нет, мне нужно сделать постоянный логин и парсить кое какие данные
John
подробнее
John
тебе нужно авторизация в своём коде или как?
Anonymous
через го надо залогиниться и парсить данные через тг бота
Anonymous
проблема с логином на сайте через го
John
ок
Alexander
Не понял ответ. Ты хочешь на чужой сайт залогиниться или в своём реализовать логин?
John
логинешься и очень бережно сохраняешь заголовки ответа от сервера - куки, токены или что там используется, и при последующих запросах передаёшь на сервер данные
John
имитация браузера
John
так же предусмотри race-limit, а то забанят
John
в общем, изучи поведение сервера через браузер, что возвращает сервер, что требует
John
потом на го переносишь всю логику имитации
Anonymous
так же предусмотри race-limit, а то забанят
я хочу сделать один запрос(вечный)
Anonymous
не логиниться миллион раз
Alexander
на чужой сайт
Ну тогда повторяй логику запросов из браузера и держи куки пока "пользуешься" чужим сайтом