আমি একটি ইউআরএল সংক্ষিপ্ততর পরিষেবা তৈরি করতে চাই যেখানে আপনি একটি ইনপুট ক্ষেত্রে দীর্ঘ URL লিখতে পারেন এবং পরিষেবাটি " http://www.example.org/abcdef
" এর URL টি সংক্ষিপ্ত করে তোলে ।
" abcdef
" এর পরিবর্তে ছয়টি অক্ষর সমন্বিত অন্য কোনও স্ট্রিং থাকতে পারে a-z, A-Z and 0-9
। এটি 56 ~ 57 বিলিয়ন সম্ভাব্য স্ট্রিংগুলি তৈরি করে।
আমার পদ্ধতি:
আমার কাছে তিনটি কলাম সহ একটি ডাটাবেস টেবিল রয়েছে:
- আইডি, পূর্ণসংখ্যা, স্বতঃবৃদ্ধি
- দীর্ঘ, স্ট্রিং, দীর্ঘ ইউআরএল ব্যবহারকারী প্রবেশ করেছে entered
- সংক্ষিপ্ত, স্ট্রিং, সংক্ষিপ্ত ইউআরএল (বা মাত্র ছয় অক্ষর)
আমি তখন লম্বা ইউআরএলটি টেবিলের মধ্যে sertোকাতাম। তারপরে আমি " id
" এর জন্য অটো-ইনক্রিমেন্ট মান নির্বাচন করব এবং এর একটি হ্যাশ তৈরি করব। এই হ্যাশটি " short
" হিসাবে sertedোকানো উচিত । তবে আমি কী ধরণের হ্যাশ তৈরি করব? এমডি 5 এর মতো হ্যাশ অ্যালগরিদমগুলি খুব দীর্ঘ স্ট্রিং তৈরি করে। আমি মনে করি এই অ্যালগরিদমগুলি আমি ব্যবহার করি না। একটি স্ব-নির্মিত অ্যালগরিদমও কাজ করবে।
আমার ধারণা:
" http://www.google.de/
" এর জন্য আমি অটো-ইনক্রিমেন্ট আইডি পাই 239472
। তারপরে আমি নিম্নলিখিত পদক্ষেপগুলি করি:
short = '';
if divisible by 2, add "a"+the result to short
if divisible by 3, add "b"+the result to short
... until I have divisors for a-z and A-Z.
সংখ্যাটি আর বিভাজ্য না হওয়া পর্যন্ত এটি পুনরাবৃত্তি হতে পারে। আপনি কি মনে করেন এটি একটি ভাল পদ্ধতির? আপনি একটি ভাল ধারণা আছে?
এই বিষয়ে চলমান আগ্রহের কারণে, আমি জাভাস্ক্রিপ্ট , পিএইচপি , পাইথন এবং জাভা বাস্তবায়ন সহ গিটহাবের একটি কার্যকর সমাধান প্রকাশ করেছি । আপনি চাইলে আপনার সমাধান যুক্ত করুন :)
encode()
এবংdecode()
ফাংশন থাকতে পারে। ধাপ তাই হয়: (1) সংরক্ষণ করুন URL টি ডাটাবেসের মধ্যে (2) সঙ্গে সংক্ষিপ্ত স্ট্রিং ডাটাবেসের (3) রূপান্তর পূর্ণসংখ্যা আইডি থেকে যে URL জন্য অনন্য সারি আইডি পানencode()
, যেমন273984
করতেf5a4
(4) সংক্ষিপ্ত স্ট্রিং (যেমন ব্যবহার করুনf4a4
) আপনার শেরেবল ইউআরএল (৫) একটি সংক্ষিপ্ত স্ট্রিংয়ের জন্য অনুরোধ পাওয়ার সময় (যেমন20a8
), স্ট্রিংটি একটি পূর্ণসংখ্যার আইডিতে ডিকোড করুনdecode()
()) প্রদত্ত আইডির জন্য ডাটাবেসে ইউআরএল সন্ধান করুন। রূপান্তরের জন্য, ব্যবহার: github.com/delight-im/ShortURL