রুবি স্ট্যান্ডার্ড লাইব্রেরি হল মডিউল এবং ক্লাসের একটি সিরিজ যা রুবির সাথে আসে কিন্তু ভাষার অংশ নয়।
এই ক্লাসগুলি বিভিন্ন ধরনের ইউটিলিটি অফার করে যেমন:
- বেস64 এনকোডিং
- প্রধান সংখ্যা প্রজন্ম
- DNS রেজোলিউশন
এই নিবন্ধে আমি আপনাকে এই ক্লাসগুলির মধ্যে 5টি দরকারী উদাহরণ সহ দেখাব।
রুবি লগার ক্লাস
আপনি যদি কিছু ত্রুটি বা ডিবাগ বার্তা লগ করতে চান তাহলে রুবি আপনাকে Logger
দিয়ে কভার করেছে ক্লাস।
এই ক্লাসটি লগিং শুরু করার জন্য আপনার প্রয়োজনীয় সবকিছু সরবরাহ করে!
লগার
ব্যবহার করতে ক্লাস আপনি সহজভাবে একটি লগার
তৈরি করতে পারেন অবজেক্ট করুন এবং প্যারামিটার হিসাবে এটিকে একটি আউটপুট স্ট্রিম (বা একটি ফাইলের নাম) দিন। তারপর আপনি আপনার বার্তা নিবন্ধন করতে বিভিন্ন লগিং স্তর ব্যবহার করতে পারেন৷
লগিং স্তরগুলি হল:
- ডিবাগ
- তথ্য
- সতর্ক করুন
- ত্রুটি
- মারাত্মক
উদাহরণ :
'logger'logger =Logger.new(STDOUT)logger.info 'testing...'logger.warn' রুবির সাথে মজা করতে হবে :)'
এটি নিম্নলিখিত আউটপুট তৈরি করে :
আমি, [2016-05-14T15:50:21.367590 #12148] INFO -- :testing...W, [2016-05-14T15:50:21.846651 #12148] সতর্কতা -- :রুবির সাথে মজা 🙂প্রে>প্রথম অক্ষরটি লগিং স্তরের একটি সংক্ষিপ্ত রূপ (I for Info, W for Warn)… তারপর আপনার কাছে একটি টাইমস্ট্যাম্প এবং বর্তমান প্রসেস আইডি আছে (যেটি আপনি
Process.pid
ব্যবহার করে রুবিতে পেতে পারেন। )।অবশেষে, আপনার কাছে সম্পূর্ণ লগিং স্তর এবং প্রকৃত বার্তা রয়েছে৷
আপনি একটি নতুন বিন্যাস প্রদান করে এই বিন্যাসটি পরিবর্তন করতে পারেন।
প্রাইম নম্বরের সাথে কাজ করা
হতে পারে আপনাকে প্রতিদিনের ভিত্তিতে মৌলিক সংখ্যার সাথে মোকাবিলা করতে হবে না, তবে এটি এখনও জেনে রাখা ভাল (বিশেষত যদি আপনি প্রোগ্রামিং চ্যালেঞ্জ পছন্দ করেন) যে রুবি
প্রাইম
ক্লাস।যখন আপনার
প্রাইম
প্রয়োজন হয় এটিপ্রাইম?
যোগ করবেFixnum
করার পদ্ধতি .উদাহরণ :
'prime'5.prime প্রয়োজন? # true11.prime? # true20.prime? # মিথ্যাএই ক্লাসে একটি প্রাইম নম্বর জেনারেটরও রয়েছে৷
উদাহরণ :
Prime.take(10)# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]স্ট্রিংআইও ক্লাস কিভাবে ব্যবহার করবেন
StringIO
ক্লাস আপনাকে একটি স্ট্রিং তৈরি করতে দেয় যা একটিIO
এর মত আচরণ করে বস্তু।এর মানে হল যে আপনি এই স্ট্রিংটির সাথে কাজ করতে পারেন যেমন আপনি একটি ফাইল বা
STDIN
থেকে পড়ছেন (স্ট্যান্ডার্ড ইনপুট)।এখানে একটি উদাহরণ :
require 'stringio'io =StringIO.newio <<'test'io <<'code'puts io.string# "testcode"কিছু জিনিস লক্ষ্য করুন :
যখন আপনি আপনার
StringIO
এ ডেটা যোগ করেন বস্তু এটি আপনার জন্য স্পেস বা নতুন লাইন যোগ করবে না এবং প্রকৃত স্ট্রিং পেতে আপনাকেস্ট্রিং
কল করতে হবে পদ্ধতি।এছাড়াও আপনি পৃথক অক্ষর অ্যাক্সেস করতে অ্যারে ইন্ডেক্সিং ব্যবহার করতে পারবেন না, যেমন আপনি একটি নিয়মিত স্ট্রিং দিয়ে করতে পারেন৷
এটি কখন দরকারী?
ঠিক আছে, কখনও কখনও আপনি অন্য বস্তুর জন্য একটি ফাইল বা অন্য কিছু আইও অবজেক্ট প্রতিস্থাপন করতে চাইতে পারেন যার উপর আপনার আরও নিয়ন্ত্রণ রয়েছে। উদাহরণস্বরূপ, একটি পরীক্ষার পরিবেশে আপনি
STDOUT
প্রতিস্থাপন করতে পারেন একটিStringIO
সহ বস্তু।আপনি এখানে রেল থেকে একটি বাস্তব বিশ্বের উদাহরণ দেখতে পারেন:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activesupport/test/logger_test.rb
এনকোডিং এবং ডিকোডিং বেস64
Base64 হল একটি এনকোডিং বিন্যাস যা ইন্টারনেটে সাধারণ৷
৷এটা এরকম দেখাচ্ছে :
"cnVieQ=="কেন এটা দরকারী?
ইউআরএল-এ অনুমোদিত অক্ষরগুলির একটি সীমাবদ্ধ সেট রয়েছে, কখনও কখনও আপনি সেগুলি অন্তর্ভুক্ত করতে চান এবং বেস64 এটিকে সম্ভব করে তোলে৷
এখানে কিভাবে এনকোড করতে হয়:
'base64'Base64.encode64("রুবি")"cnVieQ=="প্রয়োজনএখানে কিভাবে ডিকোড করতে হয়:
'base64'Base64.decode64("cnVieQ==")"রুবি" প্রয়োজনপাথের সাথে কাজ করা
পথের নাম
ক্লাস বেশ কয়েকটি ফাইল-সিস্টেম অন্বেষণকারী ইউটিলিটিগুলিকে মোড়ানো হয়, যেমনDir
&ফাইল
, অনেক বেশি শক্তিশালী ক্লাসে।যদিও পদ্ধতির নাম একই থাকে, তারা
পাথনাম
ফেরত দেয় স্ট্রিং বা অ্যারের পরিবর্তে বস্তু। এবং এর মানে হল যে আপনি ফাইল-সম্পর্কিত সমস্ত পদ্ধতির সাথে ফলাফলের সাথে কাজ চালিয়ে যেতে পারেন।এটি একটি দুর্দান্ত উদাহরণ :
'pathname'Pathname.glob("*").count(&:directory?) প্রয়োজনআপনি যদি
৷Dir
দিয়ে এটি করার চেষ্টা করেন , আপনাকে এই কোডটি ব্যবহার করতে হবে, যা তেমন মার্জিত নয়৷Dir.glob("*").গণনা { |d| File.directory?(d) }পরের বার যখন আপনার ফাইল-সিস্টেম সম্পর্কিত কাজ করতে হবে তখন এটি একবার চেষ্টা করুন 🙂
উপসংহার
আমি আশা করি আপনি এই উদাহরণ দরকারী খুঁজে পেয়েছেন! স্ট্যান্ডার্ড লাইব্রেরিটি আরও একটু অন্বেষণ করতে ভুলবেন না যাতে আপনি এটি আপনার জন্য কী করতে পারে তা শিখতে পারেন৷
পোস্টটি ভালো লাগলে শেয়ার করতে ভুলবেন না 🙂