কম্পিউটার টিউটোরিয়াল

Emacs-কে Gnus দিয়ে USENET রিডার হিসেবে ব্যবহার করা

USENET একটি ডিসেন্ট্রালাইজড গ্লোবাল মেসেজিং সিস্টেম। এটি প্রথম গ্লোবাল সোশ্যাল নেটওয়ার্ক হিসেবে বিবেচিত হয় ১০০,০০০-এর বেশি গ্রুপ রয়েছে যারা বিভিন্ন টপিক এবং স্পেশালাইজেশন সম্পর্কে আলাপ করে। এটি USENET কে আগ্রহী পাঠকদের জন্য একটি খুব ভালো নলেজ এবং ডিসকাশন রিপোজিটরি করে তোলে।

Gnus কী?

USENET-এর ডিক্লাইন недав দিনগুলোর সত্ত্বেও, এখনও কিছু মানুষ আছে যারা এটা ব্যবহার করে ডিসকাশন হার্বার এবং নিউজ শেয়ার করার জন্য। USENET ইউজারদের অধিকাংশ আজকাল Google Groups ওয়েবসাইটের মাধ্যমে নেটওয়ার্কের সাথে ইন্টারফেস করে। তবে আপনি যদি Emacs ব্যবহার করেন, তবে USENET নিউজগ্রুপ Emacs-এ দেখার একটি পথ আছে।

Gnus হল Emacs-র জন্য একটি প্যাকেজ নিউজগ্রুপ পড়ার জন্য ডিজাইন করা। এটি একটি রিচ প্রোগ্রাম যাতে অনেক পাওয়ারফুল ফিচার রয়েছে যা নিউজ-রিডিংকে ইজি এবং কনভেনিয়েন্ট করে দেয়। আরও, Emacs-র ভিতর থাকায়, ইউজার সহজে পোস্টের মধ্যে টেক্সট ম্যানিপুলেট করতে পারে এবং সেটি Emacs সিস্টেমের বাকি অংশের সাথে ব্যবহার করতে পারে।

কেন Emacs-এ নিউজরিডার ব্যবহার করবেন?

Emacs কে সবসময় এক্সটেনসিবিলিটির কিচেন সিংক হিসেবে টুটা হয়েছে। শুধু এর অনেক প্যাকেজ এবং এক্সট্রা ফিচার থাকার জন্য নয়, বেসিক Emacs ফাংশনগুলো টেক্সট এডিটিংয়ের বাইরে এক্সটেন্ড করা খুব সহজ।

Emacs ইন্টারঅপারেবিলিটির আইডিয়ায় অপারেট করে। এই আইডিয়া Emacs কে তার প্যাকেজগুলো ব্যবহার করে একটি কমপ্লিট এনভায়রনমেন্ট তৈরি করতে দেয় যেখানে আপনি টেক্সট তৈরি করতে পারেন এবং সেটিকে বিভিন্নভাবে পরিবর্তন করতে পারেন।

উদাহরণস্বরূপ, Emacs তার নিজস্ব ফাইল ম্যানেজার নিয়ে আসে: dired, একটি সিম্পল Emacs প্যাকেজ যা আপনাকে ডিরেক্টরি স্ট্রাকচার ট্রাভার্স করতে এবং ফাইল ওপেন করতে দেয়। তবে অন্য ফাইল ম্যানেজারের বিপরীতে, dired এর রেজাল্ট টেক্সট হিসেবে ডিসপ্লে করে।

আপনি যদি Org Mode ব্যবহার করেন জার্নালিং-এর জন্য, তবে আপনি সেই টেক্সট কপি করতে পারেন এবং dired-র থেকে আপনার Org ফাইলে এলাবরেট লিংক তৈরি করতে পারেন।

Emacs-র একটি প্যাকেজের টেক্সট আউটপুটকে অন্য প্যাকেজে ইনপুট হিসেবে ব্যবহার করার ক্ষমতা একটি নিউজরিডার যেন gnus কে Emacs ইকোসিস্টেমের জন্য অনুমূল্য করে তোলে।

এটি আপনাকে অনুমতি দেয়, উদাহরণস্বরূপ, একটি নিউজ পোস্ট থেকে একটি প্যাসেজ টেক্সট কপি করতে, তারপর সেটি Org Mode-এ রাখুন এবং এটিকে একটি জার্নাল এন্ট্রি, অ্যাজেন্ডা পোস্ট, বা আইডিয়া ক্যাপচার হিসেবে যোগ করুন।

Gnus ইনস্টল করা

Gnus Emacs-এর প্রতিটি ডিফল্ট ইনস্টলেশনে আসে Version 19.32 থেকে। আপনি যদি Emacs-এর একটি রিসেন্ট ভার্সন ব্যবহার করেন, তবে সম্ভবত এতে ইতিমধ্যে gnus আছে।

আপনি চেক করতে পারেন gnus ইনস্টলড আছে কিনা সিস্টেমে Alt + X চাপুন এবং gnus টাইপ করুন। এটি gnus-এর একটি বেয়ার, আনকনফিগারড ভার্সন লোড করবে।

USENET গ্রুপ পড়তে Gnus সেটআপ করা

Gnus-এর প্রাথমিক সেটআপ রিলেটিভলি স্ট্রেটফরওয়ার্ড। আপনার init.el ফাইলে কয়েকটি অপশন সেট করতে হবে একটি .newsrc ফাইল তৈরি করতে।

.newsrc ফাইল হল নিউজগ্রুপ রিডারদের জন্য একটি স্ট্যান্ডার্ড ফাইল আপনার হোম ডিরেক্টরিতে অবস্থিত। এর প্রাথমিক উদ্দেশ্য হল একটি USENET সার্ভারে উপলব্ধ এবং সাবস্ক্রাইব করা সব গ্রুপ লগ করা।

আরও, .newsrc ফাইল একটি স্টেট ফাইল হিসেবে কাজ করে যা আপনি যে সকল পোস্ট পড়েছেন সেগুলো ট্র্যাক করে।

.newsrc ফাইল তৈরি করতে নিচের কমান্ড চালান:

touch /home/$USER/.newsrc

প্রাথমিক কনফিগারেশন

একবার হলে, আপনি init.el ফাইল সেট আপ করা শুরু করতে পারেন, Emacs-এর কনফিগারেশন ফাইল। ডিফল্টভাবে, আপনি এই ফাইলটি পাবেন হয় "/home/$USER/.emacs.d/" অথবা "/home/$USER/.config/emacs"-এ।

Gnus সঠিকভাবে ইনিশিয়ালাইজ করতে, আপনাকে init.el ফাইলে নিচের লাইনগুলো যোগ করতে হবে:

 (setq user-full-name '"yourusername") (setq user-mail-address '"yourname@email.invalid") (setq gnus-select-method '(nntp "news.eternal-september.org"))
  • user-full-name হল একটি জেনারেল অপশন যা Emacs-এ আপনার ইউজারনেম সেট করে। এটি वो নাম হবে যা gnus আপনার "From" হেডারে ডিসপ্লে করবে যখন আপনি নিউজ পোস্ট পাঠাবেন।
  • user-mail-address হলও একটি জেনারেল অপশন। user-full-name-এর মতো, এটি gnus কে বলে আপনার "From" হেডারে এই ইমেইল ডিসপ্লে করতে। আমার কেসে, আমি একটি ইনভ্যালিড ইমেইল অ্যাড্রেস ব্যবহার করেছি।
  • শেষ অপশন, gnus-select-method, হল একটি gnus-স্পেসিফিক অপশন যা নিউজরিডারকে বলে কোন সার্ভিস এবং সার্ভারের সাথে কানেক্ট করবে। আমার কেসে, আমি nntp সার্ভিস "news.eternal-september.org" সার্ভার হিসেবে সিলেক্ট করেছি।

রিমোট USENET অথেনটিকেশন

একটি গুরুত্বপূর্ণ বিষয় নোট করুন যে আপনি যদি একটি USENET প্রোভাইডার ব্যবহার করেন যেটি অথেনটিকেশন চায়, তবে আপনাকে আপনার একাউন্ট ডিটেইলস একটি authinfo ফাইলে দিতে হবে। এটি वो ফাইল যেখানে gnus USENET সার্ভার ডিটেইলস পড়বে সেই সাথে আপনার ইউজারনেম এবং পাসওয়ার্ড।

এটি তৈরি করতে, আপনি Ctrl + X, Ctrl + F চাপুন এবং Emacs-এ /home/$USER/.authinfo টাইপ করুন। এই কমান্ড আপনার হোম ডিরেক্টরিতে একটি .authinfo ফাইল তৈরি করবে এবং একটি বাফারে ওপেন করবে।

.authinfo ফাইলের জেনারেল সিনট্যাক্স এরকম দেখতে পারে:

machine news.domain.name login yourusername force yes password yourpasswordgoeshere
  • machine ভেরিয়েবল ইন্ডিকেট করে আপনি একটি ভিন্ন মেশিন বা সার্ভারের সাথে কানেক্ট করছেন।
  • ডোমেইন নাম ফিল্ড gnus কে বলে যে এটি সেটি মেশিনের অ্যাড্রেস যেটে আপনি কানেক্ট করতে চান।
  • login ফিল্ড হল যেখানে আপনি আপনার USENET একাউন্টের ইউজারনেম রাখবেন।
  • "force yes" অপশন gnus কে বলে আপনাকে অথেনটিকেট করতে এমনকি সার্ভার সেটি চায় না।
  • শেষে, password ভেরিয়েবল ধারণ করে আপনার USENET একাউন্টের পাসওয়ার্ড।

লোকাল USENET সার্ভার ব্যবহার করা

আরও, gnus এর সোর্স এক লোকাল স্পুল ফাইল থেকে নিতে পারে। এটি উপযোগী যদি আপনার এমন একটি সার্ভিস থাকে যা আপনার নিউজগ্রুপগুলো আপনার লোকাল মেশিনে অটোমেটিক্যালি ডাউনলোড করে।

এটি করতে, আপনাকে "gnus-select-method" ফাংশনে nntp সেটিং পরিবর্তন করতে হবে:

(setq gnus-select-method '(nnspool ""))

তবে আপনি যদি Leafnode ব্যবহার করেন আপনার লোকাল USENET সার্ভার হিসেবে, তবে আপনাকে এটিকে NNTP সার্ভার হিসেবে সেট আপ করতে হবে। এর কারণ Leafnode একটি নরমাল "/var/spool/" ডিরেক্টরির চেয়ে USENET সার্ভারের মতো বেশি বিহেভ করে।

একই মেশিনে চলমান একটি Leafnode সার্ভার ব্যবহার করতে, আপনি নিচের কমান্ড টাইপ করতে পারেন:

(setq gnus-select-method '(nntp "localhost"))

হোয়ে গেলে, Alt + x চাপুন এবং কমান্ড বাফারে gnus টাইপ করুন gnus রান করতে। এটি gnus লোড করবে এবং আপনার রিমোট USENET সার্ভারে উপলব্ধ সব গ্রুপ ফেচ করবে।

বেসিক ব্যবহার

একবার gnus লোড হলে, আপনি একটি ব্ল্যাঙ্ক স্ক্রিন দিয়ে স্বাগত হবে। এটি কারণ, ডিফল্টভাবে, gnus সব আনসাবস্ক্রাইবড এবং রিড নিউজগ্রুপ হাইড করে রাখে।

আপনি USENET সার্ভারে উপলব্ধ সকল নিউজগ্রুপের লিস্ট দেখতে পারেন Shift + 6 চাপুন। এটি gnus-এর Server স্ক্রিন আনে। আমার কেসে, এটি Eternal September থেকে উপলব্ধ সকল নিউজগ্রুপ আনায়।

USENET গ্রুপ সাবস্ক্রিপশন

এখান থেকে, আপনি U চাপুন যেকোনো নির্দিষ্ট নিউজগ্রুপ সাবস্ক্রাইব বা আনসাবস্ক্রাইব করতে। এটি সেই গ্রুপকে ল্যান্ডিং স্ক্রিনে রাখবে যখন আপনি প্রথম gnus 스타্ট করবেন।

উদাহরণস্বরূপ, আমি Server স্ক্রিনে "alt.religion.emacs" এবং "alt.folklore.computers" উভয় সাবস্ক্রাইব করলাম। একবার gnus রিলোড করলে, সেটি সেই দুটি গ্রুপকে মেইন স্ক্রিনে রাখলো ব্রাউজ করার জন্য।

বাফার মুভমেন্ট

সেখান থেকে, Enter চাপুন নিউজগ্রুপে যেতে, এবং স্ট্যান্ডার্ড Emacs মুভমেন্ট কীগুলো, যেন Ctrl + N এবং Ctrl + P, ব্যবহার করুন গ্রুপে বিভিন্ন পোস্ট স্ক্রোল করতে।

আপনি Enter বা Tab কীও চাপুন। একটি পোস্ট ওপেন করতে এবং Backspace এবং Space কী পোস্টের ভিতরে আপ-ডাউন স্ক্রোল করতে।

Emacs-এর সার্চ ফাংশন (Ctrl + S এবং Ctrl + R) ব্যবহার করুন পোস্টগুলো দ্রুত যেতে আপনি যা খুঁজছেন সেটি খুঁজে বের করতে।

USENET পোস্টে পোস্ট করা এবং রিপ্লাই করা

একটি নিউজগ্রুপের ভিতরে একটি নতুন পোস্ট তৈরি করতে A চাপুন যাতে একটি মেসেজ এডিটর আনে যেখানে আপনি আপনার পোস্টের ডিটেইলস লিখতে পারেন।

সম্পন্ন হলে Ctrl + C দুবার চাপুন সেটি সেই নির্দিষ্ট নিউজগ্রুপে পাঠাতে।

তবে আপনি যদি একটি গ্রুপে একটি পোস্টে রিপ্লাই করতে চান, তবে Shift + S, Shift + F চাপুন। এটি একটি "Followup" বাফার ইনিশিয়েট করবে যেখানে gnus আপনাকে একটি মেসেজ এডিটরে নিয়ে যাবে মূল পোস্ট ইতিমধ্যে কোটেড অবস্থায়।

নতুন মেসেজ পোস্ট করার মতো, Ctrl + C দুবার চাপুন ফলোআপটি সেই পোস্টে পাঠাতে।

স্কোরফাইল দিয়ে ফিল্টারিং

Gnus-এ একটি পাওয়ারফুল কিন্তু সিম্পল-টু-ইউজ ফিল্টারিং সিস্টেম আছে যা স্কোরফাইল ব্যবহার করে। এটি একটি রেগুলার কিলফাইল থেকে আলাদা যেখানে পোস্টগুলো অটোমেটিক্যালি "কিল্ড" হয় যখন একটি নির্দিষ্ট প্যাটার্ন বা ক্রাইটেরিয়া হিট করে।

স্কোরফাইল ইউজারকে একটি নির্দিষ্ট পোস্টের ইন্টারন্যাল স্কোর ইনক্রিমেন্টালি কম বা বাড়াতে দেয়, যা gnus কে বলে কোন পোস্ট প্রায়োরিটাইজ করতে হবে এবং কোনগুলো হাইড বা রিমোট সার্ভার থেকে না পুল করতে হবে।

ফিল্টারিং টাইপস

আরও, gnus-এ একটি ফিচার-রিচ ফিল্টারিং সিস্টেম আছে। এটি ইউজারকে একটি নির্দিষ্ট ফিল্টারের বিভিন্ন অংশ কন্ট্রোল এবং ফাইন-টিউন করতে দেয়।

উদাহরণস্বরূপ, আমি যদি একটি নির্দিষ্ট পোস্টের স্কোর কমাতে চাই। আমি শুধু সেটি হাইলাইট করব এবং L চাপব। এটি কমান্ড বাফারে একটি ছোট মেনু আনবে যা আমাকে জিজ্ঞাসা করবে পোস্টের কোন প্রোপার্টির ওপর ভিত্তি করে স্কোর করতে চাই।

প্রোপার্টির লিস্ট এক্সটেনসিভ, কিন্তু যেগুলো সবচেয়ে গুরুত্বপূর্ণ:

  • A লেখকের নামের বিপরীতে স্কোর করতে।
  • S সাবজেক্ট টেক্সটের বিপরীতে স্কোর করতে।
  • L লাইনের সংখ্যার বিপরীতে স্কোর করতে।
  • B টেক্সটের বডির বিপরীতে স্কোর করতে।

আমার কেসে, আমি পোস্টের লেখক ভিত্তিতে স্কোর করতে চাই, তাই A চাপলাম।

ফিল্টার ম্যাচ করার মেথড

সেখান থেকে, gnus আপনাকে জিজ্ঞাসা করবে আপনি কোন ধরনের স্ট্রিং ম্যাচিং এই স্কোরে ইমপ্লিমেন্ট করতে চান। আপনি একজাক্ট, সাবস্ট্রিং, ফাজি এবং রেগুলার এক্সপ্রেশন থেকে বেছে নিতে পারেন:

  • Exact পুরো স্ট্রিং ব্যবহার করে টেক্সট ম্যাচ করে।
  • Substring স্ট্রিংয়ের টুকরো ব্যবহার করে টেক্সট ম্যাচ করে। এর মানে পোস্টকে পুরো টেক্সট ম্যাচ করতে হয় না।
  • Fuzzy নিউজগ্রুপের জন্য উপলব্ধ প্রিভাস পোস্ট ভিত্তিক একটি প্রেডিক্টিভ মডেল ব্যবহার করে। এটি বিশেষভাবে উপযোগী ক্রিয়েটিভ পোস্টারদের জন্য যারা সাবস্ট্রিং ম্যাচিং বাইপাস করতে চান সিম্বল, নাম্বার এবং টেক্সট অবস্কিউর করার যেকোনো ফর্ম ব্যবহার করে।
  • Regexp ট্রেডিশনাল রেগুলার এক্সপ্রেশন ব্যবহার করে টেক্সট ফিল্টার করে।

আমার কেসে, আমি সাবস্ট্রিং সিলেক্ট করলাম তাই S চাপলাম।

ফিল্টারের ডিউরেশন

শেষে, gnus আপনাকে জিজ্ঞাসা করবে আপনি এই স্কোরকে টেম্পোরারি, পারমানেন্ট নাকি ইমিডিয়েট রাখতে চান কিনা।

  • Temporary মানে স্কোর একটি সেট ডেটে এক্সপায়ার হবে। এটি উপযোগী যখন আপনি শুধু একটি নির্দিষ্ট পোস্ট বা পোস্টারের স্কোর কম বা বাড়াতে চান একটি লিমিটেড পিরিয়ডের জন্য।
  • Permanent মানে স্কোর এক্সপায়ার হবে না। এটি স্প্যামাররা ফিল্টার আউট করার জন্য উপযোগী যারা গ্রুপে বার্গিং করতে পারে।
  • Immediate মানে gnus স্কোরটি করেন্ট বাফারে অ্যাপ্লাই করবে স্কোরফাইলে অ্যাপেন্ড না করে। এটি উপযোগী আপনি শুধু এখন পোস্টগুলো ফিল্টার আউট করতে চান কিন্তু পাসিসটেন্টলি স্কোর করতে চান না।

আমার কেসে, আমি এই ফিল্টারকে পারমানেন্ট রাখতে চাইলাম তাই P চাপলাম।

অভিনন্দন! আপনার এখন gnus কে Emacs-এ নিউজরিডার হিসেবে ব্যবহার করার বেসিক বোঝাপড়া আছে। আরও, আপনার এক.Authenticated USENET সার্ভারের সাথে কানেক্ট করা এবং স্কোরফাইল ও ফিল্টারিং সঠিকভাবে ইউটিলাইজ করার বেসিক আইডিয়া আছে।

তবে, যদি এই সব কথা আপনাকে Emacs সম্পর্কে আরও শিখতে আগ্রহী করে, তবে আপনাকে Doom Emacs ইনস্টল করা শিখা উচিত।

ফ্রিকোয়েন্টলি আস্কড কুয়েশচনস

১. আমি একটি মেসেজ লিখলাম আর পাঠাতে চাই না। আমার পোস্ট বা ফলোআপ কীভাবে ক্যানسেল করব?

অনিশ্চিত, কিন্তু করেন্ট পোস্ট আপনি লিখছেন সেটি ক্যানসেল করা সম্ভব হতে পারে। এজন্য আপনি Ctrl + C, Ctrl + D চাপতে পারেন।

২. কি gnus-এ একাধিক USENET সার্ভার অ্যাড করা সম্ভব?

হ্যাঁ! আপনাকে শুধু আপনার init.el ফাইলে আরেকটি "gnus-select-method" ভেরিয়েবল যোগ করতে হবে।

উদাহরণস্বরূপ, আপনার init.el ফাইলটি এরকম দেখতে পারে:

 (setq user-full-name '"ramcesred") (setq user-mail-address '"ramcesred@email.invalid") (setq gnus-select-method '(nntp "news.eternal-september.org")) (setq gnus-select-method '(nntp "nntp.aioe.org")). (setq gnus-select-method '(nntp "localhost"))

একবার হলে, শুধু Emacs রিলোড করুন আপনার gnus কনফিগারেশন রিলোড করতে।

৩. আমি একটি আর্টিকেল পড়লাম, এবং এখন এটি আমার মেইন স্ক্রিন লিস্ট থেকে গিয়েছে। কি এটি সম্ভব একটি নির্দিষ্ট পোস্ট পিন করা যখন আমি সেটি সক্রিয়ভাবে ফলো করছি?

হ্যাঁ! আপনি এটি করতে পারেন gnus-summary-tick-article-forward ফাংশন ব্যবহার করে। আপনি এই ফাংশন অ্যাক্সেস করতে পারেন U কী চাপুন যখন वो পোস্ট সিলেক্টেড থাকে।

এটি নোট করা গুরুত্বপূর্ণ যে, এটি শুধু এই একটি আর্টিকেলকে "পিন" করবে। সেই থ্রেডের সব অন্যান্য রিপ্লাই ডিফল্টভাবে দেখাবে না। সেটি করতে, Shift + A, Shift + T চাপুন পুরো থ্রেড রিকন্সট্রাক্ট করতে সেই টপিকের জন্য।

  1. জুম (Zoom) এ কাস্টম ব্যাকগ্রাউন্ড ব্যবহার করার পদ্ধতি

  2. বুট ক্যাম্প ব্যবহার করে ম্যাকে উইন্ডোজ ৭ ইনস্টল করার ধাপে ধাপে গাইড

  3. মাইক্রোসফট এজ ইমার্সিভ রিডার মাস্টার করুন: পড়ার সুবিধা ও অ্যাক্সেসিবিলিটি বাড়ান

  4. জিমেইল অ্যাকাউন্টকে আউটলুক সাথে সমস্যায় যোগ করুন