Michael
А, ну если вы плюете на лицензии - мне вас искренне жаль
Тут стоит вам напомнить слова гражданина Лаврова, потом даже в не любимой вами РФ есть положение о призумности не виновности, а за уши вас вожно притянуть за клевету, и к офтальмологу- чтобы открывали глаза и читали что вам писали несколько раз
Michael
Это т9
Michael
Спасибо
Anonymous
Кстати, насколько легко из скомпилированного бинарника go получить исходный код программы?
Stanislav
Тут стоит вам напомнить слова гражданина Лаврова, потом даже в не любимой вами РФ есть положение о призумности не виновности, а за уши вас вожно притянуть за клевету, и к офтальмологу- чтобы открывали глаза и читали что вам писали несколько раз
Напишите еще раз, что в проприетарных публичных проектах можно использовать therecipe/qt без раскрытия исходников и возможных издержек для бизнеса. Подтвердите свою некомпетентность.
Michael
Не,не, жгите, подтверждайте свою)
Michael
Мастерство и инструменты - и нет проблем
Stanislav
не понимаю, зачем вы реагируете
вдруг эту переписку найдут и не войдут в заблуждение)
Michael
а кто вводил?)
Michael
вы уже или договаривайте или дествительно не реагируйте)
Pawel
Кто-нибудь писал на activex?
Я. Тока не НА, а просто activex, эт те не украина.
Anton
гоферы 👋 подскажите такую штуку. хочу сделать методы для получения данных из bolt с сигнатурой вроде той, как это сделано в gorm. у них, например, юзеры получаются таким образом: user := User{} users := []User{} db.First(&user) db.Find(&users) соответственно, для получения одного юзера и слайса юзеров. у них там, видимо, используется reflection, мне такого не надо, я сделал простую функцию для получения одного элемента из базы в общем виде и функцию для получения одного элемента конкретного типа, выглядит это как-то так: // функция в общем виде для // получения одно элемента func (d *Database) getBucketEntryByKey(v interface{}, bucketKey, key []byte) error { return d.DB.View(func(tx *bolt.Tx) error { b := tx.Bucket(bucketKey) bytes := b.Get(key) if bytes == nil { return nil } // тут просто происходит маршаллинг // в interface{}, ему всё равно, куда return json.Unmarshal(bytes, &v) }) } // функция для получения одного Promotion func (d *Database) getPromotionByID(v interface{}, id uuid.UUID) error { return d.getBucketEntryByKey(v, bucketKeyPromotions, id.Bytes()) } но вот если я хочу сделать функцию для получения всех элементов (слайса), как мне это реализовать? вот так не катит, потому что я не могу анмаршаллить в [][]byte: func (d *Database) getBucketEntries(v interface{}, bucketKey []byte) error { return d.DB.View(func(tx *bolt.Tx) error { var data [][]byte b := tx.Bucket(bucketKey) c := b.Cursor() for k, v := c.First(); k != nil; k, v = c.Next() { data = append(data, v) } return json.Unmarshal(data, &v) }) }
Anton
т.е. получается, что я из базы могу доставать по одной записи (`[]byte`, который соответствует одной записи), я прохожу по ним всем, собираю их и хочу сделать анмаршаллинг всего этого дела в некую переменную, которая является слайсом сущностей.
Anton
gist для наглядности https://gist.github.com/egorovli/7ce204ac20be6db406f320f394149d6e
Roman
А где на практике применяется?
мы применяем её в продакшне в 2 коммерческих проектах на данный момент использует ли её кто-то кроме нас? буду реалистичен и предположу что пока ещё нет, поскольку последний релиз это release candidate, нежели final release. в плане стабильности она уже довольно хороша. В плане производительности - не уверен, нужно более точно измерять, в чём собственно и нужна помощь комьюнити
Roman
Можете ссылки на них кинуть?
проекты? fitcat.pro сейчас в разработке qbeon.com
$continue$
всем привет. столкнулся с такой проблемой, что почему то функция возвращает пустые строки. Хотя body не пустой и там json (дебагал в go-resty). Исходя из этого, есть предположение, что не работает декодер json Второй скрин это callmethod. Сама либа - https://github.com/urShadow/go-vk-api https://i.imgur.com/qgrrvIN.png https://i.imgur.com/W6DWAyy.png https://i.imgur.com/0LT5YsP.png
$continue$
В чем может быть проблема?
Zhenja
ну первая Ваша проблема - это код скриншотами
Zhenja
а вторая - имена полей в структуре маленькими буквами
Alexander
ну первая Ваша проблема - это код скриншотами
ну хоть не в doc вставлено. есть шансы
Kirill
ну хоть не в doc вставлено. есть шансы
🤔 а ты откуда знаешь, как это было сохранено? может, фото с телефона -> фотожоп -> doc -> pdf -> pdf crop
$continue$
ну первая Ваша проблема - это код скриншотами
как мне кажется в данном случай это удобней... Ибо это элементарные функции...
$continue$
а вторая - имена полей в структуре маленькими буквами
это не решает проблему, ибо все равно пустые строки.
Stanislav
это не решает проблему, ибо все равно пустые строки.
с большой буквы поля сделайте, не в тегах, а именно название полей
Stepan
Подскажите, в го есть функция чтобы найти минимальный элемент в массиве int64?
Cat
"There is no built-in for this."
Cat
но, вы можете отсортировать слайс/массив, и потом взять крайний элемент 🙂
L
но, вы можете отсортировать слайс/массив, и потом взять крайний элемент 🙂
боже, зачем сортировать, что бы найти минимальный элемент?
Cat
потому что функции сортировки есть в pkg/sort
L
можно же в одну проходочку найти без сортировки
Cat
но придётся писать свою функцию
L
что там писать?
Vadim
7 строк
Cat
ну а с sort — 2 строки
L
4 строки, учитывая что одна закрывающая скобка
L
S := []float64{2, 3, 4, 5, 6, 6, 8, 1} min := S[0] for i := 1; i < len(S); i++ { min = math.Min(min, S[i]) }
Cat
range
Kirill
тут же не стоит говорить, что максимальное значение float64 от int64?
саша
что?
штоу?
саша
Говорю, что вызов функции обобщённой проще читать, чем вызов необобщённой. Писать - ещё легче.
Daniel
коллеги, вы всерьез собираетесь максимум искать через сортировку?
саша
саша
Но через сортировку это конечно топ рофл. Хотя где-то я такое на самом деле видел...
Cat
Но через сортировку это конечно топ рофл. Хотя где-то я такое на самом деле видел...
func main() { s := []float64{2, 3, 4, 5, 6, 6, 8, 1} sort.Slice(s, func(i, j int) bool { return i < j }) fmt.Println("min:", s[0]) }
Cat
в чём рофл-то? 2 строки
Cat
даже одна
саша
vs
саша
O (n)
Daniel
в том, что один проход по слайсу с одной переменной и одним сравнением на ячейку - это раз в 10 меньше работы, чем сортировка
Cat
O (n * log n)
хз, в проде висит, никого не тревожит
L
O (n * log n)
это сложнее, чем O (n)
саша
это сложнее, чем O (n)
Спасибо, очень поучительно
L
Спасибо, очень поучительно
я перепутал вас, показалось что вы ЗА сортировку
L
в чём рофл-то? 2 строки
по-вашему, чем меньше строк, тем лучше будет работать?
Cat
нет, мой поинт в том, что это уже есть в std
Cat
и не надо ничего писать
$continue$
нет, мой поинт в том, что это уже есть в std
сказали же, что нет поиска min/max в std... сортировка - на то и сортировка, чтобы получать упорядоченный набор данных
$continue$
min/max работает за O(n)
$continue$
И ошибки нет?
неа... уже не знаю, что делать.
$continue$
ибо body не пустой 100%
L
ибо body не пустой 100%
а покажите что там в resp
Cat
ибо body не пустой 100%
тесты на это подвезли?
$continue$
тесты на это подвезли?
ну... я первым делом проверил, что в body. Логично, вроде :)