Есть несколько способов сделать это:
Использование & nbsp;
display: table-cell;
vertical-align: middle;
и CSS контейнера для
display: table;
Используйте заполнение вместе с медиа-экраном для изменения заполнения относительно размера экрана. Google @media, чтобы узнать больше.
Использовать относительное заполнение
Т.е., указать заполнение в терминах%
Как клиент я был бы доволен:
year-month-day/short_uid
например:
2009-07-27/KT1E
Это дает место примерно для 33 ^ 4 ~ 1 млн заказов в день.
Вот реализация системы, которую я предложил в предыдущем вопросе :
MAGIC = [];
29.downto(0) {|i| MAGIC << 839712541[i]}
def convert(num)
order = 0
0.upto(MAGIC.length - 1) {|i| order = order << 1 | (num[i] ^ MAGIC[i]) }
order
end
Это всего лишь дешевая хеш-функция, но она усложняет задачу среднему пользователю определить, сколько заказов было обработано, или количество для другого заказа. На нем не кончится место, пока вы не выполните 2 30 приказов, которые вы не исполните в ближайшее время.
Вот результаты convert (x)
] от 1 до 10:
1: 302841629
2: 571277085
3: 34406173
4: 973930269
5: 437059357
6: 705494813
7: 168623901
8: 906821405
9: 369950493
10: 638385949
Вместо генерации и сохранения числа вы можете попробовать создать зашифрованную версию это не раскрыло бы количество заказов в системе. Вот статья именно об этом.
На моем старом месте это было следующее:
Идентификатор клиента (начинающийся с 1001), последовательность сделанного заказа, затем уникальный идентификатор из таблицы «Заказы». Это дало нам красивое длинное число, по крайней мере, из 6 цифр, и оно было уникальным из-за двух первичных ключей.
Я полагаю, если вы поставите дефисы или пробелы, вы даже сможете немного понять покупательские привычки клиентов. Это не ошеломляюще безопасно, и я предполагаю, что идентификатор заказа можно было бы угадать, но я не уверен, есть ли в этом риск для безопасности.
Я бы предпочел ввести номер 347 и получить отличное обслуживание клиентов на небольшом красивом веб-сайте, чем: G-84e38wRD-45OM на мегасайте, и меня игнорируют в течение недели.
Вы не хотели бы использовать его как системный идентификатор или часть ссылки, но как удобный номер он работает.
Хорошо, а как насчет этого?
Последовательно, начиная с некоторого числа (2468) и добавляя к нему другое число, скажем, день месяца, в который был размещен заказ.
Число всегда увеличивается (пока вы не превысите емкость целочисленного типа, но к тому времени вам, вероятно, все равно, так как вы добьетесь невероятного успеха и будете потягивать маргариту на каком-нибудь далеком райском острове). Его достаточно просто реализовать, и он достаточно смешивает, чтобы отбросить любые предположения о том, сколько у вас заказов.
Последовательно, начиная с 1? Что в этом плохого?
(Примечание: этот ответ был дан до того, как ОП отредактировал вопрос.)
Примерно так:
Всего одна идея в стиле Руба Голдберга:
Вы можете создать таблицу со случайным набором чисел, привязанных к случайному периоду времени:
Time Period Interleaver
next 2 weeks: 442
following 8 days: 142
following 3 weeks: 580
и так далее .. .. Это дает вам неограниченное количество перемежителей и не позволяет никому знать вашу скорость заказов, потому что ваши временные периоды могут составлять порядка дней, а ваш перемежитель выполняет за вас много низкотехнологичных «заторов». 1217] Вы можете создать эту таблицу один раз и просто убедиться, что все перемежители уникальны. Вы можете убедиться, что у вас не закончились перемежители, просто добавив больше символов в набор или начав с определения более длинных перемежителей.
Таким образом, вы генерируете идентификатор заказа, получая последовательный номер и используя сегодняшнее значение перемежителя, чередуя его цифры (отсюда и имя) между цифрами каждого последовательного номера. Гарантированно уникальное - гарантированно запутанное.
Пример :
Today I have a sequential number 1, so I will generate the order ID: 4412
The next order will be 4422
The next order will be 4432
The 10th order will be 41402
In two weeks my interleaver will change to 142,
The 200th order will be 210402
The 201th order will be 210412
Eight days later, my interleaver changes to 580:
The 292th order will be 259820
Это будет совершенно запутанным, но полностью детерминированным. Вы можете просто удалить все остальные цифры, начиная с единицы. (кроме случаев, когда ваш идентификатор заказа всего на одну цифру длиннее, чем ваш перемежитель)
Я не сказал, что это лучший способ - просто пятничная идея.
Это можно сделать как почтовый индекс: 2b2 b2b
Таким образом, у него есть какая-то контрольная сумма (не совсем, но, по крайней мере, вы знаете, что это неправильно, если есть 2 последовательных числа или буквы). Его легко прочитать по телефону, и он не дает представления о том, сколько заказов находится в системе.
http://blog.logeek.fr/2009/7/2/creating-small-unique-tokens-in-ruby
>> rand(36**8).to_s(36)
=> "uur0cj2h"
Примерно так: