আশা করি সবাই ভালো আছে। আমি ধরে নিচ্ছি আপনি কিছুটা অবাক হয়েছেন অনেকদিন পরে আমার লেখা নতুন ব্লগ পোস্ট টা দেখে। সবকিছু সাইডে রেখে চলুন আজকের টপিক নিয়ে আলোচনা করা যাক। আজকের টপিক মূলত গো প্রোগ্রামিং ল্যাঙ্গুয়েজ নিয়ে। চলুন গো বা গো ল্যাং শুরু করার আগে এর ক্যাটরিনা কাইফের মতো সুন্দর একটা বিস্তারিত জেনে নেই। গো বা গো ল্যাং যাই বলেন না কেনো আমি এই পোস্টে গো হিসেবে বলবো। গো গুগলের তৈরি করা একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ। বাকিটা আপনারা গুগল করে জেনে নিতে পারেন ধন্যবাদ।
আশা করছি অলরেডি আপনার মেশিনে গো ইন্সটল করাই আছে। কীভাবে ইন্সটল করবেন সেটা না জানলে আপনি গুগল করতে পারেন। প্রথমে আপনার ডেস্কটপ বা মেশিনে একটা এম্পটি ফোল্ডার তৈরি করে ফেলুন। এক্ষেত্রে আমি “BouGO” নামে একটি ফোল্ডার তৈরি করলাম। আপনারা যেকোনো নামে তৈরি করতে পারেন। এখন আপনার তৈরি করা “BouGO” ফোল্ডার টি “VSCode” এ ওপেন করুন। ওপেন করতে সমস্যা হলে মেসেজ করবেন। এতোটুকু করতে পারলে আপনাকে আবারো ধন্যবাদ। চাইলে সাময়িক বিরতি নিতে পারেন।
কি কি লাগবে শুরু করতেঃ
আপাতত আপনার আগ্রহ ছাড়া আর কিছু লাগবে না। হ্যা গো এর Go version 1.11+ এর উপরের ভার্সনটা ইন্সটল করলে ভালো হবে। ব্যাসিক সার্ভার তৈরি করাঃ এখন অব্দি সবকিছু ঠিকঠাক থাকলে আমরা আমাদের প্রথম ওয়েব সার্ভার তৈরি করতে পারি। তখন যেই ফোল্ডারটি “VSCode” এ ওপেন করলেন সেখানে “main.go” নামে একটা ফাইল তৈরি করুন। করেছেন?
package main
`import ( "fmt" "html" "log" "net/http" )
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) })
log.Fatal(http.ListenAndServe(":8081", nil))
}`
ওয়েট ওয়েট, এটা দেখে হতাশ হইয়েন না। এখন একটা একটা করে বুঝাচ্ছি। একটু অপেক্ষা করুন।
package main
“package main” Go কম্পাইলারকে বলে যে এটা এক্সিকিউটেবল প্রোগ্রাম হিসাবে কম্পাইল করতে হবে।
import ( "fmt" "html" "log" "net/http" )
তা তো বুঝলাম কিন্তু এই ইম্পর্টস হাবিজাবি আবার কি। গো দিয়ে অনেক কাজ করতে পারবেন আলাদা কোন ফ্রেমওয়ার্ক বা লাইব্রেরী ব্যবহার করা ছাড়াই। import () এটার মাঝে আসলে আপনি আপনার প্রোজেক্টে যে বিল্ট-ইন লাইব্রেরী বা ফ্রেমওয়ার্ক ব্যবহার করছেন সেটা এখানে রাখতে হয়। এখানে রাখলে আপনার গো ফাইলটা সেইসব লাইব্রেরী বা ফ্রেমওয়ার্ক ব্যবহারের পারমিশন পাবে। গো প্রোগ্রামিং ল্যাঙ্গুয়েজে ফাংশন ডিফাইন করতে হয় func কিওয়ার্ড দিয়ে। বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজে প্রোগ্রামের একটা স্টারটিং পয়েন্ট থাকে যেখান থেকে প্রোজেক্টটা রান হবে। তেমন গো তে স্টারটিং পয়েন্ট হচ্ছে
func main(){ }
এটার মধ্যে যা রাখবেন তাই আগে রান হবে। তার মানে এখান থেকেই শুরু।
`func main() {
http.HandleFunc("/bou", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) })
log.Fatal(http.ListenAndServe(":8081", nil))
}`
উপরের কোডে আমরা মূলত একটি হ্যান্ডেলার বানিয়েছি যেটার মাধ্যমে আমরা ডেটা ওয়েব পেইজে দেখাবো। এই হ্যান্ডেলার বোঝাচ্ছে, যখন ক্লাইন্ট সার্ভারে রিকুয়েস্ট পাঠাবে সেই রিকুয়েস্ট প্রোসেস করে সার্ভার ক্লাইন্টকে একটা রেস্পন্স দিবে।
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
এখানে এইটা হচ্ছে আসলে আমরা রেস্পন্স হিসেবে ক্লাইন্টকে কি দেখাতে চাই। এটাই আমাদের ব্রাউজারে সো করবে।
log.Fatal(http.ListenAndServe(":8081", nil))
এটার মাধ্যমে আমরা বোঝাচ্ছি আমাদের এই সার্ভারটি :8081 এই পোর্টে রান করবে। এবং এই রান করার অবস্থায় যদি কোন ইরর আসে তাহলে log.Fatal এর মাধ্যমে দেখতে পাবো। এখন প্রশ্ন করতে পারেন যে সব ই করলাম এখন আমরা আমাদের সার্ভারটা টেস্ট করবো কীভাবে? তাহলে চলুন দেখি..
সার্ভার রান করবোঃ
আমরা যেহেতু আমাদের নিজস্ব সার্ভার তৈরি করেছি তাহলে চলুন এটা টেস্ট করি। আমরা আমাদের ভি এস কোডের টার্মিনালে “go run server.go” টাইপ করে এন্টার চাপি। এন্টার চেপে যেকোন একটা ব্রাউজার ওপেন করুন। ওপেন করে সার্চ বারে “http://localhost:8081/bou” এটা লিখে এন্টার চাপুন। কিছু দেখতে পাচ্ছেন?
অভিনন্দন, আপনি আপনার প্রথম ওয়েব সার্ভার গো ল্যাং এর মাধ্যমে তৈরি করেছেন।
লেখাটি ভালো লাগলে অবশ্যই শেয়ার করবেন এবং নিজের মতামত লিখতে ভুলবেন না। ধন্যবাদ।