172 похожих чатов

👋🏻 Ребят, вопросик есть! Чую шо нубский, но надеюсь тут

за такое не бьют (сильно).

Есть табличка MARKET:
(id, seller, item, price).
Юзается для рынка в игре, игроки выставляют товары, покупают и тд.

id - это у нас типичный Primary-key инкремент. В интерфейсе рынка, есть кнопочки, и у них под капотом такие команды *market check {id}*, *market buy {id}*

Но что меня кошмарит, так это то что покупок и выставлений товаров дофигища происходит, автоинкримент этот растёт, сначала там *buy 1*, потом *buy 1250202*, а через ещё месяцок команды превратятся в *buy 5912591259120512059125912*.

Под капот кнопок не засунуть много символов, там есть лимит и *market buy 99999999....* на определённом этапе уже выдаст ошибку. Да и в целом видеть этих гигантских id-годзил стрёмно.

Шо делать, как к этому подступиться, и как делают адекватные люди?

14 ответов

29 просмотров

а почему в интерфейсе рынке выводятся айдишники из бд, а не например "Market buy Nice Item from player m22"?))

джессик- Автор вопроса
✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
все равно не очень UX-ово, но ладно, я просто поин...

Не поняв. Юикс это же про пользовательский опыт и юзабилити. Может ты не понял, но игрок не видит команды market buy 5125912591959 Это всё внутри кнопки А видит игрок *🍎 Купить яблочко*

джессик- Автор вопроса
✙ Nikita 🇺🇦🇵🇱🇱🇻🇱🇹🇪🇪🇺🇸🇬🇧🇨🇿🇫🇷🇩🇪🇮🇹🇧🇬🇹🇼🇯🇵🇰🇷🇹🇷🇪🇸🇬🇷
а, блин, сорян, на ночь глядя не вычитал "Под капо...

{"inline_keyboard": [[{"text": "💰 купить за 3900", "callback_data": "mbuy 389539950 206977"} во, если кратко, это телеграм кнопочка, в колбэк дата собственно команда. И у этого говна лимит на символы

джессик
{"inline_keyboard": [[{"text": "💰 купить за 3900",...

а в вопросе реально идет речь о телеграмовской клавиатуре?)или это экстрасенсорика на такие вопросы уже сработала?

MINVALUE + MAXVALUE + CYCLE + следить чтобы старые удалялись до того как цикл до них по второму кругу дойдет, или при вставке обрабатывать и пропускать. https://postgrespro.ru/docs/postgresql/14/sql-createsequence

джессик
{"inline_keyboard": [[{"text": "💰 купить за 3900",...

в случае с телеграмом можно при построении этого меню, вместо написания всей команды в кнопке, создать дополинтельную сущность с достаточно уникальным ID и хранить этот айди в кнопке по нажатию получаем коллбек, берем этот айди, находим соотвествие и выполянем нужную команду в таком методе нет ограничения на длинну команды пары <id кнопки, команда> можно хранить даже в редисе, как хэшмапу для каждого юзера отдельно

джессик- Автор вопроса
джессик
Это уже какие-то лютые танцы с бубном Но тоже спас...

Обычно просто так обходят ограничение на длинну коллбек даты в телеграм ботах, пишут "сократитель ссылок в памяти"))

джессик
{"inline_keyboard": [[{"text": "💰 купить за 3900",...

А вам принципиально чтобы идшники состояли только из цифр? Потому как если закодировать идшник в base64, то максимальное значение, которое можно поместить в bigint, займёт всего 11 символов. А до этого максимального значения вы и близко не доберётесь примерно никогда.

1) В то, что вы написали -- не превратится, поскольку максимум там на 6 цыфр (в миллион примерно раз) меньшэ. 2) Максимум там примерно 10 квинтиллионов. Если выделять по миллиону значений в секунду (вы столько не сможэте. Реалистичный лимит -- несколько десятков тысяч транзакцый на запись в секунду) -- то для того, чтобы забить все значения потребуется примерно 10 триллионов секунд, или 30 тысяч лет. Уверяю вас, когда этот срок начнёт подходить к концу -- вы что-нибудь придумаете.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта