আমি একটি ইউআরএল সংক্ষিপ্ততর পরিষেবা তৈরি করতে চাই যেখানে আপনি একটি ইনপুট ক্ষেত্রে দীর্ঘ 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