আপনি যদি আপনার রুবি দক্ষতার উপর কাজ এবং অনুশীলন করার জন্য একটি ছোট প্রকল্প খুঁজছেন তাহলে আপনি সঠিক জায়গায় আছেন৷
আজ আমি আপনার সাথে একসাথে একটি "লিঙ্ক শর্টনার" অ্যাপ্লিকেশন তৈরি করতে চাই।
লিঙ্ক শর্টনার কি?
আমি নিশ্চিত যে আপনি তাদের আগে দেখেছেন...
এই "সংক্ষিপ্ত লিঙ্ক" মত:
https://t.co/eKBRm2tTUF
আপনি যখন এই URL-এ যান তখন আপনি মূল URL-এ পুনঃনির্দেশিত হন৷
৷কিন্তু এটা কিভাবে কাজ করে?
ধারণা হল এই কোডটি ম্যাপ করা, eKBRm2tTUF
উদাহরণে, আমাদের ডাটাবেসের আসল ইউআরএলে।
এটি একটি সাধারণ ধারণা, কিন্তু কিছু জিনিস আমাদের পরিচালনা করতে হবে।
লাইক…
কিভাবে এই কোড উত্পাদন করবেন? আপনি কিভাবে এটি সম্পূর্ণ URL এর সাথে মেলে?
তো চলুন শুরু করা যাক!
প্রথম পদক্ষেপ
আমি এটির জন্য সিনাট্রা ব্যবহার করতে যাচ্ছি কারণ এটির কোনো সেটআপের প্রয়োজন নেই, তাই আমরা এখনই যেতে পারি।
এবং একটি সাধারণ SQL ডাটাবেসের পরিবর্তে আমিও ভিন্ন কিছু করতে যাচ্ছি।
এটি কী তা জানতে পড়তে থাকুন 🙂
এখানে প্রাথমিক কোড আছে :
require 'sinatra' get '/:url' do "The URL is #{params[:url]}" end get '/' do "Send a POST request to register a new URL." end post '/' do "New URL added: #{params[:url]}\n" end
এটি একটি সাধারণ সিনাট্রা অ্যাপ যার 3টি অ্যাকশন, অথবা আপনি চাইলে রুট।
আমরা আমাদের আবেদন পরিদর্শন করতে পারি এবং আমরা "একটি পোস্ট অনুরোধ পাঠান" বার্তা পাব৷
৷আমরা এটা কিভাবে করব?
আপনি পোস্টম্যানের মত একটি ব্রাউজার প্লাগইন ব্যবহার করতে পারেন।
কিন্তু আমি curl
ব্যবহার করতে চাই এই ধরনের জিনিসের জন্য।
এটি একটি সহজ টুল যা আপনি যেকোনো অপারেটিং সিস্টেমে ইনস্টল করতে সক্ষম হবেন এবং এটি আপনাকে আপনার সিনাট্রা অ্যাপের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেবে৷
একটি পোস্টের অনুরোধ পাঠানো হচ্ছে
আপনি যদি অনুসরণ করেন তবে আপনার সিনাট্রা অ্যাপটি চালু থাকা উচিত এবং curl
আপনার মেশিনে ইনস্টল করুন৷
এখন আপনি এইভাবে একটি POST অনুরোধ পাঠাতে পারেন:
curl localhost:4567 --data "url=rubyguides.com" -X POST
এটি আপনার টার্মিনালে "নতুন URL যুক্ত" বার্তাটি প্রিন্ট করবে৷
৷দারুণ!
পরবর্তী ধাপ হল এই ইউআরএলটিকে একটি ছোট ইউআরএলে ম্যাপ করা।
দেখা যাক কিভাবে আমরা এটা করতে পারি।
ইউআরএল ম্যাপিং
ম্যাপিংয়ের জন্য আপনি এটি একটি এলোমেলো স্ট্রিং ব্যবহার করে, একটি হ্যাশ ফাংশন ব্যবহার করে বা কোনও ধরণের এনকোডিং ব্যবহার করে করতে পারেন৷
এটি করার একটি উপায় এখানে:
LETTERS = Array('a'..'z') def generate_short_url Array.new(6) { LETTERS.sample }.join end
এই ক্ষেত্রে আমি 6টি অক্ষরের একটি এলোমেলো স্ট্রিং নিয়ে যাচ্ছি।
আপনি যদি এটি করার অন্য উপায় দেখতে চান তাহলে ভিডিওটি দেখুন৷
এটি আমাদের "শর্ট কোড" দেবে যা আমরা মূল ইউআরএলকে সংক্ষিপ্ত URL-এ ম্যাপ করতে ব্যবহার করতে যাচ্ছি।
এরপর কি?
আমাদের এই কোডটি কোথাও সংরক্ষণ করতে হবে যাতে আমরা ব্যবহারকারীদের সঠিক জায়গায় পুনঃনির্দেশ করতে পারি।
আমাদের "NoSQL" ডেটাবেস
এই প্রকল্পের জন্য আমি শুধু একটি সাধারণ ডাটাবেস ব্যবহার করতে চেয়েছিলাম।
এবং শুধু ফাইল ব্যবহার করার চেয়ে সহজ কি, তাই না?
রুবির স্ট্যান্ডার্ড লাইব্রেরিতে এই PStore ক্লাস রয়েছে যা আমাদের ডেটা পরিচালনা করতে সাহায্য করবে।
এটি আমাদের মতো একটি ছোট অ্যাপ্লিকেশনের জন্য দুর্দান্ত৷
এখানে কোডটি আছে :
class ShortURL def self.save(code, original) store.transaction { |t| t =original } end def self.read(code) store.transaction { |t| t } end def self.store @store ||=PStore.new("short_urls.db") endend
এখানে কিছু জিনিস চলছে।
প্রথমত, আমাদের এই store
আছে আমাদের PStore
অ্যাক্সেস করার পদ্ধতি বস্তু।
তারপর আমাদের save
আছে &read
পদ্ধতি।
আপনি লক্ষ্য করবেন যে PStore
হ্যাশের মতো আচরণ করে। পার্থক্যের সাথে যে প্রতিটি অপারেশন একটি লেনদেন ব্লকের মধ্যে ঘটতে হবে।
এখন আমরা ShortURL
ব্যবহার করতে আমাদের সিনাট্রা অ্যাপ আপডেট করতে পারি ক্লাস:
require 'sinatra' get '/:url' do redirect "https://" + ShortURL.read(params[:url]) end get '/' do "Send a POST request to register a new URL." end post '/' do ShortURL.save(generate_short_url, params[:url]) "New URL added: localhost:4567/#{generate_short_url}\n" end
আর এটাই!
আমাদের কাছে এখন একটি কার্যকরী লিঙ্ক শর্টেনার রয়েছে৷
৷প্রো টিপ:আপনি যখন আপনার কোডে পরিবর্তন করবেন তখন আপনার সিনাট্রা অ্যাপটি স্বয়ংক্রিয়ভাবে পুনরায় লোড করতে শটগান রত্ন ব্যবহার করতে পারেন৷
এখনও কিছু কাজ বাকি আছে, যেমন একটি ফর্ম যোগ করা যাতে আমাদের curl
ব্যবহার করতে না হয় একটি নতুন URL জমা দিতে।
URL ডাটাবেসে না থাকলে কিছু বার্তা দেখানো হচ্ছে।
এবং ডুপ্লিকেটের জন্য পরীক্ষা করা হচ্ছে৷ , তাই আমরা অন্য ইউআরএল ওভাররাইট করি না।
আমি সেগুলি আপনার জন্য হোমওয়ার্ক হিসাবে রেখে দেব 🙂
সারাংশ
আপনি রুবি, সিনাট্রা এবং পিস্টোর ব্যবহার করে কীভাবে একটি লিঙ্ক শর্টনার অ্যাপ্লিকেশন তৈরি করবেন তা শিখেছেন! আপনি curl
ব্যবহার করে কিভাবে একটি POST অনুরোধ পাঠাতে হয় তাও শিখেছেন http ক্লায়েন্ট।
এই নিবন্ধটি আপনার বন্ধুদের সাথে শেয়ার করতে ভুলবেন না যাতে আরো মানুষ শিখতে পারে৷
৷