Gaiaz
В крупной компании проблемы с доступом в github? Не такая она и крупная...
да, потому что сервера часто бывают в разных точках планеты
Anonymous
Привет всем. Надо реализовать бэкедн мессенжера. Нужен человек с опытом разработки на го.
Slava
и главное - деньги?
Мерль
и главное - деньги?
Секреты-секретики, видимо, только в личку
Konstantin
Можно ли как-то из структуры получить\установить значение на n'ое поле? Вот есть структура type point struct { x int y int z int } Могу я как-то установить значение второго поля, то есть поля Y, есть у меня есть только информация что надо установить на второе поле?
Konstantin
итератор может какой
Mike
&point{1, 2, 3}, не?
Mike
но вообще чет не круто ты делаешь, у тебя есть именованные поля, а ты по порядку хочешь, лучше делать a.y :=
Mike
если одно конкретное поменять хочешь
Konstantin
но вообще чет не круто ты делаешь, у тебя есть именованные поля, а ты по порядку хочешь, лучше делать a.y :=
Я так и делаю, но там проблема в том, что полей много и они определяются не особо красиво, по итогу идет море if'ов, если бы был итератор, то можно было бы сделать через простой цикл)
Oleg
https://play.golang.org/p/2lTHgS6Ath
Oleg
( ͡° ͜ʖ ͡°)
igor
изврат=)
все как ты и любишь же, нет? :)
Konstantin
Может у кого будут идеи как реализовать это иначе?) https://github.com/SolidlSnake/easyvk-go/blob/master/easyvk/account.go#L78 Функция getAppPerm
Oleg
Как вариант: не нужно разбирать каждый бит в отдельное поле. Лучше положи битовую карту в отдельный тип (вроде type PermissionBits uint) и для каждого бита пропиши метод: func (b PermissionBits) Notify() bool { return b&notifyBit != 0 }
Oleg
Или даже лучше, чтобы не множить методы: const ( PermNotify = 1 PermFriends = 2 ... ) func (b PermissionBits) Can(perm uint) bool { return b&perm != 0 }
Konstantin
Да, это красиво будет, спасибо, но проблему кучи ифов не решает :(
Slava
const notifyBit = 1 const friendsBit = 2 const photosBit = 4 const audioBit = 8 const videoBit = 16 const pagesBit = 128 const statusBit = 1024 const notesBit = 2048 const messagesBit = 4096 const wallBit = 8192 const adsBit = 32768 const offlineBit = 65536 const docsBit = 131072 const groupsBit = 262144 const notificationsBit = 524288 const statsBit = 1048576 const emailBit = 4194304 const marketBit = 134217728
Slava
кажется тут красивее будет не в десятичной системе
Slava
я бы смещениями сделал к примеру
Konstantin
кажется тут красивее будет не в десятичной системе
А каким образом это реализуется? Можно как-то задать двоичное число?
Slava
https://play.golang.org/p/rn_2NIEYm2
Slava
как-то так
Oleg
https://play.golang.org/p/rn_2NIEYm2
Если это битовая карта от внешнего API, то использовать йоту небезопасно имхо
Slava
не используй, смещай как захочешь
Dmitriy / დიმიტრი
Этический вопрос. Я взял у чувака библиотеку с MIT лицензией. Переписал её под себя. Лицензия тоже MIT. Мне надо ссылаться на этого чувака?
Мерль
Построчный разбор лицензии MIT / Хабрахабр https://m.habrahabr.ru/post/310976/
Aleksandr
коллеги, читаю json, в структуре поле float64, из json значение 20.0 корректно анмаршаллится во float64, но при маршаллинге записывается как 20, что не хочет читать клиентская софтина - ругается что инт пихаю вместо флоата. Есть мысли кроме регуляркой менять реплейсить (это уже пройденный этап)?
Oleg
Может быть, реализовать json.Marshaler на типе поверх флоата?
MXLTN
как зафорсировать gorm делать hard delete когда используешь gorm.Model ?
hamper 𓅝
WTFPL — самая нормальная лицензия.
Konstantin
При использовании iota нельзя использовать сторонние функции? Мне вот надо сделать степени двойки, math.Pow не пускают, говорят экстримизм
Slava
константные выражения вычисляются при компиляции
Slava
нельзя использовать runtime функции
Konstantin
И оператора возведения в степень, конечно же, нет. Один питон няшка, блин)
Konstantin
1 « iota
да, тут в другом чатике подсказали) все равно спасибо)
Sergei
@SolidlSnake вот же сразу ответили
Sergei
А каким образом это реализуется? Можно как-то задать двоичное число?
Sergei
https://play.golang.org/p/rn_2NIEYm2
Konstantin
@SolidlSnake вот же сразу ответили
Я на тот момент не знал, что такое iota, думал речь о ней и просто как пример привели)
Sergei
Ок, плюс в доках и блоге golang подробно объясняют с примерами
Slava
=) << это информатика 5 класс
Konstantin
=) << это информатика 5 класс
Классно, не помню точно была ли у нас в 5 классе информатика, но если и была, то дальше пайнта мы не выбирались :)
Slava
обычно на первых уроках проходят двоичную систему и сдвиги битовые
Slava
по крайне мере у нас так было
Slava
Кто-нибудь поедет на gophercon в этом году?
Konstantin
обычно на первых уроках проходят двоичную систему и сдвиги битовые
Самое сильное, что у нас было это основы верстки)
MXLTN
как зафорсировать gorm делать hard delete когда используешь gorm.Model ?
sc/\mp
hi all
sc/\mp
Ok
Мерль
Go: многопоточная запись в файл CSV Иногда при разработке приложений на Go бывает необходимость записи в файл CSV из нескольких горутин, при этом встроенный CSV Writer непотокобезопасен. ... https://tehnojam.pro/category/development/go-mnogopotochnaja-zapis-v-fajl-csv.html
Ruslans
"хайлоад"
Vladislav
Какое-то совсем неэлегантное решение.
Мерль
Но вообще адок какой-то, имхо
Vladislav
В принципе есть и другие варианты. Например, сделать актор, который только записывает байтики в файл. И принимать их через канал. Будет ли оно лучше работать неясно.
Vladislav
Коллега говорит, что так все же лучше, чем мьютексы.
Daniel
так идеоматичнее
Daniel
но однозначно медленнее
Daniel
(потому, что в канале больше одного мутекса)
Roman
Вообще не будет медленнее
Roman
Просто потому, что это запись в файл
ainu
Смотрите. У меня есть некая самописная база данных в памяти. С индексом. Несколько мап. Диск есть, но в качестве скажем так, бекапа. Индекс не на диске, данные в памяти и диске, при чтении диск не используется, только при записи и при старте. Клиенты могут делать в неё запись. Пересчет индекса быстрый, но не мгновенный. Вариант первый - клиент ставит мьютекс, записывает, разлочивает. Вариант второй - клиент в channel записывает что хочет записать, отдельна горутина слушает его и перестраивает индекс. Внимание вопрос - что быстрее?
Daniel
Просто потому, что это запись в файл
а это от потока и буферизации зависит
Roman
В том же Tarantool'е запись на диск делает только 1 поток