Aleksandr
ну да, всё верно, как хранить порядок. У меня например есть 100 записей, подвинули контент с 99 позиции на 50. Мне при этом обновлять 48 записей?)
ну может порядок хранить в одном отдельном поле, где тупо перечислять id черехз запятую? и апдейтить его. может иметь смысл?
Илья
у тебя там словарь с миллирадами значений?
Alexey
нет, записей много
Alexey
у тебя там словарь с миллирадами значений?
до нескольких десятков тысяч
Илья
и это сплошной сортированный список?
Alexey
да
Илья
тогда см выше, сделайт табличку, храни там порядок
Alexey
в mssql есть тип hierarchyid, я бы его заюзал, но у меня несколько СУБД, в которых нет такой примитивы ;)
Aleksandr
или в колонке делай шаг например 1000 и значение поля меняй между 1000*n и 1000*(n+1)
Aleksandr
но это все так, некрасиво
Alexey
или в колонке делай шаг например 1000 и значение поля меняй между 1000*n и 1000*(n+1)
> Tакже думал про ступени с шагом по 10000 например, но опять-таки со временем две ед. выравниются
Alexey
думал про это, но так себе
Aleksandr
> Tакже думал про ступени с шагом по 10000 например, но опять-таки со временем две ед. выравниются
100000 шаг. или периодически приводить в порядок, выравнивая интервалы
Oleg
Можно хранить double значения. При перемещении вверх значение Order будет считаться как среднеарифметическое между значениями поля Order соседних элементов
Alexey
// Send will send a Chattable item to Telegram. // // It requires the Chattable to send. func (bot *BotAPI) Send(c Chattable) (Message, error) { switch c.(type) { case Fileable: return bot.sendFile(c.(Fileable)) default: return bot.sendChattable(c) } }
Я попробовал var file tgbotapi.Fileable' и `var file tgbotapi.Fileable но приложение падет :( 2017/05/29 13:20:08 Uploading video panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x1214be8] goroutine 1 [running]: https://gist.github.com/targence/b86bcd920f247eb5bfab61bfe620e03c#file-uploader_switch-go @zelenin, Алексей , @brownjohn
Alexey
Anonymous
А сколько в одной последовательности может быть элементов?
Alexey
в switch не file := , а file =
да, знаю, но так ругается
Alexey
Aleksandr
укажи тип имплементирующий Chattable и имеющий поле Content
Aleksandr
уроки ООП на го-канале
Alexey
закомментил // file.Caption = mediaFile.Caption приложение выполнилось
Anonymous
Вставка одной записи перезапишет только две записи.
Anonymous
Потестить стоит.
Anonymous
Зависит от того, что важнее - быстрая вставка (мой вариант) или быстрая выборка (вариант с хранением порядкового номера)
An7on
Народ, кто-нибудь сталкивался с проблемой когда gorm не пишет в базу модель с int = 0?
Alexey
уроки ООП на го-канале
а можно немного поподробнее :) я создал интерфейс type uploadFile interface { tgbotapi.Chattable } программа без Caption с ним выполняется. Мне нужно как-то добавть в интерфейс Caption, но как 😕 я к сожалению не понимаю...
An7on
А с единицей пишет?
пропускает это поле в update
An7on
воткнул пока костыль с DEFAULT
Alexey
type Captionable interface { tgbotapi.Chattable Caption string }
я это первым делдом попробовал 😕
Anonymous
В интерфейсе могут быть только методы
Aleksandr
struct
Aleksandr
а не interface
Aleksandr
или что? я что-то не могу сообразить - можно так у нас?
Aleksandr
struct мождет имплентировать другой struct?
Anonymous
А вообще в данном случае нужно иследовать внутренности библиотеки, а не методом тыка и вопросов в чатике пытаться заставить её правильно работать
Илья
см мой совет выше
Илья
:) api на такое не расчитано, там через приватный метод params происходит заполнение запроса в tg, так что только через метод и switch type {} и заполнение внутренних полей
Alexey
struct мождет имплентировать другой struct?
struct не работает, выдает ошибку... cannot use tgbotapi.NewVideoUpload(messageChatID, *reader) (type tgbotapi.VideoConfig) as type Captionable in assignment import (tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api") > i > А вообще в данном случае нужно иследовать внутренности библиотеки... согласен, да, я в процессе задавания вопросов библиотеку и смотрю... но просто там оч. сложно все написано :) пока не смог разобраться. @di3young > см мой совет выше > сделай этот объект структурой и сделать метод SetCaption, в котором, в зависимости от содержимого интерфейса заполни нужно поле :) да, спасибо, пытаюсь гуглить примеры такого подхода...
Anonymous
Надо было свою либу для работы с Telegram Bot API писать ))
Alexey
мне с одной стороны интересно
Alexey
это добить, но с точки зрения размера кода, вариант с копипастом не так и плох =) если написать это через struct, то кода будет не меньше
Alexey
Илья
https://play.golang.org/p/xfIcMXtnWY
Alexey
самое обидное, что не Питоне это все элементарно делается 😂
Anonymous
самое обидное, что не Питоне это все элементарно делается 😂
Просто у вас ещё питон головного мозга. Когда будет Golang головного мозга, наступит прозрение 😂
Alexey
https://play.golang.org/p/xfIcMXtnWY
спасибо, сейчас протестирую
Dorian
Парни, кто-то имел опыл разработки скрипта, для мониторинга? Нужно обеспечить 2-3к/сек исходящих ssh/telnet сессий.
Dorian
Да именно это У меня есть опыт с несколькими десятками, но в с тысячами никто не пробывал
Dorian
интересно где может быть узкое место
aadz
А 2-3к/сек исходящих ssh вобще-то процессор не успеет обсчитать. Они же там ключами обмениваются
Alexey
https://play.golang.org/p/xfIcMXtnWY
Еще раз спасибо протестировал, программа работает, но Caption не присваивается. 😁 Т.е. в файле что приходит в чат его нету. Хотя метод SetCaption вызывается судя по моим println Image from #insta_electronic PhotoConfig 2017/05/29 15:43:35 Uploading photo (1080x1080) 2017/05/29 15:43:36 Uploaded photo https://gist.github.com/targence/b86bcd920f247eb5bfab61bfe620e03c#file-uploader_struct-go @di3young
Alexey
Илья
в SetCaption в конец каждого кейса добавьте f.Chattable = file
Anonymous
Нужно у Дурова попросить встроить просмотрщик кода в телеграм, а то скриншотами показывать код не тема.
Mike
ну хочется-то чтобы прям тут работало
Alexey
в SetCaption в конец каждого кейса добавьте f.Chattable = file
Спасибо, сейчас все полностью работает.
Alexey
Alexei
а такой вариант кода - не?
Alexey
а в скайпе есть тег {code} 😊
Mike
если ты так будешь скидывать экран кода, он все равно не будет читаться
Mike
раскраска нужна
Alexey
Слева вариант со struct и кастомным методом, справа копипаст на switch =)