একটি গণপাঠাগার

library6
কোন কিছু সঠিকভাবে মেনে চলার জন্য সবচেয়ে যে বড় বাধাটি কাজ করে সেটি হচ্ছে জ্ঞানের সীমাবদ্ধতা। কারন কোন কিছু মেনে চলার জন্য আমাদেরকে সর্বপ্রথম জানতে হয় সেটি কিভাবে করতে হবে। ঠিক তেমনিভাবে আমরা যদি ইসলামের অনুশাসনগুলো মেনে চলতে চাই তাহলে আমাদেরকে সর্বপ্রথম জানতে হবে সেগুলো কি এবং কিভাবে মানতে হবে। কিন্তু আমরা যারা আমাদের পিতা-মাতা মুসলিম হওয়ার কারনে নিজেদেরকে মুসলিম বলে দাবি করি তাদের অধিকাংশই সঠিক ইসলাম সম্পর্কে বেখবর। আমাদের অধিকাংশই ইসলাম বলে সেই সব রীতিনীতিকেই বুঝি যেগুলো আমাদের বাপ-দাদারা বছরের পর বছর ধরে পালন করে আসছে। হয়তো কখনো জানতে চেষ্টা করিনি সেগুলোর উৎস কি। দুঃখের বিষয় এই উপমহাদেশে ইসলামের সাথে এমন কিছু দেশীয় সংস্কৃতি যুক্ত হয়েছে যেগুলোকে ইসলামের মধ্যে গণ্য করা যায় না। তাই সঠিক ইসলাম জানার জন্য জ্ঞান অর্জনের কোন বিকল্প নেই।
জ্ঞান অর্জনের ক্ষেত্রে একটি বড় সমস্যা হচ্ছে প্রয়োজনীয় বই হাতের কাছে না পাওয়া। যদিও বর্তমান সময়ে ইসলামী সাহিত্যের ভান্ডার অপ্রতুল নয় কিন্তু সেগুলো সংগ্রহে রাখা অনেকের জন্য কষ্টসাধ্য ব্যাপার। আমরা যারা গণসচেতনতা তৈরি করতে চাই তাদের উচিত ইসলামী সাহিত্যগুলোকে সহজলভ্য করা। যাতে কেউ চাইলেই যে কোন বিষয়ে খুব সহজে জানতে পারে। তাই আজ বাংলাদেশের প্রতিটি পাড়ায়-মহল্লায় গণপাঠাগার প্রতিষ্ঠা করা সময়ের দাবি।
এমনই কিছু চিন্তা-ভাবনা করে কয়েকবার চেষ্টা করেছিলাম আমাদের এলাকায় একটি গণপাঠাগার স্থাপন করার জন্য। একবার তো অনেকদুর এগিয়েও গিয়েছিলাম। নিজের সীমিত জ্ঞানদিয়ে একটি রুপরেখা তৈরি করে ফেলেছিলাম। কিভাবে পাঠাগার পরিচালনা করা হবে, কিভাবে পাঠাগারের ব্যয় নির্বাহ করা হবে ইত্যাদি। কয়েকজনের সাথে বিষয়টি শেয়ারও করেছিলাম। তারা অনেক সুপরামর্শ দিয়েছিলেন, তুলে ধরেছিলেন অনেক সমস্যার কথাও। সবচেয়ে যে সমস্যাটা বড় হয়ে দেখা দিয়েছিল সেটি হচ্ছে টাকা পয়সার সমস্যা। নাহ্, এত দৌড়-ঝাপ কোন কাজেই আসলো না। পারিনি কাঙ্খিত পাঠাগারটি প্রতিষ্ঠা করতে। তাই বলে আজো হাল ছেড়ে দেইনি। এখনো স্বপ্ন দেখি, এখনও পরিকল্পনা করি। কল্পনায় দেখতে চেষ্টা করি সেই সময়টিকে যখন আমাদের একটি গণপাঠাগার থাকবে। ছাত্র-ছাত্রী থেকে শুরু করে আপামর জনতা ছুটে আসবে সেখানে। জানতে পারবে সঠিক ইসলাম সম্পর্কে।

গিট : একাধিক রিমোট রিপোজিটরির সাথে সংযোগ

একই রিপোজিটরিতে একাধিক ডেভেলপার কাজ করলে একজন ডেভেলপার অন্য একজন ডেভেলপারের কাজ pull করার প্রয়োজন হতে পারে। এছাড়াও admin যখন কোন ডেভেলপারের কাজ পর্যবেক্ষণ করবেন তখন ঐ ডেভেলপারের রিপোজিটরির সাথে admin এর রিপোজিটরির সংযোগ দিতে হবে। চলুন দেখে নেয়া যাক কিভাবে রিমোট রিপোজিটরির সাথে সংযোগ দেয়া যায়।
রিমোট রিপোজিটরির সাথে সংযোগ দেয়ার জন্য আমাদেরকে git remote কমান্ডটি ব্যবহার করতে হবে। সম্পূর্ণ কমান্ডটি নিচে দেয়া হলো-
git remote add name server-address
এখানে name এর জায়গায় আপনি রিমোট রিপোজিটরিটিকে যে নামে ডাকতে চান সে নাম হবে। server-address এর জায়গায় রিমোট রিপোজিটরিটির address দিতে হবে।
ধরুন আমরা একটি কেন্দ্রীয় রিপোজিটরি তৈরি করলাম যার নাম হচ্ছে rms এবং রিপোজিটরিটির address হচ্ছে https://bitbucket.org/precursortechnology/rms.git । এখন এতে যতজন ডেভেলপার কাজ করবে সবাই এই রিপোজিটরিটি fork করতে হবে (fork সম্পর্কে জানতে দেখুন)। এখন ডেভেলপাররা যদি তাদের রিপোজিটরিকে কেন্দ্রীয় রিপোজিটরির(https://bitbucket.org/precursortechnology/rms.git) সাথে সংযোগ দিতে চান তাহলে তাদেরকে লিখতে হবে
git remote add upstream https://bitbucket.org/precursortechnology/rms.git
এখানে আমরা কেন্দ্রীয় রিপোজিটরিকে চেনার জন্য upstream নাম ব্যবহার করেছি। আপনি চাইলে অন্য যে কোন নাম ব্যবহার করতে পারেন। এখন কোন ডেভেলপার যদি কেন্দ্রীয় রিপোজিটরির তথ্য pull করতে চান তাহলে তাকে লিখতে হবে
git pull upstream master
pull করে মানে হচ্ছে ঐ রিপোজিটরির সর্বশেষ আপডেটগুলো আপনার রিপোজিটরির সাথে একীভূত করে নেয়া। pull কমান্ড দিয়ে মূলত দুটি কাজ করা হয়। প্রথমে রিমোট রিপোজিটরিটির তথ্যগুলো fetch করে নেয়া হয় এবং পরে সেগুলো লোকাল রিপোজিটরির সাথে merge করা হয়। উপরের কমান্ড দিয়ে আমরা upstream নামক রিমোট রিপোজিটরির master branch(ব্রাঞ্চ নিয়ে অন্য টিউটরিয়ালে আলোচনা করা হবে)-এর সাথে নিজেদের repository merge করে নিলাম।
admin যদি কোন ডেভেলপারের সাথে সংযুক্ত হতে চান তাহলে তাকেও উপরের ধাপগুলো অনুসরণ করতে হবে।
একটি রিপোজিটরি চাইলে একাধিক রিমোট রিপোজিটরির সাথে সংযুক্ত হতে পারবে।

গিট : একই রিপোজিটরিতে একাধিক ডেভেলপার

সাধারণত আমরা যখন কোন প্রজেক্ট বা রিপোজিটরি নিয়ে একটি টিমে(team) কাজ করি তখন প্রজেক্ট ব্যবস্থাপনাটা একটু জটিল হয়ে যায়। বিশেষ করে একই ফাইলে একাধিক ডেভেলপার কাজ করা। এই সমস্যার সমাধানের জন্য গিট যে পদ্ধতি ব্যবহার করেছে তা এক কথায় অসাধারণ। কোন কাজ অথবা কোড না হারিয়েই একই ফাইলে কাজ করতে পারবেন অসংখ্য ডেভেলপার। একটি রিপোজিটরি নিয়ে অসংখ্য ডেভেলপার বিচ্ছিন্নভাবে কাজ করলেও সবাই সংযুক্ত থাকতে পারবেন গিট এর মাধ্যমে। কথাটা শুনতে খাপছাড়া মনে হলেও এটাই সত্যি। তাহলে দেরি না করে চলুন দেখা যাক কিভাবে একই রিপোজিটরিতে অসংখ্য ডেভেলপার কাজ করতে পারবেন।
আমরা এখানে যে পদ্ধতি নিয়ে আলোচনা করবো তা অধিকাংশ ওপেনসোর্স(opensource) রিপোজিটরিতে ব্যবহার করা হয়।
=> প্রথমেই আমাদেরকে এমন একটি রিমোট রিপোজিটরি তৈরি করতে হবে যা কেন্দ্রীয় রিপোজিটরি হিসেবে ব্যবহার করা হবে। আপনি যদি বিনামূল্যে github(একটি গিট রিপোজিটরি সার্ভার) ব্যবহার করেন তাহলে যে কেউ আপনার রিপোজিটরিতে read access পাবে। কিন্তু bitbucket ব্যবহার করলে আপনি যদি রিপোজিটরি public না করে দেন তাহলে কেউ দেখতে পাবে না। চাইলে আপনি private রিপোজিটরিতেও আপনার পছন্দনীয় ব্যক্তিকে read, write অথবা admin access দিতে পারবেন। তাই আপনি যে সকল ডেভেলপারকে আপনার রিপোজিটরিতে সংযুক্ত করবেন তাদেরকে read access দিন।
=>ফোর্ক(fork): admin ব্যতিত যে সকল ডেভেলপার একই রিপোজিটরিতে কাজ করবেন তাদেরকে কেন্দ্রীয় বা মূল রিপোজিটরিতে Fork করতে হবে। ফোর্ক মানে হচ্ছে ডেভেলপারের সার্ভার একাউন্টে(account) মূল রিপোজিটরির মত একটি স্বতন্ত্র রিপোজিটরি তৈরি করা। ফোর্ক করার পর ডেভেলপার যে রিপোজিটরি তৈরি করবেন তা একান্তই তার নিজস্ব। এতে মূল রিপোজিটরির সাথে দৃশ্যত কোন সম্পর্ক থাকবে না। পরবর্তীতে আমরা চাইলে মূল রিপোজিটরির সাথে সংযোগ দিতে পারবো। একটি রিপোজিটরি ফোর্ক করা খুবই সহজ-

– কেন্দ্রীয় রিপোজিটরিতে প্রবেশ করুন
– Fork বাটনে(button) ক্লিক করুন
– প্রয়োজনীয় তথ্য পূরণ করে submit করুন
ডেভেলপার এখন একটি নিজস্ব রিপোজিটরির মালিক। :)
=> এখন ডেভেলপার তার নিজস্ব রিপোজিটরিতে নতুন যে কোন feature নিয়ে কাজ করতে পারবেন। করতে পারবেন যে কোন ধরনের সম্পাদনা।
কাজতো হলো কিন্তু এবার এত পরিশ্রমের কাজ কিভাবে মূল রিপোজিটরির সাথে সংযুক্ত করবো? খুবই সহজ–
=> Compare: কোন কোন রিমোট রিপোজিটরি সার্ভারে আপনার করা কাজকে compare করার সুযোগ রাখা হয়েছে। চাইলে আপনি দেখে নিতে পারেন মূল রিপোজিটরির সাথে আপনি কি সংযোজন-বিয়োজন করেছেন। compare করার জন্য ডেভেলপার তার রিপোজিটরি পাতায় compare বাটনে ক্লিক করুন। দেখে নিন আপনার কাজের বর্ণনা।
=> Pull Request: আপনার কাজগুলো মূল রিপোজিটরিতে অন্তর্ভুক্ত করার জন্য মূল রিপোজিটরিতে একটি Pull Request পাঠাতে হবে। এতে করে মূল রিপোজিটরিতে ডেভেলপারের কাজ সংযুক্ত করার জন্য একটি বার্তা প্রেরণ করা হবে। admin চাইলে ডেভেলপারের কাজ গ্রহন অথবা বাতিল করতে পারবেন। ডেভেলপার শুধু তার কাজ গ্রহন করা হয়েছে কি বাতিল করা হয়েছে এই মর্মে একটি বার্তা পাবেন। Pull Request পাঠানোর জন্য ডেভেলপার তার রিপোজিটরি পাতায় pull request বাটনে ক্লিক করুন।


=> এখন এডমিন তার মূল রিপোজিটরিতে একটি নতুন Pull Request পাবেন। কাজ পর্যবেক্ষণের পর তা গ্রহন করার মত হলে মূল রিপোজিটরির সাথে Merge করে নেবেন।
উপরের যে ধাপগুলো বর্ণনা করা হয়েছে সেগুলো সম্পূর্ণ সার্ভারভিত্তিক। আপনি চাইলে সার্ভারের ওয়েব সাইটে প্রবেশ না করে গিট কমান্ড এর মাধ্যমে সরাসরি আপনার নিজস্ব কম্পিউটার থেকে ডেভেলপারদের কাজ পর্যবেক্ষণ করতে পারবেন। সেজন্য আপনাকে জানতে হবে কিভাবে আপনি একাধিক রিমোট রিপোজিটরির সাথে সংযুক্ত হবেন। আমরা আগামী টিউটরিয়ালে এ বিষয়ে আলোচনা করবো, ইনশাআল্লাহ।

গিট : বিদ্যমান রিমোট রিপোজিটরি নিয়ে কাজ করা

অনলাইনে গিট রিপোজিটরি সংরক্ষণ করে রাখার জন্য কিছু সার্ভার রয়েছে। যাদের মধ্যে github, bitbucket অন্যতম। এই সব সার্ভারে সংরক্ষিত রিপোজিটরিগুলোকে রিমোট রিপোজিটরি বলা হয়। আপনি সাইটগুলোতে প্রবেশ করে আপনার নিজস্ব রিপোজিটরি তৈরি করতে পারবেন। একটি রিমোট রিপোজিটরি তৈরি করার পর আপনাকে সাধারণত আপনার লোকাল কম্পিউটার থেকেই সেগুলোকে সম্পাদনা করতে হবে। সম্পাদনা শেষে আবার রিমোট রিপোজিটরিতে আপলোড করে দিতে হবে। চলুন দেখা যাক, গিট ব্যবহার করে কিভাবে আমরা একটি রিমোট রিপোজিটরিকে সম্পাদনা করতে পারি।

(আমরা এখানে bitbucket ও ওয়েব ডেভেলপমেন্ট এর রিপোজিটরি নিয়ে আলোচনা করবো)
১. প্রথমেই আপনার রিমোট রিপোজিটরিটিকে আপনার নিজস্ব কম্পিউটারে নিয়ে আসতে হবে। এজন্য আপনাকে cd কমান্ড ব্যবহার করে আপনার কম্পিউটারের localhost এ যেতে হবে। localhost এর জন্য আপনাকে htdocs অথবা www ফোল্ডারে প্রবেশ করতে হবে।

২. ব্রাউজারের মাধ্যমে আপনার রিমোট রিপোজিটরিতে প্রবেশ করুন। সেখানে clone বাটনে ক্লিক করার পর সেখানে একটি কমান্ড দেখতে পাবেন। clone কমান্ডের দুইটি অপশন থাকে। একটি হচ্ছে https এবং অন্যটি ssh। ssh কমান্ড নির্বাচন করলে আপনার কম্পিউটারে একটি ssh key তৈরি করতে হবে। পরে সেটি আপনার সার্ভারে সংরক্ষন করতে হবে। কিন্তু https নির্বাচন করলে কোন key তৈরি করতে হবে না। চলুন দেখে নেয়া যাক, কিভাবে ssh key তৈরি করতে হয়-
=> terminal এ ssh-keygen কমান্ডটি লিখুন। এতে করে আপনার কম্পিউটারের home ফোল্ডারে লুকানো একটি .ssh ফোল্ডার তৈরি হবে এবং একটি id_rsa.pub ফাইল তৈরি হবে। id_rsa.pub ফাইলটি খুলুন এবং এর ভিতরের লেখাগুলো copy করুন।
=> আপনার সার্ভার account এ প্রবেশ করুন। সেখান থেকে manage account লিংকে(link) প্রবেশ করুন। এরপর সেখান থেকে ssh key লিংকে প্রবেশ করে আপনার key টি paste করুন। এরপর সংরক্ষন করে বের হয়ে আসুন।

৩. সার্ভার একাউন্ট(account) থেকে clone কমান্ডটি copy করে terminal এ paste করুন।

৪. আপনার clone কমান্ডটি যদি https এর হয় তাহলে আপনার কাছে আপনার একাউন্ট এর user name এবং password চাইবে। সঠিক তথ্য দিলে আপনার সার্ভারের রিপোজিটরিটি আপনার নিজস্ব কম্পিউটারে ক্লোন(clone) হয়ে যাবে। আপনার localhost এ প্রবেশ করলে সার্ভারের রিপোজিটরির নামে একটি ফোল্ডার দেখবেন। এটাই আপনার নিজস্ব কম্পিউটারে রিমোট রিপোজিটরির ক্লোন।

৫. এখন অফলাইনে থেকেই আপনার রিপোজিটরিতে কাজ করুন। এরপর আপনি যখনি আপনার রিমোট রিপোজিটরিতে আপনার কোড(code) সংযুক্ত করতে চাইবেন তখন আপনাকে কিছু কমান্ড ব্যবহার করতে হবে। সেগুলো নিচে দেয়া হলো।
=> আপনার রিপোজিটরি প্রত্যেকবার স্থিতিশীল(stable) অবস্থায় পৌছলে সেগুলো Staging Area তে পাঠাতে হবে। Staging area তে পাঠানোর মানে হচ্ছে আপনি যে যে ফাইলগুলোকে নিশ্চিতভাবে রিপোজিটরিতে অন্তর্ভুক্ত করবেন তার তালিকা তৈরি করা। সে জন্য আপনাকে git add কমান্ড ব্যবহার করতে হবে। যদি আপনি বর্তমান সবগুলো ফাইলকে Staging area তে সংযুক্ত করতে চান তবে আপনাকে git add * কমান্ড ব্যবহার করতে হবে। যদি একটি ফাইকে সংযুক্ত করতে চান তবে git add কমান্ডের পর ফাইলের নাম লিখতে হবে। ধরুন আপনি test.txt নামে একটি ফাইল তৈরি করেছেন যা আপনি Staging area তে পাঠাতে চান। তখন আপনার কমান্ড হবে git add test.txt।
=> আপনার staging area তে সংযুক্ত করা ফাইলগুলোকে মূল রিপোজিটরির সাথে নিশ্চতভাবে সংযুক্ত করা। সে জন্য আপনাকে git commit কমান্ডটি ব্যবহার করতে হবে। আপনাকে প্রত্যেক commit এর সাথে একটি বার্তা সংযুক্ত করে দিতে হবে। তখন আপনার সম্পূর্ণ কমান্ডটি হবে-

git commit -a -m “Your Message”

=> এখন কমিট(commit) করা ফাইলগুলোকে রিমোট রিপোজিটরিতে সংযুক্ত করতে আপনাকে git push কমান্ডটি ব্যবহার করতে হবে। আপনি কোন ব্রাঞ্চ(branch (branch সম্পর্কে অন্য টিউটরিয়ালে আলোচনা করা হবে))-এ ফাইল সংযুক্ত তাও বলে দিতে হবে। আমরা আমাদের ফাইল master branch এ সংযুক্ত করবো। সম্পূর্ণ কমান্ডটি নিচে দেয়া হলো।

git push origin master

এখানে origin হচ্ছে রিমোট রিপোজিটরির নাম। যে রিমোট রিপোজিটরি থেকে ফাইল ক্লোন করা হয় তার নাম সাধারণত origin দেয়া থাকে।

গিট : অফলাইন রিপোজিটরি নিয়ে কাজ করা

অফলাইনে গিট রিপোজিটরি ব্যবহার করার জন্য নিচের ধাপগুলো অনুসরন করুন

১. cd ব্যবহার করে আপনার রিপোজিটরিতে প্রবেশ করুন। ধরুন, আপনি যদি একটি routine management system তৈরি করতে চান এবং আপনার রিপোজিটরি ফোল্ডারের নাম যদি rms হয় তাহলে cd কমান্ড দিয়ে rms ডিরেক্টরিতে প্রবেশ করুন।

২. এখন git init কমান্ড লিখুন। এতে করে আপনার রিপোজিটরিটি গিট ব্যবহারের উপযোগি হবে এবং .git নামে একটি লুকানো ফোল্ডার তৈরি হবে। আপনার রিপোজিটরিতে .git ফোল্ডারটি তৈরি না থাকলে আপনি গিটের কমান্ডগুলো কাজে লাগাতে পারবেন না।

৩. আপনার রিপোজিটরিটি এখন কাজের উপযুক্ত হয়েছে। আপনি এখন এতে যে কোন ধরনে ফাইল, ফোল্ডার তৈরি, সম্পাদনা ও মুছে ফেলতে পারবেন।

৪. আপনার রিপোজিটরি প্রত্যেকবার স্থিতিশীল(stable) অবস্থায় পৌছলে সেগুলো Staging Area তে পাঠাতে হবে। Staging area তে পাঠানোর মানে হচ্ছে আপনি যে যে ফাইলগুলোকে নিশ্চিতভাবে রিপোজিটরিতে অন্তর্ভুক্ত করবেন তার তালিকা তৈরি করা। সে জন্য আপনাকে git add কমান্ড ব্যবহার করতে হবে। যদি আপনি বর্তমান সবগুলো ফাইলকে Staging area তে সংযুক্ত করতে চান তবে আপনাকে git add * কমান্ড ব্যবহার করতে হবে। যদি একটি ফাইকে সংযুক্ত করতে চান তবে git add কমান্ডের পর ফাইলের নাম লিখতে হবে। ধরুন আপনি test.txt নামে একটি ফাইল তৈরি করেছেন যা আপনি Staging area তে পাঠাতে চান। তখন আপনার কমান্ড হবে  git add test.txt

৫. সর্বশেষ আপনাকে যে কাজটি করতে হবে তা হচ্ছে, আপনার staging area তে সংযুক্ত করা ফাইলগুলোকে মূল রিপোজিটরির সাথে নিশ্চতভাবে সংযুক্ত করা। সে জন্য আপনাকে git commit কমান্ডটি ব্যবহার করতে হবে। আপনাকে প্রত্যেক commit এর সাথে একটি বার্তা সংযুক্ত করে দিতে হবে। তখন আপনার সম্পূর্ণ কমান্ডটি হবে-

git commit -a -m “Your Message”

গিট : ইন্সটল ও কনফিগার করা

গিট নিয়ে কাজ শুরু করার জন্য আপনার কম্পিউটারকে গিট ব্যবহার উপযোগী করে নিতে হবে। সেজন্য আপনার কম্পিউটারে গিট ইন্সটল(install) করতে হবে। চলুন দেখে নেয়া যাক, কিভাবে গিট ইন্সটল এবং কনফিগার(configure) করে নিতে হয়।
Windows:
১. গিট প্যাকেজটি ডাউনলোড করার জন্য এখানে ক্লিক করুন
২. ডাউনলোড করা ফাইলটি ক্লিক করে ইন্সটল করে নিন।
Linux:
Linux এর বিভিন্ন ডিস্ট্রো এর জন্য গিট ইন্সটল পদ্ধতি বিভিন্ন রকম। কিন্তু খুবই সহজ। ডিস্ট্রো অনুযায়ী terminal-এ নিচের কমান্ডগুলো লিখুন।
Debian/Ubuntu
$ apt-get install git
Fedora
$ yum install git
Gentoo
$ emerge --ask --verbose dev-vcs/git
Arch Linux
$ pacman -S git
FreeBSD
$ cd /usr/ports/devel/git
$ make install

Solaris 11 Express
$ pkg install developer/versioning/git
OpenBSD
$ pkg_add git

গিট কনফিগার:
গিট কনফিগার করার মূল উদ্দেশ্য হচ্ছে, আপনি যখন গিট এর মাধ্যমে কমিট(commit) করবেন তখন কমিটের সাথে সে আপনার তথ্য সংরক্ষণ করে রাখবে। কনফিগারেশনের সময় আপনাকে শুধু আপনার user name এবং email address বলে দিতে হবে।
Windows ব্যবহারকারীরা
গিট ইন্সটল করার পর কম্পিউটার ডেক্সটপে gitBash নামে একটি শর্টকাট ফাইল তৈরি হবে। সেটি খুলে তাতে নিচের কমান্ডগুলো লিখুন। Linux ব্যবহারকারীরা terminal-এ কমান্ডগুলো লিখতে পারবেন।
git config --global user.name "Your Name Here"
Your Name Here এর জায়গায় আপনার নাম লিখুন।
git config --global user.email "your_email@youremail.com"
এখানে যে email address দিবেন তা অবশ্যই আপনার সার্ভার অ্যাকাউন্টের email address এর সাথে মিল থাকতে হবে।
এখন আপনার কম্পিউটারটি গিট ব্যবহার উপযোগি হয়েছে। এখন থেকে আপনি আপনার কম্পিউটারে গিটের কমান্ডগুলো কাজে লাগাতে পারবেন।
আমরা আমাদের সকল কমান্ড gitBash অথবা terminal-এ লিখবো।

ভার্সন কন্ট্রোল সিস্টেম – গিট (git)

গিট নিয়ে কাজ শুরু করার আগে আসুন জেনে নেই, ভার্সন কন্ট্রোল কি?

ভার্সন কন্ট্রোল (Version Control) : ভার্সন কন্টোল হচ্ছে এমন একটি পদ্ধতি যা আপনার প্রজেক্টের(project) বিভিন্ন সময়ের পরিবর্তনগুলো সংরক্ষণ করে রাখে। ভার্সন কন্ট্রোল সিস্টেমের মাধ্যমে আপনি আপনার প্রজেক্টের পূর্বের যে কোন সময়ের স্থিতীশীল অবস্থায় ফিরে যেতে পারবেন।

গিট(git): গিট হচ্ছে একটি ওপেনসোর্স(open source) ভার্সন কন্ট্রোল সিস্টেম। এর মাধ্যমে একজন ব্যবহারকারী যতবার তার পরিবর্তনগুলো কমিট(commit) করবে ততবার গিট তার সম্পূর্ণ ফাইল সংরক্ষন করে রাখবে। গিট এর একটি বড় সুবিধা হচ্ছে একটি প্রজেক্ট নিয়ে অসংখ্য ডেভেলপার(developer) একই সময় কাজ করতে পারে। আপনি চাইলে ইন্টারনেট সংযোগ ছাড়াও কাজ করতে পারবেন।

আসুন দেখে নেই গিট এর বহুল ব্যবহৃত কমান্ডগুলো(command)-
git init -একটি নতুন রিপোজিটরি(repository) তৈরি করার জন্য।
git clone – পূর্ব থেকে বিদ্যমান কোন  রিপোজিটরির সম্পূর্ণ তথ্য ডাউনলোড করার জন্য
git commit – অফলাইন(offline) রিপোজিটরিতে স্থায়ীভাবে কাজ সংযুক্ত করার জন্য
git pull – রিমোট(remote) রিপোজিটরি থেকে ফাইল ডাউনলোড করে অফলাইন      রিপোজিটরির সাথে merge করার জন্য
git push – অফলাইন রিপোজিটরি থেকে ফাইল রিমোট রিপোজিটরিতে আপলোড করার জন্য

কাজের ধাপসমূহ:

slide-22-638
আমরা যখন লোকাল(local) রিপোজিটরিতে কোন পরিবর্তন করি তখন আমরা working directory-তে থাকি। git add কমান্ড দেয়ার পর সেটা staging area তে যায় এবং git commit কমান্ড দেয়ার পর সেটা স্থায়িভাবে লোকাল রিপোজিটরিতে যুক্ত হয়। পরবর্তিতে চাইলে সেটা রিমোট রিপোজিটরিতে git push কমান্ড দিয়ে আপলোড করে দেয়া যায়।

বিয়ে

Image

“পরিবার ও পারিবারিক জীবন” মাওলানা মুহাম্মদ আবদুর রহীমের একটি অসাধারণ বই। এতে এতবেশি তথ্য প্রমাণ দেয়া হয়েছে যে আমি আশ্চর্য হয়েছি। আমি শুধু বিয়ের অধ্যায়টাই
পড়েছি। অনেক কিছু শিখেছি। আপনাদের সাথে কিছু বিষয় শেয়ার করছি…
১. ছেলে-মেয়ে বালেগ হলেই পিতামাতা তাদের বিয়ের ব্যবস্থা করা উচিত
২. দারিদ্রতা বিয়ের প্রতিবন্ধক হতে পারে না।
৩. বিয়ের কুফুর(সমতা ও সাদৃশ্য) ক্ষেত্রে দ্বীনদারীকেই সবচেয়ে বেশি গুরুত্ব দিতে হবে।
৪. বিয়ের উদ্দেশ্যে ছেলে সরাসরি মেয়েকে অথবা মেয়ে সরাসরি ছেলেকে প্রস্তাব দিতে পারে।
৫. গোপন বিয়ে জায়েজ নেই, বিয়েতে অবশ্যই সাক্ষী থাকতে হবে এবং সামাজিকভাবে সেটা প্রচারের ব্যবস্থা করতে হবে।
৬. শুধু ছেলে এবং মেয়ের সম্মতিতেও বিয়ে করা যাবে, তবে মেয়ের ক্ষেত্রে অভিভাবকের সম্মতি গুরুত্বপূর্ণ
৭. বিয়ের পূর্বেই ছেলে-মেয়ে পরস্পরকে দেখে নিতে হবে, এতে করে পরস্পরের প্রতি আকর্ষন তৈরি হবে।
৮. মেয়ে দেখার ক্ষেত্রে গায়রে মাহরামের(পাত্র ব্যতিত) সামনে মেয়ের বেপর্দা হওয়ার সুযোগ নেই।
৯. মোহরানা মেয়ের হক, তাই মোহরানার ব্যাপারে মেয়ের সাথে সরাসরি কথা বলা উচিত।
১০. মোহরানা পরিশোধ করা ব্যতিত স্ত্রীর সাথে মিলিত হওয়া জায়েজ নেই।
১১. বিয়ের আনুষ্ঠানিকতা মসজিদে হওয়াই উত্তম।
১২. বিয়ের অনুষ্ঠানে অশ্লীল নয় (ইসলাম সমর্থিত) এমন গান-বাজনার ব্যবস্থা করা যেতে পারে।
১৩. ছেলে ওয়ালিমার যেয়াফত (আত্নীয়-স্বজনের খাওয়ার দাওয়াত) এর ব্যবস্থা করতে হবে। মেয়ের বাড়িতে ওয়ালিমার যেয়াফতের কোন বর্ণনা পাইনি।
বর্তমানে আমাদের সমাজে বিয়েকে দিন দিন কঠিন থেকে কঠিনতর হিসেবে উপস্থাপন করা হচ্ছে। কিন্তু বালেগ ছেলে অথবা মেয়ে কিছুতেই তাদের দৈহিক এবং মানষিক চাহিদাকে অস্বীকার করতে পারে না। আমাদের অনৈসলামিক সমাজ ব্যবস্থাও প্রতিনিয়ত উসৃংখল জীবন যাপনে প্ররোচনা দিচ্ছে। যার ফলে সমাজে অবৈধ প্রেম ভালবাসার চর্চা বেড়েই চলছে। অনেকেই এটাকে ঈমানের পরীক্ষা বলেও চালিয়ে দিতে চান। কিন্তু আল্লাহ যে জিনিসটাকে সহজ করে দিয়েছেন এবং সমাধান দিয়ে দিয়েছেন আমরা সেটাকে কঠিন করার কোন মানেই হয়না। নিজেকে বড় পরহেজগার হিসেবে প্রমাণ করার জন্য আল্লাহর দেয়া সুযোগ সুবিধা গ্রহন না করাকে আমি বোকামিই বলবো। তাই বিয়েকে সহজ করে অবৈধ প্রেম ভালবাসার গলায় ফাঁস পরানো এখন সময়ের দাবি।