กูเซฟ
นี่คือ mono-repo หลักสำหรับ Galaxy Unlimited Platform ซอฟต์แวร์ที่มีอยู่ในที่นี้คือชุดของไลบรารีและบริการที่ได้รับและแอปพลิเคชันที่มีลักษณะทั่วไปโดยทั่วไป วัตถุประสงค์โดยรวมของไลบรารีเหล่านี้คือการทำหน้าที่เป็นกล่องเครื่องมือ C++ เพื่อพัฒนาแอปพลิเคชันและบริการอย่างรวดเร็ว เครื่องมือ/แอปพลิเคชัน/บริการบางอย่างดังกล่าวรวมอยู่ใน mono-repo เดียวกันเช่นกัน
โปรดทราบว่าโมดูลแพลตฟอร์มหลักไม่ได้ตั้งใจบังคับให้ C++ เวอร์ชันใหม่กว่าอนุญาตให้ใช้ในสถานการณ์ที่ไม่มีคอมไพเลอร์สมัยใหม่ให้ใช้งาน การใช้คุณลักษณะภาษาที่ใหม่กว่ามีแนวโน้มที่จะได้รับการจัดการผ่านมาโครด้วยเหตุผลดังกล่าว โค้ดจึงยังสามารถคอมไพล์โดยใช้คอมไพเลอร์รุ่นเก่าได้
เกี่ยวกับชื่อ
GUCEF ย่อมาจาก "Galaxy Unlimited Client Engine Framework" ในคราวเดียว เป็นส่วนหนึ่งของสแต็กหลายระดับที่มีระดับสแต็กซอฟต์แวร์ GUCE และ GU อิสระ GUCE ย่อมาจาก "Galaxy Unlimited Client Engine" GUC ย่อมาจาก "Galaxy Unlimited Client" GU ยังคงเป็นคำย่อของ "Galaxy Unlimited" ในเวลานี้ GUCEF และ GUCE ได้รวมเข้าด้วยกัน และบางส่วนของ GUC และ GU ก็ได้ถูกรวมเข้าด้วยกันเช่นกัน แทนที่จะมุ่งเน้นไปที่ฝั่งไคลเอ็นต์ในการพัฒนาใหม่จำนวนมากได้มุ่งเน้นไปที่บริการสนับสนุนและการพัฒนาส่วนหลังโดยทั่วไป
ประวัตินิดหน่อย
ตลอดหลายปีที่ผ่านมา มีการสร้างฐานรหัสต่างๆ และบทเรียนที่ผู้เขียนได้เรียนรู้ โค้ดหลักทั่วไปเกิดขึ้นอย่างช้าๆ แต่แน่นอน ซึ่งเริ่มเติบโตแบบออร์แกนิก ฐานโค้ดหลักทั่วไปแบบเดิมหายไปบางส่วนสองสามครั้งเนื่องจากปัญหาการจัดเก็บข้อมูลและแนวทางปฏิบัติในการสำรองข้อมูลของวัยรุ่น ซึ่งถูกจำกัดเพิ่มเติมเนื่องจากการขาดทรัพยากรทางการเงิน ที่เก็บข้อมูลต่างๆ ถูกรวมเข้าด้วยกัน โดยรวมการสำรองข้อมูลบางส่วนต่างๆ เพื่อสร้าง repo GUCEF เวอร์ชันแรก เวอร์ชันแรกนี้พบบ้านสาธารณะบน SourceForce เดิมที CVS ถูกใช้เป็นระบบควบคุมเวอร์ชัน ตามด้วย SVN และตามมาด้วย Git เมื่อพิจารณาถึงการย้ายไปยัง Git ก็จะมีการพิจารณาบ้านหลังใหม่สำหรับ repo แบบโอเพ่นซอร์สด้วย เนื่องจากความนิยมของชุมชนโอเพ่นซอร์สที่เพิ่มขึ้น GitHub จึงได้รับชัยชนะในวันนี้ในฐานะบ้านใหม่สำหรับ GUCEF และ repos ที่เกี่ยวข้องบางส่วนซึ่งยังคงมีอยู่ในปัจจุบัน
เกี่ยวกับผู้เขียน
นอกเหนือจากการขึ้นต่อกัน โค้ดเกือบทั้งหมดในพื้นที่เก็บข้อมูลนี้เขียนโดย Dinand Vanvelzen Dinand เริ่มเขียนโปรแกรมตั้งแต่ยังเป็นเด็กในช่วงทศวรรษ 1980 โดยเขียนโค้ดแอสเซมบลีสำหรับ MSX ซึ่งเป็นแนวคิดที่ Philips ออกแบบโดยใช้แนวคิดพีซี ต่อมาในช่วงทศวรรษ 1990 หลักการเขียนโปรแกรม RAD ได้กลายเป็นความรักครั้งใหม่ผ่าน Borland Delphi ตามด้วย Borland C++ Builder ในช่วงหัวเลี้ยวหัวต่อนี้ ผู้เขียนได้เริ่มต้นการศึกษาวิชาชีพด้านศาสตร์มืดของวิศวกรรมซอฟต์แวร์ กลยุทธ์คู่ถูกชักจูงระหว่างการเขียนโปรแกรมแอปพลิเคชันและการเขียนโปรแกรมส่วนหลัง/ระดับล่างซึ่งมีระดับที่แตกต่างกันในขณะนั้น ในช่วงเวลานี้ โค้ดเบสที่คุณพบในพื้นที่เก็บข้อมูลนี้ยังคงเติบโตและพัฒนาต่อไปเมื่อแนวคิดผสมผสานและพัฒนา ในช่วงทศวรรษ 2000 ผู้เขียนมุ่งเน้นไปที่การสร้างภาพข้อมูล ซึ่งส่วนใหญ่เป็นกราฟิก 3 มิติทั้งในด้านความเป็นมืออาชีพและด้วยความอยากรู้อยากเห็นทางปัญญาที่เข้ามาในคลังนี้ การย้ายถิ่นฐานไปยังสหรัฐอเมริกาและการเริ่มต้นครอบครัวทำให้การพัฒนาใหม่ๆ ช้าลงจนเหลือน้อยเป็นเวลาหลายปี ก่อนที่จะเริ่มฟื้นตัวอีกครั้งเมื่อสถานการณ์ส่วนบุคคลเริ่มคงที่ ในช่วงนี้เองที่อุดมคตินิยมของวัยรุ่นเริ่มหลีกทางให้กับลัทธิปฏิบัตินิยม โดเมนการดูแลสุขภาพแบบแทรกแซงอย่างมืออาชีพได้เปิดทางให้กับการดูแลสุขภาพขององค์กร ซึ่งต่อมาได้เปิดทางให้กับภาคการเงิน การพัฒนาใหม่ๆ ในเวลาต่อมาได้เน้นในทางปฏิบัติไปที่ความต้องการทั่วไปในชีวิตการทำงานของผู้เขียน โดยมีโครงการแปลกๆ ที่บังเอิญปะปนกันเพื่อเป็นหนทางในการยุติ
การแยกย่อย mono-repo
- /platform : มีโมดูลแพลตฟอร์มหลักที่มีทั้งฟังก์ชันการทำงานแบบพกพาที่เป็นรูปธรรมและอินเทอร์เฟซสำหรับการใช้ฟังก์ชันเพิ่มเติมผ่านปลั๊กอิน
- /plugins : มีปลั๊กอินต่างๆ ที่สามารถเลือกใช้เพื่อขยายขีดความสามารถของแพลตฟอร์มได้
- /projects : มีสคริปต์และสิ่งที่คล้ายกันสำหรับสร้างโปรเจ็กต์บิลด์
- /common/bin : นี่เป็นเอาต์พุตไบนารีของโปรเจ็กต์
- /dependencies : ตามชื่อที่แนะนำโฟลเดอร์นี้มีไลบรารีการพึ่งพาต่างๆ ที่ใช้โดยปลั๊กอิน ไม่เคยใช้ไลบรารีแพลตฟอร์มโดยตรง
- /tests : ตามชื่อ มันเก็บโค้ดทดสอบเฉพาะบางส่วนไว้
วิธีสร้างโปรเจ็กต์สำหรับ IDE ของฉัน
วิธีการหลักที่รองรับไฟล์โปรเจ็กต์/โซลูชัน IDE คือผ่าน CMake ไฟล์ CMake นั้นสร้างขึ้นโดยอัตโนมัติเกือบทั้งหมดผ่านเครื่องมือที่รวมอยู่ใน repo นี้ที่เรียกว่า 'ProjectGenerator' ProjectGenerator ดำเนินการวิเคราะห์ไฟล์ใน repo ด้วยไฟล์ ModuleInfo.xml ขั้นต่ำเพื่อระบุโมดูล จากนั้นจะรับพาธที่จำเป็นทั้งหมดและสร้างไฟล์ที่จำเป็น เครื่องมือเดียวกันนี้สามารถส่งออกไฟล์มิดเดิลแวร์สำหรับ toolchains อื่น ๆ ได้เช่นกัน ไม่ใช่แค่ CMake นอกจากนี้ยังมีไฟล์สร้าง premake 4 และ premake 5 และ android รวมอยู่ด้วย แต่จะไม่ได้รับการอัปเดตบ่อยเท่าที่ควรในขณะนี้ ดังนั้นระยะของคุณจะแตกต่างกันไป
ในกรณีส่วนใหญ่ คุณต้องไปที่ /projects/CMake ก่อนเพื่อสร้างไฟล์ IDE ที่เกี่ยวข้อง ในโฟลเดอร์นั้น คุณจะเห็นสคริปต์ต่างๆ ที่มีชื่อยาวๆ ณ จุดหนึ่ง สิ่งนี้จะได้รับการปรับโครงสร้างใหม่ตามรายการสิ่งที่ต้องทำ แต่สำหรับตอนนี้ รูปแบบจะเป็นดังนี้:
ตามตัวอย่างคุณมีไฟล์สคริปต์เช่น 'RunCMake_Shared_CodeBlocks_Unix_Debug_pubsub2pubsub.sh'
- RunCMake_ : ส่วนแรกนี้เป็นเพียงการตั้งค่าให้แตกต่างจากไฟล์อื่นๆ ในโฟลเดอร์ด้วยเหตุผลทางประวัติศาสตร์ ไม่ต้องสนใจ
- Shared_ : ส่วนนี้ส่วนใหญ่เกี่ยวข้องกับ CMake โดยที่วิธีการสร้างโมดูลเริ่มต้นที่ส่งผ่านจะเป็น 'ไดนามิก' (dll/so) เทียบกับแบบคงที่ (.lib/.a)
- CodeBlocks_ : ส่วนนี้มีชื่อของ IDE ที่คุณต้องการสร้างไฟล์โครงการ ในตัวอย่างนี้ Code Blocks IDE
- Unix_ : ส่วนนี้แสดงถึงแพลตฟอร์มเป้าหมาย IDE บางตัวรองรับแพลตฟอร์มเป้าหมายหลายแพลตฟอร์ม
- Debug_ : ส่วนนี้อาจไม่ปรากฏสำหรับสคริปต์ทั้งหมด ขึ้นอยู่กับความสามารถของตัวสร้าง สำหรับเครื่องกำเนิดไฟฟ้าบางตัว ไฟล์โปรเจ็กต์จะต้องถูกสร้างขึ้นตั้งแต่เริ่มต้นสำหรับการแก้ไขข้อบกพร่องหรือรุ่นรีลีส สิ่งนี้ไม่จำเป็นในกรณีของ Visual Studio
- pubsub2pubsub.sh : ส่วนนี้แสดงถึงเป้าหมายหลักของมุมมองแบบลอจิคัลบน mono-repo ทั้งหมด ในกรณีนี้คือบริการ pubsub2pubsub
กล่าวอีกนัยหนึ่งรูปแบบคือ: 'RunCMake_Shared/Static_IDE to use_OS Target_Debug/Release_Target name.Executable script extension'
บน Windows เมื่อคุณเรียกใช้สคริปต์ด้านบนและสิ่งที่คล้ายกัน มันจะทริกเกอร์การเรียกใช้ ProjectGenerator ด้วย นี่เป็นเพียงจุดประสงค์เพื่อทำให้โฟลว์ป้องกันการเข้าใจผิดมากขึ้น เนื่องจากโดยปกติแล้วไฟล์ CMake ที่คอมมิตจะเป็นข้อมูลล่าสุดอยู่แล้ว ดังนั้นขั้นตอนนี้จึงสามารถ x-ed out และข้ามไปได้ การทำตามขั้นตอนที่เป็นไปได้นี้ CMake จะถูกเรียกใช้เพื่อดูแลการสร้างไฟล์บิลด์ ไฟล์ดังกล่าวกำลังเขียนไปที่ /common/bin repo นี้เป็นไปตามความคิดที่ว่าไฟล์เอาต์พุตชั่วคราวไม่ควรรวมกับโค้ด หากคุณประสบปัญหาไม่ว่าด้วยเหตุผลใดก็ตามกับไฟล์เอาต์พุตเก่า/ไม่ดี (ปัญหาดิสก์?) คุณสามารถลบโครงสร้างโฟลเดอร์ทั้งหมดภายใต้ /common/bin ได้ตลอดเวลา
มีไลบรารีแพลตฟอร์ม
- gucefMT: ไลบรารีที่มีพื้นฐานการเขียนโปรแกรมแบบมัลติเธรด มีแนวโน้มที่จะถูกพับเก็บเป็น gucefCORE ในบางจุด
- gucefCORE: ไลบรารีที่มีฟังก์ชันการทำงานที่เป็นแกนหลักในการสร้างฟังก์ชันการทำงานบนแพลตฟอร์ม เช่น ระบบปลั๊กอิน/การบันทึก/เมตริก/เหตุการณ์/อื่นๆ
- gucefIMAGE: ไลบรารีเสริมที่ใช้ในการสร้างซอฟต์แวร์ที่ใช้ภาพดิจิทัล
- gucefVFS: ไลบรารีเสริมที่ใช้ในการสร้างซอฟต์แวร์ที่ทำ I/O รูปแบบระบบไฟล์ที่ซับซ้อนมากกว่าการเข้าถึงขั้นพื้นฐาน VFS = ระบบไฟล์เสมือน
- gucefCOMCORE: ไลบรารีเสริมที่ใช้ในการสร้างซอฟต์แวร์ที่ทำงานบนเครือข่ายพื้นฐาน
- gucefCOM: ไลบรารีเสริมที่ใช้ในการสร้างซอฟต์แวร์ที่ทำงานบนเครือข่ายและใช้ฟังก์ชันมาตรฐานอุตสาหกรรมอย่างเป็นธรรม เช่น StatsD
- gucefWEB: ไลบรารีเสริมที่ใช้ในการสร้างซอฟต์แวร์ที่ทำงานเครือข่ายสไตล์อินเทอร์เน็ต/เว็บ
- gucefPUBSUB: ไลบรารีเสริมที่ใช้เมื่อสร้างซอฟต์แวร์ที่ใช้แนวคิดการเผยแพร่/สมัครสมาชิก
- gucefGUI: ไลบรารีเสริมที่ใช้เมื่อจำเป็นต้องใช้ GUI จุดสนใจหลักอยู่ที่ GUI ภายในบริบทของการเรนเดอร์ ไม่ใช่ GUI ดั้งเดิมของระบบปฏิบัติการ
- gucefINPUT: ไลบรารีเสริมที่ใช้เมื่อต้องการการสนับสนุนอุปกรณ์อินพุตของมนุษย์
- gucefLOADER: ไลบรารีเสริมที่ใช้เมื่อโหลดแพลตฟอร์ม GUCEF หลายเวอร์ชันแบบไดนามิกแบบไดนามิก
- gucefPATCHER: ไลบรารีเสริมที่ใช้เมื่อจำเป็นต้องมีการสนับสนุนสำหรับฟังก์ชันการแพตช์อัตโนมัติเทียบกับผู้ใช้ปลายทางที่ดาวน์โหลดการอัปเดตด้วยตนเอง
- gucefMATH: ไลบรารีเสริมที่ใช้เมื่อทำการคำนวณทางคณิตศาสตร์ผ่านแนวคิด OO
- gucefKAITAI: ไลบรารีเสริมที่ใช้เมื่อตีความรูปแบบไบนารีโดยใช้ประโยชน์จากสคีมา Kaitai
มีปลั๊กอินแพลตฟอร์ม
- dstorepluginPARSIFALXML: ปลั๊กอิน gucefCORE: เพิ่มการสนับสนุนตัวแปลงสัญญาณ DStore (DataNode) สำหรับ XML เขียนผ่านโค้ด GUCEF และอ่านผ่านไลบรารีการพึ่งพา ParsifalXML
- dstorepluginJSONPARSER: ปลั๊กอิน gucefCORE: เพิ่มการสนับสนุนตัวแปลงสัญญาณ DStore (DataNode) สำหรับ JSON ใช้ไลบรารีการพึ่งพา json-parser และ json-builder
- dstorepluginYAML: ปลั๊กอิน gucefCORE: เพิ่มการสนับสนุนตัวแปลงสัญญาณ DStore (DataNode) สำหรับ YAML ใช้ไลบรารีการพึ่งพา libyaml
- codecspluginZLIB: ปลั๊กอิน gucefCORE: เพิ่มการสนับสนุนตัวแปลงสัญญาณสำหรับ zlib/gzip/deflate/crc32/adler32
- codecspluginSTBRUMMEHASH: ปลั๊กอิน gucefCORE: เพิ่มการสนับสนุนตัวแปลงสัญญาณสำหรับ CRC32/MD5/SHA1/SHA3/SHA256/Keccak
- imgpluginDEVIL: ปลั๊กอิน gucefIMAGE: เพิ่มฟังก์ชันการจัดการรูปภาพดิจิทัลที่มาจากไลบรารีการพึ่งพารูปภาพ DEVIL รองรับตัวแปลงสัญญาณภาพต่างๆ
- imgpluginFLIC: ปลั๊กอิน gucefIMAGE: เพิ่มการรองรับตัวแปลงสัญญาณรูปภาพสำหรับรูปแบบ FLIC
- imgpluginFreeImage: ปลั๊กอิน gucefIMAGE: เพิ่มฟังก์ชันการจัดการรูปภาพดิจิทัลที่มาจากไลบรารีการพึ่งพารูปภาพ FreeImage รองรับตัวแปลงสัญญาณภาพต่างๆ
- imgpluginITV: ปลั๊กอิน gucefIMAGE: เพิ่มการรองรับตัวแปลงสัญญาณรูปภาพสำหรับรูปแบบ ITV ที่วิศวกรรมย้อนกลับ
- vfspluginAWSS3: ปลั๊กอิน gucefVFS: เพิ่มแบ็กเอนด์ VFS สำหรับการติดตั้งและใช้ AWS S3 เป็นส่วนหนึ่งของระบบไฟล์เสมือน
- vfspluginDVP: ปลั๊กอิน gucefVFS: แบ็กเอนด์ VFS ที่ล้าสมัยสำหรับการติดตั้งและการใช้ไฟล์เก็บถาวร DVP เป็นส่วนหนึ่งของระบบไฟล์เสมือน
- vfspluginITV: ปลั๊กอิน gucefVFS: แบ็กเอนด์ VFS สำหรับการติดตั้งและการใช้ไฟล์เก็บถาวร ITV ที่วิศวกรรมย้อนกลับเป็นส่วนหนึ่งของระบบไฟล์เสมือน
- vfspluginVP: ปลั๊กอิน gucefVFS: แบ็กเอนด์ VFS สำหรับการติดตั้งและการใช้ไฟล์เก็บถาวร 'Violation Pack' เป็นส่วนหนึ่งของระบบไฟล์เสมือน เช่น ใช้โดยเกม Decent และ FreeSpace
- vfspluginZIP: ปลั๊กอิน gucefVFS: แบ็กเอนด์ VFS สำหรับการติดตั้งและการใช้ไฟล์เก็บถาวรที่เข้ากันได้กับ zlib โดยเป็นส่วนหนึ่งของระบบไฟล์เสมือน เช่น .gz และ .zip
- inputdriverDIRECTINPUT8: ปลั๊กอิน gucefINPUT: เพิ่มไดรเวอร์อินพุตสำหรับการโต้ตอบกับอุปกรณ์อินพุตผ่าน Microsoft DirectInput 8
- inputdriverMSWINMSG: ปลั๊กอิน gucefINPUT: เพิ่มไดรเวอร์อินพุตสำหรับการโต้ตอบกับอุปกรณ์อินพุตผ่านข้อความ Microsoft Windows Win32 API
- inputdriverNANDROID: ปลั๊กอิน gucefINPUT: เพิ่มไดรเวอร์อินพุตสำหรับการโต้ตอบกับอุปกรณ์อินพุตผ่าน Android APIs ดั้งเดิม
- inputdriverOIS: ปลั๊กอิน gucefINPUT: เพิ่มไดรเวอร์อินพุตสำหรับการโต้ตอบกับอุปกรณ์อินพุตผ่านไลบรารีการพึ่งพา OIS
- inputdriverXWINMSG: ปลั๊กอิน gucefINPUT: เพิ่มไดรเวอร์อินพุตสำหรับการโต้ตอบกับอุปกรณ์อินพุตผ่านระบบส่งข้อความ X-Windowing สำหรับ Linux
- pubsubpluginAWSSNS: ปลั๊กอิน gucefPUBSUB: เพิ่มแนวคิด pub-sub ที่เข้ากันได้กับแบ็กเอนด์สำหรับบริการ SNS ของ AWS ใช้ AWS C++ SDK
- pubsubpluginAWSSQS: ปลั๊กอิน gucefPUBSUB: เพิ่มแนวคิด pub-sub ที่เข้ากันได้กับแบ็กเอนด์สำหรับบริการ SQS ของ AWS ใช้ AWS C++ SDK
- pubsubpluginKAFKA: ปลั๊กอิน gucefPUBSUB: เพิ่มแนวคิด pub-sub ที่เข้ากันได้กับแบ็กเอนด์สำหรับสตรีม Kafka ใช้ไลบรารีการพึ่งพา RdKafka
- pubsubpluginMSMQ: ปลั๊กอิน gucefPUBSUB: เพิ่มแบ็กเอนด์ที่เข้ากันได้กับแนวคิด pub-sub สำหรับ MSMQ ใช้ระบบย่อย MSMQ ของระบบปฏิบัติการ Windows ซึ่งจำเป็นต้องติดตั้ง
- pubsubpluginREDISCLUSTER: ปลั๊กอิน gucefPUBSUB: เพิ่มแนวคิด pub-sub ที่เข้ากันได้กับแบ็กเอนด์สำหรับสตรีม Redis ใช้การอ้างอิง Redis++ และ Hiredis
- pubsubpluginSTORAGE: ปลั๊กอิน gucefPUBSUB: เพิ่มแบ็กเอนด์ที่เข้ากันได้กับแนวคิด pub-sub ซึ่งช่วยให้โต้ตอบกับ VFS และความสามารถของมันได้อย่างง่ายดาย
- pubsubpluginUDP: ปลั๊กอิน gucefPUBSUB: เพิ่มแบ็กเอนด์ที่เข้ากันได้กับแนวคิด pub-sub สำหรับ UDP พื้นฐาน
- pubsubpluginWEB: ปลั๊กอิน gucefPUBSUB: เพิ่มแบ็กเอนด์ที่เข้ากันได้กับแนวคิด pub-sub สำหรับแนวคิดเว็บ เช่น HTTP/REST/WebSockets
- ProjectGenDependsFilter: ปลั๊กอิน ProjectGen: อนุญาตให้กรองไลบรารีใน repo ตามรายงานผลลัพธ์ของเครื่องมือ depend.exe
- ProjectGenVSImporter: ปลั๊กอิน ProjectGen: นำเข้าไฟล์โครงการ Visual Studio เพื่อสร้างจุดเริ่มต้น ModuleInfo.xml สำหรับ repo ใหม่
- comcorepluginDBL: ปลั๊กอิน gucefCOMCORE ซึ่งพยายามจัดเตรียมข้อมูลจากไดรเวอร์เครือข่าย Myricom DBL
- comcorepluginGEOOSM: ปลั๊กอิน gucefCOMCORE ซึ่งเพิ่มความสามารถในการค้นหาตำแหน่งทางภูมิศาสตร์ตาม Open Street Maps
บริการที่มีอยู่
- UdpViaTCP: บริการบริดจ์ซึ่งส่งช่องทางการรับส่งข้อมูล UDP ผ่านเซ็กเมนต์ TCP จะถูกแทนที่ด้วย pubsub2pubsub
- udp2kafka: บริการอะแดปเตอร์ที่อนุญาตให้มีการรับส่งข้อมูล UDP เข้าสู่สตรีม Kafka จะถูกแทนที่ด้วย pubsub2pubsub
- udp2redis: บริการอะแดปเตอร์ที่อนุญาตให้มีการรับส่งข้อมูล UDP เข้าสู่สตรีม Redis สำหรับ Redis ที่ไม่ใช่คลัสเตอร์ จะถูกแทนที่ด้วย pubsub2pubsub
- udp2rediscluster: บริการอะแดปเตอร์ที่อนุญาตให้มีการรับส่งข้อมูล UDP เข้าสู่สตรีม Redis สำหรับ Redis แบบคลัสเตอร์ จะถูกแทนที่ด้วย pubsub2pubsub
- ProcessMetrics: บริการตัวแทนซึ่งรับตัววัดสำหรับกระบวนการเป้าหมาย มีวัตถุประสงค์เพื่อเป็นทางเลือกน้ำหนักเบาแบบกำหนดเป้าหมายแทนเครื่องนับประสิทธิภาพความถี่สูงและสิ่งที่คล้ายกัน
- redisinfo: บริการตรวจสอบซึ่งใช้โปรโตคอล Redis เพื่อรับข้อมูลเกี่ยวกับคลัสเตอร์ Redis และเปิดเผยข้อมูลดังกล่าวเป็นตัวชี้วัดที่จะออกอากาศ
- pubsub2storage: บริการอะแดปเตอร์ที่แปลโดยทั่วไประหว่างกระบวนทัศน์การส่งข้อความและพื้นที่เก็บข้อมูล จะถูกแทนที่ด้วย pubsub2pubsub
- pubsub2pubsub: บริการอะแดปเตอร์ที่แปลโดยทั่วไประหว่างกระบวนทัศน์การส่งข้อความที่แตกต่างกัน จะเข้ามาแทนที่บริการอะแดปเตอร์อื่นๆ มากมาย
- FilePusher: บริการตัวแทนที่ตรวจสอบระบบไฟล์สำหรับไฟล์บางไฟล์และพุชไปยังปลายทาง VFS เช่น AWS S3
- FileSorter: บริการตัวแทนซึ่งจะเรียงลำดับไฟล์โดยอัตโนมัติ มีประโยชน์สำหรับการจัดเรียงเริ่มต้นสำหรับการเก็บถาวรรูปภาพและวิดีโอดิจิทัล
- GucefLogService: บริการที่สามารถรับบันทึกแพลตฟอร์ม GUCEF ที่สตรีมผ่านการเชื่อมต่อเครือข่าย มุ่งเป้าไปที่สถานการณ์ที่เราไม่สามารถมี/เข้าถึงบันทึกในเครื่องได้
- ServerPortExtender: บริการที่ใช้ในการย้อนกลับการเริ่มต้นการเชื่อมต่อขาเข้า/ขาออกสำหรับพอร์ตแอปพลิเคชันเซิร์ฟเวอร์ ดังนั้นจึงข้ามข้อจำกัดเฉพาะขาออกเท่านั้น
- UdpTransformer: บริการที่รับ UDP เข้ามาและทำการแปลงแบบง่ายตามด้วยการส่งสัญญาณซ้ำ
- MsmqMetrics: บริการตัวแทนที่รวบรวมข้อมูลเกี่ยวกับคิว MSMQ จากนั้นรวบรวมและส่งตัววัดสำหรับคิวดังกล่าวในภายหลัง
มีเครื่องมือ
- ProjectGenerator: เครื่องมือสำหรับสร้างไฟล์โปรเจ็กต์/โมดูลต่างๆ โดยอัตโนมัติและมุมมองลอจิคัลที่แตกต่างกันของ mono-repo เดียวกัน
- DCSBruteInstaller: เครื่องมือในการใช้ประโยชน์จากฮาร์ดแวร์บางตัวและซอฟต์แวร์นี้เพื่อถอดรหัสรหัสในแผงสัญญาณเตือนภัยภายในบ้าน DCS
- itvExporter: เครื่องมือส่งออกแบบวิศวกรรมย้อนกลับสำหรับเนื้อหาที่มีอยู่ในเกมคลาสสิก
- GucefArchiver: เครื่องมือ Archiver พื้นฐานที่ใช้ประโยชน์จาก VFS และปลั๊กอิน
- HDFiller: ตามชื่อเลย มันจะเติมเต็มฮาร์ดไดรฟ์ของคุณ มีไว้สำหรับสถานการณ์การทดสอบ
- PubSubStorageTool: เครื่องมือในการจัดการไฟล์หน่วยเก็บข้อมูลที่สร้างโดยปลั๊กอินหน่วยเก็บข้อมูล pubsub
มีไลบรารีเบ็ดเตล็ด
- MemoryLeakFinder: ไลบรารีตัวช่วยแพลตฟอร์มที่โหลดแบบไดนามิกเพื่อติดตามการรั่วไหลของหน่วยความจำที่ได้รับความช่วยเหลือจากฟังก์ชันการทำงานของแพลตฟอร์ม GUCEF
- ProjectGen: ไลบรารีที่เก็บตรรกะทั้งหมดของเครื่องมือ ProjectGenerator รองรับปลั๊กอินเพื่อขยายฟังก์ชันการทำงาน
รายการสิ่งที่ต้องทำ
- ระยะสั้น: เพิ่มการสนับสนุน websocket พื้นฐานสำหรับแพลตฟอร์ม
- ระยะสั้น: เพิ่มการรองรับพารามิเตอร์ที่เหมาะสมสำหรับตัวแปลงสัญญาณ
- ระยะสั้น: เพิ่มการสนับสนุน StringView
- ระยะสั้น: กรอกรหัสผ่านเริ่มต้นที่ปลั๊กอิน pubsub2pubsub 'web'
- ระยะสั้น: กรอกรหัสผ่านเริ่มต้นที่ปลั๊กอิน pubsub2pubsub 'aws sns'
- ระยะสั้น: กรอกรหัสผ่านเริ่มต้นที่ปลั๊กอิน pubsub2pubsub 'aws sqs'
- ระยะสั้น: เพิ่มคลาส CodecChain ที่ขับเคลื่อนด้วยการกำหนดค่า
- ระยะกลาง: แก้ไขการรวม GitHub CI ลิงก์ทริกเกอร์การสร้างอัตโนมัติใช้งานไม่ได้
- ระยะกลาง: เพิ่มระบบสคีมา DataNode
- ระยะกลาง: เพิ่มกลไกการแปลงข้อความที่ขับเคลื่อนด้วยการกำหนดค่า
- ระยะกลาง: เพิ่มการรองรับ AWS Lambda
- ระยะกลาง: เพิ่มการรองรับ Utf16 และ Utf32
- ระยะกลาง: ใช้ StringView แทน String สำหรับการอ้างอิงสตริงแบบคงที่ทั้งหมด
- ระยะกลาง: เปลี่ยน ProjectGenerator เป็นสิ่งที่สามารถทำงานเป็นบริการเบื้องหลังได้
- ระยะกลาง: ดำเนินการสนับสนุน GitHub Actions ให้เสร็จสมบูรณ์ผ่าน ProjectGenerator
- ระยะกลาง: เพิ่มการสนับสนุน GitLab CI ผ่าน ProjectGenerator
- ระยะกลาง: ทำการเปลี่ยนชื่อไฟล์ต้นฉบับของแพลตฟอร์มให้ทั้งหมดมีคำนำหน้าโมดูล
- ระยะกลาง: ลบโค้ดที่ไม่ทำงานออกซึ่งเป็นส่วนหนึ่งของความพยายามในการฟื้นฟูที่ใหญ่ขึ้นของโครงการที่มีอยู่ใน mono-repo พิจารณาว่าแอปอื่นๆ ใดที่มีอยู่ในที่นี้คุ้มค่าแก่การบันทึก
- ระยะกลาง: เพิ่มการสนับสนุนสตรีมให้กับระบบการบันทึกโดยใช้บัฟเฟอร์เอาต์พุตที่จัดสรรไว้ล่วงหน้าต่อเธรดเป็นการเพิ่มประสิทธิภาพ
- ระยะกลาง: สร้างฟังก์ชันการทำงานของไคลเอ็นต์คอนโซลแพลตฟอร์มขึ้นมาใหม่
- ระยะกลาง: เพิ่มการสนับสนุนซ็อกเก็ตความปลอดภัยดั้งเดิมสำหรับแพลตฟอร์มที่รองรับ
- ระยะยาว: เพิ่มการสนับสนุนการประกอบเว็บ
- ระยะยาว: เพิ่มการสนับสนุน Jenkins CI ผ่าน ProjectGenerator
- วันหนึ่ง: เลิกใช้/เลิกทำคำนำหน้า 'C' สไตล์ MFC แบบคลาสสิกสำหรับคลาส นี่จะเป็นการเปลี่ยนแปลงครั้งใหญ่ที่ทำลายทุกสิ่งซึ่งเป็นสาเหตุที่ยังไม่เกิดขึ้น
- ต่อเนื่อง: ประเมินความจำเป็นในการอัปเดตการขึ้นต่อกันต่างๆ โดยคำนึงถึงข้อจำกัดมากมาย
- ต่อเนื่อง: ปรับแต่งการบันทึก/เมตริก
- ต่อเนื่อง: เพิ่มเอกสารรูปแบบ javadoc (เข้ากันได้กับ doxygen) เพิ่มเติม