অলস বাণিজ্য cgi. ই-কমার্স - এটা কি?

অনলাইন স্টোরের মালিকরা "ইলেক্ট্রনিক কমার্স" ধারণার সাথে পরিচিত; তারা ইতিমধ্যেই "ই-কমার্স - এটি কী?" প্রশ্নের উত্তর জানেন; কিন্তু আপনি যদি এর তলদেশে যান, অনেক সূক্ষ্মতা উঠে আসে এবং এই শব্দটি একটি বিস্তৃত অর্থ গ্রহণ করে।

ই-কমার্স: এটা কি?

সাধারণ ধারণাটি নিম্নরূপ: ই-কমার্সকে ব্যবসা করার একটি নির্দিষ্ট পদ্ধতি হিসাবে বোঝা যায়, যার মধ্যে অনেকগুলি ক্রিয়াকলাপ অন্তর্ভুক্ত রয়েছে যা পণ্যের বিধানে বা পরিষেবা/কাজের বিধানে ডিজিটাল ডেটা স্থানান্তর ব্যবহার করে, ইন্টারনেট

এইভাবে, এটি কোনো বাণিজ্যিক লেনদেন যা যোগাযোগের একটি ইলেকট্রনিক মাধ্যম ব্যবহার করে করা হয়।

কাজের স্কিমটি নিম্নরূপ সাজানো হয়েছে:

  • যে কেউ একজন ব্লগার বা তাদের নিজস্ব ইন্টারনেট পৃষ্ঠার অন্য কোন মালিক হতে পারে) এই সিস্টেমে নিবন্ধন করে;
  • তার নিজস্ব লিঙ্ক পায়;
  • এর ওয়েব পৃষ্ঠায় একটি বিশেষ কোড রাখে - ই-কমার্স পার্টনারস নেটওয়ার্কের নির্বাচিত অফিসিয়াল অংশীদারের জন্য একটি বিজ্ঞাপন প্রদর্শিত হয়;
  • ওয়েবসাইট রূপান্তর নিরীক্ষণ;
  • আপনার ওয়েবসাইটের একজন দর্শকের দ্বারা প্রতিটি ক্রয়ের জন্য একটি নির্দিষ্ট শতাংশ উপার্জন করে যারা একটি অনুমোদিত লিঙ্ক অনুসরণ করে।

WP ই-কমার্স

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

টেমপ্লেটের এরকম একটি উদাহরণ হল ওয়ার্ডপ্রেস ই-কমার্স। এটি ওয়ার্ডপ্রেসের জন্য একটি শপিং কার্ট প্লাগইন (সবচেয়ে বিখ্যাত ওয়েব রিসোর্স ম্যানেজমেন্ট সিস্টেমগুলির মধ্যে একটি), যা মূলত ব্লগ তৈরি এবং সংগঠিত করার উদ্দেশ্যে করা হয়েছে। এটি সম্পূর্ণ বিনামূল্যে প্রদান করা হয় এবং সাইটের দর্শকদের ওয়েবসাইটে কেনাকাটা করতে দেয়।

অন্য কথায়, এই প্লাগইন আপনাকে একটি অনলাইন স্টোর তৈরি করতে দেয় (ওয়ার্ডপ্রেসের উপর ভিত্তি করে)। এই ই-কমার্স প্লাগইন সবকিছু আছে প্রয়োজনীয় সরঞ্জাম, সেটিংস এবং বিকল্পগুলি যা আধুনিক চাহিদা পূরণ করে৷

2012: ব্রিটিশ লজিকা ক্রয়

জুন 2012 সালে, CGI গ্রুপ ঘোষণা করেছে যে এটি বৃহত্তম ইউরোপীয় সিস্টেম ইন্টিগ্রেটর Logica কেনার জন্য একটি চুক্তি স্বাক্ষর করেছে। লেনদেনের পরিমাণ 2.8 বিলিয়ন কানাডিয়ান ডলার ($2.7 বিলিয়ন)। চুক্তির অংশ হিসাবে, CGI C$515 মিলিয়ন পরিমাণে Logica এর ঋণ পরিশোধের বাধ্যবাধকতা গ্রহণ করতেও সম্মত হয়েছে।

লেনদেনের অর্থায়নের জন্য, CGI অতিরিক্ত 46.7 মিলিয়ন শেয়ার ইস্যু করে 1 বিলিয়ন কানাডিয়ান ডলার সংগ্রহ করার পরিকল্পনা করেছে, কানাডিয়ান ইম্পেরিয়াল ব্যাংক অফ কমার্স, ন্যাশনাল ব্যাংক অফ কানাডা এবং দ্য টরন্টো-ডোমিনিয়ন ব্যাংক থেকে 2 বিলিয়ন কানাডিয়ান ডলার ধার করবে এবং প্রায় 650 মিলিয়ন কানাডিয়ান ডলার বেশি - বর্তমান ক্রেডিট লাইনের মধ্যে।

শেয়ার প্রতি প্রস্তাবিত মূল্য 30 মে, 2012-এ Logica-এর সমাপনী মূল্যের চেয়ে 59.8% বেশি। চুক্তিটি 31 ডিসেম্বর, 2012-এ শেষ হওয়া 12 মাসের মেয়াদের সুদ, কর, অবচয় এবং পরিবর্ধন (EBITDA) আগে লজিকার আয়ের প্রায় 6.6 গুণ বেশি

Logica অধিগ্রহণের ফলে অধিগ্রহণ এবং ইন্টিগ্রেশন খরচ বাদ দিয়ে CGI-এর শেয়ার প্রতি আয় 25% থেকে 30% বৃদ্ধি পাবে বলে আশা করা হচ্ছে। একীভূতকরণের ফলে, ফলস্বরূপ কোম্পানির কর্মশক্তি এবং বার্ষিক আয় CGI-এর দ্বিগুণেরও বেশি হবে। সম্মিলিত কোম্পানির কর্মীদের আকার 43টি দেশের অফিসে অবস্থিত প্রায় 72 হাজার কর্মচারী হবে এবং বার্ষিক আয় প্রায় 10.4 বিলিয়ন কানাডিয়ান ডলার ($9.6 বিলিয়ন) হবে।

নতুন কোম্পানি হবে বিশ্বের আইটি পরামর্শদাতাদের মধ্যে ষষ্ঠ বৃহত্তম। এর মধ্যে সবচেয়ে বড় হল IBM, Accenture, Cap Gemini, Tata Consultancy এবং Infosys, রয়টার্সের অনুমান অনুসারে।

CGI প্রেসিডেন্ট এবং CEO মাইকেল রোচ বলেন, "লজিকা হল একটি নেতৃস্থানীয় ব্যবসায়িক এবং প্রযুক্তি পরিষেবা কোম্পানি যেখানে আমরা লজিকা কিনছি।" এটা সঠিক মূল্যে এবং ইন সঠিক সময়, এন্ড-টু-এন্ড প্রযুক্তি পরিষেবার কয়েকটি বৃহত্তম স্বাধীন প্রদানকারীর মধ্যে একটি তৈরি করা৷"

CGI এর পরিচালনা পর্ষদ সর্বসম্মতিক্রমে লেনদেনের অনুমোদন দিয়েছে। শেয়ারহোল্ডারদের অনুমোদন পাওয়ার পর এবং স্ট্যান্ডার্ড পদ্ধতি অনুসরণ করে সেপ্টেম্বর 2012-এর মধ্যে এটি সম্পন্ন করার পরিকল্পনা করা হয়েছে। কোম্পানি ইন্টিগ্রেশন প্রক্রিয়া 3 বছরের মধ্যে সম্পন্ন করার পরিকল্পনা করা হয়েছে

ওয়ার্ল্ড ওয়াইড ওয়েবকে ধন্যবাদ, প্রায় যে কেউ অনলাইনে এমন একটি ফর্মে তথ্য সরবরাহ করতে পারে যা চোখে সহজ এবং ব্যাপকভাবে প্রচার করা যেতে পারে। আপনি নিঃসন্দেহে ইন্টারনেট সার্ফ করেছেন এবং অন্যান্য সাইটগুলি দেখেছেন, এবং এখন আপনি সম্ভবত জানেন যে "HTTP" এবং "HTML" এর মতো ভীতিকর সংক্ষিপ্ত রূপগুলি কেবল "ওয়েব" এবং "ইন্টারনেটে তথ্য প্রকাশ করার উপায়" এর সংক্ষিপ্ত বিবরণ। আপনার ইতিমধ্যে ইন্টারনেটে তথ্য উপস্থাপনের কিছু অভিজ্ঞতা থাকতে পারে।

ইন্টারনেট তথ্য বিতরণের জন্য একটি আদর্শ মাধ্যম হিসেবে প্রমাণিত হয়েছে, যা এর ব্যাপক জনপ্রিয়তা এবং ব্যাপক উন্নয়ন থেকে দেখা যায়। যদিও কেউ কেউ ইন্টারনেটের উপযোগিতা নিয়ে প্রশ্ন তুলেছেন এবং এর ব্যাপক বিকাশ এবং জনপ্রিয়তাকে প্রধানত হস্তক্ষেপকারী বিজ্ঞাপনের জন্য দায়ী করেছেন, ইন্টারনেট নিঃসন্দেহে সব ধরনের তথ্য উপস্থাপনের জন্য একটি গুরুত্বপূর্ণ মাধ্যম। বৈদ্যুতিনভাবে আপ-টু-ডেট তথ্য (খবর, আবহাওয়া, লাইভ খেলাধুলার ইভেন্ট) এবং রেফারেন্স উপাদান সরবরাহ করার জন্য যে অনেক পরিষেবা উপলব্ধ রয়েছে তা নয়, উল্লেখযোগ্য পরিমাণে অন্যান্য ধরণের ডেটাও উপলব্ধ রয়েছে। আইআরএস, যেটি তার 1995 সালের ট্যাক্স রিটার্ন ফর্ম এবং অন্যান্য তথ্য ওয়ার্ল্ড ওয়াইড ওয়েবের মাধ্যমে বিতরণ করেছে, সম্প্রতি তার ওয়েব সাইটের জন্য ফ্যান মেইল ​​পাওয়ার কথা স্বীকার করেছে। কে ভেবেছিল যে আইআরএস কখনও ফ্যান মেল পাবে? এটি ঘটেছে কারণ তার সাইটটি ভালভাবে ডিজাইন করা হয়েছিল, তবে এটি সত্যই প্রমাণিত হয়েছিল দরকারী টুলহাজার হাজার, সম্ভবত লক্ষ লক্ষ মানুষের জন্য।

কী ওয়েবকে অনন্য করে তোলে এবং এমন একটি আকর্ষণীয় তথ্য পরিষেবা? প্রথমত, এটি ডেটাতে একটি হাইপারমিডিয়া ইন্টারফেস প্রদান করে। ফ্লপি ড্রাইভ মনে আছে? হার্ড ড্রাইভতোমার কম্পিউটার। সাধারণত, ফাইল সিস্টেমের মতো ডেটা লিনিয়ার ফ্যাশনে প্রকাশ করা হয়। উদাহরণস্বরূপ, আপনার কাছে অনেকগুলি ফোল্ডার রয়েছে এবং প্রতিটি ফোল্ডারের ভিতরে নথি বা অন্যান্য ফোল্ডার রয়েছে। ওয়েব একটি হাইপারমিডিয়া নামক তথ্য প্রকাশ করার জন্য একটি ভিন্ন দৃষ্টান্ত ব্যবহার করে। একটি হাইপারটেক্সট ইন্টারফেস একটি নথি এবং লিঙ্ক নিয়ে গঠিত। লিঙ্কগুলি এমন শব্দ যা অন্যান্য নথি দেখতে বা অন্যান্য ধরণের তথ্য খুঁজতে ক্লিক করা হয়। ওয়েব হাইপারটেক্সট ধারণাকে প্রসারিত করে অন্য ধরনের মিডিয়া অন্তর্ভুক্ত করে, যেমন গ্রাফিক্স, শব্দ, ভিডিও (তাই নাম "হাইপারমিডিয়া")। একটি নথিতে পাঠ্য বা গ্রাফিক্স নির্বাচন করা আপনাকে যেকোনো সংখ্যক ফর্মে নির্বাচিত আইটেম সম্পর্কে সম্পর্কিত তথ্য দেখতে দেয়।

প্রায় সবাই এই সহজ থেকে উপকৃত হতে পারে এবং অনন্য উপায়তথ্যের উপস্থাপনা এবং বিতরণ, শিক্ষাবিদ থেকে শুরু করে যারা অবিলম্বে তাদের সহকর্মীদের সাথে ডেটা ব্যবহার করতে চান, ব্যবসায়িক ব্যক্তিরা যারা তাদের কোম্পানির তথ্য সবার সাথে শেয়ার করেন। যাইহোক, তথ্য প্রদান করা অত্যন্ত গুরুত্বপূর্ণ হলেও, গত কয়েক বছরে অনেকেই মনে করেছেন যে এটি কম নয় গুরুত্বপূর্ণ প্রক্রিয়াতথ্য প্রাপ্ত করা হয়.

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

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

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

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

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

CGI কি?

কমন গেটওয়ে ইন্টারফেস (CGI) হল সার্ভারের একটি ইন্টারফেস যা আপনাকে সার্ভারের কার্যকারিতা প্রসারিত করতে দেয়। CGI ব্যবহার করে, আপনি আপনার সাইট অ্যাক্সেসকারী ব্যবহারকারীদের সাথে ইন্টারঅ্যাক্টিভভাবে ইন্টারঅ্যাক্টিভ করতে পারেন। একটি তাত্ত্বিক স্তরে, CGI সার্ভারকে ব্রাউজার থেকে ইনপুট পার্স (ব্যাখ্যা) করতে এবং ব্যবহারকারীর ইনপুটের উপর ভিত্তি করে তথ্য ফেরত দিতে সক্ষম হতে দেয়। একটি ব্যবহারিক স্তরে, CGI হল একটি ইন্টারফেস যা একজন প্রোগ্রামারকে এমন প্রোগ্রাম লিখতে দেয় যা একটি সার্ভারের সাথে সহজে যোগাযোগ করে।

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

প্রথমত, এই জাতীয় কাজের জন্য সার্ভার কোডে অ্যাক্সেস প্রয়োজন, যা সর্বদা সম্ভব হয় না।

দ্বিতীয়ত, এটি কঠিন এবং ব্যাপক প্রযুক্তিগত জ্ঞান প্রয়োজন।

তৃতীয়ত, এটি শুধুমাত্র একটি নির্দিষ্ট সার্ভারে প্রযোজ্য। আপনি যদি আপনার সার্ভারকে অন্য প্ল্যাটফর্মে স্থানান্তর করতে চান তবে আপনাকে চালাতে হবে বা কমপক্ষে সেই প্ল্যাটফর্মে কোড পোর্ট করার জন্য অনেক সময় ব্যয় করতে হবে।

কেন সিজিআই?

CGI এই সমস্যাগুলির একটি বহনযোগ্য এবং সহজ সমাধান প্রদান করে। CGI প্রোটোকল প্রোগ্রামগুলির জন্য একটি ওয়েব সার্ভারের সাথে যোগাযোগের জন্য একটি আদর্শ উপায় সংজ্ঞায়িত করে। কোনো বিশেষ জ্ঞান ছাড়াই, আপনি যে কোনো মেশিন ভাষায় একটি প্রোগ্রাম লিখতে পারেন যা ওয়েব সার্ভারের সাথে ইন্টারফেস এবং যোগাযোগ করে। এই প্রোগ্রামটি সমস্ত ওয়েব সার্ভারের সাথে কাজ করবে যারা CGI প্রোটোকল বোঝে।

CGI কমিউনিকেশন স্ট্যান্ডার্ড ইনপুট এবং আউটপুট ব্যবহার করে করা হয়, যার মানে হল যে আপনি যদি জানেন কিভাবে আপনার প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করে ডেটা প্রিন্ট করতে এবং পড়তে হয়, তাহলে আপনি একটি ওয়েব সার্ভার অ্যাপ্লিকেশন লিখতে পারেন। ইনপুট এবং আউটপুট পার্সিং ছাড়াও, প্রোগ্রামিং সিজিআই অ্যাপ্লিকেশনগুলি প্রায় অন্য যে কোনও অ্যাপ্লিকেশন প্রোগ্রামিংয়ের সমতুল্য। উদাহরণস্বরূপ, "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রাম করতে, আপনি আপনার ভাষার প্রিন্ট ফাংশন এবং উপযুক্ত বার্তা প্রিন্ট করার জন্য CGI প্রোগ্রামগুলির জন্য সংজ্ঞায়িত বিন্যাস ব্যবহার করুন।

একটি প্রোগ্রামিং ভাষা নির্বাচন করা

যেহেতু CGI একটি সার্বজনীন ইন্টারফেস, আপনি কোনো নির্দিষ্ট মেশিন ভাষার মধ্যে সীমাবদ্ধ নন। একটি গুরুত্বপূর্ণ প্রশ্ন যা প্রায়শই জিজ্ঞাসা করা হয়: সিজিআই প্রোগ্রামিংয়ের জন্য কোন প্রোগ্রামিং ভাষা ব্যবহার করা যেতে পারে? আপনি যে কোনও ভাষা ব্যবহার করতে পারেন যা আপনাকে নিম্নলিখিতগুলি করতে দেয়:

  • স্ট্যান্ডার্ড আউটপুটে প্রিন্ট করুন
  • স্ট্যান্ডার্ড ইনপুট থেকে পড়ুন
  • পরিবর্তনশীল মোড থেকে পড়ুন

প্রায় সব প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং অনেক স্ক্রিপ্টিং ল্যাঙ্গুয়েজ এই তিনটি কাজ করে এবং আপনি যেকোনও ব্যবহার করতে পারেন।

ভাষাগুলি নিম্নলিখিত দুটি শ্রেণীর একটিতে পড়ে: অনুবাদিত এবং ব্যাখ্যা করা। C বা C++ এর মতো একটি অনূদিত ভাষা সাধারণত ছোট এবং দ্রুততর হয়, যখন পার্ল বা Rexx-এর মতো ব্যাখ্যা করা ভাষাগুলির জন্য কখনও কখনও স্টার্টআপের সময় একটি বড় দোভাষী লোড করার প্রয়োজন হয়। অতিরিক্তভাবে, আপনার ভাষা অনুবাদযোগ্য হলে আপনি উৎস কোড ছাড়াই বাইনারি কোড (কোড যা মেশিন ভাষায় অনুবাদ করে) বিতরণ করতে পারেন। ব্যাখ্যাযোগ্য স্ক্রিপ্টগুলি বিতরণ করার অর্থ সাধারণত উত্স কোড বিতরণ করা।

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

CGI প্রোগ্রামিং-এর জন্য সর্বাধিক ব্যবহৃত দুটি ভাষা হল C এবং পার্ল (দুটিই এই বইটিতে কভার করা হয়েছে)। উভয়েরই সুস্পষ্ট সুবিধা এবং অসুবিধা রয়েছে। পার্ল একটি খুব উচ্চ-স্তরের ভাষা, এবং একই সাথে একটি শক্তিশালী ভাষা, বিশেষ করে পাঠ্য পার্স করার জন্য উপযুক্ত। যদিও এর ব্যবহারের সহজতা, নমনীয়তা এবং শক্তি এটিকে CGI প্রোগ্রামিংয়ের জন্য একটি আকর্ষণীয় ভাষা করে তোলে, তবে এর তুলনামূলকভাবে বড় আকার এবং ধীর গতির অপারেশন কখনও কখনও এটিকে কিছু অ্যাপ্লিকেশনের জন্য অনুপযুক্ত করে তোলে। সি প্রোগ্রামগুলি ছোট, আরও দক্ষ এবং নিম্ন-স্তরের সিস্টেম নিয়ন্ত্রণ প্রদান করে, কিন্তু প্রোগ্রামের জন্য আরও জটিল, হালকা বিল্ট-ইন টেক্সট প্রসেসিং রুটিন নেই এবং ডিবাগ করা আরও কঠিন।

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

সতর্কতা

CGI অ্যাপ্লিকেশনের কিছু গুরুত্বপূর্ণ বিকল্প আছে। অনেক সার্ভারে এখন API প্রোগ্রামিং অন্তর্ভুক্ত রয়েছে, যা স্বতন্ত্র সিজিআই অ্যাপ্লিকেশনের বিপরীতে সরাসরি সার্ভার এক্সটেনশনগুলিকে প্রোগ্রাম করা সহজ করে তোলে। API সার্ভারগুলি সাধারণত CGI প্রোগ্রামের চেয়ে বেশি দক্ষ। অন্যান্য সার্ভারে অন্তর্নির্মিত কার্যকারিতা রয়েছে যা বিশেষ নন-সিজিআই উপাদানগুলি পরিচালনা করতে পারে, যেমন ডাটাবেস লিঙ্কিং। অবশেষে, কিছু অ্যাপ্লিকেশন জাভার মত কিছু নতুন ক্লায়েন্ট-সাইড (সার্ভার-সাইডের পরিবর্তে) প্রযুক্তি দ্বারা পরিচালনা করা যেতে পারে। প্রযুক্তির এত দ্রুত পরিবর্তনের ফলে, সিজিআই কি দ্রুত অপ্রচলিত হয়ে যাবে?

কঠিনভাবে। নতুন প্রযুক্তির তুলনায় CGI এর বেশ কিছু সুবিধা রয়েছে।

  • এটি বহুমুখী এবং বহনযোগ্য। আপনি যেকোনো প্ল্যাটফর্মে প্রায় যেকোনো প্রোগ্রামিং ভাষা ব্যবহার করে একটি CGI অ্যাপ্লিকেশন লিখতে পারেন। কিছু বিকল্প, যেমন সার্ভার API, আপনাকে নির্দিষ্ট ভাষায় সীমাবদ্ধ করে এবং শেখা অনেক বেশি কঠিন।
  • এটি অসম্ভাব্য যে জাভা-এর মতো ক্লায়েন্ট-সাইড প্রযুক্তিগুলি CGI প্রতিস্থাপন করবে, কারণ কিছু অ্যাপ্লিকেশন রয়েছে যেগুলি সার্ভার-সাইড অ্যাপ্লিকেশনগুলি চালানোর জন্য অনেক বেশি উপযুক্ত।
  • CGI এর অনেক সীমাবদ্ধতা HTML বা HTTP এর সীমাবদ্ধতা। ইন্টারনেটের মান যেমন সামগ্রিকভাবে বিকশিত হয়, তেমনই CGI ক্ষমতাও।

সারসংক্ষেপ

কমন গেটওয়ে ইন্টারফেস হল সেই প্রোটোকল যার মাধ্যমে প্রোগ্রামগুলি ওয়েব সার্ভারের সাথে ইন্টারঅ্যাক্ট করে। CGI এর বহুমুখীতা প্রোগ্রামারদের প্রায় যেকোনো ভাষায় গেটওয়ে প্রোগ্রাম লেখার ক্ষমতা দেয়, যদিও বিভিন্ন ভাষার সাথে অনেক ট্রেড-অফ যুক্ত রয়েছে। এই ক্ষমতা ব্যতীত, ইন্টারেক্টিভ ওয়েব পৃষ্ঠাগুলি তৈরি করা কঠিন হবে, সর্বোত্তমভাবে সার্ভার পরিবর্তনের প্রয়োজন, এবং ইন্টারঅ্যাক্টিভিটি বেশিরভাগ ব্যবহারকারীদের জন্য অনুপলব্ধ হবে যারা সাইট প্রশাসক নন।

অধ্যায় 2: মৌলিক

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

যদিও সাধারণ গেটওয়ে ইন্টারফেসটি সম্পূর্ণরূপে বুঝতে এবং আয়ত্ত করতে কিছুটা সময় লাগে, তবে প্রোটোকলটি নিজেই বেশ সহজ। যে কেউ যার কিছু মৌলিক প্রোগ্রামিং দক্ষতা আছে এবং ওয়েবের সাথে পরিচিত তারা দ্রুত মোটামুটি জটিল CGI অ্যাপ্লিকেশনগুলিকে প্রোগ্রাম করতে শিখতে পারে ঠিক যেমনটি আমি এবং অন্যরা বেশ কয়েক বছর আগে শিখেছিলাম।

এই অধ্যায়ের উদ্দেশ্য হল CGI-এর মূল বিষয়গুলিকে ব্যাপকভাবে উপস্থাপন করা, যদিও ঘনীভূতভাবে। এখানে আলোচিত প্রতিটি ধারণা পরবর্তী অধ্যায়ে বিস্তারিতভাবে উপস্থাপন করা হয়েছে। যাইহোক, এই অধ্যায়টি শেষ করার পরে, আপনি অবিলম্বে CGI অ্যাপ্লিকেশনগুলি প্রোগ্রামিং শুরু করতে পারেন। একবার আপনি এই স্তরে পৌঁছে গেলে, আপনি CGI এর জটিলতাগুলি শিখতে পারেন, হয় এই বইটির বাকি অংশটি পড়ে বা কেবল নিজের উপর পরীক্ষা করে।

আপনি CGI প্রোগ্রামিংকে দুটি কাজ করতে পারেন: ওয়েব ব্রাউজার থেকে তথ্য গ্রহণ করা এবং ব্রাউজারে তথ্য ফেরত পাঠানো। একবার আপনি CGI অ্যাপ্লিকেশনগুলির স্বাভাবিক ব্যবহারের সাথে পরিচিত হয়ে গেলে এটি বেশ স্বজ্ঞাতভাবে করা হয়। প্রায়শই ব্যবহারকারীকে কিছু ফর্ম পূরণ করতে বলা হয়, উদাহরণস্বরূপ, তার নাম সন্নিবেশ করান। একবার ব্যবহারকারী ফর্মটি পূরণ করে Enter চাপলে, এই তথ্য CGI প্রোগ্রামে পাঠানো হয়। CGI প্রোগ্রামটিকে অবশ্যই এই তথ্যটিকে এমন কিছুতে রূপান্তর করতে হবে যা এটি বোঝে, সেই অনুযায়ী এটি প্রক্রিয়া করে এবং তারপর ব্রাউজারে ফেরত পাঠায়, এটি একটি সাধারণ নিশ্চিতকরণ বা বহু-উদ্দেশ্য ডেটাবেসে অনুসন্ধানের ফলাফল হতে পারে।

অন্য কথায়, প্রোগ্রামিং সিজিআই-এর জন্য ইন্টারনেট ব্রাউজার থেকে কীভাবে ইনপুট গ্রহণ করতে হয় এবং কীভাবে আউটপুট ফেরত পাঠাতে হয় তা বোঝার প্রয়োজন। একটি CGI প্রোগ্রামের ইনপুট এবং আউটপুট পর্যায়গুলির মধ্যে কী ঘটে তা বিকাশকারীর লক্ষ্যের উপর নির্ভর করে। আপনি দেখতে পাবেন যে CGI প্রোগ্রামিংয়ের প্রধান অসুবিধা এই মধ্যবর্তী পর্যায়ে রয়েছে; একবার আপনি কীভাবে ইনপুট এবং আউটপুট নিয়ে কাজ করবেন তা শিখে গেলে, এটি মূলত একজন CGI বিকাশকারী হওয়ার জন্য যথেষ্ট।

এই অধ্যায়ে, আপনি CGI ইনপুট এবং আউটপুটের পিছনের নীতিগুলি, সেইসাথে অন্যান্য মৌলিক দক্ষতাগুলি শিখবেন যা আপনাকে CGI লিখতে এবং ব্যবহার করতে হবে, যার মধ্যে HTML ফর্ম তৈরি করা এবং আপনার CGI প্রোগ্রামগুলির নামকরণের মতো বিষয়গুলি সহ। এই অধ্যায় নিম্নলিখিত বিষয়গুলি কভার করে:

  • ঐতিহ্যবাহী প্রোগ্রাম "হ্যালো, ওয়ার্ল্ড!";
  • CGI আউটপুট: ইন্টারনেট ব্রাউজারে প্রদর্শনের জন্য তথ্য ফেরত পাঠানো;
  • অ্যাপ্লিকেশনটি কনফিগার করা, ইনস্টল করা এবং চালানো। আপনি বিভিন্ন ওয়েব প্ল্যাটফর্ম এবং সার্ভার সম্পর্কে শিখবেন;
  • CGI ইনপুট: ওয়েব ব্রাউজার দ্বারা পাঠানো তথ্যের ব্যাখ্যা। এই ধরনের ইনপুট পার্স করার জন্য কিছু দরকারী প্রোগ্রামিং লাইব্রেরির ভূমিকা;
  • একটি সহজ উদাহরণ: এটি একটি প্রদত্ত অধ্যায়ের সমস্ত পাঠ কভার করে;
  • প্রোগ্রামিং কৌশল।

এই অধ্যায়ের প্রকৃতির কারণে, আমি কেবলমাত্র কিছু বিষয়ে হালকাভাবে স্পর্শ করি। চিন্তা করবেন না; এই সমস্ত বিষয়গুলি অন্যান্য অধ্যায়ে আরও গভীরতার সাথে কভার করা হয়েছে।

ওহে বিশ্ব!

আপনি একটি ঐতিহ্যগত পরিচায়ক প্রোগ্রামিং সমস্যা দিয়ে শুরু করুন। আপনি একটি প্রোগ্রাম লিখবেন যা প্রদর্শন করে "হ্যালো, ওয়ার্ল্ড!" আপনার ওয়েব ব্রাউজারে। আপনি এই প্রোগ্রামটি লেখার আগে, আপনাকে অবশ্যই বুঝতে হবে যে ওয়েব ব্রাউজার CGI প্রোগ্রামগুলি থেকে কী তথ্য পেতে চায়৷ আপনাকে এই প্রোগ্রামটি কীভাবে চালাতে হবে তাও জানতে হবে যাতে আপনি এটিকে কার্যকরভাবে দেখতে পারেন।

CGI ভাষা স্বাধীন, তাই আপনি যেকোনো ভাষায় এই প্রোগ্রামটি বাস্তবায়ন করতে পারেন। প্রতিটি ভাষার স্বাতন্ত্র্য প্রদর্শনের জন্য এখানে বিভিন্ন ভাষা ব্যবহার করা হয়েছে। পার্লে, "হ্যালো, ওয়ার্ল্ড!" তালিকা 2.1 এ দেখানো হয়েছে।

তালিকা 2.1. ওহে বিশ্ব! পার্লে #!/usr/local/bin/perl # Hello.cgi - আমার প্রথম CGI প্রোগ্রাম প্রিন্ট "Content-Type: text/html\n\n"; ছাপা " \ n "; মুদ্রণ " ওহে বিশ্ব!"; ছাপা "\ n "; মুদ্রণ " \ n "; মুদ্রণ "

ওহে বিশ্ব!

\ n "; মুদ্রণ " \n";

এই প্রোগ্রামটিকে hello.cgi হিসাবে সংরক্ষণ করুন এবং উপযুক্ত স্থানে এটি ইনস্টল করুন। (যদি আপনি নিশ্চিত না হন যে এটি কোথায় আছে, চিন্তা করবেন না; আপনি এই অধ্যায়ের পরে "একটি CGI প্রোগ্রাম ইনস্টল করা এবং চালানো" বিভাগে খুঁজে পাবেন।) বেশিরভাগ সার্ভারের জন্য, আপনার প্রয়োজনীয় ডিরেক্টরিটি হল cgi-bin . এখন, আপনার ওয়েব ব্রাউজার থেকে প্রোগ্রাম কল করুন. বেশিরভাগ ক্ষেত্রে, এর অর্থ নিম্নলিখিত ইউনিফর্ম রিসোর্স লোকেটার (URL) খোলা:

http://hostname/directoryname/hello.cgi

হোস্টনেম হল আপনার ওয়েব সার্ভারের নাম, এবং ডিরেক্টরির নাম হল সেই ডিরেক্টরি যেখানে আপনি hello.cgi (সম্ভবত cgi-bin) রাখেন।

বিভাজন hello.cgi

hello.cgi সম্পর্কে কিছু বিষয় খেয়াল রাখতে হবে।

প্রথমত, আপনি সাধারণ প্রিন্ট কমান্ড ব্যবহার করুন। CGI প্রোগ্রামগুলির জন্য কোনো বিশেষ ফাইল বর্ণনাকারী বা আউটপুট বর্ণনাকারীর প্রয়োজন হয় না। ব্রাউজারে আউটপুট পাঠাতে, শুধু stdout এ প্রিন্ট করুন।

দ্বিতীয়ত, মনে রাখবেন প্রথম প্রিন্ট স্টেটমেন্টের বিষয়বস্তু (কন্টেন্ট-টাইপ: টেক্সট/এইচটিএমএল) আপনার ওয়েব ব্রাউজারে দেখা যাচ্ছে না। আপনি ব্রাউজারে যেকোন তথ্য পাঠাতে পারেন (HTML পৃষ্ঠা, গ্রাফিক্স বা সাউন্ড), তবে প্রথমে আপনাকে ব্রাউজারকে বলতে হবে আপনি কি ধরনের ডেটা পাঠাচ্ছেন। এই লাইনটি ব্রাউজারকে বলে যে কি ধরনের তথ্য আশা করা যায় - এই ক্ষেত্রে, একটি HTML পৃষ্ঠা।

তৃতীয়ত, প্রোগ্রামটিকে hello.cgi বলা হয়। আপনাকে সবসময় আপনার CGI প্রোগ্রামের নামের সাথে .cgi এক্সটেনশন ব্যবহার করতে হবে না। যদিও উৎসঅনেক ভাষার জন্য .cgi এক্সটেনশনও ব্যবহার করা হয়, এটি ভাষার ধরন নির্দেশ করতে ব্যবহৃত হয় না, তবে সার্ভারের জন্য ফাইলটিকে গ্রাফিক্স ফাইল, HTML ফাইল বা টেক্সট ফাইলের পরিবর্তে একটি এক্সিকিউটেবল ফাইল হিসেবে চিহ্নিত করার একটি উপায়। . সার্ভারগুলিকে প্রায়শই কনফিগার করা হয় শুধুমাত্র সেই ফাইলগুলি চালানোর চেষ্টা করার জন্য যেগুলিতে এই এক্সটেনশনটি রয়েছে, অন্য সকলের বিষয়বস্তু প্রদর্শন করে৷ যদিও .cgi এক্সটেনশন ব্যবহার করার প্রয়োজন নেই, তবুও এটিকে ভালো অনুশীলন হিসেবে বিবেচনা করা হয়।

সাধারণভাবে, hello.cgi দুটি প্রধান অংশ নিয়ে গঠিত:

  • ব্রাউজারকে কী তথ্য আশা করতে হবে তা বলে (সামগ্রী-প্রকার: পাঠ্য/এইচটিএমএল)
  • ব্রাউজারকে কী প্রদর্শন করতে হবে তা বলে (হ্যালো, ওয়ার্ল্ড!)

ওহে বিশ্ব! সি তে

CGI প্রোগ্রামগুলির ভাষার স্বাধীনতা দেখাতে, তালিকা 2.2 সি-তে লেখা hello.cgi প্রোগ্রামের সমতুল্য দেখায়।

তালিকা 2.2। ওহে বিশ্ব! C. /* hello.cgi.c - হ্যালো, ওয়ার্ল্ড CGI */ # অন্তর্ভুক্ত int main() ( printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" ওহে বিশ্ব!\n"); printf("\n"); printf(" \n"); printf("

ওহে বিশ্ব!

\n"); printf(" \n");)

বিঃদ্রঃ

মনে রাখবেন hello.cgi-এর পার্ল সংস্করণ ব্যবহার করে বিষয়বস্তু-টাইপ প্রিন্ট ": text/html\n\n "; যদিও সংস্করণ সি ব্যবহার করে Printf("Content-Type: text/html\r\n\r\n");

কেন পার্ল অপারেটরটি দুটি নতুন লাইন (\n) দিয়ে শেষ করে যখন C printf দুটি ক্যারেজ রিটার্ন এবং নতুন লাইন (\r\n) দিয়ে শেষ হয়?

প্রযুক্তিগতভাবে, হেডার (খালি লাইনের আগে সমস্ত আউটপুট) ক্যারেজ রিটার্ন এবং নতুন লাইন দ্বারা পৃথক করা হবে বলে আশা করা হচ্ছে। দুর্ভাগ্যবশত, ডস এবং উইন্ডোজ মেশিনে, পার্ল \r কে ক্যারেজ রিটার্নের পরিবর্তে অন্য একটি নতুন লাইন হিসাবে অনুবাদ করে।

যদিও পার্লের \rs ব্যতিক্রমটি প্রযুক্তিগতভাবে ভুল, এটি প্রায় সমস্ত প্রোটোকলেই কাজ করবে এবং সমস্ত প্ল্যাটফর্মে সমানভাবে বহনযোগ্য। অতএব, এই বইয়ের সমস্ত পার্ল উদাহরণে, আমি ক্যারেজ রিটার্ন এবং নিউলাইনগুলির পরিবর্তে নতুন লাইন পৃথককারী হেডার ব্যবহার করি।

এই সমস্যার একটি উপযুক্ত সমাধান অধ্যায় 4, উপসংহারে উপস্থাপন করা হয়েছে।

প্রোগ্রামটি লিখতে কোন ভাষা ব্যবহার করা হয় তা ওয়েব সার্ভার বা ব্রাউজার উভয়ই চিন্তা করে না। যদিও প্রতিটি ভাষার একটি CGI প্রোগ্রামিং ভাষা হিসাবে সুবিধা এবং অসুবিধা রয়েছে, তবে আপনি যে ভাষাটির সাথে কাজ করতে সবচেয়ে স্বাচ্ছন্দ্য বোধ করেন সেটি ব্যবহার করা ভাল। (প্রোগ্রামিং ভাষার পছন্দটি অধ্যায় 1, "কমন গেটওয়ে ইন্টারফেস (CGI)" এ আরও বিশদে আলোচনা করা হয়েছে)।

CGI রেন্ডারিং

এখন আপনি ওয়েব ব্রাউজারে তথ্য পাঠানোর সমস্যাটি ঘনিষ্ঠভাবে দেখতে পারেন। "হ্যালো, ওয়ার্ল্ড" উদাহরণ থেকে, আপনি দেখতে পাচ্ছেন যে ওয়েব ব্রাউজারগুলি দুটি সেটের ডেটা প্রত্যাশা করে: একটি শিরোনাম, যাতে কোন তথ্য প্রদর্শন করা যায় (যেমন বিষয়বস্তু-প্রকার: লাইন) এবং প্রকৃত তথ্য (ওয়েব ব্রাউজার কী) প্রদর্শন)। এই দুটি তথ্য একটি ফাঁকা লাইন দ্বারা পৃথক করা হয়.

হেডারটিকে HTTP হেডার বলা হয়। এটি ব্রাউজার যে তথ্য পেতে যাচ্ছে সে সম্পর্কে গুরুত্বপূর্ণ তথ্য দেয়। বেশ কিছু আছে বিভিন্ন ধরনের HTTP শিরোনাম, এবং সবচেয়ে সর্বজনীন যা আপনি আগে ব্যবহার করেছেন: বিষয়বস্তু-প্রকার: শিরোনাম। আপনি HTTP শিরোনামগুলির বিভিন্ন সমন্বয় ব্যবহার করতে পারেন, ক্যারেজ রিটার্ন এবং নতুন লাইন (\r\n) দ্বারা পৃথক করা। শিরোনামটিকে ডেটা থেকে আলাদা করার ফাঁকা লাইনটিতে একটি ক্যারেজ রিটার্ন এবং একটি নতুন লাইন রয়েছে (কেন উভয়েরই প্রয়োজন পূর্ববর্তী নোটে সংক্ষিপ্তভাবে আলোচনা করা হয়েছে এবং অধ্যায় 4 এ বিস্তারিত বলা হয়েছে)। আপনি অধ্যায় 4 এ অন্যান্য HTTP শিরোনাম সম্পর্কে শিখবেন; বর্তমানে আপনি Content-Type: header নিয়ে কাজ করছেন।

বিষয়বস্তু-প্রকার: শিরোনামটি বর্ণনা করে যে ধরনের ডেটা CGI ফেরত দেয়। এই হেডারের জন্য উপযুক্ত বিন্যাস হল:

বিষয়বস্তু-প্রকার: সাব-টাইপ/টাইপ

যেখানে সাবটাইপ/টাইপ সঠিক মাল্টিপারপাস ইন্টারনেট মেল এক্সটেনশন (MIME) টাইপ। সবচেয়ে সাধারণ MIME প্রকার হল HTML প্রকার: text/html। সারণি 2.1 আরও কয়েকটি সাধারণ MIME প্রকারের তালিকা করে যা আলোচনা করা হবে; অধ্যায় 4 এ MIME প্রকারের আরও সম্পূর্ণ তালিকা এবং বিশ্লেষণ প্রদান করা হয়েছে।

বিঃদ্রঃ

MIME মূলত মেইল ​​মেসেজ বডির বিষয়বস্তু বর্ণনা করার জন্য উদ্ভাবিত হয়েছিল। বিষয়বস্তু-প্রকার তথ্য উপস্থাপন করার জন্য এটি একটি মোটামুটি সাধারণ উপায় হয়ে উঠেছে। আপনি RFC1521 এ MIME সম্পর্কে আরও পড়তে পারেন। ইন্টারনেটে RFC গুলি মন্তব্যের জন্য অনুরোধের জন্য দাঁড়ায়, যা ইন্টারনেটে গোষ্ঠীগুলির দ্বারা গৃহীত সিদ্ধান্তের সারাংশ যা মান নির্ধারণ করার চেষ্টা করে। আপনি নিম্নলিখিত ঠিকানায় RFC1521 এর ফলাফল দেখতে পারেন: http://andrew2.andrew.cmu.edu/rfc/rfc1521.html

টেবিল 2.1। কিছু সাধারণ MIME প্রকার। MIME প্রকার বর্ণনা টেক্সট/html হাইপারটেক্সট মার্কআপ ল্যাঙ্গুয়েজ (HTML) টেক্সট/প্লেন প্লেইন টেক্সট ফাইল ছবি/gif গ্রাফিক ফাইল GIF ইমেজ/jpeg কম্প্রেসড গ্রাফিক ফাইল JPEG অডিও/বেসিক অডিও ফাইল Sun *.au Audio/x-wav উইন্ডোজ ফাইল*.wav

শিরোনাম এবং একটি খালি লাইনের পরে, আপনি আপনার প্রয়োজনীয় ফর্মে ডেটা মুদ্রণ করুন। আপনি যদি এইচটিএমএল পাঠান, তাহলে হেডারের পরে এইচটিএমএল ট্যাগ এবং ডেটা প্রিন্ট করুন stdout এ। আপনি গ্রাফিক্স, সাউন্ড এবং অন্যান্য বাইনারি ফাইল পাঠাতে পারেন শুধু ফাইলের বিষয়বস্তু stdout এ প্রিন্ট করে। এর কয়েকটি উদাহরণ 4 অধ্যায়ে দেওয়া হয়েছে।

একটি CGI প্রোগ্রাম ইনস্টল এবং চালানো

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

সমস্ত সার্ভারের সার্ভার ফাইলের জন্য স্থান এবং HTML নথির জন্য স্থান প্রয়োজন। এই বইতে, সার্ভার এলাকাকে বলা হয় ServerRoot, এবং নথির এলাকাটিকে DocumentRoot বলা হয়। ইউনিক্স মেশিনে, সার্ভাররুট সাধারণত /usr/local/etc/httpd/ এ থাকে এবং ডকুমেন্টরুট সাধারণত /usr/local/etc/httpd/htdocs/ এ থাকে। যাইহোক, এটি আপনার সিস্টেমে কোন পার্থক্য করবে না, তাই আপনার নিজস্ব ServerRoot এবং DocumentRoot দিয়ে ServerRoot এবং DocumentRoot-এর সমস্ত রেফারেন্স প্রতিস্থাপন করুন।

আপনি যখন আপনার ওয়েব ব্রাউজার ব্যবহার করে ফাইলগুলি অ্যাক্সেস করেন, আপনি ডকুমেন্টরুটের সাথে সম্পর্কিত URL-এ ফাইলটি নির্দিষ্ট করেন। উদাহরণস্বরূপ, যদি আপনার সার্ভার ঠিকানা হয় mymachine.org, তাহলে আপনি নিম্নলিখিত URL দিয়ে এই ফাইলটি অ্যাক্সেস করবেন: http://mymachine.org/index.html

CGI-এর জন্য সার্ভার কনফিগার করা হচ্ছে

বেশিরভাগ ওয়েব সার্ভার সিজিআই প্রোগ্রাম ব্যবহারের অনুমতি দেওয়ার জন্য পূর্ব-কনফিগার করা হয়। সাধারণত দুটি প্যারামিটার সার্ভারকে নির্দেশ করে যে ফাইলটি একটি CGI অ্যাপ্লিকেশন কিনা:

  • মনোনীত ডিরেক্টরি। কিছু সার্ভার আপনাকে নির্ধারণ করতে দেয় যে একটি নির্দিষ্ট ডিরেক্টরির সমস্ত ফাইল (সাধারণত ডিফল্টরূপে cgi-bin বলা হয়) CGI।
  • ফাইলের নাম এক্সটেনশন। অনেক সার্ভারে এই প্রাক-কনফিগারেশন থাকে যা .cgi-এ শেষ হওয়া সমস্ত ফাইলকে CGI হিসাবে সংজ্ঞায়িত করতে দেয়।

মনোনীত ডিরেক্টরি পদ্ধতিটি অতীতের একটি ধ্বংসাবশেষ (প্রথম সার্ভারগুলি কোন ফাইলগুলি সিজিআই প্রোগ্রাম ছিল তা নির্ধারণের একমাত্র পদ্ধতি হিসাবে এটি ব্যবহার করেছিল), তবে এর বেশ কয়েকটি সুবিধা রয়েছে।

  • এটি CGI প্রোগ্রামগুলিকে কেন্দ্রীভূত রাখে, অন্যান্য ডিরেক্টরিগুলিকে বিশৃঙ্খল হতে বাধা দেয়।
  • আপনি কোনো নির্দিষ্ট ফাইলের নাম এক্সটেনশনের মধ্যে সীমাবদ্ধ নন, তাই আপনি যা চান আপনার ফাইলের নাম দিতে পারেন। কিছু সার্ভার আপনাকে CGI ডিরেক্টরি হিসাবে বিভিন্ন ডিরেক্টরি মনোনীত করার অনুমতি দেয়।
  • এটি আপনাকে CGI কে রেকর্ড করতে পারে তার উপর আরও নিয়ন্ত্রণ দেয়। উদাহরণস্বরূপ, যদি আপনার একটি সার্ভার থাকে এবং একাধিক ব্যবহারকারীর সাথে একটি সিস্টেমকে সমর্থন করে এবং নিরাপত্তার কারণে প্রথমে প্রোগ্রামটি অডিট না করে তারা তাদের নিজস্ব CGI স্ক্রিপ্ট ব্যবহার করতে না চায়, তাহলে আপনি শুধুমাত্র সেই ফাইলগুলিকে একটি সীমিত, কেন্দ্রীভূত ডিরেক্টরিতে CGI হিসাবে মনোনীত করতে পারেন। . ব্যবহারকারীদের তখন ইনস্টল করার জন্য আপনাকে CGI প্রোগ্রামগুলি সরবরাহ করতে হবে এবং প্রোগ্রামটিতে কোনও বড় নিরাপত্তা সমস্যা নেই তা নিশ্চিত করতে আপনি প্রথমে কোডটি অডিট করতে পারেন।

ফাইলের নাম এক্সটেনশনের মাধ্যমে CGI স্বরলিপি তার নমনীয়তার কারণে কার্যকর হতে পারে। আপনি CGI প্রোগ্রামগুলির জন্য একটি একক ডিরেক্টরিতে সীমাবদ্ধ নন। বেশিরভাগ সার্ভার ফাইলের নাম এক্সটেনশনের মাধ্যমে CGI চিনতে কনফিগার করা যেতে পারে, যদিও ডিফল্টরূপে সবগুলি এইভাবে কনফিগার করা হয় না।

সতর্কতা

আপনি যখন CGI-এর জন্য আপনার সার্ভার কনফিগার করেন তখন নিরাপত্তা সংক্রান্ত সমস্যার গুরুত্ব মনে রাখবেন। কিছু টিপস এখানে কভার করা হবে, এবং অধ্যায় 9, সিজিআই সুরক্ষা, এই দিকগুলিকে আরও বিশদে কভার করে।

UNIX সার্ভারে CGI ইনস্টল করা হচ্ছে

আপনার UNIX সার্ভার যেভাবে কনফিগার করা হোক না কেন, আপনার CGI অ্যাপ্লিকেশনগুলি প্রত্যাশিতভাবে চালানো হয় তা নিশ্চিত করার জন্য আপনাকে বেশ কিছু পদক্ষেপ নিতে হবে। আপনার ওয়েব সার্ভারটি সাধারণত একটি অস্তিত্বহীন ব্যবহারকারী হিসাবে চলবে (অর্থাৎ, ইউনিক্স ব্যবহারকারী কেউ নয় - একটি অ্যাকাউন্ট যার কোনো ফাইল অনুমতি নেই এবং লগ ইন করা যাবে না)। CGI স্ক্রিপ্টগুলি (পার্ল, বোর্ন শেল, বা অন্য স্ক্রিপ্টিং ভাষায় লেখা) অবশ্যই সারা বিশ্বে সম্পাদনযোগ্য এবং পাঠযোগ্য হতে হবে।

ক্লু

আপনার ফাইলগুলিকে বিশ্ব-পঠনযোগ্য এবং কার্যকর করতে, নিম্নলিখিত UNIX অনুমতি কমান্ডটি ব্যবহার করুন: chmod 755 ফাইলের নাম।

আপনি যদি পার্ল বা টিসিএল-এর মতো স্ক্রিপ্টিং ভাষা ব্যবহার করেন, তাহলে আপনার স্ক্রিপ্টের প্রথম লাইনে আপনার দোভাষীর সম্পূর্ণ পথ দিন। উদাহরণস্বরূপ, /usr/local/bin ডিরেক্টরিতে পার্ল ব্যবহার করে একটি পার্ল স্ক্রিপ্ট নিম্নলিখিত লাইন দিয়ে শুরু হবে:

#!/usr/local/bin/perl

সতর্কতা

/cgi-bin ডিরেক্টরিতে কখনও ইন্টারপ্রেটার (perl, বা Tcl Wish binary) রাখবেন না এটি আপনার সিস্টেমে একটি নিরাপত্তা ঝুঁকি তৈরি করে এটি অধ্যায় 9-এ আরও বিস্তারিতভাবে আলোচনা করা হয়েছে।

কিছু জেনেরিক ইউনিক্স সার্ভার

NCSA এবং Apache সার্ভারের অনুরূপ কনফিগারেশন ফাইল রয়েছে কারণ Apache সার্ভারটি মূলত NCSA কোডের উপর ভিত্তি করে তৈরি করা হয়েছিল। ডিফল্টরূপে, সেগুলিকে কনফিগার করা হয় যাতে cgi-bin ডিরেক্টরির যেকোন ফাইল (সার্ভাররুটে ডিফল্টভাবে অবস্থিত) একটি CGI প্রোগ্রাম হয়। cgi-bin ডিরেক্টরির অবস্থান পরিবর্তন করতে, আপনি conf/srm.conf কনফিগারেশন ফাইল সম্পাদনা করতে পারেন। এই ডিরেক্টরিটি কনফিগার করার বিন্যাস হল

ScriptAlias ​​fakedirectoryname realdirectoryname

যেখানে fakedirectoryname হল ছদ্ম ডিরেক্টরির নাম (/cgi-bin) এবং realdirectoryname হল সম্পূর্ণ পাথ যেখানে CGI প্রোগ্রামগুলি আসলে সংরক্ষণ করা হয়। আপনি একাধিক ScriptAlias ​​লাইন যোগ করে একাধিক ScriptAlias ​​কনফিগার করতে পারেন।

ডিফল্ট কনফিগারেশন বেশিরভাগ ব্যবহারকারীর প্রয়োজনের জন্য যথেষ্ট। সঠিক realdirectoryname নির্ধারণ করার জন্য আপনাকে উভয় ক্ষেত্রেই srm.conf ফাইলের লাইনটি সম্পাদনা করতে হবে। যদি, উদাহরণস্বরূপ, আপনার CGI প্রোগ্রামগুলি /usr/local/etc/httpd/cgi-bin এ অবস্থিত, আপনার srm.conf ফাইলের ScriptAlias ​​লাইনটি এরকম কিছু হওয়া উচিত:

ScriptAlias ​​/cgi-bin/ /usr/local/etc/httpd/cgi-bin/

এই ডিরেক্টরিতে অবস্থিত CGI প্রোগ্রামগুলি অ্যাক্সেস করতে বা লিঙ্ক করতে, নিম্নলিখিত URL ব্যবহার করুন:

http://hostname/cgi-bin/programname

যেখানে হোস্টনেম হল আপনার ওয়েব সার্ভারের হোস্টের নাম এবং প্রোগ্রামের নাম হল আপনার CGI এর নাম।

উদাহরণ স্বরূপ, ধরুন আপনি hello.cgi প্রোগ্রামটিকে আপনার www.company.com নামক ওয়েব সার্ভারে আপনার cgi-bin ডিরেক্টরিতে (যেমন /usr/local/etc/httpd/cgi-bin) কপি করেছেন। আপনার CGI অ্যাক্সেস করতে, নিম্নলিখিত URL ব্যবহার করুন: http://www.company.com/cgi-bin/hello.cgi

আপনি যদি আপনার NCSA বা Apache সার্ভার কনফিগার করতে চান একটি CGI হিসাবে একটি .cgi এক্সটেনশন সহ যেকোনো ফাইলকে চিনতে, আপনাকে দুটি কনফিগারেশন ফাইল সম্পাদনা করতে হবে। প্রথমে, srm.conf ফাইলে, নিচের লাইনটি আনকমেন্ট করুন:

AddType অ্যাপ্লিকেশন/x-httpd-cgi .cgi

এটি MIME টাইপ CGI কে .cgi এক্সটেনশনের সাথে সংযুক্ত করবে। এখন, আমাদের access.conf ফাইলটি পরিবর্তন করতে হবে যাতে আমরা যেকোনো ডিরেক্টরিতে CGI চালাতে পারি। এটি করার জন্য, বিকল্প লাইনে ExecCGI বিকল্পটি যুক্ত করুন। এটি নিম্নলিখিত লাইনের মত কিছু দেখাবে:

অপশন ইনডেক্স ফলোসিমলিঙ্কস ExecCGI

এখন, .cgi এক্সটেনশন সহ যেকোন ফাইলকে CGI হিসাবে বিবেচনা করা হয়; আপনি আপনার সার্ভারে যে কোনো ফাইল হিসাবে এটি অ্যাক্সেস করুন.

CERN সার্ভারটি Apache এবং NCSA সার্ভারের মতো একইভাবে কনফিগার করা হয়েছে। ScriptAlias ​​এর পরিবর্তে, CERN সার্ভার Exec কমান্ড ব্যবহার করে। উদাহরণস্বরূপ, httpd.conf ফাইলে, আপনি নিম্নলিখিত লাইনটি দেখতে পাবেন:

Exec /cgi-bin/* /usr/local/etc/httpd/cgi-bin/*

অন্যান্য ইউনিক্স সার্ভার একইভাবে কনফিগার করা যেতে পারে; এটি সার্ভার ডকুমেন্টেশনে আরও বিশদে বর্ণনা করা হয়েছে।

উইন্ডোজে সিজিআই ইনস্টল করা হচ্ছে

Windows 3.1, Windows 95 এবং Windows NT-এর জন্য উপলব্ধ বেশিরভাগ সার্ভারগুলি CGI স্বীকৃতির জন্য "ফাইল নেম এক্সটেনশন" পদ্ধতি ব্যবহার করে কনফিগার করা হয়েছে। সাধারণভাবে, উইন্ডোজ-ভিত্তিক সার্ভারের কনফিগারেশন পরিবর্তন করার জন্য কেবল সার্ভার কনফিগারেশন প্রোগ্রাম চালানো এবং উপযুক্ত পরিবর্তন করা প্রয়োজন।

কখনও কখনও একটি স্ক্রিপ্ট (যেমন পার্ল) সঠিকভাবে চালানোর জন্য একটি সার্ভার কনফিগার করা কঠিন হতে পারে। ডস বা উইন্ডোজে, আপনি স্ক্রিপ্টের প্রথম লাইনে দোভাষী নির্দিষ্ট করতে পারবেন না, যেমনটি ইউনিক্সের ক্ষেত্রে। কিছু সার্ভারে দোভাষীর সাথে নির্দিষ্ট ফাইলের নাম এক্সটেনশন যুক্ত করার জন্য একটি পূর্বনির্ধারিত কনফিগারেশন থাকে। উদাহরণস্বরূপ, অনেক উইন্ডোজ ওয়েব সার্ভার অনুমান করে যে .pl এ শেষ হওয়া ফাইলগুলি পার্ল স্ক্রিপ্ট।

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

Macintosh এ CGI ইনস্টল করা হচ্ছে

Macintosh-এর জন্য দুটি সর্বাধিক পরিচিত সার্ভার বিকল্প হল WebStar StarNine এবং এর পূর্বসূরি MacHTTP। উভয়ই CGI এর ফাইলের নাম এক্সটেনশন দ্বারা চিনতে পারে।

MacHTTP দুটি ভিন্ন এক্সটেনশন বোঝে: .cgi এবং .acgi, যা অ্যাসিঙ্ক্রোনাস CGI-এর জন্য দাঁড়ায়। একটি Macintosh (.cgi এক্সটেনশন সহ) ইনস্টল করা নিয়মিত CGI প্রোগ্রামগুলি CGI চলা শেষ না হওয়া পর্যন্ত ওয়েব সার্ভারকে ব্যস্ত অবস্থায় রাখবে, যার ফলে সার্ভার অন্য সমস্ত অনুরোধ স্থগিত করবে। অন্যদিকে, অ্যাসিঙ্ক্রোনাস CGI সার্ভারকে অনুরোধ গ্রহণ করার অনুমতি দেয় এমনকি এটি চলমান থাকা অবস্থায়ও।

একজন CGI Macintosh ডেভেলপার এই ওয়েব সার্ভারগুলির যেকোনো একটি ব্যবহার করে, যদি সম্ভব হয়, .cgi এক্সটেনশনের পরিবর্তে শুধুমাত্র .acgi এক্সটেনশন ব্যবহার করা উচিত। এটি বেশিরভাগ CGI প্রোগ্রামের সাথে কাজ করা উচিত; যদি এটি কাজ না করে, প্রোগ্রামটির নাম পরিবর্তন করে .cgi করুন।

সিজিআই নির্বাহ করা হচ্ছে

একবার আপনি CGI ইনস্টল করলে, এটি চালানোর বিভিন্ন উপায় রয়েছে। যদি আপনার CGI প্রোগ্রামটি শুধুমাত্র আউটপুট প্রোগ্রাম যেমন Hello,World!

বেশিরভাগ প্রোগ্রাম একটি HTML ফর্মে একটি সার্ভার অ্যাপ্লিকেশন হিসাবে চালিত হয়। এই ফর্মগুলি থেকে কীভাবে তথ্য পেতে হয় তা শেখার আগে, প্রথমে পড়ুন সংক্ষিপ্ত ভূমিকাএই ধরনের ফর্ম সৃষ্টি সম্পর্কে.

HTML ফর্মের উপর একটি দ্রুত টিউটোরিয়াল

একটি এইচটিএমএল আকারে সবচেয়ে গুরুত্বপূর্ণ দুটি ট্যাগ হল

এবং . আপনি শুধুমাত্র এই দুটি ট্যাগ ব্যবহার করে বেশিরভাগ HTML ফর্ম তৈরি করতে পারেন। এই অধ্যায়ে, আপনি এই ট্যাগগুলি এবং সম্ভাব্য প্রকার বা বৈশিষ্ট্যগুলির একটি ছোট উপসেট অন্বেষণ করবেন। . এইচটিএমএল ফর্মগুলির একটি সম্পূর্ণ নির্দেশিকা এবং লিঙ্ক অধ্যায় 3, এইচটিএমএল এবং ফর্মগুলিতে রয়েছে৷

ট্যাগ

ট্যাগ ব্যবহারকারীর প্রবেশ করা তথ্যের জন্য HTML ফাইলের কোন অংশ ব্যবহার করা উচিত তা নির্ধারণ করতে ব্যবহৃত হয়। এখানে আমরা কিভাবে সংখ্যাগরিষ্ঠ মানে এইচটিএমএল পেজ CGI প্রোগ্রামকে কল করে। ট্যাগ বৈশিষ্ট্যগুলি প্রোগ্রামের নাম এবং অবস্থান নির্দিষ্ট করে - হয় স্থানীয়ভাবে বা একটি সম্পূর্ণ URL হিসাবে, ব্যবহৃত এনকোডিংয়ের ধরন এবং প্রোগ্রাম দ্বারা ব্যবহৃত ডেটা মুভমেন্ট পদ্ধতি।

পরবর্তী লাইন ট্যাগের জন্য নির্দিষ্টকরণ দেখায় :

< ACTION FORM = "url" METHOD = ENCTYPE = "..." >

ENCTYPE বৈশিষ্ট্য একটি বিশেষ ভূমিকা পালন করে না এবং সাধারণত ট্যাগের সাথে অন্তর্ভুক্ত করা হয় না . ENCTYPE ট্যাগ সংক্রান্ত বিস্তারিত তথ্য অধ্যায় 3-এ দেওয়া হয়েছে। ENCTYPE ব্যবহার করার একটি উপায় অধ্যায় 14-এ দেখানো হয়েছে, "ব্র্যান্ডেড এক্সটেনশন।"

ACTION অ্যাট্রিবিউট CGI প্রোগ্রামের URL বোঝায়। একবার ব্যবহারকারী ফর্মটি পূরণ করে এবং তথ্য প্রদান করে, সমস্ত তথ্য এনকোড করা হয় এবং CGI প্রোগ্রামে স্থানান্তরিত হয়। সিজিআই প্রোগ্রাম নিজেই তথ্য ডিকোডিং এবং প্রক্রিয়াকরণের সমস্যা সমাধান করে; এই দিকটি এই অধ্যায়ে পরে "ব্রাউজার থেকে ইনপুট গ্রহণ করা" এ আলোচনা করা হয়েছে।

অবশেষে, METHOD বৈশিষ্ট্য বর্ণনা করে কিভাবে CGI প্রোগ্রাম ইনপুট গ্রহণ করা উচিত। দুটি পদ্ধতি, GET এবং POST, কিভাবে তারা CGI প্রোগ্রামে তথ্য পাঠায় তার মধ্যে পার্থক্য। উভয়ই "ব্রাউজার থেকে ইনপুট গ্রহণ করা" এ আলোচনা করা হয়েছে।

ব্রাউজার যাতে ব্যবহারকারীর ইনপুট দেয় তার জন্য, সমস্ত ফর্ম ট্যাগ এবং তথ্য অবশ্যই ট্যাগ দ্বারা বেষ্টিত হতে হবে . সমাপ্তি ট্যাগ ভুলবেন না

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

ট্যাগ

আপনি ট্যাগ ব্যবহার করে টেক্সট ইনপুট বার, রেডিও বোতাম, চেকবক্স এবং ইনপুট গ্রহণের অন্যান্য উপায় তৈরি করতে পারেন . এই বিভাগে শুধুমাত্র টেক্সট ইনপুট ক্ষেত্র কভার. এই ক্ষেত্রটি বাস্তবায়ন করতে, ট্যাগটি ব্যবহার করুন নিম্নলিখিত বৈশিষ্ট্য সহ:

< INPUT TYPE=text NAME = "... " VALUE = "... " SIZE = MAXLENGTH = >

NAME হল ভেরিয়েবলের সাংকেতিক নাম যাতে ব্যবহারকারীর লেখা মান থাকে। আপনি যদি VALUE অ্যাট্রিবিউটে পাঠ্য অন্তর্ভুক্ত করেন, তাহলে সেই পাঠ্যটি পাঠ্য ইনপুট ক্ষেত্রে ডিফল্ট হিসাবে স্থাপন করা হবে। SIZE অ্যাট্রিবিউট আপনাকে ইনপুট ক্ষেত্রের অনুভূমিক দৈর্ঘ্য নির্দিষ্ট করতে দেয় কারণ এটি ব্রাউজার উইন্ডোতে প্রদর্শিত হবে। অবশেষে, MAXLENGTH সংজ্ঞায়িত করে সর্বোচ্চ সংখ্যাঅক্ষর যা ব্যবহারকারী ক্ষেত্রে প্রবেশ করতে পারেন। দয়া করে মনে রাখবেন যে VALUE, SIZE, MAXLENGTH বৈশিষ্ট্যগুলি ঐচ্ছিক৷

ফর্ম জমা

আপনার যদি একটি ফর্মের মধ্যে শুধুমাত্র একটি পাঠ্য ক্ষেত্র থাকে, তাহলে ব্যবহারকারী কেবল কীবোর্ডে তথ্য টাইপ করে এবং এন্টার টিপে ফর্মটি জমা দিতে পারেন৷ অন্যথায়, ব্যবহারকারীর কাছে তথ্য উপস্থাপনের জন্য অন্য কোনো উপায় থাকতে হবে। ব্যবহারকারী নিম্নলিখিত ট্যাগ সহ একটি জমা বোতাম ব্যবহার করে তথ্য জমা দেয়:

< Input type=submit >

এই ট্যাগটি আপনার ফর্মের ভিতরে একটি জমা বোতাম তৈরি করে। যখন ব্যবহারকারী ফর্মটি পূরণ করা শেষ করে, তখন সে জমা বোতামে ক্লিক করে ফর্মের ACTION বৈশিষ্ট্য দ্বারা নির্দিষ্ট URL-এ এর বিষয়বস্তু জমা দিতে পারে৷

ব্রাউজার থেকে ইনপুট গ্রহণ করা হচ্ছে

উপরে একটি CGI প্রোগ্রাম রেকর্ড করার উদাহরণ ছিল যা সার্ভার থেকে ব্রাউজারে তথ্য পাঠায়। বাস্তবে, একটি CGI প্রোগ্রাম যা শুধুমাত্র ডেটা আউটপুট করে তার অনেক অ্যাপ্লিকেশন নেই (কিছু উদাহরণ অধ্যায় 4 এ দেওয়া হয়েছে)। CGI এর আরও গুরুত্বপূর্ণ ক্ষমতা হল ব্রাউজার থেকে তথ্য গ্রহণ করা - বৈশিষ্ট্য যা ওয়েবকে তার ইন্টারেক্টিভ চরিত্র দেয়।

CGI প্রোগ্রাম ব্রাউজার থেকে দুই ধরনের তথ্য পায়।

  • প্রথমত, এটি ব্রাউজার (এর ধরন, এটি কী দেখতে পারে, হোস্ট হোস্ট এবং আরও অনেক কিছু), সার্ভার (এর নাম এবং সংস্করণ, এটির এক্সিকিউশন পোর্ট এবং আরও অনেক কিছু) এবং CGI প্রোগ্রাম সম্পর্কে বিভিন্ন তথ্য পায়। নিজেই (প্রোগ্রামের নাম এবং এটি কোথায় অবস্থিত)। সার্ভার এই সমস্ত তথ্য পরিবেশের ভেরিয়েবলের মাধ্যমে CGI প্রোগ্রামকে দেয়।
  • দ্বিতীয়ত, CGI প্রোগ্রাম ব্যবহারকারীর ইনপুট গ্রহণ করতে পারে। এই তথ্য, ব্রাউজার দ্বারা এনকোড করার পরে, হয় একটি পরিবেশ পরিবর্তনশীল (GET পদ্ধতি) বা স্ট্যান্ডার্ড ইনপুট (stdin - POST পদ্ধতি) মাধ্যমে পাঠানো হয়।

এনভায়রনমেন্ট ভেরিয়েবল

প্রশিক্ষণের সময় এবং ডিবাগিং উভয় ক্ষেত্রেই একটি CGI প্রোগ্রামে কী পরিবেশের ভেরিয়েবল উপলব্ধ তা জানা দরকারী। সারণি 2.2 কিছু উপলব্ধ CGI এনভায়রনমেন্ট ভেরিয়েবলের তালিকা করে। আপনি একটি CGI প্রোগ্রামও লিখতে পারেন যা একটি ওয়েব ব্রাউজারে পরিবেশের ভেরিয়েবল এবং তাদের মানগুলি আউটপুট করে।

টেবিল 2.2। কিছু গুরুত্বপূর্ণ CGI এনভায়রনমেন্ট ভেরিয়েবল এনভায়রনমেন্ট ভেরিয়েবল উদ্দেশ্য ক্লায়েন্ট মেশিনের REMOTE_ADDR আইপি ঠিকানা। REMOTE_HOST ক্লায়েন্ট মেশিনের হোস্ট। HTTP _ACCEPT MIME ডেটা প্রকারের তালিকা করে যা ব্রাউজার ব্যাখ্যা করতে পারে। HTTP _USER_AGENT ব্রাউজার তথ্য (ব্রাউজারের ধরন, সংস্করণ নম্বর, অপারেটিং সিস্টেম, ইত্যাদি)। REQUEST_METHOD পান বা পোস্ট করুন৷ CONTENT_LENGTH POST এর মাধ্যমে পাঠানো হলে ইনপুটের আকার। যদি কোন ইনপুট না থাকে বা যদি GET পদ্ধতি ব্যবহার করা হয়, এই প্যারামিটারটি অনির্ধারিত। QUERY_STRING ইনপুট তথ্য ধারণ করে যখন এটি GET পদ্ধতি ব্যবহার করে পাস করা হয়। PATH_INFO ব্যবহারকারীকে CGI কমান্ড লাইন থেকে একটি পথ নির্দিষ্ট করার অনুমতি দেয় (উদাহরণস্বরূপ, http://hostname/cgi-bin/programname/path)। PATH_TRANSLATED PATH_INFO-এর আপেক্ষিক পথটিকে সিস্টেমের একটি প্রকৃত পাথে অনুবাদ করে।

পরিবেশ ভেরিয়েবল প্রদর্শন করে এমন একটি CGI অ্যাপ্লিকেশন লিখতে, আপনাকে দুটি জিনিস কীভাবে করতে হবে তা জানতে হবে:

  • সমস্ত পরিবেশ ভেরিয়েবল এবং তাদের সংশ্লিষ্ট মান সংজ্ঞায়িত করুন।
  • ব্রাউজারে ফলাফল প্রিন্ট করুন।

আপনি ইতিমধ্যে জানেন কিভাবে করতে হবে শেষ অপারেশন. পার্লে, এনভায়রনমেন্ট ভেরিয়েবলগুলি অ্যাসোসিয়েটিভ অ্যারে %ENV-তে সংরক্ষণ করা হয়, যা এনভায়রনমেন্ট ভেরিয়েবলের নাম দ্বারা প্রবর্তিত হয়। তালিকা 2.3-এ env.cgi রয়েছে, একটি পার্ল প্রোগ্রাম যা আমাদের লক্ষ্য পূরণ করে।

তালিকা 2.3. একটি পার্ল প্রোগ্রাম, env.cgi, যা সমস্ত CGI এনভায়রনমেন্ট ভেরিয়েবল প্রিন্ট করে।

#!/usr/local/bin/perl প্রিন্ট "Content-type: text/html\n\n"; ছাপা " \ n "; মুদ্রণ " সিজিআই পরিবেশ\ n "; মুদ্রণ "\ n "; মুদ্রণ " \ n "; মুদ্রণ "

সিজিআই পরিবেশ

\n"; foreach $env_var (কী %ENV) ( মুদ্রণ " $env_var= $ENV($env_var)
\ n ";) মুদ্রণ " \n";

একটি অনুরূপ প্রোগ্রাম সি তে লেখা যেতে পারে; সম্পূর্ণ কোডটি তালিকা 2.4-এ রয়েছে।

তালিকা 2.4. Env.cgi.c তে C. /* env.cgi.c */ # অন্তর্ভুক্ত বহিরাগত চর **পরিবেশ; int main() ( char **p = environ; printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" সিজিআই পরিবেশ\n"); printf("\n"); printf(" \n"); printf("

সিজিআই পরিবেশ

\n"); যখন(*p != NULL) printf("%s
\n",*p++); printf(" \n");)

পান বা পোস্ট?

GET এবং POST পদ্ধতির মধ্যে পার্থক্য কি? GET QUERY_STRING পরিবেশ ভেরিয়েবলের মাধ্যমে এনকোড করা ইনপুট স্ট্রিংটি পাস করে, যখন POST এটিকে stdin এর মাধ্যমে পাস করে। POST হল পছন্দের পদ্ধতি, বিশেষ করে প্রচুর ডেটা সহ ফর্মগুলির জন্য, কারণ পাঠানো তথ্যের পরিমাণের উপর কোনও বিধিনিষেধ নেই, GET পদ্ধতিতে মিডিয়া স্থানের পরিমাণ সীমিত। GET, তবে, নিশ্চিত দরকারী সম্পত্তি; এটি অধ্যায় 5, ইনপুটে বিস্তারিতভাবে কভার করা হয়েছে।

কোন পদ্ধতি ব্যবহার করা হবে তা নির্ধারণ করতে, CGI প্রোগ্রাম পরিবেশ পরিবর্তনশীল REQUEST_METHOD পরীক্ষা করে, যা GET বা POST-এ সেট করা হবে। যদি এটি POST-এ সেট করা থাকে, তাহলে এনকোড করা তথ্যের দৈর্ঘ্য CONTENT_LENGTH পরিবেশ ভেরিয়েবলে সংরক্ষণ করা হয়।

কোডেড ইনপুট

যখন একজন ব্যবহারকারী একটি ফর্ম জমা দেয়, ব্রাউজার প্রথমে সার্ভারে এবং তারপর CGI অ্যাপ্লিকেশনে পাঠানোর আগে তথ্য এনকোড করে। আপনি যখন ট্যাগ ব্যবহার করেন , প্রতিটি ক্ষেত্রের একটি প্রতীকী নাম দেওয়া হয়। ব্যবহারকারীর দ্বারা প্রবেশ করা মান ভেরিয়েবলের মান হিসাবে উপস্থাপিত হয়।

এটি নির্ধারণ করতে, ব্রাউজারটি একটি URL এনকোডিং স্পেসিফিকেশন ব্যবহার করে, যা নিম্নরূপ বর্ণনা করা যেতে পারে:

  • অ্যাম্পারস্যান্ড (&) দিয়ে বিভিন্ন ক্ষেত্র আলাদা করে।
  • সমান চিহ্ন (=) সহ নাম এবং মানগুলিকে বাম দিকের নাম এবং ডানদিকে মান দিয়ে আলাদা করে।
  • প্লাস চিহ্ন (+) দিয়ে স্পেস প্রতিস্থাপন করে।
  • সমস্ত "অস্বাভাবিক" অক্ষরকে একটি শতাংশ চিহ্ন (%) দিয়ে প্রতিস্থাপন করে তারপর অক্ষরের জন্য একটি দুই-সংখ্যার হেক্স কোড।

আপনার চূড়ান্ত এনকোড করা স্ট্রিং নিম্নলিখিত অনুরূপ হবে:

Name1=value1&name2=value2&name3=value3 ...

দ্রষ্টব্য: URL এনকোডিংয়ের জন্য নির্দিষ্টকরণ RFC1738 এ পাওয়া যায়।

উদাহরণ স্বরূপ, ধরুন আপনার কাছে একটি ফর্ম ছিল যা নাম এবং বয়স জানতে চেয়েছিল৷ এই ফর্মটি প্রদর্শন করার জন্য যে HTML কোডটি ব্যবহার করা হয়েছিল তা তালিকা 2.5-এ দেখানো হয়েছে।

তালিকা 2.5। নাম এবং বয়স ফর্ম প্রদর্শনের জন্য HTML কোড।

নাম এবং বয়স

আপনার নাম প্রবেশ করুন:

আপনার বয়স প্রবেশ:

ধরা যাক ব্যবহারকারী নামের ক্ষেত্রে Joe Schmoe এবং বয়স ক্ষেত্রে 20 প্রবেশ করে। ইনপুটটি ইনপুট স্ট্রিং এ এনকোড করা হবে।

নাম=Joe+Schmoe&age=20

পার্সিং ইনপুট

এই তথ্যটি কার্যকর হওয়ার জন্য, আপনাকে এমন কিছু তথ্য ব্যবহার করতে হবে যা আপনার CGI প্রোগ্রামগুলি ব্যবহার করতে পারে। ইনপুট পার্স করার কৌশলগুলি অধ্যায় 5 এ কভার করা হয়েছে। অনুশীলনে, আপনাকে কখনই ইনপুট পার্স করতে হবে তা নিয়ে ভাবতে হবে না, কারণ অনেক বিশেষজ্ঞ ইতিমধ্যেই লাইব্রেরি লিখেছেন যেগুলি পার্সিং করে, প্রত্যেকের কাছে অ্যাক্সেসযোগ্য। এই ধরনের দুটি লাইব্রেরি এই অধ্যায়ে নিম্নলিখিত বিভাগে উপস্থাপন করা হয়েছে: পার্লের জন্য cgi -lib.pl (স্টিভ ব্রেনার লিখেছেন) এবং C এর জন্য cgihtml (আমার দ্বারা লিখিত)।

বিভিন্ন ভাষায় লেখা বেশিরভাগ লাইব্রেরির সাধারণ লক্ষ্য হল একটি এনকোড করা স্ট্রিং পার্স করা এবং নাম ও মান জোড়াকে ডেটা স্ট্রাকচারে রাখা। পাওয়া যায় সুস্পষ্ট সুবিধাপার্লের মতো বিল্ট-ইন ডেটা স্ট্রাকচার রয়েছে এমন একটি ভাষা ব্যবহার করার ক্ষেত্রে; যাইহোক, অধিকাংশ ভাষা গ্রন্থাগার নিম্ন স্তরেরটাইপ C এবং C++ ডেটা স্ট্রাকচার এবং রুটিন নির্বাহ করা জড়িত।

লাইব্রেরি সম্বন্ধে সম্পূর্ণ ধারণা অর্জনের প্রয়োজন নেই; CGI প্রোগ্রামারের কাজকে সহজ করার জন্য তাদের টুল হিসাবে কীভাবে ব্যবহার করতে হয় তা শেখা আরও গুরুত্বপূর্ণ।

Cgi-lib.pl

Cgi-lib.pl পার্ল অ্যাসোসিয়েটিভ অ্যারে ব্যবহার করে। &ReadParse ফাংশন ইনপুট স্ট্রিং পার্স করে এবং নাম অনুসারে প্রতিটি নাম/মান জোড়া প্রবেশ করে। উদাহরণস্বরূপ, এইমাত্র উপস্থাপিত "নাম/বয়স" ইনপুট স্ট্রিংটি ডিকোড করার জন্য সংশ্লিষ্ট পার্ল স্ট্রিংগুলি হবে

&রিডপার্স (*ইনপুট);

এখন, "নাম" এর জন্য সন্নিবেশিত মান দেখতে, আপনি সহযোগী অ্যারে $ইনপুট("নাম") অ্যাক্সেস করতে পারেন। একইভাবে, "বয়স" এর মান অ্যাক্সেস করতে আপনাকে $ইনপুট ("বয়স") পরিবর্তনশীল দেখতে হবে।

সিজিএইচটিএমএল

C এর কোনো অন্তর্নির্মিত ডেটা স্ট্রাকচার নেই, তাই cgihtml তার CGI পার্সিং রুটিনের সাথে ব্যবহারের জন্য নিজস্ব লিঙ্কলিস্ট প্রয়োগ করে। এটি নিম্নরূপ এন্ট্রি টাইপ গঠন সংজ্ঞায়িত করে:

Typedef struct ( Char * নাম; Char * মান; ) এন্ট্রি টাইপ;

cgihtml ব্যবহার করে C-তে ইনপুট স্ট্রিং "নাম/বয়স" পার্স করতে, নিম্নলিখিতটি ব্যবহার করা হয়:

/* ইনপুট */ তালিকা ইনপুট নামে একটি লিঙ্কযুক্ত তালিকা ঘোষণা করুন; /* লিঙ্ক করা তালিকায় ইনপুট এবং অবস্থান পার্স করুন */ read_cgi_input(&input);

বয়সের তথ্য অ্যাক্সেস করতে, আপনি হয় তালিকাটি ম্যানুয়ালি পার্স করতে পারেন অথবা উপলব্ধ cgi _val() ফাংশন ব্যবহার করতে পারেন।

#অন্তর্ভুক্ত #অন্তর্ভুক্ত Char *age = malloc(sizeof(char)*strlen(cgi_val(ইনপুট, "বয়স")) + 1); Strcpy(বয়স, cgi_val(ইনপুট, "বয়স"));

"বয়স" মান এখন বয়স স্ট্রিং এ সংরক্ষণ করা হয়.

দ্রষ্টব্য: একটি সাধারণ অ্যারে ব্যবহার করার পরিবর্তে (যেমন char age ;), আমি গতিশীলভাবে স্ট্রিং বয়সের জন্য মেমরির স্থান বরাদ্দ করছি। যদিও এটি প্রোগ্রামিংকে আরও কঠিন করে তোলে, তবুও এটি নিরাপত্তার দৃষ্টিকোণ থেকে গুরুত্বপূর্ণ। এটি অধ্যায় 9 এ আরও বিশদে আলোচনা করা হয়েছে।

একটি সাধারণ CGI প্রোগ্রাম

আপনি nameage.cgi নামে একটি CGI প্রোগ্রাম লিখতে যাচ্ছেন যা নাম/বয়স ফর্ম পরিচালনা করে। ডেটা প্রসেসিং (যাকে আমি সাধারণত "এর মধ্যে স্টাফ" বলি) ন্যূনতম। Nameage.cgi সহজভাবে ইনপুট ডিকোড করে এবং ব্যবহারকারীর নাম এবং বয়স প্রদর্শন করে। যদিও এই ধরনের একটি টুলের জন্য খুব বেশি ব্যবহার নেই, এটি CGI প্রোগ্রামিংয়ের সবচেয়ে গুরুত্বপূর্ণ দিকটি প্রদর্শন করে: ইনপুট এবং আউটপুট।

আপনি "নাম এবং বয়স" ক্ষেত্রগুলিকে কল করে উপরের মতো একই ফর্ম ব্যবহার করুন৷ দৃঢ়তা এবং দক্ষতা সম্পর্কে চিন্তা করবেন না এখনও; সহজ উপায়ে বিদ্যমান সমস্যা সমাধান করুন। পার্ল এবং সি সমাধানগুলি যথাক্রমে তালিকা 2.6 এবং 2.7 এ দেখানো হয়েছে।

তালিকা 2.6। পার্লে Nameage.cgi

#!/usr/local/bin/perl # nameage.cgi এর প্রয়োজন "cgi-lib.pl" &ReadParse(*input); প্রিন্ট "কন্টেন্ট-টাইপ: টেক্সট/এইচটিএমএল\r\n\r\n"; ছাপা " \ n "; মুদ্রণ " নাম এবং বয়স\ n "; মুদ্রণ "\ n "; মুদ্রণ " \n"; প্রিন্ট করুন "হ্যালো, " . $input("নাম")। "। আপনি\n"; $input("বয়স") প্রিন্ট করুন। " বছর বয়সী।

\ n "; মুদ্রণ " \n";

তালিকা 2.7। nameage.cgi তে সি

/* nameage.cgi.c */ # অন্তর্ভুক্ত #ইনক্লুড "cgi-lib.h" int main() ( তালিকা ইনপুট; read_cgi_input(&input); printf("Content-Type: text/html\r\n\r\n"); printf(" \n"); printf(" নাম এবং বয়স\n"); printf("\n"); printf(" \n"); printf("হ্যালো, %s। আপনি\n",cgi_val(ইনপুট,"নাম")); printf("%s বছর বয়সী।

\n",cgi_val(ইনপুট,"বয়স")); printf(" \n");)

অনুগ্রহ করে মনে রাখবেন যে এই দুটি প্রোগ্রাম প্রায় সমতুল্য। তারা উভয়ই পার্সিং রুটিন ধারণ করে যা শুধুমাত্র একটি লাইন দখল করে এবং সম্পূর্ণ ইনপুট প্রক্রিয়া করে (সংশ্লিষ্ট লাইব্রেরি রুটিনগুলিকে ধন্যবাদ)। আউটপুটটি মূলত আপনার প্রধান হ্যালো, ওয়ার্ল্ড!

ফর্মটি পূরণ করে এবং জমা বোতামে ক্লিক করে প্রোগ্রামটি চালানোর চেষ্টা করুন।

সাধারণ প্রোগ্রামিং কৌশল

আপনি এখন সিজিআই প্রোগ্রামিংয়ের জন্য প্রয়োজনীয় সমস্ত মৌলিক নীতিগুলি জানেন। একবার আপনি বুঝতে পারেন কিভাবে CGI তথ্য গ্রহণ করে এবং কীভাবে এটি ব্রাউজারে ফেরত পাঠায়, আপনার চূড়ান্ত পণ্যের প্রকৃত গুণমান আপনার সাধারণ প্রোগ্রামিং ক্ষমতার উপর নির্ভর করে। যথা, যখন আপনি CGI প্রোগ্রাম করেন (অথবা যে কোনও কিছুর জন্য), নিম্নলিখিত গুণাবলী মাথায় রাখুন:

  • সরলতা
  • দক্ষতা
  • বহুমুখিতা

প্রথম দুটি গুণ বেশ সাধারণ: আপনার কোড যতটা সম্ভব পঠনযোগ্য এবং দক্ষ করার চেষ্টা করুন। বহুমুখিতা অন্যান্য অ্যাপ্লিকেশনের তুলনায় CGI প্রোগ্রামগুলিতে বেশি প্রযোজ্য। আপনি যখন নিজের CGI প্রোগ্রামগুলি তৈরি করা শুরু করবেন, তখন আপনি শিখবেন যে বেশ কয়েকটি মৌলিক অ্যাপ্লিকেশন রয়েছে যা প্রত্যেকে তৈরি করতে চায়। উদাহরণস্বরূপ, একটি CGI প্রোগ্রামের সবচেয়ে সাধারণ এবং সুস্পষ্ট কাজগুলির মধ্যে একটি হল একটি ফর্ম প্রক্রিয়া করা এবং ফলাফলগুলি একটি নির্দিষ্ট প্রাপককে ইমেল করা। আপনার একাধিক পৃথক ফর্ম প্রক্রিয়া করা হতে পারে, প্রতিটি আলাদা প্রাপকের সাথে। প্রতিটি পৃথক ফর্মের জন্য একটি CGI প্রোগ্রাম লেখার পরিবর্তে, আপনি আরও লিখে সময় বাঁচাতে পারেন সাধারণ প্রোগ্রাম CGI যা সব ধরনের জন্য কাজ করে।

CGI-এর সমস্ত মৌলিক দিকগুলি কভার করে, CGI প্রোগ্রামিং শুরু করার জন্য আমি আপনাকে যথেষ্ট তথ্য দিয়েছি। যাইহোক, একজন কার্যকরী CGI ডেভেলপার হওয়ার জন্য, আপনাকে CGI কিভাবে সার্ভার এবং ব্রাউজারের সাথে যোগাযোগ করে সে সম্পর্কে গভীরভাবে বুঝতে হবে। এই বইয়ের বাকি অংশে এই অধ্যায়ে সংক্ষিপ্তভাবে উল্লেখ করা বিষয়গুলির পাশাপাশি অ্যাপ্লিকেশন ডেভেলপমেন্ট কৌশল এবং প্রোটোকলের সুবিধা এবং সীমাবদ্ধতাগুলি বিস্তারিতভাবে কভার করা হয়েছে।

সারসংক্ষেপ

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

প্রতি এই মুহূর্তেআপনি মোটামুটি সহজে প্রোগ্রামিং CGI অ্যাপ্লিকেশনের হ্যাং পেতে সক্ষম হওয়া উচিত। এই বইটির অবশিষ্টাংশ আরও উন্নত এবং জটিল অ্যাপ্লিকেশনের জন্য স্পেসিফিকেশন, টিপস এবং প্রোগ্রামিং কৌশল সম্পর্কে আরও বিশদে যায়।

স্পষ্ট রাশিয়ান ভাষায় ই-কমার্স। অনলাইন ব্যবসা কিভাবে কাজ করে?

ইদানীং, অনলাইন ট্রেডিং সম্পর্কিত আরও অনেক প্রকল্প রয়েছে। এই দিকটি অধ্যয়ন করার সময়, আমি সাধারণ কিছু খুঁজে পাইনি এবং পরিষ্কার বর্ণনাপ্রক্রিয়া অতএব, আমি একটি চিট শীটের মতো কিছু তৈরি করার সিদ্ধান্ত নিয়েছি যা আপনি সর্বদা ই-কমার্সের মতো একটি ক্ষেত্রে পদ্ধতিটি বোঝার জন্য উল্লেখ করতে পারেন।

আমি অবিলম্বে একটি রিজার্ভেশন করব যা আমি প্রসেস এবং চ্যানেলগুলিতে ফোকাস করেছি যা ক্লায়েন্ট আনতে সহায়তা করে।

ই-কমার্স: এটা কি?

বিভিন্ন উত্স থেকে সংজ্ঞা ইন্টারনেটের মাধ্যমে পণ্য বা পরিষেবা বিক্রি সম্পর্কে কিছু বলে। সহজ কথায়ই-কমার্স হল যেকোনো অনলাইন কার্যকলাপ যেখানে টাকা উপস্থিত হয়।

কেনাকাটা, বিক্রয়, বীমা, ব্যাংকিং, ইলেকট্রনিক মানি, সবকিছু এখানে। এটি নিন এবং স্বাক্ষর করুন।

লক্ষ্য থেকে

সমস্যাটি বোঝার জন্য, আমি একেবারে শেষ থেকে পথ শুরু করার পরামর্শ দিই। কোন ব্যবসার লক্ষ্য কি? এটা ঠিক, অর্থ উপার্জন. সুতরাং, কোন পণ্য কল্পনা করুন, উদাহরণস্বরূপ, সিলিকন মোজা। কেন না!

আমি প্রথম যে জিনিসটি মাথায় এসেছিল তা নিয়েছিলাম, দেখা গেল এরকম কিছু ছিল...

আমাদের কাজ এই মোজা উপর অর্থ উপার্জন করা হয়. আমরা ইন্টারনেট নিয়ে ভাবছি। হুম...কেন একটি ওয়েবসাইট তৈরি করবেন না এবং এভাবেই বিক্রি হবে, শুধু আমাকে মালদ্বীপ রাখুন! কিন্তু এটা যে সহজ না.

আমি সত্যিই আঁকতে পছন্দ করি। এটা বুঝতে সাহায্য করে বিভিন্ন প্রক্রিয়া. চল অঙ্কন করি?!

এখন পর্যন্ত আমাদের মডেল এই মত দেখায়. আমরা মোজা নিই, ইন্টারনেটে রাখি এবং টাকা পাই। এই সহজভাবে মহান! আপনার চোখ জ্বলছে, আপনার হাতের তালু ঘামছে এবং আপনি ইতিমধ্যে ব্যবসায় নামতে চান। কিন্তু আপনি একটি ওয়েবসাইট বা একটি বিক্রয় প্ল্যাটফর্ম করতে হবে?

বিক্রয়ের জন্য ওয়েবসাইট বা প্ল্যাটফর্ম

ওয়ার্ল্ড ওয়াইড ওয়েবে আপনার পণ্য রাখার জন্য বিভিন্ন সমাধান রয়েছে। আপনি আপনার নিজস্ব ওয়েবসাইট তৈরি করতে পারেন বা তৃতীয় পক্ষের প্ল্যাটফর্ম ব্যবহার করতে পারেন (গ্রুপ, সামাজিক নেটওয়ার্কের পৃষ্ঠা, বার্তা বোর্ড ইত্যাদি)। এর সাইটে থামানো যাক.

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

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

পেমেন্ট সিস্টেম

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

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

যে সব মনে হবে. একটি ওয়েবসাইট আছে, প্রোডাক্ট কার্ডও আছে, এমনকি "কিনুন" বোতামটিও কাজ করে, কিন্তু কিছু অনুপস্থিত... ক্রেতাদের কোন প্রবাহ নেই যারা কিনবে।

গ্রাহক প্রবাহ

কোথায়: CAC = একটি নতুন গ্রাহক অর্জনের খরচ। MCC (বিপণন প্রচারের খরচ) = গ্রাহকদের আকৃষ্ট করার লক্ষ্যে বিপণন ব্যয়ের মোট খরচ (কিন্তু তাদের ধরে রাখা নয়)। W (মজুরি) = মার্কেটার এবং সেলস ম্যানেজারদের বেতন। S (সফ্টওয়্যার) = বিজ্ঞাপন এবং বিক্রয়ে ব্যবহৃত খরচ সফটওয়্যার(উদাহরণস্বরূপ, ব্যবহৃত বিক্রয় প্ল্যাটফর্ম, বিপণন অটোমেশন, A/B পরীক্ষা, বিশ্লেষণ পরিষেবা, ইত্যাদি)। PS (পেশাদার পরিষেবা) = বিপণন এবং বিক্রয় বিভাগগুলিতে প্রদত্ত পেশাদার পরিষেবার খরচ (ডিজাইন, পরামর্শ, ইত্যাদি)। O (অন্যান্য) = মার্কেটিং এবং বিক্রয় বিভাগ সম্পর্কিত অন্যান্য ওভারহেড খরচ। CA (গ্রাহক অর্জিত) = মোট আকৃষ্ট গ্রাহকের সংখ্যা।

কিন্তু আমরা অবশ্যই ক্লায়েন্টের গুণমান সম্পর্কে ভুলবেন না LTV এখানে সাহায্য করবে;

গুরুত্বপূর্ণ মেট্রিক্স: LTV

লাইভ টাইম ভ্যালু, গ্রাহকের জীবনচক্র, ই-কমার্সের আরেকটি সূচক যা বিবেচনায় নেওয়া দরকার। এটি দেখায় যে একজন ক্লায়েন্ট গড়ে কত আয় আনে। গণনার বিভিন্ন পন্থা আছে, আমি লাভের উপর ভিত্তি করে আসলটিকে বেছে নিয়েছি, সবচেয়ে নির্ভুল হিসেবে।

এটি প্রতিটি স্বতন্ত্র গ্রাহকের জন্য সমগ্র ক্রয়ের ইতিহাসের মোট আয়ের সমষ্টি। লেনদেন N-এ সমস্ত গ্রাহকের ক্রয় (লেনদেনের) যোগফল যোগ করুন, যেখানে লেনদেন N হল গ্রাহকের আপনার কোম্পানির সাথে করা শেষ ক্রয়। আপনার যদি সমস্ত গ্রাহক লেনদেনের ডেটা অ্যাক্সেস থাকে, তাহলে আপনি এক্সেল ব্যবহার করে সহজেই এটি গণনা করতে পারেন।

LTV = (লেনদেন 1 + লেনদেন 2 + লেনদেন 3... + লেনদেন N) x আয়ের লাভের অংশ।

এলটিভির উপর ভিত্তি করে গণনা মোট লাভ, শেষ পর্যন্ত একজন গ্রাহক আপনার কোম্পানিতে প্রকৃত মুনাফা দেখায়। এটি গ্রাহক পরিষেবার খরচ, ধরে রাখার খরচ, আকর্ষণের খরচ ইত্যাদি বিবেচনা করে। ফলাফল পৃথক ডেটার উপর ভিত্তি করে গণনার একটি সম্পূর্ণ জটিল। সময়ের সাথে সাথে প্রতি গ্রাহকের মোট মুনাফা আপনাকে আপনার গ্রাহকদের আজকের মুনাফা সম্পর্কে সঠিক ধারণা দেবে।

অন্যান্য পন্থা এ পাওয়া যাবে.

গুরুত্বপূর্ণ সূচক: CAC এবং LTV অনুপাত

একটি ব্যবসার কার্যকারিতা বোঝার জন্য, উল্লেখিত দুটি CAC:LTV অনুপাতের অনুপাত দেখা খুবই গুরুত্বপূর্ণ৷

  • 1:1-এর কম - আপনি দেউলিয়া হওয়ার দিকে পূর্ণ গতিতে ছুটে চলেছেন৷
  • 1:1 - আপনি প্রতিটি আকৃষ্ট ক্লায়েন্টের জন্য অর্থ হারাবেন।
  • 1:2 – এটা ভাল মনে হচ্ছে, কিন্তু মনে হচ্ছে আপনি যথেষ্ট অর্থ বিনিয়োগ করছেন না এবং আপনি দ্রুত বিকাশ করতে পারেন। আরো আক্রমনাত্মক গ্রাহক অধিগ্রহণ প্রচারাভিযান চালু করুন এবং 1:3 এর কাছাকাছি হার অর্জন করুন।
  • 1:3 - আদর্শ অনুপাত। আপনার একটি সমৃদ্ধ ব্যবসা এবং একটি শক্তিশালী ব্যবসায়িক মডেল আছে।

গুরুত্বপূর্ণ সূচক: ROI ভুলবেন না

যেমনটি আমরা উপরে আলোচনা করেছি, ই-কমার্সে আপনাকে স্পষ্টভাবে বুঝতে হবে যে এটি একটি অধিগ্রহণ চ্যানেল ব্যবহার করা লাভজনক কিনা। LTV এবং CAC ছাড়াও, আরেকটি গুরুত্বপূর্ণ সূচক রয়েছে: ROI। এটি দেখায় যে আপনার বিনিয়োগ, বিজ্ঞাপনে আমাদের ক্ষেত্রে, পরিশোধ করেছে কিনা। এটাই। কত 1 বিনিয়োগ রুবেল শেষ পর্যন্ত আমাদের আনা.

গণনার জন্য একটি খুব সহজ সূত্র ব্যবহার করা হয়:

যেখানে "ক্যাম্পেইন রেভিনিউ" হল চ্যানেল থেকে আয় এবং আপনার পণ্যের খরচের মধ্যে পার্থক্য। এবং লাভ গণনা করতে, বিজ্ঞাপন খরচ বিয়োগ.

সুতরাং, একটি আরো বিস্তারিত সূত্র এই মত দেখাবে:

ROI = (চ্যানেল আয় - খরচ) - বিজ্ঞাপন খরচ / বিজ্ঞাপন খরচ x 100%

গণনার সাথে আরও বিস্তারিত উদাহরণ পড়ুন। আসলে, এই সহজ সূত্রটি একই এক্সেল টেবিলে স্থাপন করা হয়েছে, যেখানে সবকিছু স্বয়ংক্রিয়ভাবে গণনা করা হয়।

আমরা যে তিনটি সূচক নিয়ে আলোচনা করেছি তা ই-কমার্সে গুরুত্বপূর্ণ। তাদের প্রতিটি আপনাকে আপনার প্রবাহে বাধা খুঁজে পেতে এবং তাদের সাথে কাজ করার অনুমতি দেয়। ব্যবসার বৃদ্ধির সম্ভাবনা এখানেই। আমি মোজা সঙ্গে আমাদের মডেল একটু আরো যোগ.

সবকিছুকে একটি উপাদানের মধ্যে মাপসই করা অসম্ভব, এবং কে এটি এত দিন পড়বে? পরে আমি ই-কমার্সের সূক্ষ্মতা সম্পর্কে একটি পৃথক নির্দেশিকা তৈরি করব যা বিক্রয়ে হস্তক্ষেপ করতে পারে।

মোট

সামগ্রিকভাবে, আপনি এখন অনলাইন ট্রেডিং বা ই-কমার্স সম্পর্কে একটি সাধারণ ধারণা পেয়েছেন। আরও, যেমন তারা বলে: "শয়তান বিশদে রয়েছে।" প্রতিটি চ্যানেল আলাদাভাবে অধ্যয়ন করুন, কর্মক্ষমতা সূচক গণনা করুন এবং ছোট জিনিসগুলিতে নতুন অন্তর্দৃষ্টি সন্ধান করুন। আপনার জন্য ইন্টারনেট বিক্রয়, এবং আরও অনেক কিছু! এবং আমি আরো একটি উপাদান আছে.

হ্যাঁ, আমি প্রায় ভুলেই গিয়েছিলাম, তোমাকে নববর্ষের শুভেচ্ছা, প্রিয় পাঠক! আমি আপনাকে পরের বছর মহান বিজয় এবং সাফল্য কামনা করি!

অ্যান্ডোভার, ম্যাসাচুসেটস, নভেম্বর 19, 2003

কমার্স গ্রুপ, ইনক. (NYSE: CGI), ম্যাসাচুসেটস এবং CGI গ্রুপ ইনকর্পোরেটেডের ব্যক্তিগত যাত্রীবাহী অটোমোবাইল বীমার বৃহত্তম লেখক। (CGI) (TSX: GIB.A; NYSE: GIB;), তথ্য প্রযুক্তি এবং ব্যবসায়িক প্রক্রিয়াকরণ পরিষেবাগুলির একটি নেতৃস্থানীয় প্রদানকারী, আজকে 35 মিলিয়ন মার্কিন ডলার মূল্যের একটি ছয় বছরের ব্যবসায়িক প্রক্রিয়া আউটসোর্সিং (BPO) চুক্তি পুনর্নবীকরণের ঘোষণা করেছে৷ CGI ম্যাসাচুসেটস প্রাইভেট প্যাসেঞ্জার এবং বাণিজ্যিক অটোমোবাইল লাইনের জন্য সম্পূর্ণ নীতি প্রক্রিয়াকরণ পরিষেবা প্রদান করবে সেইসাথে CGI এর CollaborativeEdge এজেন্সি ইন্টারফেস টুল, অ্যাপ্লিকেশন সমর্থন এবং রক্ষণাবেক্ষণ, নিয়ন্ত্রক সহায়তা, সিস্টেম পরামর্শ এবং নথি ব্যবস্থাপনা পরিষেবা প্রদান করবে।

জেরাল্ড ফেলস, কমার্স গ্রুপের নির্বাহী ভাইস-প্রেসিডেন্ট এবং সিএফও, বলেছেন: "ম্যাসাচুসেটসে ব্যক্তিগত যাত্রীবাহী অটোমোবাইলগুলির নেতৃস্থানীয় প্রদানকারী হিসাবে, আমাদের লক্ষ্য হল আমাদের এজেন্ট এবং কর্মচারীদের পরিষেবা প্রদান করা যা তাদের সর্বোচ্চ স্তরে কাজ করতে সহায়তা করে৷ বছরের পর বছর ধরে আমরা CGI এর সাথে একটি শক্তিশালী সম্পর্ক গড়ে তুলেছি। তাদের সিস্টেম শক্তিশালী এবং সঠিক এবং তাদের দল আমাদের অভ্যন্তরীণ প্রক্রিয়াকরণ সিস্টেমের সাথে খুব পরিচিত। এটা আমাদের জন্য গুরুত্বপূর্ণ।"

সার্জ লাপালমে, প্রেসিডেন্ট, সিজিআই-এর বীমা ব্যবসায়িক পরিষেবা যোগ করেছেন: "আমরা কমার্স গ্রুপের সাথে আমাদের সম্পর্ক চালিয়ে যেতে পেরে খুবই আনন্দিত, যেটি 30 বছরেরও বেশি সময় ধরে বিস্তৃত। কমার্স গ্রুপ আমাদের মূল্যবান ব্যবসায়িক অংশীদারদের মধ্যে একটি হয়ে চলেছে এবং কৌশলগত আমাদের সাফল্য আমাদের ক্লায়েন্টকে তাদের মূল ব্যবসায় আরও ফোকাস করতে সাহায্য করার জন্য, আমরা নতুন প্রযুক্তির সুবিধা নিচ্ছি কখন এবং যেখানে এটি অর্থপূর্ণ হয় আমাদের দলটি গভীরভাবে এবং এর ফলে রাজ্যের অত্যন্ত অনন্য নিয়ন্ত্রক পরিবেশকে জানে এই ক্রমাগত বিকশিত সেক্টরে বিদ্যমান সমাধানগুলিকে মানিয়ে নিতে।"

কমার্স গ্রুপ সম্পর্কে, ইনক.

দ্য কমার্স গ্রুপ, ইনকর্পোরেটেড, একটি বীমা হোল্ডিং কোম্পানি, যার সদর দপ্তর ওয়েবস্টার, ম্যাসাচুসেটসে অবস্থিত। কমার্স গ্রুপের সম্পত্তি এবং হতাহত বীমা সহায়ক সংস্থাগুলির মধ্যে রয়েছে ম্যাসাচুসেটসে কমার্স ইন্স্যুরেন্স কোম্পানি এবং সিটেশন ইন্স্যুরেন্স কোম্পানি, ক্যালিফোর্নিয়ায় কমার্স ওয়েস্ট ইন্স্যুরেন্স কোম্পানি এবং ওহাইওতে আমেরিকান কমার্স ইন্স্যুরেন্স কোম্পানি। এর সহযোগী সংস্থাগুলি "সম্মিলিত বীমা কার্যক্রমের মাধ্যমে, কমার্স গ্রুপ 22 তম স্থানে রয়েছে দেশের বৃহত্তম ব্যক্তিগত অটোমোবাইল বীমা গ্রুপ এ.এম. সেরা, 2002 সরাসরি লিখিত প্রিমিয়াম তথ্যের উপর ভিত্তি করে।

সিজিআই সম্পর্কে
1976 সালে প্রতিষ্ঠিত, CGI হল উত্তর আমেরিকার পঞ্চম বৃহত্তম স্বাধীন তথ্য প্রযুক্তি পরিষেবা সংস্থা, তার প্রধান গণনার উপর ভিত্তি করে। CGI এবং এর অধিভুক্ত কোম্পানি 20,000 পেশাদার নিয়োগ করে। CGI-এর বার্ষিক রাজস্ব রান-রেট বর্তমানে CDN$2.8 বিলিয়ন (US$1.9 বিলিয়ন) এবং সেপ্টেম্বর 30, 2003-এ CGI-এর অর্ডার ব্যাকলগ ছিল CDN$12.3 বিলিয়ন (US$9.1 বিলিয়ন)। CGI কানাডা, মার্কিন যুক্তরাষ্ট্র এবং ইউরোপের অফিস থেকে বিশ্বব্যাপী গ্রাহকদের এন্ড-টু-এন্ড আইটি এবং ব্যবসায়িক প্রক্রিয়া পরিষেবা প্রদান করে। CGI এর শেয়ারগুলি TSX (GIB.A) এবং NYSE (GIB) এ তালিকাভুক্ত করা হয়েছে এবং TSX 100 কম্পোজিট সূচকের পাশাপাশি S&P/TSX কানাডিয়ান তথ্য প্রযুক্তি এবং কানাডিয়ান মিডক্যাপ সূচকে অন্তর্ভুক্ত রয়েছে: