Andrei
Кіт ✙
Dmitry
Омг, работает. Технологии
Khalid
разница между reader и scanner?
kostyaBro
kostyaBro
Просто мне кажется можно закодить зависимость и использовать нужную структуру
kostyaBro
Илья
Polya
Просто мне кажется можно закодить зависимость и использовать нужную структуру
Смысл такой, есть структура сообщения (к примеру Msg) , которая приходит запросом, у Msg куча свойств проверяем, если проверку проходит, запоминаем Msg,
у данной структуры (Msg) также есть свойство Data это interface, когда приходит другой запрос эту Data требуется преобразовать под определенный структуру, то есть проверка Msg так скажем глобальная структура, которая проходит проверку, на другой стороне по моей прихоти не будут менять взаимодействие.
Поэтому сейчас склоняюсь просто тупо к перебору map и загон значений в нужную структуру, просто придётся такой костыль делать для всех типов структур, которые могут быть у Data
kostyaBro
Смысл такой, есть структура сообщения (к примеру Msg) , которая приходит запросом, у Msg куча свойств проверяем, если проверку проходит, запоминаем Msg,
у данной структуры (Msg) также есть свойство Data это interface, когда приходит другой запрос эту Data требуется преобразовать под определенный структуру, то есть проверка Msg так скажем глобальная структура, которая проходит проверку, на другой стороне по моей прихоти не будут менять взаимодействие.
Поэтому сейчас склоняюсь просто тупо к перебору map и загон значений в нужную структуру, просто придётся такой костыль делать для всех типов структур, которые могут быть у Data
А много типов?
kostyaBro
Тоесть в первом запросе приходит структура любого типа, а потом, в зависимости от того ято пришло во втором запросе мы понимаем какая структура в первом?
kostyaBro
Просто не понимаю что мешает описать эту логику с не делать свистопляски с мапой?
Andrei
Просто не понимаю что мешает описать эту логику с не делать свистопляски с мапой?
Ну например. Пришел запрос на данные из базы и в зависимости от параметров нужно отдать либо слайс с структурами а или слайс с структурами б либо ц. И вот ты думаешь свич и делаешь ретурн на нужные структуры. Но тебе возвращаться слайс с интерфейсами ибо алгебраических типов в гоу нет и надо привести это все к нормальному типо без интерфейс обертки. Какой самый нормальный путь сделать это?
Юра (Юрий Александрович)
Юра (Юрий Александрович)
Должен быть не запрос на данные из базы, а несколько разных запросов на конкретные данные из базы.
Юра (Юрий Александрович)
> И вот ты думаешь свич и делаешь ретурн на нужные структуры.
Смотрите, у вас на ровном месте возникла мета-задача, причем довольно трудоемкая, плохо отпределенная и плохо тестируемая: сначала нужно в функции вернуть черти что, а потом при каждом обращении к функции нужно будет разбираться, что за черти что она вернула.
Юра (Юрий Александрович)
и по мере того, как будет развиваться функция, и ассортимент того "черти чего", что она может вернуть, будет расти. И нужно будет постоянно лезть в код тех функций, которые вызывают эту функцию, т.к. там начнут офигевать от того, что она возвращает.
Andrei
Неопределенность того, что мы получим создаёт такой эффект. Куда деваться
Илья
Илья
или консьюмера, не совсем понял
kostyaBro
Юра (Юрий Александрович)
Тогда можно сделать так:
1) функция забирает из кафки содержимое топика в "сыром" формате. Результат передаем в 2)
2) функция детектит тип того, что ей подали на входе.
Функции от 3) до n) преобразуют из "сырого" формата в рабочий, но каждая в свой конкретный. В зависимости от того, что вам вернула 2, вызываете нужную функцию (но вызовется она уже из нужного обработчика)
Юра (Юрий Александрович)
т.е. ваш "адаптер к кафке" не должен возвращать одним методом неизвестно что. Он должен получать что угодно, определять тип того, что получил, и по запросу уже конкретного обработчика конкретной структуры конвертировать.
Юра (Юрий Александрович)
(вы ж данные в конкретный формат переводите, чтобы с ними дальше работать, правильно? А не просто, чтобы переслать куда-то в неизменном виде)
kostyaBro
Andrei
Akim
Очень не хватает типобезопасной работы с enum в go без создания инкапсулированной структуры с switch
Akim
есть инфа хотят ли это в go 2.0 завозить?
Roman
Akim
https://ru.wikipedia.org/wiki/Go#Go_2.0
kostyaBro
Wikipedia так себе источник. Там есть ссылка на оригинал?
Akim
да
Roman
Нет, уже идут работы над го 2
Насколько я помню, в какой-то момент решено было отказаться от 2.0, а все изменения делать в рамках текущей реализации
Akim
https://go.dev/blog/go2-here-we-come
Akim
Но каких то современных статей я не нашел
Khalid
bufio.Scanner сканит по строке, да?
Khalid
for Scanner.Scan() {
fmt.Println(Scanner.Text())
}
Khalid
До \n получается
Akim
Илья
Khalid
Илья
спасибо!
Но это по-умолчанию. Можно задать свой через .Split()
Khalid
что свой?
Emin Zalaev
fenogentov
Где можно взять уроки работы с тарантулом для чайников?
kostyaBro
Илья
fenogentov
Сама книга не зашла, там есть про тарантул?
Илья
Во многих видео объясняют почему он топовый, но не рассказывают как его юзать
Khalid
братья
Khalid
как файл скачать с инета
Khalid
ну через код
Khalid
с гитхаба нужно файл скачать
Khalid
и проводить над ним манипуляции
Илья
Khalid
Пасиб
Maks
Или курлом)
Feofan
⭐️ gofer - служащий, который выполняет мелкие поручения (как правило, принести что-либо, подать что-либо)
He was just a gofer, but he was hoping to get promoted one day.
Он был простым мелким помощником, но он надеялся, что когда-нибудь его повысят.
@ieltstoeflcefrr
Юрий
Компания: «ООО Рога и Копыта»
Ищем: принеси-подай, главное прод не роняй
Вилка: серебряная
Khalid
я получил файл по url, но содержимое файла до красной палки, все что после дичь какая-то
Khalid
package main
import (
"fmt"
"net/http"
"io"
"log"
)
func main() {
res, err := http.Get("https://github.com/semyon-dev/stepik-go/blob/master/work_with_files/task_sep_1/task.data")
if err != nil {
log.Fatal(err)
}
body, err := io.ReadAll(res.Body)
res.Body.Close()
if res.StatusCode > 299 {
log.Fatalf("Response failed with status code: %d and\nbody: %s\n", res.StatusCode, body)
}
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", body)
}
Khalid
в чэм трабл?
Rostislav
в чэм трабл?
в том, что по url лежит html документ и ты его и видишь на скрине своем
Khalid
дэмн, а как только текст получить
Rostislav
парсить
Khalid
онет...
Rostislav
например удалить все после </td>
Rostislav
смотри методы пакеты strings
Khalid
пасиб
Rostislav
хотя мб чет встроенное есть в го, чтобы html жевать. Но я хз. Может кто другой подскажет
Vladislav
есть https://pkg.go.dev/golang.org/x/net/html
Vladislav
но неясно, обработает ли он правильной какой-нить некорректный html, который браузер жуёт норм, а парсер на нём сломается