Daniel
он реализован через event loop
🏁Александр
что-то мне кажется вы не в ту степь уехали
🏁Александр
вы какую бизнес задачу решаете?
Daniel
так она замирает ровно на этом месте, пока хотя бы байт не появится
Daniel
что - нет?
Daniel
где у вас - нет?
Aleksandr
а как узнать что там 0 байт, не попытавшись вычитать?
🏁Александр
у вас не хватает производительности? зачем полезли "вниз"
Daniel
кто - он,
🏁Александр
можно же было взять какой либо - https://github.com/gorilla/websocket и оки
Aleksandr
Daniel
коллега, не отвлекайтесь
Aleksandr
ему не нравится вечный луп. он хочет чтобы луп продолжился только тоггда, когда на то укажет божественное провидение, знающее что появились байты
YᑌᖇIY
Roman
Daniel
а Conn - это какой conn?
Daniel
вот этот? https://golang.org/pkg/net/#Conn
🏁Александр
чочочо? O_o Где вебсокет и где unix domain. Вы его (вебсокет) по назначению используется для общения браузер<>бек?
🏁Александр
так ...
🏁Александр
а причем тут unix domain?
Roman
Aleksandr
демон и домен же разные вещи? ну так, к слову
🏁Александр
и вы полезли переписывать клиент целиком?
🏁Александр
гениальное решение коллега
🏁Александр
я глянул
🏁Александр
вы же понимаете что 20 строчками не обойдетесь?
Aleksandr
ты же уже получил ответ
Aleksandr
а как узнать что там 0 байт, не попытавшись вычитать?
Aleksandr
у него религиозный вопрос
Aleksandr
ему не нравится вечный луп. он хочет чтобы луп продолжился только тоггда, когда на то укажет божественное провидение, знающее что появились байты
Aleksandr
нельзя узнать что байт нет не прочитав их
Aleksandr
нельзя остановить луп до тезх пор пока не появятся байты, если этого кто-то не прочитал в лупе со стороны
Daniel
коллега, у этого Conn Read() вернет n==0 только если произойдет ошибка. например - случится deadline
если он у вас возвращает n==0 - вы что-то не так делаете
Daniel
err не проверяете?
Daniel
коллега, а что вы хотели сказать вот этим? ws.conn.Read(buf[:])
Daniel
зачем вы передаете в Read новый слайс?
Aleksandr
а как луп может не остановиться, если n = 0?
https://gist.github.com/kandeshvari/3ff7d5f517d72c0035308b17966d1fa7#file-wsreader-go-L39
Daniel
коллега, вы бы разобрались в собственном коде, а?
Eugenii
ООП и модульность друг другу не помеха
нет конечно. Разделяй и влавствуй, придумали еще римляне
я к тому, что на любом витке спирали, есть идеал к которому общепринято стремиться и который в разной степени не достижим.
но в большинстве случаев, пишут то человеки. я бы даже сказал шалапаи. и пофиг пишут монолит или микросервисы или какие нибудь биологические соты
Daniel
а оно не передаетеся, инфа 100%
Daniel
разберитесь в своем коде
Daniel
на простой вопрос - зачем вы новый слайс создаете - вы ответить не можете
Daniel
откуда мне знать, что у вас там еще накручено
🏁Александр
а Accept там не надо случаем?
Daniel
Read() у net.Conn блокирующий - это точно.
🏁Александр
а попробуйте byt, _:= ioutil.ReadAll(conn)
Anonymous
а в вашем случае вы читаете по 16 байт, но всё равно ждёте eof, в чём разница?
Pawel
почему не нужен?
суть активрекорд - хранить методы работы с БД в самом объекте, полученном из БД. Это противоречит solid, а именно - spr, а потому считается говнокодом. И правильно считается.
Oleg
🏁Александр
Pawel
кто кроме тебя так считает?
ты хочешь сказать, что совмещать бл и круд в одном месте - это не очевидный антипатерн и допускается иметь разные мнения о таком ?
Заур
Если у тебя есть таблица ошибок, в соответствии с которой надо возвращать в апи ошибки, нужно создать пакет со структурами ошибок из таблицы с поддержкой интерфейса error, а саму ошибку в коде оборочивать в соответствующую структуру, с помощью пакета errors добавить весь стэк получившихся ошибок, а потом, при выдаче ответа, проверять через switch соответствие корневой ошибки какой-то структуре, так определять тип ошибки, а стэк ошибок из errors выводить в лог. Это нормальная схема?
Oleg
Daniel
Pawel
Dk
Я что-то запутался. Можно в Go создать структуру, в ней определить поле и доступ к этому полю осуществлять никак иначе как через методы?
Dk
type Person struct {
Login string
password string
Username string
}
Вот допустим. Как мне обезопасить password от прямого вмешательства?
🏁Александр
🏁Александр
(они станут приватными)
🏁Александр
и делаешь методы структуры под каждое поле
🏁Александр
можешь и имя структуры с маленькой сделать, тогда ее инициализация возможна только через возрат из функции
Fastumkruk
🏁Александр
конечно
🏁Александр
если что-то начинается с маленькой буквы, это не будет доступно за пределами пакета
🏁Александр
будь то название функции, имя типа, структура, имя поля
🏁Александр
переменная..
Dk
Dk
Dk
Dk
Dk
Показывает passwor2 же
🏁Александр
так блин
🏁Александр
вы когда вызываете принт, вы еще внутри пакета