Anonymous
let me check it on my machine
Anonymous
ye i have done it
Anonymous
kinda easy
Anonymous
it was a cool practice btw
Anonymous
func (*server) Test(ctx context.Context, r *pb.Request) (*pb.Response, error) {
fmt.Println("Test function")
name := r.GetName()
result := []string{"Hello", "World", "How Are You?"}
result = append(result, name)
return &pb.Response{Result: result}, nil
}
Anonymous
above is a server code
below is a client code
Anonymous
func test(c pb.TestServiceClient) {
request, err := c.Test(context.Background(), &pb.Request{Name: "test"})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Requests: %v", request)
}
Zohidbek Mengliboyev
Thank you very much, bro!
Andrey
Всем привет. Подскажите в каку. сторону посмотреть. Мне нужно в зависимости от настроек применять разные импорты . Тоесть у меня есть несколько папок с идентичными сгенерированными протобафами. и в зависимости от настройки мне нужно подключать либо один либюо другой путь. Можете подсказать как подобное можно реализовать ?
Anonymous
что за бредовая структура
Anonymous
зачем несколько одинаковых файлов с одной логикой
Andrey
это протобафы там не логика там структура головная которая потом логикой обрабатывается одинкаковая а не сами файлы с логикой одинаковые. мне надо обработать разные протобафы которые леджат в разных папках (и package у них разные)
Maria
здравствуйте, здесь можно размещать вакансии для go developers?
Sergey
Кирилл
Добрый день, подскажите, пожалуйста, мне необходимо реализовать небольшой вебсервис, и для фронта нужно подтянуть статические html, js, css.
папочная структура:
service
├───cmd
│ └───service
├───pkg
│ ├───comments
│ ├───errorPatterns
│ ├───handlers
│ ├───jwt
│ ├───middleware
│ ├───posts
│ ├───session
│ └───user
└───static
├───css
├───html
└───js
main лежит в папке cmd/service.
fileServer := http.FileServer(http.Dir("static/html/")) r.PathPrefix("/").Handler(fileServer)
пытаюсь сделать так, но получаю белую страницу.
вот такие зависимости и скрипты есть в html файле
<link href="../css/main.74225161.chunk.css" rel="stylesheet">
<script src="../js/2.d59deea0.chunk.js"></script>
<script src="../js/main.32ebaf54.chunk.js"></script>
Филипп
Всем привет. Подскажите, пожалуйста бесплатный курс по Go, для новичка
Филипп
понял, спасибо!
G
Народ, можно ли в го импортировать пакет из соседней директории? Например, я использую типовой для всех проектов код эндпоинтов мониторинга приложения и чтения конфигурации, и я хочу это вынести в отдельный проект. Типа так:
repository
|
+- project_a/
| +- go.mod
| +- Makefile
| +- src/
| +- ...
|
+- project_b/
| |
| +- go.mod
| +- Makefile
| +- src/
| +- ...
|
+- common/
+- utils/
+- config/
+- monitoring/
+- ...
Как такое принято делать в го? Через статические/динамические библиотеки? Или можно сразу собрать бинарник, который просто импортирует пакеты из указанной внешней директории?
Herman
A little copying is better than a little dependency.
Herman
подход go
G
А если оно разрастается до уже a lot of copying, то как это организуется?
Herman
ну а вообще можно создать модуль
Herman
если например фреймворк какой-то типа, то надо модуль делать
Herman
и через go get подключать
G
Ага. Понял, спасибо! А через go get можно подключить не что-то из интернетов, а ткнуть в локальную директорию относительным путём?
G
типа go get ../common/utils/config
G
Ну и там сделать свой go.mod и всё такое
Herman
а задача подтягивать именно не из интернетов?
Herman
я имел в виду как раз запушить и тянуть из интернетов
G
Ну, если в организации приватная библиотека, то можно обойтись без поднятия под это дело целого сервака, а просто вариться в обычном git-репозитории и с локальными файлами?
Herman
можно сделать отдельный приватный репозиторий с библиотекой
G
Понял, спасибо. Поковыряюсь
Herman
https://go.dev/doc/tutorial/call-module-code
Bagasl
DI
Добрый день. Так можно делать?
exChan := make(chan string)
drive.chan1 = exChan
oth = NewOth(exChan)
DI
Имею ввиду это все нщн один канал?
Che
Да
DI
Да
Тогда почему не работает?
func (sync *Synchronizer) startSynchronizer() {
for {
fmt.Println("checkkkk")
select {
case <-sync.synchroTimer.C:
fmt.Println("time of sync. send commands")
sync.sendCommands()
case answer := <-sync.answerChan:
fmt.Println("[SYNCHRONIZER] Receive answer", answer)
sync.parseAnswer(answer)
}
}
}
Che
Возможно канал не инициализирован
DI
есть другой объект, в который передается тот же канал, что и sync.answerChan
да записываются строки и здесь они должны как бы хвататься, но нет
Che
Но очень странный подход, что вы пытаетесь делать? Зачем таймер?
DI
func NewSynchronizer(connectorInfo core.AddressConnectorInfo) *Synchronizer {
sync := new(Synchronizer)
answerChan := make(chan string)
sync.answerChan = answerChan
sync.connector = NewConnector(connectorInfo, answerChan)
sync.synchroTimer = time.NewTimer(time.Second * 5)
go sync.startSynchronizer()
return sync
}
да нет
DI
это таймер синхронизации для отправки команд
DI
что бы данные синхронизовались. ну это логика по такая, не суть. проблема в том, что если передать в канал, который передан в sync.connector, sync.answerChan не реагирует на эти данные
Che
А в канал то что то пишется?
DI
спарсенные строки
case html.TextToken:
text := string(tokens.Text())
if len(text) > 1{
fmt.Println ("LEN > 1", len(text), text)
connector.answerChan <- text
}
}
DI
Разве что направления разные. Хотя не думаю, что это должно как то влиять на это
в connector: chan<-string
в sync: <-chan string
DI
Ахах. Сам того не заметив, создал циклическую зависимость
Melnikova
ребята
всем привет
никто тут работу, не ищет?🙃
а то мне рук не хватает в команде
Emil
Melnikova
если какие-то вопросы
напишите в лс
что вы из чатика
со всеми поболтаем)
Timur
Ребят, вопрос возник по поводу получения больших responce.Body. Предположим ответ на запрос передаёт информацию на 100мб. При обычной отправке запроса ( http.Get(url) ) нужно ждать всех данных, а потом уже с ними работать. Подскажите, пожалуйста, как можно обрабатывать данные в этой ситуации по мере их поступления? Я слышал что-то про стримы в Go, но так и не понял куда копать по этому вопросу.
Alexander
Timur
Хорошо, спасибо
Alexander
заголовки только целиком приходят
Alexander
только когда GETALL запрос
Anonymous
мужики вопрос
Anonymous
есть норм книжка/методичка по гиту?
Nurzhan
Anonymous
500 страниц на гит?
Anonymous
алгоритмы на 200
Anonymous
ладно спс
mbb
mbb
https://youtube.com/playlist?list=PLDyvV36pndZFHXjXuwA_NywNrVQO0aQqb
Anonymous
да мне читать больше нравится
Anonymous
50 видео на гит
Anonymous
чему там учат?
Anonymous
как логиниться по токену?
mbb
Там они по 2-5 мин
mbb
Там все есть
Anonymous
окок спасибо всем
Anonymous
была такая классная методичка но я ее посеял
Anonymous
в чем разница в нет/хттп между дефолтным мультиплексером и newservemux?
Anonymous
что лучше юзать
Anonymous
а, я разобрался.
гориллу/мух буду юзать
ну и разницу понял ;)
Anonymous
I am willing to pay 300 usd for a single programmer to help me on a project. It's simple what to do. But I need a serious programmer on this to finish it in less than 1 day