Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Просьба владельцам телефонов   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.25 c
15-1266047756
oldman
2010-02-13 10:55
2010.08.27
Ну вот и началась Олимпиада!


2-1271956369
Сергей
2010-04-22 21:12
2010.08.27
Нужна помошь (незнаю как описать)


2-1272953338
Беликов А.А
2010-05-04 10:08
2010.08.27
Конвертация TBitmap в TGPBitmap


2-1269947335
Delphist2
2010-03-30 15:08
2010.08.27
EDatabaseError


2-1273619311
NasdaqPredictor
2010-05-12 03:08
2010.08.27
О написании собственной DLL