Subbotin
а в go разве есть неблокирующий? есть блокирующий с таймаутом
ээээ. он же реализован через неблокирующие системные вызовы.
Daniel
он реализован через event loop
🏁Александр
что-то мне кажется вы не в ту степь уехали
🏁Александр
вы какую бизнес задачу решаете?
Daniel
так она замирает ровно на этом месте, пока хотя бы байт не появится
Daniel
что - нет?
Daniel
где у вас - нет?
Aleksandr
а как узнать что там 0 байт, не попытавшись вычитать?
YᑌᖇIY
это в пользу какого тезиса аргумент?
Просто замечание, что не всегда микры и связи на апи делают.
🏁Александр
у вас не хватает производительности? зачем полезли "вниз"
Daniel
кто - он,
🏁Александр
можно же было взять какой либо - https://github.com/gorilla/websocket и оки
Daniel
коллега, не отвлекайтесь
Aleksandr
ему не нравится вечный луп. он хочет чтобы луп продолжился только тоггда, когда на то укажет божественное провидение, знающее что появились байты
Daniel
а Conn - это какой conn?
Daniel
вот этот? https://golang.org/pkg/net/#Conn
🏁Александр
чочочо? O_o Где вебсокет и где unix domain. Вы его (вебсокет) по назначению используется для общения браузер<>бек?
🏁Александр
так ...
🏁Александр
а причем тут unix domain?
Aleksandr
демон и домен же разные вещи? ну так, к слову
🏁Александр
и вы полезли переписывать клиент целиком?
🏁Александр
гениальное решение коллега
Aleksandr
гениальное решение коллега
он никуда не полез. он показал тебе код - там кода 30 строк
🏁Александр
я глянул
🏁Александр
вы же понимаете что 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, а потому считается говнокодом. И правильно считается.
Pawel
я пришел узнать кто что использует
хочешь орм - используй reform, больше ничего приемлегого нет
Pawel
кто кроме тебя так считает?
ты хочешь сказать, что совмещать бл и круд в одном месте - это не очевидный антипатерн и допускается иметь разные мнения о таком ?
Заур
Если у тебя есть таблица ошибок, в соответствии с которой надо возвращать в апи ошибки, нужно создать пакет со структурами ошибок из таблицы с поддержкой интерфейса error, а саму ошибку в коде оборочивать в соответствующую структуру, с помощью пакета errors добавить весь стэк получившихся ошибок, а потом, при выдаче ответа, проверять через switch соответствие корневой ошибки какой-то структуре, так определять тип ошибки, а стэк ошибок из errors выводить в лог. Это нормальная схема?
Pawel
думаю никто ничего. я лично навскидку не помню есть ли вообще ar на го
я подобное часто вижу в чужом коде type BusinessLogic struct { conn *sql.Conn BusinessValue BusinessValueType }
Maksim
SRP это религия со множеством оттенков и такое шельмование может быть весьма спорным.
лучше не надо за паттерны с ним разговаривать) он живёт в своём мире, не уважает фаулера и боба и в целом бесполезно.
Pawel
ну вот и что это за личный выпад?
религиозные убеждения задеты
Maksim
ну вот и что это за личный выпад?
его же слова :) ничего личного, только бизнесс (с)
Dk
Я что-то запутался. Можно в Go создать структуру, в ней определить поле и доступ к этому полю осуществлять никак иначе как через методы?
Dk
type Person struct { Login string password string Username string } Вот допустим. Как мне обезопасить password от прямого вмешательства?
🏁Александр
(они станут приватными)
🏁Александр
и делаешь методы структуры под каждое поле
🏁Александр
можешь и имя структуры с маленькой сделать, тогда ее инициализация возможна только через возрат из функции
Fastumkruk
🏁Александр
конечно
🏁Александр
если что-то начинается с маленькой буквы, это не будет доступно за пределами пакета
🏁Александр
будь то название функции, имя типа, структура, имя поля
🏁Александр
переменная..
Dk
да, все имена полей с маленькой буквы
Аэ, запутался сейчас покажу почему
Dk
Dk
Dk
Dk
Показывает passwor2 же
🏁Александр
так блин
🏁Александр
вы когда вызываете принт, вы еще внутри пакета