शून्य से जूनियर तक: 5 Go प्रोजेक्ट्स जो आपके पोर्टफोलियो को धमाकेदार बनाएंगे

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

क्यों Go आपका बैकएंड की दुनिया का सुनहरा टिकट है

\n

यदि आप यह पढ़ रहे हैं, तो शायद आप पहले से ही जानते हैं कि Go (Golang) सिर्फ एक और फैशनेबल भाषा नहीं है। यह वह भाषा है जिसमें Docker, Kubernetes, Prometheus और आधुनिक इंटरनेट का आधा बुनियादी ढांचा लिखा गया है। लेकिन क्या आप जानते हैं कि एक शानदार डेवलपर को एक नौसिखिए से क्या अलग करता है? सिंटैक्स का ज्ञान नहीं, बल्कि Go में पोर्टफोलियो के लिए वास्तविक प्रोजेक्ट्स।

\n

नियोक्ता React पर एक जैसी "टू-डू लिस्ट" से थक चुके हैं। उन्हें ऐसे लोग चाहिए जो गोरूटीन को समझते हों, API डिज़ाइन करना जानते हों और नेटवर्क के साथ काम करने से न डरते हों। इस लेख में हम सिर्फ विचारों की सूची नहीं देंगे - हम वास्तविक कोड स्निपेट्स के साथ 5 प्रोजेक्ट्स का विश्लेषण करेंगे, जो इंटरव्यू के 90% सवालों को कवर करेंगे। चलिए शुरू करते हैं!

\n\n

प्रोजेक्ट #1: लिंक शॉर्टनिंग के लिए RESTful API (URL Shortener)

\n

यह क्यों महत्वपूर्ण है?

\n

यह शैली का एक क्लासिक है। किसी भी बैकएंड डेवलपर को HTTP सर्वर चलाने, middleware और रूटिंग के साथ काम करने में सक्षम होना चाहिए। "लिंक शॉर्टनर" प्रोजेक्ट पोर्टफोलियो के लिए Golang प्रोजेक्ट्स में पूरी तरह से फिट बैठता है, क्योंकि यह संरचनाओं, हैशिंग और डेटाबेस के साथ काम करने की समझ दिखाने की अनुमति देता है।

\n\n

हम क्या लिखेंगे?

\n

हम net/http पर एक सरल सर्वर बनाएंगे (बिना किसी तीसरे पक्ष की लाइब्रेरी के, ताकि मानक लाइब्रेरी का ज्ञान दिखाया जा सके)। सर्वर एक लंबा URL लेगा और एक छोटा कोड लौटाएगा (उदाहरण के लिए, /abc123)।

\n\n
package main\n\nimport (\n    "crypto/rand"\n    "encoding/hex"\n    "encoding/json"\n    "fmt"\n    "net/http"\n    "sync"\n)\n\ntype URLStore struct {\n    mu   sync.RWMutex\n    data map[string]string\n}\n\nvar store = URLStore{data: make(map[string]string)}\n\nfunc generateShortID() string {\n    bytes := make([]byte, 4)\n    rand.Read(bytes)\n    return hex.EncodeToString(bytes)\n}\n\nfunc shortenHandler(w http.ResponseWriter, r *http.Request) {\n    if r.Method != http.MethodPost {\n        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)\n        return\n    }\n\n    var req struct {\n        URL string `json:"url"`\n    }\n    if err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n        http.Error(w, "Bad request", http.StatusBadRequest)\n        return\n    }\n\n    shortID := generateShortID()\n    store.mu.Lock()\n    store.data[shortID] = req.URL\n    store.mu.Unlock()\n\n    w.Header().Set("Content-Type", "application/json")\n    json.NewEncoder(w).Encode(map[string]string{\n        "short_url": fmt.Sprintf("http://localhost:8080/%s", shortID),\n    })\n}\n\nfunc redirectHandler(w http.ResponseWriter, r *http.Request) {\n    shortID := r.URL.Path[1:]\n    store.mu.RLock()\n    originalURL, ok := store.data[shortID]\n    store.mu.RUnlock()\n\n    if !ok {\n        http.NotFound(w, r)\n        return\n    }\n    http.Redirect(w, r, originalURL, http.StatusFound)\n}\n\nfunc main() {\n    http.HandleFunc("/shorten", shortenHandler)\n    http.HandleFunc("/", redirectHandler)\n    fmt.Println("Server started at :8080")\n    http.ListenAndServe(":8080", nil)\n}
\n\n

आप क्या सीखेंगे?

\n
    \n
  • समवर्ती पहुंच के लिए sync.RWMutex के साथ काम करना
  • \n
  • JSON सीरियलाइज़ेशन
  • \n
  • फ्रेमवर्क के बिना स्वच्छ आर्किटेक्चर
  • \n
\n

Go में पोर्टफोलियो के लिए यह प्रोजेक्ट दिखाएगा कि आप समझते हैं कि चीजें "हुड के नीचे" कैसे काम करती हैं।

\n\n

प्रोजेक्ट #2: सिस्टम मॉनिटरिंग के लिए CLI उपयोगिता

\n

पोर्टफोलियो में इसकी आवश्यकता क्यों है?

\n

Go अपनी कंसोल उपयोगिताओं के लिए प्रसिद्ध है। अपना खुद का top या htop लिखना सिस्टम कॉल और गोरूटीन के साथ काम दिखाने का एक शानदार तरीका है। यह Go में पोर्टफोलियो के लिए सबसे उपयोगी प्रोजेक्ट्स में से एक है, क्योंकि यह वास्तविक DevOps कार्यों के करीब है।

\n\n

कोड: CPU और मेमोरी मॉनिटरिंग

\n
package main\n\nimport (\n    "fmt"\n    "os"\n    "os/exec"\n    "strconv"\n    "strings"\n    "time"\n)\n\nfunc getCPUPercent() (float64, error) {\n    out, err := exec.Command("sh", "-c", "t                

ब्लॉग

पुस्तक अनुशंसाएँ