यदि आप एक फ्रीलांसर हैं या विदेशी सी ++ वातावरण के साथ प्रयोग करना पसंद करते हैं, तो आपको
अंतिम ++ पारिस्थितिकी तंत्र पर ध्यान देना चाहिए, जिसे मैंने हाल ही में शिमोन एसेलेव्स्की (
भाग 1 ,
भाग 2 ,
भाग 3 ,
भाग 4) के लेखों की एक श्रृंखला के माध्यम से सीखा है। इस तरह के अंतिम बिदाई शब्द के साथ सब कुछ
विकि पर है ):
"यू ++ के लाभ इसकी असामान्यता और उच्च" प्रवेश बाधा "को पछाड़ते हैं?" मेरी राय में, हाँ। U ++ क्रॉस-प्लेटफॉर्म परियोजनाओं के लिए एक उत्कृष्ट विकल्प है जो खरोंच से विकसित होते हैं, खासकर अगर डेटाबेस का भारी उपयोग अपेक्षित है। "
कटौती के तहत वे U ++ बारीकियां हैं, जिन्हें हमने डेटाबेस में संग्रहीत दस्तावेजों की एक संपादित निर्देशिका पर दैनिक कार्य के महीने के लिए
मंच पर और
मैनुअल में पता लगाने में कामयाब रहे। मैं
तुरंत ध्यान देता हूं कि "अद्भुत त्रिमूर्ति" के साथ कोई तुलना नहीं होगी, क्योंकि इससे पहले मैंने सबसे सरल गुए के लिए डब्ल्यूटीएल का इस्तेमाल किया था और
ईजीयूआई ++ लाइब्रेरी में आशा के साथ देखा था, जो दुर्भाग्य से, लेखक ने त्याग दिया, लेकिन लेने वाला कोई नहीं था।
सबसे पहले, अल्टीमेट ++ एक अल्टिमेटम है: या तो थियोइड का अपना वातावरण, या, उदाहरण के लिए, जैसे कि विंडोज के तहत विजुअल स्टूडियो + STL + POCO + WTL। नतीजतन, आपको अपवादों के बारे में भूलना होगा, हालांकि बाकी सब सभ्य है, जो मैंने लिखा एसिंक्रोनस क्लाइंट-सर्वर फ़ाइल स्थानांतरण कोड के टुकड़े द्वारा सचित्र है।
कोर
- डेलिगेट्स (जीयूआई में बाध्यकारी घटनाओं के लिए मुख्य उपकरण; व्यक्तिगत रूप से, उन्होंने मुझे सबसे अधिक झुका दिया)
- एकाकी वस्तु
- लॉगिंग (ध्यान रखें कि वास्तविक संख्याओं के लिए% f का उपयोग% lf के बजाय किया जाता है)
- इनि फाइलें
VectorMap<string string> config = LoadIniFile(GetExeDirFile("config.ini")); String host = config.Get("HOST"); int port = ScanInt(config.Get("PORT")); for (int i = 0; i < config.GetCount(); i++) { if ("FILE" == config.GetKey(i)) { Cout() << config[i] << "\n"; } }
- बहु सूत्रण
जैसा कि मैं इसे समझता हूं, ओपनएमपी समर्थित नहीं है, इसके बजाय, कोवॉक , प्रतिनिधियों के साथ काम करना, सुझाव दिया गया है , जो छोरों को समानांतर बनाने के लिए सुविधाजनक नहीं है।
- टेक्स्ट JSON (बाइनरी डेटा Base64Encode / Base64Decode फ़ंक्शन की एक जोड़ी द्वारा समर्थित है)
FileIn fp(fname); Json json; json("fname", fname)("fsize", (int)fp.GetSize())("fdata", Base64Encode(LoadFile(fname))); ValueArray jsonAr = ParseJSON(json.ToString()); fname = jsonAr[0]; int fsize = jsonAr[1]; String fdata = Base64Decode(jsonAr[2]);
- सॉकेट
TcpSocket server; if (!server.Listen(port)) { LOG(Format("Can't open server port %d for listening\n", port)); return; } for(;;) { LOG("Waiting..."); TcpSocket socket; if (socket.Accept(server)) { String msg = ""; for (int c = socket.Get(); c > 0 && c != '\n'; c = socket.Get()) { msg.Cat(c); } } }
- RegExp (पीसीआरई)
RegExp reg("(\\\\)"); String path = "D:\\test.txt"; if (reg.Match(path)) { int last; int first; reg.GetMatchPos(0, first, last); String drive = path.Mid(0, last); String fname = path.Mid(last); }
- अंतर्निहित मेमोरी लीक चेक (मालॉक ट्रैक नहीं किया गया है)
GUI_APP_MAIN { double *d = new double(0); }

एसक्यूएल
जरा और
इधर देखो। Php / Yii प्रशंसकों को इसकी सराहना करनी चाहिए।
क्यूटीएफ (रिपोर्ट दृश्य)
क्यूटीएफ उन्नत पाठ स्वरूपण के लिए एक देशी यू ++ प्रारूप है। रिचएडिट में और रिपोर्ट बनाने में उपयोग किया जाता है। वीडियो में प्रयोगों के लिए एक विशेष डिजाइनर है:

एक रिपोर्ट छापने के लिए एक विशेष संवाद भी दिया गया है (पीडीएफ में सेविंग रिपोर्टवॉन्ड के धनुष में है):
Color rgb_color = Color(109, 171, 211); String qtf_color = Format("@(%d.%d.%d)", rgb_color.GetR(), rgb_color.GetG(), rgb_color.GetB()); String qtf; qtf.Cat(Format("[R9/%s Habrahabr &]", qtf_color)); qtf.Cat(Format("[_%s ] [ ] [_%sq\\&a] [_%s ] [_%s ] [_%s ]", qtf_color, qtf_color, qtf_color, qtf_color, qtf_color)); Report rep; rep << qtf; ReportWindow().Perform(rep);

पाठ की शैली को टैग [और] द्वारा फ़्रेम किया गया है, और सबसे पहले, ब्रैकेट के पीछे [क्यूटीएफ पहचानकर्ता हैं, और फिर केवल अंतरिक्ष पाठ के माध्यम से। सामान्य तौर पर, सिद्धांत HTML में जैसा होता है, अंतर केवल नामों में होता है।
बाजार
बाजार विशिष्ट आवश्यकताओं के लिए उपयोगकर्ता पुस्तकालयों का एक समूह है, जिसके बीच
ऑफिस ऑटोमेशन में वर्ड / एक्सेल के साथ क्रॉस-प्लेटफॉर्म का काम मेरे लिए बहुत उपयोगी था:
#include <OfficeAutomation/OfficeAutomation.h> GUI_APP_MAIN { //Excel OfficeSheet sheet; bool xlsOn = sheet.IsAvailable("Microsoft"); if (xlsOn) sheet.Init("Microsoft"); //Open Office Calc if (!xlsOn) { xlsOn = sheet.IsAvailable("Open"); if (xlsOn) sheet.Init("Open"); } if (xlsOn) { FileSel fs; fs.Type(" ", "*.xls *.xlsx"); fs.AllFilesType(); if (fs.ExecuteOpen(" Excel ")) { sheet.OpenSheet(~fs, true); sheet.AddSheet(true); } } //Word OfficeDoc doc; // Word2003 Word2007, - Word2003. . bool docOn = doc.IsAvailable("Microsoft"); if (docOn) doc.Init("Microsoft"); //Open Office Writer if (!docOn) { docOn = doc.IsAvailable("Open"); if (docOn) doc.Init("Open"); } if (docOn) { FileSel fs; fs.Type(" Word", "*.doc *.docx *.rtf"); fs.AllFilesType(); if (fs.ExecuteOpen(" Word ")) { doc.OpenDoc(~fs, true); doc.AddDoc(true); } } }
बारीकियों
सारांश
में शामिल हों! कई बिंदु जो मैंने नहीं लिखे, उनमें सक्रिय सुधार की आवश्यकता है। एक छोटे से वितरण के साथ 32 एमबी इसके लायक है।