गो में पासवर्ड मैनेजर बनाने की हमारी यात्रा में आपका फिर से स्वागत है! इस दूसरी किस्त में, हम अपनी प्रारंभिक प्रतिबद्धता के बाद से हमने जो प्रगति की है उसका पता लगाएंगे। हमने नई सुविधाएँ जोड़ी हैं, कोड संरचना में सुधार किया है और परीक्षण लागू किया है। आइए गोता लगाएँ!
पहले परिवर्तनों में से एक जो आप देखेंगे वह बेहतर परियोजना संरचना है। हमने गो की सर्वोत्तम प्रथाओं का पालन करते हुए अपने कोड को कई फाइलों और पैकेजों में अलग कर दिया है:
dost/ . ├── LICENSE ├── README.md ├── go.mod ├── go.sum ├── internal │ ├── internal_test.go │ └── passgen.go └── main.go
जैसे-जैसे हमारा प्रोजेक्ट बढ़ता है, यह संरचना बेहतर संगठन और रखरखाव की अनुमति देती है।
हमने अपनी सीएलआई में उल्लेखनीय सुधार किया है, जिससे यह अधिक लचीला और उपयोगकर्ता-अनुकूल बन गया है। यहां हमारे main.go से एक स्निपेट है:
func main() { generateCmd := flag.NewFlagSet("generate", flag.ExitOnError) flag.Parse() switch os.Args[1] { case "generate": internal.Generate(generateCmd) } }
यह सेटअप उपकमांड की अनुमति देता है, वर्तमान में जेनरेट कमांड का समर्थन करता है। उपयोगकर्ता अब हमारे टूल के साथ इस प्रकार इंटरैक्ट कर सकते हैं:
go run main.go generate email/[email protected] 15
हमने पासवर्ड जेनरेशन को अनुकूलित करने के लिए विकल्प जोड़े हैं। उपयोगकर्ता अब पासवर्ड की लंबाई निर्दिष्ट कर सकते हैं और विशेष वर्णों को बाहर करना चुन सकते हैं:
func Generate(generateFlags *flag.FlagSet) { generateFlags.BoolVar(&noSymbols, "n", false, "Skip symbols while generating password") generateFlags.BoolVar(©ToClipBoard, "c", false, "Copy to clipboard.") generateFlags.Parse(os.Args[2:]) passwordLength := 25 // ... (code to parse custom length) password, err := generatePassword(passwordLength, noSymbols) // ... (code to handle password output) }
यह फ़ंक्शन उपयोगकर्ताओं को प्रतीकों को बाहर करने के लिए -n और पासवर्ड को प्रदर्शित करने के बजाय क्लिपबोर्ड पर कॉपी करने के लिए -c जैसे फ़्लैग का उपयोग करने की अनुमति देता है।
हमने नए अनुकूलन विकल्पों को संभालने के लिए अपने पासवर्ड जनरेशन फ़ंक्शन को परिष्कृत किया है:
func generatePassword(length int, noSymbols bool) (string, error) { const ( uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" lowercaseLetters = "abcdefghijklmnopqrstuvwxyz" digits = "0123456789" specialChars = "!@#$%^&*()-_= []{}|;:'\",./?" ) allChars := uppercaseLetters lowercaseLetters digits if !noSymbols { allChars = specialChars } var password string for i := 0; iयह फ़ंक्शन अब noSymbols ध्वज का सम्मान करता है, जो अधिक लचीले पासवर्ड निर्माण की अनुमति देता है।
परीक्षण लागू करना
हमने परीक्षण लागू करके अपने कोड की विश्वसनीयता सुनिश्चित करने की दिशा में एक महत्वपूर्ण कदम उठाया है। यहां हमारी परीक्षण फ़ाइल से एक स्निपेट है:
func TestPasswordLength(t *testing.T) { password, err := generatePassword(10, true) if err != nil { t.Errorf("Expected no error, got %v", err) } else { if len(password) != 10 { t.Errorf("Expected 10 character password, got %d", len(password)) } } } func TestSpecialCharacter10K(t *testing.T) { splCharMissing := 0 for i := 1; i 0 { t.Errorf("Special character was missing in %d / 10000 instances.", splCharMissing) } }ये परीक्षण सही पासवर्ड लंबाई और विशेष वर्णों के समावेश की जांच करते हैं। दिलचस्प बात यह है कि हमारे विशेष चरित्र परीक्षण से सुधार की गुंजाइश का पता चला: 10,000 उत्पन्न पासवर्डों में से 234 में विशेष वर्ण नहीं थे। यह हमें हमारे अगले शोधन के लिए एक स्पष्ट दिशा देता है।
आगे क्या होगा?
हालाँकि हमने महत्वपूर्ण प्रगति की है, फिर भी सुधार की गुंजाइश है:
- विशेष वर्णों को लगातार शामिल करने को सुनिश्चित करने के लिए पासवर्ड जनरेशन एल्गोरिदम को परिष्कृत करें।
- पासवर्ड भंडारण कार्यक्षमता लागू करें।
- संगृहीत पासवर्ड के लिए एन्क्रिप्शन जोड़ें।
- खोज और पुनर्प्राप्ति सुविधाएं विकसित करें।
हमारी श्रृंखला के अगले भाग के लिए बने रहें, जहां हम इन चुनौतियों से निपटेंगे और अपना पासवर्ड मैनेजर विकसित करना जारी रखेंगे!
याद रखें, पूरा स्रोत कोड GitHub पर उपलब्ध है। क्लोन करने, फोर्क करने और परियोजना में योगदान करने के लिए स्वतंत्र महसूस करें। आपकी प्रतिक्रिया और योगदान का हमेशा स्वागत है!
कोडिंग का आनंद लें, और सुरक्षित रहें! ??
स्वेमाराजू / दोस्त
दोस्त कमांड लाइन पासवर्ड मैनेजर गो में लिखा है
दोस्त
dost एक CLI पासवर्ड मैनेजर है जो Go में लिखा गया है।
(पास) से प्रेरित[https://www.passwordstore.org/]
विशेषताएँ
- कॉन्फ़िगर करने योग्य लंबाई के यादृच्छिक पासवर्ड उत्पन्न करें
- जेनरेट किए गए पासवर्ड को स्वचालित रूप से क्लिपबोर्ड पर कॉपी करें
- प्रतीकों का उपयोग करना छोड़ें
उपयोग
> go build -o dost main.goपासवर्ड जनरेट करना:
> ./dost generate email/[email protected] Generated Password: );XE,7-Dv?)Aa &निर्दिष्ट लंबाई के साथ पासवर्ड बनाना (डिफ़ॉल्ट 25 है):
> ./dost generate email/[email protected] 12 Generated Password: siजनरेटेड पासवर्ड को बिना प्रिंट किए क्लिपबोर्ड पर कॉपी करें:
> ./dost generate -c email/[email protected] Copied to clipboard! ✅पासवर्ड जनरेट करने के लिए प्रतीकों से बचें:
> ./dost generate -n email/[email protected] Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>Hअल्प विकास
- मैन्युअल रूप से नया पासवर्ड डालें
- मौजूदा पासवर्ड दिखाएं
- सभी प्रविष्टियों की सूची बनाएं
- पासवर्ड भंडारण
- जीपीजी कुंजी आधारित एन्क्रिप्शन
लाइसेंस
एमआईटी
GitHub पर देखें
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3