Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПросьба владельцам телефонов Найти похожие ветки
← →
pasha_golub © (2010-05-14 16:52) [0]Ребяты, я пользователям отправляю код на телефон. Так вот некоторые жалуются, что не могут отделить цифру 0 от буквы О. Посему к Вам просьба такового толка, если не сложно, конечно. Возьмите свой телефон и попробуйте набрать на нём два текста:
1. S1V0IO
2. s1v0io
Я хочу узнать, в каком виде отдавать код. В нижнем регистре или в верхнем. Что лучше читается? Да, и представьте заодно, что вы обычный дядя (или тётя), который не знает, чем на самом деле отличается 0 от О. ;)
Спасибо
← →
DVM © (2010-05-14 16:54) [1]В таких вещах обычно исключают те буквы и цифры, для которых возможна неоднозначная трактовка.
← →
DVM © (2010-05-14 16:56) [2]т.е сразу на вылет O O о 1 I l
← →
Anatoly Podgoretsky © (2010-05-14 17:02) [3]> pasha_golub (14.05.2010 16:52:00) [0]
Есть особый прием - не использовать в кодах определенные символы, например
не использовать 0 и О, если только заранее неизвестно, что в коде только
цифры. Также и по другим символам
← →
pasha_golub © (2010-05-14 17:08) [4]Друззя. :) Я понимаю, что исключают. Но это по сути число в z-ричном представлении (0..9, "a".."z").
Как же мне оттуда выкинуть 0 или о? Я понимаю, что можно, но математика тогда некрасивая получается :)
← →
DVM © (2010-05-14 17:09) [5]
> pasha_golub © (14.05.10 16:52)
> 1. S1V0IO
Так вот он какой код разблокировки SMS трояна-блокировщика Windows! :)
← →
MBo © (2010-05-14 17:10) [6]>Как же мне оттуда выкинуть 0 или о? Я понимаю, что можно, но математика тогда некрасивая получается :)
Использовать сокращенный алфавит
← →
DVM © (2010-05-14 17:11) [7]
> pasha_golub © (14.05.10 17:08) [4]
> Но это по сути число в z-ричном представлении (0..9, "a".
> ."z").
>
> Как же мне оттуда выкинуть 0 или о?
Да уж из шестнадцатеричного числа букву O как из песни не выкинешь! :)
← →
RWolf © (2010-05-14 17:18) [8]> Но это по сути число в z-ричном представлении
а почему именно в z ?
пусть будет в z минус все ненужные символы.
← →
pasha_golub © (2010-05-14 17:29) [9]
> MBo © (14.05.10 17:10) [6]
> Использовать сокращенный алфавит
> RWolf © (14.05.10 17:18) [8]
> пусть будет в z минус все ненужные символы.
Тогда длина кода увеличится. Не хочется. Плюс сервис уже запущен.
> DVM © (14.05.10 17:09) [5]
>
> Так вот он какой код разблокировки SMS трояна-блокировщика
> Windows! :)
Спалил ;)
← →
pasha_golub © (2010-05-14 17:31) [10]Кстати, хоть кто-то попробовал посмотреть как оно на телефоне выглядит? :))
← →
RWolf © (2010-05-14 17:33) [11]
> > пусть будет в z минус все ненужные символы.
> Тогда длина кода увеличится. Не хочется. Плюс сервис уже запущен.
Ну, тогда так:
repeat
код:=СгенерироватьНовыйКод();
until not ЕстьВредныеЦифрыВКоде(код); //когда-нибудь повезёт
← →
antonn © (2010-05-14 17:38) [12]
> pasha_golub © (14.05.10 16:52)
набрал, пока набирал понял, что в [0] не L в нижнем регистре, а еденица...
← →
pasha_golub © (2010-05-14 17:43) [13]
> RWolf © (14.05.10 17:33) [11]
Код - это хеш идентификатора в базе.
← →
pasha_golub © (2010-05-14 17:43) [14]
> antonn © (14.05.10 17:38) [12]
>
>
> > pasha_golub © (14.05.10 16:52)
>
> набрал, пока набирал понял, что в [0] не L в нижнем регистре,
> а еденица...
Тоже засада... Спасибо
← →
Fredericco © (2010-05-14 17:44) [15]Так ты же сам выход и написал.
Если вариант с нижним регистром использовать всегда, то о легко отличить от 0. о0.
На телефоне у себя ввел: в верхнем регистре видна разница, но в нижнем она видна лучше.
← →
RWolf © (2010-05-14 17:45) [16]
> Код - это хеш идентификатора в базе.
а, скажем, при генерации идентификаторов отбрасывать те из них, что дают после хэширования плохой код?
← →
Fredericco © (2010-05-14 17:46) [17]
> antonn © (14.05.10 17:38) [12]
Не, у меня вроде в нижнем l от 1 отличается.
← →
pasha_golub © (2010-05-14 17:49) [18]
> RWolf © (14.05.10 17:45) [16]
Это идентификатор транзакции оплаты. Приходит "сверху". :)
В общем, не поленился. Укоротил алфавит. И вы знаете, код максимум удлиняется на два символа. Что, я считаю, очень даже неплохо.
← →
antonn © (2010-05-14 17:50) [19]
>
> Не, у меня вроде в нижнем l от 1 отличается.
я сначала ввел из [0] нижнюю строчку, т.к. режим ввода был маленькие буквы и лень было переключать, оказалось что "в исходнике" была еденица :)
← →
RWolf © (2010-05-14 17:53) [20]
> В общем, не поленился. Укоротил алфавит. И вы знаете, код
> максимум удлиняется на два символа. Что, я считаю, очень
> даже неплохо.
и да, если строка всё ещё кажется длинной, можно просто отбросить лишние символы.
← →
DVM © (2010-05-14 17:58) [21]
> RWolf © (14.05.10 17:53) [20]
если у него там что-то закодировано как же он отбросит. Судя по тому что строка удлинилась, значит он что-то в ней хранит.
← →
pasha_golub © (2010-05-14 17:59) [22]
> RWolf © (14.05.10 17:53) [20]
Я думаю, они переживут строку в 8 символов. :)) Теперь вот вопрос в том, как это все поменять. Если у одних уже коды в старом формате, а новым надо выдавать в новом. Двойную проверку не хочется городить, блин
← →
pasha_golub © (2010-05-14 18:01) [23]
> DVM © (14.05.10 17:58) [21]
Число - от него хеш, потом конверт в буквенно-цифровое представление.
← →
Mystic © (2010-05-14 18:43) [24]
> Как же мне оттуда выкинуть 0 или о? Я понимаю, что можно,
> но математика тогда некрасивая получается :)
А чего некрасивого то?
Symbols = "0123456789abcdefghjkmnpqrstuvwxyz";
SymLen = Length(Symbols);
function ToSym(X: Integer): string;
begin
Result := "";
while X > 0 do
begin
Index := X mod SymLen;
X := X div SymLen;
Result := Result + Symbols[Index+1];
end;
end;
function FromSym(const S: string): Integer;
var
I: Integer;
begin
Result := 0;
for I := 1 to Length(S) do
begin
I := Pos(S[I], Symbols) - 1;
if I < 0 then raise EConvertError.Create("Invalid sym");
Result := SymLen * Result + I;
end;
end;
← →
test © (2010-05-14 19:29) [25]Я бы еще "3" и "з" считал за одну букву, если надо чтобы код приходил в любом случае. Ну и 9 и g мало ли что они на экране видят.Имхо проверка должна быть в стиле:
TRegExpr [A][oOQ0][9g][з3] для A093
чтобы все пришло.
Ты поинтересуйся разработкой под мобильники там эти экраны каждый лепит из тех соображений что дизигнер скажет и получается в итоге чудные девайсы типа этого.
http://mobbit.info/item/2010/2/12/g-point-ny-ochen-neobychnaya-konceptyal-naya-mysh
← →
Anatoly Podgoretsky © (2010-05-14 20:33) [26]> pasha_golub (14.05.2010 17:08:04) [4]
Вообще то это не так, это совсем другое множество 0..N и к ней таблица
соответствия.
← →
Anatoly Podgoretsky © (2010-05-14 20:36) [27]> DVM (14.05.2010 17:11:07) [7]
Шестнадцатиричное число также находится в зоне риска, часто путаются символы
8 и B, их надо заменять другими буквами, например H и Z
← →
Anatoly Podgoretsky © (2010-05-14 20:40) [28]> pasha_golub (14.05.2010 17:29:09) [9]
Все таки бери за основу принцип HEX кода, очень простая реализация, только
вместо стандартных кодов, замени ряд HEX букв другими, через таблицу
подстановки [0..15] of char
Выкидывать надо следующие буквы 0, 1. 6, 8, B - эти пять заменить другими с
четким написанием.
← →
Дмитрий С © (2010-05-14 20:58) [29]Как вариант писать такой текст:
S1V0IO
Читается: Эс Один Вэ Ноль Ай Оу
Еще вариант, заменяй 1 I 0 O на псевдографику:
S*V%$#
А при проверке заменяй обратно.
Еще вариант (плохой). Делай поиск в базе с учетом ошибок:
`hash` RLIKE "S[1I]V[0O][1I][0O]" (MySQL)
← →
GrayFace © (2010-05-14 21:19) [30]pasha_golub © (14.05.10 17:49) [18]
В общем, не поленился. Укоротил алфавит. И вы знаете, код максимум удлиняется на два символа. Что, я считаю, очень даже неплохо.
Странно, как целых 2 получилось?
← →
Smile (2010-05-14 21:42) [31]> Ребяты, я пользователям отправляю код на телефон.
А где они этот код используют?
На компьютере или на телефоне? :)
Не проще ли передавать этот код электронной почтой?
Тогда проблем будет заметно меньше.
Скопипастили и все (не разбираю цифра там или буква)
← →
test © (2010-05-14 21:51) [32]Дмитрий С © (14.05.10 20:58) [29]
А чем RLIKE плох?
← →
pasha_golub © (2010-05-17 11:42) [33]
> GrayFace © (14.05.10 21:19) [30]
>
> pasha_golub © (14.05.10 17:49) [18]
> В общем, не поленился. Укоротил алфавит. И вы знаете, код
> максимум удлиняется на два символа. Что, я считаю, очень
> даже неплохо.
> Странно, как целых 2 получилось?
На один. У меня код из двух частей на самом деле. :)
← →
Leonid Troyanovsky © (2010-05-17 14:04) [34]
> pasha_golub © (14.05.10 16:52)
> Ребяты, я пользователям отправляю код на телефон
Поубивал бы всех, кто буквы с цифрами мешает.
Чего бы цифрами не обозначать, хоть для телефона, хоть для компа.
Пусть цифр больше, но только цифры.
Ну, и десятичные, конечно, не римские и не 16-ричные.
--
Regards, LVT.
← →
pasha_golub © (2010-05-17 14:47) [35]Чем длиннее код, тем легче ошибиться.
← →
Smile (2010-05-17 15:24) [36]<off top>
>pasha_golub © (14.05.10 16:52)
... я пользователям отправляю код на телефон...
С мобильного телефона, испытывая те же муки и страдания как твои получатели кода?
Или с компьютера, лишаясь такого рода удовольствия?
</off top>
:)
← →
Leonid Troyanovsky © (2010-05-17 15:45) [37]
> pasha_golub © (17.05.10 14:47) [35]
> Чем длиннее код, тем легче ошибиться.
Дели на группы тройками, люди спокойно их считывают.
А вот, скажем, читать с чека банкомата пароли из цифробуквенной мешанины и вводить их даже на комп (с учетом раскладки и шифта) - удовольствие гораздо ниже среднего, особенно которые голубым
шрифтом на серой бумажке.
--
Regards, LVT.
← →
pasha_golub © (2010-05-17 15:51) [38]
> Smile (17.05.10 15:24) [36]
> Или с компьютера, лишаясь такого рода удовольствия?
С компьютера, конечно. :)
> Leonid Troyanovsky © (17.05.10 15:45) [37]
>
> Дели на группы тройками, люди спокойно их считывают.
Подумаю. Спасибо.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.066 c