|
|
|
| Здравствуйте.
Подскажите пожалуйста алгоритм для сервиса сокращения ссылок... | |
|
|
|
|
|
|
|
для: Догадывающийся
(09.10.2010 в 17:52)
| | это что за зверь? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(09.10.2010 в 20:34)
| | [url]goo.gl[/url]
Автору темы:
Нужно хранить в БД соответствие между полным и коротким URL'ами и при запросе второго редиректить на первый. | |
|
|
|
|
|
|
|
для: Киналь
(09.10.2010 в 20:51)
| | Можно и без редиректа обойтись | |
|
|
|
|
|
|
|
для: deimand
(09.10.2010 в 22:52)
| | Э? В смысле? | |
|
|
|
|
|
|
|
|
для: deimand
(10.10.2010 в 03:02)
| | Причем тут это?
Ссылка дается на сайт goo.gl, а затем вас должно переадресовать на какой-нибудь dsfmkwmf.ru/sdfkwewef/453/df/45345/fsdf.html | |
|
|
|
|
|
|
|
для: Догадывающийся
(09.10.2010 в 17:52)
| | Уточнаю вопрос... меня интересует алгоритм который будет максимально компактно использовать комбинации чисел и букв.
например
site.ru/0001
site.ru/0009
site.ru/000a
site.ru/000A
site.ru/000b
site.ru/000B
и т.д. то есть при максимально коротком параметре получить как можно больше комбинаций. для сопастовления длинного урл и короткого. | |
|
|
|
|
|
|
|
для: Догадывающийся
(10.10.2010 в 01:24)
| | А как у вас с математикой?
Если взять 26 букв английского алфавита только в нижнем регистре и составлять из них слова длиной 5 символов, вы получите в сумме 26^5 слов - более 11,8 млн. Мой алгоритм показан здесь в посте от 09.10.2010 в 16:13 (на генерации пароля).
Причем это не "уточню вопрос", это "напишу другой вопрос". Сервис сокращения ссылок - это то, о чем вам написали выше. А это - просто генерация набора символов. | |
|
|
|
|
|
|
|
для: Догадывающийся
(10.10.2010 в 01:24)
| | Пара минут гугля, общие соображение и школьный курс математики позволяют заключить, что:
а) максимальная длина URL'а составляет 2083 символа
б) максимальная длина доменного имени составляет 63 символа, минимальная — 1 символ.
в) максимальная длина домена первого уровня составляет 6 символов, минимальная — 2 символа.
г) регистр доменного имени и домена первого уровня игнорируется.
д) регистр остальной части URL'а имеет значение.
е) в URL'е могут использоваться латинские буквы, арабские цифры и некоторые знаки препинания (список ищите сами, для простоты их пока не учтём)
ё) в сумме получаем 26+10 = 36 символов для доменного имени/домена и 26*2+10 = 62 символа для остальной части URL
ж) самый худший для нас случай: доменное имя из одного символа, домен из двух, общая длина — максимальная.
з) это даёт общее число комбинаций N = 36^3+62^2079
и) если вы используете Unicode, в вашем распоряжении будет примерно 10^5 знаков.
к) для отыскания необходимой длины короткого URL нужно решить уравнение X * 10^5 = 36^3+62^2079, где Х — искомое.
л) найденная длина короткого URL'а будет минимально необходимой для кодирования всех возможно URL'ов.
Приведённые «выкладки» должны быть уточнены с учётом, во-первых, спецсимволов (?, &, @ и пр.), во-вторых, ограниченности набора протоколов, чьё обозначение также входит в URL, и в-третьих, с учётом ограниченности набора доменов первого уровня. | |
|
|
|
|
|
|
|
для: Киналь
(10.10.2010 в 11:05)
| | Киналь, супер!!! РЖУ:) | |
|
|
|
|
|
|
|
для: Киналь
(10.10.2010 в 11:05)
| | Наврал, прошу прощения. Ещё один пункт забыл. В пункте «к» мы найдём не длину короткого URL'а, а длину ключа в БД. Этот ключ нужно будет передавать GET-запросом, а поскольку это опять URL, то надо будет ещё перевести из Unicode в [a-Z0-9].
То есть, навскидку, вам хватит тысяч эдак полутора символов. | |
|
|
|
|
|
|
|
для: Киналь
(10.10.2010 в 11:36)
| | Ладно заливать-то :))
Ключ-то факт покороче выйдет :) | |
|
|
|
|
|
|
|
для: Trianon
(10.10.2010 в 18:24)
| | . | |
|
|
|
|
|
|
|
для: Киналь
(10.10.2010 в 18:57)
| | > сойдемся на пяти сотнях? :)
пяти сотнях чего? :))
первичный ключ в БД всяко можно сделать суррогатным.
А значит он не превысит 8 байт. :))) | |
|
|
|
|
|
|
|
для: Trianon
(10.10.2010 в 18:58)
| | А, этот ключ. Но сам-то «короткий» URL волей-неволей получится немаленьким)
PS Вот чёрт, закрыли возможность редактирования сообщений после ответа =( | |
|
|
|
|
|
|
|
для: Киналь
(10.10.2010 в 19:01)
| | >А, этот ключ. Но сам-то «короткий» URL волей-неволей получится немаленьким)
Если делать его с БД (чего я, признаться, не ожидал, после Вашего ликбеза об основах компрессии данных)
то короткий URL разумно сделать кодированным первичным ключом. так что те же 8-10 ну 12 от силы байт.
>
>PS Вот чёрт, закрыли возможность редактирования сообщений после ответа =(
Это уже давно так.
Зато дисциплиникует.
Неподумавши писать - людей насмешишь... | |
|
|
|