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 ответов

28 просмотров

а почему в интерфейсе рынке выводятся айдишники из бд, а не например "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 тысяч лет. Уверяю вас, когда этот срок начнёт подходить к концу -- вы что-нибудь придумаете.

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

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

лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
#include <stdio.h> #include <stdlib.h> #include <time.h> int** generate_table(int size_matrix) { int** matrix = (int**)malloc(size_matrix * sizeof(int*)); for (int i ...
Чувак
1
Яндекс маршрутизатор кто-нибудь использовал с своих проектах, чтоб через него маршруты составить/посчитать? Насколько простой/муторный сервис?
Dreamer_0x01 VeseloV
7
У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Дебил? Я ищу друга
Bitard 228
27
Карта сайта