Daniel
урррррра! они добавили splice(2)
у меня он ровно в двух местах может быть использован. а у тебя?
🏁Александр
ошибок нет просто зависает на чтении из буфера
🏁Александр
// Buffer large enough for 10 USB packets from endpoint 6. buf := make([]byte, epIn.Desc.MaxPacketSize) // Repeat the read/write cycle 10 times. for i := 0; i < 10; i++ { log.Print("Read!") // readBytes might be smaller than the buffer size. readBytes might be greater than zero even if err is not nil. readBytes, err := epIn.Read(buf) if err != nil { fmt.Println("Read returned an error:", err) } if readBytes == 0 { log.Fatalf("IN endpoint 6 returned 0 bytes of data.") } }
🏁Александр
строго по ману вроде
🏁Александр
если девайс выключить, то упадет в "og.Fatalf("IN endpoint 6 returned 0 bytes of data.")"
Daniel
ну вот проксики
Daniel
все
🏁Александр
Что за девайс?
пикалка, для кодов
🏁Александр
лазерная
🏁Александр
2018/06/22 20:29:42 020.027 10c4:ea60 CP210x UART Bridge / myAVR mySmartUSB light (Cygnal Integrated Products, Inc.) 2018/06/22 20:29:42 Protocol: (Defined at Interface level) 2018/06/22 20:29:42 Configuration 1: 2018/06/22 20:29:42 -------------- 2018/06/22 20:29:42 Interface 0 alternate setting 0 (available endpoints: [0x02(2,OUT) 0x81(1,IN)]) 2018/06/22 20:29:42 Vendor Specific Class 2018/06/22 20:29:42 ep #1 IN (address 0x81) bulk [64 bytes] 2018/06/22 20:29:42 ep #2 OUT (address 0x02) bulk [64 bytes] 2018/06/22 20:29:42 --------------
🏁Александр
соотвественно делаю
🏁Александр
cfg, err := dev.Config(1) if err != nil { log.Fatalf("%s.Config: %v", dev, err) } defer cfg.Close() intf, err := cfg.Interface(0, 0) if err != nil { log.Fatalf("%s.Interface: %v", cfg, err) } defer intf.Close() epIn, err := intf.InEndpoint(0x81) if err != nil { log.Fatalf("%s.InEndpoint: %v", intf, err) }
Roman
ну вот проксики
Вообще, везде где между парой fd байты перекладывать
Daniel
я в курсе, зачем splice :) он у меня ровно в двух местах. при этом на тех же местах есть tls handshake, так что пока (до перехода на ec) мне вообще пофиг, что делает весь мой код. важно только насколько быстро вычисляется rsa ключ
Anonymous
допустим есть структура Person struct { Money int } у нее есть функция func (p *Person)work() { for { p.Money++ } } если я запущу эту функцию в горутине, а потом объект Person приравняю к nil
Anonymous
в горутине будет паника?
Daniel
объект ты никак к nil не приравняешь
Daniel
с указателем делай что хочешь - в методе уже его копия
Anonymous
аа
Daniel
а вот если ты полезешь менять то, на что указатель - возможны варианты, но паника врядли
Anonymous
я имел в виду это keks := Person { Money: 228 } go keks.Work() keks = nil
Заур
Так не получится сделать же
🏁Александр
да вот документации к ней не шло
🏁Александр
просто вручили две железки и привет 🙂
Заур
Если сделаешь keks:= &Person{} то сможешь сделать. Но это не сотрёт выделенную память, которая используется методом
🏁Александр
но вроде бы как без всякой иницилизации как то ее запускали на прослушку
Anonymous
а, я тупанул, извините 😂😂
🏁Александр
она даже в консоль как то отдавала
🏁Александр
а она не отдает управление
🏁Александр
0 байт я бы еще понял
🏁Александр
оно буфер читает и читает
🏁Александр
цикл 1 итерацию закончить не может
🏁Александр
пока девайс не отключишь
Мерль
оно буфер читает и читает
Я бы попытался найти доки И на всякий случай потестить чем-нибудь ещё, кроме этой библиотеки
🏁Александр
меня смушает вот приписка на 1 интерфейсе...
🏁Александр
CDC Data (Unused)
Kirill
для одного такого поля
Vadim
Лето, пошли бы пописали код на свежем воздухе!
Я вот тоже думаю прихватить столик и пойти на море. Но постоянно боюсь комп испоганить.
Dmitry
есть бенч тесты и просто тестирование класса - есть какие то правило как называть если они в отдельных файлах? т.е. файл с кодом chain , файлы с тестами chain_test, а файл с бенчами chain_bench_test.go ?
🏁Александр
больше ничего вкусного не нашел
Мерль
у нас вроде одна вменяемая либа от гугла
идея в том, чтобы потыкать руками тут какой угодно инструмент подойдёт, например библиотека на питоне
Kirill
нет, много
Это в рамках одной структуры?
Anonymous
я поставил в структуру ctx и таймер таймер при срабатывании по таймауту вызывает context.CancelFunc а потоки ее мониторят
Kirill
Там реально инкремент?
Anonymous
Kirill
Угу
Anonymous
Нет
Anonymous
Это просто пример
Anonymous
Мне нужен был нормальный способ убивать горутины
Anonymous
Вот заюзал context с таймером
Alex
Й
.
Почему порядок полей структуры влияет на производительность?
.
Лень
Kirill
Лень
Ну а всем лень объяснять дважды два каждому по отдельности
Kirill
Обычно да
.
Не нужна тебе такая производительность
Вполне вероятно, просто интересуюсь
Kirill
Когда человеку нужна такая производительность, он обычно уже и так это знает
kås
Особенно в ущерб читабельности
Kirill
.
Кстати, о какой производительности идёт речь?
Kirill
Кстати, о какой производительности идёт речь?
Не всегда возможно даже тупо замерить разницу
.
Не всегда возможно даже тупо замерить разницу
Перефразирую: кому нужно знать как расставлять поля?)
Kirill
Тем, кто должен выжать десятки гигабит в секунду на слабом железе и ему уже нечего оптимизировать
Kirill
В общем, почти что никому